On Tue, 11 Oct 2022, Matthieu CHARETTE <matthieu.chare...@gmail.com> wrote:
> It should fix the issue. Meanwhile, the system will still crash if a 
> new monitor is plugged while the machine is suspended. We might need to 
> precache the EDID to prevent that.

Please elaborate.

BR,
Jani.


>
> Matthieu
>
> On Fri, Oct 7 2022 at 01:21:46 AM +0300, Jani Nikula 
> <jani.nik...@intel.com> wrote:
>> We've used a temporary platform device for firmware EDID loading since
>> it was introduced in commit da0df92b5731 ("drm: allow loading an EDID 
>> as
>> firmware to override broken monitor"), but there's no explanation why.
>> 
>> Do we need to?
>> 
>> Maybe this fixes the suspend/resume issue?
>> 
>> (Yes, I'll rewrite the commit message if this is the way to go ;)
>> 
>> References: 
>> https://lore.kernel.org/r/20220727074152.43059-1-matthieu.chare...@gmail.com
>> Cc: Matthieu CHARETTE <matthieu.chare...@gmail.com>
>> Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
>> Signed-off-by: Jani Nikula <jani.nik...@intel.com>
>> ---
>>  drivers/gpu/drm/drm_edid_load.c | 11 +----------
>>  1 file changed, 1 insertion(+), 10 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/drm_edid_load.c 
>> b/drivers/gpu/drm/drm_edid_load.c
>> index 37d8ba3ddb46..fbae12130234 100644
>> --- a/drivers/gpu/drm/drm_edid_load.c
>> +++ b/drivers/gpu/drm/drm_edid_load.c
>> @@ -182,18 +182,9 @@ static void *edid_load(struct drm_connector 
>> *connector, const char *name,
>>              fwdata = generic_edid[builtin];
>>              fwsize = sizeof(generic_edid[builtin]);
>>      } else {
>> -            struct platform_device *pdev;
>>              int err;
>> 
>> -            pdev = platform_device_register_simple(connector_name, -1, 
>> NULL, 
>> 0);
>> -            if (IS_ERR(pdev)) {
>> -                    DRM_ERROR("Failed to register EDID firmware platform 
>> device "
>> -                              "for connector \"%s\"\n", connector_name);
>> -                    return ERR_CAST(pdev);
>> -            }
>> -
>> -            err = request_firmware(&fw, name, &pdev->dev);
>> -            platform_device_unregister(pdev);
>> +            err = request_firmware(&fw, name, connector->dev->dev);
>>              if (err) {
>>                      DRM_ERROR("Requesting EDID firmware \"%s\" failed 
>> (err=%d)\n",
>>                                name, err);
>> --
>> 2.34.1
>> 
>
>

-- 
Jani Nikula, Intel Open Source Graphics Center

Reply via email to