Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Igor M. Liplianin and committed by
Mauro Carvalho Chehab
0cb73639 dcc8a122

+46
+2
drivers/media/dvb/frontends/ds3000.c
··· 982 982 983 983 dprintk("%s() ", __func__); 984 984 985 + if (state->config->set_ts_params) 986 + state->config->set_ts_params(fe, 0); 985 987 /* Tune */ 986 988 /* unknown */ 987 989 ds3000_tuner_writereg(state, 0x07, 0x02);
+2
drivers/media/dvb/frontends/ds3000.h
··· 28 28 /* the demodulator's i2c address */ 29 29 u8 demod_address; 30 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 35 #if defined(CONFIG_DVB_DS3000) || \
+17
drivers/media/video/cx88/cx88-cards.c
··· 1953 1953 } }, 1954 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 1968 [CX88_BOARD_OMICOM_SS4_PCI] = { 1957 1969 .name = "Omicom SS4 DVB-S/S2 PCI", 1958 1970 .tuner_type = UNSET, ··· 2540 2528 .subvendor = 0xd460, 2541 2529 .subdevice = 0x9022, 2542 2530 .card = CX88_BOARD_TEVII_S460, 2531 + }, { 2532 + .subvendor = 0xd464, 2533 + .subdevice = 0x9022, 2534 + .card = CX88_BOARD_TEVII_S464, 2543 2535 }, { 2544 2536 .subvendor = 0xA044, 2545 2537 .subdevice = 0x2011, ··· 3302 3286 } 3303 3287 case CX88_BOARD_TEVII_S420: 3304 3288 case CX88_BOARD_TEVII_S460: 3289 + case CX88_BOARD_TEVII_S464: 3305 3290 case CX88_BOARD_OMICOM_SS4_PCI: 3306 3291 case CX88_BOARD_TBS_8910: 3307 3292 case CX88_BOARD_TBS_8920:
+23
drivers/media/video/cx88/cx88-dvb.c
··· 57 57 #include "stb6100.h" 58 58 #include "stb6100_proc.h" 59 59 #include "mb86a16.h" 60 + #include "ds3000.h" 60 61 61 62 MODULE_DESCRIPTION("driver for cx2388x based DVB cards"); 62 63 MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>"); ··· 647 646 .demod_address = 0x55, 648 647 .set_ts_params = cx24116_set_ts_param, 649 648 .reset_device = cx24116_reset_device, 649 + }; 650 + 651 + static int ds3000_set_ts_param(struct dvb_frontend *fe, 652 + int is_punctured) 653 + { 654 + struct cx8802_dev *dev = fe->dvb->priv; 655 + dev->ts_gen_cntrl = 4; 656 + 657 + return 0; 658 + } 659 + 660 + static struct ds3000_config tevii_ds3000_config = { 661 + .demod_address = 0x68, 662 + .set_ts_params = ds3000_set_ts_param, 650 663 }; 651 664 652 665 static const struct stv0900_config prof_7301_stv0900_config = { ··· 1395 1380 &core->i2c_adap); 1396 1381 if (fe0->dvb.frontend != NULL) 1397 1382 fe0->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage; 1383 + break; 1384 + case CX88_BOARD_TEVII_S464: 1385 + fe0->dvb.frontend = dvb_attach(ds3000_attach, 1386 + &tevii_ds3000_config, 1387 + &core->i2c_adap); 1388 + if (fe0->dvb.frontend != NULL) 1389 + fe0->dvb.frontend->ops.set_voltage = 1390 + tevii_dvbs_set_voltage; 1398 1391 break; 1399 1392 case CX88_BOARD_OMICOM_SS4_PCI: 1400 1393 case CX88_BOARD_TBS_8920:
+1
drivers/media/video/cx88/cx88-input.c
··· 373 373 ir_codes = RC_MAP_TBS_NEC; 374 374 ir->sampling = 0xff00; /* address */ 375 375 break; 376 + case CX88_BOARD_TEVII_S464: 376 377 case CX88_BOARD_TEVII_S460: 377 378 case CX88_BOARD_TEVII_S420: 378 379 ir_codes = RC_MAP_TEVII_NEC;
+1
drivers/media/video/cx88/cx88.h
··· 241 241 #define CX88_BOARD_PROF_7301 83 242 242 #define CX88_BOARD_SAMSUNG_SMT_7020 84 243 243 #define CX88_BOARD_TWINHAN_VP1027_DVBS 85 244 + #define CX88_BOARD_TEVII_S464 86 244 245 245 246 enum cx88_itype { 246 247 CX88_VMUX_COMPOSITE1 = 1,