mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
net: dsa: mv88e6xxx: Fix 6095/6097/6185 ports in non-SERDES CMODE
The .serdes_get_lane op used the magic value 0xff to indicate a valid
SERDES lane and 0 signaled that a non-SERDES mode was set on the port.
Unfortunately, "0" is also a valid lane ID, so even when these ports
where configured to e.g. RGMII the driver would set them up as SERDES
ports.
- Replace 0xff with 0 to indicate a valid lane ID. The number is on
the one hand just as arbitrary, but it is at least the first valid one
and therefore less of a surprise.
- Follow the other .serdes_get_lane implementations and return -ENODEV
in the case where no SERDES is assigned to the port.
Fixes: f5be107c33 ("net: dsa: mv88e6xxx: Support serdes ports on MV88E6097/6095/6185")
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
152fa81109
commit
6066234aa3
|
|
@ -443,15 +443,15 @@ int mv88e6185_serdes_power(struct mv88e6xxx_chip *chip, int port, int lane,
|
|||
int mv88e6185_serdes_get_lane(struct mv88e6xxx_chip *chip, int port)
|
||||
{
|
||||
/* There are no configurable serdes lanes on this switch chip but we
|
||||
* need to return non-zero so that callers of
|
||||
* need to return a non-negative lane number so that callers of
|
||||
* mv88e6xxx_serdes_get_lane() know this is a serdes port.
|
||||
*/
|
||||
switch (chip->ports[port].cmode) {
|
||||
case MV88E6185_PORT_STS_CMODE_SERDES:
|
||||
case MV88E6185_PORT_STS_CMODE_1000BASE_X:
|
||||
return 0xff;
|
||||
default:
|
||||
return 0;
|
||||
default:
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user