public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ads7846: pressure value limitation
@ 2006-03-21 18:56 Imre Deak
  2006-03-21 19:23 ` [PATCH] ads7846: pressure value limitationads Imre Deak
  0 siblings, 1 reply; 3+ messages in thread
From: Imre Deak @ 2006-03-21 18:56 UTC (permalink / raw)
  To: omap-linux; +Cc: Paul.Mundt, Dmitry Torokhov, Yrjola Juha (Nokia-M/Helsinki)

[-- Attachment #1: Type: text/plain, Size: 252 bytes --]

Limit the pressure value to the maximum specified in the board-*
specific file. Samples with pressure values beyond the maximum are
considered non-reliable. For these report the x,y values measured last.

Signed-off-by: Imre Deak <imre.deak@nokia.com>

[-- Attachment #2: ads7846-pressure_max-patch.diff --]
[-- Type: text/x-patch, Size: 1392 bytes --]

diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 2b9a521..02f4cdc 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -81,10 +83,14 @@ struct ads7846 {
 	u16			model;
 	u16			vref_delay_usecs;
 	u16			x_plate_ohms;
+	u16			pressure_max;
 
 	u8			read_x, read_y, read_z1, read_z2, pwrdown;
 	u16			dummy;		/* for the pwrdown read */
 	struct ts_event		tc;
+	u16			last_x;
+	u16			last_y;
+	u16			last_pressure;
 
 	struct spi_transfer	xfer[10];
 	struct spi_message	msg[5];
@@ -345,6 +351,18 @@ static void ads7846_rx(void *ads)
 	} else
 		Rt = 0;
 
+	if (Rt > ts->pressure_max) {
+		if (ts->last_pressure) {
+			x = ts->last_x;
+			y = ts->last_y;
+		}
+		Rt = ts->pressure_max;
+	}
+
+	ts->last_x = x;
+	ts->last_y = y;
+	ts->last_pressure = Rt;
+
 	/* NOTE:  "pendown" is inferred from pressure; we don't rely on
 	 * being able to check nPENIRQ status, or "friendly" trigger modes
 	 * (both-edges is much better than just-falling or low-level).
@@ -596,6 +615,7 @@ static int __devinit ads7846_probe(struc
 	ts->model = pdata->model ? : 7846;
 	ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
 	ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
+	ts->pressure_max = pdata->pressure_max ? : 255;
 	ts->debounce_max = pdata->debounce_max ? : 1;
 	ts->debounce_tol = pdata->debounce_tol ? : 10;
 


[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-03-23 10:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-21 18:56 [PATCH] ads7846: pressure value limitation Imre Deak
2006-03-21 19:23 ` [PATCH] ads7846: pressure value limitationads Imre Deak
2006-03-23 10:49   ` andrzej zaborowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox