summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMugunthan V N <mugunthanvnm@ti.com>2014-05-22 14:37:10 +0530
committerTom Rini <trini@ti.com>2014-07-25 15:21:05 -0400
commit7a0227534dfc17c96bb02529fb69971d079a85f0 (patch)
tree227d8e6dbda89eec57ba97d1ffc227ada11f1267
parent23f23f23d509e8e873797884456070c8a47d72b2 (diff)
downloadu-boot-imx-7a0227534dfc17c96bb02529fb69971d079a85f0.zip
u-boot-imx-7a0227534dfc17c96bb02529fb69971d079a85f0.tar.gz
u-boot-imx-7a0227534dfc17c96bb02529fb69971d079a85f0.tar.bz2
drivers: net: cpsw: add support for using second port as ethernet
Add support for using the second slave port of cpsw to be used as primary ethernet. Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
-rw-r--r--drivers/net/cpsw.c8
-rw-r--r--include/cpsw.h1
2 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index bd5fba2..8ec5161 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -211,6 +211,8 @@ struct cpdma_chan {
#define chan_read(chan, fld) __raw_readl((chan)->fld)
#define chan_read_ptr(chan, fld) ((void *)__raw_readl((chan)->fld))
+#define for_active_slave(slave, priv) \
+ slave = (priv)->slaves + (priv)->data.active_slave; if (slave)
#define for_each_slave(slave, priv) \
for (slave = (priv)->slaves; slave != (priv)->slaves + \
(priv)->data.slaves; slave++)
@@ -609,7 +611,7 @@ static int cpsw_update_link(struct cpsw_priv *priv)
int link = 0;
struct cpsw_slave *slave;
- for_each_slave(slave, priv)
+ for_active_slave(slave, priv)
cpsw_slave_update_link(slave, priv, &link);
priv->mdio_link = readl(&mdio_regs->link);
return link;
@@ -785,7 +787,7 @@ static int cpsw_init(struct eth_device *dev, bd_t *bis)
ALE_SECURE);
cpsw_ale_add_mcast(priv, NetBcastAddr, 1 << priv->host_port);
- for_each_slave(slave, priv)
+ for_active_slave(slave, priv)
cpsw_slave_init(slave, priv);
cpsw_update_link(priv);
@@ -1013,7 +1015,7 @@ int cpsw_register(struct cpsw_platform_data *data)
cpsw_mdio_init(dev->name, data->mdio_base, data->mdio_div);
priv->bus = miiphy_get_dev_by_name(dev->name);
- for_each_slave(slave, priv)
+ for_active_slave(slave, priv)
cpsw_phy_init(dev, slave);
return 1;
diff --git a/include/cpsw.h b/include/cpsw.h
index a73843d..547b40c 100644
--- a/include/cpsw.h
+++ b/include/cpsw.h
@@ -44,6 +44,7 @@ struct cpsw_platform_data {
struct cpsw_slave_data *slave_data;
void (*control)(int enabled);
u32 host_port_num;
+ u32 active_slave;
u8 version;
};