summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorPrashant Gaikwad <pgaikwad@nvidia.com>2011-06-10 14:09:10 +0530
committerRohan Somvanshi <rsomvanshi@nvidia.com>2011-06-15 22:30:09 -0700
commita19f85a8a7af722bcfd729297e682574dc22de7b (patch)
treefda9b0e69cd223c279b14f82d6d6a9f98272dbe1 /arch
parent1d18930770b99fa7a8169ba8300723bf3b5551e0 (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.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 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;
}