Commit edcfdd91 authored by Stefan Ringel's avatar Stefan Ringel Committed by Mauro Carvalho Chehab

[media] tm6000: bugfix data check

beholder use a map with 3 bytes, but many rc maps have 2 bytes, so I add a workaround for beholder rc.
Signed-off-by: default avatarStefan Ringel <linuxtv@stefanringel.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent de2a20ba
...@@ -178,9 +178,21 @@ static int default_polling_getkey(struct tm6000_IR *ir, ...@@ -178,9 +178,21 @@ static int default_polling_getkey(struct tm6000_IR *ir,
poll_result->rc_data = ir->urb_data[0]; poll_result->rc_data = ir->urb_data[0];
break; break;
case RC_TYPE_NEC: case RC_TYPE_NEC:
if (ir->urb_data[1] == ((ir->key_addr >> 8) & 0xff)) { switch (dev->model) {
case 10:
case 11:
case 14:
case 15:
if (ir->urb_data[1] ==
((ir->key_addr >> 8) & 0xff)) {
poll_result->rc_data =
ir->urb_data[0]
| ir->urb_data[1] << 8;
}
break;
default:
poll_result->rc_data = ir->urb_data[0] poll_result->rc_data = ir->urb_data[0]
| ir->urb_data[1] << 8; | ir->urb_data[1] << 8;
} }
break; break;
default: default:
...@@ -238,8 +250,6 @@ static void tm6000_ir_handle_key(struct tm6000_IR *ir) ...@@ -238,8 +250,6 @@ static void tm6000_ir_handle_key(struct tm6000_IR *ir)
return; return;
} }
dprintk("ir->get_key result data=%04x\n", poll_result.rc_data);
if (ir->pwled) { if (ir->pwled) {
if (ir->pwledcnt >= PWLED_OFF) { if (ir->pwledcnt >= PWLED_OFF) {
ir->pwled = 0; ir->pwled = 0;
...@@ -250,6 +260,7 @@ static void tm6000_ir_handle_key(struct tm6000_IR *ir) ...@@ -250,6 +260,7 @@ static void tm6000_ir_handle_key(struct tm6000_IR *ir)
} }
if (ir->key) { if (ir->key) {
dprintk("ir->get_key result data=%04x\n", poll_result.rc_data);
rc_keydown(ir->rc, poll_result.rc_data, 0); rc_keydown(ir->rc, poll_result.rc_data, 0);
ir->key = 0; ir->key = 0;
ir->pwled = 1; ir->pwled = 1;
...@@ -333,7 +344,7 @@ int tm6000_ir_int_start(struct tm6000_core *dev) ...@@ -333,7 +344,7 @@ int tm6000_ir_int_start(struct tm6000_core *dev)
ir->int_urb->transfer_buffer, size, ir->int_urb->transfer_buffer, size,
tm6000_ir_urb_received, dev, tm6000_ir_urb_received, dev,
dev->int_in.endp->desc.bInterval); dev->int_in.endp->desc.bInterval);
err = usb_submit_urb(ir->int_urb, GFP_KERNEL); err = usb_submit_urb(ir->int_urb, GFP_ATOMIC);
if (err) { if (err) {
kfree(ir->int_urb->transfer_buffer); kfree(ir->int_urb->transfer_buffer);
usb_free_urb(ir->int_urb); usb_free_urb(ir->int_urb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment