[PATCH v2 1/3] drm/amd: be quiet when no SAD block is found

Harry Wentland hwentlan at amd.com
Wed Sep 4 13:18:32 UTC 2019


On 2019-09-04 5:12 a.m., Jean Delvare wrote:
> It is fine for displays without audio functionality to not provide
> any SAD block in their EDID. Do not log an error in that case,
> just return quietly.
> 
> This fixes half of bug fdo#107825:
> https://bugs.freedesktop.org/show_bug.cgi?id=107825
> 
> Signed-off-by: Jean Delvare <jdelvare at suse.de>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Cc: "Christian König" <christian.koenig at amd.com>
> Cc: "David (ChunMing) Zhou" <David1.Zhou at amd.com>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Cc: Harry Wentland <harry.wentland at amd.com>
> Cc: Leo Li <sunpeng.li at amd.com>

Reviewed-by: Harry Wentland <harry.wentland at amd.com>

Harry

> ---
> No change since v1.
> 
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c                    |    4 ++--
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c                    |    4 ++--
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c                     |    4 ++--
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c                     |    4 ++--
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c |    7 +++----
>  5 files changed, 11 insertions(+), 12 deletions(-)
> 
> --- linux-5.2.orig/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c	2019-07-08 00:41:56.000000000 +0200
> +++ linux-5.2/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c	2019-08-30 14:28:46.081682223 +0200
> @@ -1345,10 +1345,10 @@ static void dce_v10_0_audio_write_sad_re
>  	}
>  
>  	sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads);
> -	if (sad_count <= 0) {
> +	if (sad_count < 0)
>  		DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
> +	if (sad_count <= 0)
>  		return;
> -	}
>  	BUG_ON(!sads);
>  
>  	for (i = 0; i < ARRAY_SIZE(eld_reg_to_type); i++) {
> --- linux-5.2.orig/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c	2019-07-08 00:41:56.000000000 +0200
> +++ linux-5.2/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c	2019-08-30 14:29:27.276205310 +0200
> @@ -1371,10 +1371,10 @@ static void dce_v11_0_audio_write_sad_re
>  	}
>  
>  	sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads);
> -	if (sad_count <= 0) {
> +	if (sad_count < 0)
>  		DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
> +	if (sad_count <= 0)
>  		return;
> -	}
>  	BUG_ON(!sads);
>  
>  	for (i = 0; i < ARRAY_SIZE(eld_reg_to_type); i++) {
> --- linux-5.2.orig/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c	2019-07-08 00:41:56.000000000 +0200
> +++ linux-5.2/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c	2019-08-30 17:58:53.613953458 +0200
> @@ -1248,10 +1248,10 @@ static void dce_v6_0_audio_write_sad_reg
>  	}
>  
>  	sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads);
> -	if (sad_count <= 0) {
> +	if (sad_count < 0)
>  		DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
> +	if (sad_count <= 0)
>  		return;
> -	}
>  
>  	for (i = 0; i < ARRAY_SIZE(eld_reg_to_type); i++) {
>  		u32 tmp = 0;
> --- linux-5.2.orig/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c	2019-07-08 00:41:56.000000000 +0200
> +++ linux-5.2/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c	2019-08-30 14:29:01.948883708 +0200
> @@ -1298,10 +1298,10 @@ static void dce_v8_0_audio_write_sad_reg
>  	}
>  
>  	sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), &sads);
> -	if (sad_count <= 0) {
> +	if (sad_count < 0)
>  		DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
> +	if (sad_count <= 0)
>  		return;
> -	}
>  	BUG_ON(!sads);
>  
>  	for (i = 0; i < ARRAY_SIZE(eld_reg_to_type); i++) {
> --- linux-5.2.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c	2019-07-08 00:41:56.000000000 +0200
> +++ linux-5.2/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c	2019-08-30 14:31:03.086421910 +0200
> @@ -98,11 +98,10 @@ enum dc_edid_status dm_helpers_parse_edi
>  			(struct edid *) edid->raw_edid);
>  
>  	sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads);
> -	if (sad_count <= 0) {
> -		DRM_INFO("SADs count is: %d, don't need to read it\n",
> -				sad_count);
> +	if (sad_count < 0)
> +		DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
> +	if (sad_count <= 0)
>  		return result;
> -	}
>  
>  	edid_caps->audio_mode_count = sad_count < DC_MAX_AUDIO_DESC_COUNT ? sad_count : DC_MAX_AUDIO_DESC_COUNT;
>  	for (i = 0; i < edid_caps->audio_mode_count; ++i) {
> 


More information about the dri-devel mailing list