• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/touchscreen/

Lines Matching defs:elo

56 struct elo {
70 static void elo_process_data_10(struct elo *elo, unsigned char data)
72 struct input_dev *dev = elo->dev;
74 elo->data[elo->idx] = data;
76 switch (elo->idx++) {
78 elo->csum = 0xaa;
80 dev_dbg(&elo->serio->dev,
82 elo->idx = 0;
87 elo->idx = 0;
88 if (data != elo->csum) {
89 dev_dbg(&elo->serio->dev,
91 data, elo->csum);
94 if (elo->data[1] != elo->expected_packet) {
95 if (elo->data[1] != ELO10_TOUCH_PACKET)
96 dev_dbg(&elo->serio->dev,
98 elo->data[1]);
101 if (likely(elo->data[1] == ELO10_TOUCH_PACKET)) {
102 input_report_abs(dev, ABS_X, (elo->data[4] << 8) | elo->data[3]);
103 input_report_abs(dev, ABS_Y, (elo->data[6] << 8) | elo->data[5]);
104 if (elo->data[2] & ELO10_PRESSURE)
106 (elo->data[8] << 8) | elo->data[7]);
107 input_report_key(dev, BTN_TOUCH, elo->data[2] & ELO10_TOUCH);
109 } else if (elo->data[1] == ELO10_ACK_PACKET) {
110 if (elo->data[2] == '0')
111 elo->expected_packet = ELO10_TOUCH_PACKET;
112 complete(&elo->cmd_done);
114 memcpy(elo->response, &elo->data[1], ELO10_PACKET_LEN);
115 elo->expected_packet = ELO10_ACK_PACKET;
119 elo->csum += data;
122 static void elo_process_data_6(struct elo *elo, unsigned char data)
124 struct input_dev *dev = elo->dev;
126 elo->data[elo->idx] = data;
128 switch (elo->idx++) {
132 elo->idx = 0;
137 elo->idx = 0;
142 elo->idx = 0;
147 elo->idx = 0;
151 input_report_abs(dev, ABS_X, ((elo->data[0] & 0x3f) << 6) | (elo->data[1] & 0x3f));
152 input_report_abs(dev, ABS_Y, ((elo->data[2] & 0x3f) << 6) | (elo->data[3] & 0x3f));
154 if (elo->id == 2) {
157 elo->idx = 0;
165 elo->idx = 0;
171 input_report_abs(dev, ABS_PRESSURE, elo->data[5]);
172 input_report_key(dev, BTN_TOUCH, !!elo->data[5]);
175 elo->idx = 0;
180 static void elo_process_data_3(struct elo *elo, unsigned char data)
182 struct input_dev *dev = elo->dev;
184 elo->data[elo->idx] = data;
186 switch (elo->idx++) {
190 elo->idx = 0;
193 input_report_key(dev, BTN_TOUCH, !(elo->data[1] & 0x80));
194 input_report_abs(dev, ABS_X, elo->data[1]);
195 input_report_abs(dev, ABS_Y, elo->data[2]);
197 elo->idx = 0;
205 struct elo *elo = serio_get_drvdata(serio);
207 switch (elo->id) {
209 elo_process_data_10(elo, data);
214 elo_process_data_6(elo, data);
218 elo_process_data_3(elo, data);
225 static int elo_command_10(struct elo *elo, unsigned char *packet)
231 mutex_lock(&elo->cmd_mutex);
233 serio_pause_rx(elo->serio);
234 elo->expected_packet = toupper(packet[0]);
235 init_completion(&elo->cmd_done);
236 serio_continue_rx(elo->serio);
238 if (serio_write(elo->serio, ELO10_LEAD_BYTE))
243 if (serio_write(elo->serio, packet[i]))
247 if (serio_write(elo->serio, csum))
250 wait_for_completion_timeout(&elo->cmd_done, HZ);
252 if (elo->expected_packet == ELO10_TOUCH_PACKET) {
254 memcpy(packet, elo->response, ELO10_PACKET_LEN);
259 mutex_unlock(&elo->cmd_mutex);
263 static int elo_setup_10(struct elo *elo)
266 struct input_dev *dev = elo->dev;
269 if (elo_command_10(elo, packet))
279 dev_info(&elo->serio->dev,
293 struct elo *elo = serio_get_drvdata(serio);
295 input_get_device(elo->dev);
296 input_unregister_device(elo->dev);
299 input_put_device(elo->dev);
300 kfree(elo);
311 struct elo *elo;
315 elo = kzalloc(sizeof(struct elo), GFP_KERNEL);
317 if (!elo || !input_dev) {
322 elo->serio = serio;
323 elo->id = serio->id.id;
324 elo->dev = input_dev;
325 elo->expected_packet = ELO10_TOUCH_PACKET;
326 mutex_init(&elo->cmd_mutex);
327 init_completion(&elo->cmd_done);
328 snprintf(elo->phys, sizeof(elo->phys), "%s/input0", serio->phys);
331 input_dev->phys = elo->phys;
334 input_dev->id.product = elo->id;
341 serio_set_drvdata(serio, elo);
346 switch (elo->id) {
349 if (elo_setup_10(elo))
368 err = input_register_device(elo->dev);
377 kfree(elo);
399 .name = "elo",