From nobody Sun Feb 8 14:59:25 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 5B01F3BB4A; Fri, 16 Jan 2026 00:08:08 +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=1768522089; cv=none; b=TqO3sjls8qjG0TLHDsoeK+IEjYW0qgMRBECcsjBGgzNaB/C1KVna7S7HW386b3I4YGP0MsyBMNSVhCqoDHLimg350u1wcQqVy07BOPT6iPi5Yrv7zfLHIr9NmH3bLhIS+cfJiEnCjr5g4wdv5YfvJFppQ9dq88Yr/G9jbLpnhiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768522089; c=relaxed/simple; bh=he2o5intyrOjV+NrjU2oHE/I+EjiYieX2DwVVB3MErM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=mNSTVFJCNHKPDqUS57Kbd8DDKwFX6wn5jcfDuegTah7sysGHqXimTrk5HKM70Vwk2iOLdYKUQIshGoC4UaeWEkSptRFApkEQZNW0ya6EWs5aZFIA8bdf8LKQu53y1qK5BjgdixtwV2WWSASa355dmh1H3AultFnDtRkHIX0zDus= 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 1vgXNj-000000007Zh-472j; Fri, 16 Jan 2026 00:08:04 +0000 Date: Fri, 16 Jan 2026 00:08:01 +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 v3 6/6] net: dsa: mxl-gsw1xx: add support for Intel GSW150 Message-ID: <72ec93c733c3c23320b7b04be935e8fa236af74d.1768519376.git.daniel@makrotopia.org> 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" Add support for the Intel GSW150 (aka. Lantiq PEB7084) switch IC to the mxl-gsw1xx driver. This switch comes with 5 Gigabit Ethernet copper ports (Intel XWAY PHY11G (xRX v1.2 integrated) PHYs) as well as one GMII/RGMII and one RGMII port. Signed-off-by: Daniel Golle --- v3: enclose the gswip_hw_info initializers in compiler diag exception to prevent triggering -Woverride-init v2: clean-up phylink_get_caps drivers/net/dsa/lantiq/mxl-gsw1xx.c | 61 ++++++++++++++++++++++++++--- drivers/net/dsa/lantiq/mxl-gsw1xx.h | 2 + 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/drivers/net/dsa/lantiq/mxl-gsw1xx.c b/drivers/net/dsa/lantiq/m= xl-gsw1xx.c index 54cf7aab3bfe4..0d18b79647064 100644 --- a/drivers/net/dsa/lantiq/mxl-gsw1xx.c +++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.c @@ -503,6 +503,14 @@ static const struct phylink_pcs_ops gsw1xx_pcs_ops =3D= { .pcs_link_up =3D gsw1xx_pcs_link_up, }; =20 +static void gsw1xx_phylink_get_lpi_caps(struct phylink_config *config) +{ + config->lpi_capabilities =3D MAC_100FD | MAC_1000FD; + config->lpi_timer_default =3D 20; + memcpy(config->lpi_interfaces, config->supported_interfaces, + sizeof(config->lpi_interfaces)); +} + static void gsw1xx_phylink_get_caps(struct dsa_switch *ds, int port, struct phylink_config *config) { @@ -536,10 +544,32 @@ static void gsw1xx_phylink_get_caps(struct dsa_switch= *ds, int port, break; } =20 - config->lpi_capabilities =3D MAC_100FD | MAC_1000FD; - config->lpi_timer_default =3D 20; - memcpy(config->lpi_interfaces, config->supported_interfaces, - sizeof(config->lpi_interfaces)); + gsw1xx_phylink_get_lpi_caps(config); +} + +static void gsw150_phylink_get_caps(struct dsa_switch *ds, int port, + struct phylink_config *config) +{ + config->mac_capabilities =3D MAC_ASYM_PAUSE | MAC_SYM_PAUSE | + MAC_10 | MAC_100 | MAC_1000; + + switch (port) { + case 0 ... 4: /* built-in PHYs */ + __set_bit(PHY_INTERFACE_MODE_INTERNAL, + config->supported_interfaces); + break; + + case 5: /* GMII or RGMII */ + __set_bit(PHY_INTERFACE_MODE_GMII, + config->supported_interfaces); + fallthrough; + + case 6: /* RGMII */ + phy_interface_set_rgmii(config->supported_interfaces); + break; + } + + gsw1xx_phylink_get_lpi_caps(config); } =20 static struct phylink_pcs *gsw1xx_phylink_mac_select_pcs(struct phylink_co= nfig *config, @@ -768,6 +798,25 @@ static const struct gswip_hw_info gsw141_data =3D { .tag_protocol =3D DSA_TAG_PROTO_MXL_GSW1XX, }; =20 +static const struct gswip_hw_info gsw150_data =3D { + .max_ports =3D GSW150_PORTS, + .allowed_cpu_ports =3D BIT(5) | BIT(6), + .mii_cfg =3D { + [0 ... GSWIP_MAX_PORTS - 1] =3D -1, + [5] =3D 0, + [6] =3D 10, + }, + .mii_pcdu =3D { + [0 ... GSWIP_MAX_PORTS - 1] =3D -1, + [5] =3D 1, + [6] =3D 11, + }, + .phylink_get_caps =3D gsw150_phylink_get_caps, + .pce_microcode =3D &gsw1xx_pce_microcode, + .pce_microcode_size =3D ARRAY_SIZE(gsw1xx_pce_microcode), + .tag_protocol =3D DSA_TAG_PROTO_MXL_GSW1XX, +}; + __diag_pop(); =20 /* @@ -775,6 +824,8 @@ __diag_pop(); * GSW145 is the industrial temperature version of GSW140. */ static const struct of_device_id gsw1xx_of_match[] =3D { + { .compatible =3D "intel,gsw150", .data =3D &gsw150_data }, + { .compatible =3D "lantiq,peb7084", .data =3D &gsw150_data }, { .compatible =3D "maxlinear,gsw120", .data =3D &gsw12x_data }, { .compatible =3D "maxlinear,gsw125", .data =3D &gsw12x_data }, { .compatible =3D "maxlinear,gsw140", .data =3D &gsw140_data }, @@ -798,5 +849,5 @@ static struct mdio_driver gsw1xx_driver =3D { mdio_module_driver(gsw1xx_driver); =20 MODULE_AUTHOR("Daniel Golle "); -MODULE_DESCRIPTION("Driver for MaxLinear GSW1xx ethernet switch"); +MODULE_DESCRIPTION("Driver for Intel/MaxLinear GSW1xx Ethernet switch"); MODULE_LICENSE("GPL"); diff --git a/drivers/net/dsa/lantiq/mxl-gsw1xx.h b/drivers/net/dsa/lantiq/m= xl-gsw1xx.h index 38e03c048a26c..087587f62e5e1 100644 --- a/drivers/net/dsa/lantiq/mxl-gsw1xx.h +++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.h @@ -10,6 +10,8 @@ #include =20 #define GSW1XX_PORTS 6 +#define GSW150_PORTS 7 + /* Port used for RGMII or optional RMII */ #define GSW1XX_MII_PORT 5 /* Port used for SGMII */ --=20 2.52.0