Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c904afd authored by Denis Turischev's avatar Denis Turischev Committed by Linus Torvalds
Browse files

it8761e_gpio: fix bug in gpio numbering



The SIO chip contains 16 possible gpio lines, not 14.  The schematic was
not read carefully.

Signed-off-by: default avatarDenis Turischev <denis@compulab.co.il>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f33d7e2d
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -80,8 +80,8 @@ static int it8761e_gpio_get(struct gpio_chip *gc, unsigned gpio_num)
	u16 reg;
	u8 bit;

	bit = gpio_num % 7;
	reg = (gpio_num >= 7) ? gpio_ba + 1 : gpio_ba;
	bit = gpio_num % 8;
	reg = (gpio_num >= 8) ? gpio_ba + 1 : gpio_ba;

	return !!(inb(reg) & (1 << bit));
}
@@ -91,8 +91,8 @@ static int it8761e_gpio_direction_in(struct gpio_chip *gc, unsigned gpio_num)
	u8 curr_dirs;
	u8 io_reg, bit;

	bit = gpio_num % 7;
	io_reg = (gpio_num >= 7) ? GPIO2X_IO : GPIO1X_IO;
	bit = gpio_num % 8;
	io_reg = (gpio_num >= 8) ? GPIO2X_IO : GPIO1X_IO;

	spin_lock(&sio_lock);

@@ -116,8 +116,8 @@ static void it8761e_gpio_set(struct gpio_chip *gc,
	u8 curr_vals, bit;
	u16 reg;

	bit = gpio_num % 7;
	reg = (gpio_num >= 7) ? gpio_ba + 1 : gpio_ba;
	bit = gpio_num % 8;
	reg = (gpio_num >= 8) ? gpio_ba + 1 : gpio_ba;

	spin_lock(&sio_lock);

@@ -135,8 +135,8 @@ static int it8761e_gpio_direction_out(struct gpio_chip *gc,
{
	u8 curr_dirs, io_reg, bit;

	bit = gpio_num % 7;
	io_reg = (gpio_num >= 7) ? GPIO2X_IO : GPIO1X_IO;
	bit = gpio_num % 8;
	io_reg = (gpio_num >= 8) ? GPIO2X_IO : GPIO1X_IO;

	it8761e_gpio_set(gc, gpio_num, val);

@@ -200,7 +200,7 @@ static int __init it8761e_gpio_init(void)
		return -EBUSY;

	it8761e_gpio_chip.base = -1;
	it8761e_gpio_chip.ngpio = 14;
	it8761e_gpio_chip.ngpio = 16;

	err = gpiochip_add(&it8761e_gpio_chip);
	if (err < 0)