aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_reg.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg.h')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h83
1 files changed, 68 insertions, 15 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 68a58cce6ab1..96c80fa0fcac 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -355,9 +355,6 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
355#define ECOCHK_PPGTT_WT_HSW (0x2<<3) 355#define ECOCHK_PPGTT_WT_HSW (0x2<<3)
356#define ECOCHK_PPGTT_WB_HSW (0x3<<3) 356#define ECOCHK_PPGTT_WB_HSW (0x3<<3)
357 357
358#define GEN8_CONFIG0 _MMIO(0xD00)
359#define GEN9_DEFAULT_FIXES (1 << 3 | 1 << 2 | 1 << 1)
360
361#define GAC_ECO_BITS _MMIO(0x14090) 358#define GAC_ECO_BITS _MMIO(0x14090)
362#define ECOBITS_SNB_BIT (1<<13) 359#define ECOBITS_SNB_BIT (1<<13)
363#define ECOBITS_PPGTT_CACHE64B (3<<8) 360#define ECOBITS_PPGTT_CACHE64B (3<<8)
@@ -382,6 +379,7 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
382#define GEN8_STOLEN_RESERVED_2M (1 << 7) 379#define GEN8_STOLEN_RESERVED_2M (1 << 7)
383#define GEN8_STOLEN_RESERVED_4M (2 << 7) 380#define GEN8_STOLEN_RESERVED_4M (2 << 7)
384#define GEN8_STOLEN_RESERVED_8M (3 << 7) 381#define GEN8_STOLEN_RESERVED_8M (3 << 7)
382#define GEN6_STOLEN_RESERVED_ENABLE (1 << 0)
385 383
386/* VGA stuff */ 384/* VGA stuff */
387 385
@@ -1109,16 +1107,50 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
1109#define OA_PERFCNT1_HI _MMIO(0x91BC) 1107#define OA_PERFCNT1_HI _MMIO(0x91BC)
1110#define OA_PERFCNT2_LO _MMIO(0x91C0) 1108#define OA_PERFCNT2_LO _MMIO(0x91C0)
1111#define OA_PERFCNT2_HI _MMIO(0x91C4) 1109#define OA_PERFCNT2_HI _MMIO(0x91C4)
1110#define OA_PERFCNT3_LO _MMIO(0x91C8)
1111#define OA_PERFCNT3_HI _MMIO(0x91CC)
1112#define OA_PERFCNT4_LO _MMIO(0x91D8)
1113#define OA_PERFCNT4_HI _MMIO(0x91DC)
1112 1114
1113#define OA_PERFMATRIX_LO _MMIO(0x91C8) 1115#define OA_PERFMATRIX_LO _MMIO(0x91C8)
1114#define OA_PERFMATRIX_HI _MMIO(0x91CC) 1116#define OA_PERFMATRIX_HI _MMIO(0x91CC)
1115 1117
1116/* RPM unit config (Gen8+) */ 1118/* RPM unit config (Gen8+) */
1117#define RPM_CONFIG0 _MMIO(0x0D00) 1119#define RPM_CONFIG0 _MMIO(0x0D00)
1118#define RPM_CONFIG1 _MMIO(0x0D04) 1120#define GEN9_RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_SHIFT 3
1121#define GEN9_RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_MASK (1 << GEN9_RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_SHIFT)
1122#define GEN9_RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_19_2_MHZ 0
1123#define GEN9_RPM_CONFIG0_CRYSTAL_CLOCK_FREQ_24_MHZ 1
1124#define GEN10_RPM_CONFIG0_CTC_SHIFT_PARAMETER_SHIFT 1
1125#define GEN10_RPM_CONFIG0_CTC_SHIFT_PARAMETER_MASK (0x3 << GEN10_RPM_CONFIG0_CTC_SHIFT_PARAMETER_SHIFT)
1119 1126
1120/* RPC unit config (Gen8+) */ 1127#define RPM_CONFIG1 _MMIO(0x0D04)
1121#define RPM_CONFIG _MMIO(0x0D08) 1128#define GEN10_GT_NOA_ENABLE (1 << 9)
1129
1130/* GPM unit config (Gen9+) */
1131#define CTC_MODE _MMIO(0xA26C)
1132#define CTC_SOURCE_PARAMETER_MASK 1
1133#define CTC_SOURCE_CRYSTAL_CLOCK 0
1134#define CTC_SOURCE_DIVIDE_LOGIC 1
1135#define CTC_SHIFT_PARAMETER_SHIFT 1
1136#define CTC_SHIFT_PARAMETER_MASK (0x3 << CTC_SHIFT_PARAMETER_SHIFT)
1137
1138/* RCP unit config (Gen8+) */
1139#define RCP_CONFIG _MMIO(0x0D08)
1140
1141/* NOA (HSW) */
1142#define HSW_MBVID2_NOA0 _MMIO(0x9E80)
1143#define HSW_MBVID2_NOA1 _MMIO(0x9E84)
1144#define HSW_MBVID2_NOA2 _MMIO(0x9E88)
1145#define HSW_MBVID2_NOA3 _MMIO(0x9E8C)
1146#define HSW_MBVID2_NOA4 _MMIO(0x9E90)
1147#define HSW_MBVID2_NOA5 _MMIO(0x9E94)
1148#define HSW_MBVID2_NOA6 _MMIO(0x9E98)
1149#define HSW_MBVID2_NOA7 _MMIO(0x9E9C)
1150#define HSW_MBVID2_NOA8 _MMIO(0x9EA0)
1151#define HSW_MBVID2_NOA9 _MMIO(0x9EA4)
1152
1153#define HSW_MBVID2_MISR0 _MMIO(0x9EC0)
1122 1154
1123/* NOA (Gen8+) */ 1155/* NOA (Gen8+) */
1124#define NOA_CONFIG(i) _MMIO(0x0D0C + (i) * 4) 1156#define NOA_CONFIG(i) _MMIO(0x0D0C + (i) * 4)
@@ -2329,6 +2361,8 @@ enum i915_power_well_id {
2329#define ARB_MODE_SWIZZLE_BDW (1<<1) 2361#define ARB_MODE_SWIZZLE_BDW (1<<1)
2330#define RENDER_HWS_PGA_GEN7 _MMIO(0x04080) 2362#define RENDER_HWS_PGA_GEN7 _MMIO(0x04080)
2331#define RING_FAULT_REG(engine) _MMIO(0x4094 + 0x100*(engine)->hw_id) 2363#define RING_FAULT_REG(engine) _MMIO(0x4094 + 0x100*(engine)->hw_id)
2364#define GEN8_RING_FAULT_REG _MMIO(0x4094)
2365#define GEN8_RING_FAULT_ENGINE_ID(x) (((x) >> 12) & 0x7)
2332#define RING_FAULT_GTTSEL_MASK (1<<11) 2366#define RING_FAULT_GTTSEL_MASK (1<<11)
2333#define RING_FAULT_SRCID(x) (((x) >> 3) & 0xff) 2367#define RING_FAULT_SRCID(x) (((x) >> 3) & 0xff)
2334#define RING_FAULT_FAULT_TYPE(x) (((x) >> 1) & 0x3) 2368#define RING_FAULT_FAULT_TYPE(x) (((x) >> 1) & 0x3)
@@ -2951,9 +2985,6 @@ enum i915_power_well_id {
2951#define ILK_DPFC_CHICKEN _MMIO(0x43224) 2985#define ILK_DPFC_CHICKEN _MMIO(0x43224)
2952#define ILK_DPFC_DISABLE_DUMMY0 (1<<8) 2986#define ILK_DPFC_DISABLE_DUMMY0 (1<<8)
2953#define ILK_DPFC_NUKE_ON_ANY_MODIFICATION (1<<23) 2987#define ILK_DPFC_NUKE_ON_ANY_MODIFICATION (1<<23)
2954#define GLK_SKIP_SEG_EN (1<<12)
2955#define GLK_SKIP_SEG_COUNT_MASK (3<<10)
2956#define GLK_SKIP_SEG_COUNT(x) ((x)<<10)
2957#define ILK_FBC_RT_BASE _MMIO(0x2128) 2988#define ILK_FBC_RT_BASE _MMIO(0x2128)
2958#define ILK_FBC_RT_VALID (1<<0) 2989#define ILK_FBC_RT_VALID (1<<0)
2959#define SNB_FBC_FRONT_BUFFER (1<<1) 2990#define SNB_FBC_FRONT_BUFFER (1<<1)
@@ -3398,6 +3429,7 @@ enum i915_power_well_id {
3398#define ELK_STOLEN_RESERVED _MMIO(MCHBAR_MIRROR_BASE + 0x48) 3429#define ELK_STOLEN_RESERVED _MMIO(MCHBAR_MIRROR_BASE + 0x48)
3399#define G4X_STOLEN_RESERVED_ADDR1_MASK (0xFFFF << 16) 3430#define G4X_STOLEN_RESERVED_ADDR1_MASK (0xFFFF << 16)
3400#define G4X_STOLEN_RESERVED_ADDR2_MASK (0xFFF << 4) 3431#define G4X_STOLEN_RESERVED_ADDR2_MASK (0xFFF << 4)
3432#define G4X_STOLEN_RESERVED_ENABLE (1 << 0)
3401 3433
3402/* Memory controller frequency in MCHBAR for Haswell (possible SNB+) */ 3434/* Memory controller frequency in MCHBAR for Haswell (possible SNB+) */
3403#define DCLK _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5e04) 3435#define DCLK _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5e04)
@@ -3819,6 +3851,7 @@ enum {
3819 * GEN9 clock gating regs 3851 * GEN9 clock gating regs
3820 */ 3852 */
3821#define GEN9_CLKGATE_DIS_0 _MMIO(0x46530) 3853#define GEN9_CLKGATE_DIS_0 _MMIO(0x46530)
3854#define DARBF_GATING_DIS (1 << 27)
3822#define PWM2_GATING_DIS (1 << 14) 3855#define PWM2_GATING_DIS (1 << 14)
3823#define PWM1_GATING_DIS (1 << 13) 3856#define PWM1_GATING_DIS (1 << 13)
3824 3857
@@ -3837,6 +3870,7 @@ enum {
3837 */ 3870 */
3838#define SLICE_UNIT_LEVEL_CLKGATE _MMIO(0x94d4) 3871#define SLICE_UNIT_LEVEL_CLKGATE _MMIO(0x94d4)
3839#define SARBUNIT_CLKGATE_DIS (1 << 5) 3872#define SARBUNIT_CLKGATE_DIS (1 << 5)
3873#define RCCUNIT_CLKGATE_DIS (1 << 7)
3840 3874
3841/* 3875/*
3842 * Display engine regs 3876 * Display engine regs
@@ -6263,7 +6297,7 @@ enum {
6263#define _PLANE_CTL_2_A 0x70280 6297#define _PLANE_CTL_2_A 0x70280
6264#define _PLANE_CTL_3_A 0x70380 6298#define _PLANE_CTL_3_A 0x70380
6265#define PLANE_CTL_ENABLE (1 << 31) 6299#define PLANE_CTL_ENABLE (1 << 31)
6266#define PLANE_CTL_PIPE_GAMMA_ENABLE (1 << 30) 6300#define PLANE_CTL_PIPE_GAMMA_ENABLE (1 << 30) /* Pre-GLK */
6267#define PLANE_CTL_FORMAT_MASK (0xf << 24) 6301#define PLANE_CTL_FORMAT_MASK (0xf << 24)
6268#define PLANE_CTL_FORMAT_YUV422 ( 0 << 24) 6302#define PLANE_CTL_FORMAT_YUV422 ( 0 << 24)
6269#define PLANE_CTL_FORMAT_NV12 ( 1 << 24) 6303#define PLANE_CTL_FORMAT_NV12 ( 1 << 24)
@@ -6273,7 +6307,7 @@ enum {
6273#define PLANE_CTL_FORMAT_AYUV ( 8 << 24) 6307#define PLANE_CTL_FORMAT_AYUV ( 8 << 24)
6274#define PLANE_CTL_FORMAT_INDEXED ( 12 << 24) 6308#define PLANE_CTL_FORMAT_INDEXED ( 12 << 24)
6275#define PLANE_CTL_FORMAT_RGB_565 ( 14 << 24) 6309#define PLANE_CTL_FORMAT_RGB_565 ( 14 << 24)
6276#define PLANE_CTL_PIPE_CSC_ENABLE (1 << 23) 6310#define PLANE_CTL_PIPE_CSC_ENABLE (1 << 23) /* Pre-GLK */
6277#define PLANE_CTL_KEY_ENABLE_MASK (0x3 << 21) 6311#define PLANE_CTL_KEY_ENABLE_MASK (0x3 << 21)
6278#define PLANE_CTL_KEY_ENABLE_SOURCE ( 1 << 21) 6312#define PLANE_CTL_KEY_ENABLE_SOURCE ( 1 << 21)
6279#define PLANE_CTL_KEY_ENABLE_DESTINATION ( 2 << 21) 6313#define PLANE_CTL_KEY_ENABLE_DESTINATION ( 2 << 21)
@@ -6286,13 +6320,13 @@ enum {
6286#define PLANE_CTL_YUV422_VYUY ( 3 << 16) 6320#define PLANE_CTL_YUV422_VYUY ( 3 << 16)
6287#define PLANE_CTL_DECOMPRESSION_ENABLE (1 << 15) 6321#define PLANE_CTL_DECOMPRESSION_ENABLE (1 << 15)
6288#define PLANE_CTL_TRICKLE_FEED_DISABLE (1 << 14) 6322#define PLANE_CTL_TRICKLE_FEED_DISABLE (1 << 14)
6289#define PLANE_CTL_PLANE_GAMMA_DISABLE (1 << 13) 6323#define PLANE_CTL_PLANE_GAMMA_DISABLE (1 << 13) /* Pre-GLK */
6290#define PLANE_CTL_TILED_MASK (0x7 << 10) 6324#define PLANE_CTL_TILED_MASK (0x7 << 10)
6291#define PLANE_CTL_TILED_LINEAR ( 0 << 10) 6325#define PLANE_CTL_TILED_LINEAR ( 0 << 10)
6292#define PLANE_CTL_TILED_X ( 1 << 10) 6326#define PLANE_CTL_TILED_X ( 1 << 10)
6293#define PLANE_CTL_TILED_Y ( 4 << 10) 6327#define PLANE_CTL_TILED_Y ( 4 << 10)
6294#define PLANE_CTL_TILED_YF ( 5 << 10) 6328#define PLANE_CTL_TILED_YF ( 5 << 10)
6295#define PLANE_CTL_ALPHA_MASK (0x3 << 4) 6329#define PLANE_CTL_ALPHA_MASK (0x3 << 4) /* Pre-GLK */
6296#define PLANE_CTL_ALPHA_DISABLE ( 0 << 4) 6330#define PLANE_CTL_ALPHA_DISABLE ( 0 << 4)
6297#define PLANE_CTL_ALPHA_SW_PREMULTIPLY ( 2 << 4) 6331#define PLANE_CTL_ALPHA_SW_PREMULTIPLY ( 2 << 4)
6298#define PLANE_CTL_ALPHA_HW_PREMULTIPLY ( 3 << 4) 6332#define PLANE_CTL_ALPHA_HW_PREMULTIPLY ( 3 << 4)
@@ -6332,6 +6366,10 @@ enum {
6332#define PLANE_COLOR_PIPE_GAMMA_ENABLE (1 << 30) 6366#define PLANE_COLOR_PIPE_GAMMA_ENABLE (1 << 30)
6333#define PLANE_COLOR_PIPE_CSC_ENABLE (1 << 23) 6367#define PLANE_COLOR_PIPE_CSC_ENABLE (1 << 23)
6334#define PLANE_COLOR_PLANE_GAMMA_DISABLE (1 << 13) 6368#define PLANE_COLOR_PLANE_GAMMA_DISABLE (1 << 13)
6369#define PLANE_COLOR_ALPHA_MASK (0x3 << 4)
6370#define PLANE_COLOR_ALPHA_DISABLE (0 << 4)
6371#define PLANE_COLOR_ALPHA_SW_PREMULTIPLY (2 << 4)
6372#define PLANE_COLOR_ALPHA_HW_PREMULTIPLY (3 << 4)
6335#define _PLANE_BUF_CFG_1_A 0x7027c 6373#define _PLANE_BUF_CFG_1_A 0x7027c
6336#define _PLANE_BUF_CFG_2_A 0x7037c 6374#define _PLANE_BUF_CFG_2_A 0x7037c
6337#define _PLANE_NV12_BUF_CFG_1_A 0x70278 6375#define _PLANE_NV12_BUF_CFG_1_A 0x70278
@@ -7774,8 +7812,9 @@ enum {
7774#define FORCEWAKE_ACK_MEDIA_GEN9 _MMIO(0x0D88) 7812#define FORCEWAKE_ACK_MEDIA_GEN9 _MMIO(0x0D88)
7775#define FORCEWAKE_ACK_RENDER_GEN9 _MMIO(0x0D84) 7813#define FORCEWAKE_ACK_RENDER_GEN9 _MMIO(0x0D84)
7776#define FORCEWAKE_ACK_BLITTER_GEN9 _MMIO(0x130044) 7814#define FORCEWAKE_ACK_BLITTER_GEN9 _MMIO(0x130044)
7777#define FORCEWAKE_KERNEL 0x1 7815#define FORCEWAKE_KERNEL BIT(0)
7778#define FORCEWAKE_USER 0x2 7816#define FORCEWAKE_USER BIT(1)
7817#define FORCEWAKE_KERNEL_FALLBACK BIT(15)
7779#define FORCEWAKE_MT_ACK _MMIO(0x130040) 7818#define FORCEWAKE_MT_ACK _MMIO(0x130040)
7780#define ECOBUS _MMIO(0xa180) 7819#define ECOBUS _MMIO(0xa180)
7781#define FORCEWAKE_MT_ENABLE (1<<5) 7820#define FORCEWAKE_MT_ENABLE (1<<5)
@@ -7905,6 +7944,7 @@ enum {
7905#define GEN6_RC1_WAKE_RATE_LIMIT _MMIO(0xA098) 7944#define GEN6_RC1_WAKE_RATE_LIMIT _MMIO(0xA098)
7906#define GEN6_RC6_WAKE_RATE_LIMIT _MMIO(0xA09C) 7945#define GEN6_RC6_WAKE_RATE_LIMIT _MMIO(0xA09C)
7907#define GEN6_RC6pp_WAKE_RATE_LIMIT _MMIO(0xA0A0) 7946#define GEN6_RC6pp_WAKE_RATE_LIMIT _MMIO(0xA0A0)
7947#define GEN10_MEDIA_WAKE_RATE_LIMIT _MMIO(0xA0A0)
7908#define GEN6_RC_EVALUATION_INTERVAL _MMIO(0xA0A8) 7948#define GEN6_RC_EVALUATION_INTERVAL _MMIO(0xA0A8)
7909#define GEN6_RC_IDLE_HYSTERSIS _MMIO(0xA0AC) 7949#define GEN6_RC_IDLE_HYSTERSIS _MMIO(0xA0AC)
7910#define GEN6_RC_SLEEP _MMIO(0xA0B0) 7950#define GEN6_RC_SLEEP _MMIO(0xA0B0)
@@ -8036,11 +8076,18 @@ enum {
8036#define CHV_EU311_PG_ENABLE (1<<1) 8076#define CHV_EU311_PG_ENABLE (1<<1)
8037 8077
8038#define GEN9_SLICE_PGCTL_ACK(slice) _MMIO(0x804c + (slice)*0x4) 8078#define GEN9_SLICE_PGCTL_ACK(slice) _MMIO(0x804c + (slice)*0x4)
8079#define GEN10_SLICE_PGCTL_ACK(slice) _MMIO(0x804c + ((slice) / 3) * 0x34 + \
8080 ((slice) % 3) * 0x4)
8039#define GEN9_PGCTL_SLICE_ACK (1 << 0) 8081#define GEN9_PGCTL_SLICE_ACK (1 << 0)
8040#define GEN9_PGCTL_SS_ACK(subslice) (1 << (2 + (subslice)*2)) 8082#define GEN9_PGCTL_SS_ACK(subslice) (1 << (2 + (subslice)*2))
8083#define GEN10_PGCTL_VALID_SS_MASK(slice) ((slice) == 0 ? 0x7F : 0x1F)
8041 8084
8042#define GEN9_SS01_EU_PGCTL_ACK(slice) _MMIO(0x805c + (slice)*0x8) 8085#define GEN9_SS01_EU_PGCTL_ACK(slice) _MMIO(0x805c + (slice)*0x8)
8086#define GEN10_SS01_EU_PGCTL_ACK(slice) _MMIO(0x805c + ((slice) / 3) * 0x30 + \
8087 ((slice) % 3) * 0x8)
8043#define GEN9_SS23_EU_PGCTL_ACK(slice) _MMIO(0x8060 + (slice)*0x8) 8088#define GEN9_SS23_EU_PGCTL_ACK(slice) _MMIO(0x8060 + (slice)*0x8)
8089#define GEN10_SS23_EU_PGCTL_ACK(slice) _MMIO(0x8060 + ((slice) / 3) * 0x30 + \
8090 ((slice) % 3) * 0x8)
8044#define GEN9_PGCTL_SSA_EU08_ACK (1 << 0) 8091#define GEN9_PGCTL_SSA_EU08_ACK (1 << 0)
8045#define GEN9_PGCTL_SSA_EU19_ACK (1 << 2) 8092#define GEN9_PGCTL_SSA_EU19_ACK (1 << 2)
8046#define GEN9_PGCTL_SSA_EU210_ACK (1 << 4) 8093#define GEN9_PGCTL_SSA_EU210_ACK (1 << 4)
@@ -8837,6 +8884,12 @@ enum skl_power_gate {
8837#define ILK_TIMESTAMP_HI _MMIO(0x70070) 8884#define ILK_TIMESTAMP_HI _MMIO(0x70070)
8838#define IVB_TIMESTAMP_CTR _MMIO(0x44070) 8885#define IVB_TIMESTAMP_CTR _MMIO(0x44070)
8839 8886
8887#define GEN9_TIMESTAMP_OVERRIDE _MMIO(0x44074)
8888#define GEN9_TIMESTAMP_OVERRIDE_US_COUNTER_DIVIDER_SHIFT 0
8889#define GEN9_TIMESTAMP_OVERRIDE_US_COUNTER_DIVIDER_MASK 0x3ff
8890#define GEN9_TIMESTAMP_OVERRIDE_US_COUNTER_DENOMINATOR_SHIFT 12
8891#define GEN9_TIMESTAMP_OVERRIDE_US_COUNTER_DENOMINATOR_MASK (0xf << 12)
8892
8840#define _PIPE_FRMTMSTMP_A 0x70048 8893#define _PIPE_FRMTMSTMP_A 0x70048
8841#define PIPE_FRMTMSTMP(pipe) \ 8894#define PIPE_FRMTMSTMP(pipe) \
8842 _MMIO_PIPE2(pipe, _PIPE_FRMTMSTMP_A) 8895 _MMIO_PIPE2(pipe, _PIPE_FRMTMSTMP_A)