Commit 4923576b authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by David S. Miller

net: sh_eth: add value of ether_link pin in platform_data

The method of ETHER_LINK pin is board dependence.
This patch adding paramters are:
 - no_ether_link          : If set to 1, do not use ETHER_LINK
 - ether_link_active_low  : If set to 1, ETHER_LINK is active low.
Signed-off-by: default avatarYoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2db9517e
...@@ -6,6 +6,9 @@ enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN}; ...@@ -6,6 +6,9 @@ enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN};
struct sh_eth_plat_data { struct sh_eth_plat_data {
int phy; int phy;
int edmac_endian; int edmac_endian;
unsigned no_ether_link:1;
unsigned ether_link_active_low:1;
}; };
#endif #endif
...@@ -772,13 +772,15 @@ static void sh_eth_error(struct net_device *ndev, int intr_status) ...@@ -772,13 +772,15 @@ static void sh_eth_error(struct net_device *ndev, int intr_status)
mdp->stats.tx_carrier_errors++; mdp->stats.tx_carrier_errors++;
if (felic_stat & ECSR_LCHNG) { if (felic_stat & ECSR_LCHNG) {
/* Link Changed */ /* Link Changed */
if (mdp->cd->no_psr) { if (mdp->cd->no_psr || mdp->no_ether_link) {
if (mdp->link == PHY_DOWN) if (mdp->link == PHY_DOWN)
link_stat = 0; link_stat = 0;
else else
link_stat = PHY_ST_LINK; link_stat = PHY_ST_LINK;
} else { } else {
link_stat = (ctrl_inl(ioaddr + PSR)); link_stat = (ctrl_inl(ioaddr + PSR));
if (mdp->ether_link_active_low)
link_stat = ~link_stat;
} }
if (!(link_stat & PHY_ST_LINK)) { if (!(link_stat & PHY_ST_LINK)) {
/* Link Down : disable tx and rx */ /* Link Down : disable tx and rx */
...@@ -1410,6 +1412,8 @@ static int sh_eth_drv_probe(struct platform_device *pdev) ...@@ -1410,6 +1412,8 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
mdp->phy_id = pd->phy; mdp->phy_id = pd->phy;
/* EDMAC endian */ /* EDMAC endian */
mdp->edmac_endian = pd->edmac_endian; mdp->edmac_endian = pd->edmac_endian;
mdp->no_ether_link = pd->no_ether_link;
mdp->ether_link_active_low = pd->ether_link_active_low;
/* set cpu data */ /* set cpu data */
mdp->cd = &sh_eth_my_cpu_data; mdp->cd = &sh_eth_my_cpu_data;
......
...@@ -729,6 +729,9 @@ struct sh_eth_private { ...@@ -729,6 +729,9 @@ struct sh_eth_private {
char post_rx; /* POST receive */ char post_rx; /* POST receive */
char post_fw; /* POST forward */ char post_fw; /* POST forward */
struct net_device_stats tsu_stats; /* TSU forward status */ struct net_device_stats tsu_stats; /* TSU forward status */
unsigned no_ether_link:1;
unsigned ether_link_active_low:1;
}; };
static inline void sh_eth_soft_swap(char *src, int len) static inline void sh_eth_soft_swap(char *src, int len)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment