Commit 5555309c authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab
Browse files

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: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent ab8b870e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -311,6 +311,11 @@ int tda18271_init_regs(struct dvb_frontend *fe)
	regs[R_EB22] = 0x48;
	regs[R_EB23] = 0xb0;

	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 */
+3 −0
Original line number Diff line number Diff line
@@ -1081,6 +1081,9 @@ struct dvb_frontend *tda18271_attach(struct dvb_frontend *fe, u8 addr,

		fe->tuner_priv = priv;

		if (cfg)
			priv->small_i2c = cfg->small_i2c;

		if (tda18271_get_id(fe) < 0)
			goto fail;

+1 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ struct tda18271_priv {

	unsigned int tm_rfcal;
	unsigned int cal_initialized:1;
	unsigned int small_i2c:1;

	struct tda18271_map_layout *maps;
	struct tda18271_std_map std;
+3 −0
Original line number Diff line number Diff line
@@ -58,6 +58,9 @@ struct tda18271_config {

	/* use i2c gate provided by analog or digital demod */
	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))