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);