diff options
Diffstat (limited to 'drivers/media/video/cx23885/cx23885-dvb.c')
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c index 45670051e7d5..dbbbf5b0d2e1 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include "tuner-simple.h" | 42 | #include "tuner-simple.h" |
43 | #include "dib7000p.h" | 43 | #include "dib7000p.h" |
44 | #include "dibx000_common.h" | 44 | #include "dibx000_common.h" |
45 | #include "zl10353.h" | ||
45 | 46 | ||
46 | static unsigned int debug; | 47 | static unsigned int debug; |
47 | 48 | ||
@@ -303,6 +304,12 @@ static struct dib7000p_config hauppauge_hvr1400_dib7000_config = { | |||
303 | .output_mode = OUTMODE_MPEG2_SERIAL, | 304 | .output_mode = OUTMODE_MPEG2_SERIAL, |
304 | }; | 305 | }; |
305 | 306 | ||
307 | static struct zl10353_config dvico_fusionhdtv_xc3028 = { | ||
308 | .demod_address = 0x0f, | ||
309 | .if2 = 45600, | ||
310 | .no_tuner = 1, | ||
311 | }; | ||
312 | |||
306 | static int dvb_register(struct cx23885_tsport *port) | 313 | static int dvb_register(struct cx23885_tsport *port) |
307 | { | 314 | { |
308 | struct cx23885_dev *dev = port->dev; | 315 | struct cx23885_dev *dev = port->dev; |
@@ -465,6 +472,33 @@ static int dvb_register(struct cx23885_tsport *port) | |||
465 | &i2c_bus->i2c_adap, | 472 | &i2c_bus->i2c_adap, |
466 | &dvico_xc5000_tunerconfig, i2c_bus); | 473 | &dvico_xc5000_tunerconfig, i2c_bus); |
467 | break; | 474 | break; |
475 | case CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP: { | ||
476 | i2c_bus = &dev->i2c_bus[port->nr - 1]; | ||
477 | |||
478 | port->dvb.frontend = dvb_attach(zl10353_attach, | ||
479 | &dvico_fusionhdtv_xc3028, | ||
480 | &i2c_bus->i2c_adap); | ||
481 | if (port->dvb.frontend != NULL) { | ||
482 | struct dvb_frontend *fe; | ||
483 | struct xc2028_config cfg = { | ||
484 | .i2c_adap = &i2c_bus->i2c_adap, | ||
485 | .i2c_addr = 0x61, | ||
486 | .video_dev = port, | ||
487 | .callback = cx23885_xc3028_tuner_callback, | ||
488 | }; | ||
489 | static struct xc2028_ctrl ctl = { | ||
490 | .fname = "xc3028-v27.fw", | ||
491 | .max_len = 64, | ||
492 | .demod = XC3028_FE_ZARLINK456, | ||
493 | }; | ||
494 | |||
495 | fe = dvb_attach(xc2028_attach, port->dvb.frontend, | ||
496 | &cfg); | ||
497 | if (fe != NULL && fe->ops.tuner_ops.set_config != NULL) | ||
498 | fe->ops.tuner_ops.set_config(fe, &ctl); | ||
499 | } | ||
500 | break; | ||
501 | } | ||
468 | default: | 502 | default: |
469 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", | 503 | printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n", |
470 | dev->name); | 504 | dev->name); |