Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
u16 omap_tsc2101_read(int page, u8 address)
{
	u16 ret;
	omap_tsc2101_reads(page, address, &ret, 1);
	return ret;
}