• David Brownell's avatar
    [PATCH] spi: ads7846 driver · ffa458c1
    David Brownell authored
    This is a driver for the ADS7846 touchscreen sensor, derived from
    the corgi_ts and omap_ts drivers.  Key differences from those two:
    
      - Uses the new SPI framework (minimalist version)
      - <linux/spi/ads7846.h> abstracts board-specific touchscreen info
      - Sysfs attributes for the temperature and voltage sensors
      - Uses fewer ARM-specific IRQ primitives
    
    The temperature and voltage sensors show up in sysfs like this:
    
      $ pwd
      /sys/devices/platform/omap-uwire/spi2.0
      $ ls
      bus@          input:event0@ power/        temp1         vbatt
      driver@       modalias      temp0         vaux
      $ cat modalias
      ads7846
      $ cat temp0
      991
      $ cat temp1
      1177
      $
    
    So far only basic testing has been done.  There's a fair amount of hardware
    that uses this sensor, and which also runs Linux, which should eventually
    be able to use this driver.
    
    One portability note may be of special interest.  It turns out that not all
    SPI controllers are happy issuing requests that do things like "write 8 bit
    command, read 12 bit response".  Most of them seem happy to handle various
    word sizes, so the issue isn't "12 bit response" but rather "different rx
    and tx write sizes", despite that being a common MicroWire convention.  So
    this version of the driver no longer reads 12 bit native-endian words; it
    reads 16-bit big-endian responses, then byteswaps them and shifts the
    results to discard the noise.
    Signed-off-by: default avatarDavid Brownell <david-b@pacbell.net>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    ffa458c1
ads7846.c 15.5 KB