diff options
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3beagle.c')
| -rw-r--r-- | arch/arm/mach-omap2/board-omap3beagle.c | 22 | 
1 files changed, 13 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 388c431c745..d41ab98890f 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -24,6 +24,7 @@  #include <linux/input.h>  #include <linux/gpio_keys.h>  #include <linux/opp.h> +#include <linux/cpu.h>  #include <linux/mtd/mtd.h>  #include <linux/mtd/partitions.h> @@ -444,27 +445,31 @@ static struct omap_board_mux board_mux[] __initdata = {  };  #endif -static void __init beagle_opp_init(void) +static int __init beagle_opp_init(void)  {  	int r = 0; -	/* Initialize the omap3 opp table */ -	if (omap3_opp_init()) { +	if (!machine_is_omap3_beagle()) +		return 0; + +	/* Initialize the omap3 opp table if not already created. */ +	r = omap3_opp_init(); +	if (IS_ERR_VALUE(r) && (r != -EEXIST)) {  		pr_err("%s: opp default init failed\n", __func__); -		return; +		return r;  	}  	/* Custom OPP enabled for all xM versions */  	if (cpu_is_omap3630()) {  		struct device *mpu_dev, *iva_dev; -		mpu_dev = omap_device_get_by_hwmod_name("mpu"); +		mpu_dev = get_cpu_device(0);  		iva_dev = omap_device_get_by_hwmod_name("iva");  		if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {  			pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",  				__func__, mpu_dev, iva_dev); -			return; +			return -ENODEV;  		}  		/* Enable MPU 1GHz and lower opps */  		r = opp_enable(mpu_dev, 800000000); @@ -484,8 +489,9 @@ static void __init beagle_opp_init(void)  			opp_disable(iva_dev, 660000000);  		}  	} -	return; +	return 0;  } +device_initcall(beagle_opp_init);  static void __init omap3_beagle_init(void)  { @@ -522,8 +528,6 @@ static void __init omap3_beagle_init(void)  	/* Ensure SDRC pins are mux'd for self-refresh */  	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);  	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); - -	beagle_opp_init();  }  MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")  |