Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -178,7 +178,19 @@ static int default_polling_getkey(struct tm6000_IR *ir,
			poll_result->rc_data = ir->urb_data[0];
			break;
		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]
					| ir->urb_data[1] << 8;
			}
@@ -238,8 +250,6 @@ static void tm6000_ir_handle_key(struct tm6000_IR *ir)
		return;
	}

	dprintk("ir->get_key result data=%04x\n", poll_result.rc_data);

	if (ir->pwled) {
		if (ir->pwledcnt >= PWLED_OFF) {
			ir->pwled = 0;
@@ -250,6 +260,7 @@ static void tm6000_ir_handle_key(struct tm6000_IR *ir)
	}

	if (ir->key) {
		dprintk("ir->get_key result data=%04x\n", poll_result.rc_data);
		rc_keydown(ir->rc, poll_result.rc_data, 0);
		ir->key = 0;
		ir->pwled = 1;
@@ -333,7 +344,7 @@ int tm6000_ir_int_start(struct tm6000_core *dev)
		ir->int_urb->transfer_buffer, size,
		tm6000_ir_urb_received, dev,
		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) {
		kfree(ir->int_urb->transfer_buffer);
		usb_free_urb(ir->int_urb);