Commit 4a3f8913f5f89039d97acdd8f896a31ee60a7c78
Committed by
Afzal Mohammed
1 parent
866c74bf7d
Exists in
master
OMAP3+: OPP: add clock and voltagedomain info
With hwmods, ideally, we should have been able to do: pdm = omap_hwmod_get_pwrdm(oh); voltdm = pwrdm_get_voltdm(pdm); clk = clk_get(oh->main_clk); Unfortunately hwmod database is'nt mature enough yet to handle silicon variance within the same family, e.g. 4430 Vs 4460. So we explicitly map the domain and clk names within the OPP entries. This allows us to scale by having a central location for the registration. IMPORTANT NOTE: we probably will need to fix core and iva clk setting. Signed-off-by: Nishanth Menon <nm@ti.com> Signed-off-by: Vishwanath BS <vishwanath.bs@ti.com> [vaibhav.bedia@ti.com: Pull in for AM33xx] Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Showing 3 changed files with 37 additions and 33 deletions Side-by-side Diff
arch/arm/mach-omap2/omap_opp_data.h
... | ... | @@ -49,6 +49,8 @@ |
49 | 49 | */ |
50 | 50 | struct omap_opp_def { |
51 | 51 | char *hwmod_name; |
52 | + char *voltdm_name; | |
53 | + char *clk_name; | |
52 | 54 | |
53 | 55 | unsigned long freq; |
54 | 56 | unsigned long u_volt; |
55 | 57 | |
... | ... | @@ -59,9 +61,11 @@ |
59 | 61 | /* |
60 | 62 | * Initialization wrapper used to define an OPP for OMAP variants. |
61 | 63 | */ |
62 | -#define OPP_INITIALIZER(_hwmod_name, _enabled, _freq, _uv) \ | |
64 | +#define OPP_INITIALIZER(_hwmod_name, _clk_name, _voltdm_name, _enabled, _freq, _uv) \ | |
63 | 65 | { \ |
64 | 66 | .hwmod_name = _hwmod_name, \ |
67 | + .clk_name = _clk_name, \ | |
68 | + .voltdm_name = _voltdm_name, \ | |
65 | 69 | .default_available = _enabled, \ |
66 | 70 | .freq = _freq, \ |
67 | 71 | .u_volt = _uv, \ |
arch/arm/mach-omap2/opp3xxx_data.c
... | ... | @@ -107,15 +107,15 @@ |
107 | 107 | |
108 | 108 | static struct omap_opp_def __initdata omap34xx_opp_def_list[] = { |
109 | 109 | /* MPU OPP1 */ |
110 | - OPP_INITIALIZER("mpu", true, 125000000, OMAP3430_VDD_MPU_OPP1_UV), | |
110 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 125000000, OMAP3430_VDD_MPU_OPP1_UV), | |
111 | 111 | /* MPU OPP2 */ |
112 | - OPP_INITIALIZER("mpu", true, 250000000, OMAP3430_VDD_MPU_OPP2_UV), | |
112 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 250000000, OMAP3430_VDD_MPU_OPP2_UV), | |
113 | 113 | /* MPU OPP3 */ |
114 | - OPP_INITIALIZER("mpu", true, 500000000, OMAP3430_VDD_MPU_OPP3_UV), | |
114 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 500000000, OMAP3430_VDD_MPU_OPP3_UV), | |
115 | 115 | /* MPU OPP4 */ |
116 | - OPP_INITIALIZER("mpu", true, 550000000, OMAP3430_VDD_MPU_OPP4_UV), | |
116 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 550000000, OMAP3430_VDD_MPU_OPP4_UV), | |
117 | 117 | /* MPU OPP5 */ |
118 | - OPP_INITIALIZER("mpu", true, 600000000, OMAP3430_VDD_MPU_OPP5_UV), | |
118 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 600000000, OMAP3430_VDD_MPU_OPP5_UV), | |
119 | 119 | |
120 | 120 | /* |
121 | 121 | * L3 OPP1 - 41.5 MHz is disabled because: The voltage for that OPP is |
122 | 122 | |
123 | 123 | |
124 | 124 | |
125 | 125 | |
126 | 126 | |
127 | 127 | |
128 | 128 | |
129 | 129 | |
130 | 130 | |
131 | 131 | |
132 | 132 | |
133 | 133 | |
134 | 134 | |
135 | 135 | |
136 | 136 | |
137 | 137 | |
138 | 138 | |
... | ... | @@ -125,47 +125,47 @@ |
125 | 125 | * impact that frequency will do to the MPU and the whole system in |
126 | 126 | * general. |
127 | 127 | */ |
128 | - OPP_INITIALIZER("l3_main", false, 41500000, OMAP3430_VDD_CORE_OPP1_UV), | |
128 | + OPP_INITIALIZER("l3_main", "dpll3_ck", "core", false, 41500000, OMAP3430_VDD_CORE_OPP1_UV), | |
129 | 129 | /* L3 OPP2 */ |
130 | - OPP_INITIALIZER("l3_main", true, 83000000, OMAP3430_VDD_CORE_OPP2_UV), | |
130 | + OPP_INITIALIZER("l3_main", "dpll3_ck", "core", true, 83000000, OMAP3430_VDD_CORE_OPP2_UV), | |
131 | 131 | /* L3 OPP3 */ |
132 | - OPP_INITIALIZER("l3_main", true, 166000000, OMAP3430_VDD_CORE_OPP3_UV), | |
132 | + OPP_INITIALIZER("l3_main", "dpll3_ck", "core", true, 166000000, OMAP3430_VDD_CORE_OPP3_UV), | |
133 | 133 | |
134 | 134 | /* DSP OPP1 */ |
135 | - OPP_INITIALIZER("iva", true, 90000000, OMAP3430_VDD_MPU_OPP1_UV), | |
135 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 90000000, OMAP3430_VDD_MPU_OPP1_UV), | |
136 | 136 | /* DSP OPP2 */ |
137 | - OPP_INITIALIZER("iva", true, 180000000, OMAP3430_VDD_MPU_OPP2_UV), | |
137 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 180000000, OMAP3430_VDD_MPU_OPP2_UV), | |
138 | 138 | /* DSP OPP3 */ |
139 | - OPP_INITIALIZER("iva", true, 360000000, OMAP3430_VDD_MPU_OPP3_UV), | |
139 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 360000000, OMAP3430_VDD_MPU_OPP3_UV), | |
140 | 140 | /* DSP OPP4 */ |
141 | - OPP_INITIALIZER("iva", true, 400000000, OMAP3430_VDD_MPU_OPP4_UV), | |
141 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 400000000, OMAP3430_VDD_MPU_OPP4_UV), | |
142 | 142 | /* DSP OPP5 */ |
143 | - OPP_INITIALIZER("iva", true, 430000000, OMAP3430_VDD_MPU_OPP5_UV), | |
143 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 430000000, OMAP3430_VDD_MPU_OPP5_UV), | |
144 | 144 | }; |
145 | 145 | |
146 | 146 | static struct omap_opp_def __initdata omap36xx_opp_def_list[] = { |
147 | 147 | /* MPU OPP1 - OPP50 */ |
148 | - OPP_INITIALIZER("mpu", true, 300000000, OMAP3630_VDD_MPU_OPP50_UV), | |
148 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 300000000, OMAP3630_VDD_MPU_OPP50_UV), | |
149 | 149 | /* MPU OPP2 - OPP100 */ |
150 | - OPP_INITIALIZER("mpu", true, 600000000, OMAP3630_VDD_MPU_OPP100_UV), | |
150 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", true, 600000000, OMAP3630_VDD_MPU_OPP100_UV), | |
151 | 151 | /* MPU OPP3 - OPP-Turbo */ |
152 | - OPP_INITIALIZER("mpu", false, 800000000, OMAP3630_VDD_MPU_OPP120_UV), | |
152 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", false, 800000000, OMAP3630_VDD_MPU_OPP120_UV), | |
153 | 153 | /* MPU OPP4 - OPP-SB */ |
154 | - OPP_INITIALIZER("mpu", false, 1000000000, OMAP3630_VDD_MPU_OPP1G_UV), | |
154 | + OPP_INITIALIZER("mpu", "dpll1_ck", "mpu_iva", false, 1000000000, OMAP3630_VDD_MPU_OPP1G_UV), | |
155 | 155 | |
156 | 156 | /* L3 OPP1 - OPP50 */ |
157 | - OPP_INITIALIZER("l3_main", true, 100000000, OMAP3630_VDD_CORE_OPP50_UV), | |
157 | + OPP_INITIALIZER("l3_main", "dpll3_ck", "core", true, 100000000, OMAP3630_VDD_CORE_OPP50_UV), | |
158 | 158 | /* L3 OPP2 - OPP100, OPP-Turbo, OPP-SB */ |
159 | - OPP_INITIALIZER("l3_main", true, 200000000, OMAP3630_VDD_CORE_OPP100_UV), | |
159 | + OPP_INITIALIZER("l3_main", "dpll3_ck", "core", true, 200000000, OMAP3630_VDD_CORE_OPP100_UV), | |
160 | 160 | |
161 | 161 | /* DSP OPP1 - OPP50 */ |
162 | - OPP_INITIALIZER("iva", true, 260000000, OMAP3630_VDD_MPU_OPP50_UV), | |
162 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 260000000, OMAP3630_VDD_MPU_OPP50_UV), | |
163 | 163 | /* DSP OPP2 - OPP100 */ |
164 | - OPP_INITIALIZER("iva", true, 520000000, OMAP3630_VDD_MPU_OPP100_UV), | |
164 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", true, 520000000, OMAP3630_VDD_MPU_OPP100_UV), | |
165 | 165 | /* DSP OPP3 - OPP-Turbo */ |
166 | - OPP_INITIALIZER("iva", false, 660000000, OMAP3630_VDD_MPU_OPP120_UV), | |
166 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", false, 660000000, OMAP3630_VDD_MPU_OPP120_UV), | |
167 | 167 | /* DSP OPP4 - OPP-SB */ |
168 | - OPP_INITIALIZER("iva", false, 800000000, OMAP3630_VDD_MPU_OPP1G_UV), | |
168 | + OPP_INITIALIZER("iva", "dpll2_ck", "mpu_iva", false, 800000000, OMAP3630_VDD_MPU_OPP1G_UV), | |
169 | 169 | }; |
170 | 170 | |
171 | 171 | /* OMAP 3630 MPU Core VDD dependency table */ |
arch/arm/mach-omap2/opp4xxx_data.c
... | ... | @@ -108,23 +108,23 @@ |
108 | 108 | |
109 | 109 | static struct omap_opp_def __initdata omap44xx_opp_def_list[] = { |
110 | 110 | /* MPU OPP1 - OPP50 */ |
111 | - OPP_INITIALIZER("mpu", true, 300000000, OMAP4430_VDD_MPU_OPP50_UV), | |
111 | + OPP_INITIALIZER("mpu", "dpll_mpu_ck", "mpu", true, 300000000, OMAP4430_VDD_MPU_OPP50_UV), | |
112 | 112 | /* MPU OPP2 - OPP100 */ |
113 | - OPP_INITIALIZER("mpu", true, 600000000, OMAP4430_VDD_MPU_OPP100_UV), | |
113 | + OPP_INITIALIZER("mpu", "dpll_mpu_ck", "mpu", true, 600000000, OMAP4430_VDD_MPU_OPP100_UV), | |
114 | 114 | /* MPU OPP3 - OPP-Turbo */ |
115 | - OPP_INITIALIZER("mpu", true, 800000000, OMAP4430_VDD_MPU_OPPTURBO_UV), | |
115 | + OPP_INITIALIZER("mpu", "dpll_mpu_ck", "mpu", true, 800000000, OMAP4430_VDD_MPU_OPPTURBO_UV), | |
116 | 116 | /* MPU OPP4 - OPP-SB */ |
117 | - OPP_INITIALIZER("mpu", true, 1008000000, OMAP4430_VDD_MPU_OPPNITRO_UV), | |
117 | + OPP_INITIALIZER("mpu", "dpll_mpu_ck", "mpu", true, 1008000000, OMAP4430_VDD_MPU_OPPNITRO_UV), | |
118 | 118 | /* L3 OPP1 - OPP50 */ |
119 | - OPP_INITIALIZER("l3_main_1", true, 100000000, OMAP4430_VDD_CORE_OPP50_UV), | |
119 | + OPP_INITIALIZER("l3_main_1", "dpll_core_m5x2_ck", "core", true, 100000000, OMAP4430_VDD_CORE_OPP50_UV), | |
120 | 120 | /* L3 OPP2 - OPP100, OPP-Turbo, OPP-SB */ |
121 | - OPP_INITIALIZER("l3_main_1", true, 200000000, OMAP4430_VDD_CORE_OPP100_UV), | |
121 | + OPP_INITIALIZER("l3_main_1", "dpll_core_m5x2_ck", "core", true, 200000000, OMAP4430_VDD_CORE_OPP100_UV), | |
122 | 122 | /* IVA OPP1 - OPP50 */ |
123 | - OPP_INITIALIZER("iva", true, 133000000, OMAP4430_VDD_IVA_OPP50_UV), | |
123 | + OPP_INITIALIZER("iva", "dpll_iva_m5x2_ck", "iva", true, 133000000, OMAP4430_VDD_IVA_OPP50_UV), | |
124 | 124 | /* IVA OPP2 - OPP100 */ |
125 | - OPP_INITIALIZER("iva", true, 266100000, OMAP4430_VDD_IVA_OPP100_UV), | |
125 | + OPP_INITIALIZER("iva", "dpll_iva_m5x2_ck", "iva", true, 266100000, OMAP4430_VDD_IVA_OPP100_UV), | |
126 | 126 | /* IVA OPP3 - OPP-Turbo */ |
127 | - OPP_INITIALIZER("iva", false, 332000000, OMAP4430_VDD_IVA_OPPTURBO_UV), | |
127 | + OPP_INITIALIZER("iva", "dpll_iva_m5x2_ck", "iva", false, 332000000, OMAP4430_VDD_IVA_OPPTURBO_UV), | |
128 | 128 | /* TODO: add DSP, aess, fdif, gpu */ |
129 | 129 | }; |
130 | 130 |