OSDN Git Service

drm/i915/dp: Reuse intel_hdmi_tmds_clock()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 15 Oct 2021 13:39:09 +0000 (16:39 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 11 Feb 2022 20:36:00 +0000 (22:36 +0200)
Reuse intel_hdmi_tmds_clock() for DP->HDMI TMDS clock calculations.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211015133921.4609-9-ville.syrjala@linux.intel.com
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
drivers/gpu/drm/i915/display/intel_dp.c
drivers/gpu/drm/i915/display/intel_hdmi.c
drivers/gpu/drm/i915/display/intel_hdmi.h

index 194526b..e3f576a 100644 (file)
@@ -886,9 +886,8 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
                return MODE_CLOCK_HIGH;
 
        /* Assume 8bpc for the DP++/HDMI/DVI TMDS clock check */
-       tmds_clock = target_clock;
-       if (drm_mode_is_420_only(info, mode))
-               tmds_clock /= 2;
+       tmds_clock = intel_hdmi_tmds_clock(target_clock, 8,
+                                          drm_mode_is_420_only(info, mode));
 
        if (intel_dp->dfp.min_tmds_clock &&
            tmds_clock < intel_dp->dfp.min_tmds_clock)
@@ -1139,21 +1138,12 @@ static bool intel_dp_hdmi_ycbcr420(struct intel_dp *intel_dp,
                 intel_dp->dfp.ycbcr_444_to_420);
 }
 
-static int intel_dp_hdmi_tmds_clock(struct intel_dp *intel_dp,
-                                   const struct intel_crtc_state *crtc_state, int bpc)
-{
-       int clock = crtc_state->hw.adjusted_mode.crtc_clock * bpc / 8;
-
-       if (intel_dp_hdmi_ycbcr420(intel_dp, crtc_state))
-               clock /= 2;
-
-       return clock;
-}
-
 static bool intel_dp_hdmi_tmds_clock_valid(struct intel_dp *intel_dp,
                                           const struct intel_crtc_state *crtc_state, int bpc)
 {
-       int tmds_clock = intel_dp_hdmi_tmds_clock(intel_dp, crtc_state, bpc);
+       int clock = crtc_state->hw.adjusted_mode.crtc_clock;
+       int tmds_clock = intel_hdmi_tmds_clock(clock, bpc,
+                                              intel_dp_hdmi_ycbcr420(intel_dp, crtc_state));
 
        if (intel_dp->dfp.min_tmds_clock &&
            tmds_clock < intel_dp->dfp.min_tmds_clock)
index 59c66e0..347ff8a 100644 (file)
@@ -1869,7 +1869,7 @@ hdmi_port_clock_valid(struct intel_hdmi *hdmi,
        return MODE_OK;
 }
 
-static int intel_hdmi_tmds_clock(int clock, int bpc, bool ycbcr420_output)
+int intel_hdmi_tmds_clock(int clock, int bpc, bool ycbcr420_output)
 {
        /* YCBCR420 TMDS rate requirement is half the pixel clock */
        if (ycbcr420_output)
index b0804b8..93f65a9 100644 (file)
@@ -46,6 +46,7 @@ bool intel_hdmi_limited_color_range(const struct intel_crtc_state *crtc_state,
                                    const struct drm_connector_state *conn_state);
 bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
                             int bpc, bool has_hdmi_sink, bool ycbcr420_output);
+int intel_hdmi_tmds_clock(int clock, int bpc, bool ycbcr420_output);
 int intel_hdmi_dsc_get_bpp(int src_fractional_bpp, int slice_width,
                           int num_slices, int output_format, bool hdmi_all_bpp,
                           int hdmi_max_chunk_bytes);