UPSTREAM: drm/edid: check for HF-VSDB block
authorThierry Reding <treding@nvidia.com>
Mon, 13 Mar 2017 11:24:00 +0000 (16:54 +0530)
committerJianqun Xu <jay.xu@rock-chips.com>
Tue, 27 Jun 2017 09:01:51 +0000 (17:01 +0800)
This patch implements a small function that finds if a
given CEA db is hdmi-forum vendor specific data block
or not.

V2: Rebase.
V3: Added R-B from Jose.
V4: Rebase
V5: Rebase
V6: Rebase
V7: Rebase
V8: Rebase
V9: Rebase
V10: Rebase

Change-Id: Ie787aa71b17a5aad6b30722872e9befe79803baa
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
Reviewed-by: Jose Abreu <joabreu@synopsys.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1489404244-16608-3-git-send-email-shashank.sharma@intel.com
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
(cherry picked from commit 50dd1bd1e2395a78e5adfad96487092e215483e0)

drivers/gpu/drm/drm_edid.c
include/linux/hdmi.h

index 2de0d69deaf2532c490889ae0a10d50589d93df3..2041e993902e9ac5d3e6485355fb6c92a14b11ec 100644 (file)
@@ -3503,6 +3503,21 @@ static bool cea_db_is_hdmi_vcb420(const u8 *db)
        return true;
 }
 
+static bool cea_db_is_hdmi_forum_vsdb(const u8 *db)
+{
+       unsigned int oui;
+
+       if (cea_db_tag(db) != VENDOR_BLOCK)
+               return false;
+
+       if (cea_db_payload_len(db) < 7)
+               return false;
+
+       oui = db[3] << 16 | db[2] << 8 | db[1];
+
+       return oui == HDMI_FORUM_IEEE_OUI;
+}
+
 #define for_each_cea_db(cea, i, start, end) \
        for ((i) = (start); (i) < (end) && (i) + cea_db_payload_len(&(cea)[(i)]) < (end); (i) += cea_db_payload_len(&(cea)[(i)]) + 1)
 
index bc38b99a9fc9615955749af1ad644ec293313e8c..2e6849f494f0fd17910d42e36d6e6d53f5566a36 100644 (file)
@@ -35,6 +35,7 @@ enum hdmi_infoframe_type {
 };
 
 #define HDMI_IEEE_OUI 0x000c03
+#define HDMI_FORUM_IEEE_OUI 0xc45dd8
 #define HDMI_IEEE_OUI_HF       0xc45dd8
 #define HDMI_INFOFRAME_HEADER_SIZE  4
 #define HDMI_AVI_INFOFRAME_SIZE    13