aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@me.by>2011-02-25 16:41:24 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-03-21 19:32:27 -0400
commit0cb73639cfbdc9a074cbb7737d173f7a7381036d (patch)
tree80b3ec4ca6bb46a11e4506350a9e46f6a150fa88
parentdcc8a122230b1c65ee8ba83536fd53fcaf27884d (diff)
[media] cx88: add support for TeVii S464 PCI card
The card uses ds3000 demod from Montage. Signed-off-by: Igor M. Liplianin <liplianin@me.by> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/frontends/ds3000.c2
-rw-r--r--drivers/media/dvb/frontends/ds3000.h2
-rw-r--r--drivers/media/video/cx88/cx88-cards.c17
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c23
-rw-r--r--drivers/media/video/cx88/cx88-input.c1
-rw-r--r--drivers/media/video/cx88/cx88.h1
6 files changed, 46 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c
index 2ae56998965..7f3d118287c 100644
--- a/drivers/media/dvb/frontends/ds3000.c
+++ b/drivers/media/dvb/frontends/ds3000.c
@@ -982,6 +982,8 @@ static int ds3000_set_frontend(struct dvb_frontend *fe,
982 982
983 dprintk("%s() ", __func__); 983 dprintk("%s() ", __func__);
984 984
985 if (state->config->set_ts_params)
986 state->config->set_ts_params(fe, 0);
985 /* Tune */ 987 /* Tune */
986 /* unknown */ 988 /* unknown */
987 ds3000_tuner_writereg(state, 0x07, 0x02); 989 ds3000_tuner_writereg(state, 0x07, 0x02);
diff --git a/drivers/media/dvb/frontends/ds3000.h b/drivers/media/dvb/frontends/ds3000.h
index 00e4e95590e..1b736888ea3 100644
--- a/drivers/media/dvb/frontends/ds3000.h
+++ b/drivers/media/dvb/frontends/ds3000.h
@@ -28,6 +28,8 @@ struct ds3000_config {
28 /* the demodulator's i2c address */ 28 /* the demodulator's i2c address */
29 u8 demod_address; 29 u8 demod_address;
30 u8 ci_mode; 30 u8 ci_mode;
31 /* Set device param to start dma */
32 int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
31}; 33};
32 34
33#if defined(CONFIG_DVB_DS3000) || \ 35#if defined(CONFIG_DVB_DS3000) || \
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index f735262f476..27222c92b60 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -1953,6 +1953,18 @@ static const struct cx88_board cx88_boards[] = {
1953 } }, 1953 } },
1954 .mpeg = CX88_MPEG_DVB, 1954 .mpeg = CX88_MPEG_DVB,
1955 }, 1955 },
1956 [CX88_BOARD_TEVII_S464] = {
1957 .name = "TeVii S464 DVB-S/S2",
1958 .tuner_type = UNSET,
1959 .radio_type = UNSET,
1960 .tuner_addr = ADDR_UNSET,
1961 .radio_addr = ADDR_UNSET,
1962 .input = {{
1963 .type = CX88_VMUX_DVB,
1964 .vmux = 0,
1965 } },
1966 .mpeg = CX88_MPEG_DVB,
1967 },
1956 [CX88_BOARD_OMICOM_SS4_PCI] = { 1968 [CX88_BOARD_OMICOM_SS4_PCI] = {
1957 .name = "Omicom SS4 DVB-S/S2 PCI", 1969 .name = "Omicom SS4 DVB-S/S2 PCI",
1958 .tuner_type = UNSET, 1970 .tuner_type = UNSET,
@@ -2529,6 +2541,10 @@ static const struct cx88_subid cx88_subids[] = {
2529 .subdevice = 0x9022, 2541 .subdevice = 0x9022,
2530 .card = CX88_BOARD_TEVII_S460, 2542 .card = CX88_BOARD_TEVII_S460,
2531 }, { 2543 }, {
2544 .subvendor = 0xd464,
2545 .subdevice = 0x9022,
2546 .card = CX88_BOARD_TEVII_S464,
2547 }, {
2532 .subvendor = 0xA044, 2548 .subvendor = 0xA044,
2533 .subdevice = 0x2011, 2549 .subdevice = 0x2011,
2534 .card = CX88_BOARD_OMICOM_SS4_PCI, 2550 .card = CX88_BOARD_OMICOM_SS4_PCI,
@@ -3286,6 +3302,7 @@ static void cx88_card_setup(struct cx88_core *core)
3286 } 3302 }
3287 case CX88_BOARD_TEVII_S420: 3303 case CX88_BOARD_TEVII_S420:
3288 case CX88_BOARD_TEVII_S460: 3304 case CX88_BOARD_TEVII_S460:
3305 case CX88_BOARD_TEVII_S464:
3289 case CX88_BOARD_OMICOM_SS4_PCI: 3306 case CX88_BOARD_OMICOM_SS4_PCI:
3290 case CX88_BOARD_TBS_8910: 3307 case CX88_BOARD_TBS_8910:
3291 case CX88_BOARD_TBS_8920: 3308 case CX88_BOARD_TBS_8920:
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index 90717ee944e..7b8c9d3b6ef 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -57,6 +57,7 @@
57#include "stb6100.h" 57#include "stb6100.h"
58#include "stb6100_proc.h" 58#include "stb6100_proc.h"
59#include "mb86a16.h" 59#include "mb86a16.h"
60#include "ds3000.h"
60 61
61MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); 62MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
62MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); 63MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
@@ -648,6 +649,20 @@ static const struct cx24116_config tevii_s460_config = {
648 .reset_device = cx24116_reset_device, 649 .reset_device = cx24116_reset_device,
649}; 650};
650 651
652static int ds3000_set_ts_param(struct dvb_frontend *fe,
653 int is_punctured)
654{
655 struct cx8802_dev *dev = fe->dvb->priv;
656 dev->ts_gen_cntrl = 4;
657
658 return 0;
659}
660
661static struct ds3000_config tevii_ds3000_config = {
662 .demod_address = 0x68,
663 .set_ts_params = ds3000_set_ts_param,
664};
665
651static const struct stv0900_config prof_7301_stv0900_config = { 666static const struct stv0900_config prof_7301_stv0900_config = {
652 .demod_address = 0x6a, 667 .demod_address = 0x6a,
653/* demod_mode = 0,*/ 668/* demod_mode = 0,*/
@@ -1381,6 +1396,14 @@ static int dvb_register(struct cx8802_dev *dev)
1381 if (fe0->dvb.frontend != NULL) 1396 if (fe0->dvb.frontend != NULL)
1382 fe0->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage; 1397 fe0->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage;
1383 break; 1398 break;
1399 case CX88_BOARD_TEVII_S464:
1400 fe0->dvb.frontend = dvb_attach(ds3000_attach,
1401 &tevii_ds3000_config,
1402 &core->i2c_adap);
1403 if (fe0->dvb.frontend != NULL)
1404 fe0->dvb.frontend->ops.set_voltage =
1405 tevii_dvbs_set_voltage;
1406 break;
1384 case CX88_BOARD_OMICOM_SS4_PCI: 1407 case CX88_BOARD_OMICOM_SS4_PCI:
1385 case CX88_BOARD_TBS_8920: 1408 case CX88_BOARD_TBS_8920:
1386 case CX88_BOARD_PROF_7300: 1409 case CX88_BOARD_PROF_7300:
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index 06f7d1d0094..fbfbba5bec5 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -373,6 +373,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
373 ir_codes = RC_MAP_TBS_NEC; 373 ir_codes = RC_MAP_TBS_NEC;
374 ir->sampling = 0xff00; /* address */ 374 ir->sampling = 0xff00; /* address */
375 break; 375 break;
376 case CX88_BOARD_TEVII_S464:
376 case CX88_BOARD_TEVII_S460: 377 case CX88_BOARD_TEVII_S460:
377 case CX88_BOARD_TEVII_S420: 378 case CX88_BOARD_TEVII_S420:
378 ir_codes = RC_MAP_TEVII_NEC; 379 ir_codes = RC_MAP_TEVII_NEC;
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index aaf7d12b77d..9b3742a7746 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -241,6 +241,7 @@ extern const struct sram_channel const cx88_sram_channels[];
241#define CX88_BOARD_PROF_7301 83 241#define CX88_BOARD_PROF_7301 83
242#define CX88_BOARD_SAMSUNG_SMT_7020 84 242#define CX88_BOARD_SAMSUNG_SMT_7020 84
243#define CX88_BOARD_TWINHAN_VP1027_DVBS 85 243#define CX88_BOARD_TWINHAN_VP1027_DVBS 85
244#define CX88_BOARD_TEVII_S464 86
244 245
245enum cx88_itype { 246enum cx88_itype {
246 CX88_VMUX_COMPOSITE1 = 1, 247 CX88_VMUX_COMPOSITE1 = 1,