diff options
author | Prashant Gaikwad <pgaikwad@nvidia.com> | 2011-06-10 14:09:10 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-07-14 20:16:39 -0700 |
commit | 0290554f47038da2331ad233f0e35624517085cf (patch) | |
tree | 10bad23fc170eb1f950f0c2d807ab284d3ef2f10 | |
parent | bd2851636f71599498952db09c81a26d9e378da4 (diff) |
ARM: tegra: clocks: Add shared sclk for statmon
H/W statistics monitor for AVP controls sclk depending on load.
Instead of overriding avp.sclk rate, separate sclk client added
for statmon so that busy hints from AVP can be handled.
Bug 831892
Reviewed-on: http://git-master/r/36057
(cherry picked from commit a19f85a8a7af722bcfd729297e682574dc22de7b)
Change-Id: I216ef8eac46ac0bfdd8d439b197f14af37720db3
Reviewed-on: http://git-master/r/39795
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/tegra2_clocks.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/tegra2_statmon.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/tegra2_clocks.c b/arch/arm/mach-tegra/tegra2_clocks.c index fe1c55e3e813..bc98a2328d91 100644 --- a/arch/arm/mach-tegra/tegra2_clocks.c +++ b/arch/arm/mach-tegra/tegra2_clocks.c @@ -2171,6 +2171,7 @@ struct clk tegra_list_periph_clks[] = { struct clk tegra_list_shared_clks[] = { SHARED_CLK("avp.sclk", "tegra-avp", "sclk", &tegra_clk_virtual_sclk), + SHARED_CLK("mon.sclk", "tegra-stat-mon", "sclk", &tegra_clk_virtual_sclk), SHARED_CLK("bsea.sclk", "tegra-aes", "sclk", &tegra_clk_virtual_sclk), SHARED_CLK("usbd.sclk", "fsl-tegra-udc", "sclk", &tegra_clk_virtual_sclk), SHARED_CLK("usb1.sclk", "tegra-ehci.0", "sclk", &tegra_clk_virtual_sclk), diff --git a/arch/arm/mach-tegra/tegra2_statmon.c b/arch/arm/mach-tegra/tegra2_statmon.c index 64de5a9b03cd..92f9b883f93d 100644 --- a/arch/arm/mach-tegra/tegra2_statmon.c +++ b/arch/arm/mach-tegra/tegra2_statmon.c @@ -243,12 +243,14 @@ void tegra2_statmon_stop(void) tegra2_stat_mon_write(reg_val, COP_MON_CTRL); clk_disable(stat_mon->stat_mon_clock); + clk_disable(stat_mon->avp_sampler.clock); } int tegra2_statmon_start(void) { u32 reg_val = 0; + clk_enable(stat_mon->avp_sampler.clock); clk_enable(stat_mon->stat_mon_clock); /* disable AVP monitor */ @@ -344,9 +346,9 @@ static int sampler_init(struct sampler *s) s->enable = false; s->sample_time = 9; - clock = tegra_get_clock_by_name("avp.sclk"); + clock = tegra_get_clock_by_name("mon.sclk"); if (IS_ERR(clock)) { - pr_err("%s: Couldn't get avp clock\n", __func__); + pr_err("%s: Couldn't get mon.sckl\n", __func__); return -1; } |