Limit the pressure value to the maximum specified in the board-
specific file. Samples with pressure values beyond the maximum are
considered non-reliable. Report the previously measured X and Y
values samples instead of the non-reliable ones.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
Signed-off-by: Juha Yrjola <juha.yrjola@nokia.com>
u16 model;
u16 vref_delay_usecs;
u16 x_plate_ohms;
u16 model;
u16 vref_delay_usecs;
u16 x_plate_ohms;
u8 read_x, read_y, read_z1, read_z2, pwrdown;
u16 dummy; /* for the pwrdown read */
struct ts_event tc;
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];
struct spi_transfer xfer[10];
struct spi_message msg[5];
+ 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).
/* 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).
ts->model = pdata->model ? : 7846;
ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
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;
ts->debounce_max = pdata->debounce_max ? : 1;
ts->debounce_tol = pdata->debounce_tol ? : 10;