diff options
Diffstat (limited to 'drivers/media/video/cx88/cx88-dvb.c')
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index a6c4f66bb161..cd368b512d1f 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
@@ -48,6 +48,10 @@ | |||
48 | #include "tuner-simple.h" | 48 | #include "tuner-simple.h" |
49 | #include "tda9887.h" | 49 | #include "tda9887.h" |
50 | #include "s5h1411.h" | 50 | #include "s5h1411.h" |
51 | #include "stv0299.h" | ||
52 | #include "z0194a.h" | ||
53 | #include "stv0288.h" | ||
54 | #include "stb6000.h" | ||
51 | #include "cx24116.h" | 55 | #include "cx24116.h" |
52 | 56 | ||
53 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); | 57 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); |
@@ -579,6 +583,25 @@ static struct cx24116_config tevii_s460_config = { | |||
579 | .reset_device = cx24116_reset_device, | 583 | .reset_device = cx24116_reset_device, |
580 | }; | 584 | }; |
581 | 585 | ||
586 | static struct stv0299_config tevii_tuner_sharp_config = { | ||
587 | .demod_address = 0x68, | ||
588 | .inittab = sharp_z0194a__inittab, | ||
589 | .mclk = 88000000UL, | ||
590 | .invert = 1, | ||
591 | .skip_reinit = 0, | ||
592 | .lock_output = 1, | ||
593 | .volt13_op0_op1 = STV0299_VOLT13_OP1, | ||
594 | .min_delay_ms = 100, | ||
595 | .set_symbol_rate = sharp_z0194a__set_symbol_rate, | ||
596 | .set_ts_params = cx24116_set_ts_param, | ||
597 | }; | ||
598 | |||
599 | static struct stv0288_config tevii_tuner_earda_config = { | ||
600 | .demod_address = 0x68, | ||
601 | .min_delay_ms = 100, | ||
602 | .set_ts_params = cx24116_set_ts_param, | ||
603 | }; | ||
604 | |||
582 | static int dvb_register(struct cx8802_dev *dev) | 605 | static int dvb_register(struct cx8802_dev *dev) |
583 | { | 606 | { |
584 | struct cx88_core *core = dev->core; | 607 | struct cx88_core *core = dev->core; |
@@ -949,6 +972,31 @@ static int dvb_register(struct cx8802_dev *dev) | |||
949 | 0x08, ISL6421_DCL, 0x00); | 972 | 0x08, ISL6421_DCL, 0x00); |
950 | } | 973 | } |
951 | break; | 974 | break; |
975 | case CX88_BOARD_TEVII_S420: | ||
976 | dev->dvb.frontend = dvb_attach(stv0299_attach, | ||
977 | &tevii_tuner_sharp_config, | ||
978 | &core->i2c_adap); | ||
979 | if (dev->dvb.frontend != NULL) { | ||
980 | if (!dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x60, | ||
981 | &core->i2c_adap, DVB_PLL_OPERA1)) | ||
982 | goto frontend_detach; | ||
983 | core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage; | ||
984 | dev->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage; | ||
985 | |||
986 | } else { | ||
987 | dev->dvb.frontend = dvb_attach(stv0288_attach, | ||
988 | &tevii_tuner_earda_config, | ||
989 | &core->i2c_adap); | ||
990 | if (dev->dvb.frontend != NULL) { | ||
991 | if (!dvb_attach(stb6000_attach, dev->dvb.frontend, 0x61, | ||
992 | &core->i2c_adap)) | ||
993 | goto frontend_detach; | ||
994 | core->prev_set_voltage = dev->dvb.frontend->ops.set_voltage; | ||
995 | dev->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage; | ||
996 | |||
997 | } | ||
998 | } | ||
999 | break; | ||
952 | case CX88_BOARD_TEVII_S460: | 1000 | case CX88_BOARD_TEVII_S460: |
953 | dev->dvb.frontend = dvb_attach(cx24116_attach, | 1001 | dev->dvb.frontend = dvb_attach(cx24116_attach, |
954 | &tevii_s460_config, | 1002 | &tevii_s460_config, |