[U-Boot] net, cpsw: disable gigabit support through plattform data
Heiko Schocher
hs at denx.de
Tue Jun 4 10:51:54 CEST 2013
add possibility to disable gigabit support through
plattform data. Current boards should not be affected
through this patch.
Signed-off-by: Heiko Schocher <hs at denx.de>
Cc: Cyril Chemparathy <cyril at ti.com>
Cc: Chandan Nath <chandan.nath at ti.com>
Cc: Satyanarayana, Sandhya <sandhya.satyanarayana at ti.com>
Cc: Ilya Yanok <ilya.yanok at cogentembedded.com>
Cc: Yegor Yefremov <yegorslists at googlemail.com>
Cc: Mugunthan V N <mugunthanvnm at ti.com>
Cc: Tom Rini <trini at ti.com>
Cc: Joe Hershberger <joe.hershberger at gmail.com>
---
board/phytec/pcm051/board.c | 1 +
board/ti/am335x/board.c | 1 +
drivers/net/cpsw.c | 14 ++++++++++++--
include/cpsw.h | 1 +
4 Dateien geändert, 15 Zeilen hinzugefügt(+), 2 Zeilen entfernt(-)
diff --git a/board/phytec/pcm051/board.c b/board/phytec/pcm051/board.c
index 43d7b6e..9ea50e1 100644
--- a/board/phytec/pcm051/board.c
+++ b/board/phytec/pcm051/board.c
@@ -213,6 +213,7 @@ static struct cpsw_platform_data cpsw_data = {
.hw_stats_reg_ofs = 0x900,
.mac_control = (1 << 5),
.control = cpsw_control,
+ .gigabit_en = 1,
.host_port_num = 0,
.version = CPSW_CTRL_VERSION_2,
};
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index b371376..e52b009 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -464,6 +464,7 @@ static struct cpsw_platform_data cpsw_data = {
.hw_stats_reg_ofs = 0x900,
.mac_control = (1 << 5),
.control = cpsw_control,
+ .gigabit_en = 1,
.host_port_num = 0,
.version = CPSW_CTRL_VERSION_2,
};
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index 379b679..10b8aeb 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -578,8 +578,15 @@ static void cpsw_slave_update_link(struct cpsw_slave *slave,
if (*link) { /* link up */
mac_control = priv->data.mac_control;
- if (phy->speed == 1000)
- mac_control |= GIGABITEN;
+ if (phy->speed == 1000) {
+ if (priv->data.gigabit_en) {
+ mac_control |= GIGABITEN;
+ } else {
+ /* Disable gigabit as it's non-functional */
+ mac_control &= ~GIGABITEN;
+ phy->speed = 100;
+ }
+ }
if (phy->duplex == DUPLEX_FULL)
mac_control |= FULLDUPLEXEN;
if (phy->speed == 100)
@@ -943,6 +950,9 @@ static int cpsw_phy_init(struct eth_device *dev, struct cpsw_slave *slave)
SUPPORTED_100baseT_Full |
SUPPORTED_1000baseT_Full);
+ if (!priv->data.gigabit_en)
+ supported &= ~SUPPORTED_1000baseT_Full;
+
phydev = phy_connect(priv->bus,
CONFIG_PHY_ADDR,
dev,
diff --git a/include/cpsw.h b/include/cpsw.h
index 296b0e5..fa217f4 100644
--- a/include/cpsw.h
+++ b/include/cpsw.h
@@ -41,6 +41,7 @@ struct cpsw_platform_data {
u32 hw_stats_reg_ofs; /* cpsw hw stats counters */
u32 mac_control;
struct cpsw_slave_data *slave_data;
+ u32 gigabit_en; /* gigabit capable AND enabled */
void (*control)(int enabled);
u32 host_port_num;
u8 version;
--
1.7.11.7
More information about the U-Boot
mailing list