diff options
Diffstat (limited to 'board/mpc8568mds')
| -rw-r--r-- | board/mpc8568mds/bcsr.c | 7 | ||||
| -rw-r--r-- | board/mpc8568mds/bcsr.h | 1 | ||||
| -rw-r--r-- | board/mpc8568mds/init.S | 48 | ||||
| -rw-r--r-- | board/mpc8568mds/mpc8568mds.c | 121 | 
4 files changed, 142 insertions, 35 deletions
| diff --git a/board/mpc8568mds/bcsr.c b/board/mpc8568mds/bcsr.c index 2e2e8cd18..aae0f98e0 100644 --- a/board/mpc8568mds/bcsr.c +++ b/board/mpc8568mds/bcsr.c @@ -47,3 +47,10 @@ void disable_8568mds_flash_write()  	bcsr[9] &= ~(0x01);  } + +void enable_8568mds_qe_mdio() +{ +	u8 *bcsr = (u8 *)(CFG_BCSR); + +	bcsr[7] |= 0x01; +} diff --git a/board/mpc8568mds/bcsr.h b/board/mpc8568mds/bcsr.h index 8d4cb2f14..aefd9bf54 100644 --- a/board/mpc8568mds/bcsr.h +++ b/board/mpc8568mds/bcsr.h @@ -95,5 +95,6 @@  void enable_8568mds_duart(void);  void enable_8568mds_flash_write(void);  void disable_8568mds_flash_write(void); +void enable_8568mds_qe_mdio(void);  #endif	/* __BCSR_H_ */ diff --git a/board/mpc8568mds/init.S b/board/mpc8568mds/init.S index 0d879821e..972a7d429 100644 --- a/board/mpc8568mds/init.S +++ b/board/mpc8568mds/init.S @@ -143,54 +143,42 @@ tlb1_entry:  	.long TLB1_MAS3(E500_TLB_RPN(CFG_FLASH_BASE), 0,0,0,0,0,1,0,1,0,1)  	/* -	 * TLBe 2:	256M	Non-cacheable, guarded -	 * 0x80000000	256M	PCI1 MEM +	 * TLBe 2:	1G	Non-cacheable, guarded +	 * 0x80000000	512M	PCI1 MEM +	 * 0xa0000000 	512M	PCIe MEM  	 */  	.long TLB1_MAS0(1, 2, 0) -	.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M) +	.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_1G)  	.long TLB1_MAS2(E500_TLB_EPN(CFG_PCI1_MEM_BASE), 0,0,0,0,1,0,1,0)  	.long TLB1_MAS3(E500_TLB_RPN(CFG_PCI1_MEM_BASE), 0,0,0,0,0,1,0,1,0,1)  	/* -	 * TLBe 3:	256M	Non-cacheable, guarded -	 * 0xa0000000	256M	PCIe Mem -	 */ -	.long TLB1_MAS0(1, 3, 0) -	.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256M) -	.long TLB1_MAS2(E500_TLB_EPN(CFG_PEX_MEM_BASE), 0,0,0,0,1,0,1,0) -	.long TLB1_MAS3(E500_TLB_RPN(CFG_PEX_MEM_BASE), 0,0,0,0,0,1,0,1,0,1) - -	/* -	 * TLBe 4:	Reserved for future usage -	 */ - -	/* -	 * TLBe 5:	64M	Non-cacheable, guarded +	 * TLBe 3:	64M	Non-cacheable, guarded  	 * 0xe000_0000	1M	CCSRBAR  	 * 0xe200_0000	8M	PCI1 IO  	 * 0xe280_0000	8M	PCIe IO  	 */ -	.long TLB1_MAS0(1, 5, 0) +	.long TLB1_MAS0(1, 3, 0)  	.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)  	.long TLB1_MAS2(E500_TLB_EPN(CFG_CCSRBAR), 0,0,0,0,1,0,1,0)  	.long TLB1_MAS3(E500_TLB_RPN(CFG_CCSRBAR), 0,0,0,0,0,1,0,1,0,1)  	/* -	 * TLBe 6:	64M	Cacheable, non-guarded +	 * TLBe 4:	64M	Cacheable, non-guarded  	 * 0xf000_0000	64M	LBC SDRAM  	 */ -	.long TLB1_MAS0(1, 6, 0) +	.long TLB1_MAS0(1, 4, 0)  	.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_64M)  	.long TLB1_MAS2(E500_TLB_EPN(CFG_LBC_SDRAM_BASE), 0,0,0,0,0,0,0,0)  	.long TLB1_MAS3(E500_TLB_RPN(CFG_LBC_SDRAM_BASE), 0,0,0,0,0,1,0,1,0,1)  	/* -	 * TLBe 7:	256K	Non-cacheable, guarded +	 * TLBe 5:	256K	Non-cacheable, guarded  	 * 0xf8000000	32K BCSR  	 * 0xf8008000	32K PIB (CS4)  	 * 0xf8010000	32K PIB (CS5)  	 */ -	.long TLB1_MAS0(1, 7, 0) +	.long TLB1_MAS0(1, 5, 0)  	.long TLB1_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256K)  	.long TLB1_MAS2(E500_TLB_EPN(CFG_BCSR_BASE), 0,0,0,0,1,0,1,0)  	.long TLB1_MAS3(E500_TLB_RPN(CFG_BCSR_BASE), 0,0,0,0,0,1,0,1,0,1) @@ -202,12 +190,12 @@ tlb1_entry:   * LAW(Local Access Window) configuration:   *   *0)   0x0000_0000   0x7fff_ffff     DDR                     2G - *1)   0x8000_0000   0x9fff_ffff     PCI1 MEM                256MB - *2)   0xa000_0000   0xbfff_ffff     PCIe MEM                256MB - *5)   0xc000_0000   0xdfff_ffff     SRIO                    256MB + *1)   0x8000_0000   0x9fff_ffff     PCI1 MEM                512MB + *2)   0xa000_0000   0xbfff_ffff     PCIe MEM                512MB   *-)   0xe000_0000   0xe00f_ffff     CCSR                    1M   *3)   0xe200_0000   0xe27f_ffff     PCI1 I/O                8M - *4)   0xe280_0000   0xe2ff_ffff     PCIe I/0                8M + *4)   0xe280_0000   0xe2ff_ffff     PCIe I/O                8M + *5)   0xc000_0000   0xdfff_ffff     SRIO                    512MB   *6.a) 0xf000_0000   0xf3ff_ffff     SDRAM                   64MB   *6.b) 0xf800_0000   0xf800_7fff     BCSR                    32KB   *6.c) 0xf800_8000   0xf800_ffff     PIB (CS4)		     32KB @@ -226,20 +214,20 @@ tlb1_entry:  #define LAWAR0  ((LAWAR_TRGT_IF_DDR | (LAWAR_SIZE & LAWAR_SIZE_128M)) & ~LAWAR_EN)  #define LAWBAR1 ((CFG_PCI1_MEM_BASE>>12) & 0xfffff) -#define LAWAR1	(LAWAR_EN | LAWAR_TRGT_IF_PCI1 | (LAWAR_SIZE & LAWAR_SIZE_256M)) +#define LAWAR1	(LAWAR_EN | LAWAR_TRGT_IF_PCI1 | (LAWAR_SIZE & LAWAR_SIZE_512M))  #define LAWBAR2 ((CFG_PEX_MEM_BASE>>12) & 0xfffff) -#define LAWAR2	(LAWAR_EN | LAWAR_TRGT_IF_PEX | (LAWAR_SIZE & LAWAR_SIZE_256M)) +#define LAWAR2	(LAWAR_EN | LAWAR_TRGT_IF_PEX | (LAWAR_SIZE & LAWAR_SIZE_512M))  #define LAWBAR3 ((CFG_PCI1_IO_PHYS>>12) & 0xfffff)  #define LAWAR3	(LAWAR_EN | LAWAR_TRGT_IF_PCI1 | (LAWAR_SIZE & LAWAR_SIZE_8M))  #define LAWBAR4 ((CFG_PEX_IO_PHYS>>12) & 0xfffff) -#define LAWAR4  (LAWAR_EN | LAWAR_TRGT_IF_PEX | (LAWAR_SIZE & LAWAR_SIZE_16M)) +#define LAWAR4  (LAWAR_EN | LAWAR_TRGT_IF_PEX | (LAWAR_SIZE & LAWAR_SIZE_8M))  #define LAWBAR5 ((CFG_SRIO_MEM_BASE>>12) & 0xfffff) -#define LAWAR5	(LAWAR_EN | LAWAR_TRGT_IF_RIO | (LAWAR_SIZE & LAWAR_SIZE_256M)) +#define LAWAR5	(LAWAR_EN | LAWAR_TRGT_IF_RIO | (LAWAR_SIZE & LAWAR_SIZE_512M))  /* LBC window - maps 256M.  That's SDRAM, BCSR, PIBs, and Flash */  #define LAWBAR6 ((CFG_LBC_SDRAM_BASE>>12) & 0xfffff) diff --git a/board/mpc8568mds/mpc8568mds.c b/board/mpc8568mds/mpc8568mds.c index 9c7960d47..818ff138a 100644 --- a/board/mpc8568mds/mpc8568mds.c +++ b/board/mpc8568mds/mpc8568mds.c @@ -27,9 +27,66 @@  #include <asm/processor.h>  #include <asm/immap_85xx.h>  #include <spd.h> +#include <i2c.h> +#include <ioports.h>  #include "bcsr.h" +const qe_iop_conf_t qe_iop_conf_tab[] = { +	/* GETH1 */ +	{4, 10, 1, 0, 2}, /* TxD0 */ +	{4,  9, 1, 0, 2}, /* TxD1 */ +	{4,  8, 1, 0, 2}, /* TxD2 */ +	{4,  7, 1, 0, 2}, /* TxD3 */ +	{4, 23, 1, 0, 2}, /* TxD4 */ +	{4, 22, 1, 0, 2}, /* TxD5 */ +	{4, 21, 1, 0, 2}, /* TxD6 */ +	{4, 20, 1, 0, 2}, /* TxD7 */ +	{4, 15, 2, 0, 2}, /* RxD0 */ +	{4, 14, 2, 0, 2}, /* RxD1 */ +	{4, 13, 2, 0, 2}, /* RxD2 */ +	{4, 12, 2, 0, 2}, /* RxD3 */ +	{4, 29, 2, 0, 2}, /* RxD4 */ +	{4, 28, 2, 0, 2}, /* RxD5 */ +	{4, 27, 2, 0, 2}, /* RxD6 */ +	{4, 26, 2, 0, 2}, /* RxD7 */ +	{4, 11, 1, 0, 2}, /* TX_EN */ +	{4, 24, 1, 0, 2}, /* TX_ER */ +	{4, 16, 2, 0, 2}, /* RX_DV */ +	{4, 30, 2, 0, 2}, /* RX_ER */ +	{4, 17, 2, 0, 2}, /* RX_CLK */ +	{4, 19, 1, 0, 2}, /* GTX_CLK */ +	{1, 31, 2, 0, 3}, /* GTX125 */ + +	/* GETH2 */ +	{5, 10, 1, 0, 2}, /* TxD0 */ +	{5,  9, 1, 0, 2}, /* TxD1 */ +	{5,  8, 1, 0, 2}, /* TxD2 */ +	{5,  7, 1, 0, 2}, /* TxD3 */ +	{5, 23, 1, 0, 2}, /* TxD4 */ +	{5, 22, 1, 0, 2}, /* TxD5 */ +	{5, 21, 1, 0, 2}, /* TxD6 */ +	{5, 20, 1, 0, 2}, /* TxD7 */ +	{5, 15, 2, 0, 2}, /* RxD0 */ +	{5, 14, 2, 0, 2}, /* RxD1 */ +	{5, 13, 2, 0, 2}, /* RxD2 */ +	{5, 12, 2, 0, 2}, /* RxD3 */ +	{5, 29, 2, 0, 2}, /* RxD4 */ +	{5, 28, 2, 0, 2}, /* RxD5 */ +	{5, 27, 2, 0, 3}, /* RxD6 */ +	{5, 26, 2, 0, 2}, /* RxD7 */ +	{5, 11, 1, 0, 2}, /* TX_EN */ +	{5, 24, 1, 0, 2}, /* TX_ER */ +	{5, 16, 2, 0, 2}, /* RX_DV */ +	{5, 30, 2, 0, 2}, /* RX_ER */ +	{5, 17, 2, 0, 2}, /* RX_CLK */ +	{5, 19, 1, 0, 2}, /* GTX_CLK */ +	{1, 31, 2, 0, 3}, /* GTX125 */ +	{4,  6, 3, 0, 2}, /* MDIO */ +	{4,  5, 1, 0, 2}, /* MDC */ +	{0,  0, 0, 0, QE_IOP_TAB_END}, /* END of table */ +}; +  #if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)  extern void ddr_enable_ecc(unsigned int dram_size); @@ -49,6 +106,18 @@ int board_early_init_f (void)  	enable_8568mds_duart();  	enable_8568mds_flash_write(); +#if defined(CONFIG_QE) && !defined(CONFIG_eTSEC_MDIO_BUS) +	enable_8568mds_qe_mdio(); +#endif + +#ifdef CFG_I2C2_OFFSET +	/* Enable I2C2_SCL and I2C2_SDA */ +	volatile struct par_io *port_c; +	port_c = (struct par_io*)(CFG_IMMR + 0xe0140); +	port_c->cpdir2 |= 0x0f000000; +	port_c->cppar2 &= ~0x0f000000; +	port_c->cppar2 |= 0x0a000000; +#endif  	return 0;  } @@ -269,20 +338,62 @@ static struct pci_config_table pci_mpc8568mds_config_table[] = {  #endif  static struct pci_controller hose[] = { +	{  #ifndef CONFIG_PCI_PNP -	{ config_table: pci_mpc8568mds_config_table,}, -#endif -#ifdef CONFIG_MPC85XX_PCI2 -	{}, +	config_table: pci_mpc8568mds_config_table,  #endif +	}  };  #endif	/* CONFIG_PCI */ +/* + * pib_init() -- Initialize the PCA9555 IO expander on the PIB board + */ +void +pib_init(void) +{ +	u8 val8, orig_i2c_bus; +	/* +	 * Assign PIB PMC2/3 to PCI bus +	 */ + +	/*switch temporarily to I2C bus #2 */ +	orig_i2c_bus = i2c_get_bus_num(); +	i2c_set_bus_num(1); + +	val8 = 0x00; +	i2c_write(0x23, 0x6, 1, &val8, 1); +	i2c_write(0x23, 0x7, 1, &val8, 1); +	val8 = 0xff; +	i2c_write(0x23, 0x2, 1, &val8, 1); +	i2c_write(0x23, 0x3, 1, &val8, 1); + +	val8 = 0x00; +	i2c_write(0x26, 0x6, 1, &val8, 1); +	val8 = 0x34; +	i2c_write(0x26, 0x7, 1, &val8, 1); +	val8 = 0xf9; +	i2c_write(0x26, 0x2, 1, &val8, 1); +	val8 = 0xff; +	i2c_write(0x26, 0x3, 1, &val8, 1); + +	val8 = 0x00; +	i2c_write(0x27, 0x6, 1, &val8, 1); +	i2c_write(0x27, 0x7, 1, &val8, 1); +	val8 = 0xff; +	i2c_write(0x27, 0x2, 1, &val8, 1); +	val8 = 0xef; +	i2c_write(0x27, 0x3, 1, &val8, 1); + +	asm("eieio"); +} +  void  pci_init_board(void)  {  #ifdef CONFIG_PCI -	pci_mpc85xx_init(&hose); +	pib_init(); +	pci_mpc85xx_init(hose);  #endif  } |