Home | History | Annotate | Line # | Download | only in include
      1 /*	$NetBSD: v9_structs.h,v 1.2 2021/12/18 23:45:08 riastradh Exp $	*/
      2 
      3 /*
      4  * Copyright 2012-2016 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 V9_STRUCTS_H_
     27 #define V9_STRUCTS_H_
     28 
     29 struct v9_sdma_mqd {
     30 	uint32_t sdmax_rlcx_rb_cntl;
     31 	uint32_t sdmax_rlcx_rb_base;
     32 	uint32_t sdmax_rlcx_rb_base_hi;
     33 	uint32_t sdmax_rlcx_rb_rptr;
     34 	uint32_t sdmax_rlcx_rb_rptr_hi;
     35 	uint32_t sdmax_rlcx_rb_wptr;
     36 	uint32_t sdmax_rlcx_rb_wptr_hi;
     37 	uint32_t sdmax_rlcx_rb_wptr_poll_cntl;
     38 	uint32_t sdmax_rlcx_rb_rptr_addr_hi;
     39 	uint32_t sdmax_rlcx_rb_rptr_addr_lo;
     40 	uint32_t sdmax_rlcx_ib_cntl;
     41 	uint32_t sdmax_rlcx_ib_rptr;
     42 	uint32_t sdmax_rlcx_ib_offset;
     43 	uint32_t sdmax_rlcx_ib_base_lo;
     44 	uint32_t sdmax_rlcx_ib_base_hi;
     45 	uint32_t sdmax_rlcx_ib_size;
     46 	uint32_t sdmax_rlcx_skip_cntl;
     47 	uint32_t sdmax_rlcx_context_status;
     48 	uint32_t sdmax_rlcx_doorbell;
     49 	uint32_t sdmax_rlcx_status;
     50 	uint32_t sdmax_rlcx_doorbell_log;
     51 	uint32_t sdmax_rlcx_watermark;
     52 	uint32_t sdmax_rlcx_doorbell_offset;
     53 	uint32_t sdmax_rlcx_csa_addr_lo;
     54 	uint32_t sdmax_rlcx_csa_addr_hi;
     55 	uint32_t sdmax_rlcx_ib_sub_remain;
     56 	uint32_t sdmax_rlcx_preempt;
     57 	uint32_t sdmax_rlcx_dummy_reg;
     58 	uint32_t sdmax_rlcx_rb_wptr_poll_addr_hi;
     59 	uint32_t sdmax_rlcx_rb_wptr_poll_addr_lo;
     60 	uint32_t sdmax_rlcx_rb_aql_cntl;
     61 	uint32_t sdmax_rlcx_minor_ptr_update;
     62 	uint32_t sdmax_rlcx_midcmd_data0;
     63 	uint32_t sdmax_rlcx_midcmd_data1;
     64 	uint32_t sdmax_rlcx_midcmd_data2;
     65 	uint32_t sdmax_rlcx_midcmd_data3;
     66 	uint32_t sdmax_rlcx_midcmd_data4;
     67 	uint32_t sdmax_rlcx_midcmd_data5;
     68 	uint32_t sdmax_rlcx_midcmd_data6;
     69 	uint32_t sdmax_rlcx_midcmd_data7;
     70 	uint32_t sdmax_rlcx_midcmd_data8;
     71 	uint32_t sdmax_rlcx_midcmd_cntl;
     72 	uint32_t reserved_42;
     73 	uint32_t reserved_43;
     74 	uint32_t reserved_44;
     75 	uint32_t reserved_45;
     76 	uint32_t reserved_46;
     77 	uint32_t reserved_47;
     78 	uint32_t reserved_48;
     79 	uint32_t reserved_49;
     80 	uint32_t reserved_50;
     81 	uint32_t reserved_51;
     82 	uint32_t reserved_52;
     83 	uint32_t reserved_53;
     84 	uint32_t reserved_54;
     85 	uint32_t reserved_55;
     86 	uint32_t reserved_56;
     87 	uint32_t reserved_57;
     88 	uint32_t reserved_58;
     89 	uint32_t reserved_59;
     90 	uint32_t reserved_60;
     91 	uint32_t reserved_61;
     92 	uint32_t reserved_62;
     93 	uint32_t reserved_63;
     94 	uint32_t reserved_64;
     95 	uint32_t reserved_65;
     96 	uint32_t reserved_66;
     97 	uint32_t reserved_67;
     98 	uint32_t reserved_68;
     99 	uint32_t reserved_69;
    100 	uint32_t reserved_70;
    101 	uint32_t reserved_71;
    102 	uint32_t reserved_72;
    103 	uint32_t reserved_73;
    104 	uint32_t reserved_74;
    105 	uint32_t reserved_75;
    106 	uint32_t reserved_76;
    107 	uint32_t reserved_77;
    108 	uint32_t reserved_78;
    109 	uint32_t reserved_79;
    110 	uint32_t reserved_80;
    111 	uint32_t reserved_81;
    112 	uint32_t reserved_82;
    113 	uint32_t reserved_83;
    114 	uint32_t reserved_84;
    115 	uint32_t reserved_85;
    116 	uint32_t reserved_86;
    117 	uint32_t reserved_87;
    118 	uint32_t reserved_88;
    119 	uint32_t reserved_89;
    120 	uint32_t reserved_90;
    121 	uint32_t reserved_91;
    122 	uint32_t reserved_92;
    123 	uint32_t reserved_93;
    124 	uint32_t reserved_94;
    125 	uint32_t reserved_95;
    126 	uint32_t reserved_96;
    127 	uint32_t reserved_97;
    128 	uint32_t reserved_98;
    129 	uint32_t reserved_99;
    130 	uint32_t reserved_100;
    131 	uint32_t reserved_101;
    132 	uint32_t reserved_102;
    133 	uint32_t reserved_103;
    134 	uint32_t reserved_104;
    135 	uint32_t reserved_105;
    136 	uint32_t reserved_106;
    137 	uint32_t reserved_107;
    138 	uint32_t reserved_108;
    139 	uint32_t reserved_109;
    140 	uint32_t reserved_110;
    141 	uint32_t reserved_111;
    142 	uint32_t reserved_112;
    143 	uint32_t reserved_113;
    144 	uint32_t reserved_114;
    145 	uint32_t reserved_115;
    146 	uint32_t reserved_116;
    147 	uint32_t reserved_117;
    148 	uint32_t reserved_118;
    149 	uint32_t reserved_119;
    150 	uint32_t reserved_120;
    151 	uint32_t reserved_121;
    152 	uint32_t reserved_122;
    153 	uint32_t reserved_123;
    154 	uint32_t reserved_124;
    155 	uint32_t reserved_125;
    156 	/* reserved_126,127: repurposed for driver-internal use */
    157 	uint32_t sdma_engine_id;
    158 	uint32_t sdma_queue_id;
    159 };
    160 
    161 struct v9_mqd {
    162 	uint32_t header;
    163 	uint32_t compute_dispatch_initiator;
    164 	uint32_t compute_dim_x;
    165 	uint32_t compute_dim_y;
    166 	uint32_t compute_dim_z;
    167 	uint32_t compute_start_x;
    168 	uint32_t compute_start_y;
    169 	uint32_t compute_start_z;
    170 	uint32_t compute_num_thread_x;
    171 	uint32_t compute_num_thread_y;
    172 	uint32_t compute_num_thread_z;
    173 	uint32_t compute_pipelinestat_enable;
    174 	uint32_t compute_perfcount_enable;
    175 	uint32_t compute_pgm_lo;
    176 	uint32_t compute_pgm_hi;
    177 	uint32_t compute_tba_lo;
    178 	uint32_t compute_tba_hi;
    179 	uint32_t compute_tma_lo;
    180 	uint32_t compute_tma_hi;
    181 	uint32_t compute_pgm_rsrc1;
    182 	uint32_t compute_pgm_rsrc2;
    183 	uint32_t compute_vmid;
    184 	uint32_t compute_resource_limits;
    185 	uint32_t compute_static_thread_mgmt_se0;
    186 	uint32_t compute_static_thread_mgmt_se1;
    187 	uint32_t compute_tmpring_size;
    188 	uint32_t compute_static_thread_mgmt_se2;
    189 	uint32_t compute_static_thread_mgmt_se3;
    190 	uint32_t compute_restart_x;
    191 	uint32_t compute_restart_y;
    192 	uint32_t compute_restart_z;
    193 	uint32_t compute_thread_trace_enable;
    194 	uint32_t compute_misc_reserved;
    195 	uint32_t compute_dispatch_id;
    196 	uint32_t compute_threadgroup_id;
    197 	uint32_t compute_relaunch;
    198 	uint32_t compute_wave_restore_addr_lo;
    199 	uint32_t compute_wave_restore_addr_hi;
    200 	uint32_t compute_wave_restore_control;
    201 	uint32_t compute_static_thread_mgmt_se4;
    202 	uint32_t compute_static_thread_mgmt_se5;
    203 	uint32_t compute_static_thread_mgmt_se6;
    204 	uint32_t compute_static_thread_mgmt_se7;
    205 	uint32_t reserved_43;
    206 	uint32_t reserved_44;
    207 	uint32_t reserved_45;
    208 	uint32_t reserved_46;
    209 	uint32_t reserved_47;
    210 	uint32_t reserved_48;
    211 	uint32_t reserved_49;
    212 	uint32_t reserved_50;
    213 	uint32_t reserved_51;
    214 	uint32_t reserved_52;
    215 	uint32_t reserved_53;
    216 	uint32_t reserved_54;
    217 	uint32_t reserved_55;
    218 	uint32_t reserved_56;
    219 	uint32_t reserved_57;
    220 	uint32_t reserved_58;
    221 	uint32_t reserved_59;
    222 	uint32_t reserved_60;
    223 	uint32_t reserved_61;
    224 	uint32_t reserved_62;
    225 	uint32_t reserved_63;
    226 	uint32_t reserved_64;
    227 	uint32_t compute_user_data_0;
    228 	uint32_t compute_user_data_1;
    229 	uint32_t compute_user_data_2;
    230 	uint32_t compute_user_data_3;
    231 	uint32_t compute_user_data_4;
    232 	uint32_t compute_user_data_5;
    233 	uint32_t compute_user_data_6;
    234 	uint32_t compute_user_data_7;
    235 	uint32_t compute_user_data_8;
    236 	uint32_t compute_user_data_9;
    237 	uint32_t compute_user_data_10;
    238 	uint32_t compute_user_data_11;
    239 	uint32_t compute_user_data_12;
    240 	uint32_t compute_user_data_13;
    241 	uint32_t compute_user_data_14;
    242 	uint32_t compute_user_data_15;
    243 	uint32_t cp_compute_csinvoc_count_lo;
    244 	uint32_t cp_compute_csinvoc_count_hi;
    245 	uint32_t reserved_83;
    246 	uint32_t reserved_84;
    247 	uint32_t reserved_85;
    248 	uint32_t cp_mqd_query_time_lo;
    249 	uint32_t cp_mqd_query_time_hi;
    250 	uint32_t cp_mqd_connect_start_time_lo;
    251 	uint32_t cp_mqd_connect_start_time_hi;
    252 	uint32_t cp_mqd_connect_end_time_lo;
    253 	uint32_t cp_mqd_connect_end_time_hi;
    254 	uint32_t cp_mqd_connect_end_wf_count;
    255 	uint32_t cp_mqd_connect_end_pq_rptr;
    256 	uint32_t cp_mqd_connect_end_pq_wptr;
    257 	uint32_t cp_mqd_connect_end_ib_rptr;
    258 	uint32_t cp_mqd_readindex_lo;
    259 	uint32_t cp_mqd_readindex_hi;
    260 	uint32_t cp_mqd_save_start_time_lo;
    261 	uint32_t cp_mqd_save_start_time_hi;
    262 	uint32_t cp_mqd_save_end_time_lo;
    263 	uint32_t cp_mqd_save_end_time_hi;
    264 	uint32_t cp_mqd_restore_start_time_lo;
    265 	uint32_t cp_mqd_restore_start_time_hi;
    266 	uint32_t cp_mqd_restore_end_time_lo;
    267 	uint32_t cp_mqd_restore_end_time_hi;
    268 	uint32_t disable_queue;
    269 	uint32_t reserved_107;
    270 	uint32_t gds_cs_ctxsw_cnt0;
    271 	uint32_t gds_cs_ctxsw_cnt1;
    272 	uint32_t gds_cs_ctxsw_cnt2;
    273 	uint32_t gds_cs_ctxsw_cnt3;
    274 	uint32_t reserved_112;
    275 	uint32_t reserved_113;
    276 	uint32_t cp_pq_exe_status_lo;
    277 	uint32_t cp_pq_exe_status_hi;
    278 	uint32_t cp_packet_id_lo;
    279 	uint32_t cp_packet_id_hi;
    280 	uint32_t cp_packet_exe_status_lo;
    281 	uint32_t cp_packet_exe_status_hi;
    282 	uint32_t gds_save_base_addr_lo;
    283 	uint32_t gds_save_base_addr_hi;
    284 	uint32_t gds_save_mask_lo;
    285 	uint32_t gds_save_mask_hi;
    286 	uint32_t ctx_save_base_addr_lo;
    287 	uint32_t ctx_save_base_addr_hi;
    288 	uint32_t dynamic_cu_mask_addr_lo;
    289 	uint32_t dynamic_cu_mask_addr_hi;
    290 	uint32_t cp_mqd_base_addr_lo;
    291 	uint32_t cp_mqd_base_addr_hi;
    292 	uint32_t cp_hqd_active;
    293 	uint32_t cp_hqd_vmid;
    294 	uint32_t cp_hqd_persistent_state;
    295 	uint32_t cp_hqd_pipe_priority;
    296 	uint32_t cp_hqd_queue_priority;
    297 	uint32_t cp_hqd_quantum;
    298 	uint32_t cp_hqd_pq_base_lo;
    299 	uint32_t cp_hqd_pq_base_hi;
    300 	uint32_t cp_hqd_pq_rptr;
    301 	uint32_t cp_hqd_pq_rptr_report_addr_lo;
    302 	uint32_t cp_hqd_pq_rptr_report_addr_hi;
    303 	uint32_t cp_hqd_pq_wptr_poll_addr_lo;
    304 	uint32_t cp_hqd_pq_wptr_poll_addr_hi;
    305 	uint32_t cp_hqd_pq_doorbell_control;
    306 	uint32_t reserved_144;
    307 	uint32_t cp_hqd_pq_control;
    308 	uint32_t cp_hqd_ib_base_addr_lo;
    309 	uint32_t cp_hqd_ib_base_addr_hi;
    310 	uint32_t cp_hqd_ib_rptr;
    311 	uint32_t cp_hqd_ib_control;
    312 	uint32_t cp_hqd_iq_timer;
    313 	uint32_t cp_hqd_iq_rptr;
    314 	uint32_t cp_hqd_dequeue_request;
    315 	uint32_t cp_hqd_dma_offload;
    316 	uint32_t cp_hqd_sema_cmd;
    317 	uint32_t cp_hqd_msg_type;
    318 	uint32_t cp_hqd_atomic0_preop_lo;
    319 	uint32_t cp_hqd_atomic0_preop_hi;
    320 	uint32_t cp_hqd_atomic1_preop_lo;
    321 	uint32_t cp_hqd_atomic1_preop_hi;
    322 	uint32_t cp_hqd_hq_status0;
    323 	uint32_t cp_hqd_hq_control0;
    324 	uint32_t cp_mqd_control;
    325 	uint32_t cp_hqd_hq_status1;
    326 	uint32_t cp_hqd_hq_control1;
    327 	uint32_t cp_hqd_eop_base_addr_lo;
    328 	uint32_t cp_hqd_eop_base_addr_hi;
    329 	uint32_t cp_hqd_eop_control;
    330 	uint32_t cp_hqd_eop_rptr;
    331 	uint32_t cp_hqd_eop_wptr;
    332 	uint32_t cp_hqd_eop_done_events;
    333 	uint32_t cp_hqd_ctx_save_base_addr_lo;
    334 	uint32_t cp_hqd_ctx_save_base_addr_hi;
    335 	uint32_t cp_hqd_ctx_save_control;
    336 	uint32_t cp_hqd_cntl_stack_offset;
    337 	uint32_t cp_hqd_cntl_stack_size;
    338 	uint32_t cp_hqd_wg_state_offset;
    339 	uint32_t cp_hqd_ctx_save_size;
    340 	uint32_t cp_hqd_gds_resource_state;
    341 	uint32_t cp_hqd_error;
    342 	uint32_t cp_hqd_eop_wptr_mem;
    343 	uint32_t cp_hqd_aql_control;
    344 	uint32_t cp_hqd_pq_wptr_lo;
    345 	uint32_t cp_hqd_pq_wptr_hi;
    346 	uint32_t reserved_184;
    347 	uint32_t reserved_185;
    348 	uint32_t reserved_186;
    349 	uint32_t reserved_187;
    350 	uint32_t reserved_188;
    351 	uint32_t reserved_189;
    352 	uint32_t reserved_190;
    353 	uint32_t reserved_191;
    354 	uint32_t iqtimer_pkt_header;
    355 	uint32_t iqtimer_pkt_dw0;
    356 	uint32_t iqtimer_pkt_dw1;
    357 	uint32_t iqtimer_pkt_dw2;
    358 	uint32_t iqtimer_pkt_dw3;
    359 	uint32_t iqtimer_pkt_dw4;
    360 	uint32_t iqtimer_pkt_dw5;
    361 	uint32_t iqtimer_pkt_dw6;
    362 	uint32_t iqtimer_pkt_dw7;
    363 	uint32_t iqtimer_pkt_dw8;
    364 	uint32_t iqtimer_pkt_dw9;
    365 	uint32_t iqtimer_pkt_dw10;
    366 	uint32_t iqtimer_pkt_dw11;
    367 	uint32_t iqtimer_pkt_dw12;
    368 	uint32_t iqtimer_pkt_dw13;
    369 	uint32_t iqtimer_pkt_dw14;
    370 	uint32_t iqtimer_pkt_dw15;
    371 	uint32_t iqtimer_pkt_dw16;
    372 	uint32_t iqtimer_pkt_dw17;
    373 	uint32_t iqtimer_pkt_dw18;
    374 	uint32_t iqtimer_pkt_dw19;
    375 	uint32_t iqtimer_pkt_dw20;
    376 	uint32_t iqtimer_pkt_dw21;
    377 	uint32_t iqtimer_pkt_dw22;
    378 	uint32_t iqtimer_pkt_dw23;
    379 	uint32_t iqtimer_pkt_dw24;
    380 	uint32_t iqtimer_pkt_dw25;
    381 	uint32_t iqtimer_pkt_dw26;
    382 	uint32_t iqtimer_pkt_dw27;
    383 	uint32_t iqtimer_pkt_dw28;
    384 	uint32_t iqtimer_pkt_dw29;
    385 	uint32_t iqtimer_pkt_dw30;
    386 	uint32_t iqtimer_pkt_dw31;
    387 	uint32_t reserved_225;
    388 	uint32_t reserved_226;
    389 	uint32_t reserved_227;
    390 	uint32_t set_resources_header;
    391 	uint32_t set_resources_dw1;
    392 	uint32_t set_resources_dw2;
    393 	uint32_t set_resources_dw3;
    394 	uint32_t set_resources_dw4;
    395 	uint32_t set_resources_dw5;
    396 	uint32_t set_resources_dw6;
    397 	uint32_t set_resources_dw7;
    398 	uint32_t reserved_236;
    399 	uint32_t reserved_237;
    400 	uint32_t reserved_238;
    401 	uint32_t reserved_239;
    402 	uint32_t queue_doorbell_id0;
    403 	uint32_t queue_doorbell_id1;
    404 	uint32_t queue_doorbell_id2;
    405 	uint32_t queue_doorbell_id3;
    406 	uint32_t queue_doorbell_id4;
    407 	uint32_t queue_doorbell_id5;
    408 	uint32_t queue_doorbell_id6;
    409 	uint32_t queue_doorbell_id7;
    410 	uint32_t queue_doorbell_id8;
    411 	uint32_t queue_doorbell_id9;
    412 	uint32_t queue_doorbell_id10;
    413 	uint32_t queue_doorbell_id11;
    414 	uint32_t queue_doorbell_id12;
    415 	uint32_t queue_doorbell_id13;
    416 	uint32_t queue_doorbell_id14;
    417 	uint32_t queue_doorbell_id15;
    418 	uint32_t reserved_256;
    419 	uint32_t reserved_257;
    420 	uint32_t reserved_258;
    421 	uint32_t reserved_259;
    422 	uint32_t reserved_260;
    423 	uint32_t reserved_261;
    424 	uint32_t reserved_262;
    425 	uint32_t reserved_263;
    426 	uint32_t reserved_264;
    427 	uint32_t reserved_265;
    428 	uint32_t reserved_266;
    429 	uint32_t reserved_267;
    430 	uint32_t reserved_268;
    431 	uint32_t reserved_269;
    432 	uint32_t reserved_270;
    433 	uint32_t reserved_271;
    434 	uint32_t reserved_272;
    435 	uint32_t reserved_273;
    436 	uint32_t reserved_274;
    437 	uint32_t reserved_275;
    438 	uint32_t reserved_276;
    439 	uint32_t reserved_277;
    440 	uint32_t reserved_278;
    441 	uint32_t reserved_279;
    442 	uint32_t reserved_280;
    443 	uint32_t reserved_281;
    444 	uint32_t reserved_282;
    445 	uint32_t reserved_283;
    446 	uint32_t reserved_284;
    447 	uint32_t reserved_285;
    448 	uint32_t reserved_286;
    449 	uint32_t reserved_287;
    450 	uint32_t reserved_288;
    451 	uint32_t reserved_289;
    452 	uint32_t reserved_290;
    453 	uint32_t reserved_291;
    454 	uint32_t reserved_292;
    455 	uint32_t reserved_293;
    456 	uint32_t reserved_294;
    457 	uint32_t reserved_295;
    458 	uint32_t reserved_296;
    459 	uint32_t reserved_297;
    460 	uint32_t reserved_298;
    461 	uint32_t reserved_299;
    462 	uint32_t reserved_300;
    463 	uint32_t reserved_301;
    464 	uint32_t reserved_302;
    465 	uint32_t reserved_303;
    466 	uint32_t reserved_304;
    467 	uint32_t reserved_305;
    468 	uint32_t reserved_306;
    469 	uint32_t reserved_307;
    470 	uint32_t reserved_308;
    471 	uint32_t reserved_309;
    472 	uint32_t reserved_310;
    473 	uint32_t reserved_311;
    474 	uint32_t reserved_312;
    475 	uint32_t reserved_313;
    476 	uint32_t reserved_314;
    477 	uint32_t reserved_315;
    478 	uint32_t reserved_316;
    479 	uint32_t reserved_317;
    480 	uint32_t reserved_318;
    481 	uint32_t reserved_319;
    482 	uint32_t reserved_320;
    483 	uint32_t reserved_321;
    484 	uint32_t reserved_322;
    485 	uint32_t reserved_323;
    486 	uint32_t reserved_324;
    487 	uint32_t reserved_325;
    488 	uint32_t reserved_326;
    489 	uint32_t reserved_327;
    490 	uint32_t reserved_328;
    491 	uint32_t reserved_329;
    492 	uint32_t reserved_330;
    493 	uint32_t reserved_331;
    494 	uint32_t reserved_332;
    495 	uint32_t reserved_333;
    496 	uint32_t reserved_334;
    497 	uint32_t reserved_335;
    498 	uint32_t reserved_336;
    499 	uint32_t reserved_337;
    500 	uint32_t reserved_338;
    501 	uint32_t reserved_339;
    502 	uint32_t reserved_340;
    503 	uint32_t reserved_341;
    504 	uint32_t reserved_342;
    505 	uint32_t reserved_343;
    506 	uint32_t reserved_344;
    507 	uint32_t reserved_345;
    508 	uint32_t reserved_346;
    509 	uint32_t reserved_347;
    510 	uint32_t reserved_348;
    511 	uint32_t reserved_349;
    512 	uint32_t reserved_350;
    513 	uint32_t reserved_351;
    514 	uint32_t reserved_352;
    515 	uint32_t reserved_353;
    516 	uint32_t reserved_354;
    517 	uint32_t reserved_355;
    518 	uint32_t reserved_356;
    519 	uint32_t reserved_357;
    520 	uint32_t reserved_358;
    521 	uint32_t reserved_359;
    522 	uint32_t reserved_360;
    523 	uint32_t reserved_361;
    524 	uint32_t reserved_362;
    525 	uint32_t reserved_363;
    526 	uint32_t reserved_364;
    527 	uint32_t reserved_365;
    528 	uint32_t reserved_366;
    529 	uint32_t reserved_367;
    530 	uint32_t reserved_368;
    531 	uint32_t reserved_369;
    532 	uint32_t reserved_370;
    533 	uint32_t reserved_371;
    534 	uint32_t reserved_372;
    535 	uint32_t reserved_373;
    536 	uint32_t reserved_374;
    537 	uint32_t reserved_375;
    538 	uint32_t reserved_376;
    539 	uint32_t reserved_377;
    540 	uint32_t reserved_378;
    541 	uint32_t reserved_379;
    542 	uint32_t reserved_380;
    543 	uint32_t reserved_381;
    544 	uint32_t reserved_382;
    545 	uint32_t reserved_383;
    546 	uint32_t reserved_384;
    547 	uint32_t reserved_385;
    548 	uint32_t reserved_386;
    549 	uint32_t reserved_387;
    550 	uint32_t reserved_388;
    551 	uint32_t reserved_389;
    552 	uint32_t reserved_390;
    553 	uint32_t reserved_391;
    554 	uint32_t reserved_392;
    555 	uint32_t reserved_393;
    556 	uint32_t reserved_394;
    557 	uint32_t reserved_395;
    558 	uint32_t reserved_396;
    559 	uint32_t reserved_397;
    560 	uint32_t reserved_398;
    561 	uint32_t reserved_399;
    562 	uint32_t reserved_400;
    563 	uint32_t reserved_401;
    564 	uint32_t reserved_402;
    565 	uint32_t reserved_403;
    566 	uint32_t reserved_404;
    567 	uint32_t reserved_405;
    568 	uint32_t reserved_406;
    569 	uint32_t reserved_407;
    570 	uint32_t reserved_408;
    571 	uint32_t reserved_409;
    572 	uint32_t reserved_410;
    573 	uint32_t reserved_411;
    574 	uint32_t reserved_412;
    575 	uint32_t reserved_413;
    576 	uint32_t reserved_414;
    577 	uint32_t reserved_415;
    578 	uint32_t reserved_416;
    579 	uint32_t reserved_417;
    580 	uint32_t reserved_418;
    581 	uint32_t reserved_419;
    582 	uint32_t reserved_420;
    583 	uint32_t reserved_421;
    584 	uint32_t reserved_422;
    585 	uint32_t reserved_423;
    586 	uint32_t reserved_424;
    587 	uint32_t reserved_425;
    588 	uint32_t reserved_426;
    589 	uint32_t reserved_427;
    590 	uint32_t reserved_428;
    591 	uint32_t reserved_429;
    592 	uint32_t reserved_430;
    593 	uint32_t reserved_431;
    594 	uint32_t reserved_432;
    595 	uint32_t reserved_433;
    596 	uint32_t reserved_434;
    597 	uint32_t reserved_435;
    598 	uint32_t reserved_436;
    599 	uint32_t reserved_437;
    600 	uint32_t reserved_438;
    601 	uint32_t reserved_439;
    602 	uint32_t reserved_440;
    603 	uint32_t reserved_441;
    604 	uint32_t reserved_442;
    605 	uint32_t reserved_443;
    606 	uint32_t reserved_444;
    607 	uint32_t reserved_445;
    608 	uint32_t reserved_446;
    609 	uint32_t reserved_447;
    610 	uint32_t reserved_448;
    611 	uint32_t reserved_449;
    612 	uint32_t reserved_450;
    613 	uint32_t reserved_451;
    614 	uint32_t reserved_452;
    615 	uint32_t reserved_453;
    616 	uint32_t reserved_454;
    617 	uint32_t reserved_455;
    618 	uint32_t reserved_456;
    619 	uint32_t reserved_457;
    620 	uint32_t reserved_458;
    621 	uint32_t reserved_459;
    622 	uint32_t reserved_460;
    623 	uint32_t reserved_461;
    624 	uint32_t reserved_462;
    625 	uint32_t reserved_463;
    626 	uint32_t reserved_464;
    627 	uint32_t reserved_465;
    628 	uint32_t reserved_466;
    629 	uint32_t reserved_467;
    630 	uint32_t reserved_468;
    631 	uint32_t reserved_469;
    632 	uint32_t reserved_470;
    633 	uint32_t reserved_471;
    634 	uint32_t reserved_472;
    635 	uint32_t reserved_473;
    636 	uint32_t reserved_474;
    637 	uint32_t reserved_475;
    638 	uint32_t reserved_476;
    639 	uint32_t reserved_477;
    640 	uint32_t reserved_478;
    641 	uint32_t reserved_479;
    642 	uint32_t reserved_480;
    643 	uint32_t reserved_481;
    644 	uint32_t reserved_482;
    645 	uint32_t reserved_483;
    646 	uint32_t reserved_484;
    647 	uint32_t reserved_485;
    648 	uint32_t reserved_486;
    649 	uint32_t reserved_487;
    650 	uint32_t reserved_488;
    651 	uint32_t reserved_489;
    652 	uint32_t reserved_490;
    653 	uint32_t reserved_491;
    654 	uint32_t reserved_492;
    655 	uint32_t reserved_493;
    656 	uint32_t reserved_494;
    657 	uint32_t reserved_495;
    658 	uint32_t reserved_496;
    659 	uint32_t reserved_497;
    660 	uint32_t reserved_498;
    661 	uint32_t reserved_499;
    662 	uint32_t reserved_500;
    663 	uint32_t reserved_501;
    664 	uint32_t reserved_502;
    665 	uint32_t reserved_503;
    666 	uint32_t reserved_504;
    667 	uint32_t reserved_505;
    668 	uint32_t reserved_506;
    669 	uint32_t reserved_507;
    670 	uint32_t reserved_508;
    671 	uint32_t reserved_509;
    672 	uint32_t reserved_510;
    673 	uint32_t reserved_511;
    674 };
    675 
    676 struct v9_mqd_allocation {
    677 	struct v9_mqd mqd;
    678 	uint32_t wptr_poll_mem;
    679 	uint32_t rptr_report_mem;
    680 	uint32_t dynamic_cu_mask;
    681 	uint32_t dynamic_rb_mask;
    682 };
    683 
    684 /* from vega10 all CSA format is shifted to chain ib compatible mode */
    685 struct v9_ce_ib_state {
    686     /* section of non chained ib part */
    687     uint32_t ce_ib_completion_status;
    688     uint32_t ce_constegnine_count;
    689     uint32_t ce_ibOffset_ib1;
    690     uint32_t ce_ibOffset_ib2;
    691 
    692     /* section of chained ib */
    693     uint32_t ce_chainib_addrlo_ib1;
    694     uint32_t ce_chainib_addrlo_ib2;
    695     uint32_t ce_chainib_addrhi_ib1;
    696     uint32_t ce_chainib_addrhi_ib2;
    697     uint32_t ce_chainib_size_ib1;
    698     uint32_t ce_chainib_size_ib2;
    699 }; /* total 10 DWORD */
    700 
    701 struct v9_de_ib_state {
    702     /* section of non chained ib part */
    703     uint32_t ib_completion_status;
    704     uint32_t de_constEngine_count;
    705     uint32_t ib_offset_ib1;
    706     uint32_t ib_offset_ib2;
    707 
    708     /* section of chained ib */
    709     uint32_t chain_ib_addrlo_ib1;
    710     uint32_t chain_ib_addrlo_ib2;
    711     uint32_t chain_ib_addrhi_ib1;
    712     uint32_t chain_ib_addrhi_ib2;
    713     uint32_t chain_ib_size_ib1;
    714     uint32_t chain_ib_size_ib2;
    715 
    716     /* section of non chained ib part */
    717     uint32_t preamble_begin_ib1;
    718     uint32_t preamble_begin_ib2;
    719     uint32_t preamble_end_ib1;
    720     uint32_t preamble_end_ib2;
    721 
    722     /* section of chained ib */
    723     uint32_t chain_ib_pream_addrlo_ib1;
    724     uint32_t chain_ib_pream_addrlo_ib2;
    725     uint32_t chain_ib_pream_addrhi_ib1;
    726     uint32_t chain_ib_pream_addrhi_ib2;
    727 
    728     /* section of non chained ib part */
    729     uint32_t draw_indirect_baseLo;
    730     uint32_t draw_indirect_baseHi;
    731     uint32_t disp_indirect_baseLo;
    732     uint32_t disp_indirect_baseHi;
    733     uint32_t gds_backup_addrlo;
    734     uint32_t gds_backup_addrhi;
    735     uint32_t index_base_addrlo;
    736     uint32_t index_base_addrhi;
    737     uint32_t sample_cntl;
    738 }; /* Total of 27 DWORD */
    739 
    740 struct v9_gfx_meta_data {
    741     /* 10 DWORD, address must be 4KB aligned */
    742     struct v9_ce_ib_state ce_payload;
    743     uint32_t reserved1[54];
    744     /* 27 DWORD, address must be 64B aligned */
    745     struct v9_de_ib_state de_payload;
    746     /* PFP IB base address which get pre-empted */
    747     uint32_t DeIbBaseAddrLo;
    748     uint32_t DeIbBaseAddrHi;
    749     uint32_t reserved2[931];
    750 }; /* Total of 4K Bytes */
    751 
    752 #endif /* V9_STRUCTS_H_ */
    753