Messages in this thread Patch in this message | | | From | Rakesh Sankaranarayanan <> | Subject | [RFC PATCH net-next 02/11] net: dsa: microchip: lan937x: update SMI index | Date | Thu, 2 Feb 2023 18:29:21 +0530 |
| |
Current DSA driver register mdio interface for a port in the format of SMI-switch_index:port_number, switch_index is derived using variable ds->index. For a single switch ds->index will be always zero, and for cascaded switch, ds->index should be one. But it is found that ds->index is getting updated only after mdio_register stage. Update mdio_register to use variable directly from device tree using "dsa,member" identifier.
Signed-off-by: Rakesh Sankaranarayanan <rakesh.sankaranarayanan@microchip.com> --- drivers/net/dsa/microchip/ksz_common.c | 6 +++++- drivers/net/dsa/microchip/ksz_common.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 46becc0382d6..d2ec5acd7b17 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -1882,7 +1882,7 @@ static int ksz_mdio_register(struct ksz_device *dev) bus->read = ksz_sw_mdio_read; bus->write = ksz_sw_mdio_write; bus->name = "ksz slave smi"; - snprintf(bus->id, MII_BUS_ID_SIZE, "SMI-%d", ds->index); + snprintf(bus->id, MII_BUS_ID_SIZE, "SMI-%d", dev->smi_index); bus->parent = ds->dev; bus->phy_mask = ~ds->phys_mii_mask; @@ -3136,6 +3136,7 @@ struct ksz_device *ksz_switch_alloc(struct device *base, void *priv) { struct dsa_switch *ds; struct ksz_device *swdev; + u32 sw_idx[2]; ds = devm_kzalloc(base, sizeof(*ds), GFP_KERNEL); if (!ds) @@ -3155,6 +3156,9 @@ struct ksz_device *ksz_switch_alloc(struct device *base, void *priv) swdev->ds = ds; swdev->priv = priv; + of_property_read_variable_u32_array(base->of_node, "dsa,member", sw_idx, 2, 2); + swdev->smi_index = sw_idx[1]; + return swdev; } EXPORT_SYMBOL(ksz_switch_alloc); diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h index d2d5761d58e9..aab60f2587bf 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -147,6 +147,7 @@ struct ksz_device { u32 chip_id; u8 chip_rev; int cpu_port; /* port connected to CPU */ + u32 smi_index; int phy_port_cnt; phy_interface_t compat_interface; bool synclko_125; -- 2.34.1
| |