mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-09 07:51:31 +00:00
Add mechanisms for CPU and board-specific Ethernet initialization
This patch is the first step in cleaning up net/eth.c, by moving Ethernet initialization to CPU or board-specific code. Initial implementation is only on the Freescale TSEC controller, but others will be added soon. Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
This commit is contained in:
parent
914f58c576
commit
dd35479a50
4 changed files with 92 additions and 17 deletions
|
@ -358,3 +358,23 @@ int dma_xfer(void *dest, u32 count, void *src)
|
||||||
return ((int)dma_check());
|
return ((int)dma_check());
|
||||||
}
|
}
|
||||||
#endif /*CONFIG_DDR_ECC*/
|
#endif /*CONFIG_DDR_ECC*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_TSEC_ENET
|
||||||
|
/* Default initializations for TSEC controllers. To override,
|
||||||
|
* create a board-specific function called:
|
||||||
|
* int board_eth_init(bd_t *bis)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int tsec_initialize(bd_t * bis, int index, char *devname);
|
||||||
|
|
||||||
|
int cpu_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_TSEC1)
|
||||||
|
tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_TSEC2)
|
||||||
|
tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -353,3 +353,33 @@ void upmconfig (uint upm, uint * table, uint size)
|
||||||
}
|
}
|
||||||
out_be32(mxmr, loopval); /* OP_NORMAL */
|
out_be32(mxmr, loopval); /* OP_NORMAL */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_TSEC_ENET) || defined(CONFIGMPC85XX_FEC)
|
||||||
|
/* Default initializations for TSEC controllers. To override,
|
||||||
|
* create a board-specific function called:
|
||||||
|
* int board_eth_init(bd_t *bis)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int tsec_initialize(bd_t * bis, int index, char *devname);
|
||||||
|
|
||||||
|
int cpu_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_TSEC1)
|
||||||
|
tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_TSEC2)
|
||||||
|
tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_MPC85XX_FEC)
|
||||||
|
tsec_initialize(bis, 2, CONFIG_MPC85XX_FEC_NAME);
|
||||||
|
#else
|
||||||
|
#if defined(CONFIG_TSEC3)
|
||||||
|
tsec_initialize(bis, 2, CONFIG_TSEC3_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_TSEC4)
|
||||||
|
tsec_initialize(bis, 3, CONFIG_TSEC4_NAME);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -290,3 +290,30 @@ void mpc86xx_reginfo(void)
|
||||||
printf("\tBR7\t0x%08X\tOR7\t0x%08X \n", in_be32(&lbc->br7), in_be32(&lbc->or7));
|
printf("\tBR7\t0x%08X\tOR7\t0x%08X \n", in_be32(&lbc->br7), in_be32(&lbc->or7));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TSEC_ENET
|
||||||
|
/* Default initializations for TSEC controllers. To override,
|
||||||
|
* create a board-specific function called:
|
||||||
|
* int board_eth_init(bd_t *bis)
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int tsec_initialize(bd_t * bis, int index, char *devname);
|
||||||
|
|
||||||
|
int cpu_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_TSEC1)
|
||||||
|
tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_TSEC2)
|
||||||
|
tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_TSEC3)
|
||||||
|
tsec_initialize(bis, 2, CONFIG_TSEC3_NAME);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_TSEC4)
|
||||||
|
tsec_initialize(bis, 3, CONFIG_TSEC4_NAME);
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
32
net/eth.c
32
net/eth.c
|
@ -28,6 +28,17 @@
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)
|
#if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CPU and board-specific Ethernet initializations. Aliased function
|
||||||
|
* signals caller to move on
|
||||||
|
*/
|
||||||
|
static int __def_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int cpu_eth_init(bd_t *bis) __attribute((weak, alias("__def_eth_init")));
|
||||||
|
int board_eth_init(bd_t *bis) __attribute((weak, alias("__def_eth_init")));
|
||||||
|
|
||||||
#ifdef CFG_GT_6426x
|
#ifdef CFG_GT_6426x
|
||||||
extern int gt6426x_eth_initialize(bd_t *bis);
|
extern int gt6426x_eth_initialize(bd_t *bis);
|
||||||
#endif
|
#endif
|
||||||
|
@ -55,7 +66,6 @@ extern int scc_initialize(bd_t*);
|
||||||
extern int skge_initialize(bd_t*);
|
extern int skge_initialize(bd_t*);
|
||||||
extern int tsi108_eth_initialize(bd_t*);
|
extern int tsi108_eth_initialize(bd_t*);
|
||||||
extern int uli526x_initialize(bd_t *);
|
extern int uli526x_initialize(bd_t *);
|
||||||
extern int tsec_initialize(bd_t*, int, char *);
|
|
||||||
extern int npe_initialize(bd_t *);
|
extern int npe_initialize(bd_t *);
|
||||||
extern int uec_initialize(int);
|
extern int uec_initialize(int);
|
||||||
extern int bfin_EMAC_initialize(bd_t *);
|
extern int bfin_EMAC_initialize(bd_t *);
|
||||||
|
@ -165,6 +175,10 @@ int eth_initialize(bd_t *bis)
|
||||||
#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
|
#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
|
||||||
miiphy_init();
|
miiphy_init();
|
||||||
#endif
|
#endif
|
||||||
|
/* Try board-specific initialization first. If it fails or isn't
|
||||||
|
* present, try the cpu-specific initialization */
|
||||||
|
if (board_eth_init(bis) < 0)
|
||||||
|
cpu_eth_init(bis);
|
||||||
|
|
||||||
#if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750)
|
#if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750)
|
||||||
mv6436x_eth_initialize(bis);
|
mv6436x_eth_initialize(bis);
|
||||||
|
@ -196,22 +210,6 @@ int eth_initialize(bd_t *bis)
|
||||||
#if defined(CONFIG_SK98)
|
#if defined(CONFIG_SK98)
|
||||||
skge_initialize(bis);
|
skge_initialize(bis);
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_TSEC1)
|
|
||||||
tsec_initialize(bis, 0, CONFIG_TSEC1_NAME);
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_TSEC2)
|
|
||||||
tsec_initialize(bis, 1, CONFIG_TSEC2_NAME);
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_MPC85XX_FEC)
|
|
||||||
tsec_initialize(bis, 2, CONFIG_MPC85XX_FEC_NAME);
|
|
||||||
#else
|
|
||||||
# if defined(CONFIG_TSEC3)
|
|
||||||
tsec_initialize(bis, 2, CONFIG_TSEC3_NAME);
|
|
||||||
# endif
|
|
||||||
# if defined(CONFIG_TSEC4)
|
|
||||||
tsec_initialize(bis, 3, CONFIG_TSEC4_NAME);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_UEC_ETH1)
|
#if defined(CONFIG_UEC_ETH1)
|
||||||
uec_initialize(0);
|
uec_initialize(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue