Nishanth, Just one minor bug below. > -----Original Message----- > From: linux-omap-owner@xxxxxxxxxxxxxxx > [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of Menon, Nishanth > Sent: Friday, October 09, 2009 3:28 PM > To: linux-omap > Cc: Menon, Nishanth; Kevin Hilman; Premi, Sanjeev > Subject: [PATCH] OMAP3:PM: introduce enabled flag to omap_opp > > We used to enable and disable OPPs based on > rate being set to 0, this has been confusing in > general. So, allow specific OPPs to be now > enabled/disabled by an explicit enabled flag. > > Recommendations from Kevin and Sanjeev contributed > to this patch > > Tested on: SDP3430 > > Signed-off-by: Nishanth Menon <nm@xxxxxx> > Cc: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> > Cc: Sanjeev Premi <premi@xxxxxx> > --- > arch/arm/mach-omap2/pm34xx.c | 32 > ++++++++++++++-------------- > arch/arm/mach-omap2/resource34xx.c | 3 ++ > arch/arm/plat-omap/include/mach/omap-pm.h | 2 + > 3 files changed, 21 insertions(+), 16 deletions(-) > > diff --git a/arch/arm/mach-omap2/pm34xx.c > b/arch/arm/mach-omap2/pm34xx.c > index cea3bca..a75d4d1 100644 > --- a/arch/arm/mach-omap2/pm34xx.c > +++ b/arch/arm/mach-omap2/pm34xx.c > @@ -100,41 +100,41 @@ static struct prm_setup_vc prm_setup = { > }; > > struct omap_opp omap3_mpu_rate_table[] = { > - {0, 0, 0}, > + {0, 0, 0, 0}, > /*OPP1*/ > - {S125M, VDD1_OPP1, 0x1E}, > + {true, S125M, VDD1_OPP1, 0x1E, true}, The last "true" here is wrong. Should just be: {true, S125M, VDD1_OPP1, 0x1E}, Regards, Sergio > /*OPP2*/ > - {S250M, VDD1_OPP2, 0x26}, > + {true, S250M, VDD1_OPP2, 0x26}, > /*OPP3*/ > - {S500M, VDD1_OPP3, 0x30}, > + {true, S500M, VDD1_OPP3, 0x30}, > /*OPP4*/ > - {S550M, VDD1_OPP4, 0x36}, > + {true, S550M, VDD1_OPP4, 0x36}, > /*OPP5*/ > - {S600M, VDD1_OPP5, 0x3C}, > + {true, S600M, VDD1_OPP5, 0x3C}, > }; > > struct omap_opp omap3_l3_rate_table[] = { > - {0, 0, 0}, > + {0, 0, 0, 0}, > /*OPP1*/ > - {0, VDD2_OPP1, 0x1E}, > + {false, 0, VDD2_OPP1, 0x1E}, > /*OPP2*/ > - {S83M, VDD2_OPP2, 0x24}, > + {true, S83M, VDD2_OPP2, 0x24}, > /*OPP3*/ > - {S166M, VDD2_OPP3, 0x2C}, > + {true, S166M, VDD2_OPP3, 0x2C}, > }; > > struct omap_opp omap3_dsp_rate_table[] = { > - {0, 0, 0}, > + {0, 0, 0, 0}, > /*OPP1*/ > - {S90M, VDD1_OPP1, 0x1E}, > + {true, S90M, VDD1_OPP1, 0x1E}, > /*OPP2*/ > - {S180M, VDD1_OPP2, 0x26}, > + {true, S180M, VDD1_OPP2, 0x26}, > /*OPP3*/ > - {S360M, VDD1_OPP3, 0x30}, > + {true, S360M, VDD1_OPP3, 0x30}, > /*OPP4*/ > - {S400M, VDD1_OPP4, 0x36}, > + {true, S400M, VDD1_OPP4, 0x36}, > /*OPP5*/ > - {S430M, VDD1_OPP5, 0x3C}, > + {true, S430M, VDD1_OPP5, 0x3C}, > }; > > const struct omap_opp_table omap3_mpu_opp_table = { > diff --git a/arch/arm/mach-omap2/resource34xx.c > b/arch/arm/mach-omap2/resource34xx.c > index 491e1dc..12de2c6 100644 > --- a/arch/arm/mach-omap2/resource34xx.c > +++ b/arch/arm/mach-omap2/resource34xx.c > @@ -282,6 +282,9 @@ static int program_opp(int res, struct > omap_opp *opp, int target_level, > t_opp = ID_VDD(res) | ID_OPP_NO(opp[target_level].opp_id); > c_opp = ID_VDD(res) | ID_OPP_NO(opp[current_level].opp_id); > #endif > + /* only allow enabled OPPs */ > + if (!opp[target_level].enabled) > + return -EINVAL; > > /* Sanity check of the OPP params before attempting to set */ > if (!opp[target_level].rate || !opp[target_level].vsel) > diff --git a/arch/arm/plat-omap/include/mach/omap-pm.h > b/arch/arm/plat-omap/include/mach/omap-pm.h > index 51216cf..33e1a3e 100644 > --- a/arch/arm/plat-omap/include/mach/omap-pm.h > +++ b/arch/arm/plat-omap/include/mach/omap-pm.h > @@ -21,6 +21,7 @@ > > /** > * struct omap_opp - clock frequency-to-OPP ID table for DSP, MPU > + * @enabled: enabled if true, disabled if false > * @rate: target clock rate > * @opp_id: OPP ID > * @min_vdd: minimum VDD1 voltage (in millivolts) for this OPP > @@ -28,6 +29,7 @@ > * Operating performance point data. Can vary by OMAP chip > and board. > */ > struct omap_opp { > + bool enabled; > unsigned long rate; > u8 opp_id; > u16 vsel; > -- > 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 > > -- 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