mlc_serio->type			= SERIO_HIL | SERIO_HIL_MLC; 
mlc_serio->id			= hil_mlc_serio_id; 
int hil_mlc_register(hil_mlc *mlc) {	int i;        unsigned long flags;	if (mlc == NULL) {		return -EINVAL;	}	mlc->istarted = 0;        mlc->ostarted = 0;        rwlock_init(&mlc->lock);        init_MUTEX(&(mlc->osem));        init_MUTEX(&(mlc->isem));        mlc->icount = -1;        mlc->imatch = 0;	mlc->opercnt = 0;        init_MUTEX_LOCKED(&(mlc->csem));	hil_mlc_clear_di_scratch(mlc);	hil_mlc_clear_di_map(mlc, 0);	for (i = 0; i < HIL_MLC_DEVMEM; i++) {		struct serio *mlc_serio;		hil_mlc_copy_di_scratch(mlc, i);		mlc_serio = kmalloc(sizeof(*mlc_serio), GFP_KERNEL);		mlc->serio[i] = mlc_serio;		memset(mlc_serio, 0, sizeof(*mlc_serio));		mlc_serio->type			= SERIO_HIL | SERIO_HIL_MLC;		mlc_serio->write		= hil_mlc_serio_write;		mlc_serio->open			= hil_mlc_serio_open;		mlc_serio->close		= hil_mlc_serio_close;		mlc_serio->port_data		= &(mlc->serio_map[i]);		mlc->serio_map[i].mlc		= mlc;		mlc->serio_map[i].didx		= i;		mlc->serio_map[i].di_revmap	= -1;		mlc->serio_opacket[i]		= 0;		mlc->serio_oidx[i]		= 0;		serio_register_port(mlc_serio);	}	mlc->tasklet = &hil_mlcs_tasklet;	write_lock_irqsave(&hil_mlcs_lock, flags);	list_add_tail(&mlc->list, &hil_mlcs);	mlc->seidx = HILSEN_START;	write_unlock_irqrestore(&hil_mlcs_lock, flags);	tasklet_schedule(&hil_mlcs_tasklet);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6ab0f5cd364476fe5cb329fd46ee41bea6d4c69c/hil_mlc.c/clean/drivers/input/serio/hil_mlc.c