1 /* 2 * OMAP3 OPP table definitions. 3 * 4 * Copyright (C) 2009-2010 Texas Instruments Incorporated - http://www.ti.com/ 5 * Nishanth Menon 6 * Kevin Hilman 7 * Copyright (C) 2010 Nokia Corporation. 8 * Eduardo Valentin 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 as 12 * published by the Free Software Foundation. 13 * 14 * This program is distributed "as is" WITHOUT ANY WARRANTY of any 15 * kind, whether express or implied; without even the implied warranty 16 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 */ 19 #include <linux/module.h> 20 21 #include <plat/cpu.h> 22 23 #include "omap_opp_data.h" 24 25 static struct omap_opp_def __initdata omap34xx_opp_def_list[] = { 26 /* MPU OPP1 */ 27 OPP_INITIALIZER("mpu", true, 125000000, 975000), 28 /* MPU OPP2 */ 29 OPP_INITIALIZER("mpu", true, 250000000, 1075000), 30 /* MPU OPP3 */ 31 OPP_INITIALIZER("mpu", true, 500000000, 1200000), 32 /* MPU OPP4 */ 33 OPP_INITIALIZER("mpu", true, 550000000, 1270000), 34 /* MPU OPP5 */ 35 OPP_INITIALIZER("mpu", true, 600000000, 1350000), 36 37 /* 38 * L3 OPP1 - 41.5 MHz is disabled because: The voltage for that OPP is 39 * almost the same than the one at 83MHz thus providing very little 40 * gain for the power point of view. In term of energy it will even 41 * increase the consumption due to the very negative performance 42 * impact that frequency will do to the MPU and the whole system in 43 * general. 44 */ 45 OPP_INITIALIZER("l3_main", false, 41500000, 975000), 46 /* L3 OPP2 */ 47 OPP_INITIALIZER("l3_main", true, 83000000, 1050000), 48 /* L3 OPP3 */ 49 OPP_INITIALIZER("l3_main", true, 166000000, 1150000), 50 51 /* DSP OPP1 */ 52 OPP_INITIALIZER("iva", true, 90000000, 975000), 53 /* DSP OPP2 */ 54 OPP_INITIALIZER("iva", true, 180000000, 1075000), 55 /* DSP OPP3 */ 56 OPP_INITIALIZER("iva", true, 360000000, 1200000), 57 /* DSP OPP4 */ 58 OPP_INITIALIZER("iva", true, 400000000, 1270000), 59 /* DSP OPP5 */ 60 OPP_INITIALIZER("iva", true, 430000000, 1350000), 61 }; 62 63 static struct omap_opp_def __initdata omap36xx_opp_def_list[] = { 64 /* MPU OPP1 - OPP50 */ 65 OPP_INITIALIZER("mpu", true, 300000000, 1012500), 66 /* MPU OPP2 - OPP100 */ 67 OPP_INITIALIZER("mpu", true, 600000000, 1200000), 68 /* MPU OPP3 - OPP-Turbo */ 69 OPP_INITIALIZER("mpu", false, 800000000, 1325000), 70 /* MPU OPP4 - OPP-SB */ 71 OPP_INITIALIZER("mpu", false, 1000000000, 1375000), 72 73 /* L3 OPP1 - OPP50 */ 74 OPP_INITIALIZER("l3_main", true, 100000000, 1000000), 75 /* L3 OPP2 - OPP100, OPP-Turbo, OPP-SB */ 76 OPP_INITIALIZER("l3_main", true, 200000000, 1200000), 77 78 /* DSP OPP1 - OPP50 */ 79 OPP_INITIALIZER("iva", true, 260000000, 1012500), 80 /* DSP OPP2 - OPP100 */ 81 OPP_INITIALIZER("iva", true, 520000000, 1200000), 82 /* DSP OPP3 - OPP-Turbo */ 83 OPP_INITIALIZER("iva", false, 660000000, 1325000), 84 /* DSP OPP4 - OPP-SB */ 85 OPP_INITIALIZER("iva", false, 800000000, 1375000), 86 }; 87 88 /** 89 * omap3_opp_init() - initialize omap3 opp table 90 */ 91 static int __init omap3_opp_init(void) 92 { 93 int r = -ENODEV; 94 95 if (!cpu_is_omap34xx()) 96 return r; 97 98 if (cpu_is_omap3630()) 99 r = omap_init_opp_table(omap36xx_opp_def_list, 100 ARRAY_SIZE(omap36xx_opp_def_list)); 101 else 102 r = omap_init_opp_table(omap34xx_opp_def_list, 103 ARRAY_SIZE(omap34xx_opp_def_list)); 104 105 return r; 106 } 107 device_initcall(omap3_opp_init); 108