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 <[email protected]>
Cc: Eduardo Valentin <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: Madhusudhan Chikkature Rajashekar <[email protected]>
Cc: Paul Walmsley <[email protected]>
Cc: Romit Dasgupta <[email protected]>
Cc: Sanjeev Premi <[email protected]>
Cc: Santosh Shilimkar <[email protected]>
Cc: Sergio Alberto Aguirre Rodriguez <[email protected]>
Cc: Tero Kristo <[email protected]>
Cc: Thara Gopinath <[email protected]>
Cc: Vishwanath Sripathy <[email protected]>
Signed-off-by: Nishanth Menon <[email protected]>
---
arch/arm/mach-omap2/pm34xx.c | 46 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 45 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index f9d061d..73bfc18 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -143,6 +143,41 @@ static struct omap_opp_def __initdata
omap34xx_dsp_rate_table[] = {
OMAP_OPP_DEF(0, 0, 0)
};
+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),
+ /* Terminator */
+ OMAP_OPP_DEF(0, 0, 0)
+};
+
+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),
+ /* Terminator */
+ OMAP_OPP_DEF(0, 0, 0)
+};
+
+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),
+ /* Terminator */
+ OMAP_OPP_DEF(0, 0, 0)
+};
+
/* OMAP3 Rate Table */
struct omap_opp *omap3_mpu_rate_table;
struct omap_opp *omap3_dsp_rate_table;
@@ -1299,18 +1334,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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html