From nobody Thu Apr 2 22:20:06 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 CB2813B8D7F for ; Thu, 26 Mar 2026 09:10:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774516253; cv=none; b=rgBGsvh+8Kmkw0sfhhgzjxu/tyM/Nbv1jg0Hfhxi59BPrO9nZ+5jpWj3r3fwV33L/HD2y32UNFQUcZvG5kT9sHG3F10V0kT65DEZ04TGMQEpL+BGdd6XoWWmDX+Fb4NnJBYyLxm7gFANJsEplravbWCP5u2wU5rqg+ZshaGYO0s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774516253; c=relaxed/simple; bh=c7lQdgxqQoIzJtukGcni61BhLUSZ/QFFuAEFNiGJ1gU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C/11GE5KV17Zh8dl/sTIMlQDYARbwTpBxkaeGQ9+qavsMuAcLYgxHxSFjbig68NYAjUGErAcBqDkj+sLRPf28jv6m+g54V4G1J2xfmiG9iaIUf9Nwnms+L6dWKwSbrbuNC0idplHOBq7yC2fxciDs/ApurFQ1OSkuvj+Z54Fcis= 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=THZNkVBU; arc=none smtp.client-ip=209.85.128.45 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="THZNkVBU" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso6322035e9.3 for ; Thu, 26 Mar 2026 02:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774516250; x=1775121050; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lE/tNvEnDqlfntSdOLMR8SVF3nj3f/cbm60tbKz/3QM=; b=THZNkVBUXosTQ98f7Dh5Eb3Npy9Wjipjcw0/hEyTIaAzsd+MK/gjp+MW60I9S86K1E BNjCZ5RfKhxp9O6oHy5POfc9WgcclG+XTeAe+m3BLqjs100HRzpolFLPh8FSj6YTbBEQ NHcRVPOq9BltsKxdZxP+UTWv1dmLRqjm0wRTtvMYLpMTF/iXsFfgC1Buu2yZ4YV38EFE 15JtqWRSs6xLQa2FSWZXr1Wc4dx0hd1CaC7G7ECc0B5tXNq0LcvCb627ph15vRmwDHmi 5DwX8U0k0yRp6hRraOO3CE7BpiSdY3brcq9/oMa212uuCtDaIkQuQimfvWoboTrwXSI6 n1Bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774516250; x=1775121050; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lE/tNvEnDqlfntSdOLMR8SVF3nj3f/cbm60tbKz/3QM=; b=HHgikB1ZHxdlvkiSbjOKulE6oFXCF1IYV8aa9ueY8yUmKTeNs/XFiwLKUCc/C1m86F q+EbmRBERb7A+WvydS/jbo/Rnw3+OUUIQbede4KsdwsZnM43WaPvfgoBI3ja4IdYXxgS 3phYWbseIxzQ4ACyQ0L+Q7/Lo0r++ggVlHFgzBAC+r8aOIQXk47ZhRmWfKba8VqWt0qA 2jZCtfERcuGgLqjcwNrqIhDDVpXkZXXik2dv0CElzYzLtm/qejpr1hrg7J+IGU9wMWNd v0L4jnXIuJNAdUscO75m8yXxHnyZWeG+YgvbUDFZ0U7k55ysi+/Rpdlfde5YuorK9fmR Cy5g== X-Forwarded-Encrypted: i=1; AJvYcCWhHfDlI2XGqVSF1gU20qfOlqepMuKhCpEPBKxJ7yjLDElvuiAK75NffT0IDwpXygUvg3ec9mYHhKZ0bXI=@vger.kernel.org X-Gm-Message-State: AOJu0YwtPbFVk88QTXuajlJsEnilMMonGrfqvLbKrgPy4xIZRpnZcrQe NztjcL1cBIkVVZ6hwa7fBnv6mNt9Rr05lSfuR3lPaincS9Dd+FrMgClv X-Gm-Gg: ATEYQzxRzolBPpGze47m3cmKQfPO5nzlKUsSmdfMU5O7uziRjVLqunbqj2G6Ab+G45U 7gKCEfEQgCZbkoN8jFVkDj9XkWGLAhbBsQAT4zHoL+hSwgtQCaRvVCHbO0Ii5Es57sByKGFe9jX yuq6uC1FxM53wAd+Uyk6HdZXLjNx+yBnGSu9fn6z4Xe2Do2rPZMhCH1dwK4oa2s3BM5RC8DvAnp E/As0So5M2hcph1TWdFPPbLvFSk8hwe7IxjcHJFCLQ9eiqfY66/bH5898zcCBQ7aOGxG8ti9yEU +omceRGzSSnz8mNdMb+iOcvTT2uux7RFg5U4F/B/KYjMuDxn0yleUUnDHR5ZS9+rfWK74b74q5v TI5gY8RRhHN+IZ9YWfN2ESxPAJC6nQDAwc9+qmcRr5YFrV5PRCq2bKRmStDZ/D6eGuS+wOmTQ+y k7ORkzhk/BFoGCXTKP7YYgnaM/aSPVLS5Ziq8wqUN5WyJGmuLZQ8EMWtGHYyvsYgo/v/SIkslPF +1vtCX/dg== X-Received: by 2002:a05:600c:64c6:b0:485:34a2:919e with SMTP id 5b1f17b1804b1-487160a681bmr94261025e9.33.1774516250125; Thu, 26 Mar 2026 02:10:50 -0700 (PDT) Received: from [127.0.1.1] (cust-east-par-46-193-119-166.cust.wifirst.net. [46.193.119.166]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b919e7111sm6381199f8f.37.2026.03.26.02.10.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Mar 2026 02:10:49 -0700 (PDT) From: Fidelio Lawson X-Google-Original-From: Fidelio Lawson Date: Thu, 26 Mar 2026 10:10:21 +0100 Subject: [PATCH 1/3] dt-bindings: dsa: microchip: add KSZ low-loss cable errata properties Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260326-ksz87xx_errata_low_loss_connections-v1-1-79a698f43626@exotec.com> References: <20260326-ksz87xx_errata_low_loss_connections-v1-0-79a698f43626@exotec.com> In-Reply-To: <20260326-ksz87xx_errata_low_loss_connections-v1-0-79a698f43626@exotec.com> To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Vasut , Maxime Chevallier Cc: Woojung Huh , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Fidelio Lawson X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774516248; l=2567; i=fidelio.lawson@exotec.com; s=20260326; h=from:subject:message-id; bh=c7lQdgxqQoIzJtukGcni61BhLUSZ/QFFuAEFNiGJ1gU=; b=gj7AGcTZYGRoM7Sy8eZ6g+SR04PncDwMsa3hX82B5caMFrk8jBIIfC/yGLfiXNoWrTzH/QhTl 4xqPPoU+hVDCLFug8cRooDd/V7CsmsZBsmKPrftyKqTH8hY5vJ/yU9q X-Developer-Key: i=fidelio.lawson@exotec.com; a=ed25519; pk=866eH9Bmmpjc+ctgkr5T1uXxBefZzob3tEEuiVWZ6BI= Microchip KSZ87xx switches are affected by the "Module 3: Equalizer fix for short cables" erratum described in DS80000687C. The embedded PHY receivers are tuned for long, high-loss cables, which may cause signal distortion when operated with short or low-loss cabling such as CAT5e or CAT6. In these cases, the PHY may fail to establish a link due to internal over-amplification. Two workarounds are provided by Microchip, each configuring a different indirect register value to adjust the PHY equalizer settings. This patch introduces two new device tree properties to enable and select the appropriate workaround: - microchip,low-loss-errata-enable: boolean enabling the feature - microchip,low-loss-errata: selects workaround 1 or 2 (default: 1) These properties allow board designers to opt into the errata fix according to the targeted cable characteristics of their platform. Signed-off-by: Fidelio Lawson --- .../devicetree/bindings/net/dsa/microchip,ksz.yaml | 18 ++++++++++++++= ++++ 1 file changed, 18 insertions(+) diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml b= /Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml index 8d4a3a9a33fc..ddfbc36aace6 100644 --- a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml +++ b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml @@ -85,6 +85,24 @@ properties: enum: [2000, 4000, 8000, 12000, 16000, 20000, 24000, 28000] default: 8000 =20 + microchip,low-loss-errata-enable: + description: + The receiver of the embedded PHYs is tuned by default to support lon= g cable length applications. This was developed + using low quality, high loss cables. Because of this, the equalizer = in the PHY may amplify high amplitude receiver signals + to the point that the signal is distorted internally, preventing a l= ink from being established. + A more balanced receiver setting has been found that still functions= at the long cable lengths and also supports + low loss applications. + If present, enables the selected errata workaround. If absent, the + workaround is disabled regardless of microchip,cat56-errata value. + type: boolean + + microchip,low-loss-errata: + description: + Selects Microchip KSZ87xx CAT5e/CAT6 short-cable errata workaround. + 1 =3D Workaround 1, 2 =3D Workaround 2. If omitted, workaround 1 is = applied. + enum: [1, 2] + default: 1 + interrupts: maxItems: 1 =20 --=20 2.53.0 From nobody Thu Apr 2 22:20:06 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 79B9A3BADB5 for ; Thu, 26 Mar 2026 09:10:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774516255; cv=none; b=XiSJ8FnVzAhccPT3SWDAm9Sgnm9bJYMuXNGEb36slLUOfrvMeV53CUlfTC5mMOndwNw25LVW0dAjRSgiPkOE6gcByrdYZToFJA741Br1Kh9cat5Kz1EmokOS6WZXXP+Xv6+k+bpI1g4Juygmjpb0r3uzW7wMAxGWjB7gp91hvaE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774516255; c=relaxed/simple; bh=8+8i3aomOLS8R8b5sollZ2ZiFAWOT1uHJtt2Q7PXFp4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IVCF+LvtvAgM6es7P6ShmQ4E44PeYBl8Td+KEpSPMGTq1BTjeJ2v4+O98tZszJJot3hDfFb8Vk46K77PGf+s4G+TVV54ZOPlUvs+fcZMjSgZQbKqplhpG3xpX0mOUoxzSHK2kroH1YirIaOwmt5K3IX1zYzZHxOEUC7qGK0f3fI= 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=KK67c333; arc=none smtp.client-ip=209.85.221.45 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="KK67c333" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-43b98652f05so100465f8f.1 for ; Thu, 26 Mar 2026 02:10:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774516252; x=1775121052; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=IDIt8ynlMPPK0wzqF40DJoyfDxdBKdzIG4wv5s2In+Q=; b=KK67c333v2UQBXZfGlsXu9xlt/W6+97A1LgDGPy9T3JFTJMsNLJjD5WxT1/DUFBzK9 zsdzIQuMsr29z636kNd1x5JUteFRXB6zcfysUiKQksiv/UVOQz2gkxGOog271WM+jfVB CVRPAocAXRzgkU6pio+Hljdx5smHdRknkcxMmYaXWqfMZJm+8ALnXVubjnl/M0mPurhA PrpGGrSlA+dGDXzeXhAKemLU9U/7feSXNqo1MfiBGwFmCyCVoFjECtZhfoM9aEMuAgEh jX7BM9dTHvJ0xyi2/gEVPXSXg18yd0LK8mR2h++x9OLsVjU75izp/kZfeWgXEnWU1qfd F6nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774516252; x=1775121052; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=IDIt8ynlMPPK0wzqF40DJoyfDxdBKdzIG4wv5s2In+Q=; b=gzO8F/4nfrf42WLK6+zhpmEtcGnETpLq2qHik24TqDhRWKTtJnDPO3sAmll7HG4SQ/ CQpdD6smQqbKKGVXIaq1lfMRFyjmBUJUSIyPUikm04PiKJZVlAiux76/TLb84MmjWNAZ b8vqAbsTuNa6B9rNkMdNt9Lj5/t7vgxLHbxfUyrU3eIYADj67f9brRM3ZG2mSANtz/SW rfiQ61aew/+fykVmNmoL/vQF0vBmVRDT4lfqc1u404ytuffC4iVRiYuSP4Z5gJymZj5g buKHBGvWEYozV50suCi1YO9lDpiMp1Je/sDb7yuNe8Acr1H16JNrc8i9GQubnn+ZHon+ vJGw== X-Forwarded-Encrypted: i=1; AJvYcCUsV7IhsWoCd06my571aXxYZpH+eQfCo4TvmmSqJnez6UJsrDmhsriFAYwQg641+7eXJI7PfMxwUBnGfwU=@vger.kernel.org X-Gm-Message-State: AOJu0YziFkxDlKATXj7FhYB+8OmqTbb9in1HkG9KjBKfNea49CrvsyQS bR20bctTpHFs3KL0vrluqi20pRSuP9BOz4aRG+U9MQ3y0LKQaRl4GGb/rEuL1tud X-Gm-Gg: ATEYQzz5h1oD4RKlgGupm8F82ELDDeWjRHRYQyhInlRYlFgJASwy0fRV3/vgNVgJFo/ BqS8y2CF+CIm3UyDplAjG3DZW7l8AWsmLNKWqhQsURGzoUzoHCyCo6YoitFyvHtWHG0i+YunjRR Nq2tE/EXL7Ek4468HgofSgFB6+BtM0MdThnNvkIx1zlC56TNG5LW1sNQuZYR3qBRjUHlCK02q7G mEzDrorTvSZxSEhdZvznTlNFsXzISf8PUzp7nfAvdkFAxmoBraEibFVqGf/Qw2s2AmLhpnIdwrf 7DWxjkaeNnd2Y2WSRhbqplS7JMuHtgD7wOtvmQlwCyh50ON9UQDHqexxjP1gVWMwO9apriamBZe iHCdkf+VoUFluNgLSrFIFkiDxejoMiWikaCHxz9jSR7vkxueongROYMJ4MgrjtYgekG7HnA9Vke OwnuFSVtVAEQ0nPluVxiSSR7hBx1yJ/CwEciC2V33d1+baV+7f26gZiU/SQq6A+eSwRf8Car83b 3EG4e0b8w== X-Received: by 2002:a05:6000:40e0:b0:439:936b:bff4 with SMTP id ffacd0b85a97d-43b88a2939fmr9878451f8f.46.1774516251706; Thu, 26 Mar 2026 02:10:51 -0700 (PDT) Received: from [127.0.1.1] (cust-east-par-46-193-119-166.cust.wifirst.net. [46.193.119.166]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b919e7111sm6381199f8f.37.2026.03.26.02.10.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Mar 2026 02:10:51 -0700 (PDT) From: Fidelio Lawson X-Google-Original-From: Fidelio Lawson Date: Thu, 26 Mar 2026 10:10:22 +0100 Subject: [PATCH 2/3] net: dsa: microchip: parse KSZ87xx low-loss errata from DT Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260326-ksz87xx_errata_low_loss_connections-v1-2-79a698f43626@exotec.com> References: <20260326-ksz87xx_errata_low_loss_connections-v1-0-79a698f43626@exotec.com> In-Reply-To: <20260326-ksz87xx_errata_low_loss_connections-v1-0-79a698f43626@exotec.com> To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Vasut , Maxime Chevallier Cc: Woojung Huh , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Fidelio Lawson X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774516248; l=3456; i=fidelio.lawson@exotec.com; s=20260326; h=from:subject:message-id; bh=8+8i3aomOLS8R8b5sollZ2ZiFAWOT1uHJtt2Q7PXFp4=; b=R/3HNms1ACa2Mn3v7SBYrjkAoaa6bt/B2PlA7rR3/K+Hd/yvt4vsoeheFdN7BB4KG+iLb5tw9 nheDwsKTLVlAPe2fatFvMp7rPf8lFmWrgrHN0M8n753bPqnXiN9qEpx X-Developer-Key: i=fidelio.lawson@exotec.com; a=ed25519; pk=866eH9Bmmpjc+ctgkr5T1uXxBefZzob3tEEuiVWZ6BI= Add parsing of the new DT bindings related to the KSZ87xx low-loss cable errata. The parsed values are stored in the ksz_device structure for use during switch initialization. If the enable property is present, the driver reads the errata mode (microchip,low-loss-errata) and selects workaround 1 or 2 accordingly. If the enable property is absent, the errata logic is fully disabled. This keeps behavior fully backward-compatible with existing device trees. Signed-off-by: Fidelio Lawson --- drivers/net/dsa/microchip/ksz8.c | 25 +++++++++++++++++++++++++ drivers/net/dsa/microchip/ksz8.h | 1 + drivers/net/dsa/microchip/ksz_common.h | 9 +++++++++ 3 files changed, 35 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz8.c b/drivers/net/dsa/microchip/k= sz8.c index c354abdafc1b..78b42cf50ce2 100644 --- a/drivers/net/dsa/microchip/ksz8.c +++ b/drivers/net/dsa/microchip/ksz8.c @@ -1989,6 +1989,10 @@ int ksz8_setup(struct dsa_switch *ds) ret =3D ksz_rmw8(dev, REG_INT_ENABLE, INT_PME, 0); } =20 + /* Check if errata on low loss cable should be applied */ + if (ksz_is_ksz87xx(dev)) + ksz87xx_parse_errata_dt(dev); + if (!ret) return ksz8_handle_global_errata(ds); else @@ -2096,6 +2100,27 @@ int ksz8463_w_phy(struct ksz_device *dev, u16 phy, u= 16 reg, u16 val) return 0; } =20 +void ksz87xx_parse_errata_dt(struct ksz_device *dev) +{ + struct device_node *np =3D dev->dev->of_node; + u32 mode; + int ret; + + dev->low_loss_wa_enable =3D of_property_read_bool(np, "microchip,low-loss= -errata-enable"); + + if (!dev->low_loss_wa_enable) { + dev->low_loss_wa_mode =3D KSZ_LOW_LOSS_WA_NONE; + return; + } + + ret =3D of_property_read_u32(np, "microchip,low-loss-errata", &mode); + + if (!ret && (mode =3D=3D 1 || mode =3D=3D 2)) + dev->low_loss_wa_mode =3D mode; + else + dev->low_loss_wa_mode =3D KSZ_LOW_LOSS_WA_1; +} + int ksz8_switch_init(struct ksz_device *dev) { dev->cpu_port =3D fls(dev->info->cpu_ports) - 1; diff --git a/drivers/net/dsa/microchip/ksz8.h b/drivers/net/dsa/microchip/k= sz8.h index 0f2cd1474b44..3a43769a4c53 100644 --- a/drivers/net/dsa/microchip/ksz8.h +++ b/drivers/net/dsa/microchip/ksz8.h @@ -66,5 +66,6 @@ int ksz8_all_queues_split(struct ksz_device *dev, int que= ues); u32 ksz8463_get_port_addr(int port, int offset); int ksz8463_r_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 *val); int ksz8463_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val); +void ksz87xx_parse_errata_dt(struct ksz_device *dev); =20 #endif diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/micro= chip/ksz_common.h index 929aff4c55de..f40e7bd20b3e 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -158,6 +158,12 @@ struct ksz_port { bool manual_flow; }; =20 +enum ksz_low_loss_wa_mode { + KSZ_LOW_LOSS_WA_NONE =3D 0, + KSZ_LOW_LOSS_WA_1 =3D 1, + KSZ_LOW_LOSS_WA_2 =3D 2, +}; + struct ksz_device { struct dsa_switch *ds; struct ksz_platform_data *pdata; @@ -219,6 +225,9 @@ struct ksz_device { * the switch=E2=80=99s internal PHYs, bypassing the main SPI interface. */ struct mii_bus *parent_mdio_bus; + + bool low_loss_wa_enable; /* low-loss cable errata activation */ + enum ksz_low_loss_wa_mode low_loss_wa_mode; /* low-loss cable Workaro= und to apply */ }; =20 /* List of supported models */ --=20 2.53.0 From nobody Thu Apr 2 22:20:06 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 52CE43BC665 for ; Thu, 26 Mar 2026 09:10:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774516256; cv=none; b=tZ2v5rhSlUFb9nPIlrHxcfABzNwQ2HJulFiEaE9LRzgnT0k++F/65jQMY2CeYHmqi/CS6UbVubppe8VlMEwy5+m/EgWCfL5EdPLfzkdjdZc8RkdPvWeAtjTM/vjIHBcJ49q1PEwNPsfUPAx57zyssFx4a3EhulDVCye5WOS8Ksk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774516256; c=relaxed/simple; bh=w8YrNU6qSKQOL4v7BNN0lhmGvLNAujqTaPgLpClW6ec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JBHFaFwhbolekRFVwIBvQ1YoJPLSI8kFBYaWzCqOhZmPrhCpN+w0vr9Nh6p0CjtD4mqFNrXFN38b6JtuHoi0+uvNLhIorKTGJMMtwqN8qBbh2qFbHt+zSOFarCjpc/ZrwIoH+XGZ7hhq+/HHItxpeT/OBTdpm0lHmp6RKKWCFuY= 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=QXglUfpy; arc=none smtp.client-ip=209.85.221.46 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="QXglUfpy" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-439b94a19fdso649138f8f.0 for ; Thu, 26 Mar 2026 02:10:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774516253; x=1775121053; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dALVgYOMBgS7RxAtSMkBHMyPuZ2ZR74RfMbaRb9k6oE=; b=QXglUfpyI7aTmqmedT1uMw8D7Jrw5J8ynj3Pl+PbZGYTefdBi2mg1aIH+Ut3bUhiKk C/YvWkCUVBTqfceZtxWuyuHwOlhpQotO4S9NqzLFA50xZb4reZge6Ancb6fy3JSCjMyb 9j2R3+Gwf2wurGuRmZEvRu4868CUKczgNsAEKWmiOuu7Fp5Jqb+DwCerlJY+5ONokErC t79JF2uJpfjT3Bgsu4mKxkBaaS3rg3IzTDrhrEa5LmgRTrMCck6fKC0X1LvxteMX2+jz OUf9+sKD2B+tdS3r75SxM7VfODw6jc281e0SZLY9GSdU753NhtpUzKHvCRt6vhxJ17Bn TnIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774516253; x=1775121053; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dALVgYOMBgS7RxAtSMkBHMyPuZ2ZR74RfMbaRb9k6oE=; b=HCRqQPKlG5Vxhy2R3OAG3YNKB5FrvUJgLUGDdI68IU2/bkV1Ef563n0K0f2JCc2Dcy 1A15/DoC0nNHOggwOknK9oedasEIbNZ+9UB3xn+pMwGhLkJACBRkrQt3QxftECho3XbX pZpZzoL+lia0IvKD9VMciegxhBDgckn2BWjwlMTJDTNwT9z/Zy4k8w/o0KVhc+U0Q/cS xouIlzgrPuXiFAdt5XVgK52O1Y12m472sOl3fT4U1DS/wt09R1OUF86SDkdCy84c6Mft jhf+psq5j1aaaFiBilJ+mhN1hwIOxMKSVggYm+oEi715uYXHyO1Afu4az80Xv8TapM/b 3Tsg== X-Forwarded-Encrypted: i=1; AJvYcCURDf8SGT2R3UmncAkNvWeY1Pjfb5srVKBaJ6gMLP7GteAiWABDRqj5dG118fdLZG0t+rfx+0nUXI+BdeQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyHZnpxW/+AsB9jtHwmkzLrV6hoc+VINyTWnqd3Ly8bMLztvZVu 1chvdYIyhqLItbNRw1i8ZpUXV6SJGwFBnt0AQhrEa5vBgJvZ3fnf/yxi X-Gm-Gg: ATEYQzwSdvYaFogTeCxRyKOweyEe8pEw+j7RFNK2WZqAosZxHuRcq8gd8tETaGe9l2P pV1XPSxn/rYYFwN4okw7+DsRE2e7BklomnlHigNoaF1ferO6N6oWh0/pTy/SdxyUWvb7cx6ryKp TtfN/C5hw5H2mf+pW8VKSiAxpg1pS7FCGvflWydLkEt4fyaW4bzOKKTF7aQbsztEvTCORp4st1a 2lwn8zYyDcexXzbw17zrD30BYm/t1VZU6jM7lRVwg8uoVyok+rpavw0POAlWIGGzKBmiGkj6yo0 69qNkGzCsbJ338K8rYvv7NQmE56TpztdXYqT1FkrSJOZzO/1JWl+rwj3PRaoIKNTnoKM6rFJdrz myzCUnknFur9tpu2abO9+CteJBx30uI6mMSM+rvWHY83K8WBO5ah6MZylyMm9cqZsvtOc6jUAze SPwQgFtqDJQFlMwFhpHAKaHlDswQJwhTQPbkCIancerWIsqFeOTKEP/v1Hv63sOA0qQn0no4tS0 DN34cI5Tg== X-Received: by 2002:a05:6000:2dc6:b0:43b:6955:54c5 with SMTP id ffacd0b85a97d-43b889a872bmr10137298f8f.17.1774516252624; Thu, 26 Mar 2026 02:10:52 -0700 (PDT) Received: from [127.0.1.1] (cust-east-par-46-193-119-166.cust.wifirst.net. [46.193.119.166]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b919e7111sm6381199f8f.37.2026.03.26.02.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Mar 2026 02:10:52 -0700 (PDT) From: Fidelio Lawson X-Google-Original-From: Fidelio Lawson Date: Thu, 26 Mar 2026 10:10:23 +0100 Subject: [PATCH 3/3] net: dsa: microchip: implement KSZ87xx Module 3 low-loss cable errata Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260326-ksz87xx_errata_low_loss_connections-v1-3-79a698f43626@exotec.com> References: <20260326-ksz87xx_errata_low_loss_connections-v1-0-79a698f43626@exotec.com> In-Reply-To: <20260326-ksz87xx_errata_low_loss_connections-v1-0-79a698f43626@exotec.com> To: Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Vasut , Maxime Chevallier Cc: Woojung Huh , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Fidelio Lawson X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774516248; l=2643; i=fidelio.lawson@exotec.com; s=20260326; h=from:subject:message-id; bh=w8YrNU6qSKQOL4v7BNN0lhmGvLNAujqTaPgLpClW6ec=; b=ReRyXn03/iqq1g302IExSUUnOqcX1cNBWKYHVKQtahzzDyBiFF6BkyKtE22QoN5DyKq3y5usX J/0HdTyjUIpD8Z+P6M2UwfkOgntEopq//CFHuJqKMzSorgPtPPGWSn6 X-Developer-Key: i=fidelio.lawson@exotec.com; a=ed25519; pk=866eH9Bmmpjc+ctgkr5T1uXxBefZzob3tEEuiVWZ6BI= Implement the "Module 3: Equalizer fix for short cables" erratum from Microchip document DS80000687C for KSZ87xx switches. The issue affects short or low-loss cable links (e.g. CAT5e/CAT6), where the PHY receiver equalizer may amplify high-amplitude signals excessively, resulting in internal distortion and link establishment failures. Depending on the selected workaround (1 or 2), the driver writes a specific value to the indirect PHY register using the 6E/6F/A0 indirect access mechanism. The errata fix is applied during global switch initialization when enabled via device tree. Signed-off-by: Fidelio Lawson --- drivers/net/dsa/microchip/ksz8.c | 46 ++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 46 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz8.c b/drivers/net/dsa/microchip/k= sz8.c index 78b42cf50ce2..b6f3a1ce85fc 100644 --- a/drivers/net/dsa/microchip/ksz8.c +++ b/drivers/net/dsa/microchip/ksz8.c @@ -1901,6 +1901,41 @@ void ksz8_phylink_mac_link_up(struct phylink_config = *config, ksz8_phy_port_link_up(dev, port, duplex, tx_pause, rx_pause); } =20 +static int ksz8_handle_module3_errata(struct ksz_device *dev) +{ + int ret =3D 0; + const u16 *regs =3D dev->info->regs; + u16 indir_reg =3D 0x0000; + u8 indir_val =3D 0x00; + + switch (dev->low_loss_wa_mode) { + case KSZ_LOW_LOSS_WA_1: + indir_reg =3D 0x3C; + indir_val =3D 0x15; + break; + case KSZ_LOW_LOSS_WA_2: + indir_reg =3D 0x4C; + indir_val =3D 0x40; + break; + default: + break; + } + + mutex_lock(&dev->alu_mutex); + + ret =3D ksz_write8(dev, regs[REG_IND_CTRL_0], 0xA0); + + if (!ret) + ret =3D ksz_write8(dev, 0x6F, indir_reg); + + if (!ret) + ret =3D ksz_write8(dev, regs[REG_IND_BYTE], indir_val); + + mutex_unlock(&dev->alu_mutex); + + return ret; +} + static int ksz8_handle_global_errata(struct dsa_switch *ds) { struct ksz_device *dev =3D ds->priv; @@ -1915,6 +1950,17 @@ static int ksz8_handle_global_errata(struct dsa_swit= ch *ds) if (dev->info->ksz87xx_eee_link_erratum) ret =3D ksz8_ind_write8(dev, TABLE_EEE, REG_IND_EEE_GLOB2_HI, 0); =20 + /* KSZ87xx Errata DS80000687C. + * Module 3: Equalizer fix for short cables + * The receiver of the embedded PHYs is tuned by default + * to support long cable length applications. + * Because of this, the equalizer in the PHY may amplify + * high amplitude receiver signals to the point that + * the signal is distorted internally + */ + if (!ret && dev->low_loss_wa_enable && ksz_is_ksz87xx(dev)) + ret =3D ksz8_handle_module3_errata(dev); + return ret; } =20 --=20 2.53.0