diff options
| -rw-r--r-- | drivers/pinctrl/pinctrl-mcp23s08.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c index 4a8a8efadefa..cf73a403d22d 100644 --- a/drivers/pinctrl/pinctrl-mcp23s08.c +++ b/drivers/pinctrl/pinctrl-mcp23s08.c | |||
| @@ -636,6 +636,14 @@ static int mcp23s08_irq_setup(struct mcp23s08 *mcp) | |||
| 636 | return err; | 636 | return err; |
| 637 | } | 637 | } |
| 638 | 638 | ||
| 639 | return 0; | ||
| 640 | } | ||
| 641 | |||
| 642 | static int mcp23s08_irqchip_setup(struct mcp23s08 *mcp) | ||
| 643 | { | ||
| 644 | struct gpio_chip *chip = &mcp->chip; | ||
| 645 | int err; | ||
| 646 | |||
| 639 | err = gpiochip_irqchip_add_nested(chip, | 647 | err = gpiochip_irqchip_add_nested(chip, |
| 640 | &mcp23s08_irq_chip, | 648 | &mcp23s08_irq_chip, |
| 641 | 0, | 649 | 0, |
| @@ -912,7 +920,7 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev, | |||
| 912 | } | 920 | } |
| 913 | 921 | ||
| 914 | if (mcp->irq && mcp->irq_controller) { | 922 | if (mcp->irq && mcp->irq_controller) { |
| 915 | ret = mcp23s08_irq_setup(mcp); | 923 | ret = mcp23s08_irqchip_setup(mcp); |
| 916 | if (ret) | 924 | if (ret) |
| 917 | goto fail; | 925 | goto fail; |
| 918 | } | 926 | } |
| @@ -944,6 +952,9 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev, | |||
| 944 | goto fail; | 952 | goto fail; |
| 945 | } | 953 | } |
| 946 | 954 | ||
| 955 | if (mcp->irq) | ||
| 956 | ret = mcp23s08_irq_setup(mcp); | ||
| 957 | |||
| 947 | fail: | 958 | fail: |
| 948 | if (ret < 0) | 959 | if (ret < 0) |
| 949 | dev_dbg(dev, "can't setup chip %d, --> %d\n", addr, ret); | 960 | dev_dbg(dev, "can't setup chip %d, --> %d\n", addr, ret); |
