imon: Input from ffdc device type ignored

Message ID 20120124203605.GQ2456@calimero.vinschen.de (mailing list archive)
State Superseded, archived
Headers

Commit Message

Corinna Vinschen Jan. 24, 2012, 8:36 p.m. UTC
  Hi,

I have an iMON device (device ID 15c2:ffdc) in my multimedia pc, which
worked without too many problems with pre-3.x kernels and the lirc_imon
module.  With the new imon module since kernel 3.0 the remote worked as
expected, just everytime the module got reloaded or the machine was
rebooted, the machine got a kernel oops.

With kernel version 3.2, the oops is fixed, but now the input from the
remote is not recognized at all.  There are no input entries in the log.

I have a patch to drivers/media/rc/imon.c for this issue which "works
for me"(tm), but I'm not sure it's the right thing to do.  With this
patch keypresses from the remote are recognized and the kernel oops
doesn't occur either.  It also fixes a minor typo (intf0 instead of
intf1) in imon_init_intf1.

See patch below.  Is that ok to go into mainline?

Please keep me CCed, I'm not subscribed to the list.


Thanks,
Corinna


Signed-off-by: Corinna Vinschen <vinschen@redhat.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

--- a/drivers/media/rc/imon.c
+++ b/drivers/media/rc/imon.c
@@ -1658,7 +1658,7 @@  static void usb_rx_callback_intf0(struct
 		return;
 
 	ictx = (struct imon_context *)urb->context;
-	if (!ictx || !ictx->dev_present_intf0)
+	if (!ictx)
 		return;
 
 	switch (urb->status) {
@@ -1669,7 +1669,8 @@  static void usb_rx_callback_intf0(struct
 		break;
 
 	case 0:
-		imon_incoming_packet(ictx, urb, intfnum);
+		if (ictx->dev_present_intf0)
+			imon_incoming_packet(ictx, urb, intfnum);
 		break;
 
 	default:
@@ -2242,7 +2243,7 @@  find_endpoint_failed:
 	mutex_unlock(&ictx->lock);
 	usb_free_urb(rx_urb);
 rx_urb_alloc_failed:
-	dev_err(ictx->dev, "unable to initialize intf0, err %d\n", ret);
+	dev_err(ictx->dev, "unable to initialize intf1, err %d\n", ret);
 
 	return NULL;
 }