From 9635d5ef5602e9d681ec3695b86f7278a44cfd8e Mon Sep 17 00:00:00 2001 From: Alex Frid Date: Sat, 17 Mar 2012 23:38:07 -0700 Subject: ARM: tegra: clock: Add locked version of round rate Add locked version of round rate API to be used by tegra arch specific layer. Signed-off-by: Alex Frid (cherry picked from commit 457627966b91f2141439812869adc4acf9242471) Change-Id: Id68d0bb952d1e7d9e650341872d1b06b0b2d3cea Reviewed-on: http://git-master/r/100474 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Aleksandr Frid Reviewed-by: Yu-Huan Hsu --- arch/arm/mach-tegra/clock.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'arch/arm/mach-tegra/clock.c') diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c index f31da0bf1494..d173449e5b62 100644 --- a/arch/arm/mach-tegra/clock.c +++ b/arch/arm/mach-tegra/clock.c @@ -525,13 +525,11 @@ unsigned long clk_get_rate_all_locked(struct clk *c) return rate; } -long clk_round_rate(struct clk *c, unsigned long rate) +long clk_round_rate_locked(struct clk *c, unsigned long rate) { - unsigned long flags, max_rate; + unsigned long max_rate; long ret; - clk_lock_save(c, &flags); - if (!c->ops || !c->ops->round_rate) { ret = -ENOSYS; goto out; @@ -544,6 +542,16 @@ long clk_round_rate(struct clk *c, unsigned long rate) ret = c->ops->round_rate(c, rate); out: + return ret; +} + +long clk_round_rate(struct clk *c, unsigned long rate) +{ + unsigned long flags; + long ret; + + clk_lock_save(c, &flags); + ret = clk_round_rate_locked(c, rate); clk_unlock_restore(c, &flags); return ret; } -- cgit v1.2.3 From 8fbd140659857935fab495332e71b99486792b21 Mon Sep 17 00:00:00 2001 From: Alex Frid Date: Fri, 4 May 2012 18:07:08 -0700 Subject: Revert "ARM: tegra: clock: Don't fail clk_enable when max_rate has been lowered" This reverts commit 8d351aa5478de533114e614f2607bc85ed23df91. The above commit introduced recursive call of clk enable/set rate APIs that may hang the system. Change-Id: I04eff9e1c3ddee82f6d2e17690122cc41fad203f Signed-off-by: Alex Frid Reviewed-on: http://git-master/r/100710 Reviewed-by: Simone Willett Tested-by: Simone Willett --- arch/arm/mach-tegra/clock.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'arch/arm/mach-tegra/clock.c') diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c index d173449e5b62..2560b8319449 100644 --- a/arch/arm/mach-tegra/clock.c +++ b/arch/arm/mach-tegra/clock.c @@ -238,16 +238,9 @@ void clk_init(struct clk *c) static int clk_enable_locked(struct clk *c) { int ret = 0; - int rate = clk_get_rate_locked(c); - bool set_rate = false; - - if (rate > c->max_rate) { - rate = c->max_rate; - set_rate = true; - } if (clk_is_auto_dvfs(c)) { - ret = tegra_dvfs_set_rate(c, rate); + ret = tegra_dvfs_set_rate(c, clk_get_rate_locked(c)); if (ret) return ret; } @@ -259,9 +252,6 @@ static int clk_enable_locked(struct clk *c) return ret; } - if (set_rate) - clk_set_rate_locked(c, rate); - if (c->ops && c->ops->enable) { ret = c->ops->enable(c); trace_clock_enable(c->name, 1, 0); -- cgit v1.2.3 From 3a2414b79982bef8d13588e4766613aa9f083741 Mon Sep 17 00:00:00 2001 From: Antti P Miettinen Date: Wed, 9 May 2012 19:57:01 +0300 Subject: ARM: tegra: clock: Export clock minimum Add clock minimum to debugfs. Bug 917644 Change-Id: Ie088809829af2bdc81a969a034bf00847459f0ce Signed-off-by: Antti P Miettinen Reviewed-on: http://git-master/r/101555 Reviewed-by: Simone Willett Tested-by: Simone Willett --- arch/arm/mach-tegra/clock.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'arch/arm/mach-tegra/clock.c') diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c index 2560b8319449..66a954fb6696 100644 --- a/arch/arm/mach-tegra/clock.c +++ b/arch/arm/mach-tegra/clock.c @@ -1297,6 +1297,10 @@ static int clk_debugfs_register_one(struct clk *c) if (!d) goto err_out; + d = debugfs_create_u32("min", S_IRUGO, c->dent, (u32 *)&c->min_rate); + if (!d) + goto err_out; + d = debugfs_create_file( "parent", parent_rate_mode, c->dent, c, &parent_fops); if (!d) -- cgit v1.2.3