netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lee Jones <lee@kernel.org>
To: Vladimir Oltean <vladimir.oltean@nxp.com>
Cc: netdev@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next 08/15] net: dsa: sja1105: transition OF-based MDIO drivers to standalone
Date: Thu, 20 Nov 2025 14:40:46 +0000	[thread overview]
Message-ID: <20251120144046.GE661940@google.com> (raw)
In-Reply-To: <20251118190530.580267-9-vladimir.oltean@nxp.com>

On Tue, 18 Nov 2025, Vladimir Oltean wrote:

> Delete the duplicated drivers for 100base-T1 and 100base-TX from the DSA
> driver, and use devm_mfd_add_devices() to platform devices which probe
> on the dedicated drivers from drivers/net/mdio/. This makes the switch
> act as a sort of bus driver for devices in the "mdios" subnode.
> 
> We can use mfd because the switch driver interacts with the PHYs from
> these MDIO buses exclusively using phylink, which follows "phy-handle"
> fwnode references to them.
> 
> Cc: Lee Jones <lee@kernel.org>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
> ---
>  drivers/net/dsa/sja1105/Kconfig        |   1 +
>  drivers/net/dsa/sja1105/Makefile       |   1 +
>  drivers/net/dsa/sja1105/sja1105.h      |   4 -
>  drivers/net/dsa/sja1105/sja1105_main.c |  13 ++
>  drivers/net/dsa/sja1105/sja1105_mdio.c | 270 +------------------------
>  drivers/net/dsa/sja1105/sja1105_mfd.c  |  69 +++++++
>  drivers/net/dsa/sja1105/sja1105_mfd.h  |   9 +
>  drivers/net/dsa/sja1105/sja1105_spi.c  |   6 -
>  8 files changed, 94 insertions(+), 279 deletions(-)
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_mfd.c
>  create mode 100644 drivers/net/dsa/sja1105/sja1105_mfd.h
> 
> diff --git a/drivers/net/dsa/sja1105/Kconfig b/drivers/net/dsa/sja1105/Kconfig
> index 1291bba3f3b6..932bca545d69 100644
> --- a/drivers/net/dsa/sja1105/Kconfig
> +++ b/drivers/net/dsa/sja1105/Kconfig
> @@ -7,6 +7,7 @@ tristate "NXP SJA1105 Ethernet switch family support"
>  	select PCS_XPCS
>  	select PACKING
>  	select CRC32
> +	select MFD_CORE
>  	help
>  	  This is the driver for the NXP SJA1105 (5-port) and SJA1110 (10-port)
>  	  automotive Ethernet switch family. These are managed over an SPI
> diff --git a/drivers/net/dsa/sja1105/Makefile b/drivers/net/dsa/sja1105/Makefile
> index 40d69e6c0bae..3ac2d77dbe6c 100644
> --- a/drivers/net/dsa/sja1105/Makefile
> +++ b/drivers/net/dsa/sja1105/Makefile
> @@ -5,6 +5,7 @@ sja1105-objs := \
>      sja1105_spi.o \
>      sja1105_main.o \
>      sja1105_mdio.o \
> +    sja1105_mfd.o \
>      sja1105_flower.o \
>      sja1105_ethtool.o \
>      sja1105_devlink.o \
> diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h
> index 4fd6121bd07f..ff6b69663851 100644
> --- a/drivers/net/dsa/sja1105/sja1105.h
> +++ b/drivers/net/dsa/sja1105/sja1105.h
> @@ -91,8 +91,6 @@ struct sja1105_regs {
>  	u64 rmii_ref_clk[SJA1105_MAX_NUM_PORTS];
>  	u64 rmii_ext_tx_clk[SJA1105_MAX_NUM_PORTS];
>  	u64 stats[__MAX_SJA1105_STATS_AREA][SJA1105_MAX_NUM_PORTS];
> -	u64 mdio_100base_tx;
> -	u64 mdio_100base_t1;
>  	u64 pcs_base[SJA1105_MAX_NUM_PORTS];
>  };
>  
> @@ -279,8 +277,6 @@ struct sja1105_private {
>  	struct regmap *regmap;
>  	struct devlink_region **regions;
>  	struct sja1105_cbs_entry *cbs;
> -	struct mii_bus *mdio_base_t1;
> -	struct mii_bus *mdio_base_tx;
>  	struct mii_bus *mdio_pcs;
>  	struct phylink_pcs *pcs[SJA1105_MAX_NUM_PORTS];
>  	struct sja1105_ptp_data ptp_data;
> diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
> index 622264c13fdb..6da5c655dae7 100644
> --- a/drivers/net/dsa/sja1105/sja1105_main.c
> +++ b/drivers/net/dsa/sja1105/sja1105_main.c
> @@ -23,6 +23,7 @@
>  #include <linux/units.h>
>  
>  #include "sja1105.h"
> +#include "sja1105_mfd.h"
>  #include "sja1105_tas.h"
>  
>  #define SJA1105_UNKNOWN_MULTICAST	0x010000000000ull
> @@ -3316,6 +3317,11 @@ static int sja1105_probe(struct spi_device *spi)
>  	if (priv->max_xfer_len > max_msg - SJA1105_SIZE_SPI_MSG_HEADER)
>  		priv->max_xfer_len = max_msg - SJA1105_SIZE_SPI_MSG_HEADER;
>  
> +	/* Explicitly advertise "no DMA" support, to suppress
> +	 * "DMA mask not set" warning in MFD children
> +	 */
> +	dev->dma_mask = &dev->coherent_dma_mask;
> +
>  	priv->info = of_device_get_match_data(dev);
>  
>  	rc = sja1105_create_regmap(priv);
> @@ -3356,6 +3362,13 @@ static int sja1105_probe(struct spi_device *spi)
>  		return rc;
>  	}
>  
> +	rc = sja1105_mfd_add_devices(ds);
> +	if (rc) {
> +		dev_err(ds->dev, "Failed to create child devices: %pe\n",
> +			ERR_PTR(rc));
> +		return rc;
> +	}
> +
>  	if (IS_ENABLED(CONFIG_NET_SCH_CBS)) {
>  		priv->cbs = devm_kcalloc(dev, priv->info->num_cbs_shapers,
>  					 sizeof(struct sja1105_cbs_entry),
> diff --git a/drivers/net/dsa/sja1105/sja1105_mdio.c b/drivers/net/dsa/sja1105/sja1105_mdio.c
> index 8d535c033cef..b803ce71f5cc 100644
> --- a/drivers/net/dsa/sja1105/sja1105_mdio.c
> +++ b/drivers/net/dsa/sja1105/sja1105_mdio.c
> @@ -133,238 +133,6 @@ int sja1110_pcs_mdio_write_c45(struct mii_bus *bus, int phy, int mmd, int reg,
>  				&tmp, NULL);

[...]

> diff --git a/drivers/net/dsa/sja1105/sja1105_mfd.c b/drivers/net/dsa/sja1105/sja1105_mfd.c
> new file mode 100644
> index 000000000000..9e60cd3b5d01
> --- /dev/null
> +++ b/drivers/net/dsa/sja1105/sja1105_mfd.c
> @@ -0,0 +1,69 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Copyright 2025 NXP
> + */
> +#include <linux/ioport.h>
> +#include <linux/mfd/core.h>

The MFD API is not to be {ab}used out side of drivers/mfd.

Maybe of_platform_populate() will scratch your itch instead.

[...]

-- 
Lee Jones [李琼斯]

  reply	other threads:[~2025-11-20 14:40 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-18 19:05 [PATCH net-next 00/15] Probe SJA1105 DSA children using MFD and dynamic OF nodes Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 01/15] net: dsa: sja1105: let phylink help with the replay of link callbacks Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 02/15] net: mdio-regmap: permit working with non-MMIO regmaps Vladimir Oltean
2025-11-20 14:35   ` Maxime Chevallier
2025-11-18 19:05 ` [PATCH net-next 03/15] net: mdio: add driver for NXP SJA1110 100BASE-T1 embedded PHYs Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 04/15] net: mdio: add generic driver for NXP SJA1110 100BASE-TX " Vladimir Oltean
2025-11-20 17:55   ` Maxime Chevallier
2025-11-20 18:49     ` Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 05/15] net: dsa: sja1105: prepare regmap for passing to child devices Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 06/15] net: dsa: sja1105: include spi.h from sja1105.h Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 07/15] mfd: core: add ability for cells to probe on a custom parent OF node Vladimir Oltean
2025-11-20 14:41   ` Lee Jones
2025-11-20 15:36     ` Vladimir Oltean
2025-11-21 12:06       ` Lee Jones
2025-11-21 17:03         ` Vladimir Oltean
2025-11-26 10:20           ` Lee Jones
2025-12-15 15:50           ` Lee Jones
2025-12-16  0:29             ` Vladimir Oltean
2025-12-16  9:18               ` Lee Jones
2025-12-16 16:24                 ` Vladimir Oltean
2025-12-17  9:31                 ` Andrew Lunn
2025-11-18 19:05 ` [PATCH net-next 08/15] net: dsa: sja1105: transition OF-based MDIO drivers to standalone Vladimir Oltean
2025-11-20 14:40   ` Lee Jones [this message]
2025-11-20 15:14     ` Vladimir Oltean
2025-11-20 16:36       ` Lee Jones
2025-11-20 19:59         ` Vladimir Oltean
2025-11-21 12:00           ` Lee Jones
2025-11-18 19:05 ` [PATCH net-next 09/15] net: dsa: sja1105: remove sja1105_mdio_private Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 10/15] net: pcs: xpcs: introduce xpcs_create_pcs_fwnode() Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 11/15] net: pcs: xpcs-plat: convert to regmap Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 12/15] dt-bindings: net: dsa: sja1105: document the PCS nodes Vladimir Oltean
2025-11-20 17:30   ` Rob Herring
2025-11-18 19:05 ` [PATCH net-next 13/15] net: pcs: xpcs-plat: add NXP SJA1105/SJA1110 support Vladimir Oltean
2025-11-18 19:05 ` [PATCH net-next 14/15] net: dsa: sja1105: replace mdiobus-pcs with xpcs-plat driver Vladimir Oltean
2025-11-19  0:41   ` Jakub Kicinski
2025-11-19  9:59     ` Vladimir Oltean
2025-11-19 10:31       ` Andy Shevchenko
2025-11-19 11:25         ` Vladimir Oltean
2025-11-19 16:11           ` Jakub Kicinski
2025-11-19 16:17             ` Andy Shevchenko
2025-11-19 17:23               ` Russell King (Oracle)
2025-11-19 17:39                 ` Andy Shevchenko
2025-11-19 18:35                   ` Jakub Kicinski
2025-11-19 19:33                     ` Andy Shevchenko
2025-11-20 12:32             ` Russell King (Oracle)
2025-11-20 15:00               ` Jakub Kicinski
2025-11-19 11:19   ` kernel test robot
2025-11-19 12:01     ` Vladimir Oltean
2025-11-19 12:03       ` Russell King (Oracle)
2025-11-19 12:05         ` Russell King (Oracle)
2025-11-19 13:28           ` Vladimir Oltean
2025-11-19 12:01   ` kernel test robot
2025-11-20  0:01   ` kernel test robot
2025-11-18 19:05 ` [PATCH net-next 15/15] net: dsa: sja1105: permit finding the XPCS via pcs-handle Vladimir Oltean

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251120144046.GE661940@google.com \
    --to=lee@kernel.org \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=vladimir.oltean@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).