[Intel-gfx] [PATCH 2/2] drm/i915/dp: use opregion mailbox #5 EDID for eDP, if available

Jani Nikula jani.nikula at intel.com
Mon Oct 12 09:09:17 UTC 2020


On Mon, 12 Oct 2020, "Lee, Shawn C" <shawn.c.lee at intel.com> wrote:
> On Fri, Aug 28, 2020 at 06:19AM, Shankar Uma wrote:
>>> -----Original Message-----
>>> From: Jani Nikula <jani.nikula at intel.com>
>>> Sent: Friday, August 28, 2020 11:50 AM
>>> To: intel-gfx at lists.freedesktop.org
>>> Cc: Nikula, Jani <jani.nikula at intel.com>; Shankar, Uma
>>> <uma.shankar at intel.com>
>>> Subject: [PATCH 2/2] drm/i915/dp: use opregion mailbox #5 EDID for eDP, if
>>> available
>>>
>>> If a panel's EDID is broken, there may be an override EDID set in the ACPI
>>> OpRegion mailbox #5. Use it if available.
>>
>>Looks Good to me.
>>Reviewed-by: Uma Shankar <uma.shankar at intel.com>
>>
>>> Cc: Uma Shankar <uma.shankar at intel.com>
>>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>>> ---
>>>  drivers/gpu/drm/i915/display/intel_dp.c | 3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
>>> b/drivers/gpu/drm/i915/display/intel_dp.c
>>> index c57ac83bf563..d1307be196a2 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>>> @@ -8114,6 +8114,9 @@ static bool intel_edp_init_connector(struct intel_dp
>>> *intel_dp,
>>>  goto out_vdd_off;
>>>  }
>>>
>>> +/* Set up override EDID, if any, from ACPI OpRegion */
>>> +intel_opregion_edid_override(intel_connector);
>>> +
>
> Customer report DUT still get EDID from eDP panel instead of mailbox #5.
> After some investigations, this change can retrieve EDID from mailbox #5 properly.
> But driver still used panel's EDID to enable eDP display. This is because of drm_get_edid()
> was executed after intel_opregion_edid_override(). drm_get_edid() return panel's EDID
> and overwrite mailbox #5's.

In recent kernels, drm_get_edid() respects EDID override, and calling
drm_get_edid() will return the override EDID from mailbox #5 instead of
retrieving the actual EDID.

Check the kernel version they're using and the drm_get_edid()
implementation.

BR,
Jani.


>
> We try to move drm_get_edid() before intel_opregion_edid_override().
> The test result is positive, mailbox #5 EDID will substitute for panel's.
> It seems we may need some additional change for this patch. Thanks!
>
> Best regards,
> Shawn
>
>>>  mutex_lock(&dev->mode_config.mutex);
>>>  edid = drm_get_edid(connector, &intel_dp->aux.ddc);
>>>  if (edid) {
>>> --
>>> 2.20.1

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list