Commit 603044d8 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

V4L/DVB: em28xx-input: Don't generate one debug message for every get_key read



Instead of generating one printk for every IR read, prints it only when
count is different from the last count.

While here, as this code is called on every 100ms during the runtime
lifetime, do some performance optimization, assuming that, under normal
circumstances, it is unlikely that the driver would get a new key/key
repeat on every poll.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a469585b
Loading
Loading
Loading
Loading
+15 −18
Original line number Diff line number Diff line
@@ -292,18 +292,15 @@ static void em28xx_ir_handle_key(struct em28xx_IR *ir)

	/* read the registers containing the IR status */
	result = ir->get_key(ir, &poll_result);
	if (result < 0) {
	if (unlikely(result < 0)) {
		dprintk("ir->get_key() failed %d\n", result);
		return;
	}

	dprintk("ir->get_key result tb=%02x rc=%02x lr=%02x data=%02x%02x\n",
	if (unlikely(poll_result.read_count != ir->last_readcount)) {
		dprintk("%s: toggle: %d, count: %d, key 0x%02x%02x\n", __func__,
			poll_result.toggle_bit, poll_result.read_count,
		ir->last_readcount, poll_result.rc_address,
		poll_result.rc_data[0]);

	if (poll_result.read_count > 0 &&
	    poll_result.read_count != ir->last_readcount) {
			poll_result.rc_address, poll_result.rc_data[0]);
		if (ir->full_code)
			ir_keydown(ir->input,
				   poll_result.rc_address << 8 |
@@ -313,7 +310,6 @@ static void em28xx_ir_handle_key(struct em28xx_IR *ir)
			ir_keydown(ir->input,
				   poll_result.rc_data[0],
				   poll_result.toggle_bit);
	}

		if (ir->dev->chip_id == CHIP_ID_EM2874)
			/* The em2874 clears the readcount field every time the
@@ -325,6 +321,7 @@ static void em28xx_ir_handle_key(struct em28xx_IR *ir)
		else
			ir->last_readcount = poll_result.read_count;
	}
}

static void em28xx_ir_work(struct work_struct *work)
{