depends on DRM && PCI && MMU
        select FW_LOADER
        select DRM_DISPLAY_DP_HELPER
+       select DRM_DISPLAY_HDMI_HELPER
        select DRM_DISPLAY_HELPER
        select DRM_KMS_HELPER
        select DRM_SCHED
 
 #include <linux/component.h>
 
 #include <drm/display/drm_dp_mst_helper.h>
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_uapi.h>
 #include <drm/drm_atomic_helper.h>
 
 # SPDX-License-Identifier: GPL-2.0-only
 config DRM_DW_HDMI
        tristate
+       select DRM_DISPLAY_HDMI_HELPER
+       select DRM_DISPLAY_HELPER
        select DRM_KMS_HELPER
        select REGMAP_MMIO
        select CEC_CORE if CEC_NOTIFIER
 
 #include <uapi/linux/videodev2.h>
 
 #include <drm/bridge/dw_hdmi.h>
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_bridge.h>
-#include <drm/drm_edid.h>
 #include <drm/drm_of.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
 
        help
          DRM display helpers for HDCP.
 
+config DRM_DISPLAY_HDMI_HELPER
+       bool
+       depends on DRM_DISPLAY_HELPER
+       help
+         DRM display helpers for HDMI.
+
 config DRM_DP_AUX_CHARDEV
        bool "DRM DP AUX Interface"
        depends on DRM
 
                                                      drm_dp_mst_topology.o \
                                                      drm_dsc_helper.o
 drm_display_helper-$(CONFIG_DRM_DISPLAY_HDCP_HELPER) += drm_hdcp_helper.o
+drm_display_helper-$(CONFIG_DRM_DISPLAY_HDMI_HELPER) += drm_hdmi_helper.o
 drm_display_helper-$(CONFIG_DRM_DP_AUX_CHARDEV) += drm_dp_aux_dev.o
 drm_display_helper-$(CONFIG_DRM_DP_CEC) += drm_dp_cec.o
 
 
--- /dev/null
+// SPDX-License-Identifier: MIT
+
+#include <linux/module.h>
+
+#include <drm/display/drm_hdmi_helper.h>
+#include <drm/drm_connector.h>
+#include <drm/drm_edid.h>
+#include <drm/drm_modes.h>
+#include <drm/drm_print.h>
+#include <drm/drm_property.h>
+
+static inline bool is_eotf_supported(u8 output_eotf, u8 sink_eotf)
+{
+       return sink_eotf & BIT(output_eotf);
+}
+
+/**
+ * drm_hdmi_infoframe_set_hdr_metadata() - fill an HDMI DRM infoframe with
+ *                                         HDR metadata from userspace
+ * @frame: HDMI DRM infoframe
+ * @conn_state: Connector state containing HDR metadata
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
+                                       const struct drm_connector_state *conn_state)
+{
+       struct drm_connector *connector;
+       struct hdr_output_metadata *hdr_metadata;
+       int err;
+
+       if (!frame || !conn_state)
+               return -EINVAL;
+
+       connector = conn_state->connector;
+
+       if (!conn_state->hdr_output_metadata)
+               return -EINVAL;
+
+       hdr_metadata = conn_state->hdr_output_metadata->data;
+
+       if (!hdr_metadata || !connector)
+               return -EINVAL;
+
+       /* Sink EOTF is Bit map while infoframe is absolute values */
+       if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
+           connector->hdr_sink_metadata.hdmi_type1.eotf)) {
+               DRM_DEBUG_KMS("EOTF Not Supported\n");
+               return -EINVAL;
+       }
+
+       err = hdmi_drm_infoframe_init(frame);
+       if (err < 0)
+               return err;
+
+       frame->eotf = hdr_metadata->hdmi_metadata_type1.eotf;
+       frame->metadata_type = hdr_metadata->hdmi_metadata_type1.metadata_type;
+
+       BUILD_BUG_ON(sizeof(frame->display_primaries) !=
+                    sizeof(hdr_metadata->hdmi_metadata_type1.display_primaries));
+       BUILD_BUG_ON(sizeof(frame->white_point) !=
+                    sizeof(hdr_metadata->hdmi_metadata_type1.white_point));
+
+       memcpy(&frame->display_primaries,
+              &hdr_metadata->hdmi_metadata_type1.display_primaries,
+              sizeof(frame->display_primaries));
+
+       memcpy(&frame->white_point,
+              &hdr_metadata->hdmi_metadata_type1.white_point,
+              sizeof(frame->white_point));
+
+       frame->max_display_mastering_luminance =
+               hdr_metadata->hdmi_metadata_type1.max_display_mastering_luminance;
+       frame->min_display_mastering_luminance =
+               hdr_metadata->hdmi_metadata_type1.min_display_mastering_luminance;
+       frame->max_fall = hdr_metadata->hdmi_metadata_type1.max_fall;
+       frame->max_cll = hdr_metadata->hdmi_metadata_type1.max_cll;
+
+       return 0;
+}
+EXPORT_SYMBOL(drm_hdmi_infoframe_set_hdr_metadata);
+
+/* HDMI Colorspace Spec Definitions */
+#define FULL_COLORIMETRY_MASK          0x1FF
+#define NORMAL_COLORIMETRY_MASK                0x3
+#define EXTENDED_COLORIMETRY_MASK      0x7
+#define EXTENDED_ACE_COLORIMETRY_MASK  0xF
+
+#define C(x) ((x) << 0)
+#define EC(x) ((x) << 2)
+#define ACE(x) ((x) << 5)
+
+#define HDMI_COLORIMETRY_NO_DATA               0x0
+#define HDMI_COLORIMETRY_SMPTE_170M_YCC                (C(1) | EC(0) | ACE(0))
+#define HDMI_COLORIMETRY_BT709_YCC             (C(2) | EC(0) | ACE(0))
+#define HDMI_COLORIMETRY_XVYCC_601             (C(3) | EC(0) | ACE(0))
+#define HDMI_COLORIMETRY_XVYCC_709             (C(3) | EC(1) | ACE(0))
+#define HDMI_COLORIMETRY_SYCC_601              (C(3) | EC(2) | ACE(0))
+#define HDMI_COLORIMETRY_OPYCC_601             (C(3) | EC(3) | ACE(0))
+#define HDMI_COLORIMETRY_OPRGB                 (C(3) | EC(4) | ACE(0))
+#define HDMI_COLORIMETRY_BT2020_CYCC           (C(3) | EC(5) | ACE(0))
+#define HDMI_COLORIMETRY_BT2020_RGB            (C(3) | EC(6) | ACE(0))
+#define HDMI_COLORIMETRY_BT2020_YCC            (C(3) | EC(6) | ACE(0))
+#define HDMI_COLORIMETRY_DCI_P3_RGB_D65                (C(3) | EC(7) | ACE(0))
+#define HDMI_COLORIMETRY_DCI_P3_RGB_THEATER    (C(3) | EC(7) | ACE(1))
+
+static const u32 hdmi_colorimetry_val[] = {
+       [DRM_MODE_COLORIMETRY_NO_DATA] = HDMI_COLORIMETRY_NO_DATA,
+       [DRM_MODE_COLORIMETRY_SMPTE_170M_YCC] = HDMI_COLORIMETRY_SMPTE_170M_YCC,
+       [DRM_MODE_COLORIMETRY_BT709_YCC] = HDMI_COLORIMETRY_BT709_YCC,
+       [DRM_MODE_COLORIMETRY_XVYCC_601] = HDMI_COLORIMETRY_XVYCC_601,
+       [DRM_MODE_COLORIMETRY_XVYCC_709] = HDMI_COLORIMETRY_XVYCC_709,
+       [DRM_MODE_COLORIMETRY_SYCC_601] = HDMI_COLORIMETRY_SYCC_601,
+       [DRM_MODE_COLORIMETRY_OPYCC_601] = HDMI_COLORIMETRY_OPYCC_601,
+       [DRM_MODE_COLORIMETRY_OPRGB] = HDMI_COLORIMETRY_OPRGB,
+       [DRM_MODE_COLORIMETRY_BT2020_CYCC] = HDMI_COLORIMETRY_BT2020_CYCC,
+       [DRM_MODE_COLORIMETRY_BT2020_RGB] = HDMI_COLORIMETRY_BT2020_RGB,
+       [DRM_MODE_COLORIMETRY_BT2020_YCC] = HDMI_COLORIMETRY_BT2020_YCC,
+};
+
+#undef C
+#undef EC
+#undef ACE
+
+/**
+ * drm_hdmi_avi_infoframe_colorimetry() - fill the HDMI AVI infoframe
+ *                                       colorimetry information
+ * @frame: HDMI AVI infoframe
+ * @conn_state: connector state
+ */
+void drm_hdmi_avi_infoframe_colorimetry(struct hdmi_avi_infoframe *frame,
+                                       const struct drm_connector_state *conn_state)
+{
+       u32 colorimetry_val;
+       u32 colorimetry_index = conn_state->colorspace & FULL_COLORIMETRY_MASK;
+
+       if (colorimetry_index >= ARRAY_SIZE(hdmi_colorimetry_val))
+               colorimetry_val = HDMI_COLORIMETRY_NO_DATA;
+       else
+               colorimetry_val = hdmi_colorimetry_val[colorimetry_index];
+
+       frame->colorimetry = colorimetry_val & NORMAL_COLORIMETRY_MASK;
+       /*
+        * ToDo: Extend it for ACE formats as well. Modify the infoframe
+        * structure and extend it in drivers/video/hdmi
+        */
+       frame->extended_colorimetry = (colorimetry_val >> 2) &
+                                       EXTENDED_COLORIMETRY_MASK;
+}
+EXPORT_SYMBOL(drm_hdmi_avi_infoframe_colorimetry);
+
+/**
+ * drm_hdmi_avi_infoframe_bars() - fill the HDMI AVI infoframe
+ *                                 bar information
+ * @frame: HDMI AVI infoframe
+ * @conn_state: connector state
+ */
+void drm_hdmi_avi_infoframe_bars(struct hdmi_avi_infoframe *frame,
+                                const struct drm_connector_state *conn_state)
+{
+       frame->right_bar = conn_state->tv.margins.right;
+       frame->left_bar = conn_state->tv.margins.left;
+       frame->top_bar = conn_state->tv.margins.top;
+       frame->bottom_bar = conn_state->tv.margins.bottom;
+}
+EXPORT_SYMBOL(drm_hdmi_avi_infoframe_bars);
+
+/**
+ * drm_hdmi_avi_infoframe_content_type() - fill the HDMI AVI infoframe
+ *                                         content type information, based
+ *                                         on correspondent DRM property.
+ * @frame: HDMI AVI infoframe
+ * @conn_state: DRM display connector state
+ *
+ */
+void drm_hdmi_avi_infoframe_content_type(struct hdmi_avi_infoframe *frame,
+                                        const struct drm_connector_state *conn_state)
+{
+       switch (conn_state->content_type) {
+       case DRM_MODE_CONTENT_TYPE_GRAPHICS:
+               frame->content_type = HDMI_CONTENT_TYPE_GRAPHICS;
+               break;
+       case DRM_MODE_CONTENT_TYPE_CINEMA:
+               frame->content_type = HDMI_CONTENT_TYPE_CINEMA;
+               break;
+       case DRM_MODE_CONTENT_TYPE_GAME:
+               frame->content_type = HDMI_CONTENT_TYPE_GAME;
+               break;
+       case DRM_MODE_CONTENT_TYPE_PHOTO:
+               frame->content_type = HDMI_CONTENT_TYPE_PHOTO;
+               break;
+       default:
+               /* Graphics is the default(0) */
+               frame->content_type = HDMI_CONTENT_TYPE_GRAPHICS;
+       }
+
+       frame->itc = conn_state->content_type != DRM_MODE_CONTENT_TYPE_NO_DATA;
+}
+EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type);
 
 }
 EXPORT_SYMBOL(drm_connector_attach_content_type_property);
 
-
-/**
- * drm_hdmi_avi_infoframe_content_type() - fill the HDMI AVI infoframe
- *                                         content type information, based
- *                                         on correspondent DRM property.
- * @frame: HDMI AVI infoframe
- * @conn_state: DRM display connector state
- *
- */
-void drm_hdmi_avi_infoframe_content_type(struct hdmi_avi_infoframe *frame,
-                                        const struct drm_connector_state *conn_state)
-{
-       switch (conn_state->content_type) {
-       case DRM_MODE_CONTENT_TYPE_GRAPHICS:
-               frame->content_type = HDMI_CONTENT_TYPE_GRAPHICS;
-               break;
-       case DRM_MODE_CONTENT_TYPE_CINEMA:
-               frame->content_type = HDMI_CONTENT_TYPE_CINEMA;
-               break;
-       case DRM_MODE_CONTENT_TYPE_GAME:
-               frame->content_type = HDMI_CONTENT_TYPE_GAME;
-               break;
-       case DRM_MODE_CONTENT_TYPE_PHOTO:
-               frame->content_type = HDMI_CONTENT_TYPE_PHOTO;
-               break;
-       default:
-               /* Graphics is the default(0) */
-               frame->content_type = HDMI_CONTENT_TYPE_GRAPHICS;
-       }
-
-       frame->itc = conn_state->content_type != DRM_MODE_CONTENT_TYPE_NO_DATA;
-}
-EXPORT_SYMBOL(drm_hdmi_avi_infoframe_content_type);
-
 /**
  * drm_connector_attach_tv_margin_properties - attach TV connector margin
  *     properties
 
                connector->display_info.color_formats & DRM_COLOR_FORMAT_YCBCR420;
 }
 
-static inline bool is_eotf_supported(u8 output_eotf, u8 sink_eotf)
-{
-       return sink_eotf & BIT(output_eotf);
-}
-
-/**
- * drm_hdmi_infoframe_set_hdr_metadata() - fill an HDMI DRM infoframe with
- *                                         HDR metadata from userspace
- * @frame: HDMI DRM infoframe
- * @conn_state: Connector state containing HDR metadata
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int
-drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
-                                   const struct drm_connector_state *conn_state)
-{
-       struct drm_connector *connector;
-       struct hdr_output_metadata *hdr_metadata;
-       int err;
-
-       if (!frame || !conn_state)
-               return -EINVAL;
-
-       connector = conn_state->connector;
-
-       if (!conn_state->hdr_output_metadata)
-               return -EINVAL;
-
-       hdr_metadata = conn_state->hdr_output_metadata->data;
-
-       if (!hdr_metadata || !connector)
-               return -EINVAL;
-
-       /* Sink EOTF is Bit map while infoframe is absolute values */
-       if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
-           connector->hdr_sink_metadata.hdmi_type1.eotf)) {
-               DRM_DEBUG_KMS("EOTF Not Supported\n");
-               return -EINVAL;
-       }
-
-       err = hdmi_drm_infoframe_init(frame);
-       if (err < 0)
-               return err;
-
-       frame->eotf = hdr_metadata->hdmi_metadata_type1.eotf;
-       frame->metadata_type = hdr_metadata->hdmi_metadata_type1.metadata_type;
-
-       BUILD_BUG_ON(sizeof(frame->display_primaries) !=
-                    sizeof(hdr_metadata->hdmi_metadata_type1.display_primaries));
-       BUILD_BUG_ON(sizeof(frame->white_point) !=
-                    sizeof(hdr_metadata->hdmi_metadata_type1.white_point));
-
-       memcpy(&frame->display_primaries,
-              &hdr_metadata->hdmi_metadata_type1.display_primaries,
-              sizeof(frame->display_primaries));
-
-       memcpy(&frame->white_point,
-              &hdr_metadata->hdmi_metadata_type1.white_point,
-              sizeof(frame->white_point));
-
-       frame->max_display_mastering_luminance =
-               hdr_metadata->hdmi_metadata_type1.max_display_mastering_luminance;
-       frame->min_display_mastering_luminance =
-               hdr_metadata->hdmi_metadata_type1.min_display_mastering_luminance;
-       frame->max_fall = hdr_metadata->hdmi_metadata_type1.max_fall;
-       frame->max_cll = hdr_metadata->hdmi_metadata_type1.max_cll;
-
-       return 0;
-}
-EXPORT_SYMBOL(drm_hdmi_infoframe_set_hdr_metadata);
-
 static u8 drm_mode_hdmi_vic(const struct drm_connector *connector,
                            const struct drm_display_mode *mode)
 {
 }
 EXPORT_SYMBOL(drm_hdmi_avi_infoframe_from_display_mode);
 
-/* HDMI Colorspace Spec Definitions */
-#define FULL_COLORIMETRY_MASK          0x1FF
-#define NORMAL_COLORIMETRY_MASK                0x3
-#define EXTENDED_COLORIMETRY_MASK      0x7
-#define EXTENDED_ACE_COLORIMETRY_MASK  0xF
-
-#define C(x) ((x) << 0)
-#define EC(x) ((x) << 2)
-#define ACE(x) ((x) << 5)
-
-#define HDMI_COLORIMETRY_NO_DATA               0x0
-#define HDMI_COLORIMETRY_SMPTE_170M_YCC                (C(1) | EC(0) | ACE(0))
-#define HDMI_COLORIMETRY_BT709_YCC             (C(2) | EC(0) | ACE(0))
-#define HDMI_COLORIMETRY_XVYCC_601             (C(3) | EC(0) | ACE(0))
-#define HDMI_COLORIMETRY_XVYCC_709             (C(3) | EC(1) | ACE(0))
-#define HDMI_COLORIMETRY_SYCC_601              (C(3) | EC(2) | ACE(0))
-#define HDMI_COLORIMETRY_OPYCC_601             (C(3) | EC(3) | ACE(0))
-#define HDMI_COLORIMETRY_OPRGB                 (C(3) | EC(4) | ACE(0))
-#define HDMI_COLORIMETRY_BT2020_CYCC           (C(3) | EC(5) | ACE(0))
-#define HDMI_COLORIMETRY_BT2020_RGB            (C(3) | EC(6) | ACE(0))
-#define HDMI_COLORIMETRY_BT2020_YCC            (C(3) | EC(6) | ACE(0))
-#define HDMI_COLORIMETRY_DCI_P3_RGB_D65                (C(3) | EC(7) | ACE(0))
-#define HDMI_COLORIMETRY_DCI_P3_RGB_THEATER    (C(3) | EC(7) | ACE(1))
-
-static const u32 hdmi_colorimetry_val[] = {
-       [DRM_MODE_COLORIMETRY_NO_DATA] = HDMI_COLORIMETRY_NO_DATA,
-       [DRM_MODE_COLORIMETRY_SMPTE_170M_YCC] = HDMI_COLORIMETRY_SMPTE_170M_YCC,
-       [DRM_MODE_COLORIMETRY_BT709_YCC] = HDMI_COLORIMETRY_BT709_YCC,
-       [DRM_MODE_COLORIMETRY_XVYCC_601] = HDMI_COLORIMETRY_XVYCC_601,
-       [DRM_MODE_COLORIMETRY_XVYCC_709] = HDMI_COLORIMETRY_XVYCC_709,
-       [DRM_MODE_COLORIMETRY_SYCC_601] = HDMI_COLORIMETRY_SYCC_601,
-       [DRM_MODE_COLORIMETRY_OPYCC_601] = HDMI_COLORIMETRY_OPYCC_601,
-       [DRM_MODE_COLORIMETRY_OPRGB] = HDMI_COLORIMETRY_OPRGB,
-       [DRM_MODE_COLORIMETRY_BT2020_CYCC] = HDMI_COLORIMETRY_BT2020_CYCC,
-       [DRM_MODE_COLORIMETRY_BT2020_RGB] = HDMI_COLORIMETRY_BT2020_RGB,
-       [DRM_MODE_COLORIMETRY_BT2020_YCC] = HDMI_COLORIMETRY_BT2020_YCC,
-};
-
-#undef C
-#undef EC
-#undef ACE
-
-/**
- * drm_hdmi_avi_infoframe_colorimetry() - fill the HDMI AVI infoframe
- *                                       colorimetry information
- * @frame: HDMI AVI infoframe
- * @conn_state: connector state
- */
-void
-drm_hdmi_avi_infoframe_colorimetry(struct hdmi_avi_infoframe *frame,
-                                 const struct drm_connector_state *conn_state)
-{
-       u32 colorimetry_val;
-       u32 colorimetry_index = conn_state->colorspace & FULL_COLORIMETRY_MASK;
-
-       if (colorimetry_index >= ARRAY_SIZE(hdmi_colorimetry_val))
-               colorimetry_val = HDMI_COLORIMETRY_NO_DATA;
-       else
-               colorimetry_val = hdmi_colorimetry_val[colorimetry_index];
-
-       frame->colorimetry = colorimetry_val & NORMAL_COLORIMETRY_MASK;
-       /*
-        * ToDo: Extend it for ACE formats as well. Modify the infoframe
-        * structure and extend it in drivers/video/hdmi
-        */
-       frame->extended_colorimetry = (colorimetry_val >> 2) &
-                                       EXTENDED_COLORIMETRY_MASK;
-}
-EXPORT_SYMBOL(drm_hdmi_avi_infoframe_colorimetry);
-
 /**
  * drm_hdmi_avi_infoframe_quant_range() - fill the HDMI AVI infoframe
  *                                        quantization range information
 }
 EXPORT_SYMBOL(drm_hdmi_avi_infoframe_quant_range);
 
-/**
- * drm_hdmi_avi_infoframe_bars() - fill the HDMI AVI infoframe
- *                                 bar information
- * @frame: HDMI AVI infoframe
- * @conn_state: connector state
- */
-void
-drm_hdmi_avi_infoframe_bars(struct hdmi_avi_infoframe *frame,
-                           const struct drm_connector_state *conn_state)
-{
-       frame->right_bar = conn_state->tv.margins.right;
-       frame->left_bar = conn_state->tv.margins.left;
-       frame->top_bar = conn_state->tv.margins.top;
-       frame->bottom_bar = conn_state->tv.margins.bottom;
-}
-EXPORT_SYMBOL(drm_hdmi_avi_infoframe_bars);
-
 static enum hdmi_3d_structure
 s3d_structure_from_display_mode(const struct drm_display_mode *mode)
 {
 
        select TMPFS
        select DRM_DISPLAY_DP_HELPER
        select DRM_DISPLAY_HDCP_HELPER
+       select DRM_DISPLAY_HDMI_HELPER
        select DRM_DISPLAY_HELPER
        select DRM_KMS_HELPER
        select DRM_PANEL
 
 
 #include <drm/display/drm_dp_helper.h>
 #include <drm/display/drm_dsc_helper.h>
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
-#include <drm/drm_edid.h>
 #include <drm/drm_probe_helper.h>
 
 #include "g4x_dp.h"
 
 #include <linux/string_helpers.h>
 
 #include <drm/display/drm_hdcp_helper.h>
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_edid.h>
 
  */
 
 #include <drm/display/drm_dp_dual_mode_helper.h>
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic_helper.h>
-#include <drm/drm_edid.h>
 
 #include "intel_de.h"
 #include "intel_display_types.h"
 
 #include <linux/i2c.h>
 #include <linux/slab.h>
 
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_edid.h>
 
        depends on DRM
        depends on SND && SND_SOC
        depends on COMMON_CLK
+       select DRM_DISPLAY_HDMI_HELPER
+       select DRM_DISPLAY_HELPER
        select DRM_KMS_HELPER
        select DRM_GEM_CMA_HELPER
        select DRM_PANEL_BRIDGE
 
  * encoder block has CEC support.
  */
 
+#include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic_helper.h>
-#include <drm/drm_edid.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_simple_kms_helper.h>
 #include <drm/drm_scdc_helper.h>
 
--- /dev/null
+/* SPDX-License-Identifier: MIT */
+
+#ifndef DRM_HDMI_HELPER
+#define DRM_HDMI_HELPER
+
+#include <linux/hdmi.h>
+
+struct drm_connector;
+struct drm_connector_state;
+struct drm_display_mode;
+
+void
+drm_hdmi_avi_infoframe_colorimetry(struct hdmi_avi_infoframe *frame,
+                                  const struct drm_connector_state *conn_state);
+
+void
+drm_hdmi_avi_infoframe_bars(struct hdmi_avi_infoframe *frame,
+                           const struct drm_connector_state *conn_state);
+
+int
+drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
+                                   const struct drm_connector_state *conn_state);
+
+void drm_hdmi_avi_infoframe_content_type(struct hdmi_avi_infoframe *frame,
+                                        const struct drm_connector_state *conn_state);
+
+#endif
 
 int drm_mode_create_hdmi_colorspace_property(struct drm_connector *connector);
 int drm_mode_create_dp_colorspace_property(struct drm_connector *connector);
 int drm_mode_create_content_type_property(struct drm_device *dev);
-void drm_hdmi_avi_infoframe_content_type(struct hdmi_avi_infoframe *frame,
-                                        const struct drm_connector_state *conn_state);
-
 int drm_mode_create_suggested_offset_properties(struct drm_device *dev);
 
 int drm_connector_set_path_property(struct drm_connector *connector,
 
                                            const struct drm_connector *connector,
                                            const struct drm_display_mode *mode);
 
-void
-drm_hdmi_avi_infoframe_colorimetry(struct hdmi_avi_infoframe *frame,
-                                  const struct drm_connector_state *conn_state);
-
-void
-drm_hdmi_avi_infoframe_bars(struct hdmi_avi_infoframe *frame,
-                           const struct drm_connector_state *conn_state);
-
 void
 drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe *frame,
                                   const struct drm_connector *connector,
                                   const struct drm_display_mode *mode,
                                   enum hdmi_quantization_range rgb_quant_range);
 
-int
-drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
-                                   const struct drm_connector_state *conn_state);
-
 /**
  * drm_eld_mnl - Get ELD monitor name length in bytes.
  * @eld: pointer to an eld memory structure with mnl set