aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
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
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')
-rw-r--r--drivers/media/video/cx23885/Kconfig1
-rw-r--r--drivers/media/video/cx23885/Makefile4
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c53
-rw-r--r--drivers/media/video/cx23885/cx23885-core.c20
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c106
-rw-r--r--drivers/media/video/cx23885/cx23885-reg.h2
-rw-r--r--drivers/media/video/cx23885/cx23885.h3
7 files changed, 186 insertions, 3 deletions
diff --git a/drivers/media/video/cx23885/Kconfig b/drivers/media/video/cx23885/Kconfig
index 00f1e2e8889e..b62f16d507d8 100644
--- a/drivers/media/video/cx23885/Kconfig
+++ b/drivers/media/video/cx23885/Kconfig
@@ -16,6 +16,7 @@ config VIDEO_CX23885
16 select DVB_LGDT330X if !DVB_FE_CUSTOMISE 16 select DVB_LGDT330X if !DVB_FE_CUSTOMISE
17 select DVB_ZL10353 if !DVB_FE_CUSTOMISE 17 select DVB_ZL10353 if !DVB_FE_CUSTOMISE
18 select DVB_TDA10048 if !DVB_FE_CUSTOMIZE 18 select DVB_TDA10048 if !DVB_FE_CUSTOMIZE
19 select DVB_LNBP21 if !DVB_FE_CUSTOMIZE
19 select MEDIA_TUNER_MT2131 if !MEDIA_TUNER_CUSTOMIZE 20 select MEDIA_TUNER_MT2131 if !MEDIA_TUNER_CUSTOMIZE
20 select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE 21 select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE
21 select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE 22 select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE
diff --git a/drivers/media/video/cx23885/Makefile b/drivers/media/video/cx23885/Makefile
index 29c23b44c13c..ab8ea35c9bfb 100644
--- a/drivers/media/video/cx23885/Makefile
+++ b/drivers/media/video/cx23885/Makefile
@@ -1,4 +1,6 @@
1cx23885-objs := cx23885-cards.o cx23885-video.o cx23885-vbi.o cx23885-core.o cx23885-i2c.o cx23885-dvb.o cx23885-417.o 1cx23885-objs := cx23885-cards.o cx23885-video.o cx23885-vbi.o \
2 cx23885-core.o cx23885-i2c.o cx23885-dvb.o cx23885-417.o \
3 netup-init.o cimax2.o netup-eeprom.o
2 4
3obj-$(CONFIG_VIDEO_CX23885) += cx23885.o 5obj-$(CONFIG_VIDEO_CX23885) += cx23885.o
4 6
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 7ff339a2e3f2..08cd793cd151 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -27,6 +27,7 @@
27 27
28#include "cx23885.h" 28#include "cx23885.h"
29#include "tuner-xc2028.h" 29#include "tuner-xc2028.h"
30#include "netup-init.h"
30 31
31/* ------------------------------------------------------------------ */ 32/* ------------------------------------------------------------------ */
32/* board config info */ 33/* board config info */
@@ -174,6 +175,12 @@ struct cx23885_board cx23885_boards[] = {
174 .name = "DVBWorld DVB-S2 2005", 175 .name = "DVBWorld DVB-S2 2005",
175 .portb = CX23885_MPEG_DVB, 176 .portb = CX23885_MPEG_DVB,
176 }, 177 },
178 [CX23885_BOARD_NETUP_DUAL_DVBS2_CI] = {
179 .cimax = 1,
180 .name = "NetUP Dual DVB-S2 CI",
181 .portb = CX23885_MPEG_DVB,
182 .portc = CX23885_MPEG_DVB,
183 },
177}; 184};
178const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 185const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
179 186
@@ -269,6 +276,10 @@ struct cx23885_subid cx23885_subids[] = {
269 .subvendor = 0x0001, 276 .subvendor = 0x0001,
270 .subdevice = 0x2005, 277 .subdevice = 0x2005,
271 .card = CX23885_BOARD_DVBWORLD_2005, 278 .card = CX23885_BOARD_DVBWORLD_2005,
279 }, {
280 .subvendor = 0x1b55,
281 .subdevice = 0x2a2c,
282 .card = CX23885_BOARD_NETUP_DUAL_DVBS2_CI,
272 }, 283 },
273}; 284};
274const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 285const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -582,6 +593,32 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
582 cx_write(MC417_OEN, 0x00001000); 593 cx_write(MC417_OEN, 0x00001000);
583 cx_write(MC417_RWD, 0x00001800); 594 cx_write(MC417_RWD, 0x00001800);
584 break; 595 break;
596 case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
597 /* GPIO-0 INTA from CiMax1
598 GPIO-1 INTB from CiMax2
599 GPIO-2 reset chips
600 GPIO-3 to GPIO-10 data/addr for CA
601 GPIO-11 ~CS0 to CiMax1
602 GPIO-12 ~CS1 to CiMax2
603 GPIO-13 ADL0 load LSB addr
604 GPIO-14 ADL1 load MSB addr
605 GPIO-15 ~RDY from CiMax
606 GPIO-17 ~RD to CiMax
607 GPIO-18 ~WR to CiMax
608 */
609 cx_set(GP0_IO, 0x00040000); /* GPIO as out */
610 /* GPIO1 and GPIO2 as INTA and INTB from CiMaxes, reset low */
611 cx_clear(GP0_IO, 0x00030004);
612 mdelay(100);/* reset delay */
613 cx_set(GP0_IO, 0x00040004); /* GPIO as out, reset high */
614 cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
615 /* GPIO-15 IN as ~ACK, rest as OUT */
616 cx_write(MC417_OEN, 0x00001000);
617 /* ~RD, ~WR high; ADL0, ADL1 low; ~CS0, ~CS1 high */
618 cx_write(MC417_RWD, 0x0000c300);
619 /* enable irq */
620 cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
621 break;
585 } 622 }
586} 623}
587 624
@@ -669,6 +706,14 @@ void cx23885_card_setup(struct cx23885_dev *dev)
669 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 706 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
670 ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; 707 ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
671 break; 708 break;
709 case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
710 ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
711 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
712 ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
713 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
714 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
715 ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
716 break;
672 case CX23885_BOARD_HAUPPAUGE_HVR1250: 717 case CX23885_BOARD_HAUPPAUGE_HVR1250:
673 case CX23885_BOARD_HAUPPAUGE_HVR1500: 718 case CX23885_BOARD_HAUPPAUGE_HVR1500:
674 case CX23885_BOARD_HAUPPAUGE_HVR1500Q: 719 case CX23885_BOARD_HAUPPAUGE_HVR1500Q:
@@ -693,9 +738,17 @@ void cx23885_card_setup(struct cx23885_dev *dev)
693 case CX23885_BOARD_HAUPPAUGE_HVR1700: 738 case CX23885_BOARD_HAUPPAUGE_HVR1700:
694 case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H: 739 case CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H:
695 case CX23885_BOARD_COMPRO_VIDEOMATE_E650F: 740 case CX23885_BOARD_COMPRO_VIDEOMATE_E650F:
741 case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
696 request_module("cx25840"); 742 request_module("cx25840");
697 break; 743 break;
698 } 744 }
745
746 /* AUX-PLL 27MHz CLK */
747 switch (dev->board) {
748 case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
749 netup_initialize(dev);
750 break;
751 }
699} 752}
700 753
701/* ------------------------------------------------------------------ */ 754/* ------------------------------------------------------------------ */
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:
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index 14a6540b826c..9a0bc6e84a95 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -30,6 +30,7 @@
30#include "cx23885.h" 30#include "cx23885.h"
31#include <media/v4l2-common.h> 31#include <media/v4l2-common.h>
32 32
33#include "dvb_ca_en50221.h"
33#include "s5h1409.h" 34#include "s5h1409.h"
34#include "s5h1411.h" 35#include "s5h1411.h"
35#include "mt2131.h" 36#include "mt2131.h"
@@ -43,7 +44,13 @@
43#include "dib7000p.h" 44#include "dib7000p.h"
44#include "dibx000_common.h" 45#include "dibx000_common.h"
45#include "zl10353.h" 46#include "zl10353.h"
47#include "stv0900.h"
48#include "stv6110.h"
49#include "lnbh24.h"
46#include "cx24116.h" 50#include "cx24116.h"
51#include "cimax2.h"
52#include "netup-eeprom.h"
53#include "netup-init.h"
47 54
48static unsigned int debug; 55static unsigned int debug;
49 56
@@ -309,6 +316,31 @@ static struct zl10353_config dvico_fusionhdtv_xc3028 = {
309 .no_tuner = 1, 316 .no_tuner = 1,
310}; 317};
311 318
319static struct stv0900_config netup_stv0900_config = {
320 .demod_address = 0x68,
321 .xtal = 27000000,
322 .clkmode = 3,/* 0-CLKI, 2-XTALI, else AUTO */
323 .diseqc_mode = 2,/* 2/3 PWM */
324 .path1_mode = 2,/*Serial continues clock */
325 .path2_mode = 2,/*Serial continues clock */
326 .tun1_maddress = 0,/* 0x60 */
327 .tun2_maddress = 3,/* 0x63 */
328 .tun1_adc = 1,/* 1 Vpp */
329 .tun2_adc = 1,/* 1 Vpp */
330};
331
332static struct stv6110_config netup_stv6110_tunerconfig_a = {
333 .i2c_address = 0x60,
334 .mclk = 27000000,
335 .iq_wiring = 0,
336};
337
338static struct stv6110_config netup_stv6110_tunerconfig_b = {
339 .i2c_address = 0x63,
340 .mclk = 27000000,
341 .iq_wiring = 1,
342};
343
312static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) 344static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
313{ 345{
314 struct cx23885_tsport *port = fe->dvb->priv; 346 struct cx23885_tsport *port = fe->dvb->priv;
@@ -340,6 +372,7 @@ static int dvb_register(struct cx23885_tsport *port)
340 struct cx23885_dev *dev = port->dev; 372 struct cx23885_dev *dev = port->dev;
341 struct cx23885_i2c *i2c_bus = NULL; 373 struct cx23885_i2c *i2c_bus = NULL;
342 struct videobuf_dvb_frontend *fe0; 374 struct videobuf_dvb_frontend *fe0;
375 int ret;
343 376
344 /* Get the first frontend */ 377 /* Get the first frontend */
345 fe0 = videobuf_dvb_get_frontend(&port->frontends, 1); 378 fe0 = videobuf_dvb_get_frontend(&port->frontends, 1);
@@ -580,6 +613,51 @@ static int dvb_register(struct cx23885_tsport *port)
580 &dvbworld_cx24116_config, 613 &dvbworld_cx24116_config,
581 &i2c_bus->i2c_adap); 614 &i2c_bus->i2c_adap);
582 break; 615 break;
616 case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
617 i2c_bus = &dev->i2c_bus[0];
618 switch (port->nr) {
619 /* port B */
620 case 1:
621 fe0->dvb.frontend = dvb_attach(stv0900_attach,
622 &netup_stv0900_config,
623 &i2c_bus->i2c_adap, 0);
624 if (fe0->dvb.frontend != NULL) {
625 if (dvb_attach(stv6110_attach,
626 fe0->dvb.frontend,
627 &netup_stv6110_tunerconfig_a,
628 &i2c_bus->i2c_adap)) {
629 if (!dvb_attach(lnbh24_attach,
630 fe0->dvb.frontend,
631 &i2c_bus->i2c_adap,
632 LNBH24_PCL, 0, 0x09))
633 printk(KERN_ERR
634 "No LNBH24 found!\n");
635
636 }
637 }
638 break;
639 /* port C */
640 case 2:
641 fe0->dvb.frontend = dvb_attach(stv0900_attach,
642 &netup_stv0900_config,
643 &i2c_bus->i2c_adap, 1);
644 if (fe0->dvb.frontend != NULL) {
645 if (dvb_attach(stv6110_attach,
646 fe0->dvb.frontend,
647 &netup_stv6110_tunerconfig_b,
648 &i2c_bus->i2c_adap)) {
649 if (!dvb_attach(lnbh24_attach,
650 fe0->dvb.frontend,
651 &i2c_bus->i2c_adap,
652 LNBH24_PCL, 0, 0x0a))
653 printk(KERN_ERR
654 "No LNBH24 found!\n");
655
656 }
657 }
658 break;
659 }
660 break;
583 default: 661 default:
584 printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " 662 printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
585 " isn't supported yet\n", 663 " isn't supported yet\n",
@@ -601,9 +679,33 @@ static int dvb_register(struct cx23885_tsport *port)
601 fe0->dvb.frontend->ops.analog_ops.standby(fe0->dvb.frontend); 679 fe0->dvb.frontend->ops.analog_ops.standby(fe0->dvb.frontend);
602 680
603 /* register everything */ 681 /* register everything */
604 return videobuf_dvb_register_bus(&port->frontends, THIS_MODULE, port, 682 ret = videobuf_dvb_register_bus(&port->frontends, THIS_MODULE, port,
605 &dev->pci->dev, adapter_nr, 0); 683 &dev->pci->dev, adapter_nr, 0);
606 684
685 /* init CI & MAC */
686 switch (dev->board) {
687 case CX23885_BOARD_NETUP_DUAL_DVBS2_CI: {
688 static struct netup_card_info cinfo;
689
690 netup_get_card_info(&dev->i2c_bus[0].i2c_adap, &cinfo);
691 memcpy(port->frontends.adapter.proposed_mac,
692 cinfo.port[port->nr - 1].mac, 6);
693 printk(KERN_INFO "NetUP Dual DVB-S2 CI card port%d MAC="
694 "%02X:%02X:%02X:%02X:%02X:%02X\n",
695 port->nr,
696 port->frontends.adapter.proposed_mac[0],
697 port->frontends.adapter.proposed_mac[1],
698 port->frontends.adapter.proposed_mac[2],
699 port->frontends.adapter.proposed_mac[3],
700 port->frontends.adapter.proposed_mac[4],
701 port->frontends.adapter.proposed_mac[5]);
702
703 netup_ci_init(port);
704 break;
705 }
706 }
707
708 return ret;
607} 709}
608 710
609int cx23885_dvb_register(struct cx23885_tsport *port) 711int cx23885_dvb_register(struct cx23885_tsport *port)
@@ -676,6 +778,8 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
676 if (fe0->dvb.frontend) 778 if (fe0->dvb.frontend)
677 videobuf_dvb_unregister_bus(&port->frontends); 779 videobuf_dvb_unregister_bus(&port->frontends);
678 780
781 netup_ci_exit(port);
782
679 return 0; 783 return 0;
680} 784}
681 785
diff --git a/drivers/media/video/cx23885/cx23885-reg.h b/drivers/media/video/cx23885/cx23885-reg.h
index 20b68a236260..eafbe5226bae 100644
--- a/drivers/media/video/cx23885/cx23885-reg.h
+++ b/drivers/media/video/cx23885/cx23885-reg.h
@@ -212,6 +212,8 @@ Channel manager Data Structure entry = 20 DWORD
212 212
213#define DEV_CNTRL2 0x00040000 213#define DEV_CNTRL2 0x00040000
214 214
215#define PCI_MSK_GPIO1 (1 << 24)
216#define PCI_MSK_GPIO0 (1 << 23)
215#define PCI_MSK_APB_DMA (1 << 12) 217#define PCI_MSK_APB_DMA (1 << 12)
216#define PCI_MSK_AL_WR (1 << 11) 218#define PCI_MSK_AL_WR (1 << 11)
217#define PCI_MSK_AL_RD (1 << 10) 219#define PCI_MSK_AL_RD (1 << 10)
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index 37a88b1683c3..779fc35b18d6 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -70,6 +70,7 @@
70#define CX23885_BOARD_TBS_6920 14 70#define CX23885_BOARD_TBS_6920 14
71#define CX23885_BOARD_TEVII_S470 15 71#define CX23885_BOARD_TEVII_S470 15
72#define CX23885_BOARD_DVBWORLD_2005 16 72#define CX23885_BOARD_DVBWORLD_2005 16
73#define CX23885_BOARD_NETUP_DUAL_DVBS2_CI 17
73 74
74/* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */ 75/* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
75#define CX23885_NORMS (\ 76#define CX23885_NORMS (\
@@ -187,6 +188,7 @@ struct cx23885_board {
187 */ 188 */
188 u32 clk_freq; 189 u32 clk_freq;
189 struct cx23885_input input[MAX_CX23885_INPUT]; 190 struct cx23885_input input[MAX_CX23885_INPUT];
191 int cimax; /* for NetUP */
190}; 192};
191 193
192struct cx23885_subid { 194struct cx23885_subid {
@@ -269,6 +271,7 @@ struct cx23885_tsport {
269 271
270 /* Allow a single tsport to have multiple frontends */ 272 /* Allow a single tsport to have multiple frontends */
271 u32 num_frontends; 273 u32 num_frontends;
274 void *port_priv;
272}; 275};
273 276
274struct cx23885_dev { 277struct cx23885_dev {