summaryrefslogtreecommitdiff
path: root/cleopatre/linux-2.6.25.10-spc300/drivers/net
diff options
context:
space:
mode:
authorCeline Buret2010-09-13 17:59:35 +0200
committerCeline Buret2010-09-16 16:51:11 +0200
commit686dc354b576252b3735f95c52ae156a44067621 (patch)
treea7bdb91a2028cc201d9e1f5cc81c093e33b24aa1 /cleopatre/linux-2.6.25.10-spc300/drivers/net
parentb2f642acde12a4fd120d9726a1c8283316547bf7 (diff)
cleo/linux/drv/net: add mii io
Diffstat (limited to 'cleopatre/linux-2.6.25.10-spc300/drivers/net')
-rw-r--r--cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
index 8445aa88a8..e73a76b148 100644
--- a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
+++ b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
@@ -969,6 +969,8 @@ static int synop3504_ethtool_ioctl(struct net_device *dev, void *useraddr)
*/
static int synop3504_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
+ struct net_priv *priv = NULL;
+
//Check pointers
if(ifr == NULL)
return -1;
@@ -985,6 +987,16 @@ static int synop3504_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
break;
}
+ case SIOCGMIIPHY:
+ case SIOCGMIIREG:
+ case SIOCSMIIREG:
+ {
+ priv = dev->priv;
+ return generic_mii_ioctl (&priv->mii_if,
+ (struct mii_ioctl_data *) &ifr->ifr_data,
+ cmd, NULL);
+ break;
+ }
default:
return -EOPNOTSUPP;
}
@@ -1721,6 +1733,8 @@ static int synop3504_init(struct net_device *dev)
priv->mii_if.mdio_write = mdio_write;
priv->mii_if.phy_id = priv->phy_addr;
priv->mii_if.supports_gmii = priv->support_gmii;
+ priv->mii_if.phy_id_mask = 0x1F;
+ priv->mii_if.reg_num_mask = 0x1F;
//Initialise timer thread
init_timer(&priv->timer);