[PATCH v4 09/11] drm/amd/display: get SAD from drm_eld when parsing EDID caps
Melissa Wen
mwen at igalia.com
Mon Jul 29 02:02:20 UTC 2024
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.
>
> >
> > 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