Re: [PATCH v1] drm/bridge: inno-hdmi: reset DDC segment pointer per I2C transfer
From: Dominique Belhachemi
Date: Mon Sep 28 2026 - 18:02:21 EST
On Mon, Sep 28, 2026 at 7:15 AM Michal Wilczynski
<m.wilczynski@xxxxxxxxxxx> wrote:
>
>
>
> On 9/27/26 10:51, Michal Wilczynski wrote:
> >
> >
> > On 5/28/26 20:41, Dominique Belhachemi wrote:
> >> The segment_addr and ddc_addr fields need to be reset per I2C transfer
> >> to avoid stale values. The reset wasn't required on simple displays with
> >> only one segment, but modern displays with two or more segments end up
> >> with corrupt EDIDs.
> >>
> >> This was found on a StarFive VisionFive 2 SBC.
> >>
> >> Signed-off-by: Dominique Belhachemi <domibel@xxxxxxxxxx>
> >> ---
> >> drivers/gpu/drm/bridge/inno-hdmi.c | 4 ++++
> >> 1 file changed, 4 insertions(+)
> >>
> >> diff --git a/drivers/gpu/drm/bridge/inno-hdmi.c b/drivers/gpu/drm/bridge/inno-hdmi.c
> >> index 5fa533a4eb342..297be02bbd58d 100644
> >> --- a/drivers/gpu/drm/bridge/inno-hdmi.c
> >> +++ b/drivers/gpu/drm/bridge/inno-hdmi.c
> >> @@ -989,6 +989,10 @@ static int inno_hdmi_i2c_xfer(struct i2c_adapter *adap,
> >>
> >> mutex_lock(&i2c->lock);
> >>
> >> + /* Reset segment_addr and ddc_addr at the start of every I2C transfer */
> >> + i2c->ddc_addr = 0;
> >> + i2c->segment_addr = 0;
> >> +
> >> /* Clear the EDID interrupt flag and unmute the interrupt */
> >> hdmi_writeb(hdmi, HDMI_INTERRUPT_MASK1, m_INT_EDID_READY);
> >> hdmi_writeb(hdmi, HDMI_INTERRUPT_STATUS1, m_INT_EDID_READY);
> >
> > Reviewed-by: Michal Wilczynski <m.wilczynski@xxxxxxxxxxx>
>
> I was also told that there were some changes in the MAINTAINERS file
> regarding this patch and some core people may be missing e.g Luca and
> Maxime.
>
> It would be best to resend with updated list of maintainers.
>
Thanks Michal, I am adding them to Cc.
Best
-Dominique