diff options
Diffstat (limited to 'arch/arm/mach-u300/core.c')
| -rw-r--r-- | arch/arm/mach-u300/core.c | 21 | 
1 files changed, 11 insertions, 10 deletions
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 33339745d43..03acf1883ec 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c @@ -30,6 +30,7 @@  #include <linux/pinctrl/consumer.h>  #include <linux/pinctrl/pinconf-generic.h>  #include <linux/dma-mapping.h> +#include <linux/platform_data/clk-u300.h>  #include <asm/types.h>  #include <asm/setup.h> @@ -44,7 +45,6 @@  #include <mach/dma_channels.h>  #include <mach/gpio-u300.h> -#include "clock.h"  #include "spi.h"  #include "i2c.h"  #include "u300-gpio.h" @@ -1658,12 +1658,20 @@ void __init u300_init_irq(void)  	int i;  	/* initialize clocking early, we want to clock the INTCON */ -	u300_clock_init(); +	u300_clk_init(U300_SYSCON_VBASE); + +	/* Bootstrap EMIF and SEMI clocks */ +	clk = clk_get_sys("pl172", NULL); +	BUG_ON(IS_ERR(clk)); +	clk_prepare_enable(clk); +	clk = clk_get_sys("semi", NULL); +	BUG_ON(IS_ERR(clk)); +	clk_prepare_enable(clk);  	/* Clock the interrupt controller */  	clk = clk_get_sys("intcon", NULL);  	BUG_ON(IS_ERR(clk)); -	clk_enable(clk); +	clk_prepare_enable(clk);  	for (i = 0; i < U300_VIC_IRQS_END; i++)  		set_bit(i, (unsigned long *) &mask[0]); @@ -1811,13 +1819,6 @@ void __init u300_init_devices(void)  	/* Check what platform we run and print some status information */  	u300_init_check_chip(); -	/* Set system to run at PLL208, max performance, a known state. */ -	val = readw(U300_SYSCON_VBASE + U300_SYSCON_CCR); -	val &= ~U300_SYSCON_CCR_CLKING_PERFORMANCE_MASK; -	writew(val, U300_SYSCON_VBASE + U300_SYSCON_CCR); -	/* Wait for the PLL208 to lock if not locked in yet */ -	while (!(readw(U300_SYSCON_VBASE + U300_SYSCON_CSR) & -		 U300_SYSCON_CSR_PLL208_LOCK_IND));  	/* Initialize SPI device with some board specifics */  	u300_spi_init(&pl022_device);  |