summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrashant Gaikwad <pgaikwad@nvidia.com>2011-06-10 14:09:10 +0530
committerNiket Sirsi <nsirsi@nvidia.com>2011-07-29 17:06:56 -0700
commit4ee72e2fb8974f0b9cadd9270262cd6a595c62b6 (patch)
tree8812e1f20c73ba634da4d1e41c920d2f3b10a531
parent203e739c9260a3086feb7f755390321605ae8e5f (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 the 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: I6bd146536b208ed080512cac6f1903188ab240e9 Reviewed-on: http://git-master/r/43030 Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com> Tested-by: Sanjay Singh Rawat <srawat@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/tegra2_clocks.c1
-rw-r--r--arch/arm/mach-tegra/tegra2_statmon.c6
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 ff62e0d17e8d..53af5140c2a8 100644
--- a/arch/arm/mach-tegra/tegra2_clocks.c
+++ b/arch/arm/mach-tegra/tegra2_clocks.c
@@ -2187,6 +2187,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;
}