diff options
author | Patrick Boettcher <pb@linuxtv.org> | 2008-04-13 14:49:22 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:09:40 -0400 |
commit | ca19aaa510b150ca358166b29eb2bb62ad971f76 (patch) | |
tree | c95e024b03b98ae0aa7d621620c3487f82f8611b /drivers/media/dvb/b2c2 | |
parent | c9dd82c2f978e4ebac1cbb7cee8d379d1090154b (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/Kconfig | 2 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/Makefile | 1 | ||||
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop-fe-tuner.c | 48 |
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 |
3 | obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o | 3 | obj-$(CONFIG_DVB_B2C2_FLEXCOP) += b2c2-flexcop.o |
4 | 4 | ||
5 | |||
5 | ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),) | 6 | ifneq ($(CONFIG_DVB_B2C2_FLEXCOP_PCI),) |
6 | b2c2-flexcop-objs += flexcop-dma.o | 7 | b2c2-flexcop-objs += flexcop-dma.o |
7 | endif | 8 | endif |
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) */ | ||
489 | static struct s5h1420_config skystar2_rev2_7_s5h1420_config = { | ||
490 | .demod_address = 0x53, | ||
491 | .invert = 1, | ||
492 | .repeated_start_workaround = 1, | ||
493 | }; | ||
494 | |||
495 | static struct itd1000_config skystar2_rev2_7_itd1000_config = { | ||
496 | .i2c_address = 0x61, | ||
497 | }; | ||
498 | |||
499 | /* SkyStar2 rev2.8 */ | ||
485 | static struct cx24123_config skystar2_rev2_8_cx24123_config = { | 500 | static 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); |