@@ -1548,6 +1548,11 @@ DSP_STATUS PROC_Start(DSP_HPROCESSOR hProcessor)
#ifdef DEBUG
BRD_STATUS uBrdState;
#endif
+
+#if defined(CONFIG_BRIDGE_DVFS)
+ struct dspbridge_platform_data *pdata =
+ omap_dspbridge_dev.dev.platform_data;
+#endif
DBC_Require(cRefs > 0);
GT_1trace(PROC_DebugMask, GT_ENTER, "Entered PROC_Start, args:\n\t"
"hProcessor: 0x%x\n", hProcessor);
@@ -1557,6 +1562,9 @@ DSP_STATUS PROC_Start(DSP_HPROCESSOR hProcessor)
"PROC_Start :InValid Handle \n");
goto func_end;
}
+ if(pdata->dsp_set_min_opp)
+ (*pdata->dsp_set_min_opp)(VDD1_OPP2);
+
/* Call the WMD_BRD_Start */
if (pProcObject->sState != PROC_LOADED) {
GT_0trace(PROC_DebugMask, GT_7CLASS,
@@ -96,8 +96,12 @@ DSP_STATUS handle_constraints_set(struct WMD_DEV_CONTEXT *pDevContext,
status = HW_MBOX_saveSettings(resources.dwMboxBase);
/* Set the new opp value */
- if (pdata->dsp_set_min_opp)
+ if (pdata->dsp_set_min_opp){
+ if ((u32)*(pConstraintVal+1) == 1)
+ (*pdata->dsp_set_min_opp)((u32)*(pConstraintVal+1)+1);
+ else
(*pdata->dsp_set_min_opp)((u32)*(pConstraintVal+1));
+ }
return DSP_SOK;
#endif /* #ifdef CONFIG_BRIDGE_DVFS */
return DSP_SOK;
@@ -166,9 +170,9 @@ DSP_STATUS handle_hibernation_fromDSP(struct WMD_DEV_CONTEXT *pDevContext)
"Tiomap_pwr.c - DSP requested"
" OPP = %d, MPU requesting low"
" OPP %d instead\n", opplevel,
- VDD1_OPP1);
+ VDD1_OPP2);
if (pdata->dsp_set_min_opp)
- (*pdata->dsp_set_min_opp)(VDD1_OPP1);
+ (*pdata->dsp_set_min_opp)(VDD1_OPP2);
status = DSP_SOK;
}
#endif /* CONFIG_BRIDGE_DVFS */
@@ -183,15 +183,13 @@ DSP_STATUS CHNLSM_InterruptDSP(struct WMD_DEV_CONTEXT *hDevContext)
if (DSP_FAILED(status))
return DSP_EFAIL;
#ifdef CONFIG_BRIDGE_DVFS
- if (pDevContext->dwBrdState == BRD_DSP_HIBERNATION ||
- pDevContext->dwBrdState == BRD_HIBERNATION) {
+ /*FIX ME: By default setting to OPP2 need to fix this */
if (pdata->dsp_get_opp)
opplevel = (*pdata->dsp_get_opp)();
if (opplevel == 1) {
if (pdata->dsp_set_min_opp)
(*pdata->dsp_set_min_opp)(opplevel+1);
}
- }
#endif
if (pDevContext->dwBrdState == BRD_DSP_HIBERNATION ||