summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrashant Gaikwad <pgaikwad@nvidia.com>2011-06-10 14:09:10 +0530
committerVarun Colbert <vcolbert@nvidia.com>2011-07-14 20:16:39 -0700
commit0290554f47038da2331ad233f0e35624517085cf (patch)
tree10bad23fc170eb1f950f0c2d807ab284d3ef2f10
parentbd2851636f71599498952db09c81a26d9e378da4 (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.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 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;
}