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