mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
sh-pfc: Return an error if a pin doesn't support the requested direction
When setting a pin direction verify that the requested direction is supported, and return an error if it isn't. This requires pin configuration information to be supplied by SoC data. The check is a no-op if the information is not supplied. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Acked-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
9a643c9a11
commit
6dc9b4550a
1 changed files with 10 additions and 0 deletions
|
@ -218,8 +218,18 @@ static int sh_pfc_gpio_set_direction(struct pinctrl_dev *pctldev,
|
|||
const struct sh_pfc_pin *pin = &pfc->info->pins[idx];
|
||||
struct sh_pfc_pin_config *cfg = &pmx->configs[idx];
|
||||
unsigned long flags;
|
||||
unsigned int dir;
|
||||
int ret;
|
||||
|
||||
/* Check if the requested direction is supported by the pin. Not all SoC
|
||||
* provide pin config data, so perform the check conditionally.
|
||||
*/
|
||||
if (pin->configs) {
|
||||
dir = input ? SH_PFC_PIN_CFG_INPUT : SH_PFC_PIN_CFG_OUTPUT;
|
||||
if (!(pin->configs & dir))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&pfc->lock, flags);
|
||||
|
||||
ret = sh_pfc_config_mux(pfc, pin->enum_id, new_type);
|
||||
|
|
Loading…
Reference in a new issue