[PATCH v2 00/20] Make some spi device drivers return zero in .remove()
Uwe Kleine-König
u.kleine-koenig at pengutronix.de
Tue Oct 12 08:39:25 PDT 2021
Hello,
this is v2 of my quest to make spi remove callbacks return void. Today
they return an int, but the only result of returning a non-zero value is
a warning message. So it's a bad idea to return an error code in the
expectation that not freeing some resources is ok then. The same holds
true for i2c and platform devices which benefit en passant for a few
drivers.
The patches in this series address some of the spi drivers that might
return non-zero and adapt them accordingly to return zero instead. For
most drivers it's just about not hiding the fact that they already
return zero.
Given that there are quite some more patches of this type to create
before I can change the spi remove callback, I suggest the respective
subsystem maintainers pick up these patches. There are no
interdependencies in this series.
Compared to (implicit) v1
- I fixed a few compiler issues (this series it build tested with an
allmoddefconfig on arm64, m68k, powerpc, riscv, s390, sparc64 and
x86_64).
- A few new patches (2x gpio, 2x misc, 4x mtd)
- One patch already landed in next, this one I dropped. The drm/panel
patch as claimed to applied, too, but not yet in next. It's included
here, but I assume I was just too impatient and this one should be
ignored.
Full range-diff below.
Best regards
Uwe
Uwe Kleine-König (20):
drm/panel: s6e63m0: Make s6e63m0_remove() return void
gpio: max730x: Make __max730x_remove() return void
gpio: mc33880: Drop if with an always false condition
hwmon: max31722: Warn about failure to put device in stand-by in
.remove()
input: adxl34xx: Make adxl34x_remove() return void
input: touchscreen: tsc200x: Make tsc200x_remove() return void
media: cxd2880: Eliminate dead code
mfd: mc13xxx: Make mc13xxx_common_exit() return void
mfd: stmpe: Make stmpe_remove() return void
mfd: tps65912: Make tps65912_device_exit() return void
misc: ad525x_dpot: Make ad_dpot_remove() return void
misc: lis3lv02d: Make lis3lv02d_remove_fs() return void
mtd: dataflash: Warn about failure to unregister mtd device
mtd: mchp23k256: Warn about failure to unregister mtd device
mtd: mchp48l640: Warn about failure to unregister mtd device
mtd: sst25l: Warn about failure to unregister mtd device
serial: max310x: Make max310x_remove() return void
serial: sc16is7xx: Make sc16is7xx_remove() return void
staging: fbtft: Make fbtft_remove_common() return void
tpm: st33zp24: Make st33zp24_remove() return void
drivers/char/tpm/st33zp24/i2c.c | 5 +----
drivers/char/tpm/st33zp24/spi.c | 5 +----
drivers/char/tpm/st33zp24/st33zp24.c | 3 +--
drivers/char/tpm/st33zp24/st33zp24.h | 2 +-
drivers/gpio/gpio-max7300.c | 4 +++-
drivers/gpio/gpio-max7301.c | 4 +++-
drivers/gpio/gpio-max730x.c | 6 +-----
drivers/gpio/gpio-mc33880.c | 2 --
drivers/gpu/drm/panel/panel-samsung-s6e63m0-dsi.c | 3 ++-
drivers/gpu/drm/panel/panel-samsung-s6e63m0-spi.c | 3 ++-
drivers/gpu/drm/panel/panel-samsung-s6e63m0.c | 4 +---
drivers/gpu/drm/panel/panel-samsung-s6e63m0.h | 2 +-
drivers/hwmon/max31722.c | 8 +++++++-
drivers/input/misc/adxl34x-i2c.c | 4 +++-
drivers/input/misc/adxl34x-spi.c | 4 +++-
drivers/input/misc/adxl34x.c | 4 +---
drivers/input/misc/adxl34x.h | 2 +-
drivers/input/touchscreen/tsc2004.c | 4 +++-
drivers/input/touchscreen/tsc2005.c | 4 +++-
drivers/input/touchscreen/tsc200x-core.c | 4 +---
drivers/input/touchscreen/tsc200x-core.h | 2 +-
drivers/media/spi/cxd2880-spi.c | 13 +------------
drivers/mfd/mc13xxx-core.c | 4 +---
drivers/mfd/mc13xxx-i2c.c | 3 ++-
drivers/mfd/mc13xxx-spi.c | 3 ++-
drivers/mfd/mc13xxx.h | 2 +-
drivers/mfd/stmpe-i2c.c | 4 +++-
drivers/mfd/stmpe-spi.c | 4 +++-
drivers/mfd/stmpe.c | 4 +---
drivers/mfd/stmpe.h | 2 +-
drivers/mfd/tps65912-core.c | 4 +---
drivers/mfd/tps65912-i2c.c | 4 +++-
drivers/mfd/tps65912-spi.c | 4 +++-
drivers/misc/ad525x_dpot-i2c.c | 3 ++-
drivers/misc/ad525x_dpot-spi.c | 3 ++-
drivers/misc/ad525x_dpot.c | 4 +---
drivers/misc/ad525x_dpot.h | 2 +-
drivers/misc/lis3lv02d/lis3lv02d.c | 3 +--
drivers/misc/lis3lv02d/lis3lv02d.h | 2 +-
drivers/misc/lis3lv02d/lis3lv02d_spi.c | 4 +++-
drivers/mtd/devices/mchp23k256.c | 9 ++++++++-
drivers/mtd/devices/mchp48l640.c | 8 +++++++-
drivers/mtd/devices/mtd_dataflash.c | 5 ++++-
drivers/mtd/devices/sst25l.c | 8 +++++++-
drivers/platform/x86/hp_accel.c | 3 ++-
drivers/staging/fbtft/fbtft-core.c | 8 +-------
drivers/staging/fbtft/fbtft.h | 8 +++++---
drivers/tty/serial/max310x.c | 7 +++----
drivers/tty/serial/sc16is7xx.c | 12 +++++++-----
include/linux/mfd/tps65912.h | 2 +-
include/linux/spi/max7301.h | 2 +-
51 files changed, 119 insertions(+), 104 deletions(-)
Range-diff against v1:
1: 73a1a54d9ea0 = 1: 87fd7940fbfd drm/panel: s6e63m0: Make s6e63m0_remove() return void
2: 3bcc8e8bd1a3 < -: ------------ hwmon: adt7x10: Make adt7x10_remove() return void
-: ------------ > 2: 305311d63bbb gpio: max730x: Make __max730x_remove() return void
-: ------------ > 3: 0cafc31ea5c5 gpio: mc33880: Drop if with an always false condition
3: 07f067732aa9 ! 4: f39467b50f06 hwmon: max31722: Warn about failure to put device in stand-by in .remove()
@@ Commit message
nothing happens apart from emitting a generic error message. Make this
error message more device specific and return zero instead.
- Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
Acked-by: Michael Hennerich <michael.hennerich at analog.com>
+ Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
## drivers/hwmon/max31722.c ##
@@ drivers/hwmon/max31722.c: static int max31722_probe(struct spi_device *spi)
4: 0b0a5497d105 = 5: de3a78214008 input: adxl34xx: Make adxl34x_remove() return void
5: 0d4f14bc2dd6 ! 6: 9629ac3f9e13 input: touchscreen: tsc200x: Make tsc200x_remove() return void
@@ drivers/input/touchscreen/tsc2005.c: static int tsc2005_probe(struct spi_device
- return tsc200x_remove(&spi->dev);
+ tsc200x_remove(&spi->dev);
+
-+ return 0
++ return 0;
}
#ifdef CONFIG_OF
6: a68bbd23223b = 7: 1aab41df9262 media: cxd2880: Eliminate dead code
7: 3801b37ac18f ! 8: 745d1a5f840e mfd: mc13xxx: Make mc13xxx_common_exit() return void
@@ drivers/mfd/mc13xxx-spi.c: static int mc13xxx_spi_probe(struct spi_device *spi)
{
- return mc13xxx_common_exit(&spi->dev);
+ mc13xxx_common_exit(&spi->dev);
-+ return 0
++ return 0;
}
static struct spi_driver mc13xxx_spi_driver = {
8: 22159093ce71 = 9: 7ee04277db66 mfd: stmpe: Make stmpe_remove() return void
9: f91da216c752 = 10: 4a21c90a57f8 mfd: tps65912: Make tps65912_device_exit() return void
-: ------------ > 11: f92aa824fd1c misc: ad525x_dpot: Make ad_dpot_remove() return void
-: ------------ > 12: 5b2fccd09a24 misc: lis3lv02d: Make lis3lv02d_remove_fs() return void
-: ------------ > 13: 609ab18323fc mtd: dataflash: Warn about failure to unregister mtd device
-: ------------ > 14: 3b220d5fa547 mtd: mchp23k256: Warn about failure to unregister mtd device
-: ------------ > 15: baf6f4b3a8c7 mtd: mchp48l640: Warn about failure to unregister mtd device
-: ------------ > 16: edf3788a30b0 mtd: sst25l: Warn about failure to unregister mtd device
10: f2def77b74d1 ! 17: 614f7c001377 serial: max310x: Make max310x_remove() return void
@@ drivers/tty/serial/max310x.c: static int max310x_spi_probe(struct spi_device *sp
{
- return max310x_remove(&spi->dev);
+ max310x_remove(&spi->dev);
-+ return 0
++ return 0;
}
static const struct spi_device_id max310x_id_table[] = {
11: 283e4bbeff38 ! 18: 35d1f5b36de5 serial: sc16is7xx: Make sc16is7xx_remove() return void
@@ drivers/tty/serial/sc16is7xx.c: static int sc16is7xx_probe(struct device *dev,
{
struct sc16is7xx_port *s = dev_get_drvdata(dev);
int i;
+@@ drivers/tty/serial/sc16is7xx.c: static int sc16is7xx_remove(struct device *dev)
+ kthread_stop(s->kworker_task);
+
+ clk_disable_unprepare(s->clk);
+-
+- return 0;
+ }
+
+ static const struct of_device_id __maybe_unused sc16is7xx_dt_ids[] = {
@@ drivers/tty/serial/sc16is7xx.c: static int sc16is7xx_spi_probe(struct spi_device *spi)
static int sc16is7xx_spi_remove(struct spi_device *spi)
12: 5093fbdceee5 ! 19: d9ec9a96fbb8 staging: fbtft: Make fbtft_remove_common() return void
@@ drivers/staging/fbtft/fbtft-core.c: EXPORT_SYMBOL(fbtft_probe_common);
## drivers/staging/fbtft/fbtft.h ##
+@@ drivers/staging/fbtft/fbtft.h: void fbtft_unregister_backlight(struct fbtft_par *par);
+ int fbtft_init_display(struct fbtft_par *par);
+ int fbtft_probe_common(struct fbtft_display *display, struct spi_device *sdev,
+ struct platform_device *pdev);
+-int fbtft_remove_common(struct device *dev, struct fb_info *info);
++void fbtft_remove_common(struct device *dev, struct fb_info *info);
+
+ /* fbtft-io.c */
+ int fbtft_write_spi(struct fbtft_par *par, void *buf, size_t len);
@@ drivers/staging/fbtft/fbtft.h: static int fbtft_driver_remove_spi(struct spi_device *spi) \
{ \
struct fb_info *info = spi_get_drvdata(spi); \
13: 9156e6380a5e = 20: 89d0b85968a9 tpm: st33zp24: Make st33zp24_remove() return void
base-commit: 9e1ff307c779ce1f0f810c7ecce3d95bbae40896
--
2.30.2
More information about the linux-mtd
mailing list