diff options
Diffstat (limited to 'drivers/net/dsa/mv88e6xxx/port.c')
-rw-r--r-- | drivers/net/dsa/mv88e6xxx/port.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c index 3b74ec043ef1..1ea78c1a48bb 100644 --- a/drivers/net/dsa/mv88e6xxx/port.c +++ b/drivers/net/dsa/mv88e6xxx/port.c @@ -64,6 +64,10 @@ int mv88e6185_port_set_pause(struct mv88e6xxx_chip *chip, int port, else reg &= ~MV88E6XXX_PORT_STS_MY_PAUSE; + if (reg & MV88E6XXX_PORT_MAC_CTL_FORCE_LINK && + reg & MV88E6XXX_PORT_MAC_CTL_LINK_UP) + dev_err(chip->dev, "p%d: %s with port up\n", port, __func__); + return mv88e6xxx_port_write(chip, port, MV88E6XXX_PORT_STS, reg); } @@ -106,6 +110,10 @@ static int mv88e6xxx_port_set_rgmii_delay(struct mv88e6xxx_chip *chip, int port, return 0; } + if (reg & MV88E6XXX_PORT_MAC_CTL_FORCE_LINK && + reg & MV88E6XXX_PORT_MAC_CTL_LINK_UP) + dev_err(chip->dev, "p%d: %s with port up\n", port, __func__); + err = mv88e6xxx_port_write(chip, port, MV88E6XXX_PORT_MAC_CTL, reg); if (err) return err; @@ -290,6 +298,10 @@ static int mv88e6xxx_port_set_speed_duplex(struct mv88e6xxx_chip *chip, } reg |= ctrl; + if (reg & MV88E6XXX_PORT_MAC_CTL_FORCE_LINK && + reg & MV88E6XXX_PORT_MAC_CTL_LINK_UP) + dev_err(chip->dev, "p%d: %s with port up\n", port, __func__); + err = mv88e6xxx_port_write(chip, port, MV88E6XXX_PORT_MAC_CTL, reg); if (err) return err; |