Re: [PATCH v6 4/4] net: phy: realtek: add RTL8224 polarity support
From: Paolo Abeni <pabeni@redhat.com>
Date: 2026-02-11 11:36:54
Also in:
linux-devicetree, lkml
On 2/7/26 10:25 AM, Damien Dejean wrote:
quoted hunk ↗ jump to hunk
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)