Hans, Jeff, Yes, the FW instability is a known issue. It's not just the IR polling. For example frequent polling for video lock will cause FW crash as well. In windows driver there's a workaround for this issue - all USB calls are serialized and surrounded by small delays which makes HDPVR fairly stable. In fact, I implemented this same workaround on Linux driver about a month ago but stashed it due to lack of free time. If somebody is interested and willing to test - I can provide a patch. To answer the following email from Jeff - as far as I know HDPVR firmware was released by Ambarella as a binary image only. Best regards, -Leo. -------- Original Message -------- Subject: Re: [PATCH] [media] hdpvr: Disable IR receiver by default. From: Hans Verkuil <hverkuil@xxxxxxxxx> Date: Thu, May 23, 2013 1:41 am To: Leonid Kegulskiy <leo@xxxxxxxxxxxx> Cc: Jeff Hansen <x@xxxxxxxxxxxxxx>, linux-media@xxxxxxxxxxxxxxx, Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> On Tue 14 May 2013 06:44:19 Jeff Hansen wrote: > All of the firmwares I've tested, including 0x1e, will inevitably crash > before recording for even 10 minutes. There must be a race condition of > IR RX vs. video-encoding in the firmware, because if you disable IR receiver > polling, then the firmware is stable again. I'd guess that most people don't > use this feature anyway, so we might as well disable it by default, and > warn them that it might be unstable until Hauppauge fixes it in a future > firmware. Leonid, have you ever seen this? Can you verify that this happens for you as well? Regards, Hans > > Signed-off-by: Jeff Hansen <x@xxxxxxxxxxxxxx> > --- > drivers/media/usb/hdpvr/hdpvr-core.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/usb/hdpvr/hdpvr-core.c b/drivers/media/usb/hdpvr/hdpvr-core.c > index 8247c19..3e80202 100644 > --- a/drivers/media/usb/hdpvr/hdpvr-core.c > +++ b/drivers/media/usb/hdpvr/hdpvr-core.c > @@ -53,6 +53,10 @@ static bool boost_audio; > module_param(boost_audio, bool, S_IRUGO|S_IWUSR); > MODULE_PARM_DESC(boost_audio, "boost the audio signal"); > > +int ir_rx_enable; > +module_param(ir_rx_enable, int, S_IRUGO|S_IWUSR); > +MODULE_PARM_DESC(ir_rx_enable, "Enable HDPVR IR receiver (firmware may be unstable)"); > + > > /* table of devices that work with this driver */ > static struct usb_device_id hdpvr_table[] = { > @@ -394,11 +398,13 @@ static int hdpvr_probe(struct usb_interface *interface, > goto error; > } > > - client = hdpvr_register_ir_rx_i2c(dev); > - if (!client) { > - v4l2_err(&dev->v4l2_dev, "i2c IR RX device register failed\n"); > - retval = -ENODEV; > - goto reg_fail; > + if (ir_rx_enable) { > + client = hdpvr_register_ir_rx_i2c(dev); > + if (!client) { > + v4l2_err(&dev->v4l2_dev, "i2c IR RX device register failed\n"); > + retval = -ENODEV; > + goto reg_fail; > + } > } > > client = hdpvr_register_ir_tx_i2c(dev); > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html