Re: [PATCH v6 4/4] net: phy: realtek: add RTL8224 polarity support

From: Paolo Abeni

Date: Wed Feb 11 2026 - 06:37:11 EST


On 2/7/26 10:25 AM, Damien Dejean wrote:
> diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realtek/realtek_main.c
> index 4f0c1b72f7e0..d15d3b41e5d1 100644
> --- a/drivers/net/phy/realtek/realtek_main.c
> +++ b/drivers/net/phy/realtek/realtek_main.c
> @@ -172,6 +172,7 @@
> #define RTL8224_SRAM_RTCT_LEN(pair) (0x8028 + (pair) * 4)
>
> #define RTL8224_VND1_MDI_PAIR_SWAP 0xa90
> +#define RTL8224_VND1_MDI_POLARITY_SWAP 0xa94
>
> #define RTL8366RB_POWER_SAVE 0x15
> #define RTL8366RB_POWER_SAVE_ON BIT(12)
> @@ -1861,9 +1862,51 @@ static int rtl8224_mdi_config_order(struct phy_device *phydev)
> return ret;
> }
>
> +static int rtl8224_mdi_config_polarity(struct phy_device *phydev)
> +{
> + struct device_node *np = phydev->mdio.dev.of_node;
> + u8 offset = (phydev->mdio.addr & 3) * 4;
> + u32 polarity = 0;
> + int ret, val;
> +
> + ret = of_property_read_u32(np, "enet-phy-pair-polarity", &polarity);
> +
> + /* Do nothing if the property is not present */
> + if (ret == -EINVAL)
> + return 0;
> +
> + if (ret)
> + return ret;
> +
> + if (polarity & ~0xf)
> + return -EINVAL;
> +
> + phy_lock_mdio_bus(phydev);
> + val = __phy_package_read_mmd(phydev, 0, MDIO_MMD_VEND1,
> + RTL8224_VND1_MDI_POLARITY_SWAP);
> + if (val < 0) {
> + ret = val;
> + goto exit;
> + }
> +
> + val &= ~(0xf << offset);
> + val |= polarity << offset;
> + ret = __phy_package_write_mmd(phydev, 0, MDIO_MMD_VEND1,
> + RTL8224_VND1_MDI_POLARITY_SWAP, val);
> +exit:
> + phy_unlock_mdio_bus(phydev);
> + return ret;
> +}
> +
> static int rtl8224_config_init(struct phy_device *phydev)
> {
> - return rtl8224_mdi_config_order(phydev);
> + int ret;
> +
> + ret = rtl8224_mdi_config_order(phydev);
> + if (ret)
> + return ret;
> +
> + return rtl8224_mdi_config_polarity(phydev);

This very close to what you implemented into patch 2/4. Likely you can
deduplicate the code a bit factoring out some common helper.

Side notes: you should include the target tree in the subj prefix -
'net-next' in this case, a per patch changelog for the introduced
changes WRT the previous revision and a cover letter.

Also note that net-next is now closed for the merge window; you will
have to wait unit ~23 Feb before reposting.

/P

> }
>
> static int rtl8224_probe(struct phy_device *phydev)