diff options
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx23885 | 1 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/Kconfig | 2 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/cx23885-cards.c | 10 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/cx23885-dvb.c | 56 | ||||
-rw-r--r-- | drivers/media/pci/cx23885/cx23885.h | 1 |
5 files changed, 70 insertions, 0 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index 652aecd13199..1299b5e82d7f 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -35,3 +35,4 @@ | |||
35 | 34 -> TerraTec Cinergy T PCIe Dual [153b:117e] | 35 | 34 -> TerraTec Cinergy T PCIe Dual [153b:117e] |
36 | 35 -> TeVii S471 [d471:9022] | 36 | 35 -> TeVii S471 [d471:9022] |
37 | 36 -> Hauppauge WinTV-HVR1255 [0070:2259] | 37 | 36 -> Hauppauge WinTV-HVR1255 [0070:2259] |
38 | 37 -> Prof Revolution DVB-S2 8000 [8000:3034] | ||
diff --git a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig index 9c6afe922586..4b99a262fed3 100644 --- a/drivers/media/pci/cx23885/Kconfig +++ b/drivers/media/pci/cx23885/Kconfig | |||
@@ -18,6 +18,8 @@ config VIDEO_CX23885 | |||
18 | select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT | 18 | select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT |
19 | select DVB_TDA10048 if MEDIA_SUBDRV_AUTOSELECT | 19 | select DVB_TDA10048 if MEDIA_SUBDRV_AUTOSELECT |
20 | select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT | 20 | select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT |
21 | select DVB_STV090x if MEDIA_SUBDRV_AUTOSELECT | ||
22 | select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT | ||
21 | select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT | 23 | select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT |
22 | select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT | 24 | select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT |
23 | select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT | 25 | select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT |
diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c index d889bd2fe9cc..39a4a4b9ed7e 100644 --- a/drivers/media/pci/cx23885/cx23885-cards.c +++ b/drivers/media/pci/cx23885/cx23885-cards.c | |||
@@ -565,6 +565,10 @@ struct cx23885_board cx23885_boards[] = { | |||
565 | [CX23885_BOARD_TEVII_S471] = { | 565 | [CX23885_BOARD_TEVII_S471] = { |
566 | .name = "TeVii S471", | 566 | .name = "TeVii S471", |
567 | .portb = CX23885_MPEG_DVB, | 567 | .portb = CX23885_MPEG_DVB, |
568 | }, | ||
569 | [CX23885_BOARD_PROF_8000] = { | ||
570 | .name = "Prof Revolution DVB-S2 8000", | ||
571 | .portb = CX23885_MPEG_DVB, | ||
568 | } | 572 | } |
569 | }; | 573 | }; |
570 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 574 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
@@ -777,6 +781,10 @@ struct cx23885_subid cx23885_subids[] = { | |||
777 | .subvendor = 0xd471, | 781 | .subvendor = 0xd471, |
778 | .subdevice = 0x9022, | 782 | .subdevice = 0x9022, |
779 | .card = CX23885_BOARD_TEVII_S471, | 783 | .card = CX23885_BOARD_TEVII_S471, |
784 | }, { | ||
785 | .subvendor = 0x8000, | ||
786 | .subdevice = 0x3034, | ||
787 | .card = CX23885_BOARD_PROF_8000, | ||
780 | }, | 788 | }, |
781 | }; | 789 | }; |
782 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 790 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -1156,6 +1164,7 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
1156 | cx_set(GP0_IO, 0x00040004); | 1164 | cx_set(GP0_IO, 0x00040004); |
1157 | break; | 1165 | break; |
1158 | case CX23885_BOARD_TBS_6920: | 1166 | case CX23885_BOARD_TBS_6920: |
1167 | case CX23885_BOARD_PROF_8000: | ||
1159 | cx_write(MC417_CTL, 0x00000036); | 1168 | cx_write(MC417_CTL, 0x00000036); |
1160 | cx_write(MC417_OEN, 0x00001000); | 1169 | cx_write(MC417_OEN, 0x00001000); |
1161 | cx_set(MC417_RWD, 0x00000002); | 1170 | cx_set(MC417_RWD, 0x00000002); |
@@ -1540,6 +1549,7 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
1540 | case CX23885_BOARD_TEVII_S470: | 1549 | case CX23885_BOARD_TEVII_S470: |
1541 | case CX23885_BOARD_TEVII_S471: | 1550 | case CX23885_BOARD_TEVII_S471: |
1542 | case CX23885_BOARD_DVBWORLD_2005: | 1551 | case CX23885_BOARD_DVBWORLD_2005: |
1552 | case CX23885_BOARD_PROF_8000: | ||
1543 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | 1553 | ts1->gen_ctrl_val = 0x5; /* Parallel */ |
1544 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 1554 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
1545 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 1555 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c index f3202a52d535..4379d8a6dad5 100644 --- a/drivers/media/pci/cx23885/cx23885-dvb.c +++ b/drivers/media/pci/cx23885/cx23885-dvb.c | |||
@@ -63,6 +63,9 @@ | |||
63 | #include "stv0367.h" | 63 | #include "stv0367.h" |
64 | #include "drxk.h" | 64 | #include "drxk.h" |
65 | #include "mt2063.h" | 65 | #include "mt2063.h" |
66 | #include "stv090x.h" | ||
67 | #include "stb6100.h" | ||
68 | #include "stb6100_cfg.h" | ||
66 | 69 | ||
67 | static unsigned int debug; | 70 | static unsigned int debug; |
68 | 71 | ||
@@ -489,6 +492,42 @@ static struct xc5000_config mygica_x8506_xc5000_config = { | |||
489 | .if_khz = 5380, | 492 | .if_khz = 5380, |
490 | }; | 493 | }; |
491 | 494 | ||
495 | static struct stv090x_config prof_8000_stv090x_config = { | ||
496 | .device = STV0903, | ||
497 | .demod_mode = STV090x_SINGLE, | ||
498 | .clk_mode = STV090x_CLK_EXT, | ||
499 | .xtal = 27000000, | ||
500 | .address = 0x6A, | ||
501 | .ts1_mode = STV090x_TSMODE_PARALLEL_PUNCTURED, | ||
502 | .repeater_level = STV090x_RPTLEVEL_64, | ||
503 | .adc1_range = STV090x_ADC_2Vpp, | ||
504 | .diseqc_envelope_mode = false, | ||
505 | |||
506 | .tuner_get_frequency = stb6100_get_frequency, | ||
507 | .tuner_set_frequency = stb6100_set_frequency, | ||
508 | .tuner_set_bandwidth = stb6100_set_bandwidth, | ||
509 | .tuner_get_bandwidth = stb6100_get_bandwidth, | ||
510 | }; | ||
511 | |||
512 | static struct stb6100_config prof_8000_stb6100_config = { | ||
513 | .tuner_address = 0x60, | ||
514 | .refclock = 27000000, | ||
515 | }; | ||
516 | |||
517 | static int p8000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) | ||
518 | { | ||
519 | struct cx23885_tsport *port = fe->dvb->priv; | ||
520 | struct cx23885_dev *dev = port->dev; | ||
521 | |||
522 | if (voltage == SEC_VOLTAGE_18) | ||
523 | cx_write(MC417_RWD, 0x00001e00); | ||
524 | else if (voltage == SEC_VOLTAGE_13) | ||
525 | cx_write(MC417_RWD, 0x00001a00); | ||
526 | else | ||
527 | cx_write(MC417_RWD, 0x00001800); | ||
528 | return 0; | ||
529 | } | ||
530 | |||
492 | static int cx23885_dvb_set_frontend(struct dvb_frontend *fe) | 531 | static int cx23885_dvb_set_frontend(struct dvb_frontend *fe) |
493 | { | 532 | { |
494 | struct dtv_frontend_properties *p = &fe->dtv_property_cache; | 533 | struct dtv_frontend_properties *p = &fe->dtv_property_cache; |
@@ -1186,6 +1225,23 @@ static int dvb_register(struct cx23885_tsport *port) | |||
1186 | &tevii_ds3000_config, | 1225 | &tevii_ds3000_config, |
1187 | &i2c_bus->i2c_adap); | 1226 | &i2c_bus->i2c_adap); |
1188 | break; | 1227 | break; |
1228 | case CX23885_BOARD_PROF_8000: | ||
1229 | i2c_bus = &dev->i2c_bus[0]; | ||
1230 | |||
1231 | fe0->dvb.frontend = dvb_attach(stv090x_attach, | ||
1232 | &prof_8000_stv090x_config, | ||
1233 | &i2c_bus->i2c_adap, | ||
1234 | STV090x_DEMODULATOR_0); | ||
1235 | if (fe0->dvb.frontend != NULL) { | ||
1236 | if (!dvb_attach(stb6100_attach, | ||
1237 | fe0->dvb.frontend, | ||
1238 | &prof_8000_stb6100_config, | ||
1239 | &i2c_bus->i2c_adap)) | ||
1240 | goto frontend_detach; | ||
1241 | |||
1242 | fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage; | ||
1243 | } | ||
1244 | break; | ||
1189 | default: | 1245 | default: |
1190 | printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " | 1246 | printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " |
1191 | " isn't supported yet\n", | 1247 | " isn't supported yet\n", |
diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h index 5d560c747e09..67f40d31450b 100644 --- a/drivers/media/pci/cx23885/cx23885.h +++ b/drivers/media/pci/cx23885/cx23885.h | |||
@@ -90,6 +90,7 @@ | |||
90 | #define CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL 34 | 90 | #define CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL 34 |
91 | #define CX23885_BOARD_TEVII_S471 35 | 91 | #define CX23885_BOARD_TEVII_S471 35 |
92 | #define CX23885_BOARD_HAUPPAUGE_HVR1255_22111 36 | 92 | #define CX23885_BOARD_HAUPPAUGE_HVR1255_22111 36 |
93 | #define CX23885_BOARD_PROF_8000 37 | ||
93 | 94 | ||
94 | #define GPIO_0 0x00000001 | 95 | #define GPIO_0 0x00000001 |
95 | #define GPIO_1 0x00000002 | 96 | #define GPIO_1 0x00000002 |