summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 1186f8a)
raw | patch | inline | side by side (parent: 1186f8a)
author | Hebbar, Gururaja <gururaja.hebbar@ti.com> | |
Thu, 12 Jan 2012 16:20:58 +0000 (21:50 +0530) | ||
committer | Vaibhav Hiremath <hvaibhav@ti.com> | |
Mon, 23 Jan 2012 19:14:49 +0000 (00:44 +0530) |
Clocks were not enabled/disabled during suspend-resume. This patch
corrects the same.
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
corrects the same.
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
drivers/gpio/gpio-omap.c | patch | blob | history |
index dd95967a5e5192d02cc9bfb21bc5787b674a5c4f..4b1724464719708cb7df1a8d8aaf06ca86322317 100644 (file)
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
#include <asm/gpio.h>
#include <asm/mach/irq.h>
+#include <plat/clock.h>
+
struct gpio_bank {
unsigned long pbase;
void __iomem *base;
spinlock_t lock;
struct gpio_chip chip;
struct clk *dbck;
+ struct clk *fclk;
u32 mod_usage;
u32 dbck_enable_mask;
struct device *dev;
return -ENOMEM;
}
+ bank->fclk = clk_get(bank->dev, "fclk");
+ if (IS_ERR(bank->fclk)) {
+ dev_err(bank->dev, "Could not get gpio fclk\n");
+ bank->fclk = NULL;
+ }
+
pm_runtime_enable(bank->dev);
pm_runtime_get_sync(bank->dev);
void __iomem *wake_set;
unsigned long flags;
+ if ((bank->fclk) && (bank->fclk->usecount <= 0))
+ if (clk_enable(bank->fclk) < 0)
+ dev_err(bank->dev, "Could not enable fclk\n");
+
switch (bank->method) {
#ifdef CONFIG_ARCH_OMAP16XX
case METHOD_GPIO_1610:
__raw_writel(0xffffffff, wake_clear);
__raw_writel(bank->suspend_wakeup, wake_set);
spin_unlock_irqrestore(&bank->lock, flags);
+
+ if ((bank->fclk) && (bank->fclk->usecount > 0))
+ clk_disable(bank->fclk);
}
return 0;
void __iomem *wake_set;
unsigned long flags;
+ if ((bank->fclk) && (bank->fclk->usecount <= 0))
+ if (clk_enable(bank->fclk) < 0)
+ dev_err(bank->dev, "Could not enable fclk\n");
+
switch (bank->method) {
#ifdef CONFIG_ARCH_OMAP16XX
case METHOD_GPIO_1610: