On Wed, 2009-08-26 at 07:33 -0700, Dalton Harvie wrote: > Hi, > > I'm no expert with this stuff but have been using mythtv under ubuntu > for a while. Lately the machine became quite sluggish. > > I have two Leadtek 1000DTV cards and a usb remote in a ubuntu 8.04 > (2.6.24-24-generic) machine with the standard packaged kernel. > > >From /var/log/dmesg > [ 56.656386] cx88[0]: subsystem: 107d:665f, board: WinFast DTV1000-T > [card=35,autodetected] > > > I installed powertop and found that there were 500 wakeups/s occuring > from `run_workqueue (ir_timer)' which I assume is to do with polling > the built in remote receiver on these tuner cards. I no longer use > these Leadtek remotes, instead using a mceusb type one - so would like > to stop this polling. > > I tried a hack with my limited c knowledge - I edited cx88-input.c to > remove all references to the DTV1000 card (two places) and recompiled > the modules. Now the rapid polling has gone. The reponse of the new > mceusb remote seems to be much better now too. The problem is that I > don't want to have to recompile these modules each time there is an > update package to the kernel available. > > My question is - is there any way to stop this polling without having > to recompile the modules? Some option to pass to them maybe? No. No. > If there isn't, would it be a good idea? Maybe. > Thanks for any help. Try this. It adds a module option "noir" that accepts an array of int's. For a 0, that card's IR is set up as normal; for a 1, that card's IR is not initialized. # modprobe cx88 noir=1,1 Regards, Andy cx88: Add module option for disabling IR If an IR receiver isn't in use, there's no need to incurr the penalties for polling. Reported-by: Dalton Harvie <dalton_harvie@xxxxxxxxxxxx> Signed-off-by: Andy Walls <awalls@xxxxxxxxx> diff -r 28f8b0ebd224 linux/drivers/media/video/cx88/cx88-cards.c --- a/linux/drivers/media/video/cx88/cx88-cards.c Sun Aug 23 13:55:25 2009 -0300 +++ b/linux/drivers/media/video/cx88/cx88-cards.c Wed Aug 26 19:23:17 2009 -0400 @@ -32,14 +32,17 @@ static unsigned int tuner[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET }; static unsigned int radio[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET }; static unsigned int card[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET }; +static unsigned int noir[] = {[0 ... (CX88_MAXBOARDS - 1)] = UNSET }; module_param_array(tuner, int, NULL, 0444); module_param_array(radio, int, NULL, 0444); module_param_array(card, int, NULL, 0444); +module_param_array(noir, int, NULL, 0444); MODULE_PARM_DESC(tuner,"tuner type"); MODULE_PARM_DESC(radio,"radio tuner type"); MODULE_PARM_DESC(card,"card type"); +MODULE_PARM_DESC(noir, "disable IR (default: 0, IR enabled)"); static unsigned int latency = UNSET; module_param(latency,int,0444); @@ -3490,7 +3493,8 @@ } cx88_card_setup(core); - cx88_ir_init(core, pci); + if (!noir[core->nr]) + cx88_ir_init(core, pci); return core; } -- 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