diff options
Diffstat (limited to 'drivers/net/sh_eth.c')
-rw-r--r-- | drivers/net/sh_eth.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c index 4c4dcbf19026..f49d0800c1d1 100644 --- a/drivers/net/sh_eth.c +++ b/drivers/net/sh_eth.c | |||
@@ -772,13 +772,15 @@ static void sh_eth_error(struct net_device *ndev, int intr_status) | |||
772 | mdp->stats.tx_carrier_errors++; | 772 | mdp->stats.tx_carrier_errors++; |
773 | if (felic_stat & ECSR_LCHNG) { | 773 | if (felic_stat & ECSR_LCHNG) { |
774 | /* Link Changed */ | 774 | /* Link Changed */ |
775 | if (mdp->cd->no_psr) { | 775 | if (mdp->cd->no_psr || mdp->no_ether_link) { |
776 | if (mdp->link == PHY_DOWN) | 776 | if (mdp->link == PHY_DOWN) |
777 | link_stat = 0; | 777 | link_stat = 0; |
778 | else | 778 | else |
779 | link_stat = PHY_ST_LINK; | 779 | link_stat = PHY_ST_LINK; |
780 | } else { | 780 | } else { |
781 | link_stat = (ctrl_inl(ioaddr + PSR)); | 781 | link_stat = (ctrl_inl(ioaddr + PSR)); |
782 | if (mdp->ether_link_active_low) | ||
783 | link_stat = ~link_stat; | ||
782 | } | 784 | } |
783 | if (!(link_stat & PHY_ST_LINK)) { | 785 | if (!(link_stat & PHY_ST_LINK)) { |
784 | /* Link Down : disable tx and rx */ | 786 | /* Link Down : disable tx and rx */ |
@@ -1410,6 +1412,8 @@ static int sh_eth_drv_probe(struct platform_device *pdev) | |||
1410 | mdp->phy_id = pd->phy; | 1412 | mdp->phy_id = pd->phy; |
1411 | /* EDMAC endian */ | 1413 | /* EDMAC endian */ |
1412 | mdp->edmac_endian = pd->edmac_endian; | 1414 | mdp->edmac_endian = pd->edmac_endian; |
1415 | mdp->no_ether_link = pd->no_ether_link; | ||
1416 | mdp->ether_link_active_low = pd->ether_link_active_low; | ||
1413 | 1417 | ||
1414 | /* set cpu data */ | 1418 | /* set cpu data */ |
1415 | mdp->cd = &sh_eth_my_cpu_data; | 1419 | mdp->cd = &sh_eth_my_cpu_data; |