From nobody Tue Apr 7 06:22:56 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9FB4537BE96 for ; Sun, 15 Mar 2026 20:45:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607513; cv=none; b=sxSR61oG4iBPZWeewUPjJ5oldMi+e/n9zq7ZG9/t8vRz/2Bg2gUBXzpECiTZ7tvYmtU05gzYlbD1/P3q+3QWBVdbCnt58IpZoFCiqFDNz3mO+1yJJV7fzkdUiKRTKuudQmHT4cnsU+p8iU036S9R9vS2xvNlde3V6s0pU2EHVhQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607513; c=relaxed/simple; bh=i6Ts41fXLRb5swardCZUkTCJ3f2AD6uWbw7o0btGsW8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TcqKDDJZ5FhwIkOawIhMEk3SzlLYur7pkCyLd/p+zjtOMYna9IFUMXuU8NO1YQj0cD2yIrtAP9auG786BgFq6VD6VEg6tkNhBKXWwpHCrersPjYW30K8V6xVDfpoh7gL9drtDP3AaJR5w2HZueeoFXskBljUzlgwfDbdhxOM6Jc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Vy8WKNlL; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Vy8WKNlL" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-48557c8ad47so20379735e9.0 for ; Sun, 15 Mar 2026 13:45:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773607510; x=1774212310; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=98rPC4PTu7tCmBtkzzBMDz6PWd5qa76zGSirl2GTGes=; b=Vy8WKNlLTLqR/g/wB4o6G9mzeTCLHrEhf2/eM0BgizBIQZakxr6t5fTjyvtcidTIJf RuLbfvubzx4MjHZZ7bNviW+VIVR8PCasXMC+5uAOpyqMlrzWHR3qGvQD/gfn8FzzPZeY IQrGIRlksX3I9J0om5YWTWnQpPRdmbRxk/ZmZ1znK4juMIniTqvyHEtiu6XtFaRIRSKy GYsbAF+6dwWvCFStMU25lO2XA/D2MAH5SxIZArqFrTwyWU9w1zUK/P/nnbaNlIwvKzk8 lQZnZcT0AesXZL57WRFDBG/1X/3kfjiBduONRrI86JdLNWX/kPMQpsQj0fJ2+aI/95uD uUAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773607510; x=1774212310; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=98rPC4PTu7tCmBtkzzBMDz6PWd5qa76zGSirl2GTGes=; b=nXRroQY6cDgg5Y/W5zyql7loveHOockznCkwIyx/rEFbsvvsImA017WvZ+lhtlsD5W tLgzoZ1jezDVlaXpuG/zIDkmH5Z1T5REraxHg7ENU2h6h2VhFoLbcQuEtKY5YkC3QqFD M2q3Dqeb3/iVMuU5sAn+ZhXU0AWe9SX39bKgR64DGPx3V6F/dnTYDvys7VC6Feq8HO7/ k6QkhwOhSaDli48I1RpvABRKLUYp9O5w1GZNX3NR6pGguPP5vnPsAvI6XOqWRZ2FRqnv R+X5lHMFH2Q2WGTFPzTSRlc004vXVC2VLpfO4mAZx3frHfiIO+itcIFA1ZTEQtKz7YX2 n5hw== X-Forwarded-Encrypted: i=1; AJvYcCXHCvvc6Tr0UOSYLcHKC8iqnAfy6ZrfQnmDorEwqBt/0u2Hre7Bstxi4wkDNSnT5ezlmHK/7PplMHigHEQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzHBM6+ubAwS7zQuCj/fMfzfZF79CEYCZ2A3EfHRBflbOKb1UcB 7wp+/tdRlQyHQcEZWa645reTXnsrAFs4Rk0lTtqowhyTVWBB94P8ITHS X-Gm-Gg: ATEYQzzAccNBzi+Prqt35X19JLHfPoF36Vi0eqUbquWxYxqpw77qUNnK/M2rWkd20mg yie/VZk02nfhRcM/M3waDP+Tl15XdWtUKV66Sh/RiMYQOxHE4zvYcs2Q16y1g/h6eimCgBm9c59 4XnryA9jU7LQ2UBBUUjNMwVBQtpiNZBEDGWkMJBDVpWkz3++OGf09/ZiFVhgq3dHdulOGT24yuw hebQMkR1xTAvJCHWjVxwPg7oNs61pjYpfcg6zFrDkMeDRH3e/J4v48KqXABsnqwg9M6U3EGKA3s lDxlhu/qlj6zLVJRf8fER77YZhpCR/hvg82gb/iYBVc1r4l/AF2LKiTzbgPyuIJ5OQK5xDnMdf3 4aYc0RtTlZtOpNvCI2LpRjkr8RiEX94UiMCsx0TqLDle1VsYSA1b0IDx4rH1Nc12kjKPdYoUIYC VG+P5oQ8Xj/hYBja9eNeJCB+g= X-Received: by 2002:a05:600c:8b2c:b0:485:4bd1:4c7e with SMTP id 5b1f17b1804b1-485567148e8mr179710125e9.33.1773607509651; Sun, 15 Mar 2026 13:45:09 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e00:c662:37ff:fe09:93df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485563f8c23sm132043885e9.1.2026.03.15.13.45.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Mar 2026 13:45:08 -0700 (PDT) From: Damien Dejean To: andrew@lunn.ch, krzk+dt@kernel.org, robh@kernel.org, kuba@kernel.org, maxime.chevallier@bootlin.com, pabeni@redhat.com Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, edumazet@google.com, davem@davemloft.net, hkallweit1@gmail.com, Damien Dejean Subject: [PATCH net-next v8 1/4] dt-bindings: net: ethernet-phy: add property enet-phy-pair-order Date: Sun, 15 Mar 2026 21:44:51 +0100 Message-ID: <20260315204454.124544-2-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260315204454.124544-1-dam.dejean@gmail.com> References: <20260315204454.124544-1-dam.dejean@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add property enet-phy-pair-order to the device tree bindings to define the pair order of the PHY. To simplify PCB design some manufacturers allow to wire the pairs in a reverse order, and change the order in software. The property can be set to 0 to force the normal pair order (ABCD), or 1 to force the reverse pair order (DCBA). Signed-off-by: Damien Dejean Reviewed-by: Rob Herring (Arm) --- Documentation/devicetree/bindings/net/ethernet-phy.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Docu= mentation/devicetree/bindings/net/ethernet-phy.yaml index 58634fee9fc4..4a27547f7d7a 100644 --- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml +++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml @@ -126,6 +126,12 @@ properties: e.g. wrong bootstrap configuration caused by issues in PCB layout design. =20 + enet-phy-pair-order: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1] + description: + For normal (0) or reverse (1) order of the pairs (ABCD -> DCBA). + eee-broken-100tx: $ref: /schemas/types.yaml#/definitions/flag description: --=20 2.47.3 From nobody Tue Apr 7 06:22:56 2026 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4561637C0F5 for ; Sun, 15 Mar 2026 20:45:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607514; cv=none; b=QSUrSlv5Mr7ezpID2E8Gl1e6+/oRx/Fv/HWMLkdqufRUAQLntfemY325xjlD2J7nX+GD5YDm+hNzOR4lJKhMXhAVOVDJ2FGIQ3J2TeoNhOM468YSLEcsGTQPXvGpHi39x3gJXko8qqbPv0CE65Gn1drcmQl613ePaMCZucf1Vq4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607514; c=relaxed/simple; bh=i3rqLKdW4X981tq74BmlDms1zluf/0nTFeXIK2Gd290=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GVAaoaWNAVqBglhUuEVn4VgH4VBjDYhZnwB1oiCqpoMmtISo2xoyU8QDyzxPCYwkgTUM/zfxoB2DUZQB4dRH+wf4LTzLV7N+X6/P4Cq87F2UhQ3iviuC/UwyJ4zz7VRDRCKlTSuzCTbzHX6fk4fPlU9CcwSEy8VO4RCCEQ/WtDI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QRrh9DDT; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QRrh9DDT" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4852e09e23dso32493245e9.0 for ; Sun, 15 Mar 2026 13:45:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773607512; x=1774212312; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/kdtEx1zDJNFkhoUaR6eWj1/yENGBliRBLy50L54Rj8=; b=QRrh9DDTqfyJmGWKpw/+2V9Ah1M70JB2SDQoeBQ7J8vaKNvSORcl2G9AW7MjtiEmXk BPSxrc55Fg+jZuVVEa19Mqh27fr8xH8oz6cs0d7K60EH52a7dG7nts4aRTXi9d70nUVr 7FfLwFuoMp+OK8S+rsoKb/iziG+wpnZXU3cm2qpjkqzrEtNVkdpq1Diu99mBy9lIlmwV eKsapnXQybqTLlFhCogUDLDAMqwQTQPZdq+KpAPULePrPAFuw3Dljh6V5I2vuitdAGhO aJywBZhZqjfy7mG1oL5dGtey/M/P4Oan/5hOwzlpUwLs7vulqEENfoQl1Hl3oj6yiU2t sSgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773607512; x=1774212312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/kdtEx1zDJNFkhoUaR6eWj1/yENGBliRBLy50L54Rj8=; b=XccxZs2uTdV2fHv/lTNzb1DL86GOfrnOlX0KpUp17FdrLVf21pUSSYnpJV/SzGD89M qI/08+byR/sDjoFkZOrNcWK6l+GK5RCYxhDwXT5cgwy5H4PTNcjQsoegSMSWqC85ghR8 bLztoMu07DaefO3wJvR275NndXvnEGswRyee9rB29PqexarUrMxBS58/1//MDMPjGrXV kGFikmEwwZDZ9jOi85uwgqo0rmpuQkvMk+g0BDzN/d8VOlNSbYML1WEFRmKYFYFXLfqx XGsYEqBpvnU4uSYSkETKgDEmAaMUtT0wvnHjveP9DYXe0Fpk3Pbna/zxgy++sTnPLZYe o0NA== X-Forwarded-Encrypted: i=1; AJvYcCXJHvS94DgAqGyNTNyCiWR4hWu9yhA96CuYSCutWdlIj1IfKNfky54HyB2rOdH1VUpOlmaeQ1daUujlG7Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzkrYGlDDxuXknBPL57Xtqwt4l9TvORjx4Ognc6LRkU5r5i8mhy ucWdEhHCI4L0AEyMCjWFPDGhwpcGG68dwKcEfqGfNQRAJvhwAoCSjhCt X-Gm-Gg: ATEYQzxw8K/MK2XFhNwHV95yGtBxZteanUhKjJo6dlh2MTFfLm1aTQlDLDqT9HxlbR6 vuW3Py+ua3UFbewdMAGgMeqz7m5UoTEfCKS09JBjugdCAYJ/9SdP0rn6NNx1x8xAp2NIe6hUAUs 6MxWjFMDyTqOjKKsqh6z+xhbiZTj8YUFm88h3nGKa8xIegxbVXQabqYx9lc01kLJHGAWvSdda1X M0sxeVsQCy4yk7GvC3GrNarsVLBClcDZYTNvquOq4yiguYBO++aKEw1dlcPft//yWUmTwiTd0V4 tAukBzz5Hg1dMKBnHTRrDHN9gKGykvh9JPvbo3gOAckVVwkBf8NfS7uywU/nF/4C34wAyiv8AP8 7isAO+5ktblMWpmDTnY7nAWBAWwXBr9/M+Na8V8gJMnkQyfTpXzSmxZeCrr/zi5SI1XCUEshnkA qISXEYlQCRawsSaOPnBDI2yJA= X-Received: by 2002:a05:600c:4fc6:b0:485:3f1c:d8a1 with SMTP id 5b1f17b1804b1-485566d2004mr175424705e9.9.1773607511256; Sun, 15 Mar 2026 13:45:11 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e00:c662:37ff:fe09:93df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485563f8c23sm132043885e9.1.2026.03.15.13.45.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Mar 2026 13:45:10 -0700 (PDT) From: Damien Dejean To: andrew@lunn.ch, krzk+dt@kernel.org, robh@kernel.org, kuba@kernel.org, maxime.chevallier@bootlin.com, pabeni@redhat.com Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, edumazet@google.com, davem@davemloft.net, hkallweit1@gmail.com, Damien Dejean Subject: [PATCH net-next v8 2/4] net: phy: realtek: add RTL8224 pair order support Date: Sun, 15 Mar 2026 21:44:52 +0100 Message-ID: <20260315204454.124544-3-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260315204454.124544-1-dam.dejean@gmail.com> References: <20260315204454.124544-1-dam.dejean@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The RTL8224 has a register to configure a pair swap (from ABCD order to DCBA) providing PCB designers more flexbility when wiring the chip. The swap parameter has to be set correctly for each of the 4 ports before the chip can detect a link. After a reset, this register is (unfortunately) left in a random state, thus it has to be initialized. On most of the devices the bootloader does it once for all and we can rely on the value set, on some other it is not and the kernel has to do it. The MDI pair swap can be set in the device tree using the property enet-phy-pair-order. The property is set to 0 to keep the default order (ABCD), or 1 to reverse the pairs (DCBA). Signed-off-by: Damien Dejean --- drivers/net/phy/realtek/Kconfig | 1 + drivers/net/phy/realtek/realtek_main.c | 64 ++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/drivers/net/phy/realtek/Kconfig b/drivers/net/phy/realtek/Kcon= fig index b05c2a1e9024..a741b34d193e 100644 --- a/drivers/net/phy/realtek/Kconfig +++ b/drivers/net/phy/realtek/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config REALTEK_PHY tristate "Realtek PHYs" + select PHY_PACKAGE help Currently supports RTL821x/RTL822x and fast ethernet PHYs =20 diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index 530b4e26d16e..2feb085f5c9e 100644 --- a/drivers/net/phy/realtek/realtek_main.c +++ b/drivers/net/phy/realtek/realtek_main.c @@ -171,6 +171,8 @@ =20 #define RTL8224_SRAM_RTCT_LEN(pair) (0x8028 + (pair) * 4) =20 +#define RTL8224_VND1_MDI_PAIR_SWAP 0xa90 + #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) =20 @@ -1820,6 +1822,66 @@ static int rtl8224_cable_test_get_status(struct phy_= device *phydev, bool *finish return rtl8224_cable_test_report(phydev, finished); } =20 +static int rtl8224_package_modify_mmd(struct phy_device *phydev, int devad, + u32 regnum, u16 mask, u16 set) +{ + int val, ret; + + phy_lock_mdio_bus(phydev); + + val =3D __phy_package_read_mmd(phydev, 0, devad, regnum); + if (val < 0) { + ret =3D val; + goto exit; + } + + val &=3D ~mask; + val |=3D set; + + ret =3D __phy_package_write_mmd(phydev, 0, devad, regnum, val); + +exit: + phy_unlock_mdio_bus(phydev); + return ret; +} + +static int rtl8224_mdi_config_order(struct phy_device *phydev) +{ + struct device_node *np =3D phydev->mdio.dev.of_node; + u8 port_offset =3D phydev->mdio.addr & 3; + u32 order =3D 0; + int ret; + + ret =3D of_property_read_u32(np, "enet-phy-pair-order", &order); + + /* Do nothing in case the property is not present */ + if (ret =3D=3D -EINVAL) + return 0; + + if (ret) + return ret; + + if (order & ~1) + return -EINVAL; + + return rtl8224_package_modify_mmd(phydev, MDIO_MMD_VEND1, + RTL8224_VND1_MDI_PAIR_SWAP, + BIT(port_offset), + order ? BIT(port_offset) : 0); +} + +static int rtl8224_config_init(struct phy_device *phydev) +{ + return rtl8224_mdi_config_order(phydev); +} + +static int rtl8224_probe(struct phy_device *phydev) +{ + /* Chip exposes 4 ports, join all of them in the same package */ + return devm_phy_package_join(&phydev->mdio.dev, phydev, + phydev->mdio.addr & ~3, 0); +} + static bool rtlgen_supports_2_5gbps(struct phy_device *phydev) { int val; @@ -2395,6 +2457,8 @@ static struct phy_driver realtek_drvs[] =3D { PHY_ID_MATCH_EXACT(0x001ccad0), .name =3D "RTL8224 2.5Gbps PHY", .flags =3D PHY_POLL_CABLE_TEST, + .probe =3D rtl8224_probe, + .config_init =3D rtl8224_config_init, .get_features =3D rtl822x_c45_get_features, .config_aneg =3D rtl822x_c45_config_aneg, .read_status =3D rtl822x_c45_read_status, --=20 2.47.3 From nobody Tue Apr 7 06:22:56 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D9BD37C0F7 for ; Sun, 15 Mar 2026 20:45:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607515; cv=none; b=pV6Xi3RRwKoVh/pCYHvVnQdnkwpIC34NNaH+cteJq686orWQ48pyuCkC+CIP/qALwAfKnJSJZ3hS/VOUddl7Sf0YdfIn5xXGNET0LPIlnI2Yy3S4uHi5hDK88ueb9QERuEuo4hNBHy5ac7F4nedUiRj1M5ABiW35pW05KEXKtMA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607515; c=relaxed/simple; bh=NcV7Y8rF5EsCyaO+fQzMv4yYadXViOfLjUAI/+Np8mI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FeX9vB2EPDaQ59FNqEJtVKSaiTDUoGFLDP/6GSbm2RhetjJE0Q0trZkB6ucnvN1Ga4U1KPs1x4BySB/X70hf75Rtw163MIMhqCjR9MoOJvOhGKFdbHgJv9F8M9RD2/KrmbiR+JP0d9kY/Sr4eJb0cDmE+ci89EgFAquQkLcwgBU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iDoarNSG; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iDoarNSG" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4853e1ce427so44211275e9.3 for ; Sun, 15 Mar 2026 13:45:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773607513; x=1774212313; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IkgvDwmYQtcd0bE08ner2utHU4QPqUbSnWFPd8ItaAU=; b=iDoarNSGXpSFgEzhBGusuWrzrWIqxrSnhO+7rjuY/eQjRiNZ8ZS2GIz5ty/GWC06A3 4DbQS/NK1dte3KRptqlH2839P9J83HGQRGfNfMXI2E5nKawKGSuxfGdDYnBQJ+1fZulS NB3pXBIew9j9otzv/+6vk9POGwpQJPt/RQkJs9zzUOZFv8HBYrPHrgzSQJneSrhY4fQO DiSn3Dnc3PeTLTg9FZSQAZoT2uyKLcdkVxiM8ntqQ2AfK7mTf6q4iEVDn1jCJSNiDEJR h4nnmQr8A/IE/T1OhX1yDP+VSgl37mntTdu9IzSd5nahVtjZ2ecHFT18t08VkjIkFBt+ GomQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773607513; x=1774212313; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IkgvDwmYQtcd0bE08ner2utHU4QPqUbSnWFPd8ItaAU=; b=k0xyh7x3SbjTTYjET85ohMuFJUl2EyOUwtgV0GWxWGOU+ANbLdaqteP2j+7iWJjuU7 TBDrWri3wJtuWfqfDDOY9tn0ZRDR/ZS5RnFcw9crOMGIJS22zlWF1sJGxR70G/lxPk4I si/J3loXM05gEvUkG5mrsvsAaKVmMVifs4VGXa2VM5HY0a/A+6cbFtR5WtHD5GDJhqEh G3m5uRCFOhda0YBlzwNrJTFeCjwWmdzqJv9nAndLhHh5zskzBOSOYOn77TzTHFoA6cEQ R2FMu/rcg0Hul2S2gZviuraqw3ieLPw5Ai0gVNfTQ9u9jX8roM0MdXrQMxBOxWKQO9to M82A== X-Forwarded-Encrypted: i=1; AJvYcCWQEBTJ+zuh1HV81aM8WfmonXuEvtbAkMUg78Fy5Rhh917kmBqf5OgzH+yHAHfJ2kkdifmg/2sW9LGQ+uw=@vger.kernel.org X-Gm-Message-State: AOJu0YyJt3bhSnOF9J+plrBXo90BoqCfX0gH48mh9JBxVI7vDlVJ9Ed0 V2/VvVtFzdOIKgosWs7Y/LH8xT1G6aLHZvafN7QtC3Ts7z3XhyxyXhMy X-Gm-Gg: ATEYQzwY/e7YYUPZk0v2PYT9pTfr/Ee2CkvnvE6PZJA5BAzOIZka4VucfHyS2sUEMDI YeWyJNzYFIu2HyaKqks9i2CF3ByDFqVHR9CjvrQcyZi/y4AdGd6GoAT4gOxE8blM1wkMx1pzr6Q lYAhe9VVP45s5sfsqkElCU60flnCxQV6OkqJlcUlRXxS3IdNmn1kVNDaXMpiVE8m8S5sSxy1y8x uLHSbjTgUlfsraa4NnSeDrDIeJ7FYz9AoKPsNZR1+FFPtTsWJ8nQh2HIkj53/JH9zDSgBlHzbac RFHhzlvdzfLCIssc/ttdf9Jg/rrkTeAwoRSNnFAdZ+dXWYpdIxGtNpN0IC1P/DKCd+rWTzyHN6m 4Obf7B8uMwDBi16VjQr5m4RSbjlMoZTsJYhgp6Q2SC1+BL1K0INRSEAYWmIWLpPFHo1xRCefmut fFPVot45u/3yLqgju7V0R/q24= X-Received: by 2002:a05:600c:8a09:10b0:483:badb:618e with SMTP id 5b1f17b1804b1-485566d6e33mr124698135e9.8.1773607512923; Sun, 15 Mar 2026 13:45:12 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e00:c662:37ff:fe09:93df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485563f8c23sm132043885e9.1.2026.03.15.13.45.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Mar 2026 13:45:12 -0700 (PDT) From: Damien Dejean To: andrew@lunn.ch, krzk+dt@kernel.org, robh@kernel.org, kuba@kernel.org, maxime.chevallier@bootlin.com, pabeni@redhat.com Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, edumazet@google.com, davem@davemloft.net, hkallweit1@gmail.com, Damien Dejean Subject: [PATCH net-next v8 3/4] dt-bindings: net: ethernet-phy: add property enet-phy-pair-polarity Date: Sun, 15 Mar 2026 21:44:53 +0100 Message-ID: <20260315204454.124544-4-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260315204454.124544-1-dam.dejean@gmail.com> References: <20260315204454.124544-1-dam.dejean@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add the property enet-phy-pair-polarity to describe the polarity of the PHY pairs. To ease PCB designs some manufacturers allow to wire the pairs with a reverse polarity and provide a way to configure it. The property 'enet-phy-pair-polarity' sets the polarity of each pair. Bit 0 to 3 configure the polarity or pairs A to D, if set to 1 the polarity is reversed for this pair. Signed-off-by: Damien Dejean Reviewed-by: Rob Herring (Arm) --- Documentation/devicetree/bindings/net/ethernet-phy.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Docu= mentation/devicetree/bindings/net/ethernet-phy.yaml index 4a27547f7d7a..21a1a63506f0 100644 --- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml +++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml @@ -132,6 +132,14 @@ properties: description: For normal (0) or reverse (1) order of the pairs (ABCD -> DCBA). =20 + enet-phy-pair-polarity: + $ref: /schemas/types.yaml#/definitions/uint32 + maximum: 0xf + description: + A bitmap to describe pair polarity swap. Bit 0 to swap polarity of p= air A, + bit 1 to swap polarity of pair B, bit 2 to swap polarity of pair C a= nd bit + 3 to swap polarity of pair D. + eee-broken-100tx: $ref: /schemas/types.yaml#/definitions/flag description: --=20 2.47.3 From nobody Tue Apr 7 06:22:56 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D5F3E37C106 for ; Sun, 15 Mar 2026 20:45:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607518; cv=none; b=NaTTd1Lk4b1r/gO6p5hcNrT7KWAiA2IWBIQ0Dw2HrKJw9glDyJ139G0Iyk8YwMF7gzwesY3KHfm3RNw9gvp0bmBcj8TKax9rgLGqw6YBy2LEuP058/LC81HYA4PKV3HxSCIWBVsTucezJwDQaVno8biR/940E8fMR9ls+XUmSFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773607518; c=relaxed/simple; bh=rPpgtG8br7dbeLmqjLEppfzKOI+OoaBXSnHrSGxltFQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Vh4GwWYHW9zV2HkZxx+CksYSLJRpFrJb8hTQfCpQgU03n5J2WBzjk8BjXqKImqM1COzGdWSqNTHxa/Vq0kVUzzC9xuGp9tmfAxPunXPaokc2u6c0HaR6EWbBWbSPI7xV6foxJmtGxa7kw33vk5qafq3TF95hv3fa1Eg0d/AbNKU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Y4A4fwmL; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Y4A4fwmL" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso34501965e9.3 for ; Sun, 15 Mar 2026 13:45:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773607515; x=1774212315; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PahM13Z+gyHUBDfHr8IMBngyQQ9TTRxFfOobW8O16HE=; b=Y4A4fwmLolCuMzJIuWE8jtjayeiOP8tLQSVqAc4EimyiV5ZggfBfOhB+TSAUA6M2EC B5BMth8KQCsfuXSsj8O/qQIK2FCWxKhyD0obXjOXEpK+XywkSr4T6i8OCj8upkbEKIW/ SzEdRxsox61P9oFLUx7dSV4lElLJe2mEHnNjrfPuQQvMgXF9woxoUUsQXR4vLwzADDbm SrvCbYabYUpvfJe1gq3Ce3EyZP/dQOCYDYFc2WonqCcMjjIDes8F6ucJwHgeAuUQh8nF vMtlGYyVLROJnGC5iSclyNNwtU+KkFZXyunzRqdwfo8kzZi1S5nhRlYDBRoO+h5dJmLM gNeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773607515; x=1774212315; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PahM13Z+gyHUBDfHr8IMBngyQQ9TTRxFfOobW8O16HE=; b=surYG7GepinlcDaya8uIoeqUn5D6G0QsP4W1GiKgHFLj9uKDXvQxLAmuV/V+H0yQ0i //h48iSJVr5AeZsDfssoCxA5ovfgAoLCoZDEumzQp/qDEe7w47izgdzBr1+buxRCmhTj HtB63G4uAfuKe34KX5dUOBKTm1B5h6s5URjPIt4EthAlEaPvVBrxQd12ap6mv/rpmHaD oIfDV9YPq9YPzMlR8rktbP7bFrpFK3tmRtYxjgmfWnMhI7OXgL0Qu3e0QGR9qkKYRSdx y3A8QcmWuzC9iERVEoh2VVt8fqjtjLmraJwqKl49EfZptFsfyRAz3CAgplZhkHkIr+hx Jn6w== X-Forwarded-Encrypted: i=1; AJvYcCUGQVAZhynzt9FK9uAPA5V29gNwLJldIgA4bs/NK22ISeZtlBX/c4po7LRNh8XydrO25cCf3zm2kzns870=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0ZOwLW/zVF+nThQiPCxqlgLfY3ZhLx1JIfpYP3YS/NzdrgopC oySlstcGnWJqJVXtGmota9mtr19liVJumYS6PhohDC87635knc3Z6p6d X-Gm-Gg: ATEYQzziULJwoHdYaMjwKI+UiMHEyJiFtq18CrXAPWQlEhunaKly3yHVcuyCmTEnOt+ oSVKpMER9rHTh6t++t8s3oReUuxZE0p/mfQ1ewCmZen01EhpiiEHoY7YnJQh5s2Kx0xYrapPIdf W1Yvl8QNUO5eB+c41aMe1OzhqI0L4J+JJ/ZrPcnnV6xsN47LEpbEWGzp2r47V8OCBTBht6d8hmR bWbBMHn/XVi79Vj+Ta07lsKM1+QxoSsXlaoROnqCOMSA21+n5XQ0xsBMwRx9mB3ien5mNXgtIhp Uv6Hr6P6d9kWCoXbj0+Qn29/zS0NZ+FoQEshHIUoFNcdxfwCDlf1RCxwzDts+MVTWv+AQa4ZR7b NDngq9uG7ReHNKoLXo7fGzEu5/E3o2VjOTD2wockE2HYWJb87MdlOL6LYQkMXF/UTsWOMcM+kN0 IRsKZa/39QuD65ju9En0H+Pas0YqQlMxwAnA== X-Received: by 2002:a05:600c:8b46:b0:485:557d:9fe with SMTP id 5b1f17b1804b1-485566d6e3emr174688435e9.12.1773607515215; Sun, 15 Mar 2026 13:45:15 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e00:c662:37ff:fe09:93df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-485563f8c23sm132043885e9.1.2026.03.15.13.45.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 15 Mar 2026 13:45:14 -0700 (PDT) From: Damien Dejean To: andrew@lunn.ch, krzk+dt@kernel.org, robh@kernel.org, kuba@kernel.org, maxime.chevallier@bootlin.com, pabeni@redhat.com Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, edumazet@google.com, davem@davemloft.net, hkallweit1@gmail.com, Damien Dejean Subject: [PATCH net-next v8 4/4] net: phy: realtek: add RTL8224 polarity support Date: Sun, 15 Mar 2026 21:44:54 +0100 Message-ID: <20260315204454.124544-5-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260315204454.124544-1-dam.dejean@gmail.com> References: <20260315204454.124544-1-dam.dejean@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The RTL8224 has a register to configure the polarity of every pair of each port. It provides device designers more flexbility when wiring the chip. Unfortunately, the register is left in an unknown state after a reset. Thus on devices where the bootloader don't initialize it, the driver has to do it to detect and use a link. The MDI polarity swap can be set in the device tree using the property enet-phy-pair-polarity. The u32 value is a bitfield where bit[0..3] control the polarity of pairs A..D. Signed-off-by: Damien Dejean --- drivers/net/phy/realtek/realtek_main.c | 34 +++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/realtek/realtek_main.c b/drivers/net/phy/realt= ek/realtek_main.c index 2feb085f5c9e..a3691f9c19a5 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) =20 #define RTL8224_VND1_MDI_PAIR_SWAP 0xa90 +#define RTL8224_VND1_MDI_POLARITY_SWAP 0xa94 =20 #define RTL8366RB_POWER_SAVE 0x15 #define RTL8366RB_POWER_SAVE_ON BIT(12) @@ -1870,9 +1871,40 @@ static int rtl8224_mdi_config_order(struct phy_devic= e *phydev) order ? BIT(port_offset) : 0); } =20 +static int rtl8224_mdi_config_polarity(struct phy_device *phydev) +{ + struct device_node *np =3D phydev->mdio.dev.of_node; + u8 offset =3D (phydev->mdio.addr & 3) * 4; + u32 polarity =3D 0; + int ret; + + ret =3D of_property_read_u32(np, "enet-phy-pair-polarity", &polarity); + + /* Do nothing if the property is not present */ + if (ret =3D=3D -EINVAL) + return 0; + + if (ret) + return ret; + + if (polarity & ~0xf) + return -EINVAL; + + return rtl8224_package_modify_mmd(phydev, MDIO_MMD_VEND1, + RTL8224_VND1_MDI_POLARITY_SWAP, + 0xf << offset, + polarity << offset); +} + static int rtl8224_config_init(struct phy_device *phydev) { - return rtl8224_mdi_config_order(phydev); + int ret; + + ret =3D rtl8224_mdi_config_order(phydev); + if (ret) + return ret; + + return rtl8224_mdi_config_polarity(phydev); } =20 static int rtl8224_probe(struct phy_device *phydev) --=20 2.47.3