Message ID | 20220829133923.1114555-3-martyn.welch@collabora.com |
---|---|
State | Accepted |
Commit | b122624ab91705d30354f0397b1eea931c6b1933 |
Headers | show |
Series | None | expand |
On Mon, Aug 29, 2022 at 3:39 PM Martyn Welch <martyn.welch@collabora.com> wrote: > A previous fix (dc87f6dd058a gpio: pca953x: Fix pca953x_gpio_set_config) > identified that pinconf_to_config_param() needed to be used to isolate > the config_param from the pinconf in pca953x_gpio_set_config(). This fix > however did not consider that this would also be needed in > pca953x_gpio_set_pull_up_down() to which it passes this config. > > Perform a similar call in pca953x_gpio_set_pull_up_down() to isolate the > configuration parameter there as well, rather than passing it from > pca953x_gpio_set_config() as the configuration argument may also be needed > in pca953x_gpio_set_pull_up_down() at a later date. > > Signed-off-by: Martyn Welch <martyn.welch@collabora.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
On Mon, Aug 29, 2022 at 4:43 PM Martyn Welch <martyn.welch@collabora.com> wrote: > > A previous fix (dc87f6dd058a gpio: pca953x: Fix pca953x_gpio_set_config) Format is wrong. Please read documentation on how to refer to the commits in the tree. > identified that pinconf_to_config_param() needed to be used to isolate > the config_param from the pinconf in pca953x_gpio_set_config(). This fix > however did not consider that this would also be needed in > pca953x_gpio_set_pull_up_down() to which it passes this config. > > Perform a similar call in pca953x_gpio_set_pull_up_down() to isolate the > configuration parameter there as well, rather than passing it from > pca953x_gpio_set_config() as the configuration argument may also be needed > in pca953x_gpio_set_pull_up_down() at a later date. ... > u8 pull_en_reg = pca953x_recalc_addr(chip, PCAL953X_PULL_EN, offset); > u8 pull_sel_reg = pca953x_recalc_addr(chip, PCAL953X_PULL_SEL, offset); > u8 bit = BIT(offset % BANK_SZ); > + enum pin_config_param param = pinconf_to_config_param(config); I would move it up before the u8 variable. The code looks good otherwise. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Thanks for fixing this!
diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c index ecd7d169470b..41e7ff83a735 100644 --- a/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c @@ -551,6 +551,7 @@ static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip, u8 pull_en_reg = pca953x_recalc_addr(chip, PCAL953X_PULL_EN, offset); u8 pull_sel_reg = pca953x_recalc_addr(chip, PCAL953X_PULL_SEL, offset); u8 bit = BIT(offset % BANK_SZ); + enum pin_config_param param = pinconf_to_config_param(config); int ret; /* @@ -563,9 +564,9 @@ static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip, mutex_lock(&chip->i2c_lock); /* Configure pull-up/pull-down */ - if (config == PIN_CONFIG_BIAS_PULL_UP) + if (param == PIN_CONFIG_BIAS_PULL_UP) ret = regmap_write_bits(chip->regmap, pull_sel_reg, bit, bit); - else if (config == PIN_CONFIG_BIAS_PULL_DOWN) + else if (param == PIN_CONFIG_BIAS_PULL_DOWN) ret = regmap_write_bits(chip->regmap, pull_sel_reg, bit, 0); else ret = 0; @@ -573,7 +574,7 @@ static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip, goto exit; /* Disable/Enable pull-up/pull-down */ - if (config == PIN_CONFIG_BIAS_DISABLE) + if (param == PIN_CONFIG_BIAS_DISABLE) ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, 0); else ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, bit);
A previous fix (dc87f6dd058a gpio: pca953x: Fix pca953x_gpio_set_config) identified that pinconf_to_config_param() needed to be used to isolate the config_param from the pinconf in pca953x_gpio_set_config(). This fix however did not consider that this would also be needed in pca953x_gpio_set_pull_up_down() to which it passes this config. Perform a similar call in pca953x_gpio_set_pull_up_down() to isolate the configuration parameter there as well, rather than passing it from pca953x_gpio_set_config() as the configuration argument may also be needed in pca953x_gpio_set_pull_up_down() at a later date. Signed-off-by: Martyn Welch <martyn.welch@collabora.com> --- drivers/gpio/gpio-pca953x.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)