From: "Palande Ameya (Nokia-D/Helsinki)" <ameya.palande@xxxxxxxxx> Subject: [PATCH] DSPBRIDGE: Maintain VDD1 at OPP3 while DSP is active Date: Fri, 17 Jul 2009 01:35:52 +0200 > With Smartreflex ON, OPP2 is not sufficient for reliable DSP operation and > we can see following problems: > > 1. DSP mailbox timeout > 2. DSP MMU Faults > 3. DSP SYSERRORS > > To avoid these issues, this patch maintains OPP3 for DSP active operation by > introducing a new new module parameter "min_active_opp". This can be used > for tuning OPP active value depending on the hardware configuration. Alternatively avoding wrong combinations of SR + OPP? can be another possibility if it can achieve lower power consumption like: Not tested. >From e1bc72772e63b2037547872037e96dd535be52c2 Mon Sep 17 00:00:00 2001 From: Hiroshi DOYU <Hiroshi.DOYU@xxxxxxxxx> Date: Fri, 17 Jul 2009 03:24:26 +0300 Subject: [PATCH 1/1] DSPBRIDGE: workaround for SR and inappropriate OPP Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@xxxxxxxxx> --- arch/arm/mach-omap2/dspbridge.c | 26 +++++++++++++++++++++++++- 1 files changed, 25 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/dspbridge.c b/arch/arm/mach-omap2/dspbridge.c index 43283c9..f31f84d 100644 --- a/arch/arm/mach-omap2/dspbridge.c +++ b/arch/arm/mach-omap2/dspbridge.c @@ -14,13 +14,37 @@ #include <linux/platform_device.h> #include <mach/omap-pm.h> +#include <mach/resource.h> #include <dspbridge/host_os.h> +#include "smartreflex.h" + static struct platform_device *dspbridge_pdev; + +/* workaround for SR with unapropriate OPP */ +static void __omap_pm_dsp_set_min_opp(u8 opp_id) +{ + u32 current_vdd1opp_no; + + switch (opp_id) { + case 2: + sr_stop_vddautocomap(SR1); + break; + default: + current_vdd1opp_no = resource_get_level("vdd1_opp"); + if (IS_ERR_VALUE(current_vdd1opp_no)) + return; + sr_start_vddautocomap(SR1, current_vdd1opp_no); + break; + } + + omap_pm_dsp_set_min_opp(opp_id); +} + static struct dspbridge_platform_data dspbridge_pdata __initdata = { - .dsp_set_min_opp = omap_pm_dsp_set_min_opp, + .dsp_set_min_opp = __omap_pm_dsp_set_min_opp, .dsp_get_opp = omap_pm_dsp_get_opp, .cpu_set_freq = omap_pm_cpu_set_freq, .cpu_get_freq = omap_pm_cpu_get_freq, -- 1.6.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html