@@ -21,6 +21,7 @@
#include <linux/stmmac.h>
#include "stmmac_platform.h"
+#include "stmmac_plat_lib.h"
#define GPR_ENET_QOS_INTF_MODE_MASK GENMASK(21, 16)
#define GPR_ENET_QOS_INTF_SEL_MII (0x0 << 16)
@@ -186,7 +187,6 @@ static void imx_dwmac_fix_speed(void *priv, unsigned int speed, unsigned int mod
{
struct plat_stmmacenet_data *plat_dat;
struct imx_priv_data *dwmac = priv;
- unsigned long rate;
int err;
plat_dat = dwmac->plat_dat;
@@ -196,24 +196,13 @@ static void imx_dwmac_fix_speed(void *priv, unsigned int speed, unsigned int mod
(plat_dat->mac_interface == PHY_INTERFACE_MODE_MII))
return;
- switch (speed) {
- case SPEED_1000:
- rate = 125000000;
- break;
- case SPEED_100:
- rate = 25000000;
- break;
- case SPEED_10:
- rate = 2500000;
- break;
- default:
- dev_err(dwmac->dev, "invalid speed %u\n", speed);
- return;
- }
-
- err = clk_set_rate(dwmac->clk_tx, rate);
- if (err < 0)
- dev_err(dwmac->dev, "failed to set tx rate %lu\n", rate);
+ err = dwmac_set_tx_clk_gmii(dwmac->clk_tx, speed);
+ if (err == -ENOTSUPP)
+ dev_err(dwmac->dev, "invalid speed %dMbps\n", speed);
+ else if (err)
+ dev_err(dwmac->dev,
+ "failed to set tx rate for speed %dMbps: %pe\n",
+ speed, ERR_PTR(err));
}
static void imx93_dwmac_fix_speed(void *priv, unsigned int speed, unsigned int mode)
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> --- .../net/ethernet/stmicro/stmmac/dwmac-imx.c | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-)