aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/video4linux/CARDLIST.cx238851
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c13
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c27
-rw-r--r--drivers/media/video/cx23885/cx23885.h1
4 files changed, 42 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885
index 191194ea1e25..f0e613ba55b8 100644
--- a/Documentation/video4linux/CARDLIST.cx23885
+++ b/Documentation/video4linux/CARDLIST.cx23885
@@ -8,3 +8,4 @@
8 7 -> Hauppauge WinTV-HVR1200 [0070:71d1,0070:71d3] 8 7 -> Hauppauge WinTV-HVR1200 [0070:71d1,0070:71d3]
9 8 -> Hauppauge WinTV-HVR1700 [0070:8101] 9 8 -> Hauppauge WinTV-HVR1700 [0070:8101]
10 9 -> Hauppauge WinTV-HVR1400 [0070:8010] 10 9 -> Hauppauge WinTV-HVR1400 [0070:8010]
11 10 -> DViCO FusionHDTV7 Dual Express [18ac:d618]
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 20e05f230546..fd7112c11d35 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -143,6 +143,10 @@ struct cx23885_board cx23885_boards[] = {
143 .name = "Hauppauge WinTV-HVR1400", 143 .name = "Hauppauge WinTV-HVR1400",
144 .portc = CX23885_MPEG_DVB, 144 .portc = CX23885_MPEG_DVB,
145 }, 145 },
146 [CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP] = {
147 .name = "DViCO FusionHDTV7 Dual Express",
148 .portc = CX23885_MPEG_DVB,
149 },
146}; 150};
147const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 151const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
148 152
@@ -210,6 +214,10 @@ struct cx23885_subid cx23885_subids[] = {
210 .subvendor = 0x0070, 214 .subvendor = 0x0070,
211 .subdevice = 0x8010, 215 .subdevice = 0x8010,
212 .card = CX23885_BOARD_HAUPPAUGE_HVR1400, 216 .card = CX23885_BOARD_HAUPPAUGE_HVR1400,
217 },{
218 .subvendor = 0x18ac,
219 .subdevice = 0xd618,
220 .card = CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP,
213 }, 221 },
214}; 222};
215const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 223const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -477,6 +485,11 @@ void cx23885_card_setup(struct cx23885_dev *dev)
477 } 485 }
478 486
479 switch (dev->board) { 487 switch (dev->board) {
488 case CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:
489 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
490 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
491 ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
492 /* break omitted intentionally */
480 case CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP: 493 case CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP:
481 ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ 494 ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
482 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 495 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index 022aa391937a..51dedb182c99 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -164,12 +164,28 @@ static struct s5h1409_config hauppauge_hvr1500q_config = {
164 .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK, 164 .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK,
165}; 165};
166 166
167static struct s5h1409_config dvico_s5h1409_config = {
168 .demod_address = 0x32 >> 1,
169 .output_mode = S5H1409_SERIAL_OUTPUT,
170 .gpio = S5H1409_GPIO_ON,
171 .qam_if = 44000,
172 .inversion = S5H1409_INVERSION_OFF,
173 .status_mode = S5H1409_DEMODLOCKING,
174 .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK,
175};
176
167static struct xc5000_config hauppauge_hvr1500q_tunerconfig = { 177static struct xc5000_config hauppauge_hvr1500q_tunerconfig = {
168 .i2c_address = 0x61, 178 .i2c_address = 0x61,
169 .if_khz = 5380, 179 .if_khz = 5380,
170 .tuner_callback = cx23885_tuner_callback 180 .tuner_callback = cx23885_tuner_callback
171}; 181};
172 182
183static struct xc5000_config dvico_xc5000_tunerconfig = {
184 .i2c_address = 0x64,
185 .if_khz = 5380,
186 .tuner_callback = cx23885_tuner_callback
187};
188
173static struct tda829x_config tda829x_no_probe = { 189static struct tda829x_config tda829x_no_probe = {
174 .probe_tuner = TDA829X_DONT_PROBE, 190 .probe_tuner = TDA829X_DONT_PROBE,
175}; 191};
@@ -453,6 +469,17 @@ static int dvb_register(struct cx23885_tsport *port)
453 fe->ops.tuner_ops.set_config(fe, &ctl); 469 fe->ops.tuner_ops.set_config(fe, &ctl);
454 } 470 }
455 break; 471 break;
472 case CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP:
473 i2c_bus = &dev->i2c_bus[port->nr - 1];
474
475 port->dvb.frontend = dvb_attach(s5h1409_attach,
476 &dvico_s5h1409_config,
477 &i2c_bus->i2c_adap);
478 if (port->dvb.frontend != NULL)
479 dvb_attach(xc5000_attach, port->dvb.frontend,
480 &i2c_bus->i2c_adap,
481 &dvico_xc5000_tunerconfig, i2c_bus);
482 break;
456 default: 483 default:
457 printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", 484 printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
458 dev->name); 485 dev->name);
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index 32af87f25e7b..00dfdc89d641 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -63,6 +63,7 @@
63#define CX23885_BOARD_HAUPPAUGE_HVR1200 7 63#define CX23885_BOARD_HAUPPAUGE_HVR1200 7
64#define CX23885_BOARD_HAUPPAUGE_HVR1700 8 64#define CX23885_BOARD_HAUPPAUGE_HVR1700 8
65#define CX23885_BOARD_HAUPPAUGE_HVR1400 9 65#define CX23885_BOARD_HAUPPAUGE_HVR1400 9
66#define CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP 10
66 67
67/* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */ 68/* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */
68#define CX23885_NORMS (\ 69#define CX23885_NORMS (\