Message ID | 770d095c93274969c4b86480e07044e16a7b5760.1652097712.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/edid: introduce struct drm_edid | expand |
LGTM Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Regards, Ankit On 5/9/2022 5:33 PM, Jani Nikula wrote: > We'll need to propagate drm_edid everywhere.' > > v2: Handle NULL EDID pointer (Ville, CI) > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/drm_edid.c | 37 +++++++++++++++++++++++-------------- > 1 file changed, 23 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index dee09359bbc3..5cc851f6d3b3 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -5025,25 +5025,14 @@ int drm_edid_to_sad(const struct edid *edid, struct cea_sad **sads) > } > EXPORT_SYMBOL(drm_edid_to_sad); > > -/** > - * drm_edid_to_speaker_allocation - extracts Speaker Allocation Data Blocks from EDID > - * @edid: EDID to parse > - * @sadb: pointer to the speaker block > - * > - * Looks for CEA EDID block and extracts the Speaker Allocation Data Block from it. > - * > - * Note: The returned pointer needs to be freed using kfree(). > - * > - * Return: The number of found Speaker Allocation Blocks or negative number on > - * error. > - */ > -int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb) > +static int _drm_edid_to_speaker_allocation(const struct drm_edid *drm_edid, > + u8 **sadb) > { > const struct cea_db *db; > struct cea_db_iter iter; > int count = 0; > > - cea_db_iter_edid_begin(edid, &iter); > + cea_db_iter_edid_begin(drm_edid ? drm_edid->edid : NULL, &iter); > cea_db_iter_for_each(db, &iter) { > if (cea_db_tag(db) == CTA_DB_SPEAKER && > cea_db_payload_len(db) == 3) { > @@ -5061,6 +5050,26 @@ int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb) > > return count; > } > + > +/** > + * drm_edid_to_speaker_allocation - extracts Speaker Allocation Data Blocks from EDID > + * @edid: EDID to parse > + * @sadb: pointer to the speaker block > + * > + * Looks for CEA EDID block and extracts the Speaker Allocation Data Block from it. > + * > + * Note: The returned pointer needs to be freed using kfree(). > + * > + * Return: The number of found Speaker Allocation Blocks or negative number on > + * error. > + */ > +int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb) > +{ > + struct drm_edid drm_edid; > + > + return _drm_edid_to_speaker_allocation(drm_edid_legacy_init(&drm_edid, edid), > + sadb); > +} > EXPORT_SYMBOL(drm_edid_to_speaker_allocation); > > /**
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index dee09359bbc3..5cc851f6d3b3 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -5025,25 +5025,14 @@ int drm_edid_to_sad(const struct edid *edid, struct cea_sad **sads) } EXPORT_SYMBOL(drm_edid_to_sad); -/** - * drm_edid_to_speaker_allocation - extracts Speaker Allocation Data Blocks from EDID - * @edid: EDID to parse - * @sadb: pointer to the speaker block - * - * Looks for CEA EDID block and extracts the Speaker Allocation Data Block from it. - * - * Note: The returned pointer needs to be freed using kfree(). - * - * Return: The number of found Speaker Allocation Blocks or negative number on - * error. - */ -int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb) +static int _drm_edid_to_speaker_allocation(const struct drm_edid *drm_edid, + u8 **sadb) { const struct cea_db *db; struct cea_db_iter iter; int count = 0; - cea_db_iter_edid_begin(edid, &iter); + cea_db_iter_edid_begin(drm_edid ? drm_edid->edid : NULL, &iter); cea_db_iter_for_each(db, &iter) { if (cea_db_tag(db) == CTA_DB_SPEAKER && cea_db_payload_len(db) == 3) { @@ -5061,6 +5050,26 @@ int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb) return count; } + +/** + * drm_edid_to_speaker_allocation - extracts Speaker Allocation Data Blocks from EDID + * @edid: EDID to parse + * @sadb: pointer to the speaker block + * + * Looks for CEA EDID block and extracts the Speaker Allocation Data Block from it. + * + * Note: The returned pointer needs to be freed using kfree(). + * + * Return: The number of found Speaker Allocation Blocks or negative number on + * error. + */ +int drm_edid_to_speaker_allocation(const struct edid *edid, u8 **sadb) +{ + struct drm_edid drm_edid; + + return _drm_edid_to_speaker_allocation(drm_edid_legacy_init(&drm_edid, edid), + sadb); +} EXPORT_SYMBOL(drm_edid_to_speaker_allocation); /**
We'll need to propagate drm_edid everywhere.' v2: Handle NULL EDID pointer (Ville, CI) Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/drm_edid.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-)