Message ID | 1497045770-21302-1-git-send-email-rodrigo.vivi@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 2017-06-09 at 15:02 -0700, Rodrigo Vivi wrote: > All here is pretty much like Kabylake. > > Including CFL-U has to use same ddi translation table > as KBL-U for now. > > v2: Include missed IS_COFFEELAKE on edp trans table. (DK) > Handle CFL-U with same translation table as KBL-U. (DK and > confirmed with HW engineers) > > v3: Adding missed case for IS_CFL_ULT. (DK). > > v4: Duh! Now with the real IS_CFL_ULT instead of KBL one. (DK) > Also use IS_GEN9_BC when possible. (DK) Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > drivers/gpu/drm/i915/i915_drv.h | 2 ++ > drivers/gpu/drm/i915/intel_ddi.c | 13 +++++++------ > 2 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 602fb33..57af564 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2811,6 +2811,8 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg) > (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0020) > #define IS_SKL_GT4(dev_priv) (IS_SKYLAKE(dev_priv) && \ > (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0030) > +#define IS_CFL_ULT(dev_priv) (IS_COFFEELAKE(dev_priv) && \ > + (INTEL_DEVID(dev_priv) & 0x00F0) == 0x00A0) > > #define IS_ALPHA_SUPPORT(intel_info) ((intel_info)->is_alpha_support) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index 8bac628..3501184 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -404,7 +404,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder) > if (IS_KBL_ULX(dev_priv)) { > *n_entries = ARRAY_SIZE(kbl_y_ddi_translations_dp); > return kbl_y_ddi_translations_dp; > - } else if (IS_KBL_ULT(dev_priv)) { > + } else if (IS_KBL_ULT(dev_priv) || IS_CFL_ULT(dev_priv)) { > *n_entries = ARRAY_SIZE(kbl_u_ddi_translations_dp); > return kbl_u_ddi_translations_dp; > } else { > @@ -420,7 +420,8 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder) > if (IS_SKL_ULX(dev_priv) || IS_KBL_ULX(dev_priv)) { > *n_entries = ARRAY_SIZE(skl_y_ddi_translations_edp); > return skl_y_ddi_translations_edp; > - } else if (IS_SKL_ULT(dev_priv) || IS_KBL_ULT(dev_priv)) { > + } else if (IS_SKL_ULT(dev_priv) || IS_KBL_ULT(dev_priv) || > + IS_CFL_ULT(dev_priv)) { > *n_entries = ARRAY_SIZE(skl_u_ddi_translations_edp); > return skl_u_ddi_translations_edp; > } else { > @@ -429,7 +430,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder) > } > } > > - if (IS_KABYLAKE(dev_priv)) > + if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) > return kbl_get_buf_trans_dp(dev_priv, n_entries); > else > return skl_get_buf_trans_dp(dev_priv, n_entries); > @@ -485,7 +486,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por > intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv, > int *n_entries) > { > - if (IS_KABYLAKE(dev_priv)) { > + if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) { > return kbl_get_buf_trans_dp(dev_priv, n_entries); > } else if (IS_SKYLAKE(dev_priv)) { > return skl_get_buf_trans_dp(dev_priv, n_entries); > @@ -505,7 +506,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por > intel_ddi_get_buf_trans_edp(struct drm_i915_private *dev_priv, > int *n_entries) > { > - if (IS_KABYLAKE(dev_priv) || IS_SKYLAKE(dev_priv)) { > + if (IS_GEN9_BC(dev_priv)) { > return skl_get_buf_trans_edp(dev_priv, n_entries); > } else if (IS_BROADWELL(dev_priv)) { > return bdw_get_buf_trans_edp(dev_priv, n_entries); > @@ -1478,7 +1479,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level) > if (dp_iboost) { > iboost = dp_iboost; > } else { > - if (IS_KABYLAKE(dev_priv)) > + if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) > ddi_translations = kbl_get_buf_trans_dp(dev_priv, > &n_entries); > else
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 602fb33..57af564 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2811,6 +2811,8 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg) (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0020) #define IS_SKL_GT4(dev_priv) (IS_SKYLAKE(dev_priv) && \ (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0030) +#define IS_CFL_ULT(dev_priv) (IS_COFFEELAKE(dev_priv) && \ + (INTEL_DEVID(dev_priv) & 0x00F0) == 0x00A0) #define IS_ALPHA_SUPPORT(intel_info) ((intel_info)->is_alpha_support) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 8bac628..3501184 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -404,7 +404,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder) if (IS_KBL_ULX(dev_priv)) { *n_entries = ARRAY_SIZE(kbl_y_ddi_translations_dp); return kbl_y_ddi_translations_dp; - } else if (IS_KBL_ULT(dev_priv)) { + } else if (IS_KBL_ULT(dev_priv) || IS_CFL_ULT(dev_priv)) { *n_entries = ARRAY_SIZE(kbl_u_ddi_translations_dp); return kbl_u_ddi_translations_dp; } else { @@ -420,7 +420,8 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder) if (IS_SKL_ULX(dev_priv) || IS_KBL_ULX(dev_priv)) { *n_entries = ARRAY_SIZE(skl_y_ddi_translations_edp); return skl_y_ddi_translations_edp; - } else if (IS_SKL_ULT(dev_priv) || IS_KBL_ULT(dev_priv)) { + } else if (IS_SKL_ULT(dev_priv) || IS_KBL_ULT(dev_priv) || + IS_CFL_ULT(dev_priv)) { *n_entries = ARRAY_SIZE(skl_u_ddi_translations_edp); return skl_u_ddi_translations_edp; } else { @@ -429,7 +430,7 @@ enum port intel_ddi_get_encoder_port(struct intel_encoder *encoder) } } - if (IS_KABYLAKE(dev_priv)) + if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) return kbl_get_buf_trans_dp(dev_priv, n_entries); else return skl_get_buf_trans_dp(dev_priv, n_entries); @@ -485,7 +486,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv, int *n_entries) { - if (IS_KABYLAKE(dev_priv)) { + if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) { return kbl_get_buf_trans_dp(dev_priv, n_entries); } else if (IS_SKYLAKE(dev_priv)) { return skl_get_buf_trans_dp(dev_priv, n_entries); @@ -505,7 +506,7 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por intel_ddi_get_buf_trans_edp(struct drm_i915_private *dev_priv, int *n_entries) { - if (IS_KABYLAKE(dev_priv) || IS_SKYLAKE(dev_priv)) { + if (IS_GEN9_BC(dev_priv)) { return skl_get_buf_trans_edp(dev_priv, n_entries); } else if (IS_BROADWELL(dev_priv)) { return bdw_get_buf_trans_edp(dev_priv, n_entries); @@ -1478,7 +1479,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level) if (dp_iboost) { iboost = dp_iboost; } else { - if (IS_KABYLAKE(dev_priv)) + if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) ddi_translations = kbl_get_buf_trans_dp(dev_priv, &n_entries); else
All here is pretty much like Kabylake. Including CFL-U has to use same ddi translation table as KBL-U for now. v2: Include missed IS_COFFEELAKE on edp trans table. (DK) Handle CFL-U with same translation table as KBL-U. (DK and confirmed with HW engineers) v3: Adding missed case for IS_CFL_ULT. (DK). v4: Duh! Now with the real IS_CFL_ULT instead of KBL one. (DK) Also use IS_GEN9_BC when possible. (DK) Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- drivers/gpu/drm/i915/i915_drv.h | 2 ++ drivers/gpu/drm/i915/intel_ddi.c | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-)