diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-12-22 15:21:12 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-12-22 15:21:12 -0500 |
| commit | 6ed16756cc814040560a6e107e8f3d2dcab82396 (patch) | |
| tree | 609664689c2453c9886813e8a540578cac6ea474 | |
| parent | e7ae59cb4bc6527e221e2c2e8264dde233d1e714 (diff) | |
| parent | d2b3c353595a855794f8b9df5b5bdbe8deb0c413 (diff) | |
Merge tag 'pinctrl-v4.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control fix from Linus Walleij:
"A single pin control fix for Intel machines, affecting a bunch of
Chromebooks. Nothing else collected up amazingly"
* tag 'pinctrl-v4.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
pinctrl: cherryview: Mask all interrupts on Intel_Strago based systems
| -rw-r--r-- | drivers/pinctrl/intel/pinctrl-cherryview.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c index bdedb6325c72..4471fd94e1fe 100644 --- a/drivers/pinctrl/intel/pinctrl-cherryview.c +++ b/drivers/pinctrl/intel/pinctrl-cherryview.c | |||
| @@ -1620,6 +1620,22 @@ static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) | |||
| 1620 | clear_bit(i, chip->irq.valid_mask); | 1620 | clear_bit(i, chip->irq.valid_mask); |
| 1621 | } | 1621 | } |
| 1622 | 1622 | ||
| 1623 | /* | ||
| 1624 | * The same set of machines in chv_no_valid_mask[] have incorrectly | ||
| 1625 | * configured GPIOs that generate spurious interrupts so we use | ||
| 1626 | * this same list to apply another quirk for them. | ||
| 1627 | * | ||
| 1628 | * See also https://bugzilla.kernel.org/show_bug.cgi?id=197953. | ||
| 1629 | */ | ||
| 1630 | if (!need_valid_mask) { | ||
| 1631 | /* | ||
| 1632 | * Mask all interrupts the community is able to generate | ||
| 1633 | * but leave the ones that can only generate GPEs unmasked. | ||
| 1634 | */ | ||
| 1635 | chv_writel(GENMASK(31, pctrl->community->nirqs), | ||
| 1636 | pctrl->regs + CHV_INTMASK); | ||
| 1637 | } | ||
| 1638 | |||
| 1623 | /* Clear all interrupts */ | 1639 | /* Clear all interrupts */ |
| 1624 | chv_writel(0xffff, pctrl->regs + CHV_INTSTAT); | 1640 | chv_writel(0xffff, pctrl->regs + CHV_INTSTAT); |
| 1625 | 1641 | ||
