summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2025-06-16 22:06:17 +0100
committerJakub Kicinski <kuba@kernel.org>2025-06-17 16:25:19 -0700
commit7d7525876b5a7fe8d3229e8e04e78b166e5e8d75 (patch)
treeb1ca0b6f00c6dbe32f4dd7e949af5cc9a736079b /drivers
parent01c559c8b99c0784e37e907a16cfb30cf2f357a8 (diff)
net: stmmac: visconti: re-arrange speed decode
Re-arrange the speed decode in visconti_eth_set_clk_tx_rate() to be more readable by first checking to see if we're using RGMII or RMII and then decoding the speed, rather than decoding the speed and then testing the interface mode. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/E1uRH21-004UyG-50@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
index 5e6ac82a89b9..ef86f9dce791 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c
@@ -57,30 +57,38 @@ static int visconti_eth_set_clk_tx_rate(void *bsp_priv, struct clk *clk_tx_i,
phy_interface_t interface, int speed)
{
struct visconti_eth *dwmac = bsp_priv;
- struct net_device *netdev = dev_get_drvdata(dwmac->dev);
unsigned int val, clk_sel_val = 0;
- switch (speed) {
- case SPEED_1000:
- if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RGMII)
+ if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RGMII) {
+ switch (speed) {
+ case SPEED_1000:
clk_sel_val = ETHER_CLK_SEL_FREQ_SEL_125M;
- break;
- case SPEED_100:
- if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RGMII)
+ break;
+
+ case SPEED_100:
clk_sel_val = ETHER_CLK_SEL_FREQ_SEL_25M;
- if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RMII)
- clk_sel_val = ETHER_CLK_SEL_DIV_SEL_2;
- break;
- case SPEED_10:
- if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RGMII)
+ break;
+
+ case SPEED_10:
clk_sel_val = ETHER_CLK_SEL_FREQ_SEL_2P5M;
- if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RMII)
+ break;
+
+ default:
+ return -EINVAL;
+ }
+ } else if (dwmac->phy_intf_sel == ETHER_CONFIG_INTF_RMII) {
+ switch (speed) {
+ case SPEED_100:
+ clk_sel_val = ETHER_CLK_SEL_DIV_SEL_2;
+ break;
+
+ case SPEED_10:
clk_sel_val = ETHER_CLK_SEL_DIV_SEL_20;
- break;
- default:
- /* No bit control */
- netdev_err(netdev, "Unsupported speed request (%d)", speed);
- return -EINVAL;
+ break;
+
+ default:
+ return -EINVAL;
+ }
}
/* Stop internal clock */