Commit aa77b112 authored by Oleksij Rempel's avatar Oleksij Rempel Committed by Paolo Abeni

net: dsa: microchip: lan937x: Add error handling in lan937x_setup

Introduce error handling for lan937x_cfg function calls in lan937x_setup.
This change ensures that if any lan937x_cfg or ksz_rmw32 calls fails, the
function will return the appropriate error code.
Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
Acked-by: default avatarArun Ramadoss <arun.ramadoss@microchip.com>
Link: https://patch.msgid.link/20240703083820.3152100-1-o.rempel@pengutronix.deSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 47c13013
...@@ -374,26 +374,33 @@ int lan937x_setup(struct dsa_switch *ds) ...@@ -374,26 +374,33 @@ int lan937x_setup(struct dsa_switch *ds)
ds->vlan_filtering_is_global = true; ds->vlan_filtering_is_global = true;
/* Enable aggressive back off for half duplex & UNH mode */ /* Enable aggressive back off for half duplex & UNH mode */
lan937x_cfg(dev, REG_SW_MAC_CTRL_0, ret = lan937x_cfg(dev, REG_SW_MAC_CTRL_0, (SW_PAUSE_UNH_MODE |
(SW_PAUSE_UNH_MODE | SW_NEW_BACKOFF | SW_AGGR_BACKOFF), SW_NEW_BACKOFF |
true); SW_AGGR_BACKOFF), true);
if (ret < 0)
return ret;
/* If NO_EXC_COLLISION_DROP bit is set, the switch will not drop /* If NO_EXC_COLLISION_DROP bit is set, the switch will not drop
* packets when 16 or more collisions occur * packets when 16 or more collisions occur
*/ */
lan937x_cfg(dev, REG_SW_MAC_CTRL_1, NO_EXC_COLLISION_DROP, true); ret = lan937x_cfg(dev, REG_SW_MAC_CTRL_1, NO_EXC_COLLISION_DROP, true);
if (ret < 0)
return ret;
/* enable global MIB counter freeze function */ /* enable global MIB counter freeze function */
lan937x_cfg(dev, REG_SW_MAC_CTRL_6, SW_MIB_COUNTER_FREEZE, true); ret = lan937x_cfg(dev, REG_SW_MAC_CTRL_6, SW_MIB_COUNTER_FREEZE, true);
if (ret < 0)
return ret;
/* disable CLK125 & CLK25, 1: disable, 0: enable */ /* disable CLK125 & CLK25, 1: disable, 0: enable */
lan937x_cfg(dev, REG_SW_GLOBAL_OUTPUT_CTRL__1, ret = lan937x_cfg(dev, REG_SW_GLOBAL_OUTPUT_CTRL__1,
(SW_CLK125_ENB | SW_CLK25_ENB), true); (SW_CLK125_ENB | SW_CLK25_ENB), true);
if (ret < 0)
return ret;
/* Disable global VPHY support. Related to CPU interface only? */ /* Disable global VPHY support. Related to CPU interface only? */
ksz_rmw32(dev, REG_SW_CFG_STRAP_OVR, SW_VPHY_DISABLE, SW_VPHY_DISABLE); return ksz_rmw32(dev, REG_SW_CFG_STRAP_OVR, SW_VPHY_DISABLE,
SW_VPHY_DISABLE);
return 0;
} }
void lan937x_teardown(struct dsa_switch *ds) void lan937x_teardown(struct dsa_switch *ds)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment