diff options
Diffstat (limited to 'cpu')
| -rw-r--r-- | cpu/ppc4xx/405gp_pci.c | 4 | ||||
| -rw-r--r-- | cpu/ppc4xx/4xx_enet.c | 30 | ||||
| -rw-r--r-- | cpu/ppc4xx/cpu.c | 24 | ||||
| -rw-r--r-- | cpu/ppc4xx/cpu_init.c | 4 | ||||
| -rw-r--r-- | cpu/ppc4xx/sdram.c | 8 | ||||
| -rw-r--r-- | cpu/ppc4xx/start.S | 23 | 
6 files changed, 47 insertions, 46 deletions
diff --git a/cpu/ppc4xx/405gp_pci.c b/cpu/ppc4xx/405gp_pci.c index 03128d3f6..9b711e2eb 100644 --- a/cpu/ppc4xx/405gp_pci.c +++ b/cpu/ppc4xx/405gp_pci.c @@ -475,7 +475,11 @@ void pci_440_init (struct pci_controller *hose)  	pci_set_region(hose->regions + reg_num++,  		       CFG_PCI_TARGBASE,  		       CFG_PCI_MEMBASE, +#ifdef CFG_PCI_MEMSIZE +		       CFG_PCI_MEMSIZE, +#else  		       0x10000000, +#endif  		       PCI_REGION_MEM );  #if defined(CONFIG_PCI_SYS_MEM_BUS) && defined(CONFIG_PCI_SYS_MEM_PHYS) && \ diff --git a/cpu/ppc4xx/4xx_enet.c b/cpu/ppc4xx/4xx_enet.c index 81d49ffdf..427ea9462 100644 --- a/cpu/ppc4xx/4xx_enet.c +++ b/cpu/ppc4xx/4xx_enet.c @@ -264,10 +264,10 @@ int ppc_4xx_eth_setup_bridge(int devnum, bd_t * bis)  		bis->bi_phymode[3] = BI_PHYMODE_ZMII;  		break;  	case 2: -		zmiifer = ZMII_FER_SMII << ZMII_FER_V(0); -		zmiifer = ZMII_FER_SMII << ZMII_FER_V(1); -		zmiifer = ZMII_FER_SMII << ZMII_FER_V(2); -		zmiifer = ZMII_FER_SMII << ZMII_FER_V(3); +		zmiifer |= ZMII_FER_SMII << ZMII_FER_V(0); +		zmiifer |= ZMII_FER_SMII << ZMII_FER_V(1); +		zmiifer |= ZMII_FER_SMII << ZMII_FER_V(2); +		zmiifer |= ZMII_FER_SMII << ZMII_FER_V(3);  		bis->bi_phymode[0] = BI_PHYMODE_ZMII;  		bis->bi_phymode[1] = BI_PHYMODE_ZMII;  		bis->bi_phymode[2] = BI_PHYMODE_ZMII; @@ -470,8 +470,7 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)  #else  	if ((devnum == 0) || (devnum == 1)) {  		out32 (ZMII_FER, (ZMII_FER_SMII | ZMII_FER_MDI) << ZMII_FER_V (devnum)); -	} -	else { /* ((devnum == 2) || (devnum == 3)) */ +	} else { /* ((devnum == 2) || (devnum == 3)) */  		out32 (ZMII_FER, ZMII_FER_MDI << ZMII_FER_V (devnum));  		out32 (RGMII_FER, ((RGMII_FER_RGMII << RGMII_FER_V (2)) |  				   (RGMII_FER_RGMII << RGMII_FER_V (3)))); @@ -561,22 +560,7 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)  	 * otherwise, just check the speeds & feeds  	 */  	if (hw_p->first_init == 0) { -#if defined(CONFIG_88E1111_CLK_DELAY) -		/* -		 * On some boards (e.g. ALPR) the Marvell 88E1111 PHY needs -		 * the "RGMII transmit timing control" and "RGMII receive -		 * timing control" bits set, so that Gbit communication works -		 * without problems. -		 * Also set the "Transmitter disable" to 1 to enable the -		 * transmitter. -		 * After setting these bits a soft-reset must occur for this -		 * change to become active. -		 */ -		miiphy_read (dev->name, reg, 0x14, ®_short); -		reg_short |= (1 << 7) | (1 << 1) | (1 << 0); -		miiphy_write (dev->name, reg, 0x14, reg_short); -#endif -#if defined(CONFIG_M88E1111_PHY) /* test-only: merge with CONFIG_88E1111_CLK_DELAY !!! */ +#if defined(CONFIG_M88E1111_PHY)  		miiphy_write (dev->name, reg, 0x14, 0x0ce3);  		miiphy_write (dev->name, reg, 0x18, 0x4101);  		miiphy_write (dev->name, reg, 0x09, 0x0e00); @@ -808,7 +792,7 @@ static int ppc_4xx_eth_init (struct eth_device *dev, bd_t * bis)  		hw_p->rx[i].ctrl |= MAL_RX_CTRL_EMPTY | MAL_RX_CTRL_INTR;  		hw_p->rx_ready[i] = -1;  #if 0 -		printf ("RX_BUFF %d @ 0x%08lx\n", i, (ulong) rx[i].data_ptr); +		printf ("RX_BUFF %d @ 0x%08lx\n", i, (ulong) hw_p->rx[i].data_ptr);  #endif  	} diff --git a/cpu/ppc4xx/cpu.c b/cpu/ppc4xx/cpu.c index f4a7208c8..447383f8d 100644 --- a/cpu/ppc4xx/cpu.c +++ b/cpu/ppc4xx/cpu.c @@ -41,6 +41,10 @@  DECLARE_GLOBAL_DATA_PTR;  #endif +#if defined(CONFIG_BOARD_RESET) +void board_reset(void); +#endif +  #if defined(CONFIG_440)  #define FREQ_EBC		(sys_info.freqEPB)  #else @@ -422,23 +426,19 @@ int ppc440spe_revB() {  int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  { -#if defined(CONFIG_YOSEMITE) || defined(CONFIG_YELLOWSTONE) -	/*give reset to BCSR*/ -	*(unsigned char*)(CFG_BCSR_BASE | 0x06) = 0x09; - +#if defined(CONFIG_BOARD_RESET) +	board_reset(); +#else +#if defined(CFG_4xx_RESET_TYPE) +	mtspr(dbcr0, CFG_4xx_RESET_TYPE << 28);  #else -  	/*  	 * Initiate system reset in debug control register DBCR  	 */ -	__asm__ __volatile__("lis   3, 0x3000" ::: "r3"); -#if defined(CONFIG_440) -	__asm__ __volatile__("mtspr 0x134, 3"); -#else -	__asm__ __volatile__("mtspr 0x3f2, 3"); -#endif +	mtspr(dbcr0, 0x30000000); +#endif /* defined(CFG_4xx_RESET_TYPE) */ +#endif /* defined(CONFIG_BOARD_RESET) */ -#endif/* defined(CONFIG_YOSEMITE) || defined(CONFIG_YELLOWSTONE)*/  	return 1;  } diff --git a/cpu/ppc4xx/cpu_init.c b/cpu/ppc4xx/cpu_init.c index def46f15c..4b746b072 100644 --- a/cpu/ppc4xx/cpu_init.c +++ b/cpu/ppc4xx/cpu_init.c @@ -321,6 +321,10 @@ cpu_init_f (void)  #else  	val |= 0xf0000000;      /* generate system reset after 2.684 seconds */  #endif +#if defined(CFG_4xx_RESET_TYPE) +	val &= ~0x30000000;			/* clear WRC bits */ +	val |= CFG_4xx_RESET_TYPE << 28;	/* set board specific WRC type */ +#endif  	mtspr(tcr, val);  	val = mfspr(tsr); diff --git a/cpu/ppc4xx/sdram.c b/cpu/ppc4xx/sdram.c index faeea5c91..f06038e99 100644 --- a/cpu/ppc4xx/sdram.c +++ b/cpu/ppc4xx/sdram.c @@ -351,6 +351,14 @@ long int initdram(int board_type)  	int i;  	int tr1_bank1; +#if defined(CONFIG_440GX) || defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SP) +	/* +	 * Soft-reset SDRAM controller. +	 */ +	mtsdr(sdr_srst, SDR0_SRST_DMC); +	mtsdr(sdr_srst, 0x00000000); +#endif +  	for (i=0; i<N_MB0CF; i++) {  		/*  		 * Disable memory controller. diff --git a/cpu/ppc4xx/start.S b/cpu/ppc4xx/start.S index 3fe13daaf..8e000d309 100644 --- a/cpu/ppc4xx/start.S +++ b/cpu/ppc4xx/start.S @@ -204,6 +204,18 @@ _start_440:  	mfspr	r1,mcsr  	mtspr	mcsr,r1  #endif + +	/*----------------------------------------------------------------*/ +	/* CCR0 init */ +	/*----------------------------------------------------------------*/ +	/* Disable store gathering & broadcast, guarantee inst/data +	* cache block touch, force load/store alignment +	* (see errata 1.12: 440_33) +	*/ +	lis	r1,0x0030	/* store gathering & broadcast disable */ +	ori	r1,r1,0x6000	/* cache touch */ +	mtspr	ccr0,r1 +  	/*----------------------------------------------------------------*/  	/* Initialize debug */  	/*----------------------------------------------------------------*/ @@ -225,17 +237,6 @@ _start_440:  	mtspr	dbsr,r1		/* Clear all valid bits */  skip_debug_init: -	/*----------------------------------------------------------------*/ -	/* CCR0 init */ -	/*----------------------------------------------------------------*/ -	/* Disable store gathering & broadcast, guarantee inst/data -	* cache block touch, force load/store alignment -	* (see errata 1.12: 440_33) -	*/ -	lis	r1,0x0030	/* store gathering & broadcast disable */ -	ori	r1,r1,0x6000	/* cache touch */ -	mtspr	ccr0,r1 -  #if defined (CONFIG_440SPE)  	/*----------------------------------------------------------------+  	| Initialize Core Configuration Reg1.  |