Commit 0472567b authored by Andy Shevchenko's avatar Andy Shevchenko

pinctrl: lynxpoint: Introduce helpers to enable or disable input

Introduce couple of helpers to enable or disable input. i.e.
lp_gpio_enable_input() and lp_gpio_disable_input().
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
parent f3e7d281
...@@ -386,6 +386,16 @@ static int lp_pinmux_set_mux(struct pinctrl_dev *pctldev, ...@@ -386,6 +386,16 @@ static int lp_pinmux_set_mux(struct pinctrl_dev *pctldev,
return 0; return 0;
} }
static void lp_gpio_enable_input(void __iomem *reg)
{
iowrite32(ioread32(reg) & ~GPINDIS_BIT, reg);
}
static void lp_gpio_disable_input(void __iomem *reg)
{
iowrite32(ioread32(reg) | GPINDIS_BIT, reg);
}
static int lp_gpio_request_enable(struct pinctrl_dev *pctldev, static int lp_gpio_request_enable(struct pinctrl_dev *pctldev,
struct pinctrl_gpio_range *range, struct pinctrl_gpio_range *range,
unsigned int pin) unsigned int pin)
...@@ -411,7 +421,7 @@ static int lp_gpio_request_enable(struct pinctrl_dev *pctldev, ...@@ -411,7 +421,7 @@ static int lp_gpio_request_enable(struct pinctrl_dev *pctldev,
} }
/* Enable input sensing */ /* Enable input sensing */
iowrite32(ioread32(conf2) & ~GPINDIS_BIT, conf2); lp_gpio_enable_input(conf2);
raw_spin_unlock_irqrestore(&lg->lock, flags); raw_spin_unlock_irqrestore(&lg->lock, flags);
...@@ -429,7 +439,7 @@ static void lp_gpio_disable_free(struct pinctrl_dev *pctldev, ...@@ -429,7 +439,7 @@ static void lp_gpio_disable_free(struct pinctrl_dev *pctldev,
raw_spin_lock_irqsave(&lg->lock, flags); raw_spin_lock_irqsave(&lg->lock, flags);
/* Disable input sensing */ /* Disable input sensing */
iowrite32(ioread32(conf2) | GPINDIS_BIT, conf2); lp_gpio_disable_input(conf2);
raw_spin_unlock_irqrestore(&lg->lock, flags); raw_spin_unlock_irqrestore(&lg->lock, flags);
...@@ -921,14 +931,11 @@ static int lp_gpio_resume(struct device *dev) ...@@ -921,14 +931,11 @@ static int lp_gpio_resume(struct device *dev)
struct intel_pinctrl *lg = dev_get_drvdata(dev); struct intel_pinctrl *lg = dev_get_drvdata(dev);
struct gpio_chip *chip = &lg->chip; struct gpio_chip *chip = &lg->chip;
const char *dummy; const char *dummy;
void __iomem *reg;
int i; int i;
/* on some hardware suspend clears input sensing, re-enable it here */ /* on some hardware suspend clears input sensing, re-enable it here */
for_each_requested_gpio(chip, i, dummy) { for_each_requested_gpio(chip, i, dummy)
reg = lp_gpio_reg(chip, i, LP_CONFIG2); lp_gpio_enable_input(lp_gpio_reg(chip, i, LP_CONFIG2));
iowrite32(ioread32(reg) & ~GPINDIS_BIT, reg);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment