diff options
Diffstat (limited to 'arch/arm/mach-omap2')
| -rw-r--r-- | arch/arm/mach-omap2/opp.c | 23 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/pm.c | 11 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/twl-common.c | 2 | 
3 files changed, 28 insertions, 8 deletions
diff --git a/arch/arm/mach-omap2/opp.c b/arch/arm/mach-omap2/opp.c index 45ad7f74f35..58e16aef40b 100644 --- a/arch/arm/mach-omap2/opp.c +++ b/arch/arm/mach-omap2/opp.c @@ -18,6 +18,7 @@   */  #include <linux/module.h>  #include <linux/opp.h> +#include <linux/cpu.h>  #include <plat/omap_device.h> @@ -62,13 +63,23 @@ int __init omap_init_opp_table(struct omap_opp_def *opp_def,  				__func__, i);  			return -EINVAL;  		} -		oh = omap_hwmod_lookup(opp_def->hwmod_name); -		if (!oh || !oh->od) { -			pr_debug("%s: no hwmod or odev for %s, [%d] cannot add OPPs.\n", -				 __func__, opp_def->hwmod_name, i); -			continue; + +		if (!strncmp(opp_def->hwmod_name, "mpu", 3)) { +			/*  +			 * All current OMAPs share voltage rail and +			 * clock source, so CPU0 is used to represent +			 * the MPU-SS. +			 */ +			dev = get_cpu_device(0); +		} else { +			oh = omap_hwmod_lookup(opp_def->hwmod_name); +			if (!oh || !oh->od) { +				pr_debug("%s: no hwmod or odev for %s, [%d] cannot add OPPs.\n", +					 __func__, opp_def->hwmod_name, i); +				continue; +			} +			dev = &oh->od->pdev->dev;  		} -		dev = &oh->od->pdev->dev;  		r = opp_add(dev, opp_def->freq, opp_def->u_volt);  		if (r) { diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 939bd6f70b5..173c2be14d5 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c @@ -16,6 +16,7 @@  #include <linux/opp.h>  #include <linux/export.h>  #include <linux/suspend.h> +#include <linux/cpu.h>  #include <asm/system_misc.h> @@ -168,7 +169,15 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,  		goto exit;  	} -	dev = omap_device_get_by_hwmod_name(oh_name); +	if (!strncmp(oh_name, "mpu", 3)) +		/*  +		 * All current OMAPs share voltage rail and clock +		 * source, so CPU0 is used to represent the MPU-SS. +		 */ +		dev = get_cpu_device(0); +	else +		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); diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 45f77413c21..3f5eaccf6d8 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -158,7 +158,7 @@ static struct regulator_init_data omap3_vpll2_idata = {  };  static struct regulator_consumer_supply omap3_vdd1_supply[] = { -	REGULATOR_SUPPLY("vcc", "mpu.0"), +	REGULATOR_SUPPLY("vcc", "cpu0"),  };  static struct regulator_consumer_supply omap3_vdd2_supply[] = {  |