printk(KERN_INFO "input: %s on %s\n", elo_name, serio->phys);  return 0; 
fail:	serio_set_drvdata(serio, NULL); input_free_device(input_dev); kfree(elo); return err; 
static int elo_connect(struct serio *serio, struct serio_driver *drv){	struct elo *elo;	int err;	if (!(elo = kmalloc(sizeof(struct elo), GFP_KERNEL)))		return -ENOMEM;	memset(elo, 0, sizeof(struct elo));	init_input_dev(&elo->dev);	elo->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);	elo->dev.keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);	elo->id = serio->id.id;	switch (elo->id) {		case 0: /* 10-byte protocol */			input_set_abs_params(&elo->dev, ABS_X, 96, 4000, 0, 0);			input_set_abs_params(&elo->dev, ABS_Y, 96, 4000, 0, 0);			input_set_abs_params(&elo->dev, ABS_PRESSURE, 0, 255, 0, 0);			break;		case 1: /* 6-byte protocol */			input_set_abs_params(&elo->dev, ABS_PRESSURE, 0, 15, 0, 0);		case 2: /* 4-byte protocol */			input_set_abs_params(&elo->dev, ABS_X, 96, 4000, 0, 0);			input_set_abs_params(&elo->dev, ABS_Y, 96, 4000, 0, 0);			break;		case 3: /* 3-byte protocol */			input_set_abs_params(&elo->dev, ABS_X, 0, 255, 0, 0);			input_set_abs_params(&elo->dev, ABS_Y, 0, 255, 0, 0);			break;	}	elo->serio = serio;	sprintf(elo->phys, "%s/input0", serio->phys);	elo->dev.private = elo;	elo->dev.name = elo_name;	elo->dev.phys = elo->phys;	elo->dev.id.bustype = BUS_RS232;	elo->dev.id.vendor = SERIO_ELO;	elo->dev.id.product = elo->id;	elo->dev.id.version = 0x0100;	serio_set_drvdata(serio, elo);	err = serio_open(serio, drv);	if (err) {		serio_set_drvdata(serio, NULL);		kfree(elo);		return err;	}	input_register_device(&elo->dev);	printk(KERN_INFO "input: %s on %s\n", elo_name, serio->phys);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/eca1ed196cd5b523c1057204cd3672555ad58dfe/elo.c/clean/drivers/input/touchscreen/elo.c