[PATCH v4 09/11] drm/amd/display: get SAD from drm_eld when parsing EDID caps
Alex Hung
alex.hung at amd.com
Mon Jul 29 13:27:58 UTC 2024
On 2024-07-28 20:02, Melissa Wen wrote:
> On 07/25, Alex Hung wrote:
>>
>>
>> On 2024-07-05 21:35, Melissa Wen wrote:
>>> instead of parsing struct edid.
>>
>> A more informative commit message will be helpful.
>
> sure. I'll improve it in the next version.
A soft reminder - a few other patches need improved commit messages too.
>>
>>>
>>> Signed-off-by: Melissa Wen <mwen at igalia.com>
>>> ---
>>> .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 17 +++++++++--------
>>> 1 file changed, 9 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
>>> index 7657b1051c54..45c04de08c65 100644
>>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
>>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
>>> @@ -97,7 +97,6 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
>>> const struct drm_edid *drm_edid = aconnector->drm_edid;
>>> struct drm_edid_product_id product_id;
>>> struct edid *edid_buf = edid ? (struct edid *) edid->raw_edid : NULL;
>>> - struct cea_sad *sads;
>>> int sad_count, sadb_count;
>>> int i = 0;
>>> uint8_t *sadb = NULL;
>>> @@ -127,18 +126,21 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
>>> apply_edid_quirks(&product_id, edid_caps);
>>> - sad_count = drm_edid_to_sad((struct edid *) edid->raw_edid, &sads);
>>> + sad_count = drm_eld_sad_count(connector->eld);
>>> if (sad_count <= 0)
>>> return result;
>>> edid_caps->audio_mode_count = min(sad_count, DC_MAX_AUDIO_DESC_COUNT);
>>> for (i = 0; i < edid_caps->audio_mode_count; ++i) {
>>> - struct cea_sad *sad = &sads[i];
>>> + struct cea_sad sad;
>>> - edid_caps->audio_modes[i].format_code = sad->format;
>>> - edid_caps->audio_modes[i].channel_count = sad->channels + 1;
>>> - edid_caps->audio_modes[i].sample_rate = sad->freq;
>>> - edid_caps->audio_modes[i].sample_size = sad->byte2;
>>> + if (drm_eld_sad_get(connector->eld, i, &sad) < 0)
>>> + continue;
>>> +
>>> + edid_caps->audio_modes[i].format_code = sad.format;
>>> + edid_caps->audio_modes[i].channel_count = sad.channels + 1;
>>> + edid_caps->audio_modes[i].sample_rate = sad.freq;
>>> + edid_caps->audio_modes[i].sample_size = sad.byte2;
>>> }
>>> sadb_count = drm_edid_to_speaker_allocation((struct edid *) edid->raw_edid, &sadb);
>>> @@ -153,7 +155,6 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
>>> else
>>> edid_caps->speaker_flags = DEFAULT_SPEAKER_LOCATION;
>>> - kfree(sads);
>>> kfree(sadb);
>>> return result;
More information about the dri-devel
mailing list