aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx23885/cx23885-core.c
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@netup.ru>2009-03-03 10:06:09 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 11:43:05 -0400
commit5a23b0762c9095e137ce9a559cc7c37b2f8fd083 (patch)
tree501d119b876a9051f2349fcf62fb9b4863fb577d /drivers/media/video/cx23885/cx23885-core.c
parentce45264eca4963e666ec170af1eeb0c4f5f8339e (diff)
V4L/DVB (10805): Add support for NetUP Dual DVB-S2 CI card
Add support for NetUP Dual DVB-S2 CI card The card based on cx23885 PCI-e bridge, CiMax SP2 Common Interface chips, STM lnbh24 LNB power chip, stv6110 tuners and stv0900 demodulator. http://www.linuxtv.org/wiki/index.php/NetUP_Dual_DVB_S2_CI Signed-off-by: Igor M. Liplianin <liplianin@netup.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx23885/cx23885-core.c')
-rw-r--r--drivers/media/video/cx23885/cx23885-core.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
index 8f6fb2add7de..1b401457d42e 100644
--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -31,6 +31,7 @@
31#include <asm/div64.h> 31#include <asm/div64.h>
32 32
33#include "cx23885.h" 33#include "cx23885.h"
34#include "cimax2.h"
34 35
35MODULE_DESCRIPTION("Driver for cx23885 based TV cards"); 36MODULE_DESCRIPTION("Driver for cx23885 based TV cards");
36MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>"); 37MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>");
@@ -791,6 +792,8 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
791 dev->pci_bus = dev->pci->bus->number; 792 dev->pci_bus = dev->pci->bus->number;
792 dev->pci_slot = PCI_SLOT(dev->pci->devfn); 793 dev->pci_slot = PCI_SLOT(dev->pci->devfn);
793 dev->pci_irqmask = 0x001f00; 794 dev->pci_irqmask = 0x001f00;
795 if (cx23885_boards[dev->board].cimax > 0)
796 dev->pci_irqmask |= 0x01800000; /* for CiMaxes */
794 797
795 /* External Master 1 Bus */ 798 /* External Master 1 Bus */
796 dev->i2c_bus[0].nr = 0; 799 dev->i2c_bus[0].nr = 0;
@@ -1643,7 +1646,9 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
1643 (pci_status & PCI_MSK_VID_B) || 1646 (pci_status & PCI_MSK_VID_B) ||
1644 (pci_status & PCI_MSK_VID_A) || 1647 (pci_status & PCI_MSK_VID_A) ||
1645 (pci_status & PCI_MSK_AUD_INT) || 1648 (pci_status & PCI_MSK_AUD_INT) ||
1646 (pci_status & PCI_MSK_AUD_EXT)) { 1649 (pci_status & PCI_MSK_AUD_EXT) ||
1650 (pci_status & PCI_MSK_GPIO0) ||
1651 (pci_status & PCI_MSK_GPIO1)) {
1647 1652
1648 if (pci_status & PCI_MSK_RISC_RD) 1653 if (pci_status & PCI_MSK_RISC_RD)
1649 dprintk(7, " (PCI_MSK_RISC_RD 0x%08x)\n", 1654 dprintk(7, " (PCI_MSK_RISC_RD 0x%08x)\n",
@@ -1685,8 +1690,19 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
1685 dprintk(7, " (PCI_MSK_AUD_EXT 0x%08x)\n", 1690 dprintk(7, " (PCI_MSK_AUD_EXT 0x%08x)\n",
1686 PCI_MSK_AUD_EXT); 1691 PCI_MSK_AUD_EXT);
1687 1692
1693 if (pci_status & PCI_MSK_GPIO0)
1694 dprintk(7, " (PCI_MSK_GPIO0 0x%08x)\n",
1695 PCI_MSK_GPIO0);
1696
1697 if (pci_status & PCI_MSK_GPIO1)
1698 dprintk(7, " (PCI_MSK_GPIO1 0x%08x)\n",
1699 PCI_MSK_GPIO1);
1688 } 1700 }
1689 1701
1702 if ((pci_status & PCI_MSK_GPIO0) || (pci_status & PCI_MSK_GPIO1))
1703 /* handled += cx23885_irq_gpio(dev, pci_status); */
1704 handled += netup_ci_slot_status(dev, pci_status);
1705
1690 if (ts1_status) { 1706 if (ts1_status) {
1691 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) 1707 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB)
1692 handled += cx23885_irq_ts(ts1, ts1_status); 1708 handled += cx23885_irq_ts(ts1, ts1_status);
@@ -1759,6 +1775,8 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,
1759 } 1775 }
1760 1776
1761 pci_set_drvdata(pci_dev, dev); 1777 pci_set_drvdata(pci_dev, dev);
1778 cx_set(PCI_INT_MSK, 0x01800000); /* for NetUP */
1779
1762 return 0; 1780 return 0;
1763 1781
1764fail_irq: 1782fail_irq: