aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-02-26 10:59:15 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-02-26 10:59:15 -0500
commit7aa2a92c491ecdd98b60845548a7041b159b3de3 (patch)
tree8f933dceb92193fc726e18955875fd4751320094
parentbc49a7831b1137ce1c2dda1c57e3631655f5d2ae (diff)
parentca1c39ef76376b67303d01f94fe98bb68bb3861a (diff)
Merge tag 'iio-fixes-for-4.11b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus
Jonathan writes: Second set of IIO fixes for IIO in the 4.11 cycle. This series consists of fixes that either came in after the merge window had opened or are fixes for work that merged during the merge window so had to wait for that to hit mainline. * 104-quad-8 - Fix an off by one error in the register address for the flag register. * rcar-gyroadc - protect against possible issues in future by dealing with childmode not being in a valid state. This also deals with some build warnings. * xilinx - fix some error handling paths to ensure resources are released in reverse order of being acquired.
-rw-r--r--drivers/iio/adc/rcar-gyroadc.c4
-rw-r--r--drivers/iio/adc/xilinx-xadc-core.c6
-rw-r--r--drivers/iio/counter/104-quad-8.c2
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/iio/adc/rcar-gyroadc.c b/drivers/iio/adc/rcar-gyroadc.c
index 0c44f72c32a8..018ed360e717 100644
--- a/drivers/iio/adc/rcar-gyroadc.c
+++ b/drivers/iio/adc/rcar-gyroadc.c
@@ -336,7 +336,7 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)
336 struct device_node *child; 336 struct device_node *child;
337 struct regulator *vref; 337 struct regulator *vref;
338 unsigned int reg; 338 unsigned int reg;
339 unsigned int adcmode, childmode; 339 unsigned int adcmode = -1, childmode;
340 unsigned int sample_width; 340 unsigned int sample_width;
341 unsigned int num_channels; 341 unsigned int num_channels;
342 int ret, first = 1; 342 int ret, first = 1;
@@ -366,6 +366,8 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)
366 channels = rcar_gyroadc_iio_channels_3; 366 channels = rcar_gyroadc_iio_channels_3;
367 num_channels = ARRAY_SIZE(rcar_gyroadc_iio_channels_3); 367 num_channels = ARRAY_SIZE(rcar_gyroadc_iio_channels_3);
368 break; 368 break;
369 default:
370 return -EINVAL;
369 } 371 }
370 372
371 /* 373 /*
diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
index 0a6beb3d99cb..56cf5907a5f0 100644
--- a/drivers/iio/adc/xilinx-xadc-core.c
+++ b/drivers/iio/adc/xilinx-xadc-core.c
@@ -1208,7 +1208,7 @@ static int xadc_probe(struct platform_device *pdev)
1208 1208
1209 ret = xadc->ops->setup(pdev, indio_dev, irq); 1209 ret = xadc->ops->setup(pdev, indio_dev, irq);
1210 if (ret) 1210 if (ret)
1211 goto err_free_samplerate_trigger; 1211 goto err_clk_disable_unprepare;
1212 1212
1213 ret = request_irq(irq, xadc->ops->interrupt_handler, 0, 1213 ret = request_irq(irq, xadc->ops->interrupt_handler, 0,
1214 dev_name(&pdev->dev), indio_dev); 1214 dev_name(&pdev->dev), indio_dev);
@@ -1268,6 +1268,8 @@ static int xadc_probe(struct platform_device *pdev)
1268 1268
1269err_free_irq: 1269err_free_irq:
1270 free_irq(irq, indio_dev); 1270 free_irq(irq, indio_dev);
1271err_clk_disable_unprepare:
1272 clk_disable_unprepare(xadc->clk);
1271err_free_samplerate_trigger: 1273err_free_samplerate_trigger:
1272 if (xadc->ops->flags & XADC_FLAGS_BUFFERED) 1274 if (xadc->ops->flags & XADC_FLAGS_BUFFERED)
1273 iio_trigger_free(xadc->samplerate_trigger); 1275 iio_trigger_free(xadc->samplerate_trigger);
@@ -1277,8 +1279,6 @@ err_free_convst_trigger:
1277err_triggered_buffer_cleanup: 1279err_triggered_buffer_cleanup:
1278 if (xadc->ops->flags & XADC_FLAGS_BUFFERED) 1280 if (xadc->ops->flags & XADC_FLAGS_BUFFERED)
1279 iio_triggered_buffer_cleanup(indio_dev); 1281 iio_triggered_buffer_cleanup(indio_dev);
1280err_clk_disable_unprepare:
1281 clk_disable_unprepare(xadc->clk);
1282err_device_free: 1282err_device_free:
1283 kfree(indio_dev->channels); 1283 kfree(indio_dev->channels);
1284 1284
diff --git a/drivers/iio/counter/104-quad-8.c b/drivers/iio/counter/104-quad-8.c
index a5913e97945e..f9b8fc9ae13f 100644
--- a/drivers/iio/counter/104-quad-8.c
+++ b/drivers/iio/counter/104-quad-8.c
@@ -76,7 +76,7 @@ static int quad8_read_raw(struct iio_dev *indio_dev,
76 return IIO_VAL_INT; 76 return IIO_VAL_INT;
77 } 77 }
78 78
79 flags = inb(base_offset); 79 flags = inb(base_offset + 1);
80 borrow = flags & BIT(0); 80 borrow = flags & BIT(0);
81 carry = !!(flags & BIT(1)); 81 carry = !!(flags & BIT(1));
82 82