aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-dvb.c
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@me.by>2008-09-23 14:43:57 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-12 07:37:07 -0400
commite4aab64cb78a42e45e1d387f272712e06cf89a66 (patch)
tree71085956cf8364b5a49723c9812cd18a54bbb792 /drivers/media/video/cx88/cx88-dvb.c
parent8316568930074723bdc47d6777f822be0422a5b7 (diff)
V4L/DVB (9026): Add support for ST STV0288 demodulator and cards with it.
Add support for ST STV0288 demodulator and cards with it, such as TeVii S420. Patch is co-authored with Georg Acher <acher@baycom.de> Signed-off-by: Georg Acher <acher@baycom.de> Signed-off-by: Igor M. Liplianin <liplianin@me.by> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx88/cx88-dvb.c')
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c48
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
53MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); 57MODULE_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
586static 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
599static 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
582static int dvb_register(struct cx8802_dev *dev) 605static 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,