Introduce the OMAP3630 OPPs including the defined OPP tuples. Further information on OMAP3630 can be found here: http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&navigationId=12836&contentId=52606 OMAP36xx family introduces: VDD1 with 4 OPPs, of which OPP3 & 4 are available only on devices yet to be introduced in 36xx family. Meanwhile, VDD2 has 2 opps. Device Support of OPPs-> |<-3630-600->| (default) |<- 3630-800 ->| (device: TBD) |<- 3630-1000 ->| (device: TBD) H/w OPP-> OPP50 OPP100 OPP-Turbo OPP1G-SB VDD1 OPP1 OPP2 OPP3 OPP4 VDD2 OPP1 OPP2 OPP2 OPP2 Note: a) TI h/w naming for OPPs are now standardized in terms of OPP50, 100, Turbo and SB. This maps as shown above to the opp IDs (s/w term). b) For boards which need custom VDD1/2 OPPs, the opp table can be updated by the board file on a need basis after the omap3_pm_init_opp_table call. The OPPs introduced here are the official OPP table at this point in time. Cc: Benoit Cousson <b-cousson@xxxxxx> Cc: Eduardo Valentin <eduardo.valentin@xxxxxxxxx> Cc: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> Cc: Madhusudhan Chikkature Rajashekar <madhu.cr@xxxxxx> Cc: Paul Walmsley <paul@xxxxxxxxx> Cc: Romit Dasgupta <romit@xxxxxx> Cc: Sanjeev Premi <premi@xxxxxx> Cc: Santosh Shilimkar <santosh.shilimkar@xxxxxx> Cc: Sergio Alberto Aguirre Rodriguez <saaguirre@xxxxxx> Cc: Tero Kristo <Tero.Kristo@xxxxxxxxx> Cc: Thara Gopinath <thara@xxxxxx> Cc: Vishwanath Sripathy <vishwanath.bs@xxxxxx> Signed-off-by: Nishanth Menon <nm@xxxxxx> --- arch/arm/mach-omap2/pm34xx.c | 43 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 42 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index e40a036..e5fa5bf 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -140,6 +140,38 @@ static struct omap_opp_def __initdata omap34xx_dsp_rate_table[] = { OMAP_OPP_DEF_TERMINATOR }; +static struct omap_opp_def __initdata omap36xx_mpu_rate_table[] = { + /* OPP1 - OPP50 */ + OMAP_OPP_DEF(true, 300000000, 930000), + /* OPP2 - OPP100 */ + OMAP_OPP_DEF(true, 600000000, 1100000), + /* OPP3 - OPP-Turbo */ + OMAP_OPP_DEF(false, 800000000, 1260000), + /* OPP4 - OPP-SB */ + OMAP_OPP_DEF(false, 1000000000, 1310000), + OMAP_OPP_DEF_TERMINATOR +}; + +static struct omap_opp_def __initdata omap36xx_l3_rate_table[] = { + /* OPP1 - OPP50 */ + OMAP_OPP_DEF(true, 100000000, 930000), + /* OPP2 - OPP100, OPP-Turbo, OPP-SB */ + OMAP_OPP_DEF(true, 200000000, 1137500), + OMAP_OPP_DEF_TERMINATOR +}; + +static struct omap_opp_def __initdata omap36xx_dsp_rate_table[] = { + /* OPP1 - OPP50 */ + OMAP_OPP_DEF(true, 260000000, 930000), + /* OPP2 - OPP100 */ + OMAP_OPP_DEF(true, 520000000, 1100000), + /* OPP3 - OPP-Turbo */ + OMAP_OPP_DEF(false, 660000000, 1260000), + /* OPP4 - OPP-SB */ + OMAP_OPP_DEF(false, 875000000, 1310000), + OMAP_OPP_DEF_TERMINATOR +}; + /* OMAP3 Rate Table */ struct omap_opp *omap3_mpu_rate_table; struct omap_opp *omap3_dsp_rate_table; @@ -1296,18 +1328,27 @@ static void __init configure_vc(void) void __init omap3_pm_init_opp_table(void) { int i; + struct omap_opp_def **omap3_opp_def_list; struct omap_opp_def *omap34xx_opp_def_list[] = { omap34xx_mpu_rate_table, omap34xx_l3_rate_table, omap34xx_dsp_rate_table }; + struct omap_opp_def *omap36xx_opp_def_list[] = { + omap36xx_mpu_rate_table, + omap36xx_l3_rate_table, + omap36xx_dsp_rate_table + }; struct omap_opp **omap3_rate_tables[] = { &omap3_mpu_rate_table, &omap3_l3_rate_table, &omap3_dsp_rate_table }; + + omap3_opp_def_list = cpu_is_omap3630() ? omap36xx_opp_def_list : + omap34xx_opp_def_list; for (i = 0; i < ARRAY_SIZE(omap3_rate_tables); i++) { - *omap3_rate_tables[i] = opp_init_list(omap34xx_opp_def_list[i]); + *omap3_rate_tables[i] = opp_init_list(omap3_opp_def_list[i]); /* We dont want half configured system at the moment */ BUG_ON(IS_ERR(omap3_rate_tables[i])); } -- 1.6.3.3 -- 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