From 303cbeaaacd449545d259f82b966d070418c58af Mon Sep 17 00:00:00 2001 From: Patrick Boettcher Date: Tue, 19 Sep 2006 12:51:56 -0300 Subject: [PATCH] V4L/DVB (4653): Misc fixes for Nova-T 500 - forward the clock to the slave undivided - when sleeping the 3000 do not shutdown the clock Signed-off-by: Patrick Boettcher Signed-off-by: Mauro Carvalho Chehab --- drivers/media/dvb/dvb-usb/dib0700_core.c | 4 +++- drivers/media/dvb/dvb-usb/dib0700_devices.c | 2 +- drivers/media/dvb/frontends/dib3000mc.c | 9 +++++---- drivers/media/dvb/frontends/mt2060.h | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c index a1a8165ab27..dca6c698566 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_core.c +++ b/drivers/media/dvb/dvb-usb/dib0700_core.c @@ -103,8 +103,10 @@ static int dib0700_i2c_xfer(struct i2c_adapter *adap,struct i2c_msg *msg,int num buf[1] |= 1; /* special thing in the current firmware: when length is zero the read-failed */ - if ((len = dib0700_ctrl_rd(d, buf, msg[i].len + 2, msg[i+1].buf, msg[i+1].len)) <= 0) + if ((len = dib0700_ctrl_rd(d, buf, msg[i].len + 2, msg[i+1].buf, msg[i+1].len)) <= 0) { + deb_info("I2C read failed on address %x\n", msg[i].addr); break; + } msg[i+1].len = len; diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index 182051011c9..9347febaaba 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c @@ -17,7 +17,7 @@ static struct mt2060_config bristol_mt2060_config[2] = { { .i2c_address = 0x60, - .clock_out = 1, + .clock_out = 3, }, { .i2c_address = 0x61, } diff --git a/drivers/media/dvb/frontends/dib3000mc.c b/drivers/media/dvb/frontends/dib3000mc.c index 0b051c7d5cd..ccc813b525d 100644 --- a/drivers/media/dvb/frontends/dib3000mc.c +++ b/drivers/media/dvb/frontends/dib3000mc.c @@ -312,10 +312,10 @@ static int dib3000mc_init(struct dvb_frontend *demod) dib3000mc_write_word(state, 175, 0x0000); dib3000mc_write_word(state, 1032, 0x012C); } - dib3000mc_write_word(state, 1033, 0); + dib3000mc_write_word(state, 1033, 0x0000); // P_clk_cfg - dib3000mc_write_word(state, 1037, 12592); + dib3000mc_write_word(state, 1037, 0x3130); // other configurations @@ -412,10 +412,9 @@ static int dib3000mc_sleep(struct dvb_frontend *demod) { struct dib3000mc_state *state = demod->demodulator_priv; - dib3000mc_write_word(state, 1037, dib3000mc_read_word(state, 1037) | 0x0003); dib3000mc_write_word(state, 1031, 0xFFFF); dib3000mc_write_word(state, 1032, 0xFFFF); - dib3000mc_write_word(state, 1033, 0xFFF4); // **** Bin2 + dib3000mc_write_word(state, 1033, 0xFFF0); return 0; } @@ -828,6 +827,8 @@ struct dvb_frontend * dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr dibx000_init_i2c_master(&st->i2c_master, DIB3000MC, st->i2c_adap, st->i2c_addr); + dib3000mc_write_word(st, 1037, 0x3130); + return demod; error: diff --git a/drivers/media/dvb/frontends/mt2060.h b/drivers/media/dvb/frontends/mt2060.h index fc12c790f91..34a37c2b556 100644 --- a/drivers/media/dvb/frontends/mt2060.h +++ b/drivers/media/dvb/frontends/mt2060.h @@ -27,7 +27,7 @@ struct i2c_adapter; struct mt2060_config { u8 i2c_address; - u8 clock_out; /* 0 = off, 1 = CLK/1, 2 = CLK/2, 3 = CLK/4 */ + u8 clock_out; /* 0 = off, 1 = CLK/4, 2 = CLK/2, 3 = CLK/1 */ }; extern struct dvb_frontend * mt2060_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct mt2060_config *cfg, u16 if1); -- 2.46.0