diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-01 20:58:25 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-01 20:58:25 -0700 | 
| commit | 81a3c10ce8a7fd5bf9a06bfc38bd417512911831 (patch) | |
| tree | 12ceac10fae8c4b2dc17b362672a5db305a8d960 /arch/arm/mach-omap2/pm.c | |
| parent | 6585dea1f99cc2265582ff2e4cc1727062136e92 (diff) | |
| parent | df80442d1ee2902c2e39f90f18160f2e08d14c06 (diff) | |
| download | olio-linux-3.10-81a3c10ce8a7fd5bf9a06bfc38bd417512911831.tar.xz olio-linux-3.10-81a3c10ce8a7fd5bf9a06bfc38bd417512911831.zip  | |
Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc
* 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc: (31 commits)
  ARM: OMAP: Warn if omap_ioremap is called before SoC detection
  ARM: OMAP: Move set_globals initialization to happen in init_early
  ARM: OMAP: Map SRAM later on with ioremap_exec()
  ARM: OMAP: Remove calls to SRAM allocations for framebuffer
  ARM: OMAP: Avoid cpu_is_omapxxxx usage until map_io is done
  ARM: OMAP1: Use generic map_io, init_early and init_irq
  arm/dts: OMAP3+: Add mpu, dsp and iva nodes
  arm/dts: OMAP4: Add a main ocp entry bound to l3-noc driver
  ARM: OMAP2+: l3-noc: Add support for device-tree
  ARM: OMAP2+: board-generic: Add i2c static init
  ARM: OMAP2+: board-generic: Add DT support to generic board
  arm/dts: Add support for OMAP3 Beagle board
  arm/dts: Add initial device tree support for OMAP3 SoC
  arm/dts: Add support for OMAP4 SDP board
  arm/dts: Add support for OMAP4 PandaBoard
  arm/dts: Add initial device tree support for OMAP4 SoC
  ARM: OMAP: omap_device: Add a method to build an omap_device from a DT node
  ARM: OMAP: omap_device: Add omap_device_[alloc|delete] for DT integration
  of: Add helpers to get one string in multiple strings property
  ARM: OMAP2+: devices: Remove all omap_device_pm_latency structures
  ...
Fix up trivial header file conflicts in arch/arm/mach-omap2/board-generic.c
Diffstat (limited to 'arch/arm/mach-omap2/pm.c')
| -rw-r--r-- | arch/arm/mach-omap2/pm.c | 72 | 
1 files changed, 24 insertions, 48 deletions
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 0844e2ecfb4..2ab7a9e17fe 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c @@ -26,38 +26,7 @@  static struct omap_device_pm_latency *pm_lats; -static struct device *mpu_dev; -static struct device *iva_dev; -static struct device *l3_dev; -static struct device *dsp_dev; - -struct device *omap2_get_mpuss_device(void) -{ -	WARN_ON_ONCE(!mpu_dev); -	return mpu_dev; -} - -struct device *omap2_get_iva_device(void) -{ -	WARN_ON_ONCE(!iva_dev); -	return iva_dev; -} - -struct device *omap2_get_l3_device(void) -{ -	WARN_ON_ONCE(!l3_dev); -	return l3_dev; -} - -struct device *omap4_get_dsp_device(void) -{ -	WARN_ON_ONCE(!dsp_dev); -	return dsp_dev; -} -EXPORT_SYMBOL(omap4_get_dsp_device); - -/* static int _init_omap_device(struct omap_hwmod *oh, void *user) */ -static int _init_omap_device(char *name, struct device **new_dev) +static int _init_omap_device(char *name)  {  	struct omap_hwmod *oh;  	struct platform_device *pdev; @@ -72,8 +41,6 @@ static int _init_omap_device(char *name, struct device **new_dev)  		 __func__, name))  		return -ENODEV; -	*new_dev = &pdev->dev; -  	return 0;  } @@ -82,16 +49,16 @@ static int _init_omap_device(char *name, struct device **new_dev)   */  static void omap2_init_processor_devices(void)  { -	_init_omap_device("mpu", &mpu_dev); +	_init_omap_device("mpu");  	if (omap3_has_iva()) -		_init_omap_device("iva", &iva_dev); +		_init_omap_device("iva");  	if (cpu_is_omap44xx()) { -		_init_omap_device("l3_main_1", &l3_dev); -		_init_omap_device("dsp", &dsp_dev); -		_init_omap_device("iva", &iva_dev); +		_init_omap_device("l3_main_1"); +		_init_omap_device("dsp"); +		_init_omap_device("iva");  	} else { -		_init_omap_device("l3_main", &l3_dev); +		_init_omap_device("l3_main");  	}  } @@ -169,18 +136,26 @@ err:   * in the opp entry   */  static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name, -						struct device *dev) +					 const char *oh_name)  {  	struct voltagedomain *voltdm;  	struct clk *clk;  	struct opp *opp;  	unsigned long freq, bootup_volt; +	struct device *dev; -	if (!vdd_name || !clk_name || !dev) { +	if (!vdd_name || !clk_name || !oh_name) {  		pr_err("%s: invalid parameters\n", __func__);  		goto exit;  	} +	dev = omap_device_get_by_hwmod_name(oh_name); +	if (IS_ERR(dev)) { +		pr_err("%s: Unable to get dev pointer for hwmod %s\n", +			__func__, oh_name); +		goto exit; +	} +  	voltdm = voltdm_lookup(vdd_name);  	if (IS_ERR(voltdm)) {  		pr_err("%s: unable to get vdd pointer for vdd_%s\n", @@ -224,8 +199,8 @@ static void __init omap3_init_voltages(void)  	if (!cpu_is_omap34xx())  		return; -	omap2_set_init_voltage("mpu_iva", "dpll1_ck", mpu_dev); -	omap2_set_init_voltage("core", "l3_ick", l3_dev); +	omap2_set_init_voltage("mpu_iva", "dpll1_ck", "mpu"); +	omap2_set_init_voltage("core", "l3_ick", "l3_main");  }  static void __init omap4_init_voltages(void) @@ -233,14 +208,15 @@ static void __init omap4_init_voltages(void)  	if (!cpu_is_omap44xx())  		return; -	omap2_set_init_voltage("mpu", "dpll_mpu_ck", mpu_dev); -	omap2_set_init_voltage("core", "l3_div_ck", l3_dev); -	omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", iva_dev); +	omap2_set_init_voltage("mpu", "dpll_mpu_ck", "mpu"); +	omap2_set_init_voltage("core", "l3_div_ck", "l3_main_1"); +	omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva");  }  static int __init omap2_common_pm_init(void)  { -	omap2_init_processor_devices(); +	if (!of_have_populated_dt()) +		omap2_init_processor_devices();  	omap_pm_if_init();  	return 0;  |