Adds two more ethernet interface to 83xx
Added as a convenience for other platforms that uses MPC8360 (has 8 UCC). Six eth interface is chosen because the platform I am using combines UCC1&2 and UCC3&4 as 1000 Eth and the other four UCCs as 10/100 Eth. Signed-off-by: Richard Retanubun <RichardRetanubun@RugggedCom.com> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
This commit is contained in:
parent
41410eee47
commit
c68a05feeb
3
README
3
README
|
@ -1095,8 +1095,11 @@ The following options need to be configured:
|
||||||
|
|
||||||
- Ethernet address:
|
- Ethernet address:
|
||||||
CONFIG_ETHADDR
|
CONFIG_ETHADDR
|
||||||
|
CONFIG_ETH1ADDR
|
||||||
CONFIG_ETH2ADDR
|
CONFIG_ETH2ADDR
|
||||||
CONFIG_ETH3ADDR
|
CONFIG_ETH3ADDR
|
||||||
|
CONFIG_ETH4ADDR
|
||||||
|
CONFIG_ETH5ADDR
|
||||||
|
|
||||||
Define a default value for Ethernet address to use
|
Define a default value for Ethernet address to use
|
||||||
for the respective Ethernet interface, in case this
|
for the respective Ethernet interface, in case this
|
||||||
|
|
|
@ -117,6 +117,20 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_HAS_ETH4)
|
||||||
|
puts ("\neth4addr =");
|
||||||
|
for (i=0; i<6; ++i) {
|
||||||
|
printf ("%c%02X", i ? ':' : ' ', bd->bi_enet4addr[i]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_HAS_ETH5)
|
||||||
|
puts ("\neth5addr =");
|
||||||
|
for (i=0; i<6; ++i) {
|
||||||
|
printf ("%c%02X", i ? ':' : ' ', bd->bi_enet5addr[i]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_HERMES
|
#ifdef CONFIG_HERMES
|
||||||
print_str ("ethspeed", strmhz(buf, bd->bi_ethspeed));
|
print_str ("ethspeed", strmhz(buf, bd->bi_ethspeed));
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -91,6 +91,12 @@ uchar default_environment[] = {
|
||||||
#ifdef CONFIG_ETH3ADDR
|
#ifdef CONFIG_ETH3ADDR
|
||||||
"eth3addr=" MK_STR(CONFIG_ETH3ADDR) "\0"
|
"eth3addr=" MK_STR(CONFIG_ETH3ADDR) "\0"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_ETH4ADDR
|
||||||
|
"eth4addr=" MK_STR(CONFIG_ETH4ADDR) "\0"
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ETH5ADDR
|
||||||
|
"eth5addr=" MK_STR(CONFIG_ETH5ADDR) "\0"
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_IPADDR
|
#ifdef CONFIG_IPADDR
|
||||||
"ipaddr=" MK_STR(CONFIG_IPADDR) "\0"
|
"ipaddr=" MK_STR(CONFIG_IPADDR) "\0"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -135,6 +135,12 @@ env_t environment __PPCENV__ = {
|
||||||
#ifdef CONFIG_ETH3ADDR
|
#ifdef CONFIG_ETH3ADDR
|
||||||
"eth3addr=" MK_STR(CONFIG_ETH3ADDR) "\0"
|
"eth3addr=" MK_STR(CONFIG_ETH3ADDR) "\0"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_ETH4ADDR
|
||||||
|
"eth4addr=" MK_STR(CONFIG_ETH4ADDR) "\0"
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ETH5ADDR
|
||||||
|
"eth5addr=" MK_STR(CONFIG_ETH5ADDR) "\0"
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_ETHPRIME
|
#ifdef CONFIG_ETHPRIME
|
||||||
"ethprime=" CONFIG_ETHPRIME "\0"
|
"ethprime=" CONFIG_ETHPRIME "\0"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -52,7 +52,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
||||||
fdt_fixup_crypto_node(blob, 0x0204);
|
fdt_fixup_crypto_node(blob, 0x0204);
|
||||||
|
|
||||||
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
|
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
|
||||||
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
|
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3) ||\
|
||||||
|
defined(CONFIG_HAS_ETH4) || defined(CONFIG_HAS_ETH5)
|
||||||
fdt_fixup_ethernet(blob);
|
fdt_fixup_ethernet(blob);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -123,8 +123,54 @@ static uec_info_t eth4_uec_info = {
|
||||||
.enet_interface = CFG_UEC4_INTERFACE_MODE,
|
.enet_interface = CFG_UEC4_INTERFACE_MODE,
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_UEC_ETH5
|
||||||
|
static uec_info_t eth5_uec_info = {
|
||||||
|
.uf_info = {
|
||||||
|
.ucc_num = CFG_UEC5_UCC_NUM,
|
||||||
|
.rx_clock = CFG_UEC5_RX_CLK,
|
||||||
|
.tx_clock = CFG_UEC5_TX_CLK,
|
||||||
|
.eth_type = CFG_UEC5_ETH_TYPE,
|
||||||
|
},
|
||||||
|
#if (CFG_UEC5_ETH_TYPE == FAST_ETH)
|
||||||
|
.num_threads_tx = UEC_NUM_OF_THREADS_1,
|
||||||
|
.num_threads_rx = UEC_NUM_OF_THREADS_1,
|
||||||
|
#else
|
||||||
|
.num_threads_tx = UEC_NUM_OF_THREADS_4,
|
||||||
|
.num_threads_rx = UEC_NUM_OF_THREADS_4,
|
||||||
|
#endif
|
||||||
|
.riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
|
||||||
|
.riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
|
||||||
|
.tx_bd_ring_len = 16,
|
||||||
|
.rx_bd_ring_len = 16,
|
||||||
|
.phy_address = CFG_UEC5_PHY_ADDR,
|
||||||
|
.enet_interface = CFG_UEC5_INTERFACE_MODE,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_UEC_ETH6
|
||||||
|
static uec_info_t eth6_uec_info = {
|
||||||
|
.uf_info = {
|
||||||
|
.ucc_num = CFG_UEC6_UCC_NUM,
|
||||||
|
.rx_clock = CFG_UEC6_RX_CLK,
|
||||||
|
.tx_clock = CFG_UEC6_TX_CLK,
|
||||||
|
.eth_type = CFG_UEC6_ETH_TYPE,
|
||||||
|
},
|
||||||
|
#if (CFG_UEC6_ETH_TYPE == FAST_ETH)
|
||||||
|
.num_threads_tx = UEC_NUM_OF_THREADS_1,
|
||||||
|
.num_threads_rx = UEC_NUM_OF_THREADS_1,
|
||||||
|
#else
|
||||||
|
.num_threads_tx = UEC_NUM_OF_THREADS_4,
|
||||||
|
.num_threads_rx = UEC_NUM_OF_THREADS_4,
|
||||||
|
#endif
|
||||||
|
.riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
|
||||||
|
.riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2,
|
||||||
|
.tx_bd_ring_len = 16,
|
||||||
|
.rx_bd_ring_len = 16,
|
||||||
|
.phy_address = CFG_UEC6_PHY_ADDR,
|
||||||
|
.enet_interface = CFG_UEC6_INTERFACE_MODE,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAXCONTROLLERS (4)
|
#define MAXCONTROLLERS (6)
|
||||||
|
|
||||||
static struct eth_device *devlist[MAXCONTROLLERS];
|
static struct eth_device *devlist[MAXCONTROLLERS];
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,12 @@ typedef struct bd_info {
|
||||||
#ifdef CONFIG_HAS_ETH3
|
#ifdef CONFIG_HAS_ETH3
|
||||||
unsigned char bi_enet3addr[6];
|
unsigned char bi_enet3addr[6];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_HAS_ETH4
|
||||||
|
unsigned char bi_enet4addr[6];
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_HAS_ETH5
|
||||||
|
unsigned char bi_enet5addr[6];
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || \
|
#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || \
|
||||||
defined(CONFIG_405EZ) || defined(CONFIG_440GX) || \
|
defined(CONFIG_405EZ) || defined(CONFIG_440GX) || \
|
||||||
|
|
|
@ -954,6 +954,36 @@ void board_init_r (gd_t *id, ulong dest_addr)
|
||||||
}
|
}
|
||||||
#endif
|
#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) || \
|
#if defined(CONFIG_TQM8xxL) || defined(CONFIG_TQM8260) || \
|
||||||
defined(CONFIG_TQM8272) || \
|
defined(CONFIG_TQM8272) || \
|
||||||
defined(CONFIG_CCM) || defined(CONFIG_KUP4K) || \
|
defined(CONFIG_CCM) || defined(CONFIG_KUP4K) || \
|
||||||
|
|
|
@ -180,6 +180,12 @@ int eth_initialize(bd_t *bis)
|
||||||
#if defined(CONFIG_UEC_ETH4)
|
#if defined(CONFIG_UEC_ETH4)
|
||||||
uec_initialize(3);
|
uec_initialize(3);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_UEC_ETH5)
|
||||||
|
uec_initialize(4);
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_UEC_ETH6)
|
||||||
|
uec_initialize(5);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(FEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
|
#if defined(FEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
|
||||||
fec_initialize(bis);
|
fec_initialize(bis);
|
||||||
|
|
|
@ -157,6 +157,12 @@ static char default_environment[] = {
|
||||||
#ifdef CONFIG_ETH3ADDR
|
#ifdef CONFIG_ETH3ADDR
|
||||||
"eth3addr=" MK_STR (CONFIG_ETH3ADDR) "\0"
|
"eth3addr=" MK_STR (CONFIG_ETH3ADDR) "\0"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_ETH4ADDR
|
||||||
|
"eth4addr=" MK_STR (CONFIG_ETH4ADDR) "\0"
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ETH5ADDR
|
||||||
|
"eth5addr=" MK_STR (CONFIG_ETH5ADDR) "\0"
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_ETHPRIME
|
#ifdef CONFIG_ETHPRIME
|
||||||
"ethprime=" CONFIG_ETHPRIME "\0"
|
"ethprime=" CONFIG_ETHPRIME "\0"
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue