diff options
author | Igor M. Liplianin <liplianin@me.by> | 2011-02-25 16:41:24 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-03-21 19:32:27 -0400 |
commit | 0cb73639cfbdc9a074cbb7737d173f7a7381036d (patch) | |
tree | 80b3ec4ca6bb46a11e4506350a9e46f6a150fa88 /drivers | |
parent | dcc8a122230b1c65ee8ba83536fd53fcaf27884d (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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/dvb/frontends/ds3000.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/ds3000.h | 2 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 17 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 23 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 1 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 1 |
6 files changed, 46 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c index 2ae569989655..7f3d118287c4 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 00e4e95590e9..1b736888ea37 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 f735262f4767..27222c92b603 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 90717ee944ec..7b8c9d3b6efc 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 | ||
61 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); | 62 | MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); |
62 | MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); | 63 | MODULE_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 | ||
652 | static 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 | |||
661 | static struct ds3000_config tevii_ds3000_config = { | ||
662 | .demod_address = 0x68, | ||
663 | .set_ts_params = ds3000_set_ts_param, | ||
664 | }; | ||
665 | |||
651 | static const struct stv0900_config prof_7301_stv0900_config = { | 666 | static 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 06f7d1d00944..fbfbba5bec5e 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 aaf7d12b77db..9b3742a7746c 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 | ||
245 | enum cx88_itype { | 246 | enum cx88_itype { |
246 | CX88_VMUX_COMPOSITE1 = 1, | 247 | CX88_VMUX_COMPOSITE1 = 1, |