[PATCH v6 00/25] gpio/omap: driver cleanup and fixes

DebBarma, Tarun Kanti tarun.kanti at ti.com
Mon Sep 12 07:44:29 EDT 2011


[...]
> I tested this series on top of v3.1-rc4 using a 3430/n900 platform.
>
> During suspend the PER powerdomain does not hit the targetted power
> state.  Also, in idle PER never hits retention.
>
> As with previous versions of this series, it appears to be related to
> debounce clocks being left enabled.  On my n900, I removed debounce from
> all the GPIO keys pads and PER was then able to hit retention during
> suspend and idle.
>
> Please be sure to test on a platform that is using debounce, or modify
> the board file for one of the platforms your testing so that at least
> one of the GPIOs has debounce enabled so you are verifying the debounce
> clock gating during suspend and idle.
I was able to re-produce the problem by making explicit call to
_set_gpio_debounce() in *_mod_init().
Prior to calling this I initialized: bank->dbck = clk_get(bank->dev,
"dbclk"); as in the function below.
Later I realized that there is no alias associated with "dbclk" for GPIO[2-6].

static int gpio_debounce(struct gpio_chip *chip, unsigned offset,
                unsigned debounce)
{
...
        if (!bank->dbck) {
                bank->dbck = clk_get(bank->dev, "dbclk");
...
        }

After incorporating the following alias I was able to put system to OFF.

static struct omap_clk omap3xxx_clks[] = {
...
        CLK("omap_gpio.6",       "dbclk",   &gpio6_dbck,    CK_3XXX),
        CLK("omap_gpio.5",       "dbclk",   &gpio5_dbck,    CK_3XXX),
        CLK("omap_gpio.4",       "dbclk",   &gpio4_dbck,    CK_3XXX),
        CLK("omap_gpio.3",       "dbclk",   &gpio3_dbck,    CK_3XXX),
        CLK("omap_gpio.2",       "dbclk",   &gpio2_dbck,    CK_3XXX),

--
Tarun
>
> Thanks,
>
> Kevin
>



More information about the linux-arm-kernel mailing list