diff options
| -rw-r--r-- | arch/arm/cpu/arm920t/at91/clock.c | 24 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/at91/clock.c | 30 | ||||
| -rw-r--r-- | arch/arm/cpu/arm926ejs/at91/timer.c | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-at91/clk.h | 12 | ||||
| -rw-r--r-- | arch/arm/include/asm/global_data.h | 18 | 
5 files changed, 45 insertions, 41 deletions
| diff --git a/arch/arm/cpu/arm920t/at91/clock.c b/arch/arm/cpu/arm920t/at91/clock.c index 09d279983..696200d04 100644 --- a/arch/arm/cpu/arm920t/at91/clock.c +++ b/arch/arm/cpu/arm920t/at91/clock.c @@ -29,11 +29,11 @@ static unsigned long at91_css_to_rate(unsigned long css)  	case AT91_PMC_MCKR_CSS_SLOW:  		return CONFIG_SYS_AT91_SLOW_CLOCK;  	case AT91_PMC_MCKR_CSS_MAIN: -		return gd->main_clk_rate_hz; +		return gd->arch.main_clk_rate_hz;  	case AT91_PMC_MCKR_CSS_PLLA: -		return gd->plla_rate_hz; +		return gd->arch.plla_rate_hz;  	case AT91_PMC_MCKR_CSS_PLLB: -		return gd->pllb_rate_hz; +		return gd->arch.pllb_rate_hz;  	}  	return 0; @@ -124,10 +124,10 @@ int at91_clock_init(unsigned long main_clock)  		main_clock = tmp * (CONFIG_SYS_AT91_SLOW_CLOCK / 16);  	}  #endif -	gd->main_clk_rate_hz = main_clock; +	gd->arch.main_clk_rate_hz = main_clock;  	/* report if PLLA is more than mildly overclocked */ -	gd->plla_rate_hz = at91_pll_rate(main_clock, readl(&pmc->pllar)); +	gd->arch.plla_rate_hz = at91_pll_rate(main_clock, readl(&pmc->pllar));  #ifdef CONFIG_USB_ATMEL  	/* @@ -136,9 +136,10 @@ int at91_clock_init(unsigned long main_clock)  	 *  	 * REVISIT:  assumes MCK doesn't derive from PLLB!  	 */ -	gd->at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) | +	gd->arch.at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) |  			     AT91_PMC_PLLBR_USBDIV_2; -	gd->pllb_rate_hz = at91_pll_rate(main_clock, gd->at91_pllb_usb_init); +	gd->arch.pllb_rate_hz = at91_pll_rate(main_clock, +					      gd->arch.at91_pllb_usb_init);  #endif  	/* @@ -146,13 +147,14 @@ int at91_clock_init(unsigned long main_clock)  	 * For now, assume this parentage won't change.  	 */  	mckr = readl(&pmc->mckr); -	gd->mck_rate_hz = at91_css_to_rate(mckr & AT91_PMC_MCKR_CSS_MASK); -	freq = gd->mck_rate_hz; +	gd->arch.mck_rate_hz = at91_css_to_rate(mckr & AT91_PMC_MCKR_CSS_MASK); +	freq = gd->arch.mck_rate_hz;  	freq /= (1 << ((mckr & AT91_PMC_MCKR_PRES_MASK) >> 2));	/* prescale */  	/* mdiv */ -	gd->mck_rate_hz = freq / (1 + ((mckr & AT91_PMC_MCKR_MDIV_MASK) >> 8)); -	gd->cpu_clk_rate_hz = freq; +	gd->arch.mck_rate_hz = freq / +			(1 + ((mckr & AT91_PMC_MCKR_MDIV_MASK) >> 8)); +	gd->arch.cpu_clk_rate_hz = freq;  	return 0;  } diff --git a/arch/arm/cpu/arm926ejs/at91/clock.c b/arch/arm/cpu/arm926ejs/at91/clock.c index dc5c6c4b0..f825388ae 100644 --- a/arch/arm/cpu/arm926ejs/at91/clock.c +++ b/arch/arm/cpu/arm926ejs/at91/clock.c @@ -29,11 +29,11 @@ static unsigned long at91_css_to_rate(unsigned long css)  	case AT91_PMC_MCKR_CSS_SLOW:  		return CONFIG_SYS_AT91_SLOW_CLOCK;  	case AT91_PMC_MCKR_CSS_MAIN: -		return gd->main_clk_rate_hz; +		return gd->arch.main_clk_rate_hz;  	case AT91_PMC_MCKR_CSS_PLLA: -		return gd->plla_rate_hz; +		return gd->arch.plla_rate_hz;  	case AT91_PMC_MCKR_CSS_PLLB: -		return gd->pllb_rate_hz; +		return gd->arch.pllb_rate_hz;  	}  	return 0; @@ -132,10 +132,10 @@ int at91_clock_init(unsigned long main_clock)  		main_clock = tmp * (CONFIG_SYS_AT91_SLOW_CLOCK / 16);  	}  #endif -	gd->main_clk_rate_hz = main_clock; +	gd->arch.main_clk_rate_hz = main_clock;  	/* report if PLLA is more than mildly overclocked */ -	gd->plla_rate_hz = at91_pll_rate(main_clock, readl(&pmc->pllar)); +	gd->arch.plla_rate_hz = at91_pll_rate(main_clock, readl(&pmc->pllar));  #ifdef CONFIG_USB_ATMEL  	/* @@ -144,9 +144,10 @@ int at91_clock_init(unsigned long main_clock)  	 *  	 * REVISIT:  assumes MCK doesn't derive from PLLB!  	 */ -	gd->at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) | +	gd->arch.at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) |  			     AT91_PMC_PLLBR_USBDIV_2; -	gd->pllb_rate_hz = at91_pll_rate(main_clock, gd->at91_pllb_usb_init); +	gd->arch.pllb_rate_hz = at91_pll_rate(main_clock, +					      gd->arch.at91_pllb_usb_init);  #endif  	/* @@ -157,15 +158,15 @@ int at91_clock_init(unsigned long main_clock)  #if defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) \  		|| defined(CONFIG_AT91SAM9X5)  	/* plla divisor by 2 */ -	gd->plla_rate_hz /= (1 << ((mckr & 1 << 12) >> 12)); +	gd->arch.plla_rate_hz /= (1 << ((mckr & 1 << 12) >> 12));  #endif -	gd->mck_rate_hz = at91_css_to_rate(mckr & AT91_PMC_MCKR_CSS_MASK); -	freq = gd->mck_rate_hz; +	gd->arch.mck_rate_hz = at91_css_to_rate(mckr & AT91_PMC_MCKR_CSS_MASK); +	freq = gd->arch.mck_rate_hz;  	freq /= (1 << ((mckr & AT91_PMC_MCKR_PRES_MASK) >> 2));	/* prescale */  #if defined(CONFIG_AT91SAM9G20)  	/* mdiv ; (x >> 7) = ((x >> 8) * 2) */ -	gd->mck_rate_hz = (mckr & AT91_PMC_MCKR_MDIV_MASK) ? +	gd->arch.mck_rate_hz = (mckr & AT91_PMC_MCKR_MDIV_MASK) ?  		freq / ((mckr & AT91_PMC_MCKR_MDIV_MASK) >> 7) : freq;  	if (mckr & AT91_PMC_MCKR_MDIV_MASK)  		freq /= 2;			/* processor clock division */ @@ -177,14 +178,15 @@ int at91_clock_init(unsigned long main_clock)  	 *  2   <==>   4  	 *  3   <==>   3  	 */ -	gd->mck_rate_hz = (mckr & AT91_PMC_MCKR_MDIV_MASK) == +	gd->arch.mck_rate_hz = (mckr & AT91_PMC_MCKR_MDIV_MASK) ==  		(AT91_PMC_MCKR_MDIV_2 | AT91_PMC_MCKR_MDIV_4)  		? freq / 3  		: freq / (1 << ((mckr & AT91_PMC_MCKR_MDIV_MASK) >> 8));  #else -	gd->mck_rate_hz = freq / (1 << ((mckr & AT91_PMC_MCKR_MDIV_MASK) >> 8)); +	gd->arch.mck_rate_hz = freq / +			(1 << ((mckr & AT91_PMC_MCKR_MDIV_MASK) >> 8));  #endif -	gd->cpu_clk_rate_hz = freq; +	gd->arch.cpu_clk_rate_hz = freq;  	return 0;  } diff --git a/arch/arm/cpu/arm926ejs/at91/timer.c b/arch/arm/cpu/arm926ejs/at91/timer.c index f70ce83f0..641ae3ef9 100644 --- a/arch/arm/cpu/arm926ejs/at91/timer.c +++ b/arch/arm/cpu/arm926ejs/at91/timer.c @@ -79,7 +79,7 @@ int timer_init(void)  	/* Enable PITC */  	writel(TIMER_LOAD_VAL | AT91_PIT_MR_EN , &pit->mr); -	gd->timer_rate_hz = gd->mck_rate_hz / 16; +	gd->timer_rate_hz = gd->arch.mck_rate_hz / 16;  	gd->tbu = gd->tbl = 0;  	return 0; diff --git a/arch/arm/include/asm/arch-at91/clk.h b/arch/arm/include/asm/arch-at91/clk.h index 1e8522b83..d4852a38c 100644 --- a/arch/arm/include/asm/arch-at91/clk.h +++ b/arch/arm/include/asm/arch-at91/clk.h @@ -31,37 +31,37 @@  static inline unsigned long get_cpu_clk_rate(void)  {  	DECLARE_GLOBAL_DATA_PTR; -	return gd->cpu_clk_rate_hz; +	return gd->arch.cpu_clk_rate_hz;  }  static inline unsigned long get_main_clk_rate(void)  {  	DECLARE_GLOBAL_DATA_PTR; -	return gd->main_clk_rate_hz; +	return gd->arch.main_clk_rate_hz;  }  static inline unsigned long get_mck_clk_rate(void)  {  	DECLARE_GLOBAL_DATA_PTR; -	return gd->mck_rate_hz; +	return gd->arch.mck_rate_hz;  }  static inline unsigned long get_plla_clk_rate(void)  {  	DECLARE_GLOBAL_DATA_PTR; -	return gd->plla_rate_hz; +	return gd->arch.plla_rate_hz;  }  static inline unsigned long get_pllb_clk_rate(void)  {  	DECLARE_GLOBAL_DATA_PTR; -	return gd->pllb_rate_hz; +	return gd->arch.pllb_rate_hz;  }  static inline u32 get_pllb_init(void)  {  	DECLARE_GLOBAL_DATA_PTR; -	return gd->at91_pllb_usb_init; +	return gd->arch.at91_pllb_usb_init;  }  static inline unsigned long get_macb_pclk_rate(unsigned int dev_id) diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h index 9fddf3b8d..d147899dd 100644 --- a/arch/arm/include/asm/global_data.h +++ b/arch/arm/include/asm/global_data.h @@ -26,6 +26,15 @@  /* Architecture-specific global data */  struct arch_global_data { +#ifdef CONFIG_AT91FAMILY +	/* "static data" needed by at91's clock.c */ +	unsigned long	cpu_clk_rate_hz; +	unsigned long	main_clk_rate_hz; +	unsigned long	mck_rate_hz; +	unsigned long	plla_rate_hz; +	unsigned long	pllb_rate_hz; +	unsigned long	at91_pllb_usb_init; +#endif  };  /* @@ -50,15 +59,6 @@ typedef	struct	global_data {  #ifdef CONFIG_FSL_ESDHC  	unsigned long	sdhc_clk;  #endif -#ifdef CONFIG_AT91FAMILY -	/* "static data" needed by at91's clock.c */ -	unsigned long	cpu_clk_rate_hz; -	unsigned long	main_clk_rate_hz; -	unsigned long	mck_rate_hz; -	unsigned long	plla_rate_hz; -	unsigned long	pllb_rate_hz; -	unsigned long	at91_pllb_usb_init; -#endif  #ifdef CONFIG_ARM  	/* "static data" needed by most of timer.c on ARM platforms */  	unsigned long	timer_rate_hz; |