[linux-dvb] Can ir polling be turned off in cx88 module for Leadtek 1000DTV card?

Message ID 1251329402.5232.6.camel@palomino.walls.org (mailing list archive)
State Superseded, archived
Headers

Commit Message

Andy Walls Aug. 26, 2009, 11:30 p.m. UTC
  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@yahoo.com.au>
Signed-off-by: Andy Walls <awalls@radix.net>



--
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
  

Comments

Trent Piepho Aug. 27, 2009, 4:04 a.m. UTC | #1
On Wed, 26 Aug 2009, Andy Walls wrote:
> On Wed, 2009-08-26 at 07:33 -0700, Dalton Harvie wrote:
> >   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

I think this is a good idea.  I was going to do someting similar
to stop the excessive irqs from my cx88 cards, which don't
even have remote receivers.

I haven't tried, but maybe it is possible to only turn on polling when the
event device is opened.
--
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
  
Dan Taylor Aug. 27, 2009, 5:52 a.m. UTC | #2
Trent Piepho wrote:
> On Wed, 26 Aug 2009, Andy Walls wrote:
>> On Wed, 2009-08-26 at 07:33 -0700, Dalton Harvie wrote:
>>>   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
> 
> I think this is a good idea.  I was going to do someting similar
> to stop the excessive irqs from my cx88 cards, which don't
> even have remote receivers.
> 
> I haven't tried, but maybe it is possible to only turn on polling when the
> event device is opened.

Excellent idea.  I did something similar for a pseudo-SCSI device, where I
only polled if there was a command outstanding.

If no one else wants to take it on, I have a pcHDTV-3000 and -5000 and can
get a Leadtek something to work with.

> --
> 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
> 
--
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

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;
 }