|
@@ -45,15 +45,17 @@ static void dwmac1000_core_init(struct mac_device_info *hw, int mtu)
|
|
if (hw->ps) {
|
|
if (hw->ps) {
|
|
value |= GMAC_CONTROL_TE;
|
|
value |= GMAC_CONTROL_TE;
|
|
|
|
|
|
- if (hw->ps == SPEED_1000) {
|
|
|
|
- value &= ~GMAC_CONTROL_PS;
|
|
|
|
- } else {
|
|
|
|
- value |= GMAC_CONTROL_PS;
|
|
|
|
-
|
|
|
|
- if (hw->ps == SPEED_10)
|
|
|
|
- value &= ~GMAC_CONTROL_FES;
|
|
|
|
- else
|
|
|
|
- value |= GMAC_CONTROL_FES;
|
|
|
|
|
|
+ value &= ~hw->link.speed_mask;
|
|
|
|
+ switch (hw->ps) {
|
|
|
|
+ case SPEED_1000:
|
|
|
|
+ value |= hw->link.speed1000;
|
|
|
|
+ break;
|
|
|
|
+ case SPEED_100:
|
|
|
|
+ value |= hw->link.speed100;
|
|
|
|
+ break;
|
|
|
|
+ case SPEED_10:
|
|
|
|
+ value |= hw->link.speed10;
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -531,9 +533,11 @@ struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr, int mcbins,
|
|
mac->mac = &dwmac1000_ops;
|
|
mac->mac = &dwmac1000_ops;
|
|
mac->dma = &dwmac1000_dma_ops;
|
|
mac->dma = &dwmac1000_dma_ops;
|
|
|
|
|
|
- mac->link.port = GMAC_CONTROL_PS;
|
|
|
|
mac->link.duplex = GMAC_CONTROL_DM;
|
|
mac->link.duplex = GMAC_CONTROL_DM;
|
|
- mac->link.speed = GMAC_CONTROL_FES;
|
|
|
|
|
|
+ mac->link.speed10 = GMAC_CONTROL_PS;
|
|
|
|
+ mac->link.speed100 = GMAC_CONTROL_PS | GMAC_CONTROL_FES;
|
|
|
|
+ mac->link.speed1000 = 0;
|
|
|
|
+ mac->link.speed_mask = GMAC_CONTROL_PS | GMAC_CONTROL_FES;
|
|
mac->mii.addr = GMAC_MII_ADDR;
|
|
mac->mii.addr = GMAC_MII_ADDR;
|
|
mac->mii.data = GMAC_MII_DATA;
|
|
mac->mii.data = GMAC_MII_DATA;
|
|
mac->mii.addr_shift = 11;
|
|
mac->mii.addr_shift = 11;
|