Commit afd96668 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

V4L/DVB (10987): cx23885: fix crash on non-netup cards

The new support for the CX23885_BOARD_NETUP_DUAL_DVBS2_CI board broke the
existing boards. Interrupts for the netup part were enabled and handled
without testing whether the current board actually had a netup -> instant
and fatal crash.

I've added tests to do this only for the CX23885_BOARD_NETUP_DUAL_DVBS2_CI
board.
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Reviewed-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9832d765
...@@ -1699,7 +1699,8 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id) ...@@ -1699,7 +1699,8 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
PCI_MSK_GPIO1); PCI_MSK_GPIO1);
} }
if ((pci_status & PCI_MSK_GPIO0) || (pci_status & PCI_MSK_GPIO1)) if (cx23885_boards[dev->board].cimax > 0 &&
((pci_status & PCI_MSK_GPIO0) || (pci_status & PCI_MSK_GPIO1)))
/* handled += cx23885_irq_gpio(dev, pci_status); */ /* handled += cx23885_irq_gpio(dev, pci_status); */
handled += netup_ci_slot_status(dev, pci_status); handled += netup_ci_slot_status(dev, pci_status);
...@@ -1775,7 +1776,12 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev, ...@@ -1775,7 +1776,12 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,
} }
pci_set_drvdata(pci_dev, dev); pci_set_drvdata(pci_dev, dev);
switch (dev->board) {
case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
cx_set(PCI_INT_MSK, 0x01800000); /* for NetUP */ cx_set(PCI_INT_MSK, 0x01800000); /* for NetUP */
break;
}
return 0; return 0;
......
...@@ -778,7 +778,11 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port) ...@@ -778,7 +778,11 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
if (fe0->dvb.frontend) if (fe0->dvb.frontend)
videobuf_dvb_unregister_bus(&port->frontends); videobuf_dvb_unregister_bus(&port->frontends);
switch (port->dev->board) {
case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
netup_ci_exit(port); netup_ci_exit(port);
break;
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment