This helps separate what capabilities are display capabilities.

Cc: Jani Nikula <jani.nik...@linux.intel.com>
Cc: Lucas De Marchi <lucas.demar...@intel.com>
Suggested-by: Jani Nikula <jani.nik...@linux.intel.com>
Suggested-by: Lucas De Marchi <lucas.demar...@intel.com>
Signed-off-by: José Roberto de Souza <jose.so...@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h          |  22 ++---
 drivers/gpu/drm/i915/i915_pci.c          | 117 +++++++++++++----------
 drivers/gpu/drm/i915/intel_device_info.c |   4 +
 drivers/gpu/drm/i915/intel_device_info.h |  31 +++---
 drivers/gpu/drm/i915/intel_display.c     |   4 +-
 drivers/gpu/drm/i915/intel_fbc.c         |   2 +-
 6 files changed, 102 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 3cdbb3d074db..834ea2cc6662 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2448,9 +2448,9 @@ intel_info(const struct drm_i915_private *dev_priv)
        ((sizes) & ~(dev_priv)->info.page_sizes) == 0; \
 })
 
-#define HAS_OVERLAY(dev_priv)           ((dev_priv)->info.has_overlay)
+#define HAS_OVERLAY(dev_priv)           ((dev_priv)->info.display.has_overlay)
 #define OVERLAY_NEEDS_PHYSICAL(dev_priv) \
-               ((dev_priv)->info.overlay_needs_physical)
+               ((dev_priv)->info.display.overlay_needs_physical)
 
 /* Early gen2 have a totally busted CS tlb and require pinned batches. */
 #define HAS_BROKEN_CS_TLB(dev_priv)    (IS_I830(dev_priv) || 
IS_I845G(dev_priv))
@@ -2471,31 +2471,31 @@ intel_info(const struct drm_i915_private *dev_priv)
 #define HAS_128_BYTE_Y_TILING(dev_priv) (!IS_GEN2(dev_priv) && \
                                         !(IS_I915G(dev_priv) || \
                                         IS_I915GM(dev_priv)))
-#define SUPPORTS_TV(dev_priv)          ((dev_priv)->info.supports_tv)
-#define I915_HAS_HOTPLUG(dev_priv)     ((dev_priv)->info.has_hotplug)
+#define SUPPORTS_TV(dev_priv)          ((dev_priv)->info.display.supports_tv)
+#define I915_HAS_HOTPLUG(dev_priv)     ((dev_priv)->info.display.has_hotplug)
 
 #define HAS_FW_BLC(dev_priv)   (INTEL_GEN(dev_priv) > 2)
-#define HAS_FBC(dev_priv)      ((dev_priv)->info.has_fbc)
+#define HAS_FBC(dev_priv)      ((dev_priv)->info.display.has_fbc)
 #define HAS_CUR_FBC(dev_priv)  (!HAS_GMCH_DISPLAY(dev_priv) && 
INTEL_GEN(dev_priv) >= 7)
 
 #define HAS_IPS(dev_priv)      (IS_HSW_ULT(dev_priv) || IS_BROADWELL(dev_priv))
 
-#define HAS_DP_MST(dev_priv)   ((dev_priv)->info.has_dp_mst)
+#define HAS_DP_MST(dev_priv)   ((dev_priv)->info.display.has_dp_mst)
 
-#define HAS_DDI(dev_priv)               ((dev_priv)->info.has_ddi)
+#define HAS_DDI(dev_priv)               ((dev_priv)->info.display.has_ddi)
 #define HAS_FPGA_DBG_UNCLAIMED(dev_priv) ((dev_priv)->info.has_fpga_dbg)
-#define HAS_PSR(dev_priv)               ((dev_priv)->info.has_psr)
+#define HAS_PSR(dev_priv)               ((dev_priv)->info.display.has_psr)
 
 #define HAS_RC6(dev_priv)               ((dev_priv)->info.has_rc6)
 #define HAS_RC6p(dev_priv)              ((dev_priv)->info.has_rc6p)
 #define HAS_RC6pp(dev_priv)             (false) /* HW was never validated */
 
-#define HAS_CSR(dev_priv)      ((dev_priv)->info.has_csr)
+#define HAS_CSR(dev_priv)      ((dev_priv)->info.display.has_csr)
 
 #define HAS_RUNTIME_PM(dev_priv) ((dev_priv)->info.has_runtime_pm)
 #define HAS_64BIT_RELOC(dev_priv) ((dev_priv)->info.has_64bit_reloc)
 
-#define HAS_IPC(dev_priv)               ((dev_priv)->info.has_ipc)
+#define HAS_IPC(dev_priv)               ((dev_priv)->info.display.has_ipc)
 
 /*
  * For now, anything with a GuC requires uCode loading, and then supports
@@ -2556,7 +2556,7 @@ intel_info(const struct drm_i915_private *dev_priv)
 #define HAS_PCH_NOP(dev_priv) (INTEL_PCH_TYPE(dev_priv) == PCH_NOP)
 #define HAS_PCH_SPLIT(dev_priv) (INTEL_PCH_TYPE(dev_priv) != PCH_NONE)
 
-#define HAS_GMCH_DISPLAY(dev_priv) ((dev_priv)->info.has_gmch_display)
+#define HAS_GMCH_DISPLAY(dev_priv) ((dev_priv)->info.display.has_gmch_display)
 
 #define HAS_LSPCON(dev_priv) (INTEL_GEN(dev_priv) >= 9)
 
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 983ae7fd8217..8e37a835314f 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -65,8 +65,9 @@
 #define GEN2_FEATURES \
        GEN(2), \
        .num_pipes = 1, \
-       .has_overlay = 1, .overlay_needs_physical = 1, \
-       .has_gmch_display = 1, \
+       .display.has_overlay = 1, \
+       .display.overlay_needs_physical = 1, \
+       .display.has_gmch_display = 1, \
        .hws_needs_physical = 1, \
        .unfenced_needs_alignment = 1, \
        .ring_mask = RENDER_RING, \
@@ -79,7 +80,8 @@
 static const struct intel_device_info intel_i830_info = {
        GEN2_FEATURES,
        PLATFORM(INTEL_I830),
-       .is_mobile = 1, .cursor_needs_physical = 1,
+       .is_mobile = 1,
+       .display.cursor_needs_physical = 1,
        .num_pipes = 2, /* legal, last one wins */
 };
 
@@ -93,8 +95,8 @@ static const struct intel_device_info intel_i85x_info = {
        PLATFORM(INTEL_I85X),
        .is_mobile = 1,
        .num_pipes = 2, /* legal, last one wins */
-       .cursor_needs_physical = 1,
-       .has_fbc = 1,
+       .display.cursor_needs_physical = 1,
+       .display.has_fbc = 1,
 };
 
 static const struct intel_device_info intel_i865g_info = {
@@ -105,7 +107,7 @@ static const struct intel_device_info intel_i865g_info = {
 #define GEN3_FEATURES \
        GEN(3), \
        .num_pipes = 2, \
-       .has_gmch_display = 1, \
+       .display.has_gmch_display = 1, \
        .ring_mask = RENDER_RING, \
        .has_snoop = true, \
        .has_coherent_ggtt = true, \
@@ -117,8 +119,9 @@ static const struct intel_device_info intel_i915g_info = {
        GEN3_FEATURES,
        PLATFORM(INTEL_I915G),
        .has_coherent_ggtt = false,
-       .cursor_needs_physical = 1,
-       .has_overlay = 1, .overlay_needs_physical = 1,
+       .display.cursor_needs_physical = 1,
+       .display.has_overlay = 1,
+       .display.overlay_needs_physical = 1,
        .hws_needs_physical = 1,
        .unfenced_needs_alignment = 1,
 };
@@ -127,10 +130,11 @@ static const struct intel_device_info intel_i915gm_info = 
{
        GEN3_FEATURES,
        PLATFORM(INTEL_I915GM),
        .is_mobile = 1,
-       .cursor_needs_physical = 1,
-       .has_overlay = 1, .overlay_needs_physical = 1,
-       .supports_tv = 1,
-       .has_fbc = 1,
+       .display.cursor_needs_physical = 1,
+       .display.has_overlay = 1,
+       .display.overlay_needs_physical = 1,
+       .display.supports_tv = 1,
+       .display.has_fbc = 1,
        .hws_needs_physical = 1,
        .unfenced_needs_alignment = 1,
 };
@@ -138,8 +142,10 @@ static const struct intel_device_info intel_i915gm_info = {
 static const struct intel_device_info intel_i945g_info = {
        GEN3_FEATURES,
        PLATFORM(INTEL_I945G),
-       .has_hotplug = 1, .cursor_needs_physical = 1,
-       .has_overlay = 1, .overlay_needs_physical = 1,
+       .display.has_hotplug = 1,
+       .display.cursor_needs_physical = 1,
+       .display.has_overlay = 1,
+       .display.overlay_needs_physical = 1,
        .hws_needs_physical = 1,
        .unfenced_needs_alignment = 1,
 };
@@ -148,10 +154,12 @@ static const struct intel_device_info intel_i945gm_info = 
{
        GEN3_FEATURES,
        PLATFORM(INTEL_I945GM),
        .is_mobile = 1,
-       .has_hotplug = 1, .cursor_needs_physical = 1,
-       .has_overlay = 1, .overlay_needs_physical = 1,
-       .supports_tv = 1,
-       .has_fbc = 1,
+       .display.has_hotplug = 1,
+       .display.cursor_needs_physical = 1,
+       .display.has_overlay = 1,
+       .display.overlay_needs_physical = 1,
+       .display.supports_tv = 1,
+       .display.has_fbc = 1,
        .hws_needs_physical = 1,
        .unfenced_needs_alignment = 1,
 };
@@ -159,23 +167,23 @@ static const struct intel_device_info intel_i945gm_info = 
{
 static const struct intel_device_info intel_g33_info = {
        GEN3_FEATURES,
        PLATFORM(INTEL_G33),
-       .has_hotplug = 1,
-       .has_overlay = 1,
+       .display.has_hotplug = 1,
+       .display.has_overlay = 1,
 };
 
 static const struct intel_device_info intel_pineview_info = {
        GEN3_FEATURES,
        PLATFORM(INTEL_PINEVIEW),
        .is_mobile = 1,
-       .has_hotplug = 1,
-       .has_overlay = 1,
+       .display.has_hotplug = 1,
+       .display.has_overlay = 1,
 };
 
 #define GEN4_FEATURES \
        GEN(4), \
        .num_pipes = 2, \
-       .has_hotplug = 1, \
-       .has_gmch_display = 1, \
+       .display.has_hotplug = 1, \
+       .display.has_gmch_display = 1, \
        .ring_mask = RENDER_RING, \
        .has_snoop = true, \
        .has_coherent_ggtt = true, \
@@ -186,7 +194,7 @@ static const struct intel_device_info intel_pineview_info = 
{
 static const struct intel_device_info intel_i965g_info = {
        GEN4_FEATURES,
        PLATFORM(INTEL_I965G),
-       .has_overlay = 1,
+       .display.has_overlay = 1,
        .hws_needs_physical = 1,
        .has_snoop = false,
 };
@@ -194,9 +202,10 @@ static const struct intel_device_info intel_i965g_info = {
 static const struct intel_device_info intel_i965gm_info = {
        GEN4_FEATURES,
        PLATFORM(INTEL_I965GM),
-       .is_mobile = 1, .has_fbc = 1,
-       .has_overlay = 1,
-       .supports_tv = 1,
+       .is_mobile = 1,
+       .display.has_fbc = 1,
+       .display.has_overlay = 1,
+       .display.supports_tv = 1,
        .hws_needs_physical = 1,
        .has_snoop = false,
 };
@@ -210,15 +219,16 @@ static const struct intel_device_info intel_g45_info = {
 static const struct intel_device_info intel_gm45_info = {
        GEN4_FEATURES,
        PLATFORM(INTEL_GM45),
-       .is_mobile = 1, .has_fbc = 1,
-       .supports_tv = 1,
+       .is_mobile = 1,
+       .display.has_fbc = 1,
+       .display.supports_tv = 1,
        .ring_mask = RENDER_RING | BSD_RING,
 };
 
 #define GEN5_FEATURES \
        GEN(5), \
        .num_pipes = 2, \
-       .has_hotplug = 1, \
+       .display.has_hotplug = 1, \
        .ring_mask = RENDER_RING | BSD_RING, \
        .has_snoop = true, \
        .has_coherent_ggtt = true, \
@@ -236,14 +246,15 @@ static const struct intel_device_info 
intel_ironlake_d_info = {
 static const struct intel_device_info intel_ironlake_m_info = {
        GEN5_FEATURES,
        PLATFORM(INTEL_IRONLAKE),
-       .is_mobile = 1, .has_fbc = 1,
+       .is_mobile = 1,
+       .display.has_fbc = 1,
 };
 
 #define GEN6_FEATURES \
        GEN(6), \
        .num_pipes = 2, \
-       .has_hotplug = 1, \
-       .has_fbc = 1, \
+       .display.has_hotplug = 1, \
+       .display.has_fbc = 1, \
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING, \
        .has_coherent_ggtt = true, \
        .has_llc = 1, \
@@ -287,8 +298,8 @@ static const struct intel_device_info 
intel_sandybridge_m_gt2_info = {
 #define GEN7_FEATURES  \
        GEN(7), \
        .num_pipes = 3, \
-       .has_hotplug = 1, \
-       .has_fbc = 1, \
+       .display.has_hotplug = 1, \
+       .display.has_fbc = 1, \
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING, \
        .has_coherent_ggtt = true, \
        .has_llc = 1, \
@@ -345,8 +356,8 @@ static const struct intel_device_info intel_valleyview_info 
= {
        .num_pipes = 2,
        .has_runtime_pm = 1,
        .has_rc6 = 1,
-       .has_gmch_display = 1,
-       .has_hotplug = 1,
+       .display.has_gmch_display = 1,
+       .display.has_hotplug = 1,
        .ppgtt = INTEL_PPGTT_FULL,
        .has_snoop = true,
        .has_coherent_ggtt = false,
@@ -360,10 +371,10 @@ static const struct intel_device_info 
intel_valleyview_info = {
 #define G75_FEATURES  \
        GEN7_FEATURES, \
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING, \
-       .has_ddi = 1, \
+       .display.has_ddi = 1, \
        .has_fpga_dbg = 1, \
-       .has_psr = 1, \
-       .has_dp_mst = 1, \
+       .display.has_psr = 1, \
+       .display.has_dp_mst = 1, \
        .has_rc6p = 0 /* RC6p removed-by HSW */, \
        .has_runtime_pm = 1
 
@@ -430,14 +441,14 @@ static const struct intel_device_info 
intel_cherryview_info = {
        PLATFORM(INTEL_CHERRYVIEW),
        GEN(8),
        .num_pipes = 3,
-       .has_hotplug = 1,
+       .display.has_hotplug = 1,
        .is_lp = 1,
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
        .has_64bit_reloc = 1,
        .has_runtime_pm = 1,
        .has_rc6 = 1,
        .has_logical_ring_contexts = 1,
-       .has_gmch_display = 1,
+       .display.has_gmch_display = 1,
        .ppgtt = INTEL_PPGTT_FULL,
        .has_reset_engine = 1,
        .has_snoop = true,
@@ -459,15 +470,15 @@ static const struct intel_device_info 
intel_cherryview_info = {
        GEN(9), \
        GEN9_DEFAULT_PAGE_SIZES, \
        .has_logical_ring_preemption = 1, \
-       .has_csr = 1, \
+       .display.has_csr = 1, \
        .has_guc = 1, \
-       .has_ipc = 1, \
+       .display.has_ipc = 1, \
        .ddb_size = 896
 
 #define SKL_PLATFORM \
        GEN9_FEATURES, \
        /* Display WA #0477 WaDisableIPC: skl */ \
-       .has_ipc = 0, \
+       .display.has_ipc = 0, \
        PLATFORM(INTEL_SKYLAKE)
 
 static const struct intel_device_info intel_skylake_gt1_info = {
@@ -498,19 +509,19 @@ static const struct intel_device_info 
intel_skylake_gt4_info = {
 #define GEN9_LP_FEATURES \
        GEN(9), \
        .is_lp = 1, \
-       .has_hotplug = 1, \
+       .display.has_hotplug = 1, \
        .ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING, \
        .num_pipes = 3, \
        .has_64bit_reloc = 1, \
-       .has_ddi = 1, \
+       .display.has_ddi = 1, \
        .has_fpga_dbg = 1, \
-       .has_fbc = 1, \
-       .has_psr = 1, \
+       .display.has_fbc = 1, \
+       .display.has_psr = 1, \
        .has_runtime_pm = 1, \
        .has_pooled_eu = 0, \
-       .has_csr = 1, \
+       .display.has_csr = 1, \
        .has_rc6 = 1, \
-       .has_dp_mst = 1, \
+       .display.has_dp_mst = 1, \
        .has_logical_ring_contexts = 1, \
        .has_logical_ring_preemption = 1, \
        .has_guc = 1, \
@@ -518,7 +529,7 @@ static const struct intel_device_info 
intel_skylake_gt4_info = {
        .has_reset_engine = 1, \
        .has_snoop = true, \
        .has_coherent_ggtt = false, \
-       .has_ipc = 1, \
+       .display.has_ipc = 1, \
        GEN9_DEFAULT_PAGE_SIZES, \
        GEN_DEFAULT_PIPEOFFSETS, \
        IVB_CURSOR_OFFSETS, \
diff --git a/drivers/gpu/drm/i915/intel_device_info.c 
b/drivers/gpu/drm/i915/intel_device_info.c
index 677002a9e893..1e56319334f3 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -77,6 +77,10 @@ void intel_device_info_dump_flags(const struct 
intel_device_info *info,
 #define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, yesno(info->name));
        DEV_INFO_FOR_EACH_FLAG(PRINT_FLAG);
 #undef PRINT_FLAG
+
+#define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, 
yesno(info->display.name));
+       DEV_INFO_DISPLAY_FOR_EACH_FLAG(PRINT_FLAG);
+#undef PRINT_FLAG
 }
 
 static void sseu_dump(const struct sseu_dev_info *sseu, struct drm_printer *p)
diff --git a/drivers/gpu/drm/i915/intel_device_info.h 
b/drivers/gpu/drm/i915/intel_device_info.h
index 88f97210dc49..858324947537 100644
--- a/drivers/gpu/drm/i915/intel_device_info.h
+++ b/drivers/gpu/drm/i915/intel_device_info.h
@@ -89,35 +89,38 @@ enum intel_ppgtt {
        func(is_alpha_support); \
        /* Keep has_* in alphabetical order */ \
        func(has_64bit_reloc); \
-       func(has_csr); \
-       func(has_ddi); \
-       func(has_dp_mst); \
        func(has_reset_engine); \
-       func(has_fbc); \
        func(has_fpga_dbg); \
-       func(has_gmch_display); \
        func(has_guc); \
        func(has_guc_ct); \
-       func(has_hotplug); \
        func(has_l3_dpf); \
        func(has_llc); \
        func(has_logical_ring_contexts); \
        func(has_logical_ring_elsq); \
        func(has_logical_ring_preemption); \
-       func(has_overlay); \
        func(has_pooled_eu); \
-       func(has_psr); \
        func(has_rc6); \
        func(has_rc6p); \
        func(has_runtime_pm); \
        func(has_snoop); \
        func(has_coherent_ggtt); \
        func(unfenced_needs_alignment); \
+       func(hws_needs_physical);
+
+#define DEV_INFO_DISPLAY_FOR_EACH_FLAG(func) \
+       /* Keep in alphabetical order */ \
        func(cursor_needs_physical); \
-       func(hws_needs_physical); \
+       func(has_csr); \
+       func(has_ddi); \
+       func(has_dp_mst); \
+       func(has_fbc); \
+       func(has_gmch_display); \
+       func(has_hotplug); \
+       func(has_ipc); \
+       func(has_overlay); \
+       func(has_psr); \
        func(overlay_needs_physical); \
-       func(supports_tv); \
-       func(has_ipc);
+       func(supports_tv);
 
 #define GEN_MAX_SLICES         (6) /* CNL upper bound */
 #define GEN_MAX_SUBSLICES      (8) /* ICL upper bound */
@@ -192,6 +195,12 @@ struct intel_device_info {
                u16 degamma_lut_size;
                u16 gamma_lut_size;
        } color;
+
+       struct {
+#define DEFINE_FLAG(name) u8 name:1
+               DEV_INFO_DISPLAY_FOR_EACH_FLAG(DEFINE_FLAG);
+#undef DEFINE_FLAG
+       } display;
 };
 
 struct intel_driver_caps {
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index d48f62ec0d7d..fa028dd3afe8 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9636,7 +9636,7 @@ static u32 intel_cursor_base(const struct 
intel_plane_state *plane_state)
        const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
        u32 base;
 
-       if (INTEL_INFO(dev_priv)->cursor_needs_physical)
+       if (INTEL_INFO(dev_priv)->display.cursor_needs_physical)
                base = obj->phys_handle->busaddr;
        else
                base = intel_plane_ggtt_offset(plane_state);
@@ -13209,7 +13209,7 @@ static int intel_plane_pin_fb(struct intel_plane_state 
*plane_state)
        struct i915_vma *vma;
 
        if (plane->id == PLANE_CURSOR &&
-           INTEL_INFO(dev_priv)->cursor_needs_physical) {
+           INTEL_INFO(dev_priv)->display.cursor_needs_physical) {
                struct drm_i915_gem_object *obj = intel_fb_obj(fb);
                const int align = intel_cursor_alignment(dev_priv);
                int err;
diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
index 14cbaf4a0e93..f23570c44323 100644
--- a/drivers/gpu/drm/i915/intel_fbc.c
+++ b/drivers/gpu/drm/i915/intel_fbc.c
@@ -1309,7 +1309,7 @@ void intel_fbc_init(struct drm_i915_private *dev_priv)
        fbc->active = false;
 
        if (need_fbc_vtd_wa(dev_priv))
-               mkwrite_device_info(dev_priv)->has_fbc = false;
+               mkwrite_device_info(dev_priv)->display.has_fbc = false;
 
        i915_modparams.enable_fbc = intel_sanitize_fbc_option(dev_priv);
        DRM_DEBUG_KMS("Sanitized enable_fbc value: %d\n",
-- 
2.19.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to