drivers: net: cpsw: add support for using second port as ethernet
authorMugunthan V N <mugunthanvnm@ti.com>
Thu, 22 May 2014 09:07:10 +0000 (14:37 +0530)
committerTom Rini <trini@ti.com>
Fri, 25 Jul 2014 19:21:05 +0000 (15:21 -0400)
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>
drivers/net/cpsw.c
include/cpsw.h

index bd5fba21cee5651ef3c8d9bb830fab2f6475ef3d..8ec5161ec61fac4ab5edc26b4ddcaa2d177f288e 100644 (file)
@@ -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;
index a73843d2f75cd6f7d4743fd8d05af19423cf3704..547b40c57bbf342ea19ab059cebc7bbec5586ec1 100644 (file)
@@ -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;
 };