Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
opp4xxx_data.c
Go to the documentation of this file.
1 /*
2  * OMAP4 OPP table definitions.
3  *
4  * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
5  * Nishanth Menon
6  * Kevin Hilman
7  * Thara Gopinath
8  * Copyright (C) 2010-2011 Nokia Corporation.
9  * Eduardo Valentin
10  * Paul Walmsley
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License version 2 as
14  * published by the Free Software Foundation.
15  *
16  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
17  * kind, whether express or implied; without even the implied warranty
18  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  */
21 #include <linux/module.h>
22 
23 #include "soc.h"
24 #include "control.h"
25 #include "omap_opp_data.h"
26 #include "pm.h"
27 
28 /*
29  * Structures containing OMAP4430 voltage supported and various
30  * voltage dependent data for each VDD.
31  */
32 
33 #define OMAP4430_VDD_MPU_OPP50_UV 1025000
34 #define OMAP4430_VDD_MPU_OPP100_UV 1200000
35 #define OMAP4430_VDD_MPU_OPPTURBO_UV 1313000
36 #define OMAP4430_VDD_MPU_OPPNITRO_UV 1375000
37 
43  VOLT_DATA_DEFINE(0, 0, 0, 0),
44 };
45 
46 #define OMAP4430_VDD_IVA_OPP50_UV 1013000
47 #define OMAP4430_VDD_IVA_OPP100_UV 1188000
48 #define OMAP4430_VDD_IVA_OPPTURBO_UV 1300000
49 
54  VOLT_DATA_DEFINE(0, 0, 0, 0),
55 };
56 
57 #define OMAP4430_VDD_CORE_OPP50_UV 1025000
58 #define OMAP4430_VDD_CORE_OPP100_UV 1200000
59 
63  VOLT_DATA_DEFINE(0, 0, 0, 0),
64 };
65 
66 
67 static struct omap_opp_def __initdata omap44xx_opp_def_list[] = {
68  /* MPU OPP1 - OPP50 */
69  OPP_INITIALIZER("mpu", true, 300000000, OMAP4430_VDD_MPU_OPP50_UV),
70  /* MPU OPP2 - OPP100 */
71  OPP_INITIALIZER("mpu", true, 600000000, OMAP4430_VDD_MPU_OPP100_UV),
72  /* MPU OPP3 - OPP-Turbo */
73  OPP_INITIALIZER("mpu", true, 800000000, OMAP4430_VDD_MPU_OPPTURBO_UV),
74  /* MPU OPP4 - OPP-SB */
75  OPP_INITIALIZER("mpu", true, 1008000000, OMAP4430_VDD_MPU_OPPNITRO_UV),
76  /* L3 OPP1 - OPP50 */
77  OPP_INITIALIZER("l3_main_1", true, 100000000, OMAP4430_VDD_CORE_OPP50_UV),
78  /* L3 OPP2 - OPP100, OPP-Turbo, OPP-SB */
79  OPP_INITIALIZER("l3_main_1", true, 200000000, OMAP4430_VDD_CORE_OPP100_UV),
80  /* IVA OPP1 - OPP50 */
81  OPP_INITIALIZER("iva", true, 133000000, OMAP4430_VDD_IVA_OPP50_UV),
82  /* IVA OPP2 - OPP100 */
83  OPP_INITIALIZER("iva", true, 266100000, OMAP4430_VDD_IVA_OPP100_UV),
84  /* IVA OPP3 - OPP-Turbo */
85  OPP_INITIALIZER("iva", false, 332000000, OMAP4430_VDD_IVA_OPPTURBO_UV),
86  /* TODO: add DSP, aess, fdif, gpu */
87 };
88 
93 {
94  int r = -ENODEV;
95 
96  if (!cpu_is_omap443x())
97  return r;
98 
99  r = omap_init_opp_table(omap44xx_opp_def_list,
100  ARRAY_SIZE(omap44xx_opp_def_list));
101 
102  return r;
103 }