Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: st_sensors: remove all driver remove functions

At this point all ST driver remove functions do iio_device_unregister().
This change removes them from them and replaces all iio_device_register()
with devm_iio_device_register().

This can be done in a single change relatively easy, since all these remove
functions are define in st_sensors.h.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Alexandru Ardelean <aardelean@deviqon.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20210823112204.243255-5-aardelean@deviqon.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Alexandru Ardelean and committed by
Jonathan Cameron
6b658c31 5363c6c1

+9 -139
+2 -7
drivers/iio/accel/st_accel_core.c
··· 1335 1335 { 1336 1336 struct st_sensor_data *adata = iio_priv(indio_dev); 1337 1337 struct st_sensors_platform_data *pdata = dev_get_platdata(adata->dev); 1338 + struct device *parent = indio_dev->dev.parent; 1338 1339 int err; 1339 1340 1340 1341 indio_dev->modes = INDIO_DIRECT_MODE; ··· 1381 1380 return err; 1382 1381 } 1383 1382 1384 - return iio_device_register(indio_dev); 1383 + return devm_iio_device_register(parent, indio_dev); 1385 1384 } 1386 1385 EXPORT_SYMBOL(st_accel_common_probe); 1387 - 1388 - void st_accel_common_remove(struct iio_dev *indio_dev) 1389 - { 1390 - iio_device_unregister(indio_dev); 1391 - } 1392 - EXPORT_SYMBOL(st_accel_common_remove); 1393 1386 1394 1387 MODULE_AUTHOR("Denis Ciocca <denis.ciocca@st.com>"); 1395 1388 MODULE_DESCRIPTION("STMicroelectronics accelerometers driver");
-10
drivers/iio/accel/st_accel_i2c.c
··· 180 180 return st_accel_common_probe(indio_dev); 181 181 } 182 182 183 - static int st_accel_i2c_remove(struct i2c_client *client) 184 - { 185 - struct iio_dev *indio_dev = i2c_get_clientdata(client); 186 - 187 - st_accel_common_remove(indio_dev); 188 - 189 - return 0; 190 - } 191 - 192 183 static struct i2c_driver st_accel_driver = { 193 184 .driver = { 194 185 .name = "st-accel-i2c", ··· 187 196 .acpi_match_table = ACPI_PTR(st_accel_acpi_match), 188 197 }, 189 198 .probe_new = st_accel_i2c_probe, 190 - .remove = st_accel_i2c_remove, 191 199 .id_table = st_accel_id_table, 192 200 }; 193 201 module_i2c_driver(st_accel_driver);
-10
drivers/iio/accel/st_accel_spi.c
··· 130 130 return st_accel_common_probe(indio_dev); 131 131 } 132 132 133 - static int st_accel_spi_remove(struct spi_device *spi) 134 - { 135 - struct iio_dev *indio_dev = spi_get_drvdata(spi); 136 - 137 - st_accel_common_remove(indio_dev); 138 - 139 - return 0; 140 - } 141 - 142 133 static const struct spi_device_id st_accel_id_table[] = { 143 134 { LIS3DH_ACCEL_DEV_NAME }, 144 135 { LSM330D_ACCEL_DEV_NAME }, ··· 157 166 .of_match_table = st_accel_of_match, 158 167 }, 159 168 .probe = st_accel_spi_probe, 160 - .remove = st_accel_spi_remove, 161 169 .id_table = st_accel_id_table, 162 170 }; 163 171 module_spi_driver(st_accel_driver);
+2 -7
drivers/iio/gyro/st_gyro_core.c
··· 478 478 { 479 479 struct st_sensor_data *gdata = iio_priv(indio_dev); 480 480 struct st_sensors_platform_data *pdata; 481 + struct device *parent = indio_dev->dev.parent; 481 482 int err; 482 483 483 484 indio_dev->modes = INDIO_DIRECT_MODE; ··· 516 515 return err; 517 516 } 518 517 519 - return iio_device_register(indio_dev); 518 + return devm_iio_device_register(parent, indio_dev); 520 519 } 521 520 EXPORT_SYMBOL(st_gyro_common_probe); 522 - 523 - void st_gyro_common_remove(struct iio_dev *indio_dev) 524 - { 525 - iio_device_unregister(indio_dev); 526 - } 527 - EXPORT_SYMBOL(st_gyro_common_remove); 528 521 529 522 MODULE_AUTHOR("Denis Ciocca <denis.ciocca@st.com>"); 530 523 MODULE_DESCRIPTION("STMicroelectronics gyroscopes driver");
-10
drivers/iio/gyro/st_gyro_i2c.c
··· 93 93 return st_gyro_common_probe(indio_dev); 94 94 } 95 95 96 - static int st_gyro_i2c_remove(struct i2c_client *client) 97 - { 98 - struct iio_dev *indio_dev = i2c_get_clientdata(client); 99 - 100 - st_gyro_common_remove(indio_dev); 101 - 102 - return 0; 103 - } 104 - 105 96 static const struct i2c_device_id st_gyro_id_table[] = { 106 97 { L3G4200D_GYRO_DEV_NAME }, 107 98 { LSM330D_GYRO_DEV_NAME }, ··· 113 122 .of_match_table = st_gyro_of_match, 114 123 }, 115 124 .probe = st_gyro_i2c_probe, 116 - .remove = st_gyro_i2c_remove, 117 125 .id_table = st_gyro_id_table, 118 126 }; 119 127 module_i2c_driver(st_gyro_driver);
-10
drivers/iio/gyro/st_gyro_spi.c
··· 97 97 return st_gyro_common_probe(indio_dev); 98 98 } 99 99 100 - static int st_gyro_spi_remove(struct spi_device *spi) 101 - { 102 - struct iio_dev *indio_dev = spi_get_drvdata(spi); 103 - 104 - st_gyro_common_remove(indio_dev); 105 - 106 - return 0; 107 - } 108 - 109 100 static const struct spi_device_id st_gyro_id_table[] = { 110 101 { L3G4200D_GYRO_DEV_NAME }, 111 102 { LSM330D_GYRO_DEV_NAME }, ··· 117 126 .of_match_table = st_gyro_of_match, 118 127 }, 119 128 .probe = st_gyro_spi_probe, 120 - .remove = st_gyro_spi_remove, 121 129 .id_table = st_gyro_id_table, 122 130 }; 123 131 module_spi_driver(st_gyro_driver);
-1
drivers/iio/imu/st_lsm9ds0/st_lsm9ds0.h
··· 18 18 }; 19 19 20 20 int st_lsm9ds0_probe(struct st_lsm9ds0 *lsm9ds0, struct regmap *regmap); 21 - int st_lsm9ds0_remove(struct st_lsm9ds0 *lsm9ds0); 22 21 23 22 #endif /* ST_LSM9DS0_H */
+1 -14
drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c
··· 142 142 return ret; 143 143 144 144 /* Setup magnetometer device */ 145 - ret = st_lsm9ds0_probe_magn(lsm9ds0, regmap); 146 - if (ret) 147 - st_accel_common_remove(lsm9ds0->accel); 148 - 149 - return ret; 145 + return st_lsm9ds0_probe_magn(lsm9ds0, regmap); 150 146 } 151 147 EXPORT_SYMBOL_GPL(st_lsm9ds0_probe); 152 - 153 - int st_lsm9ds0_remove(struct st_lsm9ds0 *lsm9ds0) 154 - { 155 - st_magn_common_remove(lsm9ds0->magn); 156 - st_accel_common_remove(lsm9ds0->accel); 157 - 158 - return 0; 159 - } 160 - EXPORT_SYMBOL_GPL(st_lsm9ds0_remove); 161 148 162 149 MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>"); 163 150 MODULE_DESCRIPTION("STMicroelectronics LSM9DS0 IMU core driver");
-6
drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c
··· 64 64 return st_lsm9ds0_probe(lsm9ds0, regmap); 65 65 } 66 66 67 - static int st_lsm9ds0_i2c_remove(struct i2c_client *client) 68 - { 69 - return st_lsm9ds0_remove(i2c_get_clientdata(client)); 70 - } 71 - 72 67 static struct i2c_driver st_lsm9ds0_driver = { 73 68 .driver = { 74 69 .name = "st-lsm9ds0-i2c", 75 70 .of_match_table = st_lsm9ds0_of_match, 76 71 }, 77 72 .probe_new = st_lsm9ds0_i2c_probe, 78 - .remove = st_lsm9ds0_i2c_remove, 79 73 .id_table = st_lsm9ds0_id_table, 80 74 }; 81 75 module_i2c_driver(st_lsm9ds0_driver);
-6
drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c
··· 63 63 return st_lsm9ds0_probe(lsm9ds0, regmap); 64 64 } 65 65 66 - static int st_lsm9ds0_spi_remove(struct spi_device *spi) 67 - { 68 - return st_lsm9ds0_remove(spi_get_drvdata(spi)); 69 - } 70 - 71 66 static struct spi_driver st_lsm9ds0_driver = { 72 67 .driver = { 73 68 .name = "st-lsm9ds0-spi", 74 69 .of_match_table = st_lsm9ds0_of_match, 75 70 }, 76 71 .probe = st_lsm9ds0_spi_probe, 77 - .remove = st_lsm9ds0_spi_remove, 78 72 .id_table = st_lsm9ds0_id_table, 79 73 }; 80 74 module_spi_driver(st_lsm9ds0_driver);
+2 -7
drivers/iio/magnetometer/st_magn_core.c
··· 612 612 { 613 613 struct st_sensor_data *mdata = iio_priv(indio_dev); 614 614 struct st_sensors_platform_data *pdata = dev_get_platdata(mdata->dev); 615 + struct device *parent = indio_dev->dev.parent; 615 616 int err; 616 617 617 618 indio_dev->modes = INDIO_DIRECT_MODE; ··· 651 650 return err; 652 651 } 653 652 654 - return iio_device_register(indio_dev); 653 + return devm_iio_device_register(parent, indio_dev); 655 654 } 656 655 EXPORT_SYMBOL(st_magn_common_probe); 657 - 658 - void st_magn_common_remove(struct iio_dev *indio_dev) 659 - { 660 - iio_device_unregister(indio_dev); 661 - } 662 - EXPORT_SYMBOL(st_magn_common_remove); 663 656 664 657 MODULE_AUTHOR("Denis Ciocca <denis.ciocca@st.com>"); 665 658 MODULE_DESCRIPTION("STMicroelectronics magnetometers driver");
-10
drivers/iio/magnetometer/st_magn_i2c.c
··· 89 89 return st_magn_common_probe(indio_dev); 90 90 } 91 91 92 - static int st_magn_i2c_remove(struct i2c_client *client) 93 - { 94 - struct iio_dev *indio_dev = i2c_get_clientdata(client); 95 - 96 - st_magn_common_remove(indio_dev); 97 - 98 - return 0; 99 - } 100 - 101 92 static const struct i2c_device_id st_magn_id_table[] = { 102 93 { LSM303DLH_MAGN_DEV_NAME }, 103 94 { LSM303DLHC_MAGN_DEV_NAME }, ··· 108 117 .of_match_table = st_magn_of_match, 109 118 }, 110 119 .probe = st_magn_i2c_probe, 111 - .remove = st_magn_i2c_remove, 112 120 .id_table = st_magn_id_table, 113 121 }; 114 122 module_i2c_driver(st_magn_driver);
-10
drivers/iio/magnetometer/st_magn_spi.c
··· 83 83 return st_magn_common_probe(indio_dev); 84 84 } 85 85 86 - static int st_magn_spi_remove(struct spi_device *spi) 87 - { 88 - struct iio_dev *indio_dev = spi_get_drvdata(spi); 89 - 90 - st_magn_common_remove(indio_dev); 91 - 92 - return 0; 93 - } 94 - 95 86 static const struct spi_device_id st_magn_id_table[] = { 96 87 { LIS3MDL_MAGN_DEV_NAME }, 97 88 { LSM303AGR_MAGN_DEV_NAME }, ··· 99 108 .of_match_table = st_magn_of_match, 100 109 }, 101 110 .probe = st_magn_spi_probe, 102 - .remove = st_magn_spi_remove, 103 111 .id_table = st_magn_id_table, 104 112 }; 105 113 module_spi_driver(st_magn_driver);
+2 -7
drivers/iio/pressure/st_pressure_core.c
··· 678 678 { 679 679 struct st_sensor_data *press_data = iio_priv(indio_dev); 680 680 struct st_sensors_platform_data *pdata = dev_get_platdata(press_data->dev); 681 + struct device *parent = indio_dev->dev.parent; 681 682 int err; 682 683 683 684 indio_dev->modes = INDIO_DIRECT_MODE; ··· 722 721 return err; 723 722 } 724 723 725 - return iio_device_register(indio_dev); 724 + return devm_iio_device_register(parent, indio_dev); 726 725 } 727 726 EXPORT_SYMBOL(st_press_common_probe); 728 - 729 - void st_press_common_remove(struct iio_dev *indio_dev) 730 - { 731 - iio_device_unregister(indio_dev); 732 - } 733 - EXPORT_SYMBOL(st_press_common_remove); 734 727 735 728 MODULE_AUTHOR("Denis Ciocca <denis.ciocca@st.com>"); 736 729 MODULE_DESCRIPTION("STMicroelectronics pressures driver");
-10
drivers/iio/pressure/st_pressure_i2c.c
··· 106 106 return st_press_common_probe(indio_dev); 107 107 } 108 108 109 - static int st_press_i2c_remove(struct i2c_client *client) 110 - { 111 - struct iio_dev *indio_dev = i2c_get_clientdata(client); 112 - 113 - st_press_common_remove(indio_dev); 114 - 115 - return 0; 116 - } 117 - 118 109 static struct i2c_driver st_press_driver = { 119 110 .driver = { 120 111 .name = "st-press-i2c", ··· 113 122 .acpi_match_table = ACPI_PTR(st_press_acpi_match), 114 123 }, 115 124 .probe = st_press_i2c_probe, 116 - .remove = st_press_i2c_remove, 117 125 .id_table = st_press_id_table, 118 126 }; 119 127 module_i2c_driver(st_press_driver);
-10
drivers/iio/pressure/st_pressure_spi.c
··· 89 89 return st_press_common_probe(indio_dev); 90 90 } 91 91 92 - static int st_press_spi_remove(struct spi_device *spi) 93 - { 94 - struct iio_dev *indio_dev = spi_get_drvdata(spi); 95 - 96 - st_press_common_remove(indio_dev); 97 - 98 - return 0; 99 - } 100 - 101 92 static const struct spi_device_id st_press_id_table[] = { 102 93 { LPS001WP_PRESS_DEV_NAME }, 103 94 { LPS25H_PRESS_DEV_NAME }, ··· 107 116 .of_match_table = st_press_of_match, 108 117 }, 109 118 .probe = st_press_spi_probe, 110 - .remove = st_press_spi_remove, 111 119 .id_table = st_press_id_table, 112 120 }; 113 121 module_spi_driver(st_press_driver);
-4
include/linux/iio/common/st_sensors.h
··· 323 323 /* Accelerometer */ 324 324 const struct st_sensor_settings *st_accel_get_settings(const char *name); 325 325 int st_accel_common_probe(struct iio_dev *indio_dev); 326 - void st_accel_common_remove(struct iio_dev *indio_dev); 327 326 328 327 /* Gyroscope */ 329 328 const struct st_sensor_settings *st_gyro_get_settings(const char *name); 330 329 int st_gyro_common_probe(struct iio_dev *indio_dev); 331 - void st_gyro_common_remove(struct iio_dev *indio_dev); 332 330 333 331 /* Magnetometer */ 334 332 const struct st_sensor_settings *st_magn_get_settings(const char *name); 335 333 int st_magn_common_probe(struct iio_dev *indio_dev); 336 - void st_magn_common_remove(struct iio_dev *indio_dev); 337 334 338 335 /* Pressure */ 339 336 const struct st_sensor_settings *st_press_get_settings(const char *name); 340 337 int st_press_common_probe(struct iio_dev *indio_dev); 341 - void st_press_common_remove(struct iio_dev *indio_dev); 342 338 343 339 #endif /* ST_SENSORS_H */