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: Hans Verkuil <hverkuil@xs4all.nl>
Reviewed-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
index 1b40145..d19d453 100644
--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -1699,7 +1699,8 @@
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 += netup_ci_slot_status(dev, pci_status);
@@ -1775,7 +1776,12 @@
}
pci_set_drvdata(pci_dev, dev);
- cx_set(PCI_INT_MSK, 0x01800000); /* for NetUP */
+
+ switch (dev->board) {
+ case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
+ cx_set(PCI_INT_MSK, 0x01800000); /* for NetUP */
+ break;
+ }
return 0;