} else { /* RC5: 5 bits device address, 6 bits data */ 
break;  case 2:	/* extended RC5: 5 bits device address, 7 bits data */ 
static void av7110_emit_key(u32 ircom){	u8 data;	u8 addr;	static u16 old_toggle = 0;	u16 new_toggle;	u16 keycode;	/* extract device address and data */	if (ir_config & 0x0001) {		/* TODO RCMM: ? bits device address, 8 bits data */		data = ircom & 0xff;		addr = (ircom >> 8) & 0xff;	} else {		/* RC5: 5 bits device address, 6 bits data */		data = ircom & 0x3f;		addr = (ircom >> 6) & 0x1f;	}	keycode = key_map[data];	dprintk(16, "#########%08x######### addr %i data 0x%02x (keycode %i)\n",		ircom, addr, data, keycode);	/* check device address (if selected) */	if (ir_config & 0x4000)		if (addr != ((ir_config >> 16) & 0xff))			return;	if (!keycode) {		printk ("%s: unknown key 0x%02x!!\n", __FUNCTION__, data);		return;	}	if (ir_config & 0x0001)		new_toggle = 0; /* RCMM */	else		new_toggle = (ircom & 0x800); /* RC5 */	if (timer_pending(&keyup_timer)) {		del_timer(&keyup_timer);		if (keyup_timer.data != keycode || new_toggle != old_toggle) {			input_event(&input_dev, EV_KEY, keyup_timer.data, !!0);			input_event(&input_dev, EV_KEY, keycode, !0);		} else			input_event(&input_dev, EV_KEY, keycode, 2);	} else		input_event(&input_dev, EV_KEY, keycode, !0);	keyup_timer.expires = jiffies + UP_TIMEOUT;	keyup_timer.data = keycode;	add_timer(&keyup_timer);	old_toggle = new_toggle;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/03388ae30260475650bab24223151397afb72ec9/av7110_ir.c/buggy/drivers/media/dvb/ttpci/av7110_ir.c