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