mirror of
https://github.com/torvalds/linux.git
synced 2024-10-30 00:32:38 +00:00
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>
This commit is contained in:
parent
9832d765f8
commit
afd96668d8
@ -1699,7 +1699,8 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
|
||||
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 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
|
@ -778,7 +778,11 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
|
||||
if (fe0->dvb.frontend)
|
||||
videobuf_dvb_unregister_bus(&port->frontends);
|
||||
|
||||
netup_ci_exit(port);
|
||||
switch (port->dev->board) {
|
||||
case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
|
||||
netup_ci_exit(port);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user