diff options
author | balrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-25 18:46:17 +0000 |
---|---|---|
committer | balrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-11-25 18:46:17 +0000 |
commit | 8ef6367ea928725652bde4cbde0a94d0b29fe773 (patch) | |
tree | 725049e1aa92a39a43e4a0f5977a1c2c0dcb9f82 | |
parent | 1f587329169765299448c1becd6a633a204ead29 (diff) |
Scale TSC2102 touchscreen pressure value more realistically (still could be better).
PalmOS 5.2.1 now fully boots.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3741 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | hw/mainstone.c | 1 | ||||
-rw-r--r-- | hw/omap.c | 2 | ||||
-rw-r--r-- | hw/sd.c | 2 | ||||
-rw-r--r-- | hw/tsc210x.c | 14 |
4 files changed, 11 insertions, 8 deletions
diff --git a/hw/mainstone.c b/hw/mainstone.c index 274cbffb5a..d6ce4ffe0b 100644 --- a/hw/mainstone.c +++ b/hw/mainstone.c @@ -11,7 +11,6 @@ #include "hw.h" #include "pxa.h" #include "arm-misc.h" -#include "sysemu.h" #include "net.h" #include "devices.h" #include "boards.h" @@ -4809,7 +4809,6 @@ static void omap_mpu_reset(void *opaque) { struct omap_mpu_state_s *mpu = (struct omap_mpu_state_s *) opaque; - omap_clkm_reset(mpu); omap_inth_reset(mpu->ih[0]); omap_inth_reset(mpu->ih[1]); omap_dma_reset(mpu->dma); @@ -4843,6 +4842,7 @@ static void omap_mpu_reset(void *opaque) omap_mcbsp_reset(mpu->mcbsp3); omap_lpg_reset(mpu->led[0]); omap_lpg_reset(mpu->led[1]); + omap_clkm_reset(mpu); cpu_reset(mpu->env); } @@ -397,7 +397,7 @@ static void sd_cardchange(void *opaque) } /* We do not model the chip select pin, so allow the board to select - whether card should be in SSI ot MMC/SD mode. It is also up to the + whether card should be in SSI or MMC/SD mode. It is also up to the board to ensure that ssi transfers only occur when the chip select is asserted. */ SDState *sd_init(BlockDriverState *bs, int is_spi) diff --git a/hw/tsc210x.c b/hw/tsc210x.c index 6082aa0b9a..96956a47de 100644 --- a/hw/tsc210x.c +++ b/hw/tsc210x.c @@ -130,9 +130,10 @@ static const uint16_t mode_regs[16] = { #define Y_TRANSFORM(value) \ ((150 + ((int) (value) * (3037 - 150) / 32768)) << 4) #define Z1_TRANSFORM(s) \ - ((400 - (s)->x + ((s)->pressure << 9)) << 4) + ((400 - ((s)->x >> 7) + ((s)->pressure << 10)) << 4) #define Z2_TRANSFORM(s) \ - ((4000 + (s)->y - ((s)->pressure << 10)) << 4) + ((4000 + ((s)->y >> 7) - ((s)->pressure << 10)) << 4) + #define BAT1_VAL 0x8660 #define BAT2_VAL 0x0000 #define AUX1_VAL 0x35c0 @@ -367,7 +368,8 @@ static uint16_t tsc2102_data_register_read(struct tsc210x_state_s *s, int reg) case 0x05: /* BAT1 */ s->dav &= 0xffbf; - return TSC_CUT_RESOLUTION(BAT1_VAL, s->precision); + return TSC_CUT_RESOLUTION(BAT1_VAL, s->precision) + + (s->noise & 6); case 0x06: /* BAT2 */ s->dav &= 0xffdf; @@ -383,11 +385,13 @@ static uint16_t tsc2102_data_register_read(struct tsc210x_state_s *s, int reg) case 0x09: /* TEMP1 */ s->dav &= 0xfffb; - return TSC_CUT_RESOLUTION(TEMP1_VAL, s->precision); + return TSC_CUT_RESOLUTION(TEMP1_VAL, s->precision) - + (s->noise & 5); case 0x0a: /* TEMP2 */ s->dav &= 0xfffd; - return TSC_CUT_RESOLUTION(TEMP2_VAL, s->precision); + return TSC_CUT_RESOLUTION(TEMP2_VAL, s->precision) ^ + (s->noise & 3); case 0x0b: /* DAC */ s->dav &= 0xfffe; |