aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Cousson <b-cousson@ti.com>2011-08-16 09:02:20 -0400
committerKevin Hilman <khilman@ti.com>2011-10-04 12:52:22 -0400
commit0f7aa005c85917f114c376e937d88f5d941fb389 (patch)
tree2cbfb7a5218d06b8520c9dbaf95e204003ae347e
parentb1621fc80123e4f113c3dc1bc6dbad53ebd0c888 (diff)
ARM: OMAP2+: pm: Use hwmod name instead of dev pointer
Replace the struct device parameter of omap2_set_init_voltage by the hwmod name. It will avoid having to store explicitely the device pointer into a static variable. Moreover, it will be a little bit more scalable if we introduce new DVFS devices. Signed-off-by: Benoit Cousson <b-cousson@ti.com> Signed-off-by: Kevin Hilman <khilman@ti.com>
-rw-r--r--arch/arm/mach-omap2/pm.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
index 0844e2ecfb4a..7c038ea42093 100644
--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -169,18 +169,26 @@ err:
169 * in the opp entry 169 * in the opp entry
170 */ 170 */
171static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name, 171static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
172 struct device *dev) 172 const char *oh_name)
173{ 173{
174 struct voltagedomain *voltdm; 174 struct voltagedomain *voltdm;
175 struct clk *clk; 175 struct clk *clk;
176 struct opp *opp; 176 struct opp *opp;
177 unsigned long freq, bootup_volt; 177 unsigned long freq, bootup_volt;
178 struct device *dev;
178 179
179 if (!vdd_name || !clk_name || !dev) { 180 if (!vdd_name || !clk_name || !oh_name) {
180 pr_err("%s: invalid parameters\n", __func__); 181 pr_err("%s: invalid parameters\n", __func__);
181 goto exit; 182 goto exit;
182 } 183 }
183 184
185 dev = omap_device_get_by_hwmod_name(oh_name);
186 if (IS_ERR(dev)) {
187 pr_err("%s: Unable to get dev pointer for hwmod %s\n",
188 __func__, oh_name);
189 goto exit;
190 }
191
184 voltdm = voltdm_lookup(vdd_name); 192 voltdm = voltdm_lookup(vdd_name);
185 if (IS_ERR(voltdm)) { 193 if (IS_ERR(voltdm)) {
186 pr_err("%s: unable to get vdd pointer for vdd_%s\n", 194 pr_err("%s: unable to get vdd pointer for vdd_%s\n",
@@ -224,8 +232,8 @@ static void __init omap3_init_voltages(void)
224 if (!cpu_is_omap34xx()) 232 if (!cpu_is_omap34xx())
225 return; 233 return;
226 234
227 omap2_set_init_voltage("mpu_iva", "dpll1_ck", mpu_dev); 235 omap2_set_init_voltage("mpu_iva", "dpll1_ck", "mpu");
228 omap2_set_init_voltage("core", "l3_ick", l3_dev); 236 omap2_set_init_voltage("core", "l3_ick", "l3_main");
229} 237}
230 238
231static void __init omap4_init_voltages(void) 239static void __init omap4_init_voltages(void)
@@ -233,9 +241,9 @@ static void __init omap4_init_voltages(void)
233 if (!cpu_is_omap44xx()) 241 if (!cpu_is_omap44xx())
234 return; 242 return;
235 243
236 omap2_set_init_voltage("mpu", "dpll_mpu_ck", mpu_dev); 244 omap2_set_init_voltage("mpu", "dpll_mpu_ck", "mpu");
237 omap2_set_init_voltage("core", "l3_div_ck", l3_dev); 245 omap2_set_init_voltage("core", "l3_div_ck", "l3_main_1");
238 omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", iva_dev); 246 omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva");
239} 247}
240 248
241static int __init omap2_common_pm_init(void) 249static int __init omap2_common_pm_init(void)