@@ -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);
}