1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2022 Intel Corporation 4 */ 5 6 #ifndef __INTEL_PERF_OA_REGS__ 7 #define __INTEL_PERF_OA_REGS__ 8 9 #include "i915_reg_defs.h" 10 11 #define GEN7_OACONTROL _MMIO(0x2360) 12 #define GEN7_OACONTROL_CTX_MASK 0xFFFFF000 13 #define GEN7_OACONTROL_TIMER_PERIOD_MASK 0x3F 14 #define GEN7_OACONTROL_TIMER_PERIOD_SHIFT 6 15 #define GEN7_OACONTROL_TIMER_ENABLE (1 << 5) 16 #define GEN7_OACONTROL_FORMAT_A13 (0 << 2) 17 #define GEN7_OACONTROL_FORMAT_A29 (1 << 2) 18 #define GEN7_OACONTROL_FORMAT_A13_B8_C8 (2 << 2) 19 #define GEN7_OACONTROL_FORMAT_A29_B8_C8 (3 << 2) 20 #define GEN7_OACONTROL_FORMAT_B4_C8 (4 << 2) 21 #define GEN7_OACONTROL_FORMAT_A45_B8_C8 (5 << 2) 22 #define GEN7_OACONTROL_FORMAT_B4_C8_A16 (6 << 2) 23 #define GEN7_OACONTROL_FORMAT_C4_B8 (7 << 2) 24 #define GEN7_OACONTROL_FORMAT_SHIFT 2 25 #define GEN7_OACONTROL_PER_CTX_ENABLE (1 << 1) 26 #define GEN7_OACONTROL_ENABLE (1 << 0) 27 28 #define GEN8_OACTXID _MMIO(0x2364) 29 30 #define GEN8_OA_DEBUG _MMIO(0x2B04) 31 #define GEN9_OA_DEBUG_DISABLE_CLK_RATIO_REPORTS (1 << 5) 32 #define GEN9_OA_DEBUG_INCLUDE_CLK_RATIO (1 << 6) 33 #define GEN9_OA_DEBUG_DISABLE_GO_1_0_REPORTS (1 << 2) 34 #define GEN9_OA_DEBUG_DISABLE_CTX_SWITCH_REPORTS (1 << 1) 35 36 #define GEN8_OACONTROL _MMIO(0x2B00) 37 #define GEN8_OA_REPORT_FORMAT_A12 (0 << 2) 38 #define GEN8_OA_REPORT_FORMAT_A12_B8_C8 (2 << 2) 39 #define GEN8_OA_REPORT_FORMAT_A36_B8_C8 (5 << 2) 40 #define GEN8_OA_REPORT_FORMAT_C4_B8 (7 << 2) 41 #define GEN8_OA_REPORT_FORMAT_SHIFT 2 42 #define GEN8_OA_SPECIFIC_CONTEXT_ENABLE (1 << 1) 43 #define GEN8_OA_COUNTER_ENABLE (1 << 0) 44 45 #define GEN8_OACTXCONTROL _MMIO(0x2360) 46 #define GEN8_OA_TIMER_PERIOD_MASK 0x3F 47 #define GEN8_OA_TIMER_PERIOD_SHIFT 2 48 #define GEN8_OA_TIMER_ENABLE (1 << 1) 49 #define GEN8_OA_COUNTER_RESUME (1 << 0) 50 51 #define GEN7_OABUFFER _MMIO(0x23B0) /* R/W */ 52 #define GEN7_OABUFFER_OVERRUN_DISABLE (1 << 3) 53 #define GEN7_OABUFFER_EDGE_TRIGGER (1 << 2) 54 #define GEN7_OABUFFER_STOP_RESUME_ENABLE (1 << 1) 55 #define GEN7_OABUFFER_RESUME (1 << 0) 56 57 #define GEN8_OABUFFER_UDW _MMIO(0x23b4) 58 #define GEN8_OABUFFER _MMIO(0x2b14) 59 #define GEN8_OABUFFER_MEM_SELECT_GGTT (1 << 0) /* 0: PPGTT, 1: GGTT */ 60 61 #define GEN7_OASTATUS1 _MMIO(0x2364) 62 #define GEN7_OASTATUS1_TAIL_MASK 0xffffffc0 63 #define GEN7_OASTATUS1_COUNTER_OVERFLOW (1 << 2) 64 #define GEN7_OASTATUS1_OABUFFER_OVERFLOW (1 << 1) 65 #define GEN7_OASTATUS1_REPORT_LOST (1 << 0) 66 67 #define GEN7_OASTATUS2 _MMIO(0x2368) 68 #define GEN7_OASTATUS2_HEAD_MASK 0xffffffc0 69 #define GEN7_OASTATUS2_MEM_SELECT_GGTT (1 << 0) /* 0: PPGTT, 1: GGTT */ 70 71 #define GEN8_OASTATUS _MMIO(0x2b08) 72 #define GEN8_OASTATUS_TAIL_POINTER_WRAP (1 << 17) 73 #define GEN8_OASTATUS_HEAD_POINTER_WRAP (1 << 16) 74 #define GEN8_OASTATUS_OVERRUN_STATUS (1 << 3) 75 #define GEN8_OASTATUS_COUNTER_OVERFLOW (1 << 2) 76 #define GEN8_OASTATUS_OABUFFER_OVERFLOW (1 << 1) 77 #define GEN8_OASTATUS_REPORT_LOST (1 << 0) 78 79 #define GEN8_OAHEADPTR _MMIO(0x2B0C) 80 #define GEN8_OAHEADPTR_MASK 0xffffffc0 81 #define GEN8_OATAILPTR _MMIO(0x2B10) 82 #define GEN8_OATAILPTR_MASK 0xffffffc0 83 84 #define OABUFFER_SIZE_128K (0 << 3) 85 #define OABUFFER_SIZE_256K (1 << 3) 86 #define OABUFFER_SIZE_512K (2 << 3) 87 #define OABUFFER_SIZE_1M (3 << 3) 88 #define OABUFFER_SIZE_2M (4 << 3) 89 #define OABUFFER_SIZE_4M (5 << 3) 90 #define OABUFFER_SIZE_8M (6 << 3) 91 #define OABUFFER_SIZE_16M (7 << 3) 92 93 #define GEN12_OA_TLB_INV_CR _MMIO(0xceec) 94 95 /* Gen12 OAR unit */ 96 #define GEN12_OAR_OACONTROL _MMIO(0x2960) 97 #define GEN12_OAR_OACONTROL_COUNTER_FORMAT_SHIFT 1 98 #define GEN12_OAR_OACONTROL_COUNTER_ENABLE (1 << 0) 99 100 #define GEN12_OACTXCONTROL(base) _MMIO((base) + 0x360) 101 #define GEN12_OAR_OASTATUS _MMIO(0x2968) 102 103 /* Gen12 OAG unit */ 104 #define GEN12_OAG_OAHEADPTR _MMIO(0xdb00) 105 #define GEN12_OAG_OAHEADPTR_MASK 0xffffffc0 106 #define GEN12_OAG_OATAILPTR _MMIO(0xdb04) 107 #define GEN12_OAG_OATAILPTR_MASK 0xffffffc0 108 109 #define GEN12_OAG_OABUFFER _MMIO(0xdb08) 110 #define GEN12_OAG_OABUFFER_BUFFER_SIZE_MASK (0x7) 111 #define GEN12_OAG_OABUFFER_BUFFER_SIZE_SHIFT (3) 112 #define GEN12_OAG_OABUFFER_MEMORY_SELECT (1 << 0) /* 0: PPGTT, 1: GGTT */ 113 114 #define GEN12_OAG_OAGLBCTXCTRL _MMIO(0x2b28) 115 #define GEN12_OAG_OAGLBCTXCTRL_TIMER_PERIOD_SHIFT 2 116 #define GEN12_OAG_OAGLBCTXCTRL_TIMER_ENABLE (1 << 1) 117 #define GEN12_OAG_OAGLBCTXCTRL_COUNTER_RESUME (1 << 0) 118 119 #define GEN12_OAG_OACONTROL _MMIO(0xdaf4) 120 #define GEN12_OAG_OACONTROL_OA_COUNTER_FORMAT_SHIFT 2 121 #define GEN12_OAG_OACONTROL_OA_COUNTER_ENABLE (1 << 0) 122 123 #define GEN12_OAG_OA_DEBUG _MMIO(0xdaf8) 124 #define GEN12_OAG_OA_DEBUG_INCLUDE_CLK_RATIO (1 << 6) 125 #define GEN12_OAG_OA_DEBUG_DISABLE_CLK_RATIO_REPORTS (1 << 5) 126 #define GEN12_OAG_OA_DEBUG_DISABLE_GO_1_0_REPORTS (1 << 2) 127 #define GEN12_OAG_OA_DEBUG_DISABLE_CTX_SWITCH_REPORTS (1 << 1) 128 129 #define GEN12_OAG_OASTATUS _MMIO(0xdafc) 130 #define GEN12_OAG_OASTATUS_COUNTER_OVERFLOW (1 << 2) 131 #define GEN12_OAG_OASTATUS_BUFFER_OVERFLOW (1 << 1) 132 #define GEN12_OAG_OASTATUS_REPORT_LOST (1 << 0) 133 134 #define GDT_CHICKEN_BITS _MMIO(0x9840) 135 #define GT_NOA_ENABLE 0x00000080 136 137 /* Gen12 OAM unit */ 138 #define GEN12_OAM_HEAD_POINTER_OFFSET (0x1a0) 139 #define GEN12_OAM_HEAD_POINTER_MASK 0xffffffc0 140 141 #define GEN12_OAM_TAIL_POINTER_OFFSET (0x1a4) 142 #define GEN12_OAM_TAIL_POINTER_MASK 0xffffffc0 143 144 #define GEN12_OAM_BUFFER_OFFSET (0x1a8) 145 #define GEN12_OAM_BUFFER_SIZE_MASK (0x7) 146 #define GEN12_OAM_BUFFER_SIZE_SHIFT (3) 147 #define GEN12_OAM_BUFFER_MEMORY_SELECT REG_BIT(0) /* 0: PPGTT, 1: GGTT */ 148 149 #define GEN12_OAM_CONTEXT_CONTROL_OFFSET (0x1bc) 150 #define GEN12_OAM_CONTEXT_CONTROL_TIMER_PERIOD_SHIFT 2 151 #define GEN12_OAM_CONTEXT_CONTROL_TIMER_ENABLE REG_BIT(1) 152 #define GEN12_OAM_CONTEXT_CONTROL_COUNTER_RESUME REG_BIT(0) 153 154 #define GEN12_OAM_CONTROL_OFFSET (0x194) 155 #define GEN12_OAM_CONTROL_COUNTER_FORMAT_SHIFT 1 156 #define GEN12_OAM_CONTROL_COUNTER_ENABLE REG_BIT(0) 157 158 #define GEN12_OAM_DEBUG_OFFSET (0x198) 159 #define GEN12_OAM_DEBUG_BUFFER_SIZE_SELECT REG_BIT(12) 160 #define GEN12_OAM_DEBUG_INCLUDE_CLK_RATIO REG_BIT(6) 161 #define GEN12_OAM_DEBUG_DISABLE_CLK_RATIO_REPORTS REG_BIT(5) 162 #define GEN12_OAM_DEBUG_DISABLE_GO_1_0_REPORTS REG_BIT(2) 163 #define GEN12_OAM_DEBUG_DISABLE_CTX_SWITCH_REPORTS REG_BIT(1) 164 165 #define GEN12_OAM_STATUS_OFFSET (0x19c) 166 #define GEN12_OAM_STATUS_COUNTER_OVERFLOW REG_BIT(2) 167 #define GEN12_OAM_STATUS_BUFFER_OVERFLOW REG_BIT(1) 168 #define GEN12_OAM_STATUS_REPORT_LOST REG_BIT(0) 169 170 #define GEN12_OAM_MMIO_TRG_OFFSET (0x1d0) 171 172 #define GEN12_OAM_MMIO_TRG(base) \ 173 _MMIO((base) + GEN12_OAM_MMIO_TRG_OFFSET) 174 175 #define GEN12_OAM_HEAD_POINTER(base) \ 176 _MMIO((base) + GEN12_OAM_HEAD_POINTER_OFFSET) 177 #define GEN12_OAM_TAIL_POINTER(base) \ 178 _MMIO((base) + GEN12_OAM_TAIL_POINTER_OFFSET) 179 #define GEN12_OAM_BUFFER(base) \ 180 _MMIO((base) + GEN12_OAM_BUFFER_OFFSET) 181 #define GEN12_OAM_CONTEXT_CONTROL(base) \ 182 _MMIO((base) + GEN12_OAM_CONTEXT_CONTROL_OFFSET) 183 #define GEN12_OAM_CONTROL(base) \ 184 _MMIO((base) + GEN12_OAM_CONTROL_OFFSET) 185 #define GEN12_OAM_DEBUG(base) \ 186 _MMIO((base) + GEN12_OAM_DEBUG_OFFSET) 187 #define GEN12_OAM_STATUS(base) \ 188 _MMIO((base) + GEN12_OAM_STATUS_OFFSET) 189 190 #define GEN12_OAM_CEC0_0_OFFSET (0x40) 191 #define GEN12_OAM_CEC7_1_OFFSET (0x7c) 192 #define GEN12_OAM_CEC0_0(base) \ 193 _MMIO((base) + GEN12_OAM_CEC0_0_OFFSET) 194 #define GEN12_OAM_CEC7_1(base) \ 195 _MMIO((base) + GEN12_OAM_CEC7_1_OFFSET) 196 197 #define GEN12_OAM_STARTTRIG1_OFFSET (0x00) 198 #define GEN12_OAM_STARTTRIG8_OFFSET (0x1c) 199 #define GEN12_OAM_STARTTRIG1(base) \ 200 _MMIO((base) + GEN12_OAM_STARTTRIG1_OFFSET) 201 #define GEN12_OAM_STARTTRIG8(base) \ 202 _MMIO((base) + GEN12_OAM_STARTTRIG8_OFFSET) 203 204 #define GEN12_OAM_REPORTTRIG1_OFFSET (0x20) 205 #define GEN12_OAM_REPORTTRIG8_OFFSET (0x3c) 206 #define GEN12_OAM_REPORTTRIG1(base) \ 207 _MMIO((base) + GEN12_OAM_REPORTTRIG1_OFFSET) 208 #define GEN12_OAM_REPORTTRIG8(base) \ 209 _MMIO((base) + GEN12_OAM_REPORTTRIG8_OFFSET) 210 211 #define GEN12_OAM_PERF_COUNTER_B0_OFFSET (0x84) 212 #define GEN12_OAM_PERF_COUNTER_B(base, idx) \ 213 _MMIO((base) + GEN12_OAM_PERF_COUNTER_B0_OFFSET + 4 * (idx)) 214 215 #endif /* __INTEL_PERF_OA_REGS__ */ 216