[PATCH 2/2] bus: fsl-mc: Convert to bus callbacks

Uwe Kleine-König posted 2 patches 2 months, 1 week ago
[PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Uwe Kleine-König 2 months, 1 week ago
With the eventual goal to drop .probe(), .remove() and .shutdown() from
struct device_driver, convert the fsl bus to use bus methods.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 drivers/bus/fsl-mc/fsl-mc-bus.c | 70 +++++++++++++++------------------
 1 file changed, 32 insertions(+), 38 deletions(-)

diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c b/drivers/bus/fsl-mc/fsl-mc-bus.c
index 0f0a5067f109..6bc163d2ca49 100644
--- a/drivers/bus/fsl-mc/fsl-mc-bus.c
+++ b/drivers/bus/fsl-mc/fsl-mc-bus.c
@@ -137,6 +137,35 @@ static int fsl_mc_bus_uevent(const struct device *dev, struct kobj_uevent_env *e
 	return 0;
 }
 
+static int fsl_mc_probe(struct device *dev)
+{
+	struct fsl_mc_driver *mc_drv = to_fsl_mc_driver(dev->driver);
+	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
+
+	if (mc_drv->probe)
+		return mc_drv->probe(mc_dev);
+
+	return 0;
+}
+
+static void fsl_mc_remove(struct device *dev)
+{
+	struct fsl_mc_driver *mc_drv = to_fsl_mc_driver(dev->driver);
+	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
+
+	if (mc_drv->remove)
+		mc_drv->remove(mc_dev);
+}
+
+static void fsl_mc_shutdown(struct device *dev)
+{
+	struct fsl_mc_driver *mc_drv = to_fsl_mc_driver(dev->driver);
+	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
+
+	if (mc_drv->shutdown)
+		mc_drv->shutdown(mc_dev);
+}
+
 static int fsl_mc_dma_configure(struct device *dev)
 {
 	const struct device_driver *drv = READ_ONCE(dev->driver);
@@ -314,6 +343,9 @@ const struct bus_type fsl_mc_bus_type = {
 	.name = "fsl-mc",
 	.match = fsl_mc_bus_match,
 	.uevent = fsl_mc_bus_uevent,
+	.probe = fsl_mc_probe,
+	.remove = fsl_mc_remove,
+	.shutdown = fsl_mc_shutdown,
 	.dma_configure  = fsl_mc_dma_configure,
 	.dma_cleanup = fsl_mc_dma_cleanup,
 	.dev_groups = fsl_mc_dev_groups,
@@ -434,35 +466,6 @@ static const struct device_type *fsl_mc_get_device_type(const char *type)
 	return NULL;
 }
 
-static int fsl_mc_driver_probe(struct device *dev)
-{
-	struct fsl_mc_driver *mc_drv;
-	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
-	int error;
-
-	mc_drv = to_fsl_mc_driver(dev->driver);
-
-	return mc_drv->probe(mc_dev);
-}
-
-static int fsl_mc_driver_remove(struct device *dev)
-{
-	struct fsl_mc_driver *mc_drv = to_fsl_mc_driver(dev->driver);
-	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
-
-	mc_drv->remove(mc_dev);
-
-	return 0;
-}
-
-static void fsl_mc_driver_shutdown(struct device *dev)
-{
-	struct fsl_mc_driver *mc_drv = to_fsl_mc_driver(dev->driver);
-	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
-
-	mc_drv->shutdown(mc_dev);
-}
-
 /*
  * __fsl_mc_driver_register - registers a child device driver with the
  * MC bus
@@ -479,15 +482,6 @@ int __fsl_mc_driver_register(struct fsl_mc_driver *mc_driver,
 	mc_driver->driver.owner = owner;
 	mc_driver->driver.bus = &fsl_mc_bus_type;
 
-	if (mc_driver->probe)
-		mc_driver->driver.probe = fsl_mc_driver_probe;
-
-	if (mc_driver->remove)
-		mc_driver->driver.remove = fsl_mc_driver_remove;
-
-	if (mc_driver->shutdown)
-		mc_driver->driver.shutdown = fsl_mc_driver_shutdown;
-
 	error = driver_register(&mc_driver->driver);
 	if (error < 0) {
 		pr_err("driver_register() failed for %s: %d\n",
-- 
2.47.3

Re: [PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Uwe Kleine-König 2 months ago
Hello,

On Tue, Dec 02, 2025 at 03:09:20PM +0100, Uwe Kleine-König wrote:
> diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c b/drivers/bus/fsl-mc/fsl-mc-bus.c
> index 0f0a5067f109..6bc163d2ca49 100644
> --- a/drivers/bus/fsl-mc/fsl-mc-bus.c
> +++ b/drivers/bus/fsl-mc/fsl-mc-bus.c
> [...]
> +static void fsl_mc_shutdown(struct device *dev)
> +{
> +	struct fsl_mc_driver *mc_drv = to_fsl_mc_driver(dev->driver);
> +	struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
> +
> +	if (mc_drv->shutdown)
> +		mc_drv->shutdown(mc_dev);
> +}

As the bus callback for shutdown is also called for unbound devices, the
condition has to be

	if (dev->driver && mc_drv->shutdown)
 		
Can you please squash this in, or should I resend?

Best regards
Uwe
Re: [PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Greg Kroah-Hartman 2 months, 1 week ago
On Tue, Dec 02, 2025 at 03:09:20PM +0100, Uwe Kleine-König wrote:
> With the eventual goal to drop .probe(), .remove() and .shutdown() from
> struct device_driver, convert the fsl bus to use bus methods.

We can drop those functions?  Ok, that would be nice, didn't realize it
would be possible!

So, looks good to me:

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Re: [PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Uwe Kleine-König 2 months, 1 week ago
Hello Greg,

On Tue, Dec 02, 2025 at 03:48:05PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Dec 02, 2025 at 03:09:20PM +0100, Uwe Kleine-König wrote:
> > With the eventual goal to drop .probe(), .remove() and .shutdown() from
> > struct device_driver, convert the fsl bus to use bus methods.
> 
> We can drop those functions?  Ok, that would be nice, didn't realize it
> would be possible!

I think we discussed that some time ago when I tackled making the
remove callbacks return void. When I said I want to make
device_driver->remove also return void I think it was you who said
to better convert the users to bus functions. So that's me doing what
you said :-)

I wonder what the merge plan for this series is. The last changes to
drivers/fsl-mc were merged by Christophe Leroy (added to Cc:)

Best regards
Uwe
Re: [PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Christophe Leroy (CS GROUP) 2 months, 1 week ago

Le 02/12/2025 à 17:07, Uwe Kleine-König a écrit :
> Hello Greg,
> 
> On Tue, Dec 02, 2025 at 03:48:05PM +0100, Greg Kroah-Hartman wrote:
>> On Tue, Dec 02, 2025 at 03:09:20PM +0100, Uwe Kleine-König wrote:
>>> With the eventual goal to drop .probe(), .remove() and .shutdown() from
>>> struct device_driver, convert the fsl bus to use bus methods.
>>
>> We can drop those functions?  Ok, that would be nice, didn't realize it
>> would be possible!
> 
> I think we discussed that some time ago when I tackled making the
> remove callbacks return void. When I said I want to make
> device_driver->remove also return void I think it was you who said
> to better convert the users to bus functions. So that's me doing what
> you said :-)
> 
> I wonder what the merge plan for this series is. The last changes to
> drivers/fsl-mc were merged by Christophe Leroy (added to Cc:)

As per 
https://lore.kernel.org/all/2xzljdzktgpsyag5jhfwbxc2sroaacljecsq36hlxefu6jnz6g@zlorxu7niqnq/

Also see commit 586739b1e8b1 ("MAINTAINERS: add the linuppc-dev list to 
the fsl-mc bus entry")

It is a bit late for v6.19 though, will go in v6.20 ?

Christophe
Re: [PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Uwe Kleine-König 2 months, 1 week ago
Hello Christophe,

On Tue, Dec 02, 2025 at 06:47:52PM +0100, Christophe Leroy (CS GROUP) wrote:
> Le 02/12/2025 à 17:07, Uwe Kleine-König a écrit :
> > I wonder what the merge plan for this series is. The last changes to
> > drivers/fsl-mc were merged by Christophe Leroy (added to Cc:)
> 
> As per https://lore.kernel.org/all/2xzljdzktgpsyag5jhfwbxc2sroaacljecsq36hlxefu6jnz6g@zlorxu7niqnq/
> 
> Also see commit 586739b1e8b1 ("MAINTAINERS: add the linuppc-dev list to the
> fsl-mc bus entry")

Ok, the fact that was unexpected by me is, that you, as the one who
picks up patches, are not listed in MAINTAINERS. But it seems to work
fine.

> It is a bit late for v6.19 though, will go in v6.20 ?

I'm in no hurry, getting it into 6.20 is completely fine for me. Thanks
for picking my patches up.

Best regards
Uwe
Re: [PATCH 2/2] bus: fsl-mc: Convert to bus callbacks
Posted by Christophe Leroy (CS GROUP) 2 months, 1 week ago

Le 02/12/2025 à 23:34, Uwe Kleine-König a écrit :
> Hello Christophe,
> 
> On Tue, Dec 02, 2025 at 06:47:52PM +0100, Christophe Leroy (CS GROUP) wrote:
>> Le 02/12/2025 à 17:07, Uwe Kleine-König a écrit :
>>> I wonder what the merge plan for this series is. The last changes to
>>> drivers/fsl-mc were merged by Christophe Leroy (added to Cc:)
>>
>> As per https://lore.kernel.org/all/2xzljdzktgpsyag5jhfwbxc2sroaacljecsq36hlxefu6jnz6g@zlorxu7niqnq/
>>
>> Also see commit 586739b1e8b1 ("MAINTAINERS: add the linuppc-dev list to the
>> fsl-mc bus entry")
> 
> Ok, the fact that was unexpected by me is, that you, as the one who
> picks up patches, are not listed in MAINTAINERS. But it seems to work
> fine.

Yup, the maintainer is Ioana but she has no git tree. I usually take the 
patches once she has reviewed or acked them.

> 
>> It is a bit late for v6.19 though, will go in v6.20 ?
> 
> I'm in no hurry, getting it into 6.20 is completely fine for me. Thanks
> for picking my patches up.
> 
> Best regards
> Uwe