• Jason Wang's avatar
    Input: ads7846 - switch to using threaded IRQ · 2991a1ca
    Jason Wang authored
    Commit 91143379 introduces regulator operations in ads7846 touchscreen
    driver. Among these operations, some are called while holding a
    spinlock. On many platforms regulators reside on slow buses, such as
    I2C/SPI and require sleep while accessing them.
    
    The touchscreen itself is also a SPI device and currently relies on
    asynchronous SPI access to avoid sleeping in interrupt context. Let's
    switch to using threaded IRQ to be able to access SPI bus
    synchronously (which simplifies driver a bit); it also allows safe
    access to the regulators as well.
    
    This has been tested on the ti_omap3530evm board:
     1) using ts_lib after normal boot
     2) using ts_lib after "#echo 1/0 > /sys/bus/spi/devices/spi0.1/disable"
     3) using ts_lib after "#echo mem > /sys/power/state" and "wake up"
    
    Also tested on pandora.
    
    Based on original patch by Dmitry Torokhov.
    Tested-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
    Signed-off-by: default avatarJason Wang <jason77.wang@gmail.com>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    2991a1ca
ads7846.c 33.2 KB