[PATCH] drm/edid/firmware: stop using throwaway platform device

Jani Nikula jani.nikula at intel.com
Tue Oct 11 07:20:18 UTC 2022


On Tue, 11 Oct 2022, Matthieu CHARETTE <matthieu.charette at 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.nikula at 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.charette@gmail.com
>> Cc: Matthieu CHARETTE <matthieu.charette at gmail.com>
>> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula at 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


More information about the dri-devel mailing list