pinctrl: mcp23s08: fix interrupt handling regression
interrupt handling was broken with conversion to using regmap caching. cached_gpio value was updated by boolean status instead of gpio reading. Fixes: 8f38910ba4f6 ("pinctrl: mcp23s08: switch to regmap caching") Tested-by: Phil Reid <preid@electromag.com.au> Signed-off-by: Dmitry Mastykin <mastichi@gmail.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
6afb10267c
commit
5986170107
@ -407,10 +407,10 @@ static int mcp23s08_get(struct gpio_chip *chip, unsigned offset)
|
|||||||
ret = mcp_read(mcp, MCP_GPIO, &status);
|
ret = mcp_read(mcp, MCP_GPIO, &status);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
status = 0;
|
status = 0;
|
||||||
else
|
else {
|
||||||
|
mcp->cached_gpio = status;
|
||||||
status = !!(status & (1 << offset));
|
status = !!(status & (1 << offset));
|
||||||
|
}
|
||||||
mcp->cached_gpio = status;
|
|
||||||
|
|
||||||
mutex_unlock(&mcp->lock);
|
mutex_unlock(&mcp->lock);
|
||||||
return status;
|
return status;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user