From a19f85a8a7af722bcfd729297e682574dc22de7b Mon Sep 17 00:00:00 2001 From: Prashant Gaikwad Date: Fri, 10 Jun 2011 14:09:10 +0530 Subject: 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 Tested-by: Prashant Gaikwad Reviewed-by: Aleksandr Frid Reviewed-by: Bharat Nihalani --- arch/arm/mach-tegra/tegra2_clocks.c | 1 + arch/arm/mach-tegra/tegra2_statmon.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'arch') 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; } -- cgit v1.2.3