Commit c68a05fe authored by richardretanubun's avatar richardretanubun Committed by Wolfgang Denk

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: default avatarRichard Retanubun <RichardRetanubun@RugggedCom.com>
Signed-off-by: default avatarBen Warren <biggerbadderben@gmail.com>
parent 41410eee
......@@ -1095,8 +1095,11 @@ The following options need to be configured:
- Ethernet address:
CONFIG_ETHADDR
CONFIG_ETH1ADDR
CONFIG_ETH2ADDR
CONFIG_ETH3ADDR
CONFIG_ETH4ADDR
CONFIG_ETH5ADDR
Define a default value for Ethernet address to use
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
#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
print_str ("ethspeed", strmhz(buf, bd->bi_ethspeed));
#endif
......
......@@ -91,6 +91,12 @@ uchar default_environment[] = {
#ifdef CONFIG_ETH3ADDR
"eth3addr=" MK_STR(CONFIG_ETH3ADDR) "\0"
#endif
#ifdef CONFIG_ETH4ADDR
"eth4addr=" MK_STR(CONFIG_ETH4ADDR) "\0"
#endif
#ifdef CONFIG_ETH5ADDR
"eth5addr=" MK_STR(CONFIG_ETH5ADDR) "\0"
#endif
#ifdef CONFIG_IPADDR
"ipaddr=" MK_STR(CONFIG_IPADDR) "\0"
#endif
......
......@@ -135,6 +135,12 @@ env_t environment __PPCENV__ = {
#ifdef CONFIG_ETH3ADDR
"eth3addr=" MK_STR(CONFIG_ETH3ADDR) "\0"
#endif
#ifdef CONFIG_ETH4ADDR
"eth4addr=" MK_STR(CONFIG_ETH4ADDR) "\0"
#endif
#ifdef CONFIG_ETH5ADDR
"eth5addr=" MK_STR(CONFIG_ETH5ADDR) "\0"
#endif
#ifdef CONFIG_ETHPRIME
"ethprime=" CONFIG_ETHPRIME "\0"
#endif
......
......@@ -52,7 +52,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
fdt_fixup_crypto_node(blob, 0x0204);
#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);
#endif
......
......@@ -123,8 +123,54 @@ static uec_info_t eth4_uec_info = {
.enet_interface = CFG_UEC4_INTERFACE_MODE,
};
#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];
......
......@@ -111,6 +111,12 @@ typedef struct bd_info {
#ifdef CONFIG_HAS_ETH3
unsigned char bi_enet3addr[6];
#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) || \
defined(CONFIG_405EZ) || defined(CONFIG_440GX) || \
......
......@@ -954,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) || \
......
......@@ -180,6 +180,12 @@ int eth_initialize(bd_t *bis)
#if defined(CONFIG_UEC_ETH4)
uec_initialize(3);
#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)
fec_initialize(bis);
......
......@@ -157,6 +157,12 @@ static char default_environment[] = {
#ifdef CONFIG_ETH3ADDR
"eth3addr=" MK_STR (CONFIG_ETH3ADDR) "\0"
#endif
#ifdef CONFIG_ETH4ADDR
"eth4addr=" MK_STR (CONFIG_ETH4ADDR) "\0"
#endif
#ifdef CONFIG_ETH5ADDR
"eth5addr=" MK_STR (CONFIG_ETH5ADDR) "\0"
#endif
#ifdef CONFIG_ETHPRIME
"ethprime=" CONFIG_ETHPRIME "\0"
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment