summaryrefslogtreecommitdiff
path: root/firmware/target/arm/philips/hdd1630/button-hdd1630.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/philips/hdd1630/button-hdd1630.c')
-rwxr-xr-xfirmware/target/arm/philips/hdd1630/button-hdd1630.c48
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
49static int syn_status = 0;
50
51void button_init_device(void) 49void 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