Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: dwmac-imx: add imx93 clock input support in RMII mode

If the rmii_refclk_ext boolean is set, configure the ENET QOS TX_CLK pin
direction to input. Otherwise, it defaults to output.

That mirrors what is already happening for the imx8mp in the
imx8mp_set_intf_mode function.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Link: https://patch.msgid.link/20241227095923.4414-1-othacehe@gnu.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Mathieu Othacehe and committed by
Jakub Kicinski
94c16fd4 5df7ca0b

+11 -1
+11 -1
drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
··· 36 36 #define MX93_GPR_ENET_QOS_INTF_SEL_RMII (0x4 << 1) 37 37 #define MX93_GPR_ENET_QOS_INTF_SEL_RGMII (0x1 << 1) 38 38 #define MX93_GPR_ENET_QOS_CLK_GEN_EN (0x1 << 0) 39 + #define MX93_GPR_ENET_QOS_CLK_SEL_MASK BIT_MASK(0) 40 + #define MX93_GPR_CLK_SEL_OFFSET (4) 39 41 40 42 #define DMA_BUS_MODE 0x00001000 41 43 #define DMA_BUS_MODE_SFT_RESET (0x1 << 0) ··· 110 108 static int imx93_set_intf_mode(struct plat_stmmacenet_data *plat_dat) 111 109 { 112 110 struct imx_priv_data *dwmac = plat_dat->bsp_priv; 113 - int val; 111 + int val, ret; 114 112 115 113 switch (plat_dat->mac_interface) { 116 114 case PHY_INTERFACE_MODE_MII: 117 115 val = MX93_GPR_ENET_QOS_INTF_SEL_MII; 118 116 break; 119 117 case PHY_INTERFACE_MODE_RMII: 118 + if (dwmac->rmii_refclk_ext) { 119 + ret = regmap_clear_bits(dwmac->intf_regmap, 120 + dwmac->intf_reg_off + 121 + MX93_GPR_CLK_SEL_OFFSET, 122 + MX93_GPR_ENET_QOS_CLK_SEL_MASK); 123 + if (ret) 124 + return ret; 125 + } 120 126 val = MX93_GPR_ENET_QOS_INTF_SEL_RMII; 121 127 break; 122 128 case PHY_INTERFACE_MODE_RGMII: