diff options
-rw-r--r-- | drivers/pinctrl/pinctrl-samsung.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-samsung.c b/drivers/pinctrl/pinctrl-samsung.c index b917ed36fb65..8b15c6622b33 100644 --- a/drivers/pinctrl/pinctrl-samsung.c +++ b/drivers/pinctrl/pinctrl-samsung.c | |||
@@ -303,6 +303,11 @@ static void samsung_pinmux_setup(struct pinctrl_dev *pctldev, unsigned selector, | |||
303 | type = bank->type; | 303 | type = bank->type; |
304 | mask = (1 << type->fld_width[PINCFG_TYPE_FUNC]) - 1; | 304 | mask = (1 << type->fld_width[PINCFG_TYPE_FUNC]) - 1; |
305 | shift = pin_offset * type->fld_width[PINCFG_TYPE_FUNC]; | 305 | shift = pin_offset * type->fld_width[PINCFG_TYPE_FUNC]; |
306 | if (shift >= 32) { | ||
307 | /* Some banks have two config registers */ | ||
308 | shift -= 32; | ||
309 | reg += 4; | ||
310 | } | ||
306 | 311 | ||
307 | spin_lock_irqsave(&bank->slock, flags); | 312 | spin_lock_irqsave(&bank->slock, flags); |
308 | 313 | ||
@@ -356,6 +361,11 @@ static int samsung_pinmux_gpio_set_direction(struct pinctrl_dev *pctldev, | |||
356 | 361 | ||
357 | mask = (1 << type->fld_width[PINCFG_TYPE_FUNC]) - 1; | 362 | mask = (1 << type->fld_width[PINCFG_TYPE_FUNC]) - 1; |
358 | shift = pin_offset * type->fld_width[PINCFG_TYPE_FUNC]; | 363 | shift = pin_offset * type->fld_width[PINCFG_TYPE_FUNC]; |
364 | if (shift >= 32) { | ||
365 | /* Some banks have two config registers */ | ||
366 | shift -= 32; | ||
367 | reg += 4; | ||
368 | } | ||
359 | 369 | ||
360 | spin_lock_irqsave(&bank->slock, flags); | 370 | spin_lock_irqsave(&bank->slock, flags); |
361 | 371 | ||