aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/pci/cx23885/cx23885-dvb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/pci/cx23885/cx23885-dvb.c')
-rw-r--r--drivers/media/pci/cx23885/cx23885-dvb.c66
1 files changed, 51 insertions, 15 deletions
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
index 2f5b902e63ae..9c5ed10b2c5e 100644
--- a/drivers/media/pci/cx23885/cx23885-dvb.c
+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
@@ -57,6 +57,7 @@
57#include "netup-init.h" 57#include "netup-init.h"
58#include "lgdt3305.h" 58#include "lgdt3305.h"
59#include "atbm8830.h" 59#include "atbm8830.h"
60#include "ts2020.h"
60#include "ds3000.h" 61#include "ds3000.h"
61#include "cx23885-f300.h" 62#include "cx23885-f300.h"
62#include "altera-ci.h" 63#include "altera-ci.h"
@@ -66,6 +67,8 @@
66#include "stv090x.h" 67#include "stv090x.h"
67#include "stb6100.h" 68#include "stb6100.h"
68#include "stb6100_cfg.h" 69#include "stb6100_cfg.h"
70#include "tda10071.h"
71#include "a8293.h"
69 72
70static unsigned int debug; 73static unsigned int debug;
71 74
@@ -469,6 +472,11 @@ static struct ds3000_config tevii_ds3000_config = {
469 .demod_address = 0x68, 472 .demod_address = 0x68,
470}; 473};
471 474
475static struct ts2020_config tevii_ts2020_config = {
476 .tuner_address = 0x60,
477 .clk_out_div = 1,
478};
479
472static struct cx24116_config dvbworld_cx24116_config = { 480static struct cx24116_config dvbworld_cx24116_config = {
473 .demod_address = 0x05, 481 .demod_address = 0x05,
474}; 482};
@@ -493,20 +501,20 @@ static struct xc5000_config mygica_x8506_xc5000_config = {
493}; 501};
494 502
495static struct stv090x_config prof_8000_stv090x_config = { 503static struct stv090x_config prof_8000_stv090x_config = {
496 .device = STV0903, 504 .device = STV0903,
497 .demod_mode = STV090x_SINGLE, 505 .demod_mode = STV090x_SINGLE,
498 .clk_mode = STV090x_CLK_EXT, 506 .clk_mode = STV090x_CLK_EXT,
499 .xtal = 27000000, 507 .xtal = 27000000,
500 .address = 0x6A, 508 .address = 0x6A,
501 .ts1_mode = STV090x_TSMODE_PARALLEL_PUNCTURED, 509 .ts1_mode = STV090x_TSMODE_PARALLEL_PUNCTURED,
502 .repeater_level = STV090x_RPTLEVEL_64, 510 .repeater_level = STV090x_RPTLEVEL_64,
503 .adc1_range = STV090x_ADC_2Vpp, 511 .adc1_range = STV090x_ADC_2Vpp,
504 .diseqc_envelope_mode = false, 512 .diseqc_envelope_mode = false,
505 513
506 .tuner_get_frequency = stb6100_get_frequency, 514 .tuner_get_frequency = stb6100_get_frequency,
507 .tuner_set_frequency = stb6100_set_frequency, 515 .tuner_set_frequency = stb6100_set_frequency,
508 .tuner_set_bandwidth = stb6100_set_bandwidth, 516 .tuner_set_bandwidth = stb6100_set_bandwidth,
509 .tuner_get_bandwidth = stb6100_get_bandwidth, 517 .tuner_get_bandwidth = stb6100_get_bandwidth,
510}; 518};
511 519
512static struct stb6100_config prof_8000_stb6100_config = { 520static struct stb6100_config prof_8000_stb6100_config = {
@@ -659,6 +667,20 @@ static struct mt2063_config terratec_mt2063_config[] = {
659 }, 667 },
660}; 668};
661 669
670static const struct tda10071_config hauppauge_tda10071_config = {
671 .demod_i2c_addr = 0x05,
672 .tuner_i2c_addr = 0x54,
673 .i2c_wr_max = 64,
674 .ts_mode = TDA10071_TS_SERIAL,
675 .spec_inv = 0,
676 .xtal = 40444000, /* 40.444 MHz */
677 .pll_multiplier = 20,
678};
679
680static const struct a8293_config hauppauge_a8293_config = {
681 .i2c_addr = 0x0b,
682};
683
662static int netup_altera_fpga_rw(void *device, int flag, int data, int read) 684static int netup_altera_fpga_rw(void *device, int flag, int data, int read)
663{ 685{
664 struct cx23885_dev *dev = (struct cx23885_dev *)device; 686 struct cx23885_dev *dev = (struct cx23885_dev *)device;
@@ -1011,8 +1033,11 @@ static int dvb_register(struct cx23885_tsport *port)
1011 fe0->dvb.frontend = dvb_attach(ds3000_attach, 1033 fe0->dvb.frontend = dvb_attach(ds3000_attach,
1012 &tevii_ds3000_config, 1034 &tevii_ds3000_config,
1013 &i2c_bus->i2c_adap); 1035 &i2c_bus->i2c_adap);
1014 if (fe0->dvb.frontend != NULL) 1036 if (fe0->dvb.frontend != NULL) {
1037 dvb_attach(ts2020_attach, fe0->dvb.frontend,
1038 &tevii_ts2020_config, &i2c_bus->i2c_adap);
1015 fe0->dvb.frontend->ops.set_voltage = f300_set_voltage; 1039 fe0->dvb.frontend->ops.set_voltage = f300_set_voltage;
1040 }
1016 1041
1017 break; 1042 break;
1018 case CX23885_BOARD_DVBWORLD_2005: 1043 case CX23885_BOARD_DVBWORLD_2005:
@@ -1242,6 +1267,17 @@ static int dvb_register(struct cx23885_tsport *port)
1242 fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage; 1267 fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage;
1243 } 1268 }
1244 break; 1269 break;
1270 case CX23885_BOARD_HAUPPAUGE_HVR4400:
1271 i2c_bus = &dev->i2c_bus[0];
1272 fe0->dvb.frontend = dvb_attach(tda10071_attach,
1273 &hauppauge_tda10071_config,
1274 &i2c_bus->i2c_adap);
1275 if (fe0->dvb.frontend != NULL) {
1276 dvb_attach(a8293_attach, fe0->dvb.frontend,
1277 &i2c_bus->i2c_adap,
1278 &hauppauge_a8293_config);
1279 }
1280 break;
1245 default: 1281 default:
1246 printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " 1282 printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
1247 " isn't supported yet\n", 1283 " isn't supported yet\n",