aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/b2c2
diff options
context:
space:
mode:
authorPatrick Boettcher <pb@linuxtv.org>2008-04-13 14:49:22 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-04-24 13:09:40 -0400
commitca19aaa510b150ca358166b29eb2bb62ad971f76 (patch)
treec95e024b03b98ae0aa7d621620c3487f82f8611b /drivers/media/dvb/b2c2
parentc9dd82c2f978e4ebac1cbb7cee8d379d1090154b (diff)
V4L/DVB (7569): Added support for SkyStar2 rev2.7 and ITD1000 DVB-S tuner
This patches adds support for the SkyStar2 rev2.7 with the PN1010/ITD1000 Frontend. Signed-off-by: Patrick Boettcher <pb@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/b2c2')
-rw-r--r--drivers/media/dvb/b2c2/Kconfig2
-rw-r--r--drivers/media/dvb/b2c2/Makefile1
-rw-r--r--drivers/media/dvb/b2c2/flexcop-fe-tuner.c48
3 files changed, 51 insertions, 0 deletions
diff --git a/drivers/media/dvb/b2c2/Kconfig b/drivers/media/dvb/b2c2/Kconfig
index 8193d88d171c..6ec5afba1ca7 100644
--- a/drivers/media/dvb/b2c2/Kconfig
+++ b/drivers/media/dvb/b2c2/Kconfig
@@ -10,6 +10,8 @@ config DVB_B2C2_FLEXCOP
10 select DVB_BCM3510 if !DVB_FE_CUSTOMISE 10 select DVB_BCM3510 if !DVB_FE_CUSTOMISE
11 select DVB_LGDT330X if !DVB_FE_CUSTOMISE 11 select DVB_LGDT330X if !DVB_FE_CUSTOMISE
12 select TUNER_SIMPLE if !DVB_FE_CUSTOMISE 12 select TUNER_SIMPLE if !DVB_FE_CUSTOMISE
13 select DVB_S5H1420 if !DVB_FE_CUSTOMISE
14 select DVB_TUNER_ITD1000 if !DVB_FE_CUSTOMISE
13 select DVB_ISL6421 if !DVB_FE_CUSTOMISE 15 select DVB_ISL6421 if !DVB_FE_CUSTOMISE
14 select DVB_CX24123 if !DVB_FE_CUSTOMISE 16 select DVB_CX24123 if !DVB_FE_CUSTOMISE
15 help 17 help
diff --git a/drivers/media/dvb/b2c2/Makefile b/drivers/media/dvb/b2c2/Makefile
index 7d5334106d5a..870e2848c296 100644
--- a/drivers/media/dvb/b2c2/Makefile
+++ b/drivers/media/dvb/b2c2/Makefile
@@ -2,6 +2,7 @@ b2c2-flexcop-objs = flexcop.o flexcop-fe-tuner.o flexcop-i2c.o \
2 flexcop-sram.o flexcop-eeprom.o flexcop-misc.o flexcop-hw-filter.o 2 flexcop-sram.o flexcop-eeprom.o flexcop-misc.o flexcop-hw-filter.o
3obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o 3obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o
4 4
5
5ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),) 6ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),)
6b2c2-flexcop-objs += flexcop-dma.o 7b2c2-flexcop-objs += flexcop-dma.o
7endif 8endif
diff --git a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
index 6759c3ad234a..04989b7a165c 100644
--- a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
+++ b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
@@ -19,6 +19,9 @@
19#include "dvb-pll.h" 19#include "dvb-pll.h"
20#include "tuner-simple.h" 20#include "tuner-simple.h"
21 21
22#include "s5h1420.h"
23#include "itd1000.h"
24
22#include "cx24123.h" 25#include "cx24123.h"
23#include "cx24113.h" 26#include "cx24113.h"
24 27
@@ -482,6 +485,18 @@ static struct stv0297_config alps_tdee4_stv0297_config = {
482}; 485};
483 486
484 487
488/* SkyStar2 rev2.7 (a/u) */
489static struct s5h1420_config skystar2_rev2_7_s5h1420_config = {
490 .demod_address = 0x53,
491 .invert = 1,
492 .repeated_start_workaround = 1,
493};
494
495static struct itd1000_config skystar2_rev2_7_itd1000_config = {
496 .i2c_address = 0x61,
497};
498
499/* SkyStar2 rev2.8 */
485static struct cx24123_config skystar2_rev2_8_cx24123_config = { 500static struct cx24123_config skystar2_rev2_8_cx24123_config = {
486 .demod_address = 0x55, 501 .demod_address = 0x55,
487 .dont_use_pll = 1, 502 .dont_use_pll = 1,
@@ -500,6 +515,39 @@ int flexcop_frontend_init(struct flexcop_device *fc)
500 struct i2c_adapter *i2c = &fc->fc_i2c_adap[0].i2c_adap; 515 struct i2c_adapter *i2c = &fc->fc_i2c_adap[0].i2c_adap;
501 struct i2c_adapter *i2c_tuner; 516 struct i2c_adapter *i2c_tuner;
502 517
518 /* enable no_base_addr - no repeated start when reading */
519 fc->fc_i2c_adap[0].no_base_addr = 1;
520 fc->fe = dvb_attach(s5h1420_attach, &skystar2_rev2_7_s5h1420_config, i2c);
521 if (fc->fe != NULL) {
522 flexcop_ibi_value r108;
523 i2c_tuner = s5h1420_get_tuner_i2c_adapter(fc->fe);
524 ops = &fc->fe->ops;
525
526 fc->fe_sleep = ops->sleep;
527 ops->sleep = flexcop_sleep;
528
529 fc->dev_type = FC_SKY_REV27;
530
531 /* enable no_base_addr - no repeated start when reading */
532 fc->fc_i2c_adap[2].no_base_addr = 1;
533 if (dvb_attach(isl6421_attach, fc->fe, &fc->fc_i2c_adap[2].i2c_adap, 0x08, 1, 1) == NULL)
534 err("ISL6421 could NOT be attached");
535 else
536 info("ISL6421 successfully attached");
537
538 /* the ITD1000 requires a lower i2c clock - it slows down the stuff for everyone - but is it a problem ? */
539 r108.raw = 0x00000506;
540 fc->write_ibi_reg(fc, tw_sm_c_108, r108);
541 if (i2c_tuner) {
542 if (dvb_attach(itd1000_attach, fc->fe, i2c_tuner, &skystar2_rev2_7_itd1000_config) == NULL)
543 err("ITD1000 could NOT be attached");
544 else
545 info("ITD1000 successfully attached");
546 }
547 goto fe_found;
548 }
549 fc->fc_i2c_adap[0].no_base_addr = 0; /* for the next devices we need it again */
550
503 /* try the sky v2.8 (cx24123, isl6421) */ 551 /* try the sky v2.8 (cx24123, isl6421) */
504 fc->fe = dvb_attach(cx24123_attach, 552 fc->fe = dvb_attach(cx24123_attach,
505 &skystar2_rev2_8_cx24123_config, i2c); 553 &skystar2_rev2_8_cx24123_config, i2c);