* [PATCH 00/89] i2c: Convert to platform remove callback returning void
@ 2023-05-08 20:51 Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 37/89] i2c: microchip-corei2c: " Uwe Kleine-König
0 siblings, 1 reply; 3+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:51 UTC (permalink / raw)
To: Thor Thayer, Elie Morisse, Shyam Sundar S K, Brendan Higgins,
Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Wolfram Sang, ye xingchen, Krzysztof Adamski,
Ray Jui, Scott Branden, Greg Kroah-Hartman, Allison Randal,
Thomas Gleixner, Florian Fainelli, Wolfram Sang, Kamal Dasu,
Michal Simek, Hans de Goede, Jochen Friedrich, Benson Leung,
Krzysztof Kozlowski, Bartosz Golaszewski, Jarkko Nikula,
Baruch Siach, Jean-Marie Verdun, Nick Hawkins, Dong Aisheng,
Shawn Guo, Sascha Hauer, Oleksij Rempel, Jean Delvare,
Paul Cercueil, Chris Pringle, Vladimir Zapolskiy, Neil Armstrong,
Kevin Hilman, Julia Lawall, Conor Dooley, Daire McNamara,
Khalil Blaiech, Asmaa Mnebhi, Vadim Pasternak, Michael Shych,
Chris Packham, Qii Wang, Matthias Brugger, Stefan Roese,
Gregory CLEMENT, Matthias Schiffer, Stefan Wahren, Avi Fishman,
Tomer Maimon, Tali Perry, Peter Korsgaard, Andrew Lunn,
Robert Richter, Tony Lindgren, Aaro Koskinen, Janusz Krzysztofik,
Vignesh R, Michael Ellerman, Hector Martin, Sven Peter,
Rob Herring, Srinivas Kandagatla, Sebastian Reichel,
Miquel Raynal, Loic Poulain, Robert Foss, Andy Gross,
Bjorn Andersson, Chris Brandt, Heiko Stuebner, Phil Edworthy,
Andy Shevchenko, Philipp Zabel, Jim Cromie, Patrice Chotard,
Pierre-Yves MORDRET, Alain Volmat, Maxime Coquelin,
Alexandre Torgue, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
Ard Biesheuvel, Thierry Reding, Jonathan Hunter, Laxman Dewangan,
Kunihiko Hayashi, Masami Hiramatsu, Linus Walleij, Andi Shyti,
Wei Chen, George Cherian, Peter Rosin, Peter Korsgaard
Cc: linux-i2c, kernel, Benjamin Herrenschmidt, Joel Stanley,
Andrew Jeffery, openbmc, linux-arm-kernel, linux-aspeed,
Broadcom internal kernel review list, linux-rpi-kernel,
linuxppc-dev, Guenter Roeck, chrome-platform, Mika Westerberg,
Jan Dabros, linux-renesas-soc, Alim Akhtar, linux-samsung-soc,
Fabio Estevam, NXP Linux Team, linux-mips, Jerome Brunet,
Martin Blumenstingl, linux-amlogic, linux-riscv,
AngeloGioacchino Del Regno, linux-mediatek, Patrick Venture,
Nancy Yuen, Benjamin Fair, linux-omap, Nicholas Piggin,
Christophe Leroy, Alyssa Rosenzweig, asahi, linux-arm-msm,
Konrad Dybcio, linux-rockchip, linux-stm32, linux-sunxi,
linux-tegra, Dmitry Osipenko
Hello,
this series convers the drivers below drivers/i2c to the .remove_new()
callback of struct platform_driver(). The motivation is to make the
remove callback less prone for errors and wrong assumptions. See commit
5c5a7680e67b ("platform: Provide a remove callback that returns no
value") for a more detailed rationale.
All but one driver already returned zero unconditionally in their
.remove() callback, so converting them to .remove_new() is trivial.
i2c-davinci has two patches in this series, first the error path is
improved to not return an error code, then it's converted as the others
drivers are.
The two davinci patches are also the only interdependency in this
series. I was unsure if I should split the series in two, the busses and
the mux changes; if convenient these can be applied independent of each
other.
Best regards
Uwe
Uwe Kleine-König (89):
i2c: altera: Convert to platform remove callback returning void
i2c: amd-mp2-plat: Convert to platform remove callback returning void
i2c: aspeed: Convert to platform remove callback returning void
i2c: at91-core: Convert to platform remove callback returning void
i2c: au1550: Convert to platform remove callback returning void
i2c: axxia: Convert to platform remove callback returning void
i2c: bcm-iproc: Convert to platform remove callback returning void
i2c: bcm-kona: Convert to platform remove callback returning void
i2c: bcm2835: Convert to platform remove callback returning void
i2c: brcmstb: Convert to platform remove callback returning void
i2c: cadence: Convert to platform remove callback returning void
i2c: cbus-gpio: Convert to platform remove callback returning void
i2c: cht-wc: Convert to platform remove callback returning void
i2c: cpm: Convert to platform remove callback returning void
i2c: cros-ec-tunnel: Convert to platform remove callback returning
void
i2c: davinci: Improve error reporting for problems during .remove()
i2c: davinci: Convert to platform remove callback returning void
i2c: designware-platdrv: Convert to platform remove callback returning
void
i2c: digicolor: Convert to platform remove callback returning void
i2c: dln2: Convert to platform remove callback returning void
i2c: emev2: Convert to platform remove callback returning void
i2c: exynos5: Convert to platform remove callback returning void
i2c: gpio: Convert to platform remove callback returning void
i2c: gxp: Convert to platform remove callback returning void
i2c: highlander: Convert to platform remove callback returning void
i2c: hix5hd2: Convert to platform remove callback returning void
i2c: ibm_iic: Convert to platform remove callback returning void
i2c: img-scb: Convert to platform remove callback returning void
i2c: imx-lpi2c: Convert to platform remove callback returning void
i2c: imx: Convert to platform remove callback returning void
i2c: iop3xx: Convert to platform remove callback returning void
i2c: isch: Convert to platform remove callback returning void
i2c: jz4780: Convert to platform remove callback returning void
i2c: kempld: Convert to platform remove callback returning void
i2c: lpc2k: Convert to platform remove callback returning void
i2c: meson: Convert to platform remove callback returning void
i2c: microchip-corei2c: Convert to platform remove callback returning
void
i2c: mlxbf: Convert to platform remove callback returning void
i2c: mlxcpld: Convert to platform remove callback returning void
i2c: mpc: Convert to platform remove callback returning void
i2c: mt65xx: Convert to platform remove callback returning void
i2c: mt7621: Convert to platform remove callback returning void
i2c: mv64xxx: Convert to platform remove callback returning void
i2c: mxs: Convert to platform remove callback returning void
i2c: npcm7xx: Convert to platform remove callback returning void
i2c: ocores: Convert to platform remove callback returning void
i2c: octeon-platdrv: Convert to platform remove callback returning
void
i2c: omap: Convert to platform remove callback returning void
i2c: opal: Convert to platform remove callback returning void
i2c: pasemi-platform: Convert to platform remove callback returning
void
i2c: pca-platform: Convert to platform remove callback returning void
i2c: pnx: Convert to platform remove callback returning void
i2c: powermac: Convert to platform remove callback returning void
i2c: pxa: Convert to platform remove callback returning void
i2c: qcom-cci: Convert to platform remove callback returning void
i2c: qcom-geni: Convert to platform remove callback returning void
i2c: qup: Convert to platform remove callback returning void
i2c: rcar: Convert to platform remove callback returning void
i2c: riic: Convert to platform remove callback returning void
i2c: rk3x: Convert to platform remove callback returning void
i2c: rzv2m: Convert to platform remove callback returning void
i2c: s3c2410: Convert to platform remove callback returning void
i2c: scmi: Convert to platform remove callback returning void
i2c: scx200_acb: Convert to platform remove callback returning void
i2c: sh7760: Convert to platform remove callback returning void
i2c: sh_mobile: Convert to platform remove callback returning void
i2c: simtec: Convert to platform remove callback returning void
i2c: st: Convert to platform remove callback returning void
i2c: stm32f4: Convert to platform remove callback returning void
i2c: stm32f7: Convert to platform remove callback returning void
i2c: sun6i-p2wi: Convert to platform remove callback returning void
i2c: synquacer: Convert to platform remove callback returning void
i2c: tegra-bpmp: Convert to platform remove callback returning void
i2c: tegra: Convert to platform remove callback returning void
i2c: uniphier-f: Convert to platform remove callback returning void
i2c: uniphier: Convert to platform remove callback returning void
i2c: versatile: Convert to platform remove callback returning void
i2c: viperboard: Convert to platform remove callback returning void
i2c: wmt: Convert to platform remove callback returning void
i2c: xgene-slimpro: Convert to platform remove callback returning void
i2c: xiic: Convert to platform remove callback returning void
i2c: xlp9xx: Convert to platform remove callback returning void
i2c: mux: arb-gpio-challenge: Convert to platform remove callback
returning void
i2c: mux: demux-pinctrl: Convert to platform remove callback returning
void
i2c: mux: gpio: Convert to platform remove callback returning void
i2c: mux: gpmux: Convert to platform remove callback returning void
i2c: mux: mlxcpld: Convert to platform remove callback returning void
i2c: mux: pinctrl: Convert to platform remove callback returning void
i2c: mux: reg: Convert to platform remove callback returning void
drivers/i2c/busses/i2c-altera.c | 6 ++----
drivers/i2c/busses/i2c-amd-mp2-plat.c | 5 ++---
drivers/i2c/busses/i2c-aspeed.c | 6 ++----
drivers/i2c/busses/i2c-at91-core.c | 6 ++----
drivers/i2c/busses/i2c-au1550.c | 5 ++---
drivers/i2c/busses/i2c-axxia.c | 6 ++----
drivers/i2c/busses/i2c-bcm-iproc.c | 6 ++----
drivers/i2c/busses/i2c-bcm-kona.c | 6 ++----
drivers/i2c/busses/i2c-bcm2835.c | 6 ++----
drivers/i2c/busses/i2c-brcmstb.c | 5 ++---
drivers/i2c/busses/i2c-cadence.c | 6 ++----
drivers/i2c/busses/i2c-cbus-gpio.c | 6 ++----
drivers/i2c/busses/i2c-cht-wc.c | 6 ++----
drivers/i2c/busses/i2c-cpm.c | 6 ++----
drivers/i2c/busses/i2c-cros-ec-tunnel.c | 6 ++----
drivers/i2c/busses/i2c-davinci.c | 14 ++++++--------
drivers/i2c/busses/i2c-designware-platdrv.c | 6 ++----
drivers/i2c/busses/i2c-digicolor.c | 6 ++----
drivers/i2c/busses/i2c-dln2.c | 6 ++----
drivers/i2c/busses/i2c-emev2.c | 6 ++----
drivers/i2c/busses/i2c-exynos5.c | 6 ++----
drivers/i2c/busses/i2c-gpio.c | 6 ++----
drivers/i2c/busses/i2c-gxp.c | 6 ++----
drivers/i2c/busses/i2c-highlander.c | 6 ++----
drivers/i2c/busses/i2c-hix5hd2.c | 6 ++----
drivers/i2c/busses/i2c-ibm_iic.c | 6 ++----
drivers/i2c/busses/i2c-img-scb.c | 6 ++----
drivers/i2c/busses/i2c-imx-lpi2c.c | 6 ++----
drivers/i2c/busses/i2c-imx.c | 6 ++----
drivers/i2c/busses/i2c-iop3xx.c | 6 ++----
drivers/i2c/busses/i2c-isch.c | 6 ++----
drivers/i2c/busses/i2c-jz4780.c | 5 ++---
drivers/i2c/busses/i2c-kempld.c | 6 ++----
drivers/i2c/busses/i2c-lpc2k.c | 6 ++----
drivers/i2c/busses/i2c-meson.c | 6 ++----
drivers/i2c/busses/i2c-microchip-corei2c.c | 6 ++----
drivers/i2c/busses/i2c-mlxbf.c | 6 ++----
drivers/i2c/busses/i2c-mlxcpld.c | 6 ++----
drivers/i2c/busses/i2c-mpc.c | 6 ++----
drivers/i2c/busses/i2c-mt65xx.c | 6 ++----
drivers/i2c/busses/i2c-mt7621.c | 6 ++----
drivers/i2c/busses/i2c-mv64xxx.c | 6 ++----
drivers/i2c/busses/i2c-mxs.c | 6 ++----
drivers/i2c/busses/i2c-npcm7xx.c | 5 ++---
drivers/i2c/busses/i2c-ocores.c | 6 ++----
drivers/i2c/busses/i2c-octeon-platdrv.c | 5 ++---
drivers/i2c/busses/i2c-omap.c | 6 ++----
drivers/i2c/busses/i2c-opal.c | 6 ++----
drivers/i2c/busses/i2c-pasemi-platform.c | 5 ++---
drivers/i2c/busses/i2c-pca-platform.c | 6 ++----
drivers/i2c/busses/i2c-pnx.c | 6 ++----
drivers/i2c/busses/i2c-powermac.c | 6 ++----
drivers/i2c/busses/i2c-pxa.c | 6 ++----
drivers/i2c/busses/i2c-qcom-cci.c | 6 ++----
drivers/i2c/busses/i2c-qcom-geni.c | 5 ++---
drivers/i2c/busses/i2c-qup.c | 5 ++---
drivers/i2c/busses/i2c-rcar.c | 6 ++----
drivers/i2c/busses/i2c-riic.c | 6 ++----
drivers/i2c/busses/i2c-rk3x.c | 6 ++----
drivers/i2c/busses/i2c-rzv2m.c | 6 ++----
drivers/i2c/busses/i2c-s3c2410.c | 6 ++----
drivers/i2c/busses/i2c-scmi.c | 6 ++----
drivers/i2c/busses/i2c-sh7760.c | 6 ++----
drivers/i2c/busses/i2c-sh_mobile.c | 5 ++---
drivers/i2c/busses/i2c-simtec.c | 6 ++----
drivers/i2c/busses/i2c-st.c | 6 ++----
drivers/i2c/busses/i2c-stm32f4.c | 6 ++----
drivers/i2c/busses/i2c-stm32f7.c | 6 ++----
drivers/i2c/busses/i2c-sun6i-p2wi.c | 6 ++----
drivers/i2c/busses/i2c-synquacer.c | 6 ++----
drivers/i2c/busses/i2c-tegra-bpmp.c | 6 ++----
drivers/i2c/busses/i2c-tegra.c | 6 ++----
drivers/i2c/busses/i2c-uniphier-f.c | 6 ++----
drivers/i2c/busses/i2c-uniphier.c | 6 ++----
drivers/i2c/busses/i2c-versatile.c | 5 ++---
drivers/i2c/busses/i2c-viperboard.c | 6 ++----
drivers/i2c/busses/i2c-wmt.c | 6 ++----
drivers/i2c/busses/i2c-xgene-slimpro.c | 6 ++----
drivers/i2c/busses/i2c-xiic.c | 6 ++----
drivers/i2c/busses/i2c-xlp9xx.c | 6 ++----
drivers/i2c/busses/scx200_acb.c | 6 ++----
drivers/i2c/muxes/i2c-arb-gpio-challenge.c | 5 ++---
drivers/i2c/muxes/i2c-demux-pinctrl.c | 6 ++----
drivers/i2c/muxes/i2c-mux-gpio.c | 6 ++----
drivers/i2c/muxes/i2c-mux-gpmux.c | 6 ++----
drivers/i2c/muxes/i2c-mux-mlxcpld.c | 5 ++---
drivers/i2c/muxes/i2c-mux-pinctrl.c | 6 ++----
drivers/i2c/muxes/i2c-mux-reg.c | 6 ++----
88 files changed, 180 insertions(+), 343 deletions(-)
base-commit: ac9a78681b921877518763ba0e89202254349d1b
--
2.39.2
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 37/89] i2c: microchip-corei2c: Convert to platform remove callback returning void
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
@ 2023-05-08 20:52 ` Uwe Kleine-König
2023-05-08 21:00 ` Conor Dooley
0 siblings, 1 reply; 3+ messages in thread
From: Uwe Kleine-König @ 2023-05-08 20:52 UTC (permalink / raw)
To: Conor Dooley, Daire McNamara, Wolfram Sang; +Cc: linux-riscv, linux-i2c, kernel
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is (mostly) ignored
and this typically results in resource leaks. To improve here there is a
quest to make the remove callback return void. In the first step of this
quest all drivers are converted to .remove_new() which already returns
void.
Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
drivers/i2c/busses/i2c-microchip-corei2c.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-microchip-corei2c.c b/drivers/i2c/busses/i2c-microchip-corei2c.c
index 4d7e9b25f018..7f58f7eaabb6 100644
--- a/drivers/i2c/busses/i2c-microchip-corei2c.c
+++ b/drivers/i2c/busses/i2c-microchip-corei2c.c
@@ -446,14 +446,12 @@ static int mchp_corei2c_probe(struct platform_device *pdev)
return 0;
}
-static int mchp_corei2c_remove(struct platform_device *pdev)
+static void mchp_corei2c_remove(struct platform_device *pdev)
{
struct mchp_corei2c_dev *idev = platform_get_drvdata(pdev);
clk_disable_unprepare(idev->i2c_clk);
i2c_del_adapter(&idev->adapter);
-
- return 0;
}
static const struct of_device_id mchp_corei2c_of_match[] = {
@@ -465,7 +463,7 @@ MODULE_DEVICE_TABLE(of, mchp_corei2c_of_match);
static struct platform_driver mchp_corei2c_driver = {
.probe = mchp_corei2c_probe,
- .remove = mchp_corei2c_remove,
+ .remove_new = mchp_corei2c_remove,
.driver = {
.name = "microchip-corei2c",
.of_match_table = mchp_corei2c_of_match,
--
2.39.2
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 37/89] i2c: microchip-corei2c: Convert to platform remove callback returning void
2023-05-08 20:52 ` [PATCH 37/89] i2c: microchip-corei2c: " Uwe Kleine-König
@ 2023-05-08 21:00 ` Conor Dooley
0 siblings, 0 replies; 3+ messages in thread
From: Conor Dooley @ 2023-05-08 21:00 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Conor Dooley, Daire McNamara, Wolfram Sang, linux-riscv,
linux-i2c, kernel
[-- Attachment #1.1: Type: text/plain, Size: 798 bytes --]
On Mon, May 08, 2023 at 10:52:14PM +0200, Uwe Kleine-König wrote:
> The .remove() callback for a platform driver returns an int which makes
> many driver authors wrongly assume it's possible to do error handling by
> returning an error code. However the value returned is (mostly) ignored
> and this typically results in resource leaks. To improve here there is a
> quest to make the remove callback return void. In the first step of this
> quest all drivers are converted to .remove_new() which already returns
> void.
>
> Trivially convert this driver from always returning zero in the remove
> callback to the void returning variant.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Thanks,
Conor.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
[-- Attachment #2: Type: text/plain, Size: 161 bytes --]
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-05-08 21:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-08 20:51 [PATCH 00/89] i2c: Convert to platform remove callback returning void Uwe Kleine-König
2023-05-08 20:52 ` [PATCH 37/89] i2c: microchip-corei2c: " Uwe Kleine-König
2023-05-08 21:00 ` Conor Dooley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox