@@ -566,9 +566,8 @@ int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
if (ret < 0)
goto fail;
- mcp->irq_controller =
- device_property_read_bool(dev, "interrupt-controller");
- if (mcp->irq && mcp->irq_controller) {
+ mcp->irq_enabled = device_property_present(dev, "interrupts");
+ if (mcp->irq && mcp->irq_enabled) {
mcp->irq_active_high =
device_property_read_bool(dev,
"microchip,irq-active-high");
@@ -601,7 +600,7 @@ int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
goto fail;
}
- if (mcp->irq && mcp->irq_controller) {
+ if (mcp->irq && mcp->irq_enabled) {
struct gpio_irq_chip *girq = &mcp->chip.irq;
girq->chip = &mcp->irq_chip;
@@ -30,7 +30,7 @@ struct mcp23s08 {
u16 irq_rise;
u16 irq_fall;
int irq;
- bool irq_controller;
+ bool irq_enabled;
int cached_gpio;
/* lock protects regmap access with bypass/cache flags */
struct mutex lock;
The mcp23s08 device and friends are interrupt /client/ nodes, and should not reference the interrupt controller device tree property "interrupt-controller" [0]. Fix the mcp23s08 driver so that it activates interrupts when it detects the "interrupts" property instead, which is always present if we want interrupts enabled. [0] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt Signed-off-by: Thomas Preston <thomas.preston@codethink.co.uk> --- drivers/pinctrl/pinctrl-mcp23s08.c | 7 +++---- drivers/pinctrl/pinctrl-mcp23s08.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-)