diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_pci.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_pci.c | 71 |
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 | ||
477 | static const struct intel_device_info intel_skylake_gt1_info = { | 487 | static 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), |