drm: Add helper to compare edids.
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@intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200630002700.5451-2-kunal1.joshi@intel.com
This commit is contained in:

committed by
Maarten Lankhorst

parent
e9d636ab77
commit
536faa450e
@@ -1615,6 +1615,39 @@ static bool drm_edid_is_zero(const u8 *in_edid, int length)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
bool drm_edid_are_equal(const struct edid *edid1, const 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)
|
* drm_edid_block_valid - Sanity check the EDID block (base or extension)
|
||||||
* @raw_edid: pointer to raw EDID block
|
* @raw_edid: pointer to raw EDID block
|
||||||
|
@@ -359,6 +359,15 @@ drm_load_edid_firmware(struct drm_connector *connector)
|
|||||||
}
|
}
|
||||||
#endif
|
#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.
|
||||||
|
*/
|
||||||
|
bool drm_edid_are_equal(const struct edid *edid1, const struct edid *edid2);
|
||||||
|
|
||||||
int
|
int
|
||||||
drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
|
drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
|
||||||
const struct drm_connector *connector,
|
const struct drm_connector *connector,
|
||||||
|
Reference in New Issue
Block a user