From: Nickey Yang Date: Tue, 25 Apr 2017 07:09:08 +0000 (+0800) Subject: drm: bridge/dw-hdmi: fix 4 block edid read error X-Git-Tag: release-20171130_firefly~4^2~700 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=40db425e45d63869fde0a51efd8fb8c0f7913293;p=firefly-linux-kernel-4.4.55.git drm: bridge/dw-hdmi: fix 4 block edid read error msgs[0].addr will be 0x30 when read edid with more than 2 block. but still a read edid operation with write DDC_ADDR to HDMI_I2CM_SLAVE register.So fix it. Change-Id: I5f0cd9172acd4a68d5b54eaf99f17b45385a4263 Signed-off-by: Nickey Yang --- diff --git a/drivers/gpu/drm/bridge/dw-hdmi.c b/drivers/gpu/drm/bridge/dw-hdmi.c index e33e5c34b298..135cdbd8dfaf 100644 --- a/drivers/gpu/drm/bridge/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/dw-hdmi.c @@ -512,6 +512,8 @@ static int dw_hdmi_i2c_xfer(struct i2c_adapter *adap, hdmi_writeb(hdmi, 0x00, HDMI_IH_MUTE_I2CM_STAT0); /* Set slave device address taken from the first I2C message */ + if (addr == DDC_SEGMENT_ADDR && msgs[0].len == 1) + addr = DDC_ADDR; hdmi_writeb(hdmi, addr, HDMI_I2CM_SLAVE); /* Set slave device register address on transfer */