[U-Boot-Users] [PATCH] Add support CONFIG_UEC_ETH3 in MPC83xx
Joakim Tjernlund
joakim.tjernlund at transmode.se
Thu Dec 6 16:48:20 CET 2007
>From 23bc0c555be82eda79425c4d0364834565aacc79 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
Date: Thu, 6 Dec 2007 16:43:40 +0100
Subject: [PATCH] Add support CONFIG_UEC_ETH3 in MPC83xx
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
---
cpu/mpc83xx/cpu.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
drivers/qe/uec.c | 23 ++++++++++
net/eth.c | 3 +
3 files changed, 141 insertions(+), 1 deletions(-)
diff --git a/cpu/mpc83xx/cpu.c b/cpu/mpc83xx/cpu.c
index e634f0a..b838381 100644
--- a/cpu/mpc83xx/cpu.c
+++ b/cpu/mpc83xx/cpu.c
@@ -485,6 +485,15 @@ static const struct {
"local-mac-address",
fdt_set_eth0
},
+#elif CFG_UEC1_UCC_NUM == 1 /* UCC2 */
+ { "/" OF_QE "/ucc at 3000",
+ "mac-address",
+ fdt_set_eth0
+ },
+ { "/" OF_QE "/ucc at 3000",
+ "local-mac-address",
+ fdt_set_eth0
+ },
#elif CFG_UEC1_UCC_NUM == 2 /* UCC3 */
{ "/" OF_QE "/ucc at 2200",
"mac-address",
@@ -494,10 +503,28 @@ static const struct {
"local-mac-address",
fdt_set_eth0
},
+#elif CFG_UEC1_UCC_NUM == 3 /* UCC4 */
+ { "/" OF_QE "/ucc at 3200",
+ "mac-address",
+ fdt_set_eth0
+ },
+ { "/" OF_QE "/ucc at 3200",
+ "local-mac-address",
+ fdt_set_eth0
+ },
#endif
#endif /* CONFIG_UEC_ETH1 */
#ifdef CONFIG_UEC_ETH2
-#if CFG_UEC2_UCC_NUM == 1 /* UCC2 */
+#if CFG_UEC2_UCC_NUM == 0 /* UCC1 */
+ { "/" OF_QE "/ucc at 2000",
+ "mac-address",
+ fdt_set_eth1
+ },
+ { "/" OF_QE "/ucc at 2000",
+ "local-mac-address",
+ fdt_set_eth1
+ },
+#elif CFG_UEC2_UCC_NUM == 1 /* UCC2 */
{ "/" OF_QE "/ucc at 3000",
"mac-address",
fdt_set_eth1
@@ -506,6 +533,15 @@ static const struct {
"local-mac-address",
fdt_set_eth1
},
+#elif CFG_UEC2_UCC_NUM == 2 /* UCC3 */
+ { "/" OF_QE "/ucc at 2200",
+ "mac-address",
+ fdt_set_eth1
+ },
+ { "/" OF_QE "/ucc at 2200",
+ "local-mac-address",
+ fdt_set_eth1
+ },
#elif CFG_UEC2_UCC_NUM == 3 /* UCC4 */
{ "/" OF_QE "/ucc at 3200",
"mac-address",
@@ -517,6 +553,84 @@ static const struct {
},
#endif
#endif /* CONFIG_UEC_ETH2 */
+#ifdef CONFIG_UEC_ETH3
+#if CFG_UEC3_UCC_NUM == 0 /* UCC1 */
+ { "/" OF_QE "/ucc at 2000",
+ "mac-address",
+ fdt_set_eth2
+ },
+ { "/" OF_QE "/ucc at 2000",
+ "local-mac-address",
+ fdt_set_eth2
+ },
+#elif CFG_UEC3_UCC_NUM == 1 /* UCC2 */
+ { "/" OF_QE "/ucc at 3000",
+ "mac-address",
+ fdt_set_eth2
+ },
+ { "/" OF_QE "/ucc at 3000",
+ "local-mac-address",
+ fdt_set_eth2
+ },
+#elif CFG_UEC3_UCC_NUM == 2 /* UCC3 */
+ { "/" OF_QE "/ucc at 2200",
+ "mac-address",
+ fdt_set_eth2
+ },
+ { "/" OF_QE "/ucc at 2200",
+ "local-mac-address",
+ fdt_set_eth2
+ },
+#elif CFG_UEC3_UCC_NUM == 3 /* UCC4 */
+ { "/" OF_QE "/ucc at 3200",
+ "mac-address",
+ fdt_set_eth2
+ },
+ { "/" OF_QE "/ucc at 3200",
+ "local-mac-address",
+ fdt_set_eth2
+ },
+#endif
+#endif /* CONFIG_UEC_ETH3 */
+#ifdef CONFIG_UEC_ETH4
+#if CFG_UEC4_UCC_NUM == 0 /* UCC1 */
+ { "/" OF_QE "/ucc at 2000",
+ "mac-address",
+ fdt_set_eth3
+ },
+ { "/" OF_QE "/ucc at 2000",
+ "local-mac-address",
+ fdt_set_eth3
+ },
+#elif CFG_UEC4_UCC_NUM == 1 /* UCC2 */
+ { "/" OF_QE "/ucc at 3000",
+ "mac-address",
+ fdt_set_eth3
+ },
+ { "/" OF_QE "/ucc at 3000",
+ "local-mac-address",
+ fdt_set_eth3
+ },
+#elif CFG_UEC4_UCC_NUM == 2 /* UCC3 */
+ { "/" OF_QE "/ucc at 2200",
+ "mac-address",
+ fdt_set_eth3
+ },
+ { "/" OF_QE "/ucc at 2200",
+ "local-mac-address",
+ fdt_set_eth3
+ },
+#elif CFG_UEC4_UCC_NUM == 3 /* UCC4 */
+ { "/" OF_QE "/ucc at 3200",
+ "mac-address",
+ fdt_set_eth3
+ },
+ { "/" OF_QE "/ucc at 3200",
+ "local-mac-address",
+ fdt_set_eth3
+ },
+#endif
+#endif /* CONFIG_UEC_ETH4 */
#endif /* CONFIG_QE */
};
diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c
index 5f48153..84ef85d 100644
--- a/drivers/qe/uec.c
+++ b/drivers/qe/uec.c
@@ -69,6 +69,25 @@ static uec_info_t eth2_uec_info = {
};
#endif
+#ifdef CONFIG_UEC_ETH3
+static uec_info_t eth3_uec_info = {
+ .uf_info = {
+ .ucc_num = CFG_UEC3_UCC_NUM,
+ .rx_clock = CFG_UEC3_RX_CLK,
+ .tx_clock = CFG_UEC3_TX_CLK,
+ .eth_type = CFG_UEC3_ETH_TYPE,
+ },
+ .num_threads_tx = UEC_NUM_OF_THREADS_4,
+ .num_threads_rx = UEC_NUM_OF_THREADS_4,
+ .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_UEC3_PHY_ADDR,
+ .enet_interface = CFG_UEC3_INTERFACE_MODE,
+};
+#endif
+
static int uec_mac_enable(uec_private_t *uec, comm_dir_e mode)
{
uec_t *uec_regs;
@@ -1237,6 +1256,10 @@ int uec_initialize(int index)
#ifdef CONFIG_UEC_ETH2
uec_info = ð2_uec_info;
#endif
+ } else if (index == 2) {
+#ifdef CONFIG_UEC_ETH3
+ uec_info = ð3_uec_info;
+#endif
} else {
printf("%s: index is illegal.\n", __FUNCTION__);
return -EINVAL;
diff --git a/net/eth.c b/net/eth.c
index 1b56a35..a230277 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -202,6 +202,9 @@ int eth_initialize(bd_t *bis)
#if defined(CONFIG_UEC_ETH2)
uec_initialize(1);
#endif
+#if defined(CONFIG_UEC_ETH3)
+ uec_initialize(2);
+#endif
#if defined(FEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
fec_initialize(bis);
--
1.5.3.6
More information about the U-Boot
mailing list