[PATCH V2] GPIO PL061: Adding Clk framework support

Linus Walleij linus.ml.walleij at gmail.com
Mon Jun 21 13:34:59 EDT 2010


2010/6/21 Rabin Vincent <rabin at rab.in>:
> On Mon, Jun 21, 2010 at 12:27:43PM +0530, Viresh KUMAR wrote:
>> GPIO Clk is never enabled on Platforms, like: SPEAr, which are based upon clock
>> framework and use PL061 driver. This patch adds support for Clk enabling and
>> disabling as and when gpios are requested and freed.
> [...]
>> +     chip->clk = clk_get(&dev->dev, NULL);
>> +     if (IS_ERR(chip->clk)) {
>> +             ret = PTR_ERR(chip->clk);
>> +             goto iounmap;
>> +     }
>
> Have you verified that all platforms using this driver already have
> clocks with the appropriate names?   Otherwise this patch will break
> those platforms.

The ARM Versatiles and RealViews are always clocked I think,
so clock support should be optional.

When I added a clock lookup to the PL08x block recently I used
a construct like this for an optional clock:

chip->clk = clk_get(&dev->dev, NULL);
if (IS_ERR(chip->clk)) {
       ret = PTR_ERR(chip->clk);
       if (ret == -ENOENT)
          /* No block clock in this platform */
          chip->clk = NULL;
       else
          goto iounmap;
}

This will work whenever clkdevice is used, since that
returns -ENOENT for nonexisting entries.

Then:

if (chip->clk)
  clk_enable(chip->clk);

etc

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list