Re: [PATCH] DSPBRIDGE: Maintain VDD1 at OPP3 while DSP is active

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux