diff options
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-dvb.c')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-dvb.c | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c index a26e997a9ce6..73739d2a63dd 100644 --- a/drivers/media/video/saa7134/saa7134-dvb.c +++ b/drivers/media/video/saa7134/saa7134-dvb.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include "tda1004x.h" | 40 | #include "tda1004x.h" |
41 | #include "nxt200x.h" | 41 | #include "nxt200x.h" |
42 | #include "tuner-xc2028.h" | 42 | #include "tuner-xc2028.h" |
43 | #include "xc5000.h" | ||
43 | 44 | ||
44 | #include "tda10086.h" | 45 | #include "tda10086.h" |
45 | #include "tda826x.h" | 46 | #include "tda826x.h" |
@@ -871,6 +872,20 @@ static struct zl10353_config behold_h6_config = { | |||
871 | .disable_i2c_gate_ctrl = 1, | 872 | .disable_i2c_gate_ctrl = 1, |
872 | }; | 873 | }; |
873 | 874 | ||
875 | static struct xc5000_config behold_x7_tunerconfig = { | ||
876 | .i2c_address = 0xc2>>1, | ||
877 | .if_khz = 4560, | ||
878 | .radio_input = XC5000_RADIO_FM1, | ||
879 | }; | ||
880 | |||
881 | static struct zl10353_config behold_x7_config = { | ||
882 | .demod_address = 0x1e>>1, | ||
883 | .if2 = 45600, | ||
884 | .no_tuner = 1, | ||
885 | .parallel_ts = 1, | ||
886 | .disable_i2c_gate_ctrl = 1, | ||
887 | }; | ||
888 | |||
874 | /* ================================================================== | 889 | /* ================================================================== |
875 | * tda10086 based DVB-S cards, helper functions | 890 | * tda10086 based DVB-S cards, helper functions |
876 | */ | 891 | */ |
@@ -1030,6 +1045,32 @@ static struct tda18271_config zolid_tda18271_config = { | |||
1030 | .gate = TDA18271_GATE_ANALOG, | 1045 | .gate = TDA18271_GATE_ANALOG, |
1031 | }; | 1046 | }; |
1032 | 1047 | ||
1048 | static struct tda10048_config dtv1000s_tda10048_config = { | ||
1049 | .demod_address = 0x10 >> 1, | ||
1050 | .output_mode = TDA10048_PARALLEL_OUTPUT, | ||
1051 | .fwbulkwritelen = TDA10048_BULKWRITE_200, | ||
1052 | .inversion = TDA10048_INVERSION_ON, | ||
1053 | .dtv6_if_freq_khz = TDA10048_IF_3300, | ||
1054 | .dtv7_if_freq_khz = TDA10048_IF_3800, | ||
1055 | .dtv8_if_freq_khz = TDA10048_IF_4300, | ||
1056 | .clk_freq_khz = TDA10048_CLK_16000, | ||
1057 | .disable_gate_access = 1, | ||
1058 | }; | ||
1059 | |||
1060 | static struct tda18271_std_map dtv1000s_tda18271_std_map = { | ||
1061 | .dvbt_6 = { .if_freq = 3300, .agc_mode = 3, .std = 4, | ||
1062 | .if_lvl = 1, .rfagc_top = 0x37, }, | ||
1063 | .dvbt_7 = { .if_freq = 3800, .agc_mode = 3, .std = 5, | ||
1064 | .if_lvl = 1, .rfagc_top = 0x37, }, | ||
1065 | .dvbt_8 = { .if_freq = 4300, .agc_mode = 3, .std = 6, | ||
1066 | .if_lvl = 1, .rfagc_top = 0x37, }, | ||
1067 | }; | ||
1068 | |||
1069 | static struct tda18271_config dtv1000s_tda18271_config = { | ||
1070 | .std_map = &dtv1000s_tda18271_std_map, | ||
1071 | .gate = TDA18271_GATE_ANALOG, | ||
1072 | }; | ||
1073 | |||
1033 | /* ================================================================== | 1074 | /* ================================================================== |
1034 | * Core code | 1075 | * Core code |
1035 | */ | 1076 | */ |
@@ -1116,6 +1157,7 @@ static int dvb_init(struct saa7134_dev *dev) | |||
1116 | break; | 1157 | break; |
1117 | case SAA7134_BOARD_PHILIPS_EUROPA: | 1158 | case SAA7134_BOARD_PHILIPS_EUROPA: |
1118 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: | 1159 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: |
1160 | case SAA7134_BOARD_ASUS_EUROPA_HYBRID: | ||
1119 | fe0->dvb.frontend = dvb_attach(tda10046_attach, | 1161 | fe0->dvb.frontend = dvb_attach(tda10046_attach, |
1120 | &philips_europa_config, | 1162 | &philips_europa_config, |
1121 | &dev->i2c_adap); | 1163 | &dev->i2c_adap); |
@@ -1482,6 +1524,15 @@ static int dvb_init(struct saa7134_dev *dev) | |||
1482 | TUNER_PHILIPS_FMD1216MEX_MK3); | 1524 | TUNER_PHILIPS_FMD1216MEX_MK3); |
1483 | } | 1525 | } |
1484 | break; | 1526 | break; |
1527 | case SAA7134_BOARD_BEHOLD_X7: | ||
1528 | fe0->dvb.frontend = dvb_attach(zl10353_attach, | ||
1529 | &behold_x7_config, | ||
1530 | &dev->i2c_adap); | ||
1531 | if (fe0->dvb.frontend) { | ||
1532 | dvb_attach(xc5000_attach, fe0->dvb.frontend, | ||
1533 | &dev->i2c_adap, &behold_x7_tunerconfig); | ||
1534 | } | ||
1535 | break; | ||
1485 | case SAA7134_BOARD_AVERMEDIA_A700_PRO: | 1536 | case SAA7134_BOARD_AVERMEDIA_A700_PRO: |
1486 | case SAA7134_BOARD_AVERMEDIA_A700_HYBRID: | 1537 | case SAA7134_BOARD_AVERMEDIA_A700_HYBRID: |
1487 | /* Zarlink ZL10313 */ | 1538 | /* Zarlink ZL10313 */ |
@@ -1518,6 +1569,19 @@ static int dvb_init(struct saa7134_dev *dev) | |||
1518 | &zolid_tda18271_config); | 1569 | &zolid_tda18271_config); |
1519 | } | 1570 | } |
1520 | break; | 1571 | break; |
1572 | case SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S: | ||
1573 | fe0->dvb.frontend = dvb_attach(tda10048_attach, | ||
1574 | &dtv1000s_tda10048_config, | ||
1575 | &dev->i2c_adap); | ||
1576 | if (fe0->dvb.frontend != NULL) { | ||
1577 | dvb_attach(tda829x_attach, fe0->dvb.frontend, | ||
1578 | &dev->i2c_adap, 0x4b, | ||
1579 | &tda829x_no_probe); | ||
1580 | dvb_attach(tda18271_attach, fe0->dvb.frontend, | ||
1581 | 0x60, &dev->i2c_adap, | ||
1582 | &dtv1000s_tda18271_config); | ||
1583 | } | ||
1584 | break; | ||
1521 | default: | 1585 | default: |
1522 | wprintk("Huh? unknown DVB card?\n"); | 1586 | wprintk("Huh? unknown DVB card?\n"); |
1523 | break; | 1587 | break; |
@@ -1550,7 +1614,7 @@ static int dvb_init(struct saa7134_dev *dev) | |||
1550 | 1614 | ||
1551 | /* register everything else */ | 1615 | /* register everything else */ |
1552 | ret = videobuf_dvb_register_bus(&dev->frontends, THIS_MODULE, dev, | 1616 | ret = videobuf_dvb_register_bus(&dev->frontends, THIS_MODULE, dev, |
1553 | &dev->pci->dev, adapter_nr, 0); | 1617 | &dev->pci->dev, adapter_nr, 0, NULL); |
1554 | 1618 | ||
1555 | /* this sequence is necessary to make the tda1004x load its firmware | 1619 | /* this sequence is necessary to make the tda1004x load its firmware |
1556 | * and to enter analog mode of hybrid boards | 1620 | * and to enter analog mode of hybrid boards |