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
					
				
			
		
					 3 changed files with 16 additions and 5 deletions
				
			
		|  | @ -24,17 +24,18 @@ config TOUCHSCREEN_88PM860X | ||||||
| 	  module will be called 88pm860x-ts. | 	  module will be called 88pm860x-ts. | ||||||
| 
 | 
 | ||||||
| config TOUCHSCREEN_ADS7846 | 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 SPI_MASTER | ||||||
| 	depends on HWMON = n || HWMON | 	depends on HWMON = n || HWMON | ||||||
| 	help | 	help | ||||||
| 	  Say Y here if you have a touchscreen interface using the | 	  Say Y here if you have a touchscreen interface using the | ||||||
| 	  ADS7846/TSC2046 or ADS7843 controller, and your board-specific | 	  ADS7846/TSC2046/AD7873 or ADS7843/AD7843 controller, | ||||||
| 	  setup code includes that in its table of SPI devices. | 	  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 | 	  If HWMON is selected, and the driver is told the reference voltage | ||||||
| 	  on your board, you will also get hwmon interfaces for the 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"). | 	  If unsure, say N (but it's safe to say "Y"). | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -36,6 +36,7 @@ | ||||||
|  * TSC2046 is just newer ads7846 silicon. |  * TSC2046 is just newer ads7846 silicon. | ||||||
|  * Support for ads7843 tested on Atmel at91sam926x-EK. |  * Support for ads7843 tested on Atmel at91sam926x-EK. | ||||||
|  * Support for ads7845 has only been stubbed in. |  * 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 |  * IRQ handling needs a workaround because of a shortcoming in handling | ||||||
|  * edge triggered IRQs on some platforms like the OMAP1/2. These |  * 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; | 	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
 | 	/* set up the transfers to read touchscreen state; this assumes we
 | ||||||
| 	 * use formula #2 for pressure, not #3. | 	 * use formula #2 for pressure, not #3. | ||||||
| 	 */ | 	 */ | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ enum ads7846_filter { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct ads7846_platform_data { | 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_delay_usecs;	/* 0 for external vref; etc */ | ||||||
| 	u16	vref_mv;		/* external vref value, milliVolts */ | 	u16	vref_mv;		/* external vref value, milliVolts */ | ||||||
| 	bool	keep_vref_on;		/* set to keep vref on for differential
 | 	bool	keep_vref_on;		/* set to keep vref on for differential
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Michael Hennerich
				Michael Hennerich