• Mika Westerberg's avatar
    pinctrl: cherryview: Do not mask all interrupts in probe · bcb48cca
    Mika Westerberg authored
    The Cherryview GPIO controller has 8 or 16 wires connected to the I/O-APIC
    which can be used directly by the platform/BIOS or drivers. One such wire
    is used as SCI (System Control Interrupt) which ACPI depends on to be able
    to trigger GPEs (General Purpose Events).
    
    The pinctrl driver itself uses another IRQ resource which is wire OR of all
    the 8 (or 16) wires and follows what BIOS has programmed to the IntSel
    register of each pin.
    
    Currently the driver masks all interrupts at probe time and this prevents
    these direct interrupts from working as expected. The reason for this is
    that some early stage prototypes had some pins misconfigured causing lots
    of spurious interrupts.
    
    We fix this by leaving the interrupt mask untouched. This allows SCI and
    other direct interrupts work properly. What comes to the possible spurious
    interrupts we switch the default handler to be handle_bad_irq() instead of
    handle_simple_irq() (which was not correct anyway).
    Reported-by: default avatarYu C Chen <yu.c.chen@intel.com>
    Reported-by: default avatarAnisse Astier <anisse@astier.eu>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    bcb48cca
pinctrl-cherryview.c 47.7 KB