diff options
author | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2017-06-09 18:02:50 -0400 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2017-06-12 12:48:58 -0400 |
commit | da411a48bdeb648153dc9a485c15c18f3d063eac (patch) | |
tree | 3d63f856ee22c8f2db86b480344f1921d6ed928e | |
parent | 1fa62e1b76d6fb4e353f6d7e3ec22e6d07e0a489 (diff) |
drm/i915/cfl: Basic DDI plumbing for Coffee Lake.
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>
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1497045770-21302-1-git-send-email-rodrigo.vivi@intel.com
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
-rw-r--r-- | 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 c3ea485cb82a..467786d25348 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -2810,6 +2810,8 @@ intel_info(const struct drm_i915_private *dev_priv) | |||
2810 | (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0020) | 2810 | (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0020) |
2811 | #define IS_SKL_GT4(dev_priv) (IS_SKYLAKE(dev_priv) && \ | 2811 | #define IS_SKL_GT4(dev_priv) (IS_SKYLAKE(dev_priv) && \ |
2812 | (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0030) | 2812 | (INTEL_DEVID(dev_priv) & 0x00F0) == 0x0030) |
2813 | #define IS_CFL_ULT(dev_priv) (IS_COFFEELAKE(dev_priv) && \ | ||
2814 | (INTEL_DEVID(dev_priv) & 0x00F0) == 0x00A0) | ||
2813 | 2815 | ||
2814 | #define IS_ALPHA_SUPPORT(intel_info) ((intel_info)->is_alpha_support) | 2816 | #define IS_ALPHA_SUPPORT(intel_info) ((intel_info)->is_alpha_support) |
2815 | 2817 | ||
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 721c2e2c12a3..db8093863f0c 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c | |||
@@ -544,7 +544,7 @@ kbl_get_buf_trans_dp(struct drm_i915_private *dev_priv, int *n_entries) | |||
544 | if (IS_KBL_ULX(dev_priv)) { | 544 | if (IS_KBL_ULX(dev_priv)) { |
545 | *n_entries = ARRAY_SIZE(kbl_y_ddi_translations_dp); | 545 | *n_entries = ARRAY_SIZE(kbl_y_ddi_translations_dp); |
546 | return kbl_y_ddi_translations_dp; | 546 | return kbl_y_ddi_translations_dp; |
547 | } else if (IS_KBL_ULT(dev_priv)) { | 547 | } else if (IS_KBL_ULT(dev_priv) || IS_CFL_ULT(dev_priv)) { |
548 | *n_entries = ARRAY_SIZE(kbl_u_ddi_translations_dp); | 548 | *n_entries = ARRAY_SIZE(kbl_u_ddi_translations_dp); |
549 | return kbl_u_ddi_translations_dp; | 549 | return kbl_u_ddi_translations_dp; |
550 | } else { | 550 | } else { |
@@ -560,7 +560,8 @@ skl_get_buf_trans_edp(struct drm_i915_private *dev_priv, int *n_entries) | |||
560 | if (IS_SKL_ULX(dev_priv) || IS_KBL_ULX(dev_priv)) { | 560 | if (IS_SKL_ULX(dev_priv) || IS_KBL_ULX(dev_priv)) { |
561 | *n_entries = ARRAY_SIZE(skl_y_ddi_translations_edp); | 561 | *n_entries = ARRAY_SIZE(skl_y_ddi_translations_edp); |
562 | return skl_y_ddi_translations_edp; | 562 | return skl_y_ddi_translations_edp; |
563 | } else if (IS_SKL_ULT(dev_priv) || IS_KBL_ULT(dev_priv)) { | 563 | } else if (IS_SKL_ULT(dev_priv) || IS_KBL_ULT(dev_priv) || |
564 | IS_CFL_ULT(dev_priv)) { | ||
564 | *n_entries = ARRAY_SIZE(skl_u_ddi_translations_edp); | 565 | *n_entries = ARRAY_SIZE(skl_u_ddi_translations_edp); |
565 | return skl_u_ddi_translations_edp; | 566 | return skl_u_ddi_translations_edp; |
566 | } else { | 567 | } else { |
@@ -569,7 +570,7 @@ skl_get_buf_trans_edp(struct drm_i915_private *dev_priv, int *n_entries) | |||
569 | } | 570 | } |
570 | } | 571 | } |
571 | 572 | ||
572 | if (IS_KABYLAKE(dev_priv)) | 573 | if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) |
573 | return kbl_get_buf_trans_dp(dev_priv, n_entries); | 574 | return kbl_get_buf_trans_dp(dev_priv, n_entries); |
574 | else | 575 | else |
575 | return skl_get_buf_trans_dp(dev_priv, n_entries); | 576 | return skl_get_buf_trans_dp(dev_priv, n_entries); |
@@ -625,7 +626,7 @@ static const struct ddi_buf_trans * | |||
625 | intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv, | 626 | intel_ddi_get_buf_trans_dp(struct drm_i915_private *dev_priv, |
626 | int *n_entries) | 627 | int *n_entries) |
627 | { | 628 | { |
628 | if (IS_KABYLAKE(dev_priv)) { | 629 | if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) { |
629 | return kbl_get_buf_trans_dp(dev_priv, n_entries); | 630 | return kbl_get_buf_trans_dp(dev_priv, n_entries); |
630 | } else if (IS_SKYLAKE(dev_priv)) { | 631 | } else if (IS_SKYLAKE(dev_priv)) { |
631 | return skl_get_buf_trans_dp(dev_priv, n_entries); | 632 | return skl_get_buf_trans_dp(dev_priv, n_entries); |
@@ -645,7 +646,7 @@ static const struct ddi_buf_trans * | |||
645 | intel_ddi_get_buf_trans_edp(struct drm_i915_private *dev_priv, | 646 | intel_ddi_get_buf_trans_edp(struct drm_i915_private *dev_priv, |
646 | int *n_entries) | 647 | int *n_entries) |
647 | { | 648 | { |
648 | if (IS_KABYLAKE(dev_priv) || IS_SKYLAKE(dev_priv)) { | 649 | if (IS_GEN9_BC(dev_priv)) { |
649 | return skl_get_buf_trans_edp(dev_priv, n_entries); | 650 | return skl_get_buf_trans_edp(dev_priv, n_entries); |
650 | } else if (IS_BROADWELL(dev_priv)) { | 651 | } else if (IS_BROADWELL(dev_priv)) { |
651 | return bdw_get_buf_trans_edp(dev_priv, n_entries); | 652 | return bdw_get_buf_trans_edp(dev_priv, n_entries); |
@@ -1618,7 +1619,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, u32 level) | |||
1618 | if (dp_iboost) { | 1619 | if (dp_iboost) { |
1619 | iboost = dp_iboost; | 1620 | iboost = dp_iboost; |
1620 | } else { | 1621 | } else { |
1621 | if (IS_KABYLAKE(dev_priv)) | 1622 | if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) |
1622 | ddi_translations = kbl_get_buf_trans_dp(dev_priv, | 1623 | ddi_translations = kbl_get_buf_trans_dp(dev_priv, |
1623 | &n_entries); | 1624 | &n_entries); |
1624 | else | 1625 | else |