summaryrefslogtreecommitdiff
path: root/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c')
-rw-r--r--cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c21
1 files changed, 11 insertions, 10 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 c139e3db1a..f2dd1e42d9 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
@@ -115,6 +115,7 @@ struct net_priv
{
uint32_t gmac_addr;
uint32_t dma_addr;
+ uint32_t support_rgmii;
uint32_t support_gmii;
uint32_t support_rmii;
uint32_t phy_addr;
@@ -1352,7 +1353,7 @@ static int synop3504_mii_probe(struct net_device *dev)
pdata = priv->pdev->dev.platform_data;
phydev = priv->mii_bus->phy_map[pdata->phy_addr];
- if (!phydev)
+ if (!phydev)
{
printk (KERN_ERR "%s: no PHY found\n", dev->name);
return -1;
@@ -1360,16 +1361,13 @@ static int synop3504_mii_probe(struct net_device *dev)
// attach the mac to the phy
if (pdata && pdata->support_gmii)
- {
phydev = phy_connect(dev, phydev->dev.bus_id, &synop3504_handle_link_change, 0, PHY_INTERFACE_MODE_GMII);
- }
+ else if (pdata && pdata->support_rgmii)
+ phydev = phy_connect(dev, phydev->dev.bus_id, &synop3504_handle_link_change, 0, PHY_INTERFACE_MODE_RGMII);
+ else if (pdata && pdata->support_rmii)
+ phydev = phy_connect(dev, phydev->dev.bus_id, &synop3504_handle_link_change, 0, PHY_INTERFACE_MODE_RMII);
else
- {
- if (pdata && pdata->support_rmii)
- phydev = phy_connect(dev, phydev->dev.bus_id, &synop3504_handle_link_change, 0, PHY_INTERFACE_MODE_RMII);
- else
- phydev = phy_connect(dev, phydev->dev.bus_id, &synop3504_handle_link_change, 0, PHY_INTERFACE_MODE_MII);
- }
+ phydev = phy_connect(dev, phydev->dev.bus_id, &synop3504_handle_link_change, 0, PHY_INTERFACE_MODE_MII);
if (IS_ERR(phydev))
{
@@ -1612,6 +1610,8 @@ static int synop3504_init(struct net_device *dev)
//Attach hardware layer addresses
if(priv->support_gmii)
SynopsysAttach(&priv->synop, priv->gmac_addr, priv->dma_addr, IS_GMII);
+ else if(priv->support_rgmii)
+ SynopsysAttach(&priv->synop, priv->gmac_addr, priv->dma_addr, IS_RGMII);
else if(priv->support_rmii)
SynopsysAttach(&priv->synop, priv->gmac_addr, priv->dma_addr, IS_RMII);
else
@@ -1653,7 +1653,7 @@ static int synop3504_init(struct net_device *dev)
priv->mii_if.mdio_read = mdio_read;
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.supports_gmii = priv->support_gmii | priv->support_rgmii;
priv->mii_if.phy_id_mask = 0x1F;
priv->mii_if.reg_num_mask = 0x1F;
@@ -1742,6 +1742,7 @@ static int __init synop3504_module_probe(struct platform_device *pdev)
dev->dev_addr[3] = pdata->mac_addr[3];
dev->dev_addr[4] = pdata->mac_addr[4];
dev->dev_addr[5] = pdata->mac_addr[5];
+ priv->support_rgmii = pdata->support_rgmii;
priv->support_gmii = pdata->support_gmii;
priv->support_rmii = pdata->support_rmii;
priv->phy_addr = pdata->phy_addr;