Skip to content

Commit

Permalink
pinctrl: amd: Unify debounce handling into amd_pinconf_set()
Browse files Browse the repository at this point in the history
Debounce handling is done in two different entry points in the driver.
Unify this to make sure that it's always handled the same.

Tested-by: Jan Visser <starquake@linuxeverywhere.org>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20230705133005.577-5-mario.limonciello@amd.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Mario Limonciello authored and Linus Walleij committed Jul 12, 2023
1 parent 3f62312 commit 283c5ce
Showing 1 changed file with 5 additions and 16 deletions.
21 changes: 5 additions & 16 deletions drivers/pinctrl/pinctrl-amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,16 +116,12 @@ static void amd_gpio_set_value(struct gpio_chip *gc, unsigned offset, int value)
raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
}

static int amd_gpio_set_debounce(struct gpio_chip *gc, unsigned offset,
unsigned debounce)
static int amd_gpio_set_debounce(struct amd_gpio *gpio_dev, unsigned int offset,
unsigned int debounce)
{
u32 time;
u32 pin_reg;
int ret = 0;
unsigned long flags;
struct amd_gpio *gpio_dev = gpiochip_get_data(gc);

raw_spin_lock_irqsave(&gpio_dev->lock, flags);

/* Use special handling for Pin0 debounce */
if (offset == 0) {
Expand Down Expand Up @@ -184,7 +180,6 @@ static int amd_gpio_set_debounce(struct gpio_chip *gc, unsigned offset,
pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF);
}
writel(pin_reg, gpio_dev->base + offset * 4);
raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);

return ret;
}
Expand Down Expand Up @@ -782,9 +777,8 @@ static int amd_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,

switch (param) {
case PIN_CONFIG_INPUT_DEBOUNCE:
pin_reg &= ~DB_TMR_OUT_MASK;
pin_reg |= arg & DB_TMR_OUT_MASK;
break;
ret = amd_gpio_set_debounce(gpio_dev, pin, arg);
goto out_unlock;

case PIN_CONFIG_BIAS_PULL_DOWN:
pin_reg &= ~BIT(PULL_DOWN_ENABLE_OFF);
Expand All @@ -811,6 +805,7 @@ static int amd_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,

writel(pin_reg, gpio_dev->base + pin*4);
}
out_unlock:
raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);

return ret;
Expand Down Expand Up @@ -857,12 +852,6 @@ static int amd_gpio_set_config(struct gpio_chip *gc, unsigned int pin,
{
struct amd_gpio *gpio_dev = gpiochip_get_data(gc);

if (pinconf_to_config_param(config) == PIN_CONFIG_INPUT_DEBOUNCE) {
u32 debounce = pinconf_to_config_argument(config);

return amd_gpio_set_debounce(gc, pin, debounce);
}

return amd_pinconf_set(gpio_dev->pctrl, pin, &config, 1);
}

Expand Down

0 comments on commit 283c5ce

Please sign in to comment.