LIRC 0.8.7 Fixes for Maverick

Jeremy Kerr jeremy.kerr at canonical.com
Tue Jun 21 05:40:00 UTC 2011


Hi all,

Digging up an old thread here, as I've been chasing a bug with a DVB
encoder.

> I've assembled and tested a set of LIRC fixes for Maverick that should
> be compatible with 2.6.35.  These sauce patches should be droppable
> for 2.6.36 (lirc is in staging, and mceusb/streamzap should be merged
> from v4l-dvb's other branch into mainline).  The 4 sauce patches are
> the same ones that Fedora 14 is going to be shipping with.
> 
> I've also opened a tracking bug for this at
> https://bugs.edge.launchpad.net/ubuntu/+source/linux/+bug/620498.
> Pull request below.
> 
> 
> The following changes since commit
> c3395bde8d122155fec15f2d2953a3426b09fbc2:
>   Mathieu J. Poirier (1):
>         UBUNTU: SAUCE: (no-up) ARM: Resetting power_mode to its
> original value.
> 
> are available in the git repository at:
> 
>   git://kernel.ubuntu.com/mariol/ubuntu-maverick.git lirc-maverick
> 
> Jarod Wilson (4):
>       UBUNTU: SAUCE: Bring in staging/lirc from 2.6.36
>       UBUNTU: SAUCE: Update ir-core to linuxtv/other which should be
> merged for 2.6.36.

This patch contains change that doesn't look to be related to IR code,
but are general changes to the cx23885 DVB driver. Patch commented
inline:

> --- a/drivers/media/video/cx23885/cx23885-core.c
> +++ b/drivers/media/video/cx23885/cx23885-core.c
> @@ -1142,7 +1142,7 @@ void cx23885_free_buffer(struct videobuf_queue *q, struct cx23885_buffer *buf)
>  
>  	BUG_ON(in_interrupt());
>  	videobuf_waiton(&buf->vb, 0, 0);
> -	videobuf_dma_unmap(q, dma);
> +	videobuf_dma_unmap(q->dev, dma);
>  	videobuf_dma_free(dma);
>  	btcx_riscmem_free(to_pci_dev(q->dev), &buf->risc);
>  	buf->vb.state = VIDEOBUF_NEEDS_INIT;

This hunk is incorrect - videobuf_dma_unmap() takes a videobuf_queue as
its first argument. This change passes a struct device instead.

(The change to the videobuf_dma_unmap API is not in this branch)

> @@ -1953,8 +1953,12 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,
>  		goto fail_irq;
>  	}
>  
> -	err = request_irq(pci_dev->irq, cx23885_irq,
> -			  IRQF_SHARED | IRQF_DISABLED, dev->name, dev);
> +	if (!pci_enable_msi(pci_dev))
> +		err = request_irq(pci_dev->irq, cx23885_irq,
> +				  IRQF_DISABLED, dev->name, dev);
> +	else
> +		err = request_irq(pci_dev->irq, cx23885_irq,
> +				  IRQF_SHARED | IRQF_DISABLED, dev->name, dev);
>  	if (err < 0) {
>  		printk(KERN_ERR "%s: can't get IRQ %d\n",
>  		       dev->name, pci_dev->irq);
> @@ -2000,6 +2004,7 @@ static void __devexit cx23885_finidev(struct pci_dev *pci_dev)
>  
>  	/* unregister stuff */
>  	free_irq(pci_dev->irq, dev);
> +	pci_disable_msi(pci_dev);
>  
>  	cx23885_dev_unregister(dev);
>  	v4l2_device_unregister(v4l2_dev);

These two hunks enable MSI for the cx23885 device, which isn't really in
line with the rest of the changes. This uncovered a problem with a DVB
card used on a motherboard that seems to have a sub-par MSI
implementation.

However, since we've already let this through to lucid-updates, we may
want to leave as-is.

So - OK for me to send a patch fixing just the first issue? Or should I
remove the MSI change too?

Cheers,


Jeremy






More information about the kernel-team mailing list