diff mbox

DSPBRIDGE: Maintain VDD1 at OPP3 while DSP is active

Message ID 20090717.033350.115910354.Hiroshi.DOYU@nokia.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Hiroshi DOYU July 17, 2009, 12:33 a.m. UTC
None
diff mbox

Patch

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,