From nobody Mon Apr 6 15:50:55 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 74964322768 for ; Wed, 18 Mar 2026 21:55:08 +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=1773870909; cv=none; b=jetg7K+H/VQPY543RQhVAMWEj7eSToCc6hfxhsHgPUETz+GAK8QnEb8GnAp8Exj9/mtju0D3wKL3lj1goxjmu/0kerHGmZAJ7wfi6e+kXYFhwu8XGdgssAEkkpMs9NSZ62rBf1M5QQ7iYjXKF3fzZFeHpOssovqZDjg9qCZDkU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773870909; c=relaxed/simple; bh=i6Ts41fXLRb5swardCZUkTCJ3f2AD6uWbw7o0btGsW8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H5pDscNcOLzowh7gISqM6TVx7msnV/gWBbo53Xp9I9HjD/v8YqeggfFAV/SzxjXLytPk98pZ24HcucJ1WDVJXt+SnlP1ORUd8GD0SFhJ9Rp5sYi76xL+fC4DWJHARdirpNLcLlOrZAqlIZAKOXUCvxZn3Up/AHYzfDAzWvKfmUE= 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=DEzqdAxm; 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="DEzqdAxm" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4852a9c6309so3039935e9.0 for ; Wed, 18 Mar 2026 14:55:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773870907; x=1774475707; 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=DEzqdAxmEzLCiO+dWyub4Qerk7W0Xu5w3M5e0eIUv404OA1Kik/+5DBfkAWjqT45bl L6jnEj6SrK0azl0yjZaJu8DCQEJfqZsPzwOc+9tMnXoVpceWCGkzyUPKMFXjzrP/WsDK LN9Fk/3k15pgip2QIKv+JGLh3g1BQ5Xz4t9I7J1T9EC+wIGK3CeG8swvACh5YStJ8NkA imGMVVJA9sNSZJelFpSmrqEthoO9lMeOANTHTyBKJCCzG8qmZuhBGXe3gJQoCskHN/XY h85yIRdII5xF+aMc+efpBQwLClh01o1qx/iHQaRVBB/lurpqwSM3ume1G43yCeHpQpsQ V4Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773870907; x=1774475707; 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=FIsDDkr8QSQRNsES1qJmT2b2Sa9uiKRyWpBQx6yIaJDdWvueCsyE9eJUqoTI0pqxNH ARn0R30I9gSO+jJ1XGWtgE6l7Yn6hKS1ptGkgnDYRjMFWAmjMkKe0iIinmC5kfBUiVRu EOzpIm+0V38TzR1B4c39iPsEpeFv4uNz/RE3BwwDgsYOi42hqOo0rHJT3+QWgUtY4yRR TNPtga3SOBwsnlOPHMHPIDneAbZh60VljL4ImHwU3VpV30JV/8iiLqPclxClSaPr76nX R7+hWEh8h85zwwgPR+jcyWuuRejP98qqbaajihQIlgXORvNh5kpG4my2L2h5M64OUP7n KY/A== X-Forwarded-Encrypted: i=1; AJvYcCU8wg1c02v9AJUJKQjYF8P1BfqmigedRx/lgUdGtlkzobL8nLfo7+uOcnizCEZ5hobTCy/aS2Zeg7+uH80=@vger.kernel.org X-Gm-Message-State: AOJu0YwHrKCWJNYqV6YUVlh4wOnmeG6wyvYi5PhKmsDC7LBfeNc9uIu7 Sfhl/49tpoJL+rMJ3LWhIeIGTOKFKX8zcdbKww92ui0nRNdKIYOFlmdN X-Gm-Gg: ATEYQzxkJpNRuHtHPWm6zLuWd9fHYah2ltGJ1O2ZSGBrhzjcHbMcZ8QHEXPGeXuGUwf 1+PwL0sYwT7ZiwKu+mJ4dnMEAdGx58l2NOoU6F6bOMqRJNjzGtkzwXuLLsWodrhS1lMY0iSfy57 SluTgl7l3cAwbXqv4h+XGDFxKaGbUXNa0UrYDu1a/e4Nc6MzlEIGgIvyp5Guvz+szCdObvsabLY qWOVwWKz7YYfqx8VP1mdl43nsaBXlsgmOrETV2yX75urkcjyuuYJ+Y9zIExksjPCbzt6vsqFcyk Zo8HU3T/C0dgcliyHBf4NLp/w6mPowntgN/p9tIBzzeRRvoT9VEoH3Kj0GK2/KW/YBj4SUuIyti QtHiBa0zMq3ugsexHMBGDQuw7/3BQb/cRzI8RZH4qqG8gymZJSX3WQ0mG/iscLGBLeYjiGsO8nT uZvdrc6emznksb2MxjMekNo3iGeFJ6uvL3sg== X-Received: by 2002:a05:600c:1d0b:b0:485:45fb:3472 with SMTP id 5b1f17b1804b1-486f441bacdmr85477855e9.7.1773870906587; Wed, 18 Mar 2026 14:55:06 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e10:c662:37ff:fe09:94df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f8c292e2sm19373735e9.2.2026.03.18.14.55.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 14:55:06 -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 v9 1/4] dt-bindings: net: ethernet-phy: add property enet-phy-pair-order Date: Wed, 18 Mar 2026 22:54:58 +0100 Message-ID: <20260318215502.106528-2-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260318215502.106528-1-dam.dejean@gmail.com> References: <20260318215502.106528-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 Mon Apr 6 15:50:55 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 5A6B4345CC9 for ; Wed, 18 Mar 2026 21:55:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773870910; cv=none; b=EADN7EVnuUZWUEwE83k5KF9pt+fnVft+pccVZ6BmYq2bI4GAGeR9VU0W7iO6o5AV2D/A1dPDS11S7fEeeud5H3qWQ2nBdDI6eWf+y0e8uQlWuyuFeU8Q17gIdzFxE9gLziToJgUpGi397/jrSfsILsx73S2SBY2EW1WwrgDiv6U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773870910; c=relaxed/simple; bh=S/RhJnzS81TpYiJxm8RqeCtmAiLI4W6UmQTEyLwMEvA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DjaKsSC1FaYCXD1mCDjhcjML/pi+Yfm83ZYG0zeQacAN1AnffhcFrh+42y75dopjmElxSNuv6kGK3WSdsoM7NYE6694f4cEWT/Weiju5aSPKzgEcbxrQWmFV+g2ZPZCY81dzEky1Rvients9O/VXGlOdBbesEMABebCdrtNYsl8= 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=Ex37gTtX; arc=none smtp.client-ip=209.85.128.51 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="Ex37gTtX" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-48558d6ef83so2414245e9.3 for ; Wed, 18 Mar 2026 14:55:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773870908; x=1774475708; 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=jxnQrg34XYw02BI8HXDNaula82Z0PNll3rpcD4G9L3I=; b=Ex37gTtXlhOk7aFwkufSdEGoY8E6h9aKKsKtARjASDkWDuNWq7HjOLJfdw1am50CIz b4Qu4EnWWl1ghUZ2tCpYn+aHZWgSeFl9q0CSAitTwMXiyppM6FEzzn4SJIjTvZfw7lCA UMpjIZKHLpdKl5ZQsA+WuNDxcBIljWUPlEEuGgzOqHi3Sciageev43K8mIQilXE3svJF G1JG0IkmY3e/l/suduJG3BnnE/brLzycZMui0gK9N1D9/0AQiJVhbOQ+cZJ8GS4WRru2 WiNPKToZTGkrFaiyoCmgFW5+h9WHIuEK63/xEiXyRHOI/IphouPjeb0gQimwESVtx4hj baiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773870908; x=1774475708; 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=jxnQrg34XYw02BI8HXDNaula82Z0PNll3rpcD4G9L3I=; b=WuGjpSwsONRv7mLeUVtK0mBRGQAtsq9IDumcP8u/XtGei4Ndoq5NVpCfRmvPvsvOqa +n2xte3LRct7SkWJ/irxmHYWAtpSBS5iBScW+GujW41RMaxiy9ZTjoadKbqcTBYXGT9J oFznKq0b7y0cUOcud9x63VpfwnsvYOxJHJUBBELiSjWII43U/QiP4fplo1WHqxhinWyg 1vlJRnpLYxtdlrhRMubbZO2fsIklqdgfN1qoZG2OSWvYkCof6A+ZHcfoRkkS0NCWqg7j hW5wo1/LzQiDtZw8onrwooxQdvLDobPUepFX6v0yiZjI7l0lKeGMNUjfC95FKCpGDOS4 1F9Q== X-Forwarded-Encrypted: i=1; AJvYcCWDvawHzEO8F2L4LAZJ7FZzK6JVN+9nJCThYd39FNUUTZGC6o1SEVMs+CLC3lV/qRlyWXaCKgsdYNf6oFk=@vger.kernel.org X-Gm-Message-State: AOJu0YwX1S/wG62xuXyNqmAS0X/6EjFRnwJh15KCTZppSLOtFo8hXG0L GvLGxDWCgf3bfS5Qd+Pxth72w62diev6ySlocTzcmlhSXP79HLI9NbBBzGl818U1 X-Gm-Gg: ATEYQzyIxWxERabWi3rTpxszr+ouRGMOC08Fjg9msaJ9K6A/3jMjBFIE9o/3N4txYhu qa49WqtgNkJ6O+5HAHMPX3p87e7diqY9RB4L0eZ7pcmIFRKE7yA6un2THcjTsjR2Q5jaDhaU7o9 +KqeJT4szg5ySgPoMX4sLG2mYavWowOngOOfvxUSp5IkgvEmTvnVmbXiAQVTr2Hg+uitNSiPbpD j5V/XxR09JpjLvOfJg57JL0gBE/4EH9lS00jal0whCAXdNO9ZQDuMTkUtD36eX9K2M4ilwcR8ws cthj0KTIo2Z7aCM/GtE7iuWY/fXmnu8RweHqDI5orJ9U4Yp/BgucZ5Mw9vikOamfIkBgVFQvgxK pQtdbsAAw4k9xyrF0WQS9GP4gOFUapK3qLSl+8ii7h5ccugf4K8RwxcpENKHTt67j0401D5SWAb CP10WlqyJxhQS8qYQmlUyia/8= X-Received: by 2002:a05:600c:c8f:b0:485:2ce2:4c75 with SMTP id 5b1f17b1804b1-486f442206emr92342215e9.1.1773870907488; Wed, 18 Mar 2026 14:55:07 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e10:c662:37ff:fe09:94df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f8c292e2sm19373735e9.2.2026.03.18.14.55.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 14:55:07 -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 v9 2/4] net: phy: realtek: add RTL8224 pair order support Date: Wed, 18 Mar 2026 22:54:59 +0100 Message-ID: <20260318215502.106528-3-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260318215502.106528-1-dam.dejean@gmail.com> References: <20260318215502.106528-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..63134e300c33 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 || ret =3D=3D -ENOSYS) + 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 Mon Apr 6 15:50:55 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 3F23935DA5C for ; Wed, 18 Mar 2026 21:55:10 +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=1773870911; cv=none; b=P9jd7w+hgpszzL7gXb8Zo8nMZqTmt9bJ7h5kvQfL0nD3SMe21kcvjBSsHnnYw0VokqVdwx38JSSKlJAL4hOp+LfMnG4sGhRUG54zBDwEL5hZfL8PxTeKWYfdwA7pA3JfpvYBe+I2Uyxa/yXPbI7yKDVadvPDVFCnpjwBMy6zfVY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773870911; c=relaxed/simple; bh=NcV7Y8rF5EsCyaO+fQzMv4yYadXViOfLjUAI/+Np8mI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OIqmPMQTOre0jXc3+0ShuBKPG3xWTPTRoBxo7twHywodS+8QCg892IW1t25xn1ZI+eDf1sf8SFLq6fitR2mjq7wTl1JGPsQK4EwxHOTkSzLfNa/zPbCclz99MuupGisSU6gfY8VHst8T5brp76tlvOb8IWchNHud6x2Om6G6N/8= 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=ktX/rKGC; 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="ktX/rKGC" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-48541edecf9so3448435e9.1 for ; Wed, 18 Mar 2026 14:55:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773870909; x=1774475709; 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=ktX/rKGC76toMUOM9F2ZXFrFUDCCCsktdn9XfvPVmFi+yZHXtD5IGsyRwKNiaZ8TLY Fex+Ybn+1glIIC4xk/QLYt0vPeepxCQcIw/5AWJ5Ki9w8G3ko01vQF2MQX/np/sfFxRS iBhj6+6+cAURxMRO8TOsRDlz0E2hz4A86qwsYAJNi3wee9me1I/NPotqCo0tOo4ihORE RkRjE0usoDfQhhEoS5XhWLxhmqH8wZpSIBg5W+9eLkiyGHU6PJGKYaS4KE7f9yXRRhu/ Wgt5PlJ4v9IUuGOHBHZ1veykKmbFoKiZ21n8Q2hk+5+iKy09ceMx4N/8LyWhf5sGXEkp Twog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773870909; x=1774475709; 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=Z9C0S0Swypqow5BSNhph7JzIbF3f3WAom0MrKwQxdwKa6fzib3zPchlRNigGoXKrx1 iQ4F7Xe8FDz+kMTLAgmwQ9TBLAjfd/ozH1UCgu6ZpHPiek1INXU+npZhNl6bimw6fR8r FsRlI9k3s1u9QzLPkgMt91Qq9WZZMyQwViM8jGYdqWpKLg/Jmr25kkRfHKADXA7K/cUu TuDBVlCdPg2p2+09p4jVLPP2/nc2eK6MWLIta31VQ8cn3YKW3rddCKQIg9cHd8eCvZFH Ay4NSKqPaFQKkCmtnzkyXZ+dvl0aMgvcr197LUID3LYOUTl3/DbHvnaCalw2Kg8YlsWp haJw== X-Forwarded-Encrypted: i=1; AJvYcCWvY7yD4hay6x1nRaM8I10xOMCbxYX1Fi3L+NtfHQPyDAVuEybkD07SnShDO6myYbQ9bcik1L7htNYGUnw=@vger.kernel.org X-Gm-Message-State: AOJu0YznMsgDNUfKKz7VLVbBP+mkiC8jRgZpcz/rBz2VRx2EA6/jqK2P RbN+rwwAAoPKJaIZJDQcWF7bFtpjC9I7RFWVFTTCwspBk/9QYl51qelY X-Gm-Gg: ATEYQzwWkZKQlBiMTJ3sjcMT3S7wtJnlQN8RwyxGET+F4a4wPDEaWZlbn0wZVZSN3h4 r4R2VCMXeBUMwdkKM9uz7mWvlca9aonnurOCh/cKAQyEGiBXBV7+AuElFI6z3xXrBA1KDHv3RNH 4/SPr5yOrIoLqapMuRTB6VSVaUSa11XwfZ1SC575Q9Ri5vTeGbbJqTajhqvNMIRBMPJ5Ngg/BfP LBrybX9k+3nRl6Ekka8FV0wfMfDLlrtyRCpJLscvx09UeBdtuutD/WatlJFLKm3FVyItB2mxuaU yTXiUkkMRS73xfM60FUmy9stUwYlZVaQSW/xQv42WXWfPeI3/arAjixoevbQv1JIIKPsViyW59m U9RKOqXytQ+/JEy3Ruer2gNUSMWuTYmV/gQRb9FJFQXLNtSKcvPL2Z53guqWz8fUJZAEn1HoLk+ VX/NIUs44UDs35VzbWE4igl1TtmslJ96Kcjg== X-Received: by 2002:a05:600c:4fc4:b0:485:3b00:f92e with SMTP id 5b1f17b1804b1-486f441bc46mr80203095e9.2.1773870908462; Wed, 18 Mar 2026 14:55:08 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e10:c662:37ff:fe09:94df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f8c292e2sm19373735e9.2.2026.03.18.14.55.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 14:55: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 v9 3/4] dt-bindings: net: ethernet-phy: add property enet-phy-pair-polarity Date: Wed, 18 Mar 2026 22:55:00 +0100 Message-ID: <20260318215502.106528-4-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260318215502.106528-1-dam.dejean@gmail.com> References: <20260318215502.106528-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 Mon Apr 6 15:50:55 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 2DD3036CE14 for ; Wed, 18 Mar 2026 21:55:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773870912; cv=none; b=koPIMo+hrQ+EZKy/0D3pnJbU1qvEWdPpgxNPgdq2kRUXH7b6ZHlOiqtnVNt1HPUu1vhi/5AB/UntmT5J9TNWEwIe1QFMq9/mLNmNac6AGPuH1DDGtqQyFPJ6HDZWxU2J2epv5Ig5GP7br4IO2IPM10oFpO2ZlcnkCAC6adEQpa4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773870912; c=relaxed/simple; bh=2/LV7x1w5ZpN78khNcFfHL9/K9EjNlAJ+nQoAYrNtBY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NstAlY3BpVBDw5UojiX8NiiivMVTOLKKkfk1PbMrEpFXLp/1qlFmNnTb7XLHa3PiBIROqaatDjj7vY5JabVrp3bN0j1f30/g1AZoJmKAqjvAxryM2iv/MBtSHr4BDm2vcXpAwsC+yVkrRRLgXvHeJ8B4a0WNGXlBKHV9MRM/kVs= 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=M3pOFD8Z; arc=none smtp.client-ip=209.85.128.51 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="M3pOFD8Z" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4852e9ca034so2371025e9.2 for ; Wed, 18 Mar 2026 14:55:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773870909; x=1774475709; 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=VWDjinezebp/AuPLcd5BKlN7px/L4sHMddcyTp7RIds=; b=M3pOFD8ZDY1KvrcAm94860DvZ6TEh9S4rIYfpSaG6K7BwV1HiHzB6B8IZU5OKWRFi6 VS9Vqe3ufFRD8zhptyKaYVNIU0kpa97MI+2oUFNKLe0G8GcAlpwOD2vE2d2+kLCiLhdM 3ePvD0dwVyB0pZceTOjMUQsANhWsLv75vxOinrZC3LSlwKPV3ZMTb/BwNAvIdvKx2wQR KfbwNJXHV2igY/vcWsFLp9GCAIrdS/H8daJbiMLuLmQLP/6RUZCpgBwCa3M6fl773Tzd ZPCB5A0CPiEjCmiuZKqCOvfFL46vzGESG8ZIfOtbPGR5EUwxXKLVNSaOu/QPy1Krmo3F lK+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773870909; x=1774475709; 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=VWDjinezebp/AuPLcd5BKlN7px/L4sHMddcyTp7RIds=; b=nZZnc87oUoYpPW6UWUp4MOXL3tD9+7Z36yNgL0KadpcwBwHs/j7OIgb/jC5PjbKBCz FHsqU7naMoSvcGFcO8lP/mfX9aSM905bvpuLSLt2lgCAmKdpwmvjREsHrs/u2+U5EDuP KZy5QGSoRKzKl+EmN/hGikxqPJcGVK9FhWdaBv0bH6hcgp8SJJfe+VSiM9V56iQM+O+k ERNClipLy8CgfuDnVO4jWqPSPDb9TkqFpy99qJKy7Yfz0p4vxzpDDnYJip+x076YBpeb 5ZCvWgx/4cJbC9VMXmn/Ae8ywpg/Fu8OKpBRrpi2dhSQBgDh4VoLU67InpfP9CKIC9LJ hkUQ== X-Forwarded-Encrypted: i=1; AJvYcCX2uIKIYcSFvhTekGhXZ3DfLnl+Hp6RArpsJQsSfMc71GZ84bNn3AlNHfbEuWI5WbV1YxZvSYOiLaxig0w=@vger.kernel.org X-Gm-Message-State: AOJu0YzQ9YzBa56DHOVU05Fye3catdhF05ndTP6VYwOlZyC+UhJ92jwq mk/+JwAOjpS4q4ZvqbnfDpagUA5LwyLLA9wgOpEjA82z+PLj6LmvKxeF X-Gm-Gg: ATEYQzz5rE6RosuH9K6I4fh7d7G24p6DM8rOBWKLrzQiik9WXkPZJuZAvnZndSE1Afs 7wDM4iG3yfSfQn08IbPU1ahRuGY5CsZBhMz41jIYKXLxJeDK1kMwkKeN294+GyA6nhc3e+g4PqC dJkt5Pe3b4sdg9LI/WFvXEcGBy8gBaE6QNh05ykkSLVvRUQyvTPUMFb47EAN9PYsO5Q3D47X45u XeDYlPT+JVmbPXKttTi1DUeRulKCO8tgnYJGrLk6G8t09gP2vh4vjLZtJd9iqJd3HvLRFM7Ft8Q Enr/6VzfS2qoM6d6NjvGLqHQ+tFwc65/jvYX9hFK3odLXiP/WoVGfED+4eI69BLLAXfMeV6BsAW /Uk+GS/2Bc/06R+yRsOWCtu220eI0PHcRLwGIPcaayxgRVMkI029y9WN4Bg2dMiTax1arc6+96r EpB5aPrjJnZs6jS51eoimSWi0= X-Received: by 2002:a05:600c:4e56:b0:485:3dfc:569 with SMTP id 5b1f17b1804b1-486f4441067mr75301165e9.16.1773870909451; Wed, 18 Mar 2026 14:55:09 -0700 (PDT) Received: from nas.local ([2001:912:1ac0:1e10:c662:37ff:fe09:94df]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f8c292e2sm19373735e9.2.2026.03.18.14.55.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 14:55:09 -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 v9 4/4] net: phy: realtek: add RTL8224 polarity support Date: Wed, 18 Mar 2026 22:55:01 +0100 Message-ID: <20260318215502.106528-5-dam.dejean@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260318215502.106528-1-dam.dejean@gmail.com> References: <20260318215502.106528-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 63134e300c33..023e47ad605b 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 || ret =3D=3D -ENOSYS) + 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