From nobody Mon Jun 8 14:35:53 2026 Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3E8A32B138 for ; Thu, 28 May 2026 18:41:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779993721; cv=none; b=IibQ0CuxoXk3ZU70Iuwc1JcBIWzcT2/1ABlNlyxaclb72kMyh+mjBR+PH/tsZCf7j7WkYt1WYYU0KLE2CVKKP2yXhjySDQ/YjV/QpGh1ULX7bF0UPyHshmO9V4yGvjjnG49bxiJQUpvx06sCEBE6KRI6+iBMXSkJiieVKpD/niM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779993721; c=relaxed/simple; bh=3Do16ERQ3nA+KuTWjDoCA8yOERhZlab4casu2oj3F2o=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=p4/KnZ4Vy7gWmJ93n4FBWsf+o+wxBieJnIHu/k7/T3TuqRm78o4MZe8gyVhsakVY1Asynk9koXps0Tsy2tymcGY6Vq3n++XYd2XUX2jJG+v2fpM4pOKVSD6IiyDmSIlvrQiYfJnOTXS6+3FbAu71rUEOH0R92+39UGOjK8jRbhU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.222.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-911dfc86903so1519732885a.3 for ; Thu, 28 May 2026 11:41:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779993717; x=1780598517; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vvVca0XD9acOcTvdc3tCZ7i39eBcRq3fOov78xnCMd8=; b=qiaMZxqKvUZzl7nF23jfLaco13a/ql7ka73PCsKlpaQvYKOX33OvtZpekdXMIlAY67 NUXkZfXjHIHpBCZsTvmNdRUAYnnUbI9fAf9AI6pRXWfCpOd4WZKfW7WxE6V/EfVIF0F/ n14q/z/v2jmirqyqFaZlvT160FxpetamGHzRzeGPHAsFDzI2NcHiqcxNyxZ+JHGbrulV +5E9ifR8S5t19oBpQL+c8SLebTOR4ktRyup7cXP6QHI3vmkAvrw1B40/w3DZnZYRNLpY wspiWhB0mknR8FmPzCT2Ng3LrfCii5iIdSvIWh09llZVvXa9hWezi4PNPwViM8Khz0QL UJGg== X-Forwarded-Encrypted: i=1; AFNElJ/K3Tx9OSpoJzZFLxPhvMP9etZi6UMy1qrD5FNUA82rfafTy5QeGOk1gfltsTlFhaB3HEUEmKoiI4CKNyc=@vger.kernel.org X-Gm-Message-State: AOJu0YyfPqxjeH+t8mFWx7ED2I5coKat6tj4hSjeRyElLasiWfo69pbz Mlewx1l+4icoPs475yNoGW0Vh1aGMm+6DpccMu91Pbx1JbQQgqLblD5C X-Gm-Gg: Acq92OFUIdZtfypJiOqcqjLC8+AJehpJEJe8CUUITjJQrxj08R+V2KLLWfiQhza6T6P Ct+o2fQYIYBGDb4kudLKXqbxr8qxupq63ePdApAFOEFIjCmbNZczTDsWGtZpYgjxi1PmoYzRJ8M n7STL7ZBRjO9ACRbwfxuRIiK0XLx6y/arjINDtT9M9VIzs+SLJrf1IefY8TiiUBdkRogL04M43+ /CIIYjfvDTbWSxwLUNThPpIsc64qB0TQATEjfo+l7Er0/JGIqVolDcmM0LGu2m8PAUv9G6YMq4m 2Z+nhUUwAomOoItGpBecPHiET66qgoBnIbh5dDoNjWIaV7XRcKI0s33WaMzW43tKXt24ZnWMjr2 E+s2ufRKqu2Q5b89WKJ+UBOtrZLJFGNhz0VMgzzq65lk/kldkqP7ez5nRp7wj5/ZE0ppJG6gMP9 JI/g+lRJ6a0Wqh7rxlX1KrYXXQEjynxa46YDYqIGYyvGdADfMPdnA2Dp2vwn9fy8lQ+cN0ItB0g JT86v5DmrOwT/FP0g== X-Received: by 2002:a05:620a:f15:b0:910:b13f:ac81 with SMTP id af79cd13be357-9152cf2147bmr32429885a.52.1779993717517; Thu, 28 May 2026 11:41:57 -0700 (PDT) Received: from 96364762d92a.hsd1.ct.comcast.net ([73.219.118.68]) by smtp.gmail.com with ESMTPSA id af79cd13be357-914f87d1a27sm904579085a.28.2026.05.28.11.41.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 11:41:57 -0700 (PDT) From: Dominique Belhachemi To: Andy Yan , dri-devel@lists.freedesktop.org Cc: Andrzej Hajda , Neil Armstrong , Robert Foss , linux-kernel@vger.kernel.org Subject: [PATCH v1] drm/bridge: inno-hdmi: reset DDC segment pointer per I2C transfer Date: Thu, 28 May 2026 18:41:45 +0000 Message-ID: <20260528184145.384114-1-domibel@debian.org> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 --- 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/in= no-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, =20 mutex_lock(&i2c->lock); =20 + /* Reset segment_addr and ddc_addr at the start of every I2C transfer */ + i2c->ddc_addr =3D 0; + i2c->segment_addr =3D 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); --=20 2.53.0