diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2022-10-10 14:52:20 +0200 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2022-10-17 11:56:16 +0200 |
commit | 9b3148d6d626d484fd038d25409602190d89eee7 (patch) | |
tree | 5a087639911666ea5a51fc1cbffb2055282fd9ce /drivers/pinctrl/pinctrl-cy8c95x0.c | |
parent | pinctrl: at91-pio4: Add persist state case in config (diff) | |
download | linux-9b3148d6d626d484fd038d25409602190d89eee7.tar.xz linux-9b3148d6d626d484fd038d25409602190d89eee7.zip |
pinctrl: cy8c95x0: Extract cy8c95x0_set_mode() helper
The code in newly introduced cy8c95x0_set_mode() helper may be
used later on by another function.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20221010125221.28275-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-cy8c95x0.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-cy8c95x0.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/pinctrl/pinctrl-cy8c95x0.c b/drivers/pinctrl/pinctrl-cy8c95x0.c index 68509a2301b8..33eba7ad87f4 100644 --- a/drivers/pinctrl/pinctrl-cy8c95x0.c +++ b/drivers/pinctrl/pinctrl-cy8c95x0.c @@ -1124,9 +1124,7 @@ static int cy8c95x0_get_function_groups(struct pinctrl_dev *pctldev, unsigned in return 0; } -static int cy8c95x0_pinmux_cfg(struct cy8c95x0_pinctrl *chip, - unsigned int val, - unsigned long off) +static int cy8c95x0_set_mode(struct cy8c95x0_pinctrl *chip, unsigned int off, bool mode) { u8 port = cypress_get_port(chip, off); u8 bit = cypress_get_pin_mask(chip, off); @@ -1137,7 +1135,20 @@ static int cy8c95x0_pinmux_cfg(struct cy8c95x0_pinctrl *chip, if (ret < 0) return ret; - ret = regmap_write_bits(chip->regmap, CY8C95X0_PWMSEL, bit, val ? bit : 0); + return regmap_write_bits(chip->regmap, CY8C95X0_PWMSEL, bit, mode ? bit : 0); +} + +static int cy8c95x0_pinmux_mode(struct cy8c95x0_pinctrl *chip, + unsigned int selector, unsigned int group) +{ + u8 port = cypress_get_port(chip, group); + u8 bit = cypress_get_pin_mask(chip, group); + int ret; + + if (selector == 0) + return cy8c95x0_set_mode(chip, group, false); + + ret = cy8c95x0_set_mode(chip, group, true); if (ret < 0) return ret; @@ -1156,7 +1167,7 @@ static int cy8c95x0_set_mux(struct pinctrl_dev *pctldev, unsigned int selector, int ret; mutex_lock(&chip->i2c_lock); - ret = cy8c95x0_pinmux_cfg(chip, selector, group); + ret = cy8c95x0_pinmux_mode(chip, selector, group); mutex_unlock(&chip->i2c_lock); return ret; |