diff options
author | William Breathitt Gray <vilhelm.gray@gmail.com> | 2018-04-18 08:53:21 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2018-04-26 18:56:11 -0400 |
commit | 304440aa96c6e5cc37eaa7a46ff4dd862e4c21be (patch) | |
tree | 401aaccbe6f4a426f1aff4b470f4f82cdfaab18a | |
parent | aaf96e51de117cdfa2dc04735639895b46a3da3f (diff) |
gpio: pcie-idio-24: Fix port memory offset for get_multiple/set_multiple callbacks
The ioread8/iowrite8 functions expect a memory offset argument. This
patch fixes the ports array to provide the memory addresses of the
respective device I/O registers.
Fixes: ca37081595a2 ("gpio: pcie-idio-24: Implement get_multiple/set_multiple callbacks")
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/gpio/gpio-pcie-idio-24.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/gpio/gpio-pcie-idio-24.c b/drivers/gpio/gpio-pcie-idio-24.c index 835607ecf658..3e77c2a9a9fd 100644 --- a/drivers/gpio/gpio-pcie-idio-24.c +++ b/drivers/gpio/gpio-pcie-idio-24.c | |||
@@ -206,10 +206,10 @@ static int idio_24_gpio_get_multiple(struct gpio_chip *chip, | |||
206 | unsigned long word_mask; | 206 | unsigned long word_mask; |
207 | const unsigned long port_mask = GENMASK(gpio_reg_size - 1, 0); | 207 | const unsigned long port_mask = GENMASK(gpio_reg_size - 1, 0); |
208 | unsigned long port_state; | 208 | unsigned long port_state; |
209 | u8 __iomem ports[] = { | 209 | void __iomem *ports[] = { |
210 | idio24gpio->reg->out0_7, idio24gpio->reg->out8_15, | 210 | &idio24gpio->reg->out0_7, &idio24gpio->reg->out8_15, |
211 | idio24gpio->reg->out16_23, idio24gpio->reg->in0_7, | 211 | &idio24gpio->reg->out16_23, &idio24gpio->reg->in0_7, |
212 | idio24gpio->reg->in8_15, idio24gpio->reg->in16_23, | 212 | &idio24gpio->reg->in8_15, &idio24gpio->reg->in16_23, |
213 | }; | 213 | }; |
214 | const unsigned long out_mode_mask = BIT(1); | 214 | const unsigned long out_mode_mask = BIT(1); |
215 | 215 | ||
@@ -236,7 +236,7 @@ static int idio_24_gpio_get_multiple(struct gpio_chip *chip, | |||
236 | 236 | ||
237 | /* read bits from current gpio port (port 6 is TTL GPIO) */ | 237 | /* read bits from current gpio port (port 6 is TTL GPIO) */ |
238 | if (i < 6) | 238 | if (i < 6) |
239 | port_state = ioread8(ports + i); | 239 | port_state = ioread8(ports[i]); |
240 | else if (ioread8(&idio24gpio->reg->ctl) & out_mode_mask) | 240 | else if (ioread8(&idio24gpio->reg->ctl) & out_mode_mask) |
241 | port_state = ioread8(&idio24gpio->reg->ttl_out0_7); | 241 | port_state = ioread8(&idio24gpio->reg->ttl_out0_7); |
242 | else | 242 | else |
@@ -301,9 +301,9 @@ static void idio_24_gpio_set_multiple(struct gpio_chip *chip, | |||
301 | const unsigned long port_mask = GENMASK(gpio_reg_size, 0); | 301 | const unsigned long port_mask = GENMASK(gpio_reg_size, 0); |
302 | unsigned long flags; | 302 | unsigned long flags; |
303 | unsigned int out_state; | 303 | unsigned int out_state; |
304 | u8 __iomem ports[] = { | 304 | void __iomem *ports[] = { |
305 | idio24gpio->reg->out0_7, idio24gpio->reg->out8_15, | 305 | &idio24gpio->reg->out0_7, &idio24gpio->reg->out8_15, |
306 | idio24gpio->reg->out16_23 | 306 | &idio24gpio->reg->out16_23 |
307 | }; | 307 | }; |
308 | const unsigned long out_mode_mask = BIT(1); | 308 | const unsigned long out_mode_mask = BIT(1); |
309 | const unsigned int ttl_offset = 48; | 309 | const unsigned int ttl_offset = 48; |
@@ -327,9 +327,9 @@ static void idio_24_gpio_set_multiple(struct gpio_chip *chip, | |||
327 | raw_spin_lock_irqsave(&idio24gpio->lock, flags); | 327 | raw_spin_lock_irqsave(&idio24gpio->lock, flags); |
328 | 328 | ||
329 | /* process output lines */ | 329 | /* process output lines */ |
330 | out_state = ioread8(ports + i) & ~gpio_mask; | 330 | out_state = ioread8(ports[i]) & ~gpio_mask; |
331 | out_state |= (*bits >> bits_offset) & gpio_mask; | 331 | out_state |= (*bits >> bits_offset) & gpio_mask; |
332 | iowrite8(out_state, ports + i); | 332 | iowrite8(out_state, ports[i]); |
333 | 333 | ||
334 | raw_spin_unlock_irqrestore(&idio24gpio->lock, flags); | 334 | raw_spin_unlock_irqrestore(&idio24gpio->lock, flags); |
335 | } | 335 | } |