Revision 8ef6367e hw/tsc210x.c

b/hw/tsc210x.c
130 130
#define Y_TRANSFORM(value)		\
131 131
    ((150 + ((int) (value) * (3037 - 150) / 32768)) << 4)
132 132
#define Z1_TRANSFORM(s)			\
133
    ((400 - (s)->x + ((s)->pressure << 9)) << 4)
133
    ((400 - ((s)->x >> 7) + ((s)->pressure << 10)) << 4)
134 134
#define Z2_TRANSFORM(s)			\
135
    ((4000 + (s)->y - ((s)->pressure << 10)) << 4)
135
    ((4000 + ((s)->y >> 7) - ((s)->pressure << 10)) << 4)
136

  
136 137
#define BAT1_VAL			0x8660
137 138
#define BAT2_VAL			0x0000
138 139
#define AUX1_VAL			0x35c0
......
367 368

  
368 369
    case 0x05:	/* BAT1 */
369 370
        s->dav &= 0xffbf;
370
        return TSC_CUT_RESOLUTION(BAT1_VAL, s->precision);
371
        return TSC_CUT_RESOLUTION(BAT1_VAL, s->precision) +
372
                (s->noise & 6);
371 373

  
372 374
    case 0x06:	/* BAT2 */
373 375
        s->dav &= 0xffdf;
......
383 385

  
384 386
    case 0x09:	/* TEMP1 */
385 387
        s->dav &= 0xfffb;
386
        return TSC_CUT_RESOLUTION(TEMP1_VAL, s->precision);
388
        return TSC_CUT_RESOLUTION(TEMP1_VAL, s->precision) -
389
                (s->noise & 5);
387 390

  
388 391
    case 0x0a:	/* TEMP2 */
389 392
        s->dav &= 0xfffd;
390
        return TSC_CUT_RESOLUTION(TEMP2_VAL, s->precision);
393
        return TSC_CUT_RESOLUTION(TEMP2_VAL, s->precision) ^
394
                (s->noise & 3);
391 395

  
392 396
    case 0x0b:	/* DAC */
393 397
        s->dav &= 0xfffe;

Also available in: Unified diff