mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
Input: ads7846 - add support for AD7843 parts
The AD7873 is almost identical to the ADS7846; the only difference is related to the Power Management bits PD0 and PD1. This results in a slightly different PENIRQ enable behavior. For the AD7873, VREF should be turned off during differential measurements. So, add the AD7873/43 to the list of driver supported devices, and prevent VREF usage during differential/ratiometric conversion modes. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
9e49f6c133
commit
06a09124b5
@ -24,17 +24,18 @@ config TOUCHSCREEN_88PM860X
|
||||
module will be called 88pm860x-ts.
|
||||
|
||||
config TOUCHSCREEN_ADS7846
|
||||
tristate "ADS7846/TSC2046 and ADS7843 based touchscreens"
|
||||
tristate "ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens"
|
||||
depends on SPI_MASTER
|
||||
depends on HWMON = n || HWMON
|
||||
help
|
||||
Say Y here if you have a touchscreen interface using the
|
||||
ADS7846/TSC2046 or ADS7843 controller, and your board-specific
|
||||
setup code includes that in its table of SPI devices.
|
||||
ADS7846/TSC2046/AD7873 or ADS7843/AD7843 controller,
|
||||
and your board-specific setup code includes that in its
|
||||
table of SPI devices.
|
||||
|
||||
If HWMON is selected, and the driver is told the reference voltage
|
||||
on your board, you will also get hwmon interfaces for the voltage
|
||||
(and on ads7846/tsc2046, temperature) sensors of this chip.
|
||||
(and on ads7846/tsc2046/ad7873, temperature) sensors of this chip.
|
||||
|
||||
If unsure, say N (but it's safe to say "Y").
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
* TSC2046 is just newer ads7846 silicon.
|
||||
* Support for ads7843 tested on Atmel at91sam926x-EK.
|
||||
* Support for ads7845 has only been stubbed in.
|
||||
* Support for Analog Devices AD7873 and AD7843 tested.
|
||||
*
|
||||
* IRQ handling needs a workaround because of a shortcoming in handling
|
||||
* edge triggered IRQs on some platforms like the OMAP1/2. These
|
||||
@ -984,6 +985,15 @@ static int __devinit ads7846_probe(struct spi_device *spi)
|
||||
|
||||
vref = pdata->keep_vref_on;
|
||||
|
||||
if (ts->model == 7873) {
|
||||
/* The AD7873 is almost identical to the ADS7846
|
||||
* keep VREF off during differential/ratiometric
|
||||
* conversion modes
|
||||
*/
|
||||
ts->model = 7846;
|
||||
vref = 0;
|
||||
}
|
||||
|
||||
/* set up the transfers to read touchscreen state; this assumes we
|
||||
* use formula #2 for pressure, not #3.
|
||||
*/
|
||||
|
@ -12,7 +12,7 @@ enum ads7846_filter {
|
||||
};
|
||||
|
||||
struct ads7846_platform_data {
|
||||
u16 model; /* 7843, 7845, 7846. */
|
||||
u16 model; /* 7843, 7845, 7846, 7873. */
|
||||
u16 vref_delay_usecs; /* 0 for external vref; etc */
|
||||
u16 vref_mv; /* external vref value, milliVolts */
|
||||
bool keep_vref_on; /* set to keep vref on for differential
|
||||
|
Loading…
Reference in New Issue
Block a user