drivers: net: stmmac: reworking the PCS code.
The 3.xx and 4.xx synopsys gmacs have a very similar PCS embedded module and they share almost the same registers: for example: AN_Control, AN_Status, AN_Advertisement, AN_Link_Partner_Ability, AN_Expansion, TBI_Extended_Status. Just the RGMII/SMII Control/Status register differs. So This patch aims to reorganize and enhance the PCS support. It removes the existent support from the dwmac1000/dwmac4_core.c moving basic PCS functions inside a new file called: stmmac_pcs.h. The patch also reviews the available APIs to be better shared among different hardware and easily enhanced to support new features. Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
a5e4bd9913
commit
70523e639b
@@ -1714,8 +1714,8 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp)
|
||||
priv->hw->dma->rx_watchdog(priv->ioaddr, MAX_DMA_RIWT);
|
||||
}
|
||||
|
||||
if (priv->pcs && priv->hw->mac->ctrl_ane)
|
||||
priv->hw->mac->ctrl_ane(priv->hw, 0);
|
||||
if (priv->pcs && priv->hw->mac->pcs_ctrl_ane)
|
||||
priv->hw->mac->pcs_ctrl_ane(priv->hw, 1, 0, 0);
|
||||
|
||||
/* set TX ring length */
|
||||
if (priv->hw->dma->set_tx_ring_len)
|
||||
@@ -2809,6 +2809,14 @@ static irqreturn_t stmmac_interrupt(int irq, void *dev_id)
|
||||
priv->rx_tail_addr,
|
||||
STMMAC_CHAN0);
|
||||
}
|
||||
|
||||
/* PCS link status */
|
||||
if (priv->pcs) {
|
||||
if (priv->xstats.pcs_link)
|
||||
netif_carrier_on(dev);
|
||||
else
|
||||
netif_carrier_off(dev);
|
||||
}
|
||||
}
|
||||
|
||||
/* To handle DMA interrupts */
|
||||
|
||||
Reference in New Issue
Block a user