Skip to content

Commit c476583

Browse files
committed
Merge tag 'char-misc-5.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
Pull char/misc driver fixes from Greg KH: "Here are a few small driver fixes for 5.17-rc6 for reported issues. The majority of these are IIO fixes for small things, and the other two are a mvmem and mtd core conflict fix. All of these have been in linux-next with no reported issues" * tag 'char-misc-5.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: mtd: core: Fix a conflict between MTD and NVMEM on wp-gpios property nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot iio: Fix error handling for PM iio: addac: ad74413r: correct comparator gpio getters mask usage iio: addac: ad74413r: use ngpio size when iterating over mask iio: addac: ad74413r: Do not reference negative array offsets iio: adc: men_z188_adc: Fix a resource leak in an error handling path iio: frequency: admv1013: remove the always true condition iio: accel: fxls8962af: add padding to regmap for SPI iio:imu:adis16480: fix buffering for devices with no burst mode iio: adc: ad7124: fix mask used for setting AIN_BUFP & AIN_BUFM bits iio: adc: tsc2046: fix memory corruption by preventing array overflow
2 parents d68ccfd + 6c76218 commit c476583

21 files changed

Lines changed: 78 additions & 31 deletions

drivers/iio/accel/bmc150-accel-core.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1783,11 +1783,14 @@ int bmc150_accel_core_probe(struct device *dev, struct regmap *regmap, int irq,
17831783
ret = iio_device_register(indio_dev);
17841784
if (ret < 0) {
17851785
dev_err(dev, "Unable to register iio device\n");
1786-
goto err_trigger_unregister;
1786+
goto err_pm_cleanup;
17871787
}
17881788

17891789
return 0;
17901790

1791+
err_pm_cleanup:
1792+
pm_runtime_dont_use_autosuspend(dev);
1793+
pm_runtime_disable(dev);
17911794
err_trigger_unregister:
17921795
bmc150_accel_unregister_triggers(data, BMC150_ACCEL_TRIGGERS - 1);
17931796
err_buffer_cleanup:

drivers/iio/accel/fxls8962af-core.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,12 +173,20 @@ struct fxls8962af_data {
173173
u16 upper_thres;
174174
};
175175

176-
const struct regmap_config fxls8962af_regmap_conf = {
176+
const struct regmap_config fxls8962af_i2c_regmap_conf = {
177177
.reg_bits = 8,
178178
.val_bits = 8,
179179
.max_register = FXLS8962AF_MAX_REG,
180180
};
181-
EXPORT_SYMBOL_GPL(fxls8962af_regmap_conf);
181+
EXPORT_SYMBOL_GPL(fxls8962af_i2c_regmap_conf);
182+
183+
const struct regmap_config fxls8962af_spi_regmap_conf = {
184+
.reg_bits = 8,
185+
.pad_bits = 8,
186+
.val_bits = 8,
187+
.max_register = FXLS8962AF_MAX_REG,
188+
};
189+
EXPORT_SYMBOL_GPL(fxls8962af_spi_regmap_conf);
182190

183191
enum {
184192
fxls8962af_idx_x,

drivers/iio/accel/fxls8962af-i2c.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ static int fxls8962af_probe(struct i2c_client *client)
1818
{
1919
struct regmap *regmap;
2020

21-
regmap = devm_regmap_init_i2c(client, &fxls8962af_regmap_conf);
21+
regmap = devm_regmap_init_i2c(client, &fxls8962af_i2c_regmap_conf);
2222
if (IS_ERR(regmap)) {
2323
dev_err(&client->dev, "Failed to initialize i2c regmap\n");
2424
return PTR_ERR(regmap);

drivers/iio/accel/fxls8962af-spi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ static int fxls8962af_probe(struct spi_device *spi)
1818
{
1919
struct regmap *regmap;
2020

21-
regmap = devm_regmap_init_spi(spi, &fxls8962af_regmap_conf);
21+
regmap = devm_regmap_init_spi(spi, &fxls8962af_spi_regmap_conf);
2222
if (IS_ERR(regmap)) {
2323
dev_err(&spi->dev, "Failed to initialize spi regmap\n");
2424
return PTR_ERR(regmap);

drivers/iio/accel/fxls8962af.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ int fxls8962af_core_probe(struct device *dev, struct regmap *regmap, int irq);
1717
int fxls8962af_core_remove(struct device *dev);
1818

1919
extern const struct dev_pm_ops fxls8962af_pm_ops;
20-
extern const struct regmap_config fxls8962af_regmap_conf;
20+
extern const struct regmap_config fxls8962af_i2c_regmap_conf;
21+
extern const struct regmap_config fxls8962af_spi_regmap_conf;
2122

2223
#endif /* _FXLS8962AF_H_ */

drivers/iio/accel/kxcjk-1013.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1590,11 +1590,14 @@ static int kxcjk1013_probe(struct i2c_client *client,
15901590
ret = iio_device_register(indio_dev);
15911591
if (ret < 0) {
15921592
dev_err(&client->dev, "unable to register iio device\n");
1593-
goto err_buffer_cleanup;
1593+
goto err_pm_cleanup;
15941594
}
15951595

15961596
return 0;
15971597

1598+
err_pm_cleanup:
1599+
pm_runtime_dont_use_autosuspend(&client->dev);
1600+
pm_runtime_disable(&client->dev);
15981601
err_buffer_cleanup:
15991602
iio_triggered_buffer_cleanup(indio_dev);
16001603
err_trigger_unregister:

drivers/iio/accel/mma9551.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,11 +495,14 @@ static int mma9551_probe(struct i2c_client *client,
495495
ret = iio_device_register(indio_dev);
496496
if (ret < 0) {
497497
dev_err(&client->dev, "unable to register iio device\n");
498-
goto out_poweroff;
498+
goto err_pm_cleanup;
499499
}
500500

501501
return 0;
502502

503+
err_pm_cleanup:
504+
pm_runtime_dont_use_autosuspend(&client->dev);
505+
pm_runtime_disable(&client->dev);
503506
out_poweroff:
504507
mma9551_set_device_state(client, false);
505508

drivers/iio/accel/mma9553.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1134,12 +1134,15 @@ static int mma9553_probe(struct i2c_client *client,
11341134
ret = iio_device_register(indio_dev);
11351135
if (ret < 0) {
11361136
dev_err(&client->dev, "unable to register iio device\n");
1137-
goto out_poweroff;
1137+
goto err_pm_cleanup;
11381138
}
11391139

11401140
dev_dbg(&indio_dev->dev, "Registered device %s\n", name);
11411141
return 0;
11421142

1143+
err_pm_cleanup:
1144+
pm_runtime_dont_use_autosuspend(&client->dev);
1145+
pm_runtime_disable(&client->dev);
11431146
out_poweroff:
11441147
mma9551_set_device_state(client, false);
11451148
return ret;

drivers/iio/adc/ad7124.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
#define AD7124_CONFIG_REF_SEL(x) FIELD_PREP(AD7124_CONFIG_REF_SEL_MSK, x)
7777
#define AD7124_CONFIG_PGA_MSK GENMASK(2, 0)
7878
#define AD7124_CONFIG_PGA(x) FIELD_PREP(AD7124_CONFIG_PGA_MSK, x)
79-
#define AD7124_CONFIG_IN_BUFF_MSK GENMASK(7, 6)
79+
#define AD7124_CONFIG_IN_BUFF_MSK GENMASK(6, 5)
8080
#define AD7124_CONFIG_IN_BUFF(x) FIELD_PREP(AD7124_CONFIG_IN_BUFF_MSK, x)
8181

8282
/* AD7124_FILTER_X */

drivers/iio/adc/men_z188_adc.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ static int men_z188_probe(struct mcb_device *dev,
103103
struct z188_adc *adc;
104104
struct iio_dev *indio_dev;
105105
struct resource *mem;
106+
int ret;
106107

107108
indio_dev = devm_iio_device_alloc(&dev->dev, sizeof(struct z188_adc));
108109
if (!indio_dev)
@@ -128,8 +129,14 @@ static int men_z188_probe(struct mcb_device *dev,
128129
adc->mem = mem;
129130
mcb_set_drvdata(dev, indio_dev);
130131

131-
return iio_device_register(indio_dev);
132+
ret = iio_device_register(indio_dev);
133+
if (ret)
134+
goto err_unmap;
135+
136+
return 0;
132137

138+
err_unmap:
139+
iounmap(adc->base);
133140
err:
134141
mcb_release_mem(mem);
135142
return -ENXIO;

0 commit comments

Comments
 (0)