MLK-23173-01 net: phy: realtek: add support for RX delay enable on RTL8211F
Add RX delay enable support for RTL8211F PHY. Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com> Signed-off-by: Fugang Duan <fugang.duan@nxp.com>5.4-rM2-2.2.x-imx-squashed
parent
7fc02a74f2
commit
b610eb69f2
|
@ -28,6 +28,7 @@
|
|||
|
||||
#define RTL8211F_INSR 0x1d
|
||||
|
||||
#define RTL8211F_RX_DELAY BIT(3)
|
||||
#define RTL8211F_TX_DELAY BIT(8)
|
||||
#define RTL8211E_TX_DELAY BIT(1)
|
||||
#define RTL8211E_RX_DELAY BIT(2)
|
||||
|
@ -171,25 +172,41 @@ static int rtl8211c_config_init(struct phy_device *phydev)
|
|||
|
||||
static int rtl8211f_config_init(struct phy_device *phydev)
|
||||
{
|
||||
u16 val;
|
||||
u16 txdly = 0;
|
||||
u16 rxdly = 0;
|
||||
int ret;
|
||||
|
||||
/* enable TX-delay for rgmii-{id,txid}, and disable it for rgmii and
|
||||
* rgmii-rxid. The RX-delay can be enabled by the external RXDLY pin.
|
||||
*/
|
||||
switch (phydev->interface) {
|
||||
case PHY_INTERFACE_MODE_RGMII:
|
||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||
val = 0;
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||
rxdly = RTL8211F_RX_DELAY;
|
||||
txdly = RTL8211F_TX_DELAY;
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||
rxdly = RTL8211F_RX_DELAY;
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_RGMII_TXID:
|
||||
val = RTL8211F_TX_DELAY;
|
||||
txdly = RTL8211F_TX_DELAY;
|
||||
break;
|
||||
default: /* the rest of the modes imply leaving delay as is. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
return phy_modify_paged(phydev, 0xd08, 0x11, RTL8211F_TX_DELAY, val);
|
||||
ret = phy_modify_paged(phydev, 0xd08, 0x11, RTL8211F_TX_DELAY, txdly);
|
||||
if (ret < 0) {
|
||||
dev_err(&phydev->mdio.dev, "tx delay set failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = phy_modify_paged(phydev, 0xd08, 0x15, RTL8211F_RX_DELAY, rxdly);
|
||||
if (ret < 0) {
|
||||
dev_err(&phydev->mdio.dev, "rx delay set failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rtl8211e_config_init(struct phy_device *phydev)
|
||||
|
|
Loading…
Reference in New Issue