V4L/DVB (7383): tda18271: add attach-time parameter to limit i2c transfer size
Add attach-time parameter, "small_i2c" to limit i2c transfer size to write at most 16 registers at a time during initialization. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
ab8b870e43
commit
5555309c9a
|
@ -311,7 +311,12 @@ int tda18271_init_regs(struct dvb_frontend *fe)
|
||||||
regs[R_EB22] = 0x48;
|
regs[R_EB22] = 0x48;
|
||||||
regs[R_EB23] = 0xb0;
|
regs[R_EB23] = 0xb0;
|
||||||
|
|
||||||
tda18271_write_regs(fe, 0x00, TDA18271_NUM_REGS);
|
if (priv->small_i2c) {
|
||||||
|
tda18271_write_regs(fe, 0x00, 0x10);
|
||||||
|
tda18271_write_regs(fe, 0x10, 0x10);
|
||||||
|
tda18271_write_regs(fe, 0x20, 0x07);
|
||||||
|
} else
|
||||||
|
tda18271_write_regs(fe, 0x00, TDA18271_NUM_REGS);
|
||||||
|
|
||||||
/* setup agc1 gain */
|
/* setup agc1 gain */
|
||||||
regs[R_EB17] = 0x00;
|
regs[R_EB17] = 0x00;
|
||||||
|
|
|
@ -1081,6 +1081,9 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,
|
||||||
|
|
||||||
fe->tuner_priv = priv;
|
fe->tuner_priv = priv;
|
||||||
|
|
||||||
|
if (cfg)
|
||||||
|
priv->small_i2c = cfg->small_i2c;
|
||||||
|
|
||||||
if (tda18271_get_id(fe) < 0)
|
if (tda18271_get_id(fe) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,7 @@ struct tda18271_priv {
|
||||||
|
|
||||||
unsigned int tm_rfcal;
|
unsigned int tm_rfcal;
|
||||||
unsigned int cal_initialized:1;
|
unsigned int cal_initialized:1;
|
||||||
|
unsigned int small_i2c:1;
|
||||||
|
|
||||||
struct tda18271_map_layout *maps;
|
struct tda18271_map_layout *maps;
|
||||||
struct tda18271_std_map std;
|
struct tda18271_std_map std;
|
||||||
|
|
|
@ -58,6 +58,9 @@ struct tda18271_config {
|
||||||
|
|
||||||
/* use i2c gate provided by analog or digital demod */
|
/* use i2c gate provided by analog or digital demod */
|
||||||
enum tda18271_i2c_gate gate;
|
enum tda18271_i2c_gate gate;
|
||||||
|
|
||||||
|
/* some i2c providers cant write all 39 registers at once */
|
||||||
|
unsigned int small_i2c:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(CONFIG_DVB_TDA18271) || (defined(CONFIG_DVB_TDA18271_MODULE) && defined(MODULE))
|
#if defined(CONFIG_DVB_TDA18271) || (defined(CONFIG_DVB_TDA18271_MODULE) && defined(MODULE))
|
||||||
|
|
Loading…
Reference in New Issue