diff options
Diffstat (limited to 'lib_ppc/board.c')
| -rw-r--r-- | lib_ppc/board.c | 164 | 
1 files changed, 103 insertions, 61 deletions
| diff --git a/lib_ppc/board.c b/lib_ppc/board.c index c8f075f5a..289a32a64 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -52,7 +52,7 @@  #endif  #include <net.h>  #include <serial.h> -#ifdef CFG_ALLOC_DPRAM +#ifdef CONFIG_SYS_ALLOC_DPRAM  #if !defined(CONFIG_CPM2)  #include <commproc.h>  #endif @@ -68,14 +68,14 @@  #if defined(CONFIG_LOGBUFFER)  #include <logbuff.h>  #endif -#if defined(CFG_INIT_RAM_LOCK) && defined(CONFIG_E500) +#if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500)  #include <asm/cache.h>  #endif  #ifdef CONFIG_PS2KBD  #include <keyboard.h>  #endif -#ifdef CFG_UPDATE_FLASH_SIZE +#ifdef CONFIG_SYS_UPDATE_FLASH_SIZE  extern int update_flash_size (int flash_size);  #endif @@ -106,18 +106,18 @@ extern int board_start_ide(void);  DECLARE_GLOBAL_DATA_PTR; -#if defined(CFG_ENV_IS_EMBEDDED) -#define TOTAL_MALLOC_LEN	CFG_MALLOC_LEN -#elif ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \ -	(CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || \ -      defined(CFG_ENV_IS_IN_NVRAM) -#define	TOTAL_MALLOC_LEN	(CFG_MALLOC_LEN + CFG_ENV_SIZE) +#if defined(CONFIG_ENV_IS_EMBEDDED) +#define TOTAL_MALLOC_LEN	CONFIG_SYS_MALLOC_LEN +#elif ( ((CONFIG_ENV_ADDR+CONFIG_ENV_SIZE) < CONFIG_SYS_MONITOR_BASE) || \ +	(CONFIG_ENV_ADDR >= (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)) ) || \ +      defined(CONFIG_ENV_IS_IN_NVRAM) +#define	TOTAL_MALLOC_LEN	(CONFIG_SYS_MALLOC_LEN + CONFIG_ENV_SIZE)  #else -#define	TOTAL_MALLOC_LEN	CFG_MALLOC_LEN +#define	TOTAL_MALLOC_LEN	CONFIG_SYS_MALLOC_LEN  #endif -#if !defined(CFG_MEM_TOP_HIDE) -#define CFG_MEM_TOP_HIDE	0 +#if !defined(CONFIG_SYS_MEM_TOP_HIDE) +#define CONFIG_SYS_MEM_TOP_HIDE	0  #endif  extern ulong __init_end; @@ -146,7 +146,7 @@ static	ulong	mem_malloc_brk	 = 0;  static void mem_malloc_init (void)  {  #if !defined(CONFIG_RELOC_FIXUP_WORKS) -	mem_malloc_end = CFG_MONITOR_BASE + gd->reloc_off; +	mem_malloc_end = CONFIG_SYS_MONITOR_BASE + gd->reloc_off;  #endif  	mem_malloc_start = mem_malloc_end - TOTAL_MALLOC_LEN;  	mem_malloc_brk = mem_malloc_start; @@ -234,7 +234,7 @@ static int init_func_ram (void)  static int init_func_i2c (void)  {  	puts ("I2C:   "); -	i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); +	i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);  	puts ("ready\n");  	return (0);  } @@ -291,7 +291,7 @@ init_fnc_t *init_sequence[] = {  #endif  	init_timebase,  #endif -#ifdef CFG_ALLOC_DPRAM +#ifdef CONFIG_SYS_ALLOC_DPRAM  #if !defined(CONFIG_CPM2)  	dpram_init,  #endif @@ -343,9 +343,9 @@ init_fnc_t *init_sequence[] = {  #endif  	INIT_FUNC_WATCHDOG_RESET  	init_func_ram, -#if defined(CFG_DRAM_TEST) +#if defined(CONFIG_SYS_DRAM_TEST)  	testdram, -#endif /* CFG_DRAM_TEST */ +#endif /* CONFIG_SYS_DRAM_TEST */  	INIT_FUNC_WATCHDOG_RESET  	NULL,			/* Terminate this list */ @@ -384,7 +384,7 @@ ulong get_effective_memsize(void)  #ifdef CONFIG_LOGBUFFER  unsigned long logbuffer_base(void)  { -	return CFG_SDRAM_BASE + get_effective_memsize() - LOGBUFF_LEN; +	return CONFIG_SYS_SDRAM_BASE + get_effective_memsize() - LOGBUFF_LEN;  }  #endif @@ -402,7 +402,7 @@ void board_init_f (ulong bootflag)  #endif  	/* Pointer is writable since we allocated a register for it */ -	gd = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET); +	gd = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);  	/* compiler optimization barrier needed for GCC >= 3.4 */  	__asm__ __volatile__("": : :"memory"); @@ -430,7 +430,7 @@ void board_init_f (ulong bootflag)  	 *  - monitor code  	 *  - board info struct  	 */ -	len = (ulong)&_end - CFG_MONITOR_BASE; +	len = (ulong)&_end - CONFIG_SYS_MONITOR_BASE;  	/*  	 * Subtract specified amount of memory to hide so that it won't @@ -442,9 +442,9 @@ void board_init_f (ulong bootflag)  	 * memory size from the SDRAM controller setup will have to  	 * get fixed.  	 */ -	gd->ram_size -= CFG_MEM_TOP_HIDE; +	gd->ram_size -= CONFIG_SYS_MEM_TOP_HIDE; -	addr = CFG_SDRAM_BASE + get_effective_memsize(); +	addr = CONFIG_SYS_SDRAM_BASE + get_effective_memsize();  #ifdef CONFIG_LOGBUFFER  #ifndef CONFIG_ALT_LB_ADDR @@ -536,15 +536,15 @@ void board_init_f (ulong bootflag)  	 * Save local variables to board info struct  	 */ -	bd->bi_memstart  = CFG_SDRAM_BASE;	/* start of  DRAM memory	*/ +	bd->bi_memstart  = CONFIG_SYS_SDRAM_BASE;	/* start of  DRAM memory	*/  	bd->bi_memsize   = gd->ram_size;	/* size  of  DRAM memory in bytes */  #ifdef CONFIG_IP860  	bd->bi_sramstart = SRAM_BASE;	/* start of  SRAM memory	*/  	bd->bi_sramsize  = SRAM_SIZE;	/* size  of  SRAM memory	*/  #elif defined CONFIG_MPC8220 -	bd->bi_sramstart = CFG_SRAM_BASE;	/* start of  SRAM memory	*/ -	bd->bi_sramsize  = CFG_SRAM_SIZE;	/* size  of  SRAM memory	*/ +	bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;	/* start of  SRAM memory	*/ +	bd->bi_sramsize  = CONFIG_SYS_SRAM_SIZE;	/* size  of  SRAM memory	*/  #else  	bd->bi_sramstart = 0;		/* FIXME */ /* start of  SRAM memory	*/  	bd->bi_sramsize  = 0;		/* FIXME */ /* size  of  SRAM memory	*/ @@ -552,16 +552,16 @@ void board_init_f (ulong bootflag)  #if defined(CONFIG_8xx) || defined(CONFIG_8260) || defined(CONFIG_5xx) || \      defined(CONFIG_E500) || defined(CONFIG_MPC86xx) -	bd->bi_immr_base = CFG_IMMR;	/* base  of IMMR register     */ +	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */  #endif  #if defined(CONFIG_MPC5xxx) -	bd->bi_mbar_base = CFG_MBAR;	/* base of internal registers */ +	bd->bi_mbar_base = CONFIG_SYS_MBAR;	/* base of internal registers */  #endif  #if defined(CONFIG_MPC83XX) -	bd->bi_immrbar = CFG_IMMR; +	bd->bi_immrbar = CONFIG_SYS_IMMR;  #endif  #if defined(CONFIG_MPC8220) -	bd->bi_mbar_base = CFG_MBAR;	/* base of internal registers */ +	bd->bi_mbar_base = CONFIG_SYS_MBAR;	/* base of internal registers */  	bd->bi_inpfreq   = gd->inp_clk;  	bd->bi_pcifreq   = gd->pci_clk;  	bd->bi_vcofreq   = gd->vco_clk; @@ -570,7 +570,7 @@ void board_init_f (ulong bootflag)  	/* store bootparam to sram (backward compatible), here? */  	{ -		u32 *sram = (u32 *)CFG_SRAM_BASE; +		u32 *sram = (u32 *)CONFIG_SYS_SRAM_BASE;  		*sram++ = gd->ram_size;  		*sram++ = gd->bus_clk;  		*sram++ = gd->inp_clk; @@ -601,7 +601,7 @@ void board_init_f (ulong bootflag)  #endif /* CONFIG_MPC5xxx */  	bd->bi_baudrate = gd->baudrate;	/* Console Baudrate     */ -#ifdef CFG_EXTBDINFO +#ifdef CONFIG_SYS_EXTBDINFO  	strncpy ((char *)bd->bi_s_version, "1.2", sizeof (bd->bi_s_version));  	strncpy ((char *)bd->bi_r_version, U_BOOT_VERSION, sizeof (bd->bi_r_version)); @@ -635,6 +635,16 @@ void board_init_f (ulong bootflag)  	/* NOTREACHED - relocate_code() does not return */  } +int __is_sata_supported(void) +{ +	/* For some boards, when sata disabled by the switch, and the +	 * driver still access the sata registers, the cpu will hangup. +	 * please define platform specific is_sata_supported() if your +	 * board have such issue.*/ +	return 1; +} +int is_sata_supported(void) __attribute__((weak, alias("__is_sata_supported"))); +  /************************************************************************   *   * This is the next part if the initialization sequence: we are now @@ -651,11 +661,11 @@ void board_init_r (gd_t *id, ulong dest_addr)  	bd_t *bd;  	int i;  	extern void malloc_bin_reloc (void); -#ifndef CFG_ENV_IS_NOWHERE +#ifndef CONFIG_ENV_IS_NOWHERE  	extern char * env_name_spec;  #endif -#ifndef CFG_NO_FLASH +#ifndef CONFIG_SYS_NO_FLASH  	ulong flash_size;  #endif @@ -668,7 +678,7 @@ void board_init_r (gd_t *id, ulong dest_addr)  	gd->reloc_off = 0;  	mem_malloc_end = dest_addr;  #else -	gd->reloc_off = dest_addr - CFG_MONITOR_BASE; +	gd->reloc_off = dest_addr - CONFIG_SYS_MONITOR_BASE;  #endif  #ifdef CONFIG_SERIAL_MULTI @@ -679,6 +689,11 @@ void board_init_r (gd_t *id, ulong dest_addr)  	WATCHDOG_RESET (); +	/* +	 * Setup trap handlers +	 */ +	trap_init (dest_addr); +  #if defined(CONFIG_BOARD_EARLY_INIT_R)  	board_early_init_r ();  #endif @@ -705,7 +720,7 @@ void board_init_r (gd_t *id, ulong dest_addr)  			addr = (ulong)(cmdtp->usage) + gd->reloc_off;  			cmdtp->usage = (char *)addr;  		} -#ifdef	CFG_LONGHELP +#ifdef	CONFIG_SYS_LONGHELP  		if (cmdtp->help) {  			addr = (ulong)(cmdtp->help) + gd->reloc_off;  			cmdtp->help = (char *)addr; @@ -713,7 +728,7 @@ void board_init_r (gd_t *id, ulong dest_addr)  #endif  	}  	/* there are some other pointer constants we must deal with */ -#ifndef CFG_ENV_IS_NOWHERE +#ifndef CONFIG_ENV_IS_NOWHERE  	env_name_spec += gd->reloc_off;  #endif @@ -734,7 +749,7 @@ void board_init_r (gd_t *id, ulong dest_addr)  	icache_enable ();	/* it's time to enable the instruction cache */  #endif -#if defined(CFG_INIT_RAM_LOCK) && defined(CONFIG_E500) +#if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500)  	unlock_ram_in_cache();	/* it's time to unlock D-cache in e500 */  #endif @@ -755,16 +770,11 @@ void board_init_r (gd_t *id, ulong dest_addr)  	asm ("sync ; isync"); -	/* -	 * Setup trap handlers -	 */ -	trap_init (dest_addr); - -#if !defined(CFG_NO_FLASH) +#if !defined(CONFIG_SYS_NO_FLASH)  	puts ("FLASH: ");  	if ((flash_size = flash_init ()) > 0) { -# ifdef CFG_FLASH_CHECKSUM +# ifdef CONFIG_SYS_FLASH_CHECKSUM  		print_size (flash_size, "");  		/*  		 * Compute and print flash CRC if flashchecksum is set to 'y' @@ -774,22 +784,22 @@ void board_init_r (gd_t *id, ulong dest_addr)  		s = getenv ("flashchecksum");  		if (s && (*s == 'y')) {  			printf ("  CRC: %08X", -				crc32 (0, (const unsigned char *) CFG_FLASH_BASE, flash_size) +				crc32 (0, (const unsigned char *) CONFIG_SYS_FLASH_BASE, flash_size)  			);  		}  		putc ('\n'); -# else	/* !CFG_FLASH_CHECKSUM */ +# else	/* !CONFIG_SYS_FLASH_CHECKSUM */  		print_size (flash_size, "\n"); -# endif /* CFG_FLASH_CHECKSUM */ +# endif /* CONFIG_SYS_FLASH_CHECKSUM */  	} else {  		puts (failed);  		hang ();  	} -	bd->bi_flashstart = CFG_FLASH_BASE;	/* update start of FLASH memory    */ +	bd->bi_flashstart = CONFIG_SYS_FLASH_BASE;	/* update start of FLASH memory    */  	bd->bi_flashsize = flash_size;	/* size of FLASH memory (final value) */ -#if defined(CFG_UPDATE_FLASH_SIZE) +#if defined(CONFIG_SYS_UPDATE_FLASH_SIZE)  	/* Make a update of the Memctrl. */  	update_flash_size (flash_size);  #endif @@ -798,17 +808,17 @@ void board_init_r (gd_t *id, ulong dest_addr)  # if defined(CONFIG_PCU_E) || defined(CONFIG_OXC) || defined(CONFIG_RMU)  	/* flash mapped at end of memory map */  	bd->bi_flashoffset = TEXT_BASE + flash_size; -# elif CFG_MONITOR_BASE == CFG_FLASH_BASE +# elif CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE  	bd->bi_flashoffset = monitor_flash_len;	/* reserved area for startup monitor  */  # else  	bd->bi_flashoffset = 0;  # endif -#else	/* CFG_NO_FLASH */ +#else	/* CONFIG_SYS_NO_FLASH */  	bd->bi_flashsize = 0;  	bd->bi_flashstart = 0;  	bd->bi_flashoffset = 0; -#endif /* !CFG_NO_FLASH */ +#endif /* !CONFIG_SYS_NO_FLASH */  	WATCHDOG_RESET (); @@ -822,7 +832,7 @@ void board_init_r (gd_t *id, ulong dest_addr)  	malloc_bin_reloc ();  #ifdef CONFIG_SPI -# if !defined(CFG_ENV_IS_IN_EEPROM) +# if !defined(CONFIG_ENV_IS_IN_EEPROM)  	spi_init_f ();  # endif  	spi_init_r (); @@ -845,7 +855,7 @@ void board_init_r (gd_t *id, ulong dest_addr)  	 * the environment is in EEPROM.  	 */ -#if defined(CFG_EXTBDINFO) +#if defined(CONFIG_SYS_EXTBDINFO)  #if defined(CONFIG_405GP) || defined(CONFIG_405EP)  #if defined(CONFIG_I2CFAST)  	/* @@ -867,13 +877,13 @@ void board_init_r (gd_t *id, ulong dest_addr)  	bd->bi_iic_fast[1] = 0;  #endif	/* CONFIG_I2CFAST */  #endif	/* CONFIG_405GP, CONFIG_405EP */ -#endif	/* CFG_EXTBDINFO */ +#endif	/* CONFIG_SYS_EXTBDINFO */  #if defined(CONFIG_SC3)  	sc3_read_eeprom();  #endif -#if defined (CFG_ID_EEPROM) || defined (CFG_I2C_MAC_OFFSET) +#if defined (CONFIG_ID_EEPROM) || defined (CONFIG_SYS_I2C_MAC_OFFSET)  	mac_read_from_eeprom();  #endif @@ -944,6 +954,36 @@ void board_init_r (gd_t *id, ulong dest_addr)  	}  #endif +#ifdef CONFIG_HAS_ETH4 +	/* handle 5th ethernet address */ +	s = getenv("eth4addr"); +#if defined(CONFIG_XPEDITE1K) || defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) +	if (s == NULL) +		board_get_enetaddr(bd->bi_enet4addr); +	else +#endif +	for (i = 0; i < 6; ++i) { +		bd->bi_enet4addr[i] = s ? simple_strtoul (s, &e, 16) : 0; +		if (s) +			s = (*e) ? e + 1 : e; +	} +#endif + +#ifdef CONFIG_HAS_ETH5 +	/* handle 6th ethernet address */ +	s = getenv("eth5addr"); +#if defined(CONFIG_XPEDITE1K) || defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) +	if (s == NULL) +		board_get_enetaddr(bd->bi_enet5addr); +	else +#endif +	for (i = 0; i < 6; ++i) { +		bd->bi_enet5addr[i] = s ? simple_strtoul (s, &e, 16) : 0; +		if (s) +			s = (*e) ? e + 1 : e; +	} +#endif +  #if defined(CONFIG_TQM8xxL) || defined(CONFIG_TQM8260) || \      defined(CONFIG_TQM8272) || \      defined(CONFIG_CCM) || defined(CONFIG_KUP4K) || \ @@ -1105,8 +1145,10 @@ void board_init_r (gd_t *id, ulong dest_addr)  #endif  #if defined(CONFIG_CMD_SATA) -	puts ("SATA:  "); -	sata_initialize (); +	if (is_sata_supported()) { +		puts("SATA:  "); +		sata_initialize(); +	}  #endif  #ifdef CONFIG_LAST_STAGE_INIT @@ -1245,7 +1287,7 @@ int mdm_init (void)  			serial_puts(init_str);  			serial_puts("\n");  			for(;;) { -				mdm_readline(console_buffer, CFG_CBSIZE); +				mdm_readline(console_buffer, CONFIG_SYS_CBSIZE);  				dbg("ini%d: [%s]", i, console_buffer);  				if ((strcmp(console_buffer, "OK") == 0) || @@ -1269,7 +1311,7 @@ int mdm_init (void)  	/* final stage - wait for connect */  	for(;i > 1;) { /* if 'i' > 1 - wait for connection  				  message from modem */ -		mdm_readline(console_buffer, CFG_CBSIZE); +		mdm_readline(console_buffer, CONFIG_SYS_CBSIZE);  		dbg("ini_f: [%s]", console_buffer);  		if (strncmp(console_buffer, "CONNECT", 7) == 0) {  			dbg("ini_f: connected"); @@ -1290,7 +1332,7 @@ int mdm_init (void)   */  #undef	XTRN_DECLARE_GLOBAL_DATA_PTR  #define XTRN_DECLARE_GLOBAL_DATA_PTR	/* empty = allocate here */ -DECLARE_GLOBAL_DATA_PTR = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET); +DECLARE_GLOBAL_DATA_PTR = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);  #endif  /* 0 */  /************************************************************************/ |