On Mon, Feb 24, 2020 at 10:06:05AM +0100, Maxime Ripard wrote:
The HDMI blocks in the BCM2771 have an i2c controller to retrieve the EDID. This block is split into two parts, the BSC and the AUTO_I2C, lying in two separate register areas.
The AUTO_I2C block has a mailbox-like interface and will take away the BSC control from the CPU if enabled. However, the BSC is the actually the same controller than the one supported by the brcmstb driver, and the AUTO_I2C doesn't really bring any immediate benefit.
Let's use the BSC then, but let's also tie the AUTO_I2C registers with a separate compatible so that we can enable AUTO_I2C if needed in the future.
The AUTO_I2C is enabled by default at boot though, so we first need to release the BSC from the AUTO_I2C control.
Cc: Kamal Dasu kdasu.kdev@gmail.com Cc: Florian Fainelli f.fainelli@gmail.com Cc: Wolfram Sang wsa@the-dreams.de Cc: bcm-kernel-feedback-list@broadcom.com Cc: linux-i2c@vger.kernel.org Signed-off-by: Maxime Ripard maxime@cerno.tech
Fixed the acked-by and applied to for-next, thanks!
FYI, cppcheck rightfully warned about this in the driver:
drivers/i2c/busses/i2c-brcmstb.c:319:7: warning: Condition 'CMD_RD' is always true [knownConditionTrueFalse] if ((CMD_RD || CMD_WR) && ^ drivers/i2c/busses/i2c-brcmstb.c:319:17: warning: Condition 'CMD_WR' is always false [knownConditionTrueFalse] if ((CMD_RD || CMD_WR) && ^ drivers/i2c/busses/i2c-brcmstb.c:464:0: warning: Variable 'len' is assigned a value that is never used. [unreadVariable] int len = 0;
Not related to this patch, but maybe one of you is interested...