diff mbox

[09/10,V3] omap3: pm: introduce 3630 opps

Message ID 1259122159-1583-10-git-send-email-nm@ti.com (mailing list archive)
State Superseded
Delegated to: Kevin Hilman
Headers show

Commit Message

Nishanth Menon Nov. 25, 2009, 4:09 a.m. UTC
None
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index ad21f5f..05ecf02 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[] = {
 	{.enabled = 0, .freq = 0, .u_volt = 0}
 };
 
+static struct omap_opp_def __initdata omap36xx_mpu_rate_table[] = {
+	/*OPP1 - OPP50*/
+	{.enabled = true,  .freq = 300000000, .u_volt = 930000},
+	/*OPP2 - OPP100*/
+	{.enabled = true,  .freq = 600000000, .u_volt = 1100000},
+	/*OPP3 - OPP-Turbo*/
+	{.enabled = false, .freq = 800000000, .u_volt = 1260000},
+	/*OPP4 - OPP-SB*/
+	{.enabled = false, .freq = 1000000000, .u_volt = 1310000},
+	/* Terminator */
+	{.enabled = 0, .freq = 0, .u_volt = 0}
+};
+
+static struct omap_opp_def __initdata omap36xx_l3_rate_table[] = {
+	/*OPP1 - OPP50 */
+	{.enabled = true, .freq = 100000000, .u_volt = 930000},
+	/*OPP2 - OPP100, OPP-Turbo, OPP-SB*/
+	{.enabled = true, .freq = 200000000, .u_volt = 1137500},
+	/* Terminator */
+	{.enabled = 0, .freq = 0, .u_volt = 0}
+};
+
+static struct omap_opp_def __initdata omap36xx_dsp_rate_table[] = {
+	/*OPP1 - OPP50*/
+	{.enabled = true,  .freq = 260000000, .u_volt = 930000},
+	/*OPP2 - OPP100*/
+	{.enabled = true,  .freq = 520000000, .u_volt = 1100000},
+	/*OPP3 - OPP-Turbo*/
+	{.enabled = false, .freq = 660000000, .u_volt = 1260000},
+	/*OPP4 - OPP-SB*/
+	{.enabled = false, .freq = 875000000, .u_volt = 1310000},
+	/* Terminator */
+	{.enabled = 0, .freq = 0, .u_volt = 0}
+};
+
 struct omap_opp *omap3_mpu_rate_table;
 struct omap_opp *omap3_dsp_rate_table;
 struct omap_opp *omap3_l3_rate_table;
@@ -1299,18 +1334,28 @@  static void __init configure_vc(void)
 void __init omap3_pm_init_opp_table(void)
 {
 	int ret, 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
 	};
-	for (i = 0; i < ARRAY_SIZE(omap34xx_opp_def_list); i++) {
-		ret = opp_init(omap3_rate_tables[i], omap34xx_opp_def_list[i]);
+
+	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++) {
+		ret = opp_init(omap3_rate_tables[i], omap3_opp_def_list[i]);
 		/* We dont want half configured system at the moment */
 		BUG_ON(ret);
 	}