Commit 4a58d229 authored by Grygorii Strashko's avatar Grygorii Strashko Committed by Linus Walleij

gpio: omap: convert debounce functions switch to use gpio offset

Convert debounce functions to use GPIO offset instead of system
GPIO numbers. This allows to drop unneeded conversations between
system GPIO <-> GPIO offset which are done in many places and
many times.
It is safe to do now because:
- gpiolib always passes GPIO offset to GPIO controller
- OMAP GPIO driver converted to use IRQ domain

This is preparation step before removing:
 #define GPIO_INDEX(bank, gpio)
 #define GPIO_BIT(bank, gpio)
 int omap_irq_to_gpio()
Tested-by: default avatarTony Lindgren <tony@atomide.com>
Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Acked-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
Acked-by: default avatarJavier Martinez Canillas <javier@dowhile0.org>
Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@linaro.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 04ebcbd8
...@@ -208,13 +208,13 @@ static inline void omap_gpio_dbck_disable(struct gpio_bank *bank) ...@@ -208,13 +208,13 @@ static inline void omap_gpio_dbck_disable(struct gpio_bank *bank)
/** /**
* omap2_set_gpio_debounce - low level gpio debounce time * omap2_set_gpio_debounce - low level gpio debounce time
* @bank: the gpio bank we're acting upon * @bank: the gpio bank we're acting upon
* @gpio: the gpio number on this @gpio * @offset: the gpio number on this @bank
* @debounce: debounce time to use * @debounce: debounce time to use
* *
* OMAP's debounce time is in 31us steps so we need * OMAP's debounce time is in 31us steps so we need
* to convert and round up to the closest unit. * to convert and round up to the closest unit.
*/ */
static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned gpio, static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned offset,
unsigned debounce) unsigned debounce)
{ {
void __iomem *reg; void __iomem *reg;
...@@ -231,7 +231,7 @@ static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned gpio, ...@@ -231,7 +231,7 @@ static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned gpio,
else else
debounce = (debounce / 0x1f) - 1; debounce = (debounce / 0x1f) - 1;
l = GPIO_BIT(bank, gpio); l = BIT(offset);
clk_prepare_enable(bank->dbck); clk_prepare_enable(bank->dbck);
reg = bank->base + bank->regs->debounce; reg = bank->base + bank->regs->debounce;
...@@ -266,16 +266,16 @@ static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned gpio, ...@@ -266,16 +266,16 @@ static void omap2_set_gpio_debounce(struct gpio_bank *bank, unsigned gpio,
/** /**
* omap_clear_gpio_debounce - clear debounce settings for a gpio * omap_clear_gpio_debounce - clear debounce settings for a gpio
* @bank: the gpio bank we're acting upon * @bank: the gpio bank we're acting upon
* @gpio: the gpio number on this @gpio * @offset: the gpio number on this @bank
* *
* If a gpio is using debounce, then clear the debounce enable bit and if * If a gpio is using debounce, then clear the debounce enable bit and if
* this is the only gpio in this bank using debounce, then clear the debounce * this is the only gpio in this bank using debounce, then clear the debounce
* time too. The debounce clock will also be disabled when calling this function * time too. The debounce clock will also be disabled when calling this function
* if this is the only gpio in the bank using debounce. * if this is the only gpio in the bank using debounce.
*/ */
static void omap_clear_gpio_debounce(struct gpio_bank *bank, unsigned gpio) static void omap_clear_gpio_debounce(struct gpio_bank *bank, unsigned offset)
{ {
u32 gpio_bit = GPIO_BIT(bank, gpio); u32 gpio_bit = BIT(offset);
if (!bank->dbck_flag) if (!bank->dbck_flag)
return; return;
...@@ -659,7 +659,7 @@ static void omap_reset_gpio(struct gpio_bank *bank, int gpio) ...@@ -659,7 +659,7 @@ static void omap_reset_gpio(struct gpio_bank *bank, int gpio)
omap_set_gpio_irqenable(bank, gpio, 0); omap_set_gpio_irqenable(bank, gpio, 0);
omap_clear_gpio_irqstatus(bank, gpio); omap_clear_gpio_irqstatus(bank, gpio);
omap_set_gpio_triggering(bank, GPIO_INDEX(bank, gpio), IRQ_TYPE_NONE); omap_set_gpio_triggering(bank, GPIO_INDEX(bank, gpio), IRQ_TYPE_NONE);
omap_clear_gpio_debounce(bank, gpio); omap_clear_gpio_debounce(bank, GPIO_INDEX(bank, gpio));
} }
/* Use disable_irq_wake() and enable_irq_wake() functions from drivers */ /* Use disable_irq_wake() and enable_irq_wake() functions from drivers */
......
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