mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 07:31:15 +00:00
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
10 changed files with 126 additions and 2 deletions
3
README
3
README
|
@ -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);
|
||||
|
|
6
tools/env/fw_env.c
vendored
6
tools/env/fw_env.c
vendored
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue