From: richardretanubun <richardretanubun@ruggedcom.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] [83xx] Adds two more ethernet interface to 83xx
Date: Thu, 25 Sep 2008 17:44:50 -0400 [thread overview]
Message-ID: <48DC0652.5030409@ruggedcom.com> (raw)
In-Reply-To: <48DBF3B0.1090009@ruggedcom.com>
Added for convenience for other platforms that uses MPC8360 (has eight UCC).
Six eth interface is chosen because the platform I am using combines
UCC1&2 and UCC3&4 as two gigEth and the other four UCC as 10/100 Eth.
Signed-off-by: Richard Retanubun <RichardRetanubun@RugggedCom.com>
---
V2 of this patch adds CONFIG_ETH6ADDR to README and removes
#if defined(CONFIG_HAS_ETH0) from common/cmd_bdinfo.c
README | 3 ++
common/cmd_bdinfo.c | 14 +++++++++++++
common/env_common.c | 9 ++++++++
common/env_embedded.c | 9 ++++++++
cpu/mpc83xx/fdt.c | 3 +-
drivers/qe/uec.c | 48 +++++++++++++++++++++++++++++++++++++++++++++-
include/asm-ppc/u-boot.h | 6 +++++
lib_ppc/board.c | 30 ++++++++++++++++++++++++++++
net/eth.c | 6 +++++
tools/env/fw_env.c | 9 ++++++++
10 files changed, 135 insertions(+), 2 deletions(-)
diff --git a/README b/README
index ccd839c..d623037 100644
--- a/README
+++ b/README
@@ -1097,6 +1097,9 @@ The following options need to be configured:
CONFIG_ETHADDR
CONFIG_ETH2ADDR
CONFIG_ETH3ADDR
+ CONFIG_ETH4ADDR
+ CONFIG_ETH5ADDR
+ CONFIG_ETH6ADDR
Define a default value for Ethernet address to use
for the respective Ethernet interface, in case this
diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
index f4d9d40..5018930 100644
--- a/common/cmd_bdinfo.c
+++ b/common/cmd_bdinfo.c
@@ -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
diff --git a/common/env_common.c b/common/env_common.c
index 77f9944..d536137 100644
--- a/common/env_common.c
+++ b/common/env_common.c
@@ -91,6 +91,15 @@ 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_ETH6ADDR
+ "eth6addr=" MK_STR(CONFIG_ETH6ADDR) "\0"
+#endif
#ifdef CONFIG_IPADDR
"ipaddr=" MK_STR(CONFIG_IPADDR) "\0"
#endif
diff --git a/common/env_embedded.c b/common/env_embedded.c
index 77e5619..4848bf1 100644
--- a/common/env_embedded.c
+++ b/common/env_embedded.c
@@ -135,6 +135,15 @@ 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_ETH6ADDR
+ "eth6addr=" MK_STR(CONFIG_ETH6ADDR) "\0"
+#endif
#ifdef CONFIG_ETHPRIME
"ethprime=" CONFIG_ETHPRIME "\0"
#endif
diff --git a/cpu/mpc83xx/fdt.c b/cpu/mpc83xx/fdt.c
index 39bd9dc..3e3e1c8 100644
--- a/cpu/mpc83xx/fdt.c
+++ b/cpu/mpc83xx/fdt.c
@@ -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
diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
index 344c649..e1dec5e 100644
--- a/drivers/qe/uec.c
+++ b/drivers/qe/uec.c
@@ -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];
diff --git a/include/asm-ppc/u-boot.h b/include/asm-ppc/u-boot.h
index 54ac01d..7451905 100644
--- a/include/asm-ppc/u-boot.h
+++ b/include/asm-ppc/u-boot.h
@@ -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) || \
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index c02ac62..d440722 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -944,6 +944,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) || \
diff --git a/net/eth.c b/net/eth.c
index 432dd60..ccd871a 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -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);
diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index 46747d3..d41175f 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -157,6 +157,15 @@ 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_ETH6ADDR
+ "eth6addr=" MK_STR (CONFIG_ETH6ADDR) "\0"
+#endif
#ifdef CONFIG_ETHPRIME
"ethprime=" CONFIG_ETHPRIME "\0"
#endif
--
1.5.5.GIT
next prev parent reply other threads:[~2008-09-25 21:44 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-25 12:53 [U-Boot] [PATCH] [83xx] Adds two more ethernet interface to 83xx richardretanubun
2008-09-25 19:50 ` Kim Phillips
2008-09-25 20:25 ` richardretanubun
2008-09-25 20:45 ` Kim Phillips
2008-09-25 22:08 ` Wolfgang Denk
2008-09-25 21:44 ` richardretanubun [this message]
2008-09-25 22:24 ` [U-Boot] [PATCH v2] " Wolfgang Denk
2008-09-25 22:52 ` richardretanubun
2008-09-25 23:28 ` Wolfgang Denk
2008-09-29 12:43 ` richardretanubun
2008-09-29 13:07 ` Jerry Van Baren
2008-09-29 22:28 ` [U-Boot] [PATCH v3] " richardretanubun
2008-09-30 16:00 ` Kim Phillips
2008-09-30 15:58 ` Jerry Van Baren
2008-09-30 17:02 ` Ben Warren
2008-10-06 5:12 ` Ben Warren
2008-10-06 19:31 ` richardretanubun
2008-10-14 5:53 ` Ben Warren
2008-09-25 22:24 ` [U-Boot] [PATCH] " Wolfgang Denk
2008-09-25 20:42 ` Jerry Van Baren
2008-09-25 22:17 ` Wolfgang Denk
2008-09-26 3:44 ` Jerry Van Baren
2008-09-26 5:46 ` Wolfgang Denk
2008-09-26 7:21 ` Ben Warren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48DC0652.5030409@ruggedcom.com \
--to=richardretanubun@ruggedcom.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox