ir_input_keydown(&ir->input, &ir->ir, data, data); ir_input_nokey(&ir->input, &ir->ir); 
ir_input_keydown(ir->input, &ir->ir, data, data); ir_input_nokey(ir->input, &ir->ir); 
static void cx88_ir_handle_key(struct cx88_IR *ir){	struct cx88_core *core = ir->core;	u32 gpio, data;	/* read gpio value */	gpio = cx_read(ir->gpio_addr);	if (ir->polling) {		if (ir->last_gpio == gpio)			return;		ir->last_gpio = gpio;	}	/* extract data */	data = ir_extract_bits(gpio, ir->mask_keycode);	ir_dprintk("irq gpio=0x%x code=%d | %s%s%s\n",		   gpio, data,		   ir->polling ? "poll" : "irq",		   (gpio & ir->mask_keydown) ? " down" : "",		   (gpio & ir->mask_keyup) ? " up" : "");	if (ir->mask_keydown) {		/* bit set on keydown */		if (gpio & ir->mask_keydown) {			ir_input_keydown(&ir->input, &ir->ir, data, data);		} else {			ir_input_nokey(&ir->input, &ir->ir);		}	} else if (ir->mask_keyup) {		/* bit cleared on keydown */		if (0 == (gpio & ir->mask_keyup)) {			ir_input_keydown(&ir->input, &ir->ir, data, data);		} else {			ir_input_nokey(&ir->input, &ir->ir);		}	} else {		/* can't distinguish keydown/up :-/ */		ir_input_keydown(&ir->input, &ir->ir, data, data);		ir_input_nokey(&ir->input, &ir->ir);	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b7df3910c1298fee8ed7b9dfd2da74b85df5539c/cx88-input.c/buggy/drivers/media/video/cx88/cx88-input.c