Skip to content

Commit

Permalink
gpio: mcp23s08: Fix clearing of interrupt.
Browse files Browse the repository at this point in the history
The mcp23s18 is configurable on clearing the interrupt on either reading
INTCAP or GPIO. Since driver reads INTCAP in IRQ and not the GPIO reg need
to set control byte for this mode.

Signed-off-by: Phil Reid <preid@electromag.com.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Phil Reid authored and Linus Walleij committed Mar 16, 2016
1 parent 1cfab8f commit 3539699
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/gpio/gpio-mcp23s08.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
# define IOCON_HAEN (1 << 3)
# define IOCON_ODR (1 << 2)
# define IOCON_INTPOL (1 << 1)
# define IOCON_INTCC (1)
#define MCP_GPPU 0x06
#define MCP_INTF 0x07
#define MCP_INTCAP 0x08
Expand Down Expand Up @@ -680,6 +681,9 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
if (mirror)
status |= IOCON_MIRROR | (IOCON_MIRROR << 8);

if (type == MCP_TYPE_S18)
status |= IOCON_INTCC | (IOCON_INTCC << 8);

status = mcp->ops->write(mcp, MCP_IOCON, status);
if (status < 0)
goto fail;
Expand Down

0 comments on commit 3539699

Please sign in to comment.