1fb61604aSLikun Gao /* 2fb61604aSLikun Gao * Copyright 2025 Advanced Micro Devices, Inc. 3fb61604aSLikun Gao * 4fb61604aSLikun Gao * Permission is hereby granted, free of charge, to any person obtaining a 5fb61604aSLikun Gao * copy of this software and associated documentation files (the "Software"), 6fb61604aSLikun Gao * to deal in the Software without restriction, including without limitation 7fb61604aSLikun Gao * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8fb61604aSLikun Gao * and/or sell copies of the Software, and to permit persons to whom the 9fb61604aSLikun Gao * Software is furnished to do so, subject to the following conditions: 10fb61604aSLikun Gao * 11fb61604aSLikun Gao * The above copyright notice and this permission notice shall be included in 12fb61604aSLikun Gao * all copies or substantial portions of the Software. 13fb61604aSLikun Gao * 14fb61604aSLikun Gao * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15fb61604aSLikun Gao * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16fb61604aSLikun Gao * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17fb61604aSLikun Gao * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18fb61604aSLikun Gao * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19fb61604aSLikun Gao * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20fb61604aSLikun Gao * OTHER DEALINGS IN THE SOFTWARE. 21fb61604aSLikun Gao * 22fb61604aSLikun Gao */ 23fb61604aSLikun Gao 24fb61604aSLikun Gao #ifndef GFX_V12_1_PKT_H 25fb61604aSLikun Gao #define GFX_V12_1_PKT_H 26fb61604aSLikun Gao 27fb61604aSLikun Gao /** 28fb61604aSLikun Gao * PM4 definitions 29fb61604aSLikun Gao */ 30fb61604aSLikun Gao #define PACKET_TYPE0 0 31fb61604aSLikun Gao #define PACKET_TYPE1 1 32fb61604aSLikun Gao #define PACKET_TYPE2 2 33fb61604aSLikun Gao #define PACKET_TYPE3 3 34fb61604aSLikun Gao 35fb61604aSLikun Gao #define CP_PACKET_GET_TYPE(h) (((h) >> 30) & 3) 36fb61604aSLikun Gao #define CP_PACKET_GET_COUNT(h) (((h) >> 16) & 0x3FFF) 37fb61604aSLikun Gao #define CP_PACKET0_GET_REG(h) ((h) & 0xFFFF) 38fb61604aSLikun Gao #define CP_PACKET3_GET_OPCODE(h) (((h) >> 8) & 0xFF) 39fb61604aSLikun Gao #define PACKET0(reg, n) ((PACKET_TYPE0 << 30) | \ 40fb61604aSLikun Gao ((reg) & 0xFFFF) | \ 41fb61604aSLikun Gao ((n) & 0x3FFF) << 16) 42fb61604aSLikun Gao #define CP_PACKET2 0x80000000 43fb61604aSLikun Gao #define PACKET2_PAD_SHIFT 0 44fb61604aSLikun Gao #define PACKET2_PAD_MASK (0x3fffffff << 0) 45fb61604aSLikun Gao 46fb61604aSLikun Gao #define PACKET2(v) (CP_PACKET2 | REG_SET(PACKET2_PAD, (v))) 47fb61604aSLikun Gao 48fb61604aSLikun Gao #define PACKET3(op, n) ((PACKET_TYPE3 << 30) | \ 49fb61604aSLikun Gao (((op) & 0xFF) << 8) | \ 50fb61604aSLikun Gao ((n) & 0x3FFF) << 16) 51fb61604aSLikun Gao 52fb61604aSLikun Gao #define PACKET3_COMPUTE(op, n) (PACKET3(op, n) | 1 << 1) 53fb61604aSLikun Gao 54fb61604aSLikun Gao /* Packet 3 types */ 55fb61604aSLikun Gao #define PACKET3_NOP 0x10 56fb61604aSLikun Gao #define PACKET3_SET_BASE 0x11 57fb61604aSLikun Gao #define PACKET3_BASE_INDEX(x) ((x) << 0) 58fb61604aSLikun Gao #define CE_PARTITION_BASE 3 59fb61604aSLikun Gao #define PACKET3_CLEAR_STATE 0x12 60fb61604aSLikun Gao #define PACKET3_INDEX_BUFFER_SIZE 0x13 61fb61604aSLikun Gao #define PACKET3_DISPATCH_DIRECT 0x15 62fb61604aSLikun Gao #define PACKET3_DISPATCH_INDIRECT 0x16 63fb61604aSLikun Gao #define PACKET3_INDIRECT_BUFFER_END 0x17 64fb61604aSLikun Gao #define PACKET3_INDIRECT_BUFFER_CNST_END 0x19 65fb61604aSLikun Gao #define PACKET3_ATOMIC_GDS 0x1D 66fb61604aSLikun Gao #define PACKET3_ATOMIC_MEM 0x1E 67fb61604aSLikun Gao #define PACKET3_OCCLUSION_QUERY 0x1F 68fb61604aSLikun Gao #define PACKET3_SET_PREDICATION 0x20 69fb61604aSLikun Gao #define PACKET3_REG_RMW 0x21 70fb61604aSLikun Gao #define PACKET3_COND_EXEC 0x22 71fb61604aSLikun Gao #define PACKET3_PRED_EXEC 0x23 72fb61604aSLikun Gao #define PACKET3_DRAW_INDIRECT 0x24 73fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_INDIRECT 0x25 74fb61604aSLikun Gao #define PACKET3_INDEX_BASE 0x26 75fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_2 0x27 76fb61604aSLikun Gao #define PACKET3_CONTEXT_CONTROL 0x28 77fb61604aSLikun Gao #define PACKET3_INDEX_TYPE 0x2A 78fb61604aSLikun Gao #define PACKET3_DRAW_INDIRECT_MULTI 0x2C 79fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_AUTO 0x2D 80fb61604aSLikun Gao #define PACKET3_NUM_INSTANCES 0x2F 81fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_MULTI_AUTO 0x30 82fb61604aSLikun Gao #define PACKET3_INDIRECT_BUFFER_PRIV 0x32 83fb61604aSLikun Gao #define PACKET3_INDIRECT_BUFFER_CNST 0x33 84fb61604aSLikun Gao #define PACKET3_COND_INDIRECT_BUFFER_CNST 0x33 85fb61604aSLikun Gao #define PACKET3_STRMOUT_BUFFER_UPDATE 0x34 86fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_OFFSET_2 0x35 87fb61604aSLikun Gao #define PACKET3_DRAW_PREAMBLE 0x36 88fb61604aSLikun Gao #define PACKET3_WRITE_DATA 0x37 89fb61604aSLikun Gao #define WRITE_DATA_DST_SEL(x) ((x) << 8) 90fb61604aSLikun Gao /* 0 - register 91fb61604aSLikun Gao * 1 - memory (sync - via GRBM) 92fb61604aSLikun Gao * 2 - gl2 93fb61604aSLikun Gao * 3 - gds 94fb61604aSLikun Gao * 4 - reserved 95fb61604aSLikun Gao * 5 - memory (async - direct) 96fb61604aSLikun Gao */ 97fb61604aSLikun Gao #define WR_ONE_ADDR (1 << 16) 98fb61604aSLikun Gao #define WR_CONFIRM (1 << 20) 99fb61604aSLikun Gao #define WRITE_DATA_CACHE_POLICY(x) ((x) << 25) 100fb61604aSLikun Gao /* 0 - LRU 101fb61604aSLikun Gao * 1 - Stream 102fb61604aSLikun Gao */ 103fb61604aSLikun Gao #define WRITE_DATA_ENGINE_SEL(x) ((x) << 30) 104fb61604aSLikun Gao /* 0 - me 105fb61604aSLikun Gao * 1 - pfp 106fb61604aSLikun Gao * 2 - ce 107fb61604aSLikun Gao */ 108fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_INDIRECT_MULTI 0x38 109fb61604aSLikun Gao #define PACKET3_MEM_SEMAPHORE 0x39 110fb61604aSLikun Gao # define PACKET3_SEM_USE_MAILBOX (0x1 << 16) 111fb61604aSLikun Gao # define PACKET3_SEM_SEL_SIGNAL_TYPE (0x1 << 20) /* 0 = increment, 1 = write 1 */ 112fb61604aSLikun Gao # define PACKET3_SEM_SEL_SIGNAL (0x6 << 29) 113fb61604aSLikun Gao # define PACKET3_SEM_SEL_WAIT (0x7 << 29) 114fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_MULTI_INST 0x3A 115fb61604aSLikun Gao #define PACKET3_COPY_DW 0x3B 116fb61604aSLikun Gao #define PACKET3_WAIT_REG_MEM 0x3C 117fb61604aSLikun Gao #define WAIT_REG_MEM_FUNCTION(x) ((x) << 0) 118fb61604aSLikun Gao /* 0 - always 119fb61604aSLikun Gao * 1 - < 120fb61604aSLikun Gao * 2 - <= 121fb61604aSLikun Gao * 3 - == 122fb61604aSLikun Gao * 4 - != 123fb61604aSLikun Gao * 5 - >= 124fb61604aSLikun Gao * 6 - > 125fb61604aSLikun Gao */ 126fb61604aSLikun Gao #define WAIT_REG_MEM_MEM_SPACE(x) ((x) << 4) 127fb61604aSLikun Gao /* 0 - reg 128fb61604aSLikun Gao * 1 - mem 129fb61604aSLikun Gao */ 130fb61604aSLikun Gao #define WAIT_REG_MEM_OPERATION(x) ((x) << 6) 131fb61604aSLikun Gao /* 0 - wait_reg_mem 132fb61604aSLikun Gao * 1 - wr_wait_wr_reg 133fb61604aSLikun Gao */ 134fb61604aSLikun Gao #define WAIT_REG_MEM_ENGINE(x) ((x) << 8) 135fb61604aSLikun Gao /* 0 - me 136fb61604aSLikun Gao * 1 - pfp 137fb61604aSLikun Gao */ 138fb61604aSLikun Gao #define PACKET3_INDIRECT_BUFFER 0x3F 139fb61604aSLikun Gao #define INDIRECT_BUFFER_VALID (1 << 23) 140fb61604aSLikun Gao #define INDIRECT_BUFFER_CACHE_POLICY(x) ((x) << 28) 141fb61604aSLikun Gao /* 0 - LRU 142fb61604aSLikun Gao * 1 - Stream 143fb61604aSLikun Gao * 2 - Bypass 144fb61604aSLikun Gao */ 145fb61604aSLikun Gao #define INDIRECT_BUFFER_PRE_ENB(x) ((x) << 21) 146fb61604aSLikun Gao #define INDIRECT_BUFFER_PRE_RESUME(x) ((x) << 30) 147fb61604aSLikun Gao #define PACKET3_COND_INDIRECT_BUFFER 0x3F 148fb61604aSLikun Gao #define PACKET3_COPY_DATA 0x40 149fb61604aSLikun Gao #define PACKET3_CP_DMA 0x41 150fb61604aSLikun Gao #define PACKET3_PFP_SYNC_ME 0x42 151fb61604aSLikun Gao #define PACKET3_SURFACE_SYNC 0x43 152fb61604aSLikun Gao #define PACKET3_ME_INITIALIZE 0x44 153fb61604aSLikun Gao #define PACKET3_COND_WRITE 0x45 154fb61604aSLikun Gao #define PACKET3_EVENT_WRITE 0x46 155fb61604aSLikun Gao #define EVENT_TYPE(x) ((x) << 0) 156fb61604aSLikun Gao #define EVENT_INDEX(x) ((x) << 8) 157fb61604aSLikun Gao /* 0 - any non-TS event 158fb61604aSLikun Gao * 1 - ZPASS_DONE, PIXEL_PIPE_STAT_* 159fb61604aSLikun Gao * 2 - SAMPLE_PIPELINESTAT 160fb61604aSLikun Gao * 3 - SAMPLE_STREAMOUTSTAT* 161fb61604aSLikun Gao * 4 - *S_PARTIAL_FLUSH 162fb61604aSLikun Gao */ 163fb61604aSLikun Gao #define PACKET3_EVENT_WRITE_EOP 0x47 164fb61604aSLikun Gao #define PACKET3_EVENT_WRITE_EOS 0x48 165fb61604aSLikun Gao #define PACKET3_RELEASE_MEM 0x49 166fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_EVENT_TYPE(x) ((x) << 0) 167fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_EVENT_INDEX(x) ((x) << 8) 168fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GL2_SCOPE(x) ((x) << 12) 169fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GLV_INV (1 << 14) 170fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GL2_US (1 << 16) 171fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GL2_RANGE(x) ((x) << 17) 172fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GL2_DISCARD (1 << 19) 173fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GL2_INV (1 << 20) 174fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GL2_WB (1 << 21) 175fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_SEQ(x) ((x) << 22) 176fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_GCR_GLV_WB (1 << 24) 177fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_TEMPORAL(x) ((x) << 25) 178fb61604aSLikun Gao /* 0 - temporal__release_mem__rt 179fb61604aSLikun Gao * 1 - temporal__release_mem__nt 180fb61604aSLikun Gao * 2 - temporal__release_mem__ht 181fb61604aSLikun Gao * 3 - temporal__release_mem__lu 182fb61604aSLikun Gao */ 183fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_EXECUTE (1 << 28) 184fb61604aSLikun Gao 185fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_DATA_SEL(x) ((x) << 29) 186fb61604aSLikun Gao /* 0 - discard 187fb61604aSLikun Gao * 1 - send low 32bit data 188fb61604aSLikun Gao * 2 - send 64bit data 189fb61604aSLikun Gao * 3 - send 64bit GPU counter value 190fb61604aSLikun Gao * 4 - send 64bit sys counter value 191fb61604aSLikun Gao */ 192fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_INT_SEL(x) ((x) << 24) 193fb61604aSLikun Gao /* 0 - none 194fb61604aSLikun Gao * 1 - interrupt only (DATA_SEL = 0) 195fb61604aSLikun Gao * 2 - interrupt when data write is confirmed 196fb61604aSLikun Gao */ 197fb61604aSLikun Gao #define PACKET3_RELEASE_MEM_DST_SEL(x) ((x) << 16) 198fb61604aSLikun Gao /* 0 - MC 199fb61604aSLikun Gao * 1 - TC/L2 200fb61604aSLikun Gao */ 201fb61604aSLikun Gao 202fb61604aSLikun Gao 203fb61604aSLikun Gao 204fb61604aSLikun Gao #define PACKET3_PREAMBLE_CNTL 0x4A 205fb61604aSLikun Gao # define PACKET3_PREAMBLE_BEGIN_CLEAR_STATE (2 << 28) 206fb61604aSLikun Gao # define PACKET3_PREAMBLE_END_CLEAR_STATE (3 << 28) 207fb61604aSLikun Gao #define PACKET3_DMA_DATA 0x50 208fb61604aSLikun Gao /* 1. header 209fb61604aSLikun Gao * 2. CONTROL 210fb61604aSLikun Gao * 3. SRC_ADDR_LO or DATA [31:0] 211fb61604aSLikun Gao * 4. SRC_ADDR_HI [31:0] 212fb61604aSLikun Gao * 5. DST_ADDR_LO [31:0] 213fb61604aSLikun Gao * 6. DST_ADDR_HI [7:0] 214fb61604aSLikun Gao * 7. COMMAND [31:26] | BYTE_COUNT [25:0] 215fb61604aSLikun Gao */ 216fb61604aSLikun Gao /* CONTROL */ 217fb61604aSLikun Gao # define PACKET3_DMA_DATA_ENGINE(x) ((x) << 0) 218fb61604aSLikun Gao /* 0 - ME 219fb61604aSLikun Gao * 1 - PFP 220fb61604aSLikun Gao */ 221fb61604aSLikun Gao # define PACKET3_DMA_DATA_SRC_CACHE_POLICY(x) ((x) << 13) 222fb61604aSLikun Gao /* 0 - LRU 223fb61604aSLikun Gao * 1 - Stream 224fb61604aSLikun Gao */ 225fb61604aSLikun Gao # define PACKET3_DMA_DATA_DST_SEL(x) ((x) << 20) 226fb61604aSLikun Gao /* 0 - DST_ADDR using DAS 227fb61604aSLikun Gao * 1 - GDS 228fb61604aSLikun Gao * 3 - DST_ADDR using L2 229fb61604aSLikun Gao */ 230fb61604aSLikun Gao # define PACKET3_DMA_DATA_DST_CACHE_POLICY(x) ((x) << 25) 231fb61604aSLikun Gao /* 0 - LRU 232fb61604aSLikun Gao * 1 - Stream 233fb61604aSLikun Gao */ 234fb61604aSLikun Gao # define PACKET3_DMA_DATA_SRC_SEL(x) ((x) << 29) 235fb61604aSLikun Gao /* 0 - SRC_ADDR using SAS 236fb61604aSLikun Gao * 1 - GDS 237fb61604aSLikun Gao * 2 - DATA 238fb61604aSLikun Gao * 3 - SRC_ADDR using L2 239fb61604aSLikun Gao */ 240fb61604aSLikun Gao # define PACKET3_DMA_DATA_CP_SYNC (1 << 31) 241fb61604aSLikun Gao /* COMMAND */ 242fb61604aSLikun Gao # define PACKET3_DMA_DATA_CMD_SAS (1 << 26) 243fb61604aSLikun Gao /* 0 - memory 244fb61604aSLikun Gao * 1 - register 245fb61604aSLikun Gao */ 246fb61604aSLikun Gao # define PACKET3_DMA_DATA_CMD_DAS (1 << 27) 247fb61604aSLikun Gao /* 0 - memory 248fb61604aSLikun Gao * 1 - register 249fb61604aSLikun Gao */ 250fb61604aSLikun Gao # define PACKET3_DMA_DATA_CMD_SAIC (1 << 28) 251fb61604aSLikun Gao # define PACKET3_DMA_DATA_CMD_DAIC (1 << 29) 252fb61604aSLikun Gao # define PACKET3_DMA_DATA_CMD_RAW_WAIT (1 << 30) 253fb61604aSLikun Gao #define PACKET3_CONTEXT_REG_RMW 0x51 254fb61604aSLikun Gao #define PACKET3_GFX_CNTX_UPDATE 0x52 255fb61604aSLikun Gao #define PACKET3_BLK_CNTX_UPDATE 0x53 256fb61604aSLikun Gao #define PACKET3_INCR_UPDT_STATE 0x55 257fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM 0x58 258fb61604aSLikun Gao /* 1. HEADER 259fb61604aSLikun Gao * 2. COHER_CNTL [30:0] 260fb61604aSLikun Gao * 2.1 ENGINE_SEL [31:31] 261fb61604aSLikun Gao * 2. COHER_SIZE [31:0] 262fb61604aSLikun Gao * 3. COHER_SIZE_HI [7:0] 263fb61604aSLikun Gao * 4. COHER_BASE_LO [31:0] 264fb61604aSLikun Gao * 5. COHER_BASE_HI [23:0] 265fb61604aSLikun Gao * 7. POLL_INTERVAL [15:0] 266fb61604aSLikun Gao * 8. GCR_CNTL [18:0] 267fb61604aSLikun Gao */ 268fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GLI_INV(x) ((x) << 0) 269fb61604aSLikun Gao /* 270fb61604aSLikun Gao * 0:NOP 271fb61604aSLikun Gao * 1:ALL 272fb61604aSLikun Gao * 2:RANGE 273fb61604aSLikun Gao * 3:FIRST_LAST 274fb61604aSLikun Gao */ 275fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL1_RANGE(x) ((x) << 2) 276fb61604aSLikun Gao /* 277fb61604aSLikun Gao * 0:ALL 278fb61604aSLikun Gao * 1:reserved 279fb61604aSLikun Gao * 2:RANGE 280fb61604aSLikun Gao * 3:FIRST_LAST 281fb61604aSLikun Gao */ 282fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_SCOPE(x) ((x) << 4) 283fb61604aSLikun Gao /* 284fb61604aSLikun Gao * 0:Device scope 285fb61604aSLikun Gao * 1:System scope 286fb61604aSLikun Gao * 2:Force INV/WB all 287fb61604aSLikun Gao * 3:Reserved 288fb61604aSLikun Gao */ 289fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GLV_WB(x) ((x) << 6) 290fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GLK_INV(x) ((x) << 7) 291fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GLV_INV(x) ((x) << 8) 292fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_US(x) ((x) << 10) 293fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_RANGE(x) ((x) << 11) 294fb61604aSLikun Gao /* 295fb61604aSLikun Gao * 0:ALL 296fb61604aSLikun Gao * 1:VOL 297fb61604aSLikun Gao * 2:RANGE 298fb61604aSLikun Gao * 3:FIRST_LAST 299fb61604aSLikun Gao */ 300fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_DISCARD(x) ((x) << 13) 301fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_INV(x) ((x) << 14) 302fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_GL2_WB(x) ((x) << 15) 303fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_CNTL_SEQ(x) ((x) << 16) 304fb61604aSLikun Gao /* 305fb61604aSLikun Gao * 0: PARALLEL 306fb61604aSLikun Gao * 1: FORWARD 307fb61604aSLikun Gao * 2: REVERSE 308fb61604aSLikun Gao */ 309fb61604aSLikun Gao #define PACKET3_ACQUIRE_MEM_GCR_RANGE_IS_PA (1 << 18) 310fb61604aSLikun Gao #define PACKET3_REWIND 0x59 311fb61604aSLikun Gao #define PACKET3_INTERRUPT 0x5A 312fb61604aSLikun Gao #define PACKET3_GEN_PDEPTE 0x5B 313fb61604aSLikun Gao #define PACKET3_INDIRECT_BUFFER_PASID 0x5C 314fb61604aSLikun Gao #define PACKET3_PRIME_UTCL2 0x5D 315fb61604aSLikun Gao #define PACKET3_LOAD_UCONFIG_REG 0x5E 316fb61604aSLikun Gao #define PACKET3_LOAD_SH_REG 0x5F 317fb61604aSLikun Gao #define PACKET3_LOAD_CONFIG_REG 0x60 318fb61604aSLikun Gao #define PACKET3_LOAD_CONTEXT_REG 0x61 319fb61604aSLikun Gao #define PACKET3_LOAD_COMPUTE_STATE 0x62 320fb61604aSLikun Gao #define PACKET3_LOAD_SH_REG_INDEX 0x63 321fb61604aSLikun Gao #define PACKET3_SET_CONFIG_REG 0x68 322fb61604aSLikun Gao #define PACKET3_SET_CONFIG_REG_START 0x00002000 323fb61604aSLikun Gao #define PACKET3_SET_CONFIG_REG_END 0x00002c00 324fb61604aSLikun Gao #define PACKET3_SET_CONTEXT_REG 0x69 325fb61604aSLikun Gao #define PACKET3_SET_CONTEXT_REG_START 0x0000a000 326fb61604aSLikun Gao #define PACKET3_SET_CONTEXT_REG_END 0x0000a400 327fb61604aSLikun Gao #define PACKET3_SET_CONTEXT_REG_INDEX 0x6A 328fb61604aSLikun Gao #define PACKET3_SET_VGPR_REG_DI_MULTI 0x71 329fb61604aSLikun Gao #define PACKET3_SET_SH_REG_DI 0x72 330fb61604aSLikun Gao #define PACKET3_SET_CONTEXT_REG_INDIRECT 0x73 331fb61604aSLikun Gao #define PACKET3_SET_SH_REG_DI_MULTI 0x74 332fb61604aSLikun Gao #define PACKET3_GFX_PIPE_LOCK 0x75 333fb61604aSLikun Gao #define PACKET3_SET_SH_REG 0x76 334fb61604aSLikun Gao #define PACKET3_SET_SH_REG_START 0x00002c00 335fb61604aSLikun Gao #define PACKET3_SET_SH_REG_END 0x00003000 336fb61604aSLikun Gao #define PACKET3_SET_SH_REG_OFFSET 0x77 337fb61604aSLikun Gao #define PACKET3_SET_QUEUE_REG 0x78 338fb61604aSLikun Gao #define PACKET3_SET_UCONFIG_REG 0x79 339fb61604aSLikun Gao #define PACKET3_SET_UCONFIG_REG_START 0x0000c000 340fb61604aSLikun Gao #define PACKET3_SET_UCONFIG_REG_END 0x0000c400 341fb61604aSLikun Gao #define PACKET3_SET_UCONFIG_REG_INDEX 0x7A 342fb61604aSLikun Gao #define PACKET3_FORWARD_HEADER 0x7C 343fb61604aSLikun Gao #define PACKET3_SCRATCH_RAM_WRITE 0x7D 344fb61604aSLikun Gao #define PACKET3_SCRATCH_RAM_READ 0x7E 345fb61604aSLikun Gao #define PACKET3_LOAD_CONST_RAM 0x80 346fb61604aSLikun Gao #define PACKET3_WRITE_CONST_RAM 0x81 347fb61604aSLikun Gao #define PACKET3_DUMP_CONST_RAM 0x83 348fb61604aSLikun Gao #define PACKET3_INCREMENT_CE_COUNTER 0x84 349fb61604aSLikun Gao #define PACKET3_INCREMENT_DE_COUNTER 0x85 350fb61604aSLikun Gao #define PACKET3_WAIT_ON_CE_COUNTER 0x86 351fb61604aSLikun Gao #define PACKET3_WAIT_ON_DE_COUNTER_DIFF 0x88 352fb61604aSLikun Gao #define PACKET3_SWITCH_BUFFER 0x8B 353fb61604aSLikun Gao #define PACKET3_DISPATCH_DRAW_PREAMBLE 0x8C 354fb61604aSLikun Gao #define PACKET3_DISPATCH_DRAW_PREAMBLE_ACE 0x8C 355fb61604aSLikun Gao #define PACKET3_DISPATCH_DRAW 0x8D 356fb61604aSLikun Gao #define PACKET3_DISPATCH_DRAW_ACE 0x8D 357fb61604aSLikun Gao #define PACKET3_GET_LOD_STATS 0x8E 358fb61604aSLikun Gao #define PACKET3_DRAW_MULTI_PREAMBLE 0x8F 359fb61604aSLikun Gao #define PACKET3_FRAME_CONTROL 0x90 360fb61604aSLikun Gao # define FRAME_TMZ (1 << 0) 361fb61604aSLikun Gao # define FRAME_CMD(x) ((x) << 28) 362fb61604aSLikun Gao /* 363fb61604aSLikun Gao * x=0: tmz_begin 364fb61604aSLikun Gao * x=1: tmz_end 365fb61604aSLikun Gao */ 366fb61604aSLikun Gao #define PACKET3_INDEX_ATTRIBUTES_INDIRECT 0x91 367fb61604aSLikun Gao #define PACKET3_WAIT_REG_MEM64 0x93 368fb61604aSLikun Gao #define PACKET3_COND_PREEMPT 0x94 369fb61604aSLikun Gao #define PACKET3_HDP_FLUSH 0x95 370fb61604aSLikun Gao #define PACKET3_COPY_DATA_RB 0x96 371fb61604aSLikun Gao #define PACKET3_INVALIDATE_TLBS 0x98 372fb61604aSLikun Gao #define PACKET3_INVALIDATE_TLBS_DST_SEL(x) ((x) << 0) 373fb61604aSLikun Gao #define PACKET3_INVALIDATE_TLBS_ALL_HUB(x) ((x) << 4) 374fb61604aSLikun Gao #define PACKET3_INVALIDATE_TLBS_PASID(x) ((x) << 5) 375*1fee035bSHawking Zhang #define PACKET3_INVALIDATE_TLBS_FLUSH_TYPE(x) ((x) << 29) 376*1fee035bSHawking Zhang 377fb61604aSLikun Gao #define PACKET3_AQL_PACKET 0x99 378fb61604aSLikun Gao #define PACKET3_DMA_DATA_FILL_MULTI 0x9A 379fb61604aSLikun Gao #define PACKET3_SET_SH_REG_INDEX 0x9B 380fb61604aSLikun Gao #define PACKET3_DRAW_INDIRECT_COUNT_MULTI 0x9C 381fb61604aSLikun Gao #define PACKET3_DRAW_INDEX_INDIRECT_COUNT_MULTI 0x9D 382fb61604aSLikun Gao #define PACKET3_DUMP_CONST_RAM_OFFSET 0x9E 383fb61604aSLikun Gao #define PACKET3_LOAD_CONTEXT_REG_INDEX 0x9F 384fb61604aSLikun Gao #define PACKET3_SET_RESOURCES 0xA0 385fb61604aSLikun Gao /* 1. header 386fb61604aSLikun Gao * 2. CONTROL 387fb61604aSLikun Gao * 3. QUEUE_MASK_LO [31:0] 388fb61604aSLikun Gao * 4. QUEUE_MASK_HI [31:0] 389fb61604aSLikun Gao * 5. GWS_MASK_LO [31:0] 390fb61604aSLikun Gao * 6. GWS_MASK_HI [31:0] 391fb61604aSLikun Gao * 7. OAC_MASK [15:0] 392fb61604aSLikun Gao * 8. GDS_HEAP_SIZE [16:11] | GDS_HEAP_BASE [5:0] 393fb61604aSLikun Gao */ 394fb61604aSLikun Gao # define PACKET3_SET_RESOURCES_VMID_MASK(x) ((x) << 0) 395fb61604aSLikun Gao # define PACKET3_SET_RESOURCES_UNMAP_LATENTY(x) ((x) << 16) 396fb61604aSLikun Gao # define PACKET3_SET_RESOURCES_QUEUE_TYPE(x) ((x) << 29) 397fb61604aSLikun Gao #define PACKET3_MAP_PROCESS 0xA1 398fb61604aSLikun Gao #define PACKET3_MAP_QUEUES 0xA2 399fb61604aSLikun Gao /* 1. header 400fb61604aSLikun Gao * 2. CONTROL 401fb61604aSLikun Gao * 3. CONTROL2 402fb61604aSLikun Gao * 4. MQD_ADDR_LO [31:0] 403fb61604aSLikun Gao * 5. MQD_ADDR_HI [31:0] 404fb61604aSLikun Gao * 6. WPTR_ADDR_LO [31:0] 405fb61604aSLikun Gao * 7. WPTR_ADDR_HI [31:0] 406fb61604aSLikun Gao */ 407fb61604aSLikun Gao /* CONTROL */ 408fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_QUEUE_SEL(x) ((x) << 4) 409fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_VMID(x) ((x) << 8) 410fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_QUEUE(x) ((x) << 13) 411fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_PIPE(x) ((x) << 16) 412fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_ME(x) ((x) << 18) 413fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_QUEUE_TYPE(x) ((x) << 21) 414fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_ALLOC_FORMAT(x) ((x) << 24) 415fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_ENGINE_SEL(x) ((x) << 26) 416fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_NUM_QUEUES(x) ((x) << 29) 417fb61604aSLikun Gao /* CONTROL2 */ 418fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_CHECK_DISABLE(x) ((x) << 1) 419fb61604aSLikun Gao # define PACKET3_MAP_QUEUES_DOORBELL_OFFSET(x) ((x) << 2) 420fb61604aSLikun Gao #define PACKET3_UNMAP_QUEUES 0xA3 421fb61604aSLikun Gao /* 1. header 422fb61604aSLikun Gao * 2. CONTROL 423fb61604aSLikun Gao * 3. CONTROL2 424fb61604aSLikun Gao * 4. CONTROL3 425fb61604aSLikun Gao * 5. CONTROL4 426fb61604aSLikun Gao * 6. CONTROL5 427fb61604aSLikun Gao */ 428fb61604aSLikun Gao /* CONTROL */ 429fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_ACTION(x) ((x) << 0) 430fb61604aSLikun Gao /* 0 - PREEMPT_QUEUES 431fb61604aSLikun Gao * 1 - RESET_QUEUES 432fb61604aSLikun Gao * 2 - DISABLE_PROCESS_QUEUES 433fb61604aSLikun Gao * 3 - PREEMPT_QUEUES_NO_UNMAP 434fb61604aSLikun Gao */ 435fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_QUEUE_SEL(x) ((x) << 4) 436fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_ENGINE_SEL(x) ((x) << 26) 437fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_NUM_QUEUES(x) ((x) << 29) 438fb61604aSLikun Gao /* CONTROL2a */ 439fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_PASID(x) ((x) << 0) 440fb61604aSLikun Gao /* CONTROL2b */ 441fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_DOORBELL_OFFSET0(x) ((x) << 2) 442fb61604aSLikun Gao /* CONTROL3a */ 443fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_DOORBELL_OFFSET1(x) ((x) << 2) 444fb61604aSLikun Gao /* CONTROL3b */ 445fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_RB_WPTR(x) ((x) << 0) 446fb61604aSLikun Gao /* CONTROL4 */ 447fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_DOORBELL_OFFSET2(x) ((x) << 2) 448fb61604aSLikun Gao /* CONTROL5 */ 449fb61604aSLikun Gao # define PACKET3_UNMAP_QUEUES_DOORBELL_OFFSET3(x) ((x) << 2) 450fb61604aSLikun Gao #define PACKET3_QUERY_STATUS 0xA4 451fb61604aSLikun Gao /* 1. header 452fb61604aSLikun Gao * 2. CONTROL 453fb61604aSLikun Gao * 3. CONTROL2 454fb61604aSLikun Gao * 4. ADDR_LO [31:0] 455fb61604aSLikun Gao * 5. ADDR_HI [31:0] 456fb61604aSLikun Gao * 6. DATA_LO [31:0] 457fb61604aSLikun Gao * 7. DATA_HI [31:0] 458fb61604aSLikun Gao */ 459fb61604aSLikun Gao /* CONTROL */ 460fb61604aSLikun Gao # define PACKET3_QUERY_STATUS_CONTEXT_ID(x) ((x) << 0) 461fb61604aSLikun Gao # define PACKET3_QUERY_STATUS_INTERRUPT_SEL(x) ((x) << 28) 462fb61604aSLikun Gao # define PACKET3_QUERY_STATUS_COMMAND(x) ((x) << 30) 463fb61604aSLikun Gao /* CONTROL2a */ 464fb61604aSLikun Gao # define PACKET3_QUERY_STATUS_PASID(x) ((x) << 0) 465fb61604aSLikun Gao /* CONTROL2b */ 466fb61604aSLikun Gao # define PACKET3_QUERY_STATUS_DOORBELL_OFFSET(x) ((x) << 2) 467fb61604aSLikun Gao # define PACKET3_QUERY_STATUS_ENG_SEL(x) ((x) << 25) 468fb61604aSLikun Gao #define PACKET3_RUN_LIST 0xA5 469fb61604aSLikun Gao #define PACKET3_MAP_PROCESS_VM 0xA6 470fb61604aSLikun Gao /* GFX11 */ 471fb61604aSLikun Gao #define PACKET3_SET_Q_PREEMPTION_MODE 0xF0 472fb61604aSLikun Gao # define PACKET3_SET_Q_PREEMPTION_MODE_IB_VMID(x) ((x) << 0) 473fb61604aSLikun Gao # define PACKET3_SET_Q_PREEMPTION_MODE_INIT_SHADOW_MEM (1 << 0) 474fb61604aSLikun Gao 475fb61604aSLikun Gao #endif 476