]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge source.mvista.com:linux-omap
authorJuha Yrjola <juha.yrjola@nokia.com>
Wed, 22 Mar 2006 15:47:28 +0000 (11:47 -0400)
committerJuha Yrjola <juha.yrjola@nokia.com>
Wed, 22 Mar 2006 15:47:28 +0000 (11:47 -0400)
arch/arm/mach-omap1/board-nokia770.c
drivers/input/touchscreen/ads7846.c

index c8ea991a79e235c21f5a4ccdd2115d044b171882..912025f698df855d2035aea5786450631102009d 100644 (file)
@@ -94,7 +94,7 @@ static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata =
        .x_max          = 0x0fff,
        .y_max          = 0x0fff,
        .x_plate_ohms   = 180,
-       .pressure_max   = 200,
+       .pressure_max   = 255,
        .debounce_max   = 10,
        .debounce_tol   = 3,
 };
index 19d8f43e6c9ec550f3fe518da3d7153e910014ec..71fbcc4c58b6e122f7f793a7065995e078055e99 100644 (file)
@@ -80,10 +80,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];
@@ -344,6 +348,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).
@@ -593,6 +609,7 @@ static int __devinit ads7846_probe(struct spi_device *spi)
        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 ? : ~0;
        ts->debounce_max = pdata->debounce_max ? : 1;
        ts->debounce_tol = pdata->debounce_tol ? : 10;