elo 65 drivers/input/touchscreen/elo.c static void elo_process_data_10(struct elo *elo, unsigned char data) elo 67 drivers/input/touchscreen/elo.c struct input_dev *dev = elo->dev; elo 69 drivers/input/touchscreen/elo.c elo->data[elo->idx] = data; elo 71 drivers/input/touchscreen/elo.c switch (elo->idx++) { elo 73 drivers/input/touchscreen/elo.c elo->csum = 0xaa; elo 75 drivers/input/touchscreen/elo.c dev_dbg(&elo->serio->dev, elo 77 drivers/input/touchscreen/elo.c elo->idx = 0; elo 82 drivers/input/touchscreen/elo.c elo->idx = 0; elo 83 drivers/input/touchscreen/elo.c if (data != elo->csum) { elo 84 drivers/input/touchscreen/elo.c dev_dbg(&elo->serio->dev, elo 86 drivers/input/touchscreen/elo.c data, elo->csum); elo 89 drivers/input/touchscreen/elo.c if (elo->data[1] != elo->expected_packet) { elo 90 drivers/input/touchscreen/elo.c if (elo->data[1] != ELO10_TOUCH_PACKET) elo 91 drivers/input/touchscreen/elo.c dev_dbg(&elo->serio->dev, elo 93 drivers/input/touchscreen/elo.c elo->data[1]); elo 96 drivers/input/touchscreen/elo.c if (likely(elo->data[1] == ELO10_TOUCH_PACKET)) { elo 97 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_X, (elo->data[4] << 8) | elo->data[3]); elo 98 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_Y, (elo->data[6] << 8) | elo->data[5]); elo 99 drivers/input/touchscreen/elo.c if (elo->data[2] & ELO10_PRESSURE) elo 101 drivers/input/touchscreen/elo.c (elo->data[8] << 8) | elo->data[7]); elo 102 drivers/input/touchscreen/elo.c input_report_key(dev, BTN_TOUCH, elo->data[2] & ELO10_TOUCH); elo 104 drivers/input/touchscreen/elo.c } else if (elo->data[1] == ELO10_ACK_PACKET) { elo 105 drivers/input/touchscreen/elo.c if (elo->data[2] == '0') elo 106 drivers/input/touchscreen/elo.c elo->expected_packet = ELO10_TOUCH_PACKET; elo 107 drivers/input/touchscreen/elo.c complete(&elo->cmd_done); elo 109 drivers/input/touchscreen/elo.c memcpy(elo->response, &elo->data[1], ELO10_PACKET_LEN); elo 110 drivers/input/touchscreen/elo.c elo->expected_packet = ELO10_ACK_PACKET; elo 114 drivers/input/touchscreen/elo.c elo->csum += data; elo 117 drivers/input/touchscreen/elo.c static void elo_process_data_6(struct elo *elo, unsigned char data) elo 119 drivers/input/touchscreen/elo.c struct input_dev *dev = elo->dev; elo 121 drivers/input/touchscreen/elo.c elo->data[elo->idx] = data; elo 123 drivers/input/touchscreen/elo.c switch (elo->idx++) { elo 127 drivers/input/touchscreen/elo.c elo->idx = 0; elo 132 drivers/input/touchscreen/elo.c elo->idx = 0; elo 137 drivers/input/touchscreen/elo.c elo->idx = 0; elo 142 drivers/input/touchscreen/elo.c elo->idx = 0; elo 146 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_X, ((elo->data[0] & 0x3f) << 6) | (elo->data[1] & 0x3f)); elo 147 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_Y, ((elo->data[2] & 0x3f) << 6) | (elo->data[3] & 0x3f)); elo 149 drivers/input/touchscreen/elo.c if (elo->id == 2) { elo 152 drivers/input/touchscreen/elo.c elo->idx = 0; elo 160 drivers/input/touchscreen/elo.c elo->idx = 0; elo 166 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_PRESSURE, elo->data[5]); elo 167 drivers/input/touchscreen/elo.c input_report_key(dev, BTN_TOUCH, !!elo->data[5]); elo 170 drivers/input/touchscreen/elo.c elo->idx = 0; elo 175 drivers/input/touchscreen/elo.c static void elo_process_data_3(struct elo *elo, unsigned char data) elo 177 drivers/input/touchscreen/elo.c struct input_dev *dev = elo->dev; elo 179 drivers/input/touchscreen/elo.c elo->data[elo->idx] = data; elo 181 drivers/input/touchscreen/elo.c switch (elo->idx++) { elo 185 drivers/input/touchscreen/elo.c elo->idx = 0; elo 188 drivers/input/touchscreen/elo.c input_report_key(dev, BTN_TOUCH, !(elo->data[1] & 0x80)); elo 189 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_X, elo->data[1]); elo 190 drivers/input/touchscreen/elo.c input_report_abs(dev, ABS_Y, elo->data[2]); elo 192 drivers/input/touchscreen/elo.c elo->idx = 0; elo 200 drivers/input/touchscreen/elo.c struct elo *elo = serio_get_drvdata(serio); elo 202 drivers/input/touchscreen/elo.c switch (elo->id) { elo 204 drivers/input/touchscreen/elo.c elo_process_data_10(elo, data); elo 209 drivers/input/touchscreen/elo.c elo_process_data_6(elo, data); elo 213 drivers/input/touchscreen/elo.c elo_process_data_3(elo, data); elo 220 drivers/input/touchscreen/elo.c static int elo_command_10(struct elo *elo, unsigned char *packet) elo 226 drivers/input/touchscreen/elo.c mutex_lock(&elo->cmd_mutex); elo 228 drivers/input/touchscreen/elo.c serio_pause_rx(elo->serio); elo 229 drivers/input/touchscreen/elo.c elo->expected_packet = toupper(packet[0]); elo 230 drivers/input/touchscreen/elo.c init_completion(&elo->cmd_done); elo 231 drivers/input/touchscreen/elo.c serio_continue_rx(elo->serio); elo 233 drivers/input/touchscreen/elo.c if (serio_write(elo->serio, ELO10_LEAD_BYTE)) elo 238 drivers/input/touchscreen/elo.c if (serio_write(elo->serio, packet[i])) elo 242 drivers/input/touchscreen/elo.c if (serio_write(elo->serio, csum)) elo 245 drivers/input/touchscreen/elo.c wait_for_completion_timeout(&elo->cmd_done, HZ); elo 247 drivers/input/touchscreen/elo.c if (elo->expected_packet == ELO10_TOUCH_PACKET) { elo 249 drivers/input/touchscreen/elo.c memcpy(packet, elo->response, ELO10_PACKET_LEN); elo 254 drivers/input/touchscreen/elo.c mutex_unlock(&elo->cmd_mutex); elo 258 drivers/input/touchscreen/elo.c static int elo_setup_10(struct elo *elo) elo 261 drivers/input/touchscreen/elo.c struct input_dev *dev = elo->dev; elo 264 drivers/input/touchscreen/elo.c if (elo_command_10(elo, packet)) elo 274 drivers/input/touchscreen/elo.c dev_info(&elo->serio->dev, elo 288 drivers/input/touchscreen/elo.c struct elo *elo = serio_get_drvdata(serio); elo 290 drivers/input/touchscreen/elo.c input_get_device(elo->dev); elo 291 drivers/input/touchscreen/elo.c input_unregister_device(elo->dev); elo 294 drivers/input/touchscreen/elo.c input_put_device(elo->dev); elo 295 drivers/input/touchscreen/elo.c kfree(elo); elo 306 drivers/input/touchscreen/elo.c struct elo *elo; elo 310 drivers/input/touchscreen/elo.c elo = kzalloc(sizeof(struct elo), GFP_KERNEL); elo 312 drivers/input/touchscreen/elo.c if (!elo || !input_dev) { elo 317 drivers/input/touchscreen/elo.c elo->serio = serio; elo 318 drivers/input/touchscreen/elo.c elo->id = serio->id.id; elo 319 drivers/input/touchscreen/elo.c elo->dev = input_dev; elo 320 drivers/input/touchscreen/elo.c elo->expected_packet = ELO10_TOUCH_PACKET; elo 321 drivers/input/touchscreen/elo.c mutex_init(&elo->cmd_mutex); elo 322 drivers/input/touchscreen/elo.c init_completion(&elo->cmd_done); elo 323 drivers/input/touchscreen/elo.c snprintf(elo->phys, sizeof(elo->phys), "%s/input0", serio->phys); elo 326 drivers/input/touchscreen/elo.c input_dev->phys = elo->phys; elo 329 drivers/input/touchscreen/elo.c input_dev->id.product = elo->id; elo 336 drivers/input/touchscreen/elo.c serio_set_drvdata(serio, elo); elo 341 drivers/input/touchscreen/elo.c switch (elo->id) { elo 344 drivers/input/touchscreen/elo.c if (elo_setup_10(elo)) elo 364 drivers/input/touchscreen/elo.c err = input_register_device(elo->dev); elo 373 drivers/input/touchscreen/elo.c kfree(elo);