aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_pci.c')
-rw-r--r--drivers/gpu/drm/i915/i915_pci.c71
1 files changed, 48 insertions, 23 deletions
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index d6f7b9fe1d26..1b81d7cb209e 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -33,19 +33,30 @@
33#define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1) 33#define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1)
34 34
35#define GEN_DEFAULT_PIPEOFFSETS \ 35#define GEN_DEFAULT_PIPEOFFSETS \
36 .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ 36 .pipe_offsets = { \
37 PIPE_C_OFFSET, PIPE_EDP_OFFSET }, \ 37 [TRANSCODER_A] = PIPE_A_OFFSET, \
38 .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ 38 [TRANSCODER_B] = PIPE_B_OFFSET, \
39 TRANSCODER_C_OFFSET, TRANSCODER_EDP_OFFSET }, \ 39 [TRANSCODER_C] = PIPE_C_OFFSET, \
40 .palette_offsets = { PALETTE_A_OFFSET, PALETTE_B_OFFSET } 40 [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \
41 }, \
42 .trans_offsets = { \
43 [TRANSCODER_A] = TRANSCODER_A_OFFSET, \
44 [TRANSCODER_B] = TRANSCODER_B_OFFSET, \
45 [TRANSCODER_C] = TRANSCODER_C_OFFSET, \
46 [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \
47 }
41 48
42#define GEN_CHV_PIPEOFFSETS \ 49#define GEN_CHV_PIPEOFFSETS \
43 .pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \ 50 .pipe_offsets = { \
44 CHV_PIPE_C_OFFSET }, \ 51 [TRANSCODER_A] = PIPE_A_OFFSET, \
45 .trans_offsets = { TRANSCODER_A_OFFSET, TRANSCODER_B_OFFSET, \ 52 [TRANSCODER_B] = PIPE_B_OFFSET, \
46 CHV_TRANSCODER_C_OFFSET, }, \ 53 [TRANSCODER_C] = CHV_PIPE_C_OFFSET, \
47 .palette_offsets = { PALETTE_A_OFFSET, PALETTE_B_OFFSET, \ 54 }, \
48 CHV_PALETTE_C_OFFSET } 55 .trans_offsets = { \
56 [TRANSCODER_A] = TRANSCODER_A_OFFSET, \
57 [TRANSCODER_B] = TRANSCODER_B_OFFSET, \
58 [TRANSCODER_C] = CHV_TRANSCODER_C_OFFSET, \
59 }
49 60
50#define CURSOR_OFFSETS \ 61#define CURSOR_OFFSETS \
51 .cursor_offsets = { CURSOR_A_OFFSET, CURSOR_B_OFFSET, CHV_CURSOR_C_OFFSET } 62 .cursor_offsets = { CURSOR_A_OFFSET, CURSOR_B_OFFSET, CHV_CURSOR_C_OFFSET }
@@ -252,7 +263,7 @@ static const struct intel_device_info intel_ironlake_m_info = {
252 .has_llc = 1, \ 263 .has_llc = 1, \
253 .has_rc6 = 1, \ 264 .has_rc6 = 1, \
254 .has_rc6p = 1, \ 265 .has_rc6p = 1, \
255 .has_aliasing_ppgtt = 1, \ 266 .ppgtt = INTEL_PPGTT_ALIASING, \
256 GEN_DEFAULT_PIPEOFFSETS, \ 267 GEN_DEFAULT_PIPEOFFSETS, \
257 GEN_DEFAULT_PAGE_SIZES, \ 268 GEN_DEFAULT_PAGE_SIZES, \
258 CURSOR_OFFSETS 269 CURSOR_OFFSETS
@@ -297,8 +308,7 @@ static const struct intel_device_info intel_sandybridge_m_gt2_info = {
297 .has_llc = 1, \ 308 .has_llc = 1, \
298 .has_rc6 = 1, \ 309 .has_rc6 = 1, \
299 .has_rc6p = 1, \ 310 .has_rc6p = 1, \
300 .has_aliasing_ppgtt = 1, \ 311 .ppgtt = INTEL_PPGTT_FULL, \
301 .has_full_ppgtt = 1, \
302 GEN_DEFAULT_PIPEOFFSETS, \ 312 GEN_DEFAULT_PIPEOFFSETS, \
303 GEN_DEFAULT_PAGE_SIZES, \ 313 GEN_DEFAULT_PAGE_SIZES, \
304 IVB_CURSOR_OFFSETS 314 IVB_CURSOR_OFFSETS
@@ -351,8 +361,7 @@ static const struct intel_device_info intel_valleyview_info = {
351 .has_rc6 = 1, 361 .has_rc6 = 1,
352 .has_gmch_display = 1, 362 .has_gmch_display = 1,
353 .has_hotplug = 1, 363 .has_hotplug = 1,
354 .has_aliasing_ppgtt = 1, 364 .ppgtt = INTEL_PPGTT_FULL,
355 .has_full_ppgtt = 1,
356 .has_snoop = true, 365 .has_snoop = true,
357 .has_coherent_ggtt = false, 366 .has_coherent_ggtt = false,
358 .ring_mask = RENDER_RING | BSD_RING | BLT_RING, 367 .ring_mask = RENDER_RING | BSD_RING | BLT_RING,
@@ -399,7 +408,7 @@ static const struct intel_device_info intel_haswell_gt3_info = {
399 .page_sizes = I915_GTT_PAGE_SIZE_4K | \ 408 .page_sizes = I915_GTT_PAGE_SIZE_4K | \
400 I915_GTT_PAGE_SIZE_2M, \ 409 I915_GTT_PAGE_SIZE_2M, \
401 .has_logical_ring_contexts = 1, \ 410 .has_logical_ring_contexts = 1, \
402 .has_full_48bit_ppgtt = 1, \ 411 .ppgtt = INTEL_PPGTT_FULL_4LVL, \
403 .has_64bit_reloc = 1, \ 412 .has_64bit_reloc = 1, \
404 .has_reset_engine = 1 413 .has_reset_engine = 1
405 414
@@ -443,8 +452,7 @@ static const struct intel_device_info intel_cherryview_info = {
443 .has_rc6 = 1, 452 .has_rc6 = 1,
444 .has_logical_ring_contexts = 1, 453 .has_logical_ring_contexts = 1,
445 .has_gmch_display = 1, 454 .has_gmch_display = 1,
446 .has_aliasing_ppgtt = 1, 455 .ppgtt = INTEL_PPGTT_FULL,
447 .has_full_ppgtt = 1,
448 .has_reset_engine = 1, 456 .has_reset_engine = 1,
449 .has_snoop = true, 457 .has_snoop = true,
450 .has_coherent_ggtt = false, 458 .has_coherent_ggtt = false,
@@ -472,6 +480,8 @@ static const struct intel_device_info intel_cherryview_info = {
472 480
473#define SKL_PLATFORM \ 481#define SKL_PLATFORM \
474 GEN9_FEATURES, \ 482 GEN9_FEATURES, \
483 /* Display WA #0477 WaDisableIPC: skl */ \
484 .has_ipc = 0, \
475 PLATFORM(INTEL_SKYLAKE) 485 PLATFORM(INTEL_SKYLAKE)
476 486
477static const struct intel_device_info intel_skylake_gt1_info = { 487static const struct intel_device_info intel_skylake_gt1_info = {
@@ -518,9 +528,7 @@ static const struct intel_device_info intel_skylake_gt4_info = {
518 .has_logical_ring_contexts = 1, \ 528 .has_logical_ring_contexts = 1, \
519 .has_logical_ring_preemption = 1, \ 529 .has_logical_ring_preemption = 1, \
520 .has_guc = 1, \ 530 .has_guc = 1, \
521 .has_aliasing_ppgtt = 1, \ 531 .ppgtt = INTEL_PPGTT_FULL_4LVL, \
522 .has_full_ppgtt = 1, \
523 .has_full_48bit_ppgtt = 1, \
524 .has_reset_engine = 1, \ 532 .has_reset_engine = 1, \
525 .has_snoop = true, \ 533 .has_snoop = true, \
526 .has_coherent_ggtt = false, \ 534 .has_coherent_ggtt = false, \
@@ -598,6 +606,22 @@ static const struct intel_device_info intel_cannonlake_info = {
598 606
599#define GEN11_FEATURES \ 607#define GEN11_FEATURES \
600 GEN10_FEATURES, \ 608 GEN10_FEATURES, \
609 .pipe_offsets = { \
610 [TRANSCODER_A] = PIPE_A_OFFSET, \
611 [TRANSCODER_B] = PIPE_B_OFFSET, \
612 [TRANSCODER_C] = PIPE_C_OFFSET, \
613 [TRANSCODER_EDP] = PIPE_EDP_OFFSET, \
614 [TRANSCODER_DSI_0] = PIPE_DSI0_OFFSET, \
615 [TRANSCODER_DSI_1] = PIPE_DSI1_OFFSET, \
616 }, \
617 .trans_offsets = { \
618 [TRANSCODER_A] = TRANSCODER_A_OFFSET, \
619 [TRANSCODER_B] = TRANSCODER_B_OFFSET, \
620 [TRANSCODER_C] = TRANSCODER_C_OFFSET, \
621 [TRANSCODER_EDP] = TRANSCODER_EDP_OFFSET, \
622 [TRANSCODER_DSI_0] = TRANSCODER_DSI0_OFFSET, \
623 [TRANSCODER_DSI_1] = TRANSCODER_DSI1_OFFSET, \
624 }, \
601 GEN(11), \ 625 GEN(11), \
602 .ddb_size = 2048, \ 626 .ddb_size = 2048, \
603 .has_logical_ring_elsq = 1 627 .has_logical_ring_elsq = 1
@@ -663,7 +687,7 @@ static const struct pci_device_id pciidlist[] = {
663 INTEL_KBL_GT2_IDS(&intel_kabylake_gt2_info), 687 INTEL_KBL_GT2_IDS(&intel_kabylake_gt2_info),
664 INTEL_KBL_GT3_IDS(&intel_kabylake_gt3_info), 688 INTEL_KBL_GT3_IDS(&intel_kabylake_gt3_info),
665 INTEL_KBL_GT4_IDS(&intel_kabylake_gt3_info), 689 INTEL_KBL_GT4_IDS(&intel_kabylake_gt3_info),
666 INTEL_AML_GT2_IDS(&intel_kabylake_gt2_info), 690 INTEL_AML_KBL_GT2_IDS(&intel_kabylake_gt2_info),
667 INTEL_CFL_S_GT1_IDS(&intel_coffeelake_gt1_info), 691 INTEL_CFL_S_GT1_IDS(&intel_coffeelake_gt1_info),
668 INTEL_CFL_S_GT2_IDS(&intel_coffeelake_gt2_info), 692 INTEL_CFL_S_GT2_IDS(&intel_coffeelake_gt2_info),
669 INTEL_CFL_H_GT2_IDS(&intel_coffeelake_gt2_info), 693 INTEL_CFL_H_GT2_IDS(&intel_coffeelake_gt2_info),
@@ -671,6 +695,7 @@ static const struct pci_device_id pciidlist[] = {
671 INTEL_CFL_U_GT3_IDS(&intel_coffeelake_gt3_info), 695 INTEL_CFL_U_GT3_IDS(&intel_coffeelake_gt3_info),
672 INTEL_WHL_U_GT1_IDS(&intel_coffeelake_gt1_info), 696 INTEL_WHL_U_GT1_IDS(&intel_coffeelake_gt1_info),
673 INTEL_WHL_U_GT2_IDS(&intel_coffeelake_gt2_info), 697 INTEL_WHL_U_GT2_IDS(&intel_coffeelake_gt2_info),
698 INTEL_AML_CFL_GT2_IDS(&intel_coffeelake_gt2_info),
674 INTEL_WHL_U_GT3_IDS(&intel_coffeelake_gt3_info), 699 INTEL_WHL_U_GT3_IDS(&intel_coffeelake_gt3_info),
675 INTEL_CNL_IDS(&intel_cannonlake_info), 700 INTEL_CNL_IDS(&intel_cannonlake_info),
676 INTEL_ICL_11_IDS(&intel_icelake_11_info), 701 INTEL_ICL_11_IDS(&intel_icelake_11_info),