diff options
Diffstat (limited to 'cpu')
| -rw-r--r-- | cpu/74xx_7xx/cpu.c | 24 | ||||
| -rw-r--r-- | cpu/74xx_7xx/cpu_init.c | 9 | ||||
| -rw-r--r-- | cpu/74xx_7xx/speed.c | 106 | ||||
| -rw-r--r-- | cpu/74xx_7xx/start.S | 7 | ||||
| -rw-r--r-- | cpu/mpc5xx/spi.c | 4 | ||||
| -rw-r--r-- | cpu/mpc5xx/start.S | 2 | 
6 files changed, 104 insertions, 48 deletions
diff --git a/cpu/74xx_7xx/cpu.c b/cpu/74xx_7xx/cpu.c index 30a209152..629ed66b0 100644 --- a/cpu/74xx_7xx/cpu.c +++ b/cpu/74xx_7xx/cpu.c @@ -79,6 +79,10 @@ get_cpu_type(void)  		type = CPU_750FX;  		break; +	case 0x7002: +		type = CPU_750GX; +		break; +  	case 0x800C:  		type = CPU_7410;  		break; @@ -87,6 +91,14 @@ get_cpu_type(void)  		type = CPU_7450;  		break; +	case 0x8001: +		type = CPU_7455; +		break; + +	case 0x8002: +		type = CPU_7457; +		break; +  	default:  		break;  	} @@ -124,6 +136,10 @@ int checkcpu (void)  		str = "750FX";  		break; +	case CPU_750GX: +		str = "750GX"; +		break; +  	case CPU_755:  		str = "755";  		break; @@ -140,6 +156,14 @@ int checkcpu (void)  		str = "MPC7450";  		break; +	case CPU_7455: +		str = "MPC7455"; +		break; + +	case CPU_7457: +		str = "MPC7457"; +		break; +  	default:  		printf("Unknown CPU -- PVR: 0x%08x\n", pvr);  		return -1; diff --git a/cpu/74xx_7xx/cpu_init.c b/cpu/74xx_7xx/cpu_init.c index 2843e2671..93f180f26 100644 --- a/cpu/74xx_7xx/cpu_init.c +++ b/cpu/74xx_7xx/cpu_init.c @@ -39,9 +39,16 @@  void  cpu_init_f (void)  { -	if (get_cpu_type() == CPU_7450) { +	switch (get_cpu_type()) { +	case CPU_7450: +	case CPU_7455: +	case CPU_7457:  		/* enable the timebase bit in HID0 */  		set_hid0(get_hid0() | 0x4000000); +		break; +	default: +		/* do nothing */ +		break;  	}  } diff --git a/cpu/74xx_7xx/speed.c b/cpu/74xx_7xx/speed.c index 12bdf3782..f94ff7871 100644 --- a/cpu/74xx_7xx/speed.c +++ b/cpu/74xx_7xx/speed.c @@ -12,7 +12,7 @@   *   * This program is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the   * GNU General Public License for more details.   *   * You should have received a copy of the GNU General Public License @@ -49,29 +49,29 @@ static const int hid1_multipliers_x_10[] = {  };  static const int hid1_fx_multipliers_x_10[] = { -	00,     /* 0000 - off */ -	00,     /* 0001 - off */ -	10,     /* 0010 - bypass */ -	10,     /* 0011 - bypass */ -	20,     /* 0100 - 2x */ -	25,     /* 0101 - 2.5x */ -	30,     /* 0110 - 3x */ -	35,     /* 0111 - 3.5x */ -	40,     /* 1000 - 4x */ -	45,     /* 1001 - 4.5x */ -	50,     /* 1010 - 5x */ -	55,     /* 1011 - 5.5x */ -	60,     /* 1100 - 6x */ -	65,     /* 1101 - 6.5x */ -	70,     /* 1110 - 7x */ -	75,     /* 1111 - 7.5 */ -	80,     /* 10000 - 8x */ -	85,     /* 10001 - 8.5x */ -	90,     /* 10010 - 9x */ -	95,     /* 10011 - 9.5x */ -	100,    /* 10100 - 10x */ -	110,    /* 10101 - 11x */ -	120,    /* 10110 - 12x */ +	00,	/* 0000 - off */ +	00,	/* 0001 - off */ +	10,	/* 0010 - bypass */ +	10,	/* 0011 - bypass */ +	20,	/* 0100 - 2x */ +	25,	/* 0101 - 2.5x */ +	30,	/* 0110 - 3x */ +	35,	/* 0111 - 3.5x */ +	40,	/* 1000 - 4x */ +	45,	/* 1001 - 4.5x */ +	50,	/* 1010 - 5x */ +	55,	/* 1011 - 5.5x */ +	60,	/* 1100 - 6x */ +	65,	/* 1101 - 6.5x */ +	70,	/* 1110 - 7x */ +	75,	/* 1111 - 7.5 */ +	80,	/* 10000 - 8x */ +	85,	/* 10001 - 8.5x */ +	90,	/* 10010 - 9x */ +	95,	/* 10011 - 9.5x */ +	100,	/* 10100 - 10x */ +	110,	/* 10101 - 11x */ +	120,	/* 10110 - 12x */  }; @@ -86,13 +86,48 @@ static const int hid1_fx_multipliers_x_10[] = {  int get_clocks (void)  {  	DECLARE_GLOBAL_DATA_PTR; -#ifdef CONFIG_750FX -	ulong clock = CFG_BUS_CLK * \ -		      hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10; -#else -	ulong clock = CFG_BUS_CLK * \ -		      hid1_multipliers_x_10[get_hid1 () >> 28] / 10; -#endif +	ulong clock = 0; + +	/* calculate the clock frequency based upon the CPU type */ +	switch (get_cpu_type()) { +	case CPU_7455: +	case CPU_7457: +		/* +		 * It is assumed that the PLL_EXT line is zero. +		 * Make sure division is done before multiplication to prevent 32-bit +		 * arithmetic overflows which will cause a negative number +		 */ +		clock = (CFG_BUS_CLK / 10) * hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF]; +		break; + +	case CPU_750GX: +	case CPU_750FX: +		clock = CFG_BUS_CLK * hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10; +		break; + +	case CPU_7450: +	case CPU_740: +	case CPU_740P: +	case CPU_745: +	case CPU_750CX: +	case CPU_750: +	case CPU_750P: +	case CPU_755: +	case CPU_7400: +	case CPU_7410: +		/* +		 * Make sure division is done before multiplication to prevent 32-bit +		 * arithmetic overflows which will cause a negative number +		 */ +		clock = (CFG_BUS_CLK / 10) * hid1_multipliers_x_10[get_hid1 () >> 28]; +		break; + +	case CPU_UNKNOWN: +	       printf ("get_gclk_freq(): unknown CPU type\n"); +	       clock = 0; +	       return (1); +	} +  	gd->cpu_clk = clock;  	gd->bus_clk = CFG_BUS_CLK; @@ -100,12 +135,3 @@ int get_clocks (void)  }  /* ------------------------------------------------------------------------- */ - -#if 0	/* disabled XXX - use global data instead */ -ulong get_bus_freq (ulong gclk_freq) -{ -	return CFG_BUS_CLK; -} -#endif /* 0 */ - -/* ------------------------------------------------------------------------- */ diff --git a/cpu/74xx_7xx/start.S b/cpu/74xx_7xx/start.S index 7d7a493fe..e8854f020 100644 --- a/cpu/74xx_7xx/start.S +++ b/cpu/74xx_7xx/start.S @@ -42,7 +42,10 @@  #include <asm/cache.h>  #include <asm/mmu.h> +#if !defined(CONFIG_DB64360) && \ +    !defined(CONFIG_DB64460)  #include <galileo/gt64260R.h> +#endif  #ifndef  CONFIG_IDENT_STRING  #define  CONFIG_IDENT_STRING "" @@ -749,7 +752,9 @@ in_ram:  	bne	5b  6:  	mr	r3, r10		/* Destination Address		*/ -#ifdef CONFIG_AMIGAONEG3SE +#if defined(CONFIG_AMIGAONEG3SE) || \ +    defined(CONFIG_DB64360)	 || \ +    defined(CONFIG_DB64460)  	mr	r4, r9		/* Use RAM copy of the global data */  #endif  	bl	after_reloc diff --git a/cpu/mpc5xx/spi.c b/cpu/mpc5xx/spi.c index 797d0c94e..81c9ddbd4 100644 --- a/cpu/mpc5xx/spi.c +++ b/cpu/mpc5xx/spi.c @@ -354,8 +354,6 @@ ssize_t spi_read (uchar *addr, int alen, uchar *buffer, int len)  	return (len);  } - -  /****************************************************************************   *  Function:    spi_xfer   **************************************************************************** */ @@ -412,5 +410,3 @@ ssize_t spi_xfer (size_t count)  }  #endif	/* CONFIG_SPI  */ - - diff --git a/cpu/mpc5xx/start.S b/cpu/mpc5xx/start.S index b56be2f30..087435e5b 100644 --- a/cpu/mpc5xx/start.S +++ b/cpu/mpc5xx/start.S @@ -601,5 +601,3 @@ pll_prog_code_end:  	nop  	blr  #endif - -  |