Re: [Intel-gfx] [PATCH 02/10] drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
On Wed, Oct 18, 2017 at 08:09:24PM +0300, Ville Syrjälä wrote: > On Mon, Oct 16, 2017 at 04:41:49PM -0700, Ausmus, James wrote: > > On Mon, Oct 16, 2017 at 7:56 AM, Ville Syrjala > > wrote: > > > From: Ville Syrjälä > > > > > > Introduce intel_ddi_get_buf_trans_hdmi() and start using it where we > > > can. > > > > > > Signed-off-by: Ville Syrjälä > > > --- > > > drivers/gpu/drm/i915/intel_ddi.c | 50 > > > ++-- > > > 1 file changed, 28 insertions(+), 22 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c > > > b/drivers/gpu/drm/i915/intel_ddi.c > > > index 55937abda61f..e6c884a6d408 100644 > > > --- a/drivers/gpu/drm/i915/intel_ddi.c > > > +++ b/drivers/gpu/drm/i915/intel_ddi.c > > > @@ -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; > > > > Why are you skipping the CNL case? If you extract it in to > > intel_ddi_get_buf_trans_hdmi as well, you could just > > unconditionally call intel_ddi_get_buf_trans_hdmi, and just set > > hdmi_default_entry in the platform-specific section. > > The problem is that CNL (and BXT) use a different structure for their > buf trans values. So far I've not bothered to check if we could change > them to use the HSW+ structure. I guess the other options would be to > slap a union into the structure, or make these functions return > void *, but neither option seems very appealing since we'd lose some > type safety. > > In any case that'd be material for followup work. Maybe someone else > could take a look at it? ;) > I like the idea of the union in the buf_trans structures. But yes for now, this looks good. Reviewed-by: Manasi Navare Manasi > > > > > } 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_
Re: [Intel-gfx] [PATCH 02/10] drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
On Wed, Oct 18, 2017 at 08:09:24PM +0300, Ville Syrjälä wrote: > On Mon, Oct 16, 2017 at 04:41:49PM -0700, Ausmus, James wrote: > > On Mon, Oct 16, 2017 at 7:56 AM, Ville Syrjala > > wrote: > > > From: Ville Syrjälä > > > > > > Introduce intel_ddi_get_buf_trans_hdmi() and start using it where we > > > can. > > > > > > Signed-off-by: Ville Syrjälä > > > --- > > > drivers/gpu/drm/i915/intel_ddi.c | 50 > > > ++-- > > > 1 file changed, 28 insertions(+), 22 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c > > > b/drivers/gpu/drm/i915/intel_ddi.c > > > index 55937abda61f..e6c884a6d408 100644 > > > --- a/drivers/gpu/drm/i915/intel_ddi.c > > > +++ b/drivers/gpu/drm/i915/intel_ddi.c > > > @@ -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; > > > > Why are you skipping the CNL case? If you extract it in to > > intel_ddi_get_buf_trans_hdmi as well, you could just > > unconditionally call intel_ddi_get_buf_trans_hdmi, and just set > > hdmi_default_entry in the platform-specific section. > > The problem is that CNL (and BXT) use a different structure for their > buf trans values. So far I've not bothered to check if we could change > them to use the HSW+ structure. I guess the other options would be to > slap a union into the structure, or make these functions return > void *, but neither option seems very appealing since we'd lose some > type safety. Ah yes - hadn't noticed the return types, as they're not used here - thanks for explaining. Reviewed-by: James Ausmus > > In any case that'd be material for followup work. Maybe someone else > could take a look at it? ;) > > > > > > } 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 =
Re: [Intel-gfx] [PATCH 02/10] drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
On Mon, Oct 16, 2017 at 04:41:49PM -0700, Ausmus, James wrote: > On Mon, Oct 16, 2017 at 7:56 AM, Ville Syrjala > wrote: > > From: Ville Syrjälä > > > > Introduce intel_ddi_get_buf_trans_hdmi() and start using it where we > > can. > > > > Signed-off-by: Ville Syrjälä > > --- > > drivers/gpu/drm/i915/intel_ddi.c | 50 > > ++-- > > 1 file changed, 28 insertions(+), 22 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c > > b/drivers/gpu/drm/i915/intel_ddi.c > > index 55937abda61f..e6c884a6d408 100644 > > --- a/drivers/gpu/drm/i915/intel_ddi.c > > +++ b/drivers/gpu/drm/i915/intel_ddi.c > > @@ -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; > > Why are you skipping the CNL case? If you extract it in to > intel_ddi_get_buf_trans_hdmi as well, you could just > unconditionally call intel_ddi_get_buf_trans_hdmi, and just set > hdmi_default_entry in the platform-specific section. The problem is that CNL (and BXT) use a different structure for their buf trans values. So far I've not bothered to check if we could change them to use the HSW+ structure. I guess the other options would be to slap a union into the structure, or make these functions return void *, but neither option seems very appealing since we'd lose some type safety. In any case that'd be material for followup work. Maybe someone else could take a look at it? ;) > > > } 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) && >
Re: [Intel-gfx] [PATCH 02/10] drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
On Mon, Oct 16, 2017 at 7:56 AM, Ville Syrjala wrote: > From: Ville Syrjälä > > Introduce intel_ddi_get_buf_trans_hdmi() and start using it where we > can. > > Signed-off-by: Ville Syrjälä > --- > drivers/gpu/drm/i915/intel_ddi.c | 50 > ++-- > 1 file changed, 28 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c > b/drivers/gpu/drm/i915/intel_ddi.c > index 55937abda61f..e6c884a6d408 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -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; Why are you skipping the CNL case? If you extract it in to intel_ddi_get_buf_trans_hdmi as well, you could just unconditionally call intel_ddi_get_buf_trans_hdmi, and just set hdmi_default_entry in the platform-specific section. > } 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
[Intel-gfx] [PATCH 02/10] drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
From: Ville Syrjälä Introduce intel_ddi_get_buf_trans_hdmi() and start using it where we can. Signed-off-by: Ville Syrjälä --- drivers/gpu/drm/i915/intel_ddi.c | 50 ++-- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 55937abda61f..e6c884a6d408 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -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 { -- 2.13.6 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx