[PATCH V2] GPIO PL061: Adding Clk framework support
From: Linus Walleij <hidden>
Date: 2010-06-21 17:34:59
2010/6/21 Rabin Vincent [off-list ref]:
On Mon, Jun 21, 2010 at 12:27:43PM +0530, Viresh KUMAR wrote:quoted
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.[...]quoted
+ ? ? 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