Message ID | c492b3887df42fa4166fb65ee10fa611c276cf98.1647985054.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/edid: overhaul CEA data block iteration | expand |
On Tue, Mar 22, 2022 at 11:40:30PM +0200, Jani Nikula wrote: > Add abstractions for getting the number of EDID extension blocks and the > total EDID size in bytes. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/drm_edid.c | 18 ++++++++++++++++++ > include/drm/drm_edid.h | 2 ++ > 2 files changed, 20 insertions(+) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 561f53831e29..f4b49693e666 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -2198,6 +2198,24 @@ struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, > } > EXPORT_SYMBOL(drm_get_edid_switcheroo); > > +/** > + * drm_edid_extension_block_count - get the number of EDID extension blocks > + */ > +u8 drm_edid_extension_block_count(const struct edid *edid) It's just a number, so could be 'int' IMO. Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > +{ > + return edid->extensions; > +} > +EXPORT_SYMBOL(drm_edid_extension_block_count); > + > +/** > + * drm_edid_size - get the EDID size in bytes > + */ > +size_t drm_edid_size(const struct edid *edid) > +{ > + return (drm_edid_extension_block_count(edid) + 1) * EDID_LENGTH; > +} > +EXPORT_SYMBOL(drm_edid_size); > + > /** > * drm_edid_duplicate - duplicate an EDID and the extensions > * @edid: EDID to duplicate > diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h > index 144c495b99c4..7a19daa00c0c 100644 > --- a/include/drm/drm_edid.h > +++ b/include/drm/drm_edid.h > @@ -564,6 +564,8 @@ struct edid *drm_get_edid(struct drm_connector *connector, > u32 drm_edid_get_panel_id(struct i2c_adapter *adapter); > struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, > struct i2c_adapter *adapter); > +u8 drm_edid_extension_block_count(const struct edid *edid); > +size_t drm_edid_size(const struct edid *edid); > struct edid *drm_edid_duplicate(const struct edid *edid); > int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); > int drm_add_override_edid_modes(struct drm_connector *connector); > -- > 2.30.2
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 561f53831e29..f4b49693e666 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2198,6 +2198,24 @@ struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, } EXPORT_SYMBOL(drm_get_edid_switcheroo); +/** + * drm_edid_extension_block_count - get the number of EDID extension blocks + */ +u8 drm_edid_extension_block_count(const struct edid *edid) +{ + return edid->extensions; +} +EXPORT_SYMBOL(drm_edid_extension_block_count); + +/** + * drm_edid_size - get the EDID size in bytes + */ +size_t drm_edid_size(const struct edid *edid) +{ + return (drm_edid_extension_block_count(edid) + 1) * EDID_LENGTH; +} +EXPORT_SYMBOL(drm_edid_size); + /** * drm_edid_duplicate - duplicate an EDID and the extensions * @edid: EDID to duplicate diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h index 144c495b99c4..7a19daa00c0c 100644 --- a/include/drm/drm_edid.h +++ b/include/drm/drm_edid.h @@ -564,6 +564,8 @@ struct edid *drm_get_edid(struct drm_connector *connector, u32 drm_edid_get_panel_id(struct i2c_adapter *adapter); struct edid *drm_get_edid_switcheroo(struct drm_connector *connector, struct i2c_adapter *adapter); +u8 drm_edid_extension_block_count(const struct edid *edid); +size_t drm_edid_size(const struct edid *edid); struct edid *drm_edid_duplicate(const struct edid *edid); int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); int drm_add_override_edid_modes(struct drm_connector *connector);
Add abstractions for getting the number of EDID extension blocks and the total EDID size in bytes. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/drm_edid.c | 18 ++++++++++++++++++ include/drm/drm_edid.h | 2 ++ 2 files changed, 20 insertions(+)