mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-28 09:31:14 +00:00
net: mvpp2: only update the XLG configuration when needed
This patch improves the XLG configuration function, to only update the XLG configuration register when a change is needed. This helps not writing over and over the same XLG configuration each time phylink request the MAC to be configured. This mimics the GMAC configuration function. Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6b10bfc51c
commit
f17e70d258
1 changed files with 8 additions and 5 deletions
|
@ -4505,10 +4505,11 @@ static void mvpp2_mac_an_restart(struct net_device *dev)
|
||||||
static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
|
static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
|
||||||
const struct phylink_link_state *state)
|
const struct phylink_link_state *state)
|
||||||
{
|
{
|
||||||
u32 ctrl0, ctrl4;
|
u32 old_ctrl0, ctrl0;
|
||||||
|
u32 old_ctrl4, ctrl4;
|
||||||
|
|
||||||
ctrl0 = readl(port->base + MVPP22_XLG_CTRL0_REG);
|
old_ctrl0 = ctrl0 = readl(port->base + MVPP22_XLG_CTRL0_REG);
|
||||||
ctrl4 = readl(port->base + MVPP22_XLG_CTRL4_REG);
|
old_ctrl4 = ctrl4 = readl(port->base + MVPP22_XLG_CTRL4_REG);
|
||||||
|
|
||||||
if (state->pause & MLO_PAUSE_TX)
|
if (state->pause & MLO_PAUSE_TX)
|
||||||
ctrl0 |= MVPP22_XLG_CTRL0_TX_FLOW_CTRL_EN;
|
ctrl0 |= MVPP22_XLG_CTRL0_TX_FLOW_CTRL_EN;
|
||||||
|
@ -4524,8 +4525,10 @@ static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
|
||||||
ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC |
|
ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC |
|
||||||
MVPP22_XLG_CTRL4_EN_IDLE_CHECK;
|
MVPP22_XLG_CTRL4_EN_IDLE_CHECK;
|
||||||
|
|
||||||
writel(ctrl0, port->base + MVPP22_XLG_CTRL0_REG);
|
if (old_ctrl0 != ctrl0)
|
||||||
writel(ctrl4, port->base + MVPP22_XLG_CTRL4_REG);
|
writel(ctrl0, port->base + MVPP22_XLG_CTRL0_REG);
|
||||||
|
if (old_ctrl4 != ctrl4)
|
||||||
|
writel(ctrl4, port->base + MVPP22_XLG_CTRL4_REG);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mvpp2_gmac_config(struct mvpp2_port *port, unsigned int mode,
|
static void mvpp2_gmac_config(struct mvpp2_port *port, unsigned int mode,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue