On Mon, Aug 21, 2023 at 3:04 AM Andrew Lunn <andrew@xxxxxxx> wrote: > > > +static int ls1b_dwmac_syscon_init(struct plat_stmmacenet_data *plat) > > +{ > > + struct ls1x_dwmac *dwmac = plat->bsp_priv; > > + struct regmap_field **regmap_fields = dwmac->regmap_fields; > > + > > + if (plat->bus_id) { > > + regmap_field_write(regmap_fields[GMAC1_USE_UART1], 1); > > + regmap_field_write(regmap_fields[GMAC1_USE_UART0], 1); > > + > > + switch (plat->phy_interface) { > > + case PHY_INTERFACE_MODE_RGMII: > > + regmap_field_write(regmap_fields[GMAC1_USE_TXCLK], 0); > > + regmap_field_write(regmap_fields[GMAC1_USE_PWM23], 0); > > + break; > > What about the other three RGMII modes? Plain rgmii is pretty unusual, > rgmii-id is the most used. > According to the LS1B datasheet, only RGMII and MII are supported. And I can confirm that MII mode does work for LS1B. > > + case PHY_INTERFACE_MODE_MII: > > + regmap_field_write(regmap_fields[GMAC1_USE_TXCLK], 1); > > + regmap_field_write(regmap_fields[GMAC1_USE_PWM23], 1); > > + break; > > + default: > > + dev_err(dwmac->dev, "Unsupported PHY mode %u\n", > > + plat->phy_interface); > > + return -EOPNOTSUPP; > > + } > > + > > + regmap_field_write(regmap_fields[GMAC1_SHUT], 0); > > + } else { > > + switch (plat->phy_interface) { > > + case PHY_INTERFACE_MODE_RGMII: > > + regmap_field_write(regmap_fields[GMAC0_USE_TXCLK], 0); > > + regmap_field_write(regmap_fields[GMAC0_USE_PWM01], 0); > > + break; > > same here. > > Andrew -- Best regards, Keguang Zhang