Commit d7f9e850 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

media: af9035: add the formula used for the I2C speed

A very old patch sent to the media ML used to contain the
I2C speed formula:

	https://lore.kernel.org/linux-media/1312539895.2763.33.camel@Jason-Linux/



When the ite9135 code was merged with af9035, the formula was
lost. As we might need to slow down the speed for some devices,
add the formula again.

No functional changes.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 1c9b943c
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -1197,6 +1197,15 @@ static int af9035_frontend_attach(struct dvb_usb_adapter *adap)
	return ret;
}

/*
 * The I2C speed register is calculated with:
 *	I2C speed register = (1000000000 / (24.4 * 16 * I2C_speed))
 *
 * The default speed register for it930x is 7, with means a
 * speed of ~366 kbps
 */
#define I2C_SPEED_366K 7

static int it930x_frontend_attach(struct dvb_usb_adapter *adap)
{
	struct state *state = adap_to_priv(adap);
@@ -1208,13 +1217,13 @@ static int it930x_frontend_attach(struct dvb_usb_adapter *adap)

	dev_dbg(&intf->dev, "adap->id=%d\n", adap->id);

	/* I2C master bus 2 clock speed 300k */
	ret = af9035_wr_reg(d, 0x00f6a7, 0x07);
	/* I2C master bus 2 clock speed 366k */
	ret = af9035_wr_reg(d, 0x00f6a7, I2C_SPEED_366K);
	if (ret < 0)
		goto err;

	/* I2C master bus 1,3 clock speed 300k */
	ret = af9035_wr_reg(d, 0x00f103, 0x07);
	/* I2C master bus 1,3 clock speed 366k */
	ret = af9035_wr_reg(d, 0x00f103, I2C_SPEED_366K);
	if (ret < 0)
		goto err;