static void hx_ts_read(u16 * values) { s32 t, p = 0; int i; /* Read X, Y, Z1 and Z2 */ omap_tsc2101_reads(TOUCHSCREEN_DATA_REGISTERS_PAGE, TSC2101_TS_X, values, OMAP_TSC2101_READ_MAX); for (i = 0; i < OMAP_TSC2101_READ_MAX; i++) values[i] &= TSC2101_MASKVAL; /* Calculate Pressure */ if (values[TSC2101_TS_Z1] != 0) { t = ((OMAP_TSC2101_XRES * values[TSC2101_TS_X]) * (values[TSC2101_TS_Z2] - values[TSC2101_TS_Z1])); p = t / (u32) (TSC2101_PRESSUREVAL(values[TSC2101_TS_Z1])); if (p < 0) p = 0; } values[TSC2101_TS_Z1] = p; }
u16 omap_tsc2101_read(int page, u8 address) { u16 ret; omap_tsc2101_reads(page, address, &ret, 1); return ret; }