All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Naladala, Ramanaidu" <Ramanaidu.naladala@intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>,
	<intel-gfx@lists.freedesktop.org>
Cc: <ankit.k.nautiyal@intel.com>
Subject: Re: [PATCH v1 2/2] drm/i915/hdmi: Read EDID over GPIO when the debugfs flag is set
Date: Fri, 11 Sep 2026 00:02:44 +0530	[thread overview]
Message-ID: <7f2ad939-b546-4a9b-adb3-b491c52538b7@intel.com> (raw)
In-Reply-To: <9166040c46d8ec390662b19c9b4268311dc05896@intel.com>

Hi Jani,

Thanks for the review.

On 8/31/2026 7:32 PM, Jani Nikula wrote:
> On Wed, 26 Aug 2026, Naladala Ramanaidu <ramanaidu.naladala@intel.com> wrote:
>> Normally the EDID is read over GMBUS, and GPIO bit-banging is only used
>> if that read fails. Now the debugfs flag is checked first. If it is set,
>> the DDC adapter is put in bit-banging mode before the read and put back
>> after it.
>>
>> The flag is read once with READ_ONCE(), so the enable and the restore
>> always match even if the flag changes at the same time. The GMBUS retry
>> is not needed in this case, because the read already used GPIO.
> This should just be folded to one patch that actually does something
> with the debugfs.
Sure. I will fold this patches into single patch.
>
>> Assisted-by: Claude:claude-opus-5
>> Signed-off-by: Naladala Ramanaidu <ramanaidu.naladala@intel.com>
>> ---
>>   drivers/gpu/drm/i915/display/intel_hdmi.c | 12 +++++++++++-
>>   1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
>> index 38915f19d3e5..462ccfc840d4 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
>> @@ -2555,13 +2555,23 @@ intel_hdmi_set_edid(struct drm_connector *_connector)
>>   	struct i2c_adapter *ddc = connector->base.ddc;
>>   	struct ref_tracker *wakeref;
>>   	const struct drm_edid *drm_edid;
>> +	bool force_bit_banging = READ_ONCE(intel_hdmi->force_bit_banging);
>>   	bool connected = false;
>>   
>>   	wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS);
>>   
>> +	if (force_bit_banging) {
>> +		drm_dbg_kms(display->drm,
>> +			    "[CONNECTOR:%d:%s] HDMI EDID read forced to GPIO bit-banging\n",
>> +			    connector->base.base.id, connector->base.name);
>> +		intel_gmbus_force_bit(ddc, true);
>> +	}
>> +
> Okay, now that I see the implementation... why is any of this HDMI
> specific? You could make it independent of the connector type. There are
> other connectors that use intel_gmbus_force_bit().
>
> And you could just call intel_gmbus_force_bit() directly from the
> debugfs handler. It already supports nesting with a count. You don't
> have to modify any of this code, at all. The debug logging is there in
> intel_gmbus_force_bit(). Everything is taken care of.
>
> BR,
> Jani.

The original intent was to debug a specific HDMI EDID read failure on 
newer platforms, where GMBUS reads were intermittently unreliable. To 
enable quick validation of the fix, I added a debugfs knob that forces 
GPIO bit-banging for the affected connector. As a result, the 
implementation was scoped around the immediate HDMIA/HDMIB use case 
rather than developed as a generic DDC/GMBUS debugging aid.

I agree with the suggestion. Since intel_gmbus_force_bit() applies to 
any GMBUS-backed DDC adapter, limiting the interface to HDMI connectors 
is unnecessarily restrictive and reduces its value for VGA/DVI debugging 
without any clear benefit. I'll generalize the implementation in the 
next revision.

>
>
>>   	drm_edid = drm_edid_read_ddc(&connector->base, ddc);
>>   
>> -	if (!drm_edid && !intel_gmbus_is_forced_bit(ddc)) {
>> +	if (force_bit_banging)
>> +		intel_gmbus_force_bit(ddc, false);
>> +	else if (!drm_edid && !intel_gmbus_is_forced_bit(ddc)) {
>>   		drm_dbg_kms(display->drm,
>>   			    "HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n");
>>   		intel_gmbus_force_bit(ddc, true);

  reply	other threads:[~2026-09-10 18:32 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-26 15:24 [PATCH v1 0/2] drm/i915/hdmi: Add debugfs knob to force EDID reads over GPIO Naladala Ramanaidu
2026-08-26 15:24 ` [PATCH v1 1/2] drm/i915/hdmi: Add debugfs support " Naladala Ramanaidu
2026-08-31 13:49   ` Jani Nikula
2026-09-10 18:27     ` Naladala, Ramanaidu
2026-08-26 15:24 ` [PATCH v1 2/2] drm/i915/hdmi: Read EDID over GPIO when the debugfs flag is set Naladala Ramanaidu
2026-08-31 11:15   ` Nautiyal, Ankit K
2026-09-10 18:38     ` Naladala, Ramanaidu
2026-08-31 14:02   ` Jani Nikula
2026-09-10 18:32     ` Naladala, Ramanaidu [this message]
2026-08-26 16:24 ` ✓ i915.CI.BAT: success for drm/i915/hdmi: Add debugfs knob to force EDID reads over GPIO Patchwork
2026-08-26 23:02 ` ✗ i915.CI.Full: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2026-08-26 15:23 [PATCH v1 0/2] " Naladala Ramanaidu
2026-08-26 15:23 ` [PATCH v1 2/2] drm/i915/hdmi: Read EDID over GPIO when the debugfs flag is set Naladala Ramanaidu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7f2ad939-b546-4a9b-adb3-b491c52538b7@intel.com \
    --to=ramanaidu.naladala@intel.com \
    --cc=ankit.k.nautiyal@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.