diff options
author | Prashant Gaikwad <pgaikwad@nvidia.com> | 2011-06-10 14:09:10 +0530 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2011-06-15 22:30:09 -0700 |
commit | a19f85a8a7af722bcfd729297e682574dc22de7b (patch) | |
tree | fda9b0e69cd223c279b14f82d6d6a9f98272dbe1 /arch | |
parent | 1d18930770b99fa7a8169ba8300723bf3b5551e0 (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
Change-Id: Ieaa43525d7582810095a2200486019ae9b4a7553
Reviewed-on: http://git-master/r/36057
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Tested-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-by: Aleksandr Frid <afrid@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch')
-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 f5a10e1206b9..79665e0503f2 100644 --- a/arch/arm/mach-tegra/tegra2_clocks.c +++ b/arch/arm/mach-tegra/tegra2_clocks.c @@ -2159,6 +2159,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; } |