11bb76ff1Sjsg /* SPDX-License-Identifier: MIT */ 21bb76ff1Sjsg /* 31bb76ff1Sjsg * Copyright © 2022 Intel Corporation 41bb76ff1Sjsg */ 51bb76ff1Sjsg 61bb76ff1Sjsg #ifndef __INTEL_PERF_OA_REGS__ 71bb76ff1Sjsg #define __INTEL_PERF_OA_REGS__ 81bb76ff1Sjsg 91bb76ff1Sjsg #include "i915_reg_defs.h" 101bb76ff1Sjsg 111bb76ff1Sjsg #define GEN7_OACONTROL _MMIO(0x2360) 121bb76ff1Sjsg #define GEN7_OACONTROL_CTX_MASK 0xFFFFF000 131bb76ff1Sjsg #define GEN7_OACONTROL_TIMER_PERIOD_MASK 0x3F 141bb76ff1Sjsg #define GEN7_OACONTROL_TIMER_PERIOD_SHIFT 6 151bb76ff1Sjsg #define GEN7_OACONTROL_TIMER_ENABLE (1 << 5) 161bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_A13 (0 << 2) 171bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_A29 (1 << 2) 181bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_A13_B8_C8 (2 << 2) 191bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_A29_B8_C8 (3 << 2) 201bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_B4_C8 (4 << 2) 211bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_A45_B8_C8 (5 << 2) 221bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_B4_C8_A16 (6 << 2) 231bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_C4_B8 (7 << 2) 241bb76ff1Sjsg #define GEN7_OACONTROL_FORMAT_SHIFT 2 251bb76ff1Sjsg #define GEN7_OACONTROL_PER_CTX_ENABLE (1 << 1) 261bb76ff1Sjsg #define GEN7_OACONTROL_ENABLE (1 << 0) 271bb76ff1Sjsg 281bb76ff1Sjsg #define GEN8_OACTXID _MMIO(0x2364) 291bb76ff1Sjsg 301bb76ff1Sjsg #define GEN8_OA_DEBUG _MMIO(0x2B04) 311bb76ff1Sjsg #define GEN9_OA_DEBUG_DISABLE_CLK_RATIO_REPORTS (1 << 5) 321bb76ff1Sjsg #define GEN9_OA_DEBUG_INCLUDE_CLK_RATIO (1 << 6) 331bb76ff1Sjsg #define GEN9_OA_DEBUG_DISABLE_GO_1_0_REPORTS (1 << 2) 341bb76ff1Sjsg #define GEN9_OA_DEBUG_DISABLE_CTX_SWITCH_REPORTS (1 << 1) 351bb76ff1Sjsg 361bb76ff1Sjsg #define GEN8_OACONTROL _MMIO(0x2B00) 371bb76ff1Sjsg #define GEN8_OA_REPORT_FORMAT_A12 (0 << 2) 381bb76ff1Sjsg #define GEN8_OA_REPORT_FORMAT_A12_B8_C8 (2 << 2) 391bb76ff1Sjsg #define GEN8_OA_REPORT_FORMAT_A36_B8_C8 (5 << 2) 401bb76ff1Sjsg #define GEN8_OA_REPORT_FORMAT_C4_B8 (7 << 2) 411bb76ff1Sjsg #define GEN8_OA_REPORT_FORMAT_SHIFT 2 421bb76ff1Sjsg #define GEN8_OA_SPECIFIC_CONTEXT_ENABLE (1 << 1) 431bb76ff1Sjsg #define GEN8_OA_COUNTER_ENABLE (1 << 0) 441bb76ff1Sjsg 451bb76ff1Sjsg #define GEN8_OACTXCONTROL _MMIO(0x2360) 461bb76ff1Sjsg #define GEN8_OA_TIMER_PERIOD_MASK 0x3F 471bb76ff1Sjsg #define GEN8_OA_TIMER_PERIOD_SHIFT 2 481bb76ff1Sjsg #define GEN8_OA_TIMER_ENABLE (1 << 1) 491bb76ff1Sjsg #define GEN8_OA_COUNTER_RESUME (1 << 0) 501bb76ff1Sjsg 511bb76ff1Sjsg #define GEN7_OABUFFER _MMIO(0x23B0) /* R/W */ 521bb76ff1Sjsg #define GEN7_OABUFFER_OVERRUN_DISABLE (1 << 3) 531bb76ff1Sjsg #define GEN7_OABUFFER_EDGE_TRIGGER (1 << 2) 541bb76ff1Sjsg #define GEN7_OABUFFER_STOP_RESUME_ENABLE (1 << 1) 551bb76ff1Sjsg #define GEN7_OABUFFER_RESUME (1 << 0) 561bb76ff1Sjsg 571bb76ff1Sjsg #define GEN8_OABUFFER_UDW _MMIO(0x23b4) 581bb76ff1Sjsg #define GEN8_OABUFFER _MMIO(0x2b14) 591bb76ff1Sjsg #define GEN8_OABUFFER_MEM_SELECT_GGTT (1 << 0) /* 0: PPGTT, 1: GGTT */ 601bb76ff1Sjsg 611bb76ff1Sjsg #define GEN7_OASTATUS1 _MMIO(0x2364) 621bb76ff1Sjsg #define GEN7_OASTATUS1_TAIL_MASK 0xffffffc0 631bb76ff1Sjsg #define GEN7_OASTATUS1_COUNTER_OVERFLOW (1 << 2) 641bb76ff1Sjsg #define GEN7_OASTATUS1_OABUFFER_OVERFLOW (1 << 1) 651bb76ff1Sjsg #define GEN7_OASTATUS1_REPORT_LOST (1 << 0) 661bb76ff1Sjsg 671bb76ff1Sjsg #define GEN7_OASTATUS2 _MMIO(0x2368) 681bb76ff1Sjsg #define GEN7_OASTATUS2_HEAD_MASK 0xffffffc0 691bb76ff1Sjsg #define GEN7_OASTATUS2_MEM_SELECT_GGTT (1 << 0) /* 0: PPGTT, 1: GGTT */ 701bb76ff1Sjsg 711bb76ff1Sjsg #define GEN8_OASTATUS _MMIO(0x2b08) 721bb76ff1Sjsg #define GEN8_OASTATUS_TAIL_POINTER_WRAP (1 << 17) 731bb76ff1Sjsg #define GEN8_OASTATUS_HEAD_POINTER_WRAP (1 << 16) 741bb76ff1Sjsg #define GEN8_OASTATUS_OVERRUN_STATUS (1 << 3) 751bb76ff1Sjsg #define GEN8_OASTATUS_COUNTER_OVERFLOW (1 << 2) 761bb76ff1Sjsg #define GEN8_OASTATUS_OABUFFER_OVERFLOW (1 << 1) 771bb76ff1Sjsg #define GEN8_OASTATUS_REPORT_LOST (1 << 0) 781bb76ff1Sjsg 791bb76ff1Sjsg #define GEN8_OAHEADPTR _MMIO(0x2B0C) 801bb76ff1Sjsg #define GEN8_OAHEADPTR_MASK 0xffffffc0 811bb76ff1Sjsg #define GEN8_OATAILPTR _MMIO(0x2B10) 821bb76ff1Sjsg #define GEN8_OATAILPTR_MASK 0xffffffc0 831bb76ff1Sjsg 841bb76ff1Sjsg #define OABUFFER_SIZE_128K (0 << 3) 851bb76ff1Sjsg #define OABUFFER_SIZE_256K (1 << 3) 861bb76ff1Sjsg #define OABUFFER_SIZE_512K (2 << 3) 871bb76ff1Sjsg #define OABUFFER_SIZE_1M (3 << 3) 881bb76ff1Sjsg #define OABUFFER_SIZE_2M (4 << 3) 891bb76ff1Sjsg #define OABUFFER_SIZE_4M (5 << 3) 901bb76ff1Sjsg #define OABUFFER_SIZE_8M (6 << 3) 911bb76ff1Sjsg #define OABUFFER_SIZE_16M (7 << 3) 921bb76ff1Sjsg 931bb76ff1Sjsg #define GEN12_OA_TLB_INV_CR _MMIO(0xceec) 941bb76ff1Sjsg 951bb76ff1Sjsg /* Gen12 OAR unit */ 961bb76ff1Sjsg #define GEN12_OAR_OACONTROL _MMIO(0x2960) 971bb76ff1Sjsg #define GEN12_OAR_OACONTROL_COUNTER_FORMAT_SHIFT 1 981bb76ff1Sjsg #define GEN12_OAR_OACONTROL_COUNTER_ENABLE (1 << 0) 991bb76ff1Sjsg 100*f005ef32Sjsg #define GEN12_OACTXCONTROL(base) _MMIO((base) + 0x360) 1011bb76ff1Sjsg #define GEN12_OAR_OASTATUS _MMIO(0x2968) 1021bb76ff1Sjsg 1031bb76ff1Sjsg /* Gen12 OAG unit */ 1041bb76ff1Sjsg #define GEN12_OAG_OAHEADPTR _MMIO(0xdb00) 1051bb76ff1Sjsg #define GEN12_OAG_OAHEADPTR_MASK 0xffffffc0 1061bb76ff1Sjsg #define GEN12_OAG_OATAILPTR _MMIO(0xdb04) 1071bb76ff1Sjsg #define GEN12_OAG_OATAILPTR_MASK 0xffffffc0 1081bb76ff1Sjsg 1091bb76ff1Sjsg #define GEN12_OAG_OABUFFER _MMIO(0xdb08) 1101bb76ff1Sjsg #define GEN12_OAG_OABUFFER_BUFFER_SIZE_MASK (0x7) 1111bb76ff1Sjsg #define GEN12_OAG_OABUFFER_BUFFER_SIZE_SHIFT (3) 1121bb76ff1Sjsg #define GEN12_OAG_OABUFFER_MEMORY_SELECT (1 << 0) /* 0: PPGTT, 1: GGTT */ 1131bb76ff1Sjsg 1141bb76ff1Sjsg #define GEN12_OAG_OAGLBCTXCTRL _MMIO(0x2b28) 1151bb76ff1Sjsg #define GEN12_OAG_OAGLBCTXCTRL_TIMER_PERIOD_SHIFT 2 1161bb76ff1Sjsg #define GEN12_OAG_OAGLBCTXCTRL_TIMER_ENABLE (1 << 1) 1171bb76ff1Sjsg #define GEN12_OAG_OAGLBCTXCTRL_COUNTER_RESUME (1 << 0) 1181bb76ff1Sjsg 1191bb76ff1Sjsg #define GEN12_OAG_OACONTROL _MMIO(0xdaf4) 1201bb76ff1Sjsg #define GEN12_OAG_OACONTROL_OA_COUNTER_FORMAT_SHIFT 2 1211bb76ff1Sjsg #define GEN12_OAG_OACONTROL_OA_COUNTER_ENABLE (1 << 0) 1221bb76ff1Sjsg 1231bb76ff1Sjsg #define GEN12_OAG_OA_DEBUG _MMIO(0xdaf8) 1241bb76ff1Sjsg #define GEN12_OAG_OA_DEBUG_INCLUDE_CLK_RATIO (1 << 6) 1251bb76ff1Sjsg #define GEN12_OAG_OA_DEBUG_DISABLE_CLK_RATIO_REPORTS (1 << 5) 1261bb76ff1Sjsg #define GEN12_OAG_OA_DEBUG_DISABLE_GO_1_0_REPORTS (1 << 2) 1271bb76ff1Sjsg #define GEN12_OAG_OA_DEBUG_DISABLE_CTX_SWITCH_REPORTS (1 << 1) 1281bb76ff1Sjsg 1291bb76ff1Sjsg #define GEN12_OAG_OASTATUS _MMIO(0xdafc) 1301bb76ff1Sjsg #define GEN12_OAG_OASTATUS_COUNTER_OVERFLOW (1 << 2) 1311bb76ff1Sjsg #define GEN12_OAG_OASTATUS_BUFFER_OVERFLOW (1 << 1) 1321bb76ff1Sjsg #define GEN12_OAG_OASTATUS_REPORT_LOST (1 << 0) 1331bb76ff1Sjsg 1341bb76ff1Sjsg #define GDT_CHICKEN_BITS _MMIO(0x9840) 1351bb76ff1Sjsg #define GT_NOA_ENABLE 0x00000080 1361bb76ff1Sjsg 137*f005ef32Sjsg /* Gen12 OAM unit */ 138*f005ef32Sjsg #define GEN12_OAM_HEAD_POINTER_OFFSET (0x1a0) 139*f005ef32Sjsg #define GEN12_OAM_HEAD_POINTER_MASK 0xffffffc0 140*f005ef32Sjsg 141*f005ef32Sjsg #define GEN12_OAM_TAIL_POINTER_OFFSET (0x1a4) 142*f005ef32Sjsg #define GEN12_OAM_TAIL_POINTER_MASK 0xffffffc0 143*f005ef32Sjsg 144*f005ef32Sjsg #define GEN12_OAM_BUFFER_OFFSET (0x1a8) 145*f005ef32Sjsg #define GEN12_OAM_BUFFER_SIZE_MASK (0x7) 146*f005ef32Sjsg #define GEN12_OAM_BUFFER_SIZE_SHIFT (3) 147*f005ef32Sjsg #define GEN12_OAM_BUFFER_MEMORY_SELECT REG_BIT(0) /* 0: PPGTT, 1: GGTT */ 148*f005ef32Sjsg 149*f005ef32Sjsg #define GEN12_OAM_CONTEXT_CONTROL_OFFSET (0x1bc) 150*f005ef32Sjsg #define GEN12_OAM_CONTEXT_CONTROL_TIMER_PERIOD_SHIFT 2 151*f005ef32Sjsg #define GEN12_OAM_CONTEXT_CONTROL_TIMER_ENABLE REG_BIT(1) 152*f005ef32Sjsg #define GEN12_OAM_CONTEXT_CONTROL_COUNTER_RESUME REG_BIT(0) 153*f005ef32Sjsg 154*f005ef32Sjsg #define GEN12_OAM_CONTROL_OFFSET (0x194) 155*f005ef32Sjsg #define GEN12_OAM_CONTROL_COUNTER_FORMAT_SHIFT 1 156*f005ef32Sjsg #define GEN12_OAM_CONTROL_COUNTER_ENABLE REG_BIT(0) 157*f005ef32Sjsg 158*f005ef32Sjsg #define GEN12_OAM_DEBUG_OFFSET (0x198) 159*f005ef32Sjsg #define GEN12_OAM_DEBUG_BUFFER_SIZE_SELECT REG_BIT(12) 160*f005ef32Sjsg #define GEN12_OAM_DEBUG_INCLUDE_CLK_RATIO REG_BIT(6) 161*f005ef32Sjsg #define GEN12_OAM_DEBUG_DISABLE_CLK_RATIO_REPORTS REG_BIT(5) 162*f005ef32Sjsg #define GEN12_OAM_DEBUG_DISABLE_GO_1_0_REPORTS REG_BIT(2) 163*f005ef32Sjsg #define GEN12_OAM_DEBUG_DISABLE_CTX_SWITCH_REPORTS REG_BIT(1) 164*f005ef32Sjsg 165*f005ef32Sjsg #define GEN12_OAM_STATUS_OFFSET (0x19c) 166*f005ef32Sjsg #define GEN12_OAM_STATUS_COUNTER_OVERFLOW REG_BIT(2) 167*f005ef32Sjsg #define GEN12_OAM_STATUS_BUFFER_OVERFLOW REG_BIT(1) 168*f005ef32Sjsg #define GEN12_OAM_STATUS_REPORT_LOST REG_BIT(0) 169*f005ef32Sjsg 170*f005ef32Sjsg #define GEN12_OAM_MMIO_TRG_OFFSET (0x1d0) 171*f005ef32Sjsg 172*f005ef32Sjsg #define GEN12_OAM_MMIO_TRG(base) \ 173*f005ef32Sjsg _MMIO((base) + GEN12_OAM_MMIO_TRG_OFFSET) 174*f005ef32Sjsg 175*f005ef32Sjsg #define GEN12_OAM_HEAD_POINTER(base) \ 176*f005ef32Sjsg _MMIO((base) + GEN12_OAM_HEAD_POINTER_OFFSET) 177*f005ef32Sjsg #define GEN12_OAM_TAIL_POINTER(base) \ 178*f005ef32Sjsg _MMIO((base) + GEN12_OAM_TAIL_POINTER_OFFSET) 179*f005ef32Sjsg #define GEN12_OAM_BUFFER(base) \ 180*f005ef32Sjsg _MMIO((base) + GEN12_OAM_BUFFER_OFFSET) 181*f005ef32Sjsg #define GEN12_OAM_CONTEXT_CONTROL(base) \ 182*f005ef32Sjsg _MMIO((base) + GEN12_OAM_CONTEXT_CONTROL_OFFSET) 183*f005ef32Sjsg #define GEN12_OAM_CONTROL(base) \ 184*f005ef32Sjsg _MMIO((base) + GEN12_OAM_CONTROL_OFFSET) 185*f005ef32Sjsg #define GEN12_OAM_DEBUG(base) \ 186*f005ef32Sjsg _MMIO((base) + GEN12_OAM_DEBUG_OFFSET) 187*f005ef32Sjsg #define GEN12_OAM_STATUS(base) \ 188*f005ef32Sjsg _MMIO((base) + GEN12_OAM_STATUS_OFFSET) 189*f005ef32Sjsg 190*f005ef32Sjsg #define GEN12_OAM_CEC0_0_OFFSET (0x40) 191*f005ef32Sjsg #define GEN12_OAM_CEC7_1_OFFSET (0x7c) 192*f005ef32Sjsg #define GEN12_OAM_CEC0_0(base) \ 193*f005ef32Sjsg _MMIO((base) + GEN12_OAM_CEC0_0_OFFSET) 194*f005ef32Sjsg #define GEN12_OAM_CEC7_1(base) \ 195*f005ef32Sjsg _MMIO((base) + GEN12_OAM_CEC7_1_OFFSET) 196*f005ef32Sjsg 197*f005ef32Sjsg #define GEN12_OAM_STARTTRIG1_OFFSET (0x00) 198*f005ef32Sjsg #define GEN12_OAM_STARTTRIG8_OFFSET (0x1c) 199*f005ef32Sjsg #define GEN12_OAM_STARTTRIG1(base) \ 200*f005ef32Sjsg _MMIO((base) + GEN12_OAM_STARTTRIG1_OFFSET) 201*f005ef32Sjsg #define GEN12_OAM_STARTTRIG8(base) \ 202*f005ef32Sjsg _MMIO((base) + GEN12_OAM_STARTTRIG8_OFFSET) 203*f005ef32Sjsg 204*f005ef32Sjsg #define GEN12_OAM_REPORTTRIG1_OFFSET (0x20) 205*f005ef32Sjsg #define GEN12_OAM_REPORTTRIG8_OFFSET (0x3c) 206*f005ef32Sjsg #define GEN12_OAM_REPORTTRIG1(base) \ 207*f005ef32Sjsg _MMIO((base) + GEN12_OAM_REPORTTRIG1_OFFSET) 208*f005ef32Sjsg #define GEN12_OAM_REPORTTRIG8(base) \ 209*f005ef32Sjsg _MMIO((base) + GEN12_OAM_REPORTTRIG8_OFFSET) 210*f005ef32Sjsg 211*f005ef32Sjsg #define GEN12_OAM_PERF_COUNTER_B0_OFFSET (0x84) 212*f005ef32Sjsg #define GEN12_OAM_PERF_COUNTER_B(base, idx) \ 213*f005ef32Sjsg _MMIO((base) + GEN12_OAM_PERF_COUNTER_B0_OFFSET + 4 * (idx)) 214*f005ef32Sjsg 2151bb76ff1Sjsg #endif /* __INTEL_PERF_OA_REGS__ */ 216