diff options
author | Patrick Boettcher <pb@linuxtv.org> | 2009-03-29 12:20:05 +0200 |
---|---|---|
committer | Patrick Boettcher <pb@linuxtv.org> | 2009-03-29 12:20:05 +0200 |
commit | 8359852c9962fbce35359404d82e2a3ced5222c3 (patch) | |
tree | e6b991a8ace3d359c24a9da983bfaef79621542b /linux | |
parent | 69357393e580dbcd400c7c1992b48813359eb417 (diff) | |
parent | 299a56025d357c1156cbe3b69689f37e5ac19eef (diff) | |
download | mediapointer-dvb-s2-8359852c9962fbce35359404d82e2a3ced5222c3.tar.gz mediapointer-dvb-s2-8359852c9962fbce35359404d82e2a3ced5222c3.tar.bz2 |
merge from main
From: Patrick Boettcher <pb@linuxtv.org>
merge from main
Priority: normal
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Diffstat (limited to 'linux')
-rw-r--r-- | linux/drivers/media/dvb/b2c2/flexcop-i2c.c | 12 | ||||
-rw-r--r-- | linux/drivers/media/dvb/b2c2/flexcop.c | 1 | ||||
-rw-r--r-- | linux/drivers/media/dvb/frontends/itd1000_priv.h | 2 |
3 files changed, 13 insertions, 2 deletions
diff --git a/linux/drivers/media/dvb/b2c2/flexcop-i2c.c b/linux/drivers/media/dvb/b2c2/flexcop-i2c.c index 01d27613f..1c07eeafc 100644 --- a/linux/drivers/media/dvb/b2c2/flexcop-i2c.c +++ b/linux/drivers/media/dvb/b2c2/flexcop-i2c.c @@ -47,6 +47,18 @@ static int flexcop_i2c_read4(struct flexcop_i2c_adapter *i2c, int len = r100.tw_sm_c_100.total_bytes, /* remember total_bytes is buflen-1 */ ret; + /* work-around to have CableStar2 and SkyStar2 rev 2.7 work + * correctly: + * + * the ITD1000 is behind an i2c-gate which closes automatically + * after an i2c-transaction the STV0297 needs 2 consecutive reads + * one with no_base_addr = 0 and one with 1 + * + * those two work-arounds are conflictin: we check for the card + * type, it is set when probing the ITD1000 */ + if (i2c->fc->dev_type == FC_SKY_REV27) + r100.tw_sm_c_100.no_base_addr_ack_error = i2c->no_base_addr; + ret = flexcop_i2c_operation(i2c->fc, &r100); if (ret != 0) { deb_i2c("Retrying operation\n"); diff --git a/linux/drivers/media/dvb/b2c2/flexcop.c b/linux/drivers/media/dvb/b2c2/flexcop.c index 91068952b..e836caece 100644 --- a/linux/drivers/media/dvb/b2c2/flexcop.c +++ b/linux/drivers/media/dvb/b2c2/flexcop.c @@ -212,7 +212,6 @@ void flexcop_reset_block_300(struct flexcop_device *fc) v210.sw_reset_210.Block_reset_enable = 0xb2; fc->write_ibi_reg(fc,sw_reset_210,v210); - udelay(1000); fc->write_ibi_reg(fc,ctrl_208,v208_save); } diff --git a/linux/drivers/media/dvb/frontends/itd1000_priv.h b/linux/drivers/media/dvb/frontends/itd1000_priv.h index 8cdc54e57..08ca85122 100644 --- a/linux/drivers/media/dvb/frontends/itd1000_priv.h +++ b/linux/drivers/media/dvb/frontends/itd1000_priv.h @@ -31,7 +31,7 @@ struct itd1000_state { /* ugly workaround for flexcop's incapable i2c-controller * FIXME, if possible */ - u8 shadow[255]; + u8 shadow[256]; }; enum itd1000_register { |