From nobody Sun Feb 8 07:14:31 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 C238B239E9B; Sat, 17 Jan 2026 01:20:59 +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=1768612861; cv=none; b=C6ZxRpaio0DAhMfNV3NwnNJ1RDXlTHQae6osTrzRvlqBQUAI7IoFcvH+3rwmC8TeDEIWgr6B5AOag80pkcs9PWQvvkjPB+BRJU04r87gnXi5TJNsfKhFE2kbk86sm6mpEP7AixIZTOu/8DXnU0GxPtxIDZYVeyzw6MckGbzZkGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768612861; c=relaxed/simple; bh=wQe1KUmhtXFtuHse+RJjRFiDsdIU97rospHiXuY2RKQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=U+FWFONMNK+32Cbz1nXTTCte2lgEB5JJPHIwO7kLTjMB8z0mfhuml3msSD6xDTZZtV6rx2iUYwi6ff3s7ps4KjsA9H1WTjpjyL9zTLubEmECxGLYXW4Qj8YvMgy5W/8Cq/a7hUtXLCbRWkoFWnCSWLOY5Mxv4XNgJRqwEKtU7I8= 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 1vguzn-000000005HJ-1WsI; Sat, 17 Jan 2026 01:20:55 +0000 Date: Sat, 17 Jan 2026 01:20:52 +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 v4 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 --- 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 b86608cc1439c..acc89fba2fcdd 100644 --- a/drivers/net/dsa/lantiq/mxl-gsw1xx.c +++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.c @@ -578,6 +578,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; @@ -630,20 +652,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