On 2019-06-28 at 11:24:52 +0300, Stanislav Lisovskiy wrote: > Many drivers would benefit from using > drm helper to compare edid, rather > than bothering with own implementation. > > v2: Added documentation for this function. > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > --- > drivers/gpu/drm/drm_edid.c | 33 +++++++++++++++++++++++++++++++++ > include/drm/drm_edid.h | 9 +++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 9d8f2b952004..eaad5155fbdd 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -1361,6 +1361,39 @@ static bool drm_edid_is_zero(const u8 *in_edid, int length) > return true; > } > > +/** > + * drm_edid_are_equal - compare two edid blobs. > + * @edid1: pointer to first blob > + * @edid2: pointer to second blob extra line here is preferred. > + * This helper can be used during probing to determine if > + * edid had changed. bool is implicit. if you want you can explain the return value. > + */ > +bool drm_edid_are_equal(struct edid *edid1, struct edid *edid2) > +{ > + int edid1_len, edid2_len; > + bool edid1_present = edid1 != NULL; > + bool edid2_present = edid2 != NULL; > + > + if (edid1_present != edid2_present) > + return false; > + > + if (edid1) { > + > + edid1_len = EDID_LENGTH * (1 + edid1->extensions); > + edid2_len = EDID_LENGTH * (1 + edid2->extensions); > + > + if (edid1_len != edid2_len) > + return false; > + > + if (memcmp(edid1, edid2, edid1_len)) > + return false; > + } > + > + return true; > +} > +EXPORT_SYMBOL(drm_edid_are_equal); > + > + > /** > * drm_edid_block_valid - Sanity check the EDID block (base or extension) > * @raw_edid: pointer to raw EDID block > diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h > index b9719418c3d2..716964f63312 100644 > --- a/include/drm/drm_edid.h > +++ b/include/drm/drm_edid.h > @@ -354,6 +354,15 @@ drm_load_edid_firmware(struct drm_connector *connector) > } > #endif > > +/** > + * drm_edid_are_equal - compare two edid blobs. > + * @edid1: pointer to first blob > + * @edid2: pointer to second blob > + * This helper can be used during probing to determine if > + * edid had changed. > + */ Do we need kdoc for function declaration too!? Should be sufficient for definition alone. -Ram > +bool drm_edid_are_equal(struct edid *edid1, struct edid *edid2); > + > int > drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame, > struct drm_connector *connector, > -- > 2.17.1 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel