ir_input_keydown(&ir->input, &ir->ir, ircode & 0x3f, ircode); 
ir_input_keydown(ir->input, &ir->ir, ircode & 0x3f, ircode); 
void cx88_ir_irq(struct cx88_core *core){	struct cx88_IR *ir = core->ir;	u32 samples, ircode;	int i;	if (NULL == ir)		return;	if (!ir->sampling)		return;	samples = cx_read(MO_SAMPLE_IO);	if (0 != samples && 0xffffffff != samples) {		/* record sample data */		if (ir->scount < ARRAY_SIZE(ir->samples))			ir->samples[ir->scount++] = samples;		return;	}	if (!ir->scount) {		/* nothing to sample */		if (ir->ir.keypressed && time_after(jiffies, ir->release))			ir_input_nokey(&ir->input, &ir->ir);		return;	}	/* have a complete sample */	if (ir->scount < ARRAY_SIZE(ir->samples))		ir->samples[ir->scount++] = samples;	for (i = 0; i < ir->scount; i++)		ir->samples[i] = ~ir->samples[i];	if (ir_debug)		ir_dump_samples(ir->samples, ir->scount);	/* decode it */	switch (core->board) {	case CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1:		ircode = ir_decode_pulsedistance(ir->samples, ir->scount, 1, 4);		if (ircode == 0xffffffff) { /* decoding error */			ir_dprintk("pulse distance decoding error\n");			break;		}		ir_dprintk("pulse distance decoded: %x\n", ircode);		if (ircode == 0) { /* key still pressed */			ir_dprintk("pulse distance decoded repeat code\n");			ir->release = jiffies + msecs_to_jiffies(120);			break;		}		if ((ircode & 0xffff) != 0xeb04) { /* wrong address */			ir_dprintk("pulse distance decoded wrong address\n"); 			break;		}		if (((~ircode >> 24) & 0xff) != ((ircode >> 16) & 0xff)) { /* wrong checksum */			ir_dprintk("pulse distance decoded wrong check sum\n");			break;		}		ir_dprintk("Key Code: %x\n", (ircode >> 16) & 0x7f);		ir_input_keydown(&ir->input, &ir->ir, (ircode >> 16) & 0x7f, (ircode >> 16) & 0xff);		ir->release = jiffies + msecs_to_jiffies(120);		break;	case CX88_BOARD_HAUPPAUGE:	case CX88_BOARD_HAUPPAUGE_DVB_T1:		ircode = ir_decode_biphase(ir->samples, ir->scount, 5, 7);		ir_dprintk("biphase decoded: %x\n", ircode);		if ((ircode & 0xfffff000) != 0x3000)			break;		ir_input_keydown(&ir->input, &ir->ir, ircode & 0x3f, ircode);		ir->release = jiffies + msecs_to_jiffies(120);		break;	}	ir->scount = 0;	return;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b7df3910c1298fee8ed7b9dfd2da74b85df5539c/cx88-input.c/buggy/drivers/media/video/cx88/cx88-input.c