• Mika Westerberg's avatar
    pinctrl: intel: Initialize GPIO properly when used through irqchip · f5a26acf
    Mika Westerberg authored
    When a GPIO is requested using gpiod_get_* APIs the intel pinctrl driver
    switches the pin to GPIO mode and makes sure interrupts are routed to
    the GPIO hardware instead of IOAPIC. However, if the GPIO is used
    directly through irqchip, as is the case with many I2C-HID devices where
    I2C core automatically configures interrupt for the device, the pin is
    not initialized as GPIO. Instead we rely that the BIOS configures the
    pin accordingly which seems not to be the case at least in Asus X540NA
    SKU3 with Focaltech touchpad.
    
    When the pin is not properly configured it might result weird behaviour
    like interrupts suddenly stop firing completely and the touchpad stops
    responding to user input.
    
    Fix this by properly initializing the pin to GPIO mode also when it is
    used directly through irqchip.
    
    Fixes: 7981c001 ("pinctrl: intel: Add Intel Sunrisepoint pin controller and GPIO support")
    Reported-by: default avatarDaniel Drake <drake@endlessm.com>
    Reported-and-tested-by: default avatarChris Chiu <chiu@endlessm.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    f5a26acf
pinctrl-intel.c 37.5 KB