From: "Palande Ameya (Nokia-D/Helsinki)" <[email protected]>
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 <[email protected]>
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 <[email protected]>
---
 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to