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 [李琼斯]
next prev parent 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).