Sanjeev Premi <premi@xxxxxx> writes: > There is no generic function to get OPP corresponding to frequency > and vice versa. > > Function get_opp() - in resource34xx.c - is included only when > CONFIG_OMAP_PM_SRF is enabled. Moreover, it is always called with > an explicit addition of MAX_VDDn_OPP e.g. > opp = get_opp(mpu_opps + MAX_VDD1_OPP, clk->rate); > opp = get_opp(l3_opps + MAX_VDD2_OPP, clk->rate); > > This is 'addition' is required as there is no encapsulation of > MIN and MAX VDDs associated to the table. > > This patch fixes the issue by creating a 'table' object that > encapsulates the MIN and MAX values and the existing rate table. > > Signed-off-by: Sanjeev Premi <premi@xxxxxx> Looks ok, minor comment below... [...] > diff --git a/arch/arm/plat-omap/include/mach/omap-pm.h b/arch/arm/plat-omap/include/mach/omap-pm.h > index 583e540..cf910ef 100644 > --- a/arch/arm/plat-omap/include/mach/omap-pm.h > +++ b/arch/arm/plat-omap/include/mach/omap-pm.h > @@ -33,6 +33,20 @@ struct omap_opp { > u16 vsel; > }; > > +/* struct omap_opp_table - View OPP table as an object > + * @min: Minimum OPP id > + * @max: Maximim OPP id > + * @opps: Pointer to array defining the OPPs. > + * > + * An OPP table has varied length. Knowing minimum and maximum > + * OPP ids allow easy traversal. > + */ > +struct omap_opp_table { > + u8 min; > + u8 max; > + struct omap_opp* opps; > +}; > + > extern struct omap_opp *mpu_opps; > extern struct omap_opp *dsp_opps; > extern struct omap_opp *l3_opps; > @@ -49,6 +63,17 @@ extern struct omap_opp *l3_opps; > #define OCP_INITIATOR_AGENT 2 > > /** > + * > + */ Either add a useful comment or remove the comment block (preferably the latter) > +int opp_to_freq(unsigned long* freq, const struct omap_opp_table* table, u8 opp); > + > +/** > + * > + */ ditto Kevin -- 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