| 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 |  | 
|---|