diff options
author | Mugunthan V N <mugunthanvnm@ti.com> | 2013-03-11 23:16:38 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-13 04:38:20 -0400 |
commit | 11f2c988382b880e602a005c26436043c5d2c274 (patch) | |
tree | 2c18692aae9f239b5748e5e973d0d71815e5286b | |
parent | ff5b8ef2ef3af0fd7e1cf6c8c1ed9ec5afbda422 (diff) | |
download | op-kernel-dev-11f2c988382b880e602a005c26436043c5d2c274.zip op-kernel-dev-11f2c988382b880e602a005c26436043c5d2c274.tar.gz |
drivers: net: ethernet: cpsw: implement get phy_id via ioctl
Implement get phy_id via ioctl SIOCGMIIPHY. In switch mode active phy_id
is returned and in dual EMAC mode slave's specific phy_id is returned.
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/ti/cpsw.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index d6cf698..8ff1d3d 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1157,14 +1157,26 @@ static int cpsw_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr) static int cpsw_ndo_ioctl(struct net_device *dev, struct ifreq *req, int cmd) { + struct cpsw_priv *priv = netdev_priv(dev); + struct mii_ioctl_data *data = if_mii(req); + int slave_no = cpsw_slave_index(priv); + if (!netif_running(dev)) return -EINVAL; + switch (cmd) { #ifdef CONFIG_TI_CPTS - if (cmd == SIOCSHWTSTAMP) + case SIOCSHWTSTAMP: return cpsw_hwtstamp_ioctl(dev, req); #endif - return -ENOTSUPP; + case SIOCGMIIPHY: + data->phy_id = priv->slaves[slave_no].phy->addr; + break; + default: + return -ENOTSUPP; + } + + return 0; } static void cpsw_ndo_tx_timeout(struct net_device *ndev) |