• Oleksij Rempel's avatar
    Input: ads7846 - convert to one message · 6965eece
    Oleksij Rempel authored
    Convert multiple full duplex transfers in to a single transfer to reduce
    CPU load.
    
    Current driver version support following filtering modes:
    - ads7846_no_filter() - not filtered
    - ads7846_debounce_filter() - driver specific debounce filter
    - pdata->filter - platform specific debounce filter (do any platform
    	provides such filter?)
    
    Without filter this HW is not really usable, since the physic of
    resistive touchscreen can provide some bounce effects. With driver internal
    filter, we have constant amount of retries + debounce retries if some anomaly
    was detected.
    
    High amount of tiny SPI transfers is the primer reason of high CPU load
    and interrupt frequency.
    
    This patch create one SPI transfer with all fields and not optional retires. If
    bounce anomaly was detected, we will make more transfer if needed.
    
    Without this patch, we will get about 10% CPU load on iMX6S on pen-down event.
    For example by holding stylus on the screen.
    
    With this patch, depending in the amount of retries, the CPU load will
    be 1% with "ti,debounce-rep = <3>".
    
    One buffer transfer allows us to use PIO FIFO or DMA engine, depending
    on the platform.
    Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
    Link: https://lore.kernel.org/r/20201110085041.16303-3-o.rempel@pengutronix.deSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    6965eece
ads7846.c 35.7 KB