Skip to content

Commit e3fb8e8

Browse files
oleremkuba-moo
authored andcommitted
net: dsa: microchip: make sure drive strength configuration is not lost by soft reset
This driver has two separate reset sequence in different places: - gpio/HW reset on start of ksz_switch_register() - SW reset on start of ksz_setup() The second one will overwrite drive strength configuration made in the ksz_switch_register(). To fix it, move ksz_parse_drive_strength() from ksz_switch_register() to ksz_setup(). Fixes: d67d724 ("net: dsa: microchip: Add drive strength configuration") Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.kernel.org/r/20240304135612.814404-1-o.rempel@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent df47935 commit e3fb8e8

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

drivers/net/dsa/microchip/ksz_common.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2185,6 +2185,8 @@ static int ksz_pirq_setup(struct ksz_device *dev, u8 p)
21852185
return ksz_irq_common_setup(dev, pirq);
21862186
}
21872187

2188+
static int ksz_parse_drive_strength(struct ksz_device *dev);
2189+
21882190
static int ksz_setup(struct dsa_switch *ds)
21892191
{
21902192
struct ksz_device *dev = ds->priv;
@@ -2206,6 +2208,10 @@ static int ksz_setup(struct dsa_switch *ds)
22062208
return ret;
22072209
}
22082210

2211+
ret = ksz_parse_drive_strength(dev);
2212+
if (ret)
2213+
return ret;
2214+
22092215
/* set broadcast storm protection 10% rate */
22102216
regmap_update_bits(ksz_regmap_16(dev), regs[S_BROADCAST_CTRL],
22112217
BROADCAST_STORM_RATE,
@@ -4242,10 +4248,6 @@ int ksz_switch_register(struct ksz_device *dev)
42424248
for (port_num = 0; port_num < dev->info->port_cnt; ++port_num)
42434249
dev->ports[port_num].interface = PHY_INTERFACE_MODE_NA;
42444250
if (dev->dev->of_node) {
4245-
ret = ksz_parse_drive_strength(dev);
4246-
if (ret)
4247-
return ret;
4248-
42494251
ret = of_get_phy_mode(dev->dev->of_node, &interface);
42504252
if (ret == 0)
42514253
dev->compat_interface = interface;

0 commit comments

Comments
 (0)