From: "ext Guzman Lugo, Fernando" <x0095840@xxxxxx> Subject: RE: [PATCH 11/13] DSPBRIDGE: Set VDD1 OPP1 unconditionally while moving to off mode Date: Thu, 16 Jul 2009 00:53:24 +0200 > > Hi, > > > -----Original Message----- > > From: Ameya Palande [mailto:ameya.palande@xxxxxxxxx] > > Sent: Wednesday, July 15, 2009 9:57 AM > > To: linux-omap@xxxxxxxxxxxxxxx > > Cc: Ramirez Luna, Omar; Guzman Lugo, Fernando; Menon, Nishanth; > > hiroshi.doyu@xxxxxxxxx > > Subject: [PATCH 11/13] DSPBRIDGE: Set VDD1 OPP1 unconditionally while > > moving to off mode > > > > Signed-off-by: Ameya Palande <ameya.palande@xxxxxxxxx> > > --- > > drivers/dsp/bridge/wmd/tiomap3430_pwr.c | 18 ++++++++++-------- > > 1 files changed, 10 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c > > b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c > > index 7cc29b7..7c7d9c4 100644 > > --- a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c > > +++ b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c > > @@ -167,17 +167,19 @@ DSP_STATUS handle_hibernation_fromDSP(struct > > WMD_DEV_CONTEXT *pDevContext) > > if (DSP_FAILED(status)) > > return status; > > IO_SHMsetting(hIOMgr, SHM_GETOPP, &opplevel); > > - /* Set the OPP to low level before moving to OFF mode */ > > if (opplevel != VDD1_OPP1) { > > DBG_Trace(DBG_LEVEL5, > > - "Tiomap_pwr.c - DSP requested" > > - " OPP = %d, MPU requesting low" > > - " OPP %d instead\n", opplevel, > > - VDD1_OPP1); > > - if (pdata->dsp_set_min_opp) > > - (*pdata->dsp_set_min_opp)(VDD1_OPP1); > > - status = DSP_SOK; > > + " DSP requested OPP = %d, MPU" > > + " requesting low OPP %d instead\n", > > + opplevel, VDD1_OPP1); > > } > > + /* > > + * Set the OPP to low level before moving to OFF > > + * mode > > + */ > > + if (pdata->dsp_set_min_opp) > > + (*pdata->dsp_set_min_opp)(VDD1_OPP1); > > + status = DSP_SOK; > > I think that the "if statement" is only avoiding setting the OPP1 if > the DSP is already in OPP1. Were you seeing an issue without this > change? We got the different opplevel with the following patch, which means that, OPP value stored in SHM isn't equal to the real OPP since we've introduce some codes to bump up OPP1 to OPP2, but never written back to SHM. Modified drivers/dsp/bridge/wmd/tiomap3430_pwr.c diff --git a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c index 5f7e855..9cde41f 100644 --- a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c +++ b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c @@ -167,6 +167,10 @@ DSP_STATUS handle_hibernation_fromDSP(struct WMD_DEV_CONTEXT *pDevContext) if (DSP_FAILED(status)) return status; IO_SHMsetting(hIOMgr, SHM_GETOPP, &opplevel); + pr_info("%s(%d) %d\n", __func__, __LINE__, opplevel); + if (pdata->dsp_get_opp) + opplevel = (*pdata->dsp_get_opp)(); + pr_info("%s(%d) %d\n", __func__, __LINE__, opplevel); /* Set the OPP to low level before moving to OFF mode */ if (opplevel != VDD1_OPP1) { DBG_Trace(DBG_LEVEL5, > > > #endif /* CONFIG_BRIDGE_DVFS */ > > } else { > > DBG_Trace(DBG_LEVEL7, > > -- > > 1.6.2.4 > > > > Regards, > Fernando. > -- 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