{
        struct drm_i915_private *i915 = to_i915(connector->dev);
        struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector));
+       struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
+       struct intel_lspcon *lspcon = &dig_port->lspcon;
        int ret;
 
        ret = intel_connector_register(connector);
        ret = drm_dp_aux_register(&intel_dp->aux);
        if (!ret)
                drm_dp_cec_register_connector(&intel_dp->aux, connector);
+
+       if (!intel_bios_is_lspcon_present(i915, dig_port->base.port))
+               return ret;
+
+       /*
+        * ToDo: Clean this up to handle lspcon init and resume more
+        * efficiently and streamlined.
+        */
+       if (lspcon_init(dig_port)) {
+               lspcon_detect_hdr_capability(lspcon);
+               if (lspcon->hdr_supported)
+                       drm_object_attach_property(&connector->base,
+                                                  connector->dev->mode_config.hdr_output_metadata_property,
+                                                  0);
+       }
+
        return ret;
 }
 
 
        lspcon_wait_mode(lspcon, DRM_LSPCON_MODE_PCON);
 }
 
-static bool lspcon_init(struct intel_digital_port *dig_port)
+bool lspcon_init(struct intel_digital_port *dig_port)
 {
        struct intel_dp *dp = &dig_port->dp;
        struct intel_lspcon *lspcon = &dig_port->lspcon;
 
 struct intel_encoder;
 struct intel_lspcon;
 
+bool lspcon_init(struct intel_digital_port *dig_port);
 void lspcon_detect_hdr_capability(struct intel_lspcon *lspcon);
 void lspcon_resume(struct intel_digital_port *dig_port);
 void lspcon_wait_pcon_mode(struct intel_lspcon *lspcon);