1 /* $NetBSD: cik_structs.h,v 1.3 2021/12/18 23:45:08 riastradh Exp $ */ 2 3 /* 4 * Copyright 2012 Advanced Micro Devices, Inc. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in 14 * all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 * OTHER DEALINGS IN THE SOFTWARE. 23 * 24 */ 25 26 #ifndef CIK_STRUCTS_H_ 27 #define CIK_STRUCTS_H_ 28 29 struct cik_mqd { 30 uint32_t header; 31 uint32_t compute_dispatch_initiator; 32 uint32_t compute_dim_x; 33 uint32_t compute_dim_y; 34 uint32_t compute_dim_z; 35 uint32_t compute_start_x; 36 uint32_t compute_start_y; 37 uint32_t compute_start_z; 38 uint32_t compute_num_thread_x; 39 uint32_t compute_num_thread_y; 40 uint32_t compute_num_thread_z; 41 uint32_t compute_pipelinestat_enable; 42 uint32_t compute_perfcount_enable; 43 uint32_t compute_pgm_lo; 44 uint32_t compute_pgm_hi; 45 uint32_t compute_tba_lo; 46 uint32_t compute_tba_hi; 47 uint32_t compute_tma_lo; 48 uint32_t compute_tma_hi; 49 uint32_t compute_pgm_rsrc1; 50 uint32_t compute_pgm_rsrc2; 51 uint32_t compute_vmid; 52 uint32_t compute_resource_limits; 53 uint32_t compute_static_thread_mgmt_se0; 54 uint32_t compute_static_thread_mgmt_se1; 55 uint32_t compute_tmpring_size; 56 uint32_t compute_static_thread_mgmt_se2; 57 uint32_t compute_static_thread_mgmt_se3; 58 uint32_t compute_restart_x; 59 uint32_t compute_restart_y; 60 uint32_t compute_restart_z; 61 uint32_t compute_thread_trace_enable; 62 uint32_t compute_misc_reserved; 63 uint32_t compute_user_data_0; 64 uint32_t compute_user_data_1; 65 uint32_t compute_user_data_2; 66 uint32_t compute_user_data_3; 67 uint32_t compute_user_data_4; 68 uint32_t compute_user_data_5; 69 uint32_t compute_user_data_6; 70 uint32_t compute_user_data_7; 71 uint32_t compute_user_data_8; 72 uint32_t compute_user_data_9; 73 uint32_t compute_user_data_10; 74 uint32_t compute_user_data_11; 75 uint32_t compute_user_data_12; 76 uint32_t compute_user_data_13; 77 uint32_t compute_user_data_14; 78 uint32_t compute_user_data_15; 79 uint32_t cp_compute_csinvoc_count_lo; 80 uint32_t cp_compute_csinvoc_count_hi; 81 uint32_t cp_mqd_base_addr_lo; 82 uint32_t cp_mqd_base_addr_hi; 83 uint32_t cp_hqd_active; 84 uint32_t cp_hqd_vmid; 85 uint32_t cp_hqd_persistent_state; 86 uint32_t cp_hqd_pipe_priority; 87 uint32_t cp_hqd_queue_priority; 88 uint32_t cp_hqd_quantum; 89 uint32_t cp_hqd_pq_base_lo; 90 uint32_t cp_hqd_pq_base_hi; 91 uint32_t cp_hqd_pq_rptr; 92 uint32_t cp_hqd_pq_rptr_report_addr_lo; 93 uint32_t cp_hqd_pq_rptr_report_addr_hi; 94 uint32_t cp_hqd_pq_wptr_poll_addr_lo; 95 uint32_t cp_hqd_pq_wptr_poll_addr_hi; 96 uint32_t cp_hqd_pq_doorbell_control; 97 uint32_t cp_hqd_pq_wptr; 98 uint32_t cp_hqd_pq_control; 99 uint32_t cp_hqd_ib_base_addr_lo; 100 uint32_t cp_hqd_ib_base_addr_hi; 101 uint32_t cp_hqd_ib_rptr; 102 uint32_t cp_hqd_ib_control; 103 uint32_t cp_hqd_iq_timer; 104 uint32_t cp_hqd_iq_rptr; 105 uint32_t cp_hqd_dequeue_request; 106 uint32_t cp_hqd_dma_offload; 107 uint32_t cp_hqd_sema_cmd; 108 uint32_t cp_hqd_msg_type; 109 uint32_t cp_hqd_atomic0_preop_lo; 110 uint32_t cp_hqd_atomic0_preop_hi; 111 uint32_t cp_hqd_atomic1_preop_lo; 112 uint32_t cp_hqd_atomic1_preop_hi; 113 uint32_t cp_hqd_hq_status0; 114 uint32_t cp_hqd_hq_control0; 115 uint32_t cp_mqd_control; 116 uint32_t cp_mqd_query_time_lo; 117 uint32_t cp_mqd_query_time_hi; 118 uint32_t cp_mqd_connect_start_time_lo; 119 uint32_t cp_mqd_connect_start_time_hi; 120 uint32_t cp_mqd_connect_end_time_lo; 121 uint32_t cp_mqd_connect_end_time_hi; 122 uint32_t cp_mqd_connect_end_wf_count; 123 uint32_t cp_mqd_connect_end_pq_rptr; 124 uint32_t cp_mqd_connect_end_pq_wptr; 125 uint32_t cp_mqd_connect_end_ib_rptr; 126 uint32_t reserved_96; 127 uint32_t reserved_97; 128 uint32_t reserved_98; 129 uint32_t reserved_99; 130 uint32_t iqtimer_pkt_header; 131 uint32_t iqtimer_pkt_dw0; 132 uint32_t iqtimer_pkt_dw1; 133 uint32_t iqtimer_pkt_dw2; 134 uint32_t iqtimer_pkt_dw3; 135 uint32_t iqtimer_pkt_dw4; 136 uint32_t iqtimer_pkt_dw5; 137 uint32_t iqtimer_pkt_dw6; 138 uint32_t reserved_108; 139 uint32_t reserved_109; 140 uint32_t reserved_110; 141 uint32_t reserved_111; 142 uint32_t queue_doorbell_id0; 143 uint32_t queue_doorbell_id1; 144 uint32_t queue_doorbell_id2; 145 uint32_t queue_doorbell_id3; 146 uint32_t queue_doorbell_id4; 147 uint32_t queue_doorbell_id5; 148 uint32_t queue_doorbell_id6; 149 uint32_t queue_doorbell_id7; 150 uint32_t queue_doorbell_id8; 151 uint32_t queue_doorbell_id9; 152 uint32_t queue_doorbell_id10; 153 uint32_t queue_doorbell_id11; 154 uint32_t queue_doorbell_id12; 155 uint32_t queue_doorbell_id13; 156 uint32_t queue_doorbell_id14; 157 uint32_t queue_doorbell_id15; 158 }; 159 160 struct cik_sdma_rlc_registers { 161 uint32_t sdma_rlc_rb_cntl; 162 uint32_t sdma_rlc_rb_base; 163 uint32_t sdma_rlc_rb_base_hi; 164 uint32_t sdma_rlc_rb_rptr; 165 uint32_t sdma_rlc_rb_wptr; 166 uint32_t sdma_rlc_rb_wptr_poll_cntl; 167 uint32_t sdma_rlc_rb_wptr_poll_addr_hi; 168 uint32_t sdma_rlc_rb_wptr_poll_addr_lo; 169 uint32_t sdma_rlc_rb_rptr_addr_hi; 170 uint32_t sdma_rlc_rb_rptr_addr_lo; 171 uint32_t sdma_rlc_ib_cntl; 172 uint32_t sdma_rlc_ib_rptr; 173 uint32_t sdma_rlc_ib_offset; 174 uint32_t sdma_rlc_ib_base_lo; 175 uint32_t sdma_rlc_ib_base_hi; 176 uint32_t sdma_rlc_ib_size; 177 uint32_t sdma_rlc_skip_cntl; 178 uint32_t sdma_rlc_context_status; 179 uint32_t sdma_rlc_doorbell; 180 uint32_t sdma_rlc_virtual_addr; 181 uint32_t sdma_rlc_ape1_cntl; 182 uint32_t sdma_rlc_doorbell_log; 183 uint32_t reserved_22; 184 uint32_t reserved_23; 185 uint32_t reserved_24; 186 uint32_t reserved_25; 187 uint32_t reserved_26; 188 uint32_t reserved_27; 189 uint32_t reserved_28; 190 uint32_t reserved_29; 191 uint32_t reserved_30; 192 uint32_t reserved_31; 193 uint32_t reserved_32; 194 uint32_t reserved_33; 195 uint32_t reserved_34; 196 uint32_t reserved_35; 197 uint32_t reserved_36; 198 uint32_t reserved_37; 199 uint32_t reserved_38; 200 uint32_t reserved_39; 201 uint32_t reserved_40; 202 uint32_t reserved_41; 203 uint32_t reserved_42; 204 uint32_t reserved_43; 205 uint32_t reserved_44; 206 uint32_t reserved_45; 207 uint32_t reserved_46; 208 uint32_t reserved_47; 209 uint32_t reserved_48; 210 uint32_t reserved_49; 211 uint32_t reserved_50; 212 uint32_t reserved_51; 213 uint32_t reserved_52; 214 uint32_t reserved_53; 215 uint32_t reserved_54; 216 uint32_t reserved_55; 217 uint32_t reserved_56; 218 uint32_t reserved_57; 219 uint32_t reserved_58; 220 uint32_t reserved_59; 221 uint32_t reserved_60; 222 uint32_t reserved_61; 223 uint32_t reserved_62; 224 uint32_t reserved_63; 225 uint32_t reserved_64; 226 uint32_t reserved_65; 227 uint32_t reserved_66; 228 uint32_t reserved_67; 229 uint32_t reserved_68; 230 uint32_t reserved_69; 231 uint32_t reserved_70; 232 uint32_t reserved_71; 233 uint32_t reserved_72; 234 uint32_t reserved_73; 235 uint32_t reserved_74; 236 uint32_t reserved_75; 237 uint32_t reserved_76; 238 uint32_t reserved_77; 239 uint32_t reserved_78; 240 uint32_t reserved_79; 241 uint32_t reserved_80; 242 uint32_t reserved_81; 243 uint32_t reserved_82; 244 uint32_t reserved_83; 245 uint32_t reserved_84; 246 uint32_t reserved_85; 247 uint32_t reserved_86; 248 uint32_t reserved_87; 249 uint32_t reserved_88; 250 uint32_t reserved_89; 251 uint32_t reserved_90; 252 uint32_t reserved_91; 253 uint32_t reserved_92; 254 uint32_t reserved_93; 255 uint32_t reserved_94; 256 uint32_t reserved_95; 257 uint32_t reserved_96; 258 uint32_t reserved_97; 259 uint32_t reserved_98; 260 uint32_t reserved_99; 261 uint32_t reserved_100; 262 uint32_t reserved_101; 263 uint32_t reserved_102; 264 uint32_t reserved_103; 265 uint32_t reserved_104; 266 uint32_t reserved_105; 267 uint32_t reserved_106; 268 uint32_t reserved_107; 269 uint32_t reserved_108; 270 uint32_t reserved_109; 271 uint32_t reserved_110; 272 uint32_t reserved_111; 273 uint32_t reserved_112; 274 uint32_t reserved_113; 275 uint32_t reserved_114; 276 uint32_t reserved_115; 277 uint32_t reserved_116; 278 uint32_t reserved_117; 279 uint32_t reserved_118; 280 uint32_t reserved_119; 281 uint32_t reserved_120; 282 uint32_t reserved_121; 283 uint32_t reserved_122; 284 uint32_t reserved_123; 285 uint32_t reserved_124; 286 uint32_t reserved_125; 287 /* reserved_126,127: repurposed for driver-internal use */ 288 uint32_t sdma_engine_id; 289 uint32_t sdma_queue_id; 290 }; 291 292 293 294 #endif /* CIK_STRUCTS_H_ */ 295