aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/em28xx/em28xx-dvb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-dvb.c')
-rw-r--r--drivers/media/video/em28xx/em28xx-dvb.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c
index e7b47c8da8f..3da97c32b8f 100644
--- a/drivers/media/video/em28xx/em28xx-dvb.c
+++ b/drivers/media/video/em28xx/em28xx-dvb.c
@@ -243,6 +243,14 @@ static struct s5h1409_config em28xx_s5h1409_with_xc3028 = {
243 .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK 243 .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK
244}; 244};
245 245
246static struct zl10353_config em28xx_terratec_xs_zl10353_xc3028 = {
247 .demod_address = (0x1e >> 1),
248 .no_tuner = 1,
249 .disable_i2c_gate_ctrl = 1,
250 .parallel_ts = 1,
251 .if2 = 45600,
252};
253
246#ifdef EM28XX_DRX397XD_SUPPORT 254#ifdef EM28XX_DRX397XD_SUPPORT
247/* [TODO] djh - not sure yet what the device config needs to contain */ 255/* [TODO] djh - not sure yet what the device config needs to contain */
248static struct drx397xD_config em28xx_drx397xD_with_xc3028 = { 256static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {
@@ -433,7 +441,6 @@ static int dvb_init(struct em28xx *dev)
433 } 441 }
434 break; 442 break;
435 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900: 443 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
436 case EM2880_BOARD_TERRATEC_HYBRID_XS:
437 case EM2880_BOARD_KWORLD_DVB_310U: 444 case EM2880_BOARD_KWORLD_DVB_310U:
438 case EM2880_BOARD_EMPIRE_DUAL_TV: 445 case EM2880_BOARD_EMPIRE_DUAL_TV:
439 dvb->frontend = dvb_attach(zl10353_attach, 446 dvb->frontend = dvb_attach(zl10353_attach,
@@ -444,6 +451,25 @@ static int dvb_init(struct em28xx *dev)
444 goto out_free; 451 goto out_free;
445 } 452 }
446 break; 453 break;
454 case EM2880_BOARD_TERRATEC_HYBRID_XS:
455 dvb->frontend = dvb_attach(zl10353_attach,
456 &em28xx_terratec_xs_zl10353_xc3028,
457 &dev->i2c_adap);
458 if (dvb->frontend == NULL) {
459 /* This board could have either a zl10353 or a mt352.
460 If the chip id isn't for zl10353, try mt352 */
461
462 /* FIXME: make support for mt352 work */
463 printk(KERN_ERR "version of this board with mt352 not "
464 "currently supported\n");
465 result = -EINVAL;
466 goto out_free;
467 }
468 if (attach_xc3028(0x61, dev) < 0) {
469 result = -EINVAL;
470 goto out_free;
471 }
472 break;
447 case EM2883_BOARD_KWORLD_HYBRID_330U: 473 case EM2883_BOARD_KWORLD_HYBRID_330U:
448 case EM2882_BOARD_EVGA_INDTUBE: 474 case EM2882_BOARD_EVGA_INDTUBE:
449 dvb->frontend = dvb_attach(s5h1409_attach, 475 dvb->frontend = dvb_attach(s5h1409_attach,