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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for looking into this Andy.

I modified your patch a bit (attached) I guess because the kernel version I'm using (ubuntu 8.04, 2.6.24-24) isn't the most recent?

Anyway, I have attached the patch incase anyone else wants to use it with this particular version.  Also, I had to apply the option (in /etc/modprobe/options)

options cx88xx noir=1,1

rather than to cx88.  Not sure if this is something to do with having an older kernel version, but it worked.  I followed instructions at https://wiki.ubuntu.com/KernelCustomBuild re building modules.  Now I can turn off or on the polling which is very handy.

I'm sure others would find this useful too - can I suggest this as a feature anywhere?  As an extension/alternative, what about an option to control the rate of polling - setting the rate to 0 would disable the polling altogether - not setting it at all would use the default rate.

--- On Thu, 8/27/09, Andy Walls <awalls@xxxxxxxxx> wrote:

> From: Andy Walls <awalls@xxxxxxxxx>
> Subject: Re: [linux-dvb] Can ir polling be turned off in cx88 module for Leadtek 1000DTV card?
> To: linux-media@xxxxxxxxxxxxxxx
> Cc: linux-dvb@xxxxxxxxxxx
> Date: Thursday, August 27, 2009, 9:30 AM
> 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;
>  }
> 
> 
> 
> _______________________________________________
> linux-dvb users mailing list
> For V4L/DVB development, please use instead linux-media@xxxxxxxxxxxxxxx
> linux-dvb@xxxxxxxxxxx
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
>


      

Attachment: cx88_irpolling_2.6.24-24-generic.diff
Description: Binary data


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux