From nobody Fri Apr 3 00:00:02 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