Messages in this thread Patch in this message | | | Date | Sat, 23 Apr 2022 13:14:27 +0000 | From | Nathan Rossi <> | Subject | [PATCH 2/2] net: dsa: mv88e6xxx: Handle single-chip-address OF property |
| |
Handle the parsing and use of single chip addressing when the switch has the single-chip-address property defined. This allows for specifying the switch as using single chip addressing even when mdio address 0 is used by another device on the bus. This is a feature of some switches (e.g. the MV88E6341/MV88E6141) where the switch shares the bus only responding to the higher 16 addresses.
Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> --- drivers/net/dsa/mv88e6xxx/smi.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/dsa/mv88e6xxx/smi.c b/drivers/net/dsa/mv88e6xxx/smi.c index a990271b74..1eb31c1563 100644 --- a/drivers/net/dsa/mv88e6xxx/smi.c +++ b/drivers/net/dsa/mv88e6xxx/smi.c @@ -171,9 +171,12 @@ static const struct mv88e6xxx_bus_ops mv88e6xxx_smi_indirect_ops = { int mv88e6xxx_smi_init(struct mv88e6xxx_chip *chip, struct mii_bus *bus, int sw_addr) { + struct device_node *np = chip->dev->of_node; + if (chip->info->dual_chip) chip->smi_ops = &mv88e6xxx_smi_dual_direct_ops; - else if (sw_addr == 0) + else if (sw_addr == 0 || + (np && of_property_read_bool(np, "single-chip-address"))) chip->smi_ops = &mv88e6xxx_smi_direct_ops; else if (chip->info->multi_chip) chip->smi_ops = &mv88e6xxx_smi_indirect_ops; --- 2.35.2
| |