drm/i915/display: Extend DP HDR support to hsw+
authorUma Shankar <uma.shankar@intel.com>
Thu, 24 Mar 2022 12:04:38 +0000 (17:34 +0530)
committerUma Shankar <uma.shankar@intel.com>
Mon, 28 Mar 2022 16:42:58 +0000 (22:12 +0530)
HSW+ platforms are able to send out HDR Metadata SDP DIP
packet as GMP. Hence, extending the support for HDR on DP
encoders for the same.

v2: Limited to non eDP ports on hsw/bdw and removed it for
lspcon as it is done separately (suggested by Ville)

v3: Added helper and limited eDP restriction to port A (Ville)

v4: Dropped some redundant checks (Ville)

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5389
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220324120438.1876445-1-uma.shankar@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index 5e6b134aaa15f5e35f2a5ccb1cc7f6a14e10bd68..6b6dc382be56cf1e49f574667525ec5cd37e7adf 100644 (file)
@@ -4887,6 +4887,25 @@ bool intel_dp_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
        return intel_bios_is_port_edp(dev_priv, port);
 }
 
+static bool
+has_gamut_metadata_dip(struct drm_i915_private *i915, enum port port)
+{
+       if (intel_bios_is_lspcon_present(i915, port))
+               return false;
+
+       if (DISPLAY_VER(i915) >= 11)
+               return true;
+
+       if (port == PORT_A)
+               return false;
+
+       if (IS_HASWELL(i915) || IS_BROADWELL(i915) ||
+           DISPLAY_VER(i915) >= 9)
+               return true;
+
+       return false;
+}
+
 static void
 intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector)
 {
@@ -4913,7 +4932,7 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
                intel_attach_dp_colorspace_property(connector);
        }
 
-       if (IS_GEMINILAKE(dev_priv) || DISPLAY_VER(dev_priv) >= 11)
+       if (has_gamut_metadata_dip(dev_priv, port))
                drm_object_attach_property(&connector->base,
                                           connector->dev->mode_config.hdr_output_metadata_property,
                                           0);