From nobody Sun Feb 8 11:16:20 2026 Received: from pidgin.makrotopia.org (pidgin.makrotopia.org [185.142.180.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBC54357A2F; Thu, 22 Jan 2026 16:39:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.142.180.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769099976; cv=none; b=FidAYBWnHCL7NO+Xc7t8KJS2xzEMJJooJHKCmI9ix1LeKngeX9OWhvw6a7i6gUkS3BxgszAIXpgF7ylYMCRsLcakjW9O5vdP5kNsIVlqSeGg/4kFHaBvjuKym8jk88Lj3ftVbcblSf2/td2jp5PLaVLbKJu4R4ResLgVfuvCMhY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769099976; c=relaxed/simple; bh=BcUs3GJ/DNPCIe5L/+Bm2foqHbeMpC18YNl7ARu5+/U=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=UjWr5iwwAfSxLk/Bvp7GExtUGBRSFWqfFlvv+DyjzFTrh25QBzlJnBTUMIcByMOuKSdbpqzynsBpo4t4MCmPCM0jJMAlGL0cEQ6bWmWLJIVm146hh06IyMX1KL0nXbe0VCZjtDC9D7kL3P8tU8coPQEVtAwFQGGYXMKtiDARZbQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=makrotopia.org; spf=pass smtp.mailfrom=makrotopia.org; arc=none smtp.client-ip=185.142.180.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=makrotopia.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=makrotopia.org Received: from local by pidgin.makrotopia.org with esmtpsa (TLS1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.99) (envelope-from ) id 1vixiQ-000000001Ro-1qVL; Thu, 22 Jan 2026 16:39:26 +0000 Date: Thu, 22 Jan 2026 16:39:23 +0000 From: Daniel Golle To: Hauke Mehrtens , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Russell King , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Chen Minqiang , Xinfa Deng Subject: [PATCH net-next v6 5/6] net: dsa: mxl-gsw1xx: only setup SerDes PCS if it exists Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Older Intel GSW150 chip doesn't have a SGMII/1000Base-X/2500Base-X PCS. Prepare for supporting Intel GSW150 by skipping PCS reset and initialization in case no .mac_select_pcs operation is defined. Signed-off-by: Daniel Golle --- v6: rebase on top of current net-next v5: no changes v4: no changes v3: no changes v2: new patch drivers/net/dsa/lantiq/mxl-gsw1xx.c | 37 ++++++++++++++++++----------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/drivers/net/dsa/lantiq/mxl-gsw1xx.c b/drivers/net/dsa/lantiq/m= xl-gsw1xx.c index ba72111a53ad0..c6fa93229349a 100644 --- a/drivers/net/dsa/lantiq/mxl-gsw1xx.c +++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.c @@ -615,6 +615,28 @@ static struct regmap *gsw1xx_regmap_init(struct gsw1xx= _priv *priv, priv, &config); } =20 +static int gsw1xx_serdes_pcs_init(struct gsw1xx_priv *priv) +{ + /* do nothing if the chip doesn't have a SerDes PCS */ + if (!priv->gswip.hw_info->mac_select_pcs) + return 0; + + priv->pcs.ops =3D &gsw1xx_pcs_ops; + priv->pcs.poll =3D true; + __set_bit(PHY_INTERFACE_MODE_SGMII, + priv->pcs.supported_interfaces); + __set_bit(PHY_INTERFACE_MODE_1000BASEX, + priv->pcs.supported_interfaces); + if (priv->gswip.hw_info->supports_2500m) + __set_bit(PHY_INTERFACE_MODE_2500BASEX, + priv->pcs.supported_interfaces); + priv->tbi_interface =3D PHY_INTERFACE_MODE_NA; + + /* assert SGMII reset to power down SGMII unit */ + return regmap_set_bits(priv->shell, GSW1XX_SHELL_RST_REQ, + GSW1XX_RST_REQ_SGMII_SHELL); +} + static int gsw1xx_probe(struct mdio_device *mdiodev) { struct device *dev =3D &mdiodev->dev; @@ -667,20 +689,7 @@ static int gsw1xx_probe(struct mdio_device *mdiodev) if (IS_ERR(priv->shell)) return PTR_ERR(priv->shell); =20 - priv->pcs.ops =3D &gsw1xx_pcs_ops; - priv->pcs.poll =3D true; - __set_bit(PHY_INTERFACE_MODE_SGMII, - priv->pcs.supported_interfaces); - __set_bit(PHY_INTERFACE_MODE_1000BASEX, - priv->pcs.supported_interfaces); - if (priv->gswip.hw_info->supports_2500m) - __set_bit(PHY_INTERFACE_MODE_2500BASEX, - priv->pcs.supported_interfaces); - priv->tbi_interface =3D PHY_INTERFACE_MODE_NA; - - /* assert SGMII reset to power down SGMII unit */ - ret =3D regmap_set_bits(priv->shell, GSW1XX_SHELL_RST_REQ, - GSW1XX_RST_REQ_SGMII_SHELL); + ret =3D gsw1xx_serdes_pcs_init(priv); if (ret < 0) return ret; =20 --=20 2.52.0