From a55aa03a5d4ce4f84b2ba6c9c69791080bf99ced Mon Sep 17 00:00:00 2001 From: Nickey Yang Date: Tue, 25 Apr 2017 15:09:08 +0800 Subject: [PATCH] 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 --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 7995f492f4fa..bb49ec0bcb42 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -629,6 +629,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 */