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>
 
 - 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
 
        }
 #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
 
 #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
 
 #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
 
                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
 
 
        .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];
 
 
 #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) || \
 
        }
 #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) || \
 
 #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);
 
 #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