mirror of https://gitee.com/openkylin/linux.git
drm/amd: be quiet when no SAD block is found
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 Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Jean Delvare <jdelvare@suse.de> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: "Christian König" <christian.koenig@amd.com> Cc: "David (ChunMing) Zhou" <David1.Zhou@amd.com> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Harry Wentland <harry.wentland@amd.com> Cc: Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
13238d4fa6
commit
ae2a349597
|
@ -1352,10 +1352,10 @@ static void dce_v10_0_audio_write_sad_regs(struct drm_encoder *encoder)
|
|||
}
|
||||
|
||||
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++) {
|
||||
|
|
|
@ -1378,10 +1378,10 @@ static void dce_v11_0_audio_write_sad_regs(struct drm_encoder *encoder)
|
|||
}
|
||||
|
||||
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++) {
|
||||
|
|
|
@ -1257,10 +1257,10 @@ static void dce_v6_0_audio_write_sad_regs(struct drm_encoder *encoder)
|
|||
}
|
||||
|
||||
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;
|
||||
|
|
|
@ -1305,10 +1305,10 @@ static void dce_v8_0_audio_write_sad_regs(struct drm_encoder *encoder)
|
|||
}
|
||||
|
||||
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++) {
|
||||
|
|
|
@ -97,11 +97,10 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
|
|||
(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) {
|
||||
|
|
Loading…
Reference in New Issue