siox: Don't pass the reference on a master in siox_master_register()

While it's technically fine to pass the ownership of the reference on
a struct siox_master from the caller of siox_master_register() to the
framework this is hard to use. Instead let the framework take its own
reference (that is freed in siox_master_unregister()) and drop the bus
driver's reference in its remove callback.

Acked-by: Thorsten Scherer <t.scherer@eckelmann.de>
Link: https://lore.kernel.org/r/1e8d09d17848e58e8fc6a46278b5e8fb0cf4618a.1708328466.git.u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
This commit is contained in:
Uwe Kleine-König 2024-02-19 08:46:29 +01:00
parent 6613476e22
commit 2c12932b8e
2 changed files with 4 additions and 0 deletions

View File

@ -149,6 +149,8 @@ static int siox_gpio_remove(struct platform_device *pdev)
siox_master_unregister(master);
siox_master_put(master);
return 0;
}

View File

@ -717,6 +717,8 @@ int siox_master_register(struct siox_master *smaster)
if (!smaster->pushpull)
return -EINVAL;
get_device(&smaster->dev);
dev_set_name(&smaster->dev, "siox-%d", smaster->busno);
mutex_init(&smaster->lock);