]> git.karo-electronics.de Git - linux-beck.git/commitdiff
iio: 104-quad-8: Fix off-by-one errors when addressing IOR
authorWilliam Breathitt Gray <vilhelm.gray@gmail.com>
Mon, 28 Nov 2016 21:55:34 +0000 (16:55 -0500)
committerJonathan Cameron <jic23@kernel.org>
Sat, 3 Dec 2016 10:03:07 +0000 (10:03 +0000)
The Input/Output Control register (IOR) is offset by 1 from the
respective channel data register. This patch fixes off-by-one errors
when attempting to write to a channel IOR where the base address was not
properly offset.

Fixes: 28e5d3bb0325 ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/counter/104-quad-8.c

index c0a69d7e9ce7edcedf895a98568b2a6aa92e16c1..07b6d20c0756a03bc1d0ddaf335d0fb60df07ed8 100644 (file)
@@ -153,7 +153,7 @@ static int quad8_write_raw(struct iio_dev *indio_dev,
                ior_cfg = val | priv->preset_enable[chan->channel] << 1;
 
                /* Load I/O control configuration */
-               outb(0x40 | ior_cfg, base_offset);
+               outb(0x40 | ior_cfg, base_offset + 1);
 
                return 0;
        case IIO_CHAN_INFO_SCALE:
@@ -241,7 +241,7 @@ static ssize_t quad8_write_set_to_preset_on_index(struct iio_dev *indio_dev,
        size_t len)
 {
        struct quad8_iio *const priv = iio_priv(indio_dev);
-       const int base_offset = priv->base + 2 * chan->channel;
+       const int base_offset = priv->base + 2 * chan->channel + 1;
        bool preset_enable;
        int ret;
        unsigned int ior_cfg;