diff options
Diffstat (limited to 'firmware/target/arm/philips/hdd1630/button-hdd1630.c')
-rwxr-xr-x | firmware/target/arm/philips/hdd1630/button-hdd1630.c | 48 |
1 files changed, 8 insertions, 40 deletions
diff --git a/firmware/target/arm/philips/hdd1630/button-hdd1630.c b/firmware/target/arm/philips/hdd1630/button-hdd1630.c index c0ac8d7c10..e8214edf91 100755 --- a/firmware/target/arm/philips/hdd1630/button-hdd1630.c +++ b/firmware/target/arm/philips/hdd1630/button-hdd1630.c | |||
@@ -46,41 +46,11 @@ void button_click(void) | |||
46 | } | 46 | } |
47 | 47 | ||
48 | #ifndef BOOTLOADER | 48 | #ifndef BOOTLOADER |
49 | static int syn_status = 0; | ||
50 | |||
51 | void button_init_device(void) | 49 | void button_init_device(void) |
52 | { | 50 | { |
53 | /* enable touchpad */ | 51 | if (!syn_get_status()) |
54 | GPO32_ENABLE |= 0x80; | ||
55 | GPO32_VAL &= ~0x80; | ||
56 | udelay(1000); | ||
57 | |||
58 | /* enable ACK, CLK, DATA lines */ | ||
59 | GPIOD_ENABLE |= 0x80; | ||
60 | GPIOA_ENABLE |= (0x10 | 0x20); | ||
61 | |||
62 | GPIOD_OUTPUT_EN |= 0x80; /* ACK */ | ||
63 | GPIOD_OUTPUT_VAL |= 0x80; /* high */ | ||
64 | |||
65 | GPIOA_OUTPUT_EN &= ~0x20; /* CLK */ | ||
66 | |||
67 | GPIOA_OUTPUT_EN |= 0x10; /* DATA */ | ||
68 | GPIOA_OUTPUT_VAL |= 0x10; /* high */ | ||
69 | |||
70 | if (syn_init()) | ||
71 | { | 52 | { |
72 | #ifdef ROCKBOX_HAS_LOGF | 53 | logf("button_init_dev: touchpad not ready"); |
73 | syn_info(); | ||
74 | #endif | ||
75 | syn_status = 1; | ||
76 | |||
77 | /* enable interrupts */ | ||
78 | GPIOA_INT_LEV &= ~0x20; | ||
79 | GPIOA_INT_CLR |= 0x20; | ||
80 | GPIOA_INT_EN |= 0x20; | ||
81 | |||
82 | CPU_INT_EN |= HI_MASK; | ||
83 | CPU_HI_INT_EN |= GPIO0_MASK; | ||
84 | } | 54 | } |
85 | } | 55 | } |
86 | 56 | ||
@@ -94,19 +64,18 @@ void button_int(void) | |||
94 | 64 | ||
95 | int_btn = BUTTON_NONE; | 65 | int_btn = BUTTON_NONE; |
96 | 66 | ||
97 | if (syn_status) | 67 | if (syn_get_status()) |
98 | { | 68 | { |
99 | /* disable interrupt while we read the touchpad */ | 69 | /* disable interrupt while we read the touchpad */ |
100 | GPIOA_INT_EN &= ~0x20; | 70 | syn_int_enable(false); |
101 | GPIOA_INT_CLR |= 0x20; | ||
102 | 71 | ||
103 | val = syn_read_device(data, 4); | 72 | val = syn_read(data, 4); |
104 | if (val > 0) | 73 | if (val > 0) |
105 | { | 74 | { |
106 | val = data[0] & 0xff; /* packet header */ | 75 | val = data[0] & 0xff; /* packet header */ |
107 | id = (data[1] >> 4) & 0xf; /* packet id */ | 76 | id = (data[1] >> 4) & 0xf; /* packet id */ |
108 | 77 | ||
109 | logf("button_read_device..."); | 78 | logf("syn_read:"); |
110 | logf(" data[0] = 0x%08x", data[0]); | 79 | logf(" data[0] = 0x%08x", data[0]); |
111 | logf(" data[1] = 0x%08x", data[1]); | 80 | logf(" data[1] = 0x%08x", data[1]); |
112 | logf(" data[2] = 0x%08x", data[2]); | 81 | logf(" data[2] = 0x%08x", data[2]); |
@@ -121,7 +90,7 @@ void button_int(void) | |||
121 | int_btn |= BUTTON_RIGHT; | 90 | int_btn |= BUTTON_RIGHT; |
122 | 91 | ||
123 | /* An Absolute packet should follow which we ignore */ | 92 | /* An Absolute packet should follow which we ignore */ |
124 | val = syn_read_device(data, 4); | 93 | val = syn_read(data, 4); |
125 | logf(" int_btn = 0x%04x", int_btn); | 94 | logf(" int_btn = 0x%04x", int_btn); |
126 | } | 95 | } |
127 | else if (val == MEP_ABSOLUTE_HEADER) | 96 | else if (val == MEP_ABSOLUTE_HEADER) |
@@ -149,8 +118,7 @@ void button_int(void) | |||
149 | } | 118 | } |
150 | 119 | ||
151 | /* re-enable interrupts */ | 120 | /* re-enable interrupts */ |
152 | GPIOA_INT_LEV &= ~0x20; | 121 | syn_int_enable(true); |
153 | GPIOA_INT_EN |= 0x20; | ||
154 | } | 122 | } |
155 | } | 123 | } |
156 | #else | 124 | #else |