diff options
| -rw-r--r-- | drivers/net/ibm_emac/ibm_emac_core.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c index 0de3bb906174..14e9b6315f20 100644 --- a/drivers/net/ibm_emac/ibm_emac_core.c +++ b/drivers/net/ibm_emac/ibm_emac_core.c | |||
| @@ -1875,6 +1875,9 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal) | |||
| 1875 | rc = -ENODEV; | 1875 | rc = -ENODEV; |
| 1876 | goto bail; | 1876 | goto bail; |
| 1877 | } | 1877 | } |
| 1878 | |||
| 1879 | /* Disable any PHY features not supported by the platform */ | ||
| 1880 | ep->phy_mii.def->features &= ~emacdata->phy_feat_exc; | ||
| 1878 | 1881 | ||
| 1879 | /* Setup initial PHY config & startup aneg */ | 1882 | /* Setup initial PHY config & startup aneg */ |
| 1880 | if (ep->phy_mii.def->ops->init) | 1883 | if (ep->phy_mii.def->ops->init) |
| @@ -1882,6 +1885,34 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal) | |||
| 1882 | netif_carrier_off(ndev); | 1885 | netif_carrier_off(ndev); |
| 1883 | if (ep->phy_mii.def->features & SUPPORTED_Autoneg) | 1886 | if (ep->phy_mii.def->features & SUPPORTED_Autoneg) |
| 1884 | ep->want_autoneg = 1; | 1887 | ep->want_autoneg = 1; |
| 1888 | else { | ||
| 1889 | ep->want_autoneg = 0; | ||
| 1890 | |||
| 1891 | /* Select highest supported speed/duplex */ | ||
| 1892 | if (ep->phy_mii.def->features & SUPPORTED_1000baseT_Full) { | ||
| 1893 | ep->phy_mii.speed = SPEED_1000; | ||
| 1894 | ep->phy_mii.duplex = DUPLEX_FULL; | ||
| 1895 | } else if (ep->phy_mii.def->features & | ||
| 1896 | SUPPORTED_1000baseT_Half) { | ||
| 1897 | ep->phy_mii.speed = SPEED_1000; | ||
| 1898 | ep->phy_mii.duplex = DUPLEX_HALF; | ||
| 1899 | } else if (ep->phy_mii.def->features & | ||
| 1900 | SUPPORTED_100baseT_Full) { | ||
| 1901 | ep->phy_mii.speed = SPEED_100; | ||
| 1902 | ep->phy_mii.duplex = DUPLEX_FULL; | ||
| 1903 | } else if (ep->phy_mii.def->features & | ||
| 1904 | SUPPORTED_100baseT_Half) { | ||
| 1905 | ep->phy_mii.speed = SPEED_100; | ||
| 1906 | ep->phy_mii.duplex = DUPLEX_HALF; | ||
| 1907 | } else if (ep->phy_mii.def->features & | ||
| 1908 | SUPPORTED_10baseT_Full) { | ||
| 1909 | ep->phy_mii.speed = SPEED_10; | ||
| 1910 | ep->phy_mii.duplex = DUPLEX_FULL; | ||
| 1911 | } else { | ||
| 1912 | ep->phy_mii.speed = SPEED_10; | ||
| 1913 | ep->phy_mii.duplex = DUPLEX_HALF; | ||
| 1914 | } | ||
| 1915 | } | ||
| 1885 | emac_start_link(ep, NULL); | 1916 | emac_start_link(ep, NULL); |
| 1886 | 1917 | ||
| 1887 | /* read the MAC Address */ | 1918 | /* read the MAC Address */ |
