aboutsummaryrefslogtreecommitdiff
path: root/hw/tsc2005.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/tsc2005.c')
-rw-r--r--hw/tsc2005.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/hw/tsc2005.c b/hw/tsc2005.c
index aeef59f908..73cc3e0784 100644
--- a/hw/tsc2005.c
+++ b/hw/tsc2005.c
@@ -23,13 +23,6 @@
#include "hw.h"
#include "qemu-timer.h"
#include "console.h"
-#include "omap.h"
-
-#define TSC_DATA_REGISTERS_PAGE 0x0
-#define TSC_CONTROL_REGISTERS_PAGE 0x1
-#define TSC_AUDIO_REGISTERS_PAGE 0x2
-
-#define TSC_VERBOSE
#define TSC_CUT_RESOLUTION(value, p) ((value) >> (16 - (p ? 12 : 10)))
@@ -115,9 +108,6 @@ static const uint16_t mode_regs[16] = {
#define TEMP1_VAL (1264 << 4) /* +/- 5 at 12-bit */
#define TEMP2_VAL (1531 << 4) /* +/- 5 at 12-bit */
-#define TSC_POWEROFF_DELAY 50
-#define TSC_SOFTSTEP_DELAY 50
-
static uint16_t tsc2005_read(struct tsc2005_state_s *s, int reg)
{
uint16_t ret;
@@ -250,9 +240,6 @@ static void tsc2005_pin_update(struct tsc2005_state_s *s)
pin_state = !s->pressure;
}
- if (!s->enabled)
- pin_state = 0;
-
if (pin_state != s->irq) {
s->irq = pin_state;
qemu_set_irq(s->pint, s->irq);
@@ -261,6 +248,8 @@ static void tsc2005_pin_update(struct tsc2005_state_s *s)
switch (s->nextfunction) {
case TSC_MODE_XYZ_SCAN:
case TSC_MODE_XY_SCAN:
+ if (!s->host_mode && s->dav)
+ s->enabled = 0;
if (!s->pressure)
return;
/* Fall through */
@@ -344,6 +333,9 @@ uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)
s->enabled = !(value & 1);
fprintf(stderr, "%s: touchscreen sense %sabled\n",
__FUNCTION__, s->enabled ? "en" : "dis");
+ if (s->busy && !s->enabled)
+ qemu_del_timer(s->timer);
+ s->busy &= s->enabled;
}
tsc2005_pin_update(s);
}