drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 16 Oct 2017 14:56:57 +0000 (17:56 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 19 Oct 2017 12:34:05 +0000 (15:34 +0300)
Introduce intel_ddi_get_buf_trans_hdmi() and start using it where we
can.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171016145705.11780-3-ville.syrjala@linux.intel.com
Reviewed-by: James Ausmus <james.ausmus@intel.com>
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
drivers/gpu/drm/i915/intel_ddi.c

index a6169ed..f0fcabf 100644 (file)
@@ -641,6 +641,24 @@ intel_ddi_get_buf_trans_fdi(struct drm_i915_private *dev_priv,
        return NULL;
 }
 
+static const struct ddi_buf_trans *
+intel_ddi_get_buf_trans_hdmi(struct drm_i915_private *dev_priv,
+                            int *n_entries)
+{
+       if (IS_GEN9_BC(dev_priv)) {
+               return skl_get_buf_trans_hdmi(dev_priv, n_entries);
+       } else if (IS_BROADWELL(dev_priv)) {
+               *n_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
+               return bdw_ddi_translations_hdmi;
+       } else if (IS_HASWELL(dev_priv)) {
+               *n_entries = ARRAY_SIZE(hsw_ddi_translations_hdmi);
+               return hsw_ddi_translations_hdmi;
+       }
+
+       *n_entries = 0;
+       return NULL;
+}
+
 static const struct cnl_ddi_buf_trans *
 cnl_get_buf_trans_hdmi(struct drm_i915_private *dev_priv, int *n_entries)
 {
@@ -723,18 +741,17 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por
                cnl_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
                hdmi_default_entry = n_hdmi_entries - 1;
        } else if (IS_GEN9_BC(dev_priv)) {
-               skl_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
+               intel_ddi_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
                hdmi_default_entry = 8;
        } else if (IS_BROADWELL(dev_priv)) {
-               n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
+               intel_ddi_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
                hdmi_default_entry = 7;
        } else if (IS_HASWELL(dev_priv)) {
-               n_hdmi_entries = ARRAY_SIZE(hsw_ddi_translations_hdmi);
+               intel_ddi_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
                hdmi_default_entry = 6;
        } else {
                WARN(1, "ddi translation table missing\n");
-               n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
-               hdmi_default_entry = 7;
+               return 0;
        }
 
        /* Choose a good default if VBT is badly populated */
@@ -810,23 +827,12 @@ static void intel_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder)
 
        hdmi_level = intel_ddi_hdmi_level(dev_priv, port);
 
-       if (IS_GEN9_BC(dev_priv)) {
-               ddi_translations_hdmi = skl_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
+       ddi_translations_hdmi = intel_ddi_get_buf_trans_hdmi(dev_priv, &n_hdmi_entries);
 
-               /* If we're boosting the current, set bit 31 of trans1 */
-               if (dev_priv->vbt.ddi_port_info[port].hdmi_boost_level)
-                       iboost_bit = DDI_BUF_BALANCE_LEG_ENABLE;
-       } else if (IS_BROADWELL(dev_priv)) {
-               ddi_translations_hdmi = bdw_ddi_translations_hdmi;
-               n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
-       } else if (IS_HASWELL(dev_priv)) {
-               ddi_translations_hdmi = hsw_ddi_translations_hdmi;
-               n_hdmi_entries = ARRAY_SIZE(hsw_ddi_translations_hdmi);
-       } else {
-               WARN(1, "ddi translation table missing\n");
-               ddi_translations_hdmi = bdw_ddi_translations_hdmi;
-               n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
-       }
+       /* If we're boosting the current, set bit 31 of trans1 */
+       if (IS_GEN9_BC(dev_priv) &&
+           dev_priv->vbt.ddi_port_info[port].hdmi_boost_level)
+               iboost_bit = DDI_BUF_BALANCE_LEG_ENABLE;
 
        /* Entry 9 is for HDMI: */
        I915_WRITE(DDI_BUF_TRANS_LO(port, 9),
@@ -1820,7 +1826,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level)
                if (hdmi_iboost) {
                        iboost = hdmi_iboost;
                } else {
-                       ddi_translations = skl_get_buf_trans_hdmi(dev_priv, &n_entries);
+                       ddi_translations = intel_ddi_get_buf_trans_hdmi(dev_priv, &n_entries);
                        iboost = ddi_translations[level].i_boost;
                }
        } else {