Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71569850 authored by Kieran Bingham's avatar Kieran Bingham Committed by Mauro Carvalho Chehab
Browse files

media: i2c: adv748x: Add missing CBUS page



The ADV748x has 12 pages mapped onto I2C addresses.

In the existing implementation only 11 are mapped correctly in the page
enumerations, which causes an off-by-one fault on pages above the
infoframe definition due to a missing 'CBUS' page.

This causes the address for the CEC, SDP, TXA, and TXB to be incorrectly
programmed during the iterations in adv748x_initialise_clients().

Until now this has gone un-noticed due to the fact that following the
creation of the clients - the device is reset and the addresses are
reprogrammed in manually by the call to "adv748x_write_regs(state,
adv748x_set_slave_address);"

As part of moving to dynamic i2c address allocations repair this by
providing the missing CBUS page definition.

Signed-off-by: default avatarKieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 06aa8f3a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ static const struct regmap_config adv748x_regmap_cnf[] = {
	ADV748X_REGMAP_CONF("edid"),
	ADV748X_REGMAP_CONF("repeater"),
	ADV748X_REGMAP_CONF("infoframe"),
	ADV748X_REGMAP_CONF("cbus"),
	ADV748X_REGMAP_CONF("cec"),
	ADV748X_REGMAP_CONF("sdp"),
	ADV748X_REGMAP_CONF("txa"),
@@ -89,6 +90,7 @@ static int adv748x_i2c_addresses[ADV748X_PAGE_MAX] = {
	ADV748X_I2C_EDID,
	ADV748X_I2C_REPEATER,
	ADV748X_I2C_INFOFRAME,
	ADV748X_I2C_CBUS,
	ADV748X_I2C_CEC,
	ADV748X_I2C_SDP,
	ADV748X_I2C_TXB,
@@ -352,6 +354,7 @@ static const struct adv748x_reg_value adv748x_set_slave_address[] = {
	{ADV748X_PAGE_IO, 0xf6, ADV748X_I2C_EDID << 1},
	{ADV748X_PAGE_IO, 0xf7, ADV748X_I2C_REPEATER << 1},
	{ADV748X_PAGE_IO, 0xf8, ADV748X_I2C_INFOFRAME << 1},
	{ADV748X_PAGE_IO, 0xf9, ADV748X_I2C_CBUS << 1},
	{ADV748X_PAGE_IO, 0xfa, ADV748X_I2C_CEC << 1},
	{ADV748X_PAGE_IO, 0xfb, ADV748X_I2C_SDP << 1},
	{ADV748X_PAGE_IO, 0xfc, ADV748X_I2C_TXB << 1},
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#define ADV748X_I2C_EDID		0x36	/* EDID Map */
#define ADV748X_I2C_REPEATER		0x32	/* HDMI RX Repeater Map */
#define ADV748X_I2C_INFOFRAME		0x31	/* HDMI RX InfoFrame Map */
#define ADV748X_I2C_CBUS		0x30	/* CBUS MHL Map */
#define ADV748X_I2C_CEC			0x41	/* CEC Map */
#define ADV748X_I2C_SDP			0x79	/* SDP Map */
#define ADV748X_I2C_TXB			0x48	/* CSI-TXB Map */
@@ -48,6 +49,7 @@ enum adv748x_page {
	ADV748X_PAGE_EDID,
	ADV748X_PAGE_REPEATER,
	ADV748X_PAGE_INFOFRAME,
	ADV748X_PAGE_CBUS,
	ADV748X_PAGE_CEC,
	ADV748X_PAGE_SDP,
	ADV748X_PAGE_TXB,