Skip to content

Commit 304440a

Browse files
William Breathitt Graylinusw
authored andcommitted
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: ca37081 ("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>
1 parent aaf96e5 commit 304440a

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

drivers/gpio/gpio-pcie-idio-24.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,10 @@ static int idio_24_gpio_get_multiple(struct gpio_chip *chip,
206206
unsigned long word_mask;
207207
const unsigned long port_mask = GENMASK(gpio_reg_size - 1, 0);
208208
unsigned long port_state;
209-
u8 __iomem ports[] = {
210-
idio24gpio->reg->out0_7, idio24gpio->reg->out8_15,
211-
idio24gpio->reg->out16_23, idio24gpio->reg->in0_7,
212-
idio24gpio->reg->in8_15, idio24gpio->reg->in16_23,
209+
void __iomem *ports[] = {
210+
&idio24gpio->reg->out0_7, &idio24gpio->reg->out8_15,
211+
&idio24gpio->reg->out16_23, &idio24gpio->reg->in0_7,
212+
&idio24gpio->reg->in8_15, &idio24gpio->reg->in16_23,
213213
};
214214
const unsigned long out_mode_mask = BIT(1);
215215

@@ -236,7 +236,7 @@ static int idio_24_gpio_get_multiple(struct gpio_chip *chip,
236236

237237
/* read bits from current gpio port (port 6 is TTL GPIO) */
238238
if (i < 6)
239-
port_state = ioread8(ports + i);
239+
port_state = ioread8(ports[i]);
240240
else if (ioread8(&idio24gpio->reg->ctl) & out_mode_mask)
241241
port_state = ioread8(&idio24gpio->reg->ttl_out0_7);
242242
else
@@ -301,9 +301,9 @@ static void idio_24_gpio_set_multiple(struct gpio_chip *chip,
301301
const unsigned long port_mask = GENMASK(gpio_reg_size, 0);
302302
unsigned long flags;
303303
unsigned int out_state;
304-
u8 __iomem ports[] = {
305-
idio24gpio->reg->out0_7, idio24gpio->reg->out8_15,
306-
idio24gpio->reg->out16_23
304+
void __iomem *ports[] = {
305+
&idio24gpio->reg->out0_7, &idio24gpio->reg->out8_15,
306+
&idio24gpio->reg->out16_23
307307
};
308308
const unsigned long out_mode_mask = BIT(1);
309309
const unsigned int ttl_offset = 48;
@@ -327,9 +327,9 @@ static void idio_24_gpio_set_multiple(struct gpio_chip *chip,
327327
raw_spin_lock_irqsave(&idio24gpio->lock, flags);
328328

329329
/* process output lines */
330-
out_state = ioread8(ports + i) & ~gpio_mask;
330+
out_state = ioread8(ports[i]) & ~gpio_mask;
331331
out_state |= (*bits >> bits_offset) & gpio_mask;
332-
iowrite8(out_state, ports + i);
332+
iowrite8(out_state, ports[i]);
333333

334334
raw_spin_unlock_irqrestore(&idio24gpio->lock, flags);
335335
}

0 commit comments

Comments
 (0)