summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinctrl-cy8c95x0.c
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2022-10-10 15:52:20 +0300
committerLinus Walleij <linus.walleij@linaro.org>2022-10-17 11:56:16 +0200
commit9b3148d6d626d484fd038d25409602190d89eee7 (patch)
tree5a087639911666ea5a51fc1cbffb2055282fd9ce /drivers/pinctrl/pinctrl-cy8c95x0.c
parenteaa4c8f953ba1d2eafb1c961aa9321beb71f21c9 (diff)
downloadlinux-9b3148d6d626d484fd038d25409602190d89eee7.tar.gz
linux-9b3148d6d626d484fd038d25409602190d89eee7.tar.bz2
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.c21
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;