1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2012 Advanced Micro Devices, Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Permission is hereby granted, free of charge, to any person obtaining a 5*4882a593Smuzhiyun * copy of this software and associated documentation files (the "Software"), 6*4882a593Smuzhiyun * to deal in the Software without restriction, including without limitation 7*4882a593Smuzhiyun * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*4882a593Smuzhiyun * and/or sell copies of the Software, and to permit persons to whom the 9*4882a593Smuzhiyun * Software is furnished to do so, subject to the following conditions: 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be included in 12*4882a593Smuzhiyun * all copies or substantial portions of the Software. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15*4882a593Smuzhiyun * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17*4882a593Smuzhiyun * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18*4882a593Smuzhiyun * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19*4882a593Smuzhiyun * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20*4882a593Smuzhiyun * OTHER DEALINGS IN THE SOFTWARE. 21*4882a593Smuzhiyun * 22*4882a593Smuzhiyun */ 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #ifndef VI_STRUCTS_H_ 25*4882a593Smuzhiyun #define VI_STRUCTS_H_ 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun struct vi_sdma_mqd { 28*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_cntl; 29*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_base; 30*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_base_hi; 31*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_rptr; 32*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_wptr; 33*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_wptr_poll_cntl; 34*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_wptr_poll_addr_hi; 35*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_wptr_poll_addr_lo; 36*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_rptr_addr_hi; 37*4882a593Smuzhiyun uint32_t sdmax_rlcx_rb_rptr_addr_lo; 38*4882a593Smuzhiyun uint32_t sdmax_rlcx_ib_cntl; 39*4882a593Smuzhiyun uint32_t sdmax_rlcx_ib_rptr; 40*4882a593Smuzhiyun uint32_t sdmax_rlcx_ib_offset; 41*4882a593Smuzhiyun uint32_t sdmax_rlcx_ib_base_lo; 42*4882a593Smuzhiyun uint32_t sdmax_rlcx_ib_base_hi; 43*4882a593Smuzhiyun uint32_t sdmax_rlcx_ib_size; 44*4882a593Smuzhiyun uint32_t sdmax_rlcx_skip_cntl; 45*4882a593Smuzhiyun uint32_t sdmax_rlcx_context_status; 46*4882a593Smuzhiyun uint32_t sdmax_rlcx_doorbell; 47*4882a593Smuzhiyun uint32_t sdmax_rlcx_virtual_addr; 48*4882a593Smuzhiyun uint32_t sdmax_rlcx_ape1_cntl; 49*4882a593Smuzhiyun uint32_t sdmax_rlcx_doorbell_log; 50*4882a593Smuzhiyun uint32_t reserved_22; 51*4882a593Smuzhiyun uint32_t reserved_23; 52*4882a593Smuzhiyun uint32_t reserved_24; 53*4882a593Smuzhiyun uint32_t reserved_25; 54*4882a593Smuzhiyun uint32_t reserved_26; 55*4882a593Smuzhiyun uint32_t reserved_27; 56*4882a593Smuzhiyun uint32_t reserved_28; 57*4882a593Smuzhiyun uint32_t reserved_29; 58*4882a593Smuzhiyun uint32_t reserved_30; 59*4882a593Smuzhiyun uint32_t reserved_31; 60*4882a593Smuzhiyun uint32_t reserved_32; 61*4882a593Smuzhiyun uint32_t reserved_33; 62*4882a593Smuzhiyun uint32_t reserved_34; 63*4882a593Smuzhiyun uint32_t reserved_35; 64*4882a593Smuzhiyun uint32_t reserved_36; 65*4882a593Smuzhiyun uint32_t reserved_37; 66*4882a593Smuzhiyun uint32_t reserved_38; 67*4882a593Smuzhiyun uint32_t reserved_39; 68*4882a593Smuzhiyun uint32_t reserved_40; 69*4882a593Smuzhiyun uint32_t reserved_41; 70*4882a593Smuzhiyun uint32_t reserved_42; 71*4882a593Smuzhiyun uint32_t reserved_43; 72*4882a593Smuzhiyun uint32_t reserved_44; 73*4882a593Smuzhiyun uint32_t reserved_45; 74*4882a593Smuzhiyun uint32_t reserved_46; 75*4882a593Smuzhiyun uint32_t reserved_47; 76*4882a593Smuzhiyun uint32_t reserved_48; 77*4882a593Smuzhiyun uint32_t reserved_49; 78*4882a593Smuzhiyun uint32_t reserved_50; 79*4882a593Smuzhiyun uint32_t reserved_51; 80*4882a593Smuzhiyun uint32_t reserved_52; 81*4882a593Smuzhiyun uint32_t reserved_53; 82*4882a593Smuzhiyun uint32_t reserved_54; 83*4882a593Smuzhiyun uint32_t reserved_55; 84*4882a593Smuzhiyun uint32_t reserved_56; 85*4882a593Smuzhiyun uint32_t reserved_57; 86*4882a593Smuzhiyun uint32_t reserved_58; 87*4882a593Smuzhiyun uint32_t reserved_59; 88*4882a593Smuzhiyun uint32_t reserved_60; 89*4882a593Smuzhiyun uint32_t reserved_61; 90*4882a593Smuzhiyun uint32_t reserved_62; 91*4882a593Smuzhiyun uint32_t reserved_63; 92*4882a593Smuzhiyun uint32_t reserved_64; 93*4882a593Smuzhiyun uint32_t reserved_65; 94*4882a593Smuzhiyun uint32_t reserved_66; 95*4882a593Smuzhiyun uint32_t reserved_67; 96*4882a593Smuzhiyun uint32_t reserved_68; 97*4882a593Smuzhiyun uint32_t reserved_69; 98*4882a593Smuzhiyun uint32_t reserved_70; 99*4882a593Smuzhiyun uint32_t reserved_71; 100*4882a593Smuzhiyun uint32_t reserved_72; 101*4882a593Smuzhiyun uint32_t reserved_73; 102*4882a593Smuzhiyun uint32_t reserved_74; 103*4882a593Smuzhiyun uint32_t reserved_75; 104*4882a593Smuzhiyun uint32_t reserved_76; 105*4882a593Smuzhiyun uint32_t reserved_77; 106*4882a593Smuzhiyun uint32_t reserved_78; 107*4882a593Smuzhiyun uint32_t reserved_79; 108*4882a593Smuzhiyun uint32_t reserved_80; 109*4882a593Smuzhiyun uint32_t reserved_81; 110*4882a593Smuzhiyun uint32_t reserved_82; 111*4882a593Smuzhiyun uint32_t reserved_83; 112*4882a593Smuzhiyun uint32_t reserved_84; 113*4882a593Smuzhiyun uint32_t reserved_85; 114*4882a593Smuzhiyun uint32_t reserved_86; 115*4882a593Smuzhiyun uint32_t reserved_87; 116*4882a593Smuzhiyun uint32_t reserved_88; 117*4882a593Smuzhiyun uint32_t reserved_89; 118*4882a593Smuzhiyun uint32_t reserved_90; 119*4882a593Smuzhiyun uint32_t reserved_91; 120*4882a593Smuzhiyun uint32_t reserved_92; 121*4882a593Smuzhiyun uint32_t reserved_93; 122*4882a593Smuzhiyun uint32_t reserved_94; 123*4882a593Smuzhiyun uint32_t reserved_95; 124*4882a593Smuzhiyun uint32_t reserved_96; 125*4882a593Smuzhiyun uint32_t reserved_97; 126*4882a593Smuzhiyun uint32_t reserved_98; 127*4882a593Smuzhiyun uint32_t reserved_99; 128*4882a593Smuzhiyun uint32_t reserved_100; 129*4882a593Smuzhiyun uint32_t reserved_101; 130*4882a593Smuzhiyun uint32_t reserved_102; 131*4882a593Smuzhiyun uint32_t reserved_103; 132*4882a593Smuzhiyun uint32_t reserved_104; 133*4882a593Smuzhiyun uint32_t reserved_105; 134*4882a593Smuzhiyun uint32_t reserved_106; 135*4882a593Smuzhiyun uint32_t reserved_107; 136*4882a593Smuzhiyun uint32_t reserved_108; 137*4882a593Smuzhiyun uint32_t reserved_109; 138*4882a593Smuzhiyun uint32_t reserved_110; 139*4882a593Smuzhiyun uint32_t reserved_111; 140*4882a593Smuzhiyun uint32_t reserved_112; 141*4882a593Smuzhiyun uint32_t reserved_113; 142*4882a593Smuzhiyun uint32_t reserved_114; 143*4882a593Smuzhiyun uint32_t reserved_115; 144*4882a593Smuzhiyun uint32_t reserved_116; 145*4882a593Smuzhiyun uint32_t reserved_117; 146*4882a593Smuzhiyun uint32_t reserved_118; 147*4882a593Smuzhiyun uint32_t reserved_119; 148*4882a593Smuzhiyun uint32_t reserved_120; 149*4882a593Smuzhiyun uint32_t reserved_121; 150*4882a593Smuzhiyun uint32_t reserved_122; 151*4882a593Smuzhiyun uint32_t reserved_123; 152*4882a593Smuzhiyun uint32_t reserved_124; 153*4882a593Smuzhiyun uint32_t reserved_125; 154*4882a593Smuzhiyun /* reserved_126,127: repurposed for driver-internal use */ 155*4882a593Smuzhiyun uint32_t sdma_engine_id; 156*4882a593Smuzhiyun uint32_t sdma_queue_id; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun struct vi_mqd { 160*4882a593Smuzhiyun uint32_t header; 161*4882a593Smuzhiyun uint32_t compute_dispatch_initiator; 162*4882a593Smuzhiyun uint32_t compute_dim_x; 163*4882a593Smuzhiyun uint32_t compute_dim_y; 164*4882a593Smuzhiyun uint32_t compute_dim_z; 165*4882a593Smuzhiyun uint32_t compute_start_x; 166*4882a593Smuzhiyun uint32_t compute_start_y; 167*4882a593Smuzhiyun uint32_t compute_start_z; 168*4882a593Smuzhiyun uint32_t compute_num_thread_x; 169*4882a593Smuzhiyun uint32_t compute_num_thread_y; 170*4882a593Smuzhiyun uint32_t compute_num_thread_z; 171*4882a593Smuzhiyun uint32_t compute_pipelinestat_enable; 172*4882a593Smuzhiyun uint32_t compute_perfcount_enable; 173*4882a593Smuzhiyun uint32_t compute_pgm_lo; 174*4882a593Smuzhiyun uint32_t compute_pgm_hi; 175*4882a593Smuzhiyun uint32_t compute_tba_lo; 176*4882a593Smuzhiyun uint32_t compute_tba_hi; 177*4882a593Smuzhiyun uint32_t compute_tma_lo; 178*4882a593Smuzhiyun uint32_t compute_tma_hi; 179*4882a593Smuzhiyun uint32_t compute_pgm_rsrc1; 180*4882a593Smuzhiyun uint32_t compute_pgm_rsrc2; 181*4882a593Smuzhiyun uint32_t compute_vmid; 182*4882a593Smuzhiyun uint32_t compute_resource_limits; 183*4882a593Smuzhiyun uint32_t compute_static_thread_mgmt_se0; 184*4882a593Smuzhiyun uint32_t compute_static_thread_mgmt_se1; 185*4882a593Smuzhiyun uint32_t compute_tmpring_size; 186*4882a593Smuzhiyun uint32_t compute_static_thread_mgmt_se2; 187*4882a593Smuzhiyun uint32_t compute_static_thread_mgmt_se3; 188*4882a593Smuzhiyun uint32_t compute_restart_x; 189*4882a593Smuzhiyun uint32_t compute_restart_y; 190*4882a593Smuzhiyun uint32_t compute_restart_z; 191*4882a593Smuzhiyun uint32_t compute_thread_trace_enable; 192*4882a593Smuzhiyun uint32_t compute_misc_reserved; 193*4882a593Smuzhiyun uint32_t compute_dispatch_id; 194*4882a593Smuzhiyun uint32_t compute_threadgroup_id; 195*4882a593Smuzhiyun uint32_t compute_relaunch; 196*4882a593Smuzhiyun uint32_t compute_wave_restore_addr_lo; 197*4882a593Smuzhiyun uint32_t compute_wave_restore_addr_hi; 198*4882a593Smuzhiyun uint32_t compute_wave_restore_control; 199*4882a593Smuzhiyun uint32_t reserved9; 200*4882a593Smuzhiyun uint32_t reserved10; 201*4882a593Smuzhiyun uint32_t reserved11; 202*4882a593Smuzhiyun uint32_t reserved12; 203*4882a593Smuzhiyun uint32_t reserved13; 204*4882a593Smuzhiyun uint32_t reserved14; 205*4882a593Smuzhiyun uint32_t reserved15; 206*4882a593Smuzhiyun uint32_t reserved16; 207*4882a593Smuzhiyun uint32_t reserved17; 208*4882a593Smuzhiyun uint32_t reserved18; 209*4882a593Smuzhiyun uint32_t reserved19; 210*4882a593Smuzhiyun uint32_t reserved20; 211*4882a593Smuzhiyun uint32_t reserved21; 212*4882a593Smuzhiyun uint32_t reserved22; 213*4882a593Smuzhiyun uint32_t reserved23; 214*4882a593Smuzhiyun uint32_t reserved24; 215*4882a593Smuzhiyun uint32_t reserved25; 216*4882a593Smuzhiyun uint32_t reserved26; 217*4882a593Smuzhiyun uint32_t reserved27; 218*4882a593Smuzhiyun uint32_t reserved28; 219*4882a593Smuzhiyun uint32_t reserved29; 220*4882a593Smuzhiyun uint32_t reserved30; 221*4882a593Smuzhiyun uint32_t reserved31; 222*4882a593Smuzhiyun uint32_t reserved32; 223*4882a593Smuzhiyun uint32_t reserved33; 224*4882a593Smuzhiyun uint32_t reserved34; 225*4882a593Smuzhiyun uint32_t compute_user_data_0; 226*4882a593Smuzhiyun uint32_t compute_user_data_1; 227*4882a593Smuzhiyun uint32_t compute_user_data_2; 228*4882a593Smuzhiyun uint32_t compute_user_data_3; 229*4882a593Smuzhiyun uint32_t compute_user_data_4; 230*4882a593Smuzhiyun uint32_t compute_user_data_5; 231*4882a593Smuzhiyun uint32_t compute_user_data_6; 232*4882a593Smuzhiyun uint32_t compute_user_data_7; 233*4882a593Smuzhiyun uint32_t compute_user_data_8; 234*4882a593Smuzhiyun uint32_t compute_user_data_9; 235*4882a593Smuzhiyun uint32_t compute_user_data_10; 236*4882a593Smuzhiyun uint32_t compute_user_data_11; 237*4882a593Smuzhiyun uint32_t compute_user_data_12; 238*4882a593Smuzhiyun uint32_t compute_user_data_13; 239*4882a593Smuzhiyun uint32_t compute_user_data_14; 240*4882a593Smuzhiyun uint32_t compute_user_data_15; 241*4882a593Smuzhiyun uint32_t cp_compute_csinvoc_count_lo; 242*4882a593Smuzhiyun uint32_t cp_compute_csinvoc_count_hi; 243*4882a593Smuzhiyun uint32_t reserved35; 244*4882a593Smuzhiyun uint32_t reserved36; 245*4882a593Smuzhiyun uint32_t reserved37; 246*4882a593Smuzhiyun uint32_t cp_mqd_query_time_lo; 247*4882a593Smuzhiyun uint32_t cp_mqd_query_time_hi; 248*4882a593Smuzhiyun uint32_t cp_mqd_connect_start_time_lo; 249*4882a593Smuzhiyun uint32_t cp_mqd_connect_start_time_hi; 250*4882a593Smuzhiyun uint32_t cp_mqd_connect_end_time_lo; 251*4882a593Smuzhiyun uint32_t cp_mqd_connect_end_time_hi; 252*4882a593Smuzhiyun uint32_t cp_mqd_connect_end_wf_count; 253*4882a593Smuzhiyun uint32_t cp_mqd_connect_end_pq_rptr; 254*4882a593Smuzhiyun uint32_t cp_mqd_connect_endvi_sdma_mqd_pq_wptr; 255*4882a593Smuzhiyun uint32_t cp_mqd_connect_end_ib_rptr; 256*4882a593Smuzhiyun uint32_t reserved38; 257*4882a593Smuzhiyun uint32_t reserved39; 258*4882a593Smuzhiyun uint32_t cp_mqd_save_start_time_lo; 259*4882a593Smuzhiyun uint32_t cp_mqd_save_start_time_hi; 260*4882a593Smuzhiyun uint32_t cp_mqd_save_end_time_lo; 261*4882a593Smuzhiyun uint32_t cp_mqd_save_end_time_hi; 262*4882a593Smuzhiyun uint32_t cp_mqd_restore_start_time_lo; 263*4882a593Smuzhiyun uint32_t cp_mqd_restore_start_time_hi; 264*4882a593Smuzhiyun uint32_t cp_mqd_restore_end_time_lo; 265*4882a593Smuzhiyun uint32_t cp_mqd_restore_end_time_hi; 266*4882a593Smuzhiyun uint32_t disable_queue; 267*4882a593Smuzhiyun uint32_t reserved41; 268*4882a593Smuzhiyun uint32_t gds_cs_ctxsw_cnt0; 269*4882a593Smuzhiyun uint32_t gds_cs_ctxsw_cnt1; 270*4882a593Smuzhiyun uint32_t gds_cs_ctxsw_cnt2; 271*4882a593Smuzhiyun uint32_t gds_cs_ctxsw_cnt3; 272*4882a593Smuzhiyun uint32_t reserved42; 273*4882a593Smuzhiyun uint32_t reserved43; 274*4882a593Smuzhiyun uint32_t cp_pq_exe_status_lo; 275*4882a593Smuzhiyun uint32_t cp_pq_exe_status_hi; 276*4882a593Smuzhiyun uint32_t cp_packet_id_lo; 277*4882a593Smuzhiyun uint32_t cp_packet_id_hi; 278*4882a593Smuzhiyun uint32_t cp_packet_exe_status_lo; 279*4882a593Smuzhiyun uint32_t cp_packet_exe_status_hi; 280*4882a593Smuzhiyun uint32_t gds_save_base_addr_lo; 281*4882a593Smuzhiyun uint32_t gds_save_base_addr_hi; 282*4882a593Smuzhiyun uint32_t gds_save_mask_lo; 283*4882a593Smuzhiyun uint32_t gds_save_mask_hi; 284*4882a593Smuzhiyun uint32_t ctx_save_base_addr_lo; 285*4882a593Smuzhiyun uint32_t ctx_save_base_addr_hi; 286*4882a593Smuzhiyun uint32_t dynamic_cu_mask_addr_lo; 287*4882a593Smuzhiyun uint32_t dynamic_cu_mask_addr_hi; 288*4882a593Smuzhiyun uint32_t cp_mqd_base_addr_lo; 289*4882a593Smuzhiyun uint32_t cp_mqd_base_addr_hi; 290*4882a593Smuzhiyun uint32_t cp_hqd_active; 291*4882a593Smuzhiyun uint32_t cp_hqd_vmid; 292*4882a593Smuzhiyun uint32_t cp_hqd_persistent_state; 293*4882a593Smuzhiyun uint32_t cp_hqd_pipe_priority; 294*4882a593Smuzhiyun uint32_t cp_hqd_queue_priority; 295*4882a593Smuzhiyun uint32_t cp_hqd_quantum; 296*4882a593Smuzhiyun uint32_t cp_hqd_pq_base_lo; 297*4882a593Smuzhiyun uint32_t cp_hqd_pq_base_hi; 298*4882a593Smuzhiyun uint32_t cp_hqd_pq_rptr; 299*4882a593Smuzhiyun uint32_t cp_hqd_pq_rptr_report_addr_lo; 300*4882a593Smuzhiyun uint32_t cp_hqd_pq_rptr_report_addr_hi; 301*4882a593Smuzhiyun uint32_t cp_hqd_pq_wptr_poll_addr_lo; 302*4882a593Smuzhiyun uint32_t cp_hqd_pq_wptr_poll_addr_hi; 303*4882a593Smuzhiyun uint32_t cp_hqd_pq_doorbell_control; 304*4882a593Smuzhiyun uint32_t cp_hqd_pq_wptr; 305*4882a593Smuzhiyun uint32_t cp_hqd_pq_control; 306*4882a593Smuzhiyun uint32_t cp_hqd_ib_base_addr_lo; 307*4882a593Smuzhiyun uint32_t cp_hqd_ib_base_addr_hi; 308*4882a593Smuzhiyun uint32_t cp_hqd_ib_rptr; 309*4882a593Smuzhiyun uint32_t cp_hqd_ib_control; 310*4882a593Smuzhiyun uint32_t cp_hqd_iq_timer; 311*4882a593Smuzhiyun uint32_t cp_hqd_iq_rptr; 312*4882a593Smuzhiyun uint32_t cp_hqd_dequeue_request; 313*4882a593Smuzhiyun uint32_t cp_hqd_dma_offload; 314*4882a593Smuzhiyun uint32_t cp_hqd_sema_cmd; 315*4882a593Smuzhiyun uint32_t cp_hqd_msg_type; 316*4882a593Smuzhiyun uint32_t cp_hqd_atomic0_preop_lo; 317*4882a593Smuzhiyun uint32_t cp_hqd_atomic0_preop_hi; 318*4882a593Smuzhiyun uint32_t cp_hqd_atomic1_preop_lo; 319*4882a593Smuzhiyun uint32_t cp_hqd_atomic1_preop_hi; 320*4882a593Smuzhiyun uint32_t cp_hqd_hq_status0; 321*4882a593Smuzhiyun uint32_t cp_hqd_hq_control0; 322*4882a593Smuzhiyun uint32_t cp_mqd_control; 323*4882a593Smuzhiyun uint32_t cp_hqd_hq_status1; 324*4882a593Smuzhiyun uint32_t cp_hqd_hq_control1; 325*4882a593Smuzhiyun uint32_t cp_hqd_eop_base_addr_lo; 326*4882a593Smuzhiyun uint32_t cp_hqd_eop_base_addr_hi; 327*4882a593Smuzhiyun uint32_t cp_hqd_eop_control; 328*4882a593Smuzhiyun uint32_t cp_hqd_eop_rptr; 329*4882a593Smuzhiyun uint32_t cp_hqd_eop_wptr; 330*4882a593Smuzhiyun uint32_t cp_hqd_eop_done_events; 331*4882a593Smuzhiyun uint32_t cp_hqd_ctx_save_base_addr_lo; 332*4882a593Smuzhiyun uint32_t cp_hqd_ctx_save_base_addr_hi; 333*4882a593Smuzhiyun uint32_t cp_hqd_ctx_save_control; 334*4882a593Smuzhiyun uint32_t cp_hqd_cntl_stack_offset; 335*4882a593Smuzhiyun uint32_t cp_hqd_cntl_stack_size; 336*4882a593Smuzhiyun uint32_t cp_hqd_wg_state_offset; 337*4882a593Smuzhiyun uint32_t cp_hqd_ctx_save_size; 338*4882a593Smuzhiyun uint32_t cp_hqd_gds_resource_state; 339*4882a593Smuzhiyun uint32_t cp_hqd_error; 340*4882a593Smuzhiyun uint32_t cp_hqd_eop_wptr_mem; 341*4882a593Smuzhiyun uint32_t cp_hqd_eop_dones; 342*4882a593Smuzhiyun uint32_t reserved46; 343*4882a593Smuzhiyun uint32_t reserved47; 344*4882a593Smuzhiyun uint32_t reserved48; 345*4882a593Smuzhiyun uint32_t reserved49; 346*4882a593Smuzhiyun uint32_t reserved50; 347*4882a593Smuzhiyun uint32_t reserved51; 348*4882a593Smuzhiyun uint32_t reserved52; 349*4882a593Smuzhiyun uint32_t reserved53; 350*4882a593Smuzhiyun uint32_t reserved54; 351*4882a593Smuzhiyun uint32_t reserved55; 352*4882a593Smuzhiyun uint32_t iqtimer_pkt_header; 353*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw0; 354*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw1; 355*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw2; 356*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw3; 357*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw4; 358*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw5; 359*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw6; 360*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw7; 361*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw8; 362*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw9; 363*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw10; 364*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw11; 365*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw12; 366*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw13; 367*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw14; 368*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw15; 369*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw16; 370*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw17; 371*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw18; 372*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw19; 373*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw20; 374*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw21; 375*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw22; 376*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw23; 377*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw24; 378*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw25; 379*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw26; 380*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw27; 381*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw28; 382*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw29; 383*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw30; 384*4882a593Smuzhiyun uint32_t iqtimer_pkt_dw31; 385*4882a593Smuzhiyun uint32_t reserved56; 386*4882a593Smuzhiyun uint32_t reserved57; 387*4882a593Smuzhiyun uint32_t reserved58; 388*4882a593Smuzhiyun uint32_t set_resources_header; 389*4882a593Smuzhiyun uint32_t set_resources_dw1; 390*4882a593Smuzhiyun uint32_t set_resources_dw2; 391*4882a593Smuzhiyun uint32_t set_resources_dw3; 392*4882a593Smuzhiyun uint32_t set_resources_dw4; 393*4882a593Smuzhiyun uint32_t set_resources_dw5; 394*4882a593Smuzhiyun uint32_t set_resources_dw6; 395*4882a593Smuzhiyun uint32_t set_resources_dw7; 396*4882a593Smuzhiyun uint32_t reserved59; 397*4882a593Smuzhiyun uint32_t reserved60; 398*4882a593Smuzhiyun uint32_t reserved61; 399*4882a593Smuzhiyun uint32_t reserved62; 400*4882a593Smuzhiyun uint32_t reserved63; 401*4882a593Smuzhiyun uint32_t reserved64; 402*4882a593Smuzhiyun uint32_t reserved65; 403*4882a593Smuzhiyun uint32_t reserved66; 404*4882a593Smuzhiyun uint32_t reserved67; 405*4882a593Smuzhiyun uint32_t reserved68; 406*4882a593Smuzhiyun uint32_t reserved69; 407*4882a593Smuzhiyun uint32_t reserved70; 408*4882a593Smuzhiyun uint32_t reserved71; 409*4882a593Smuzhiyun uint32_t reserved72; 410*4882a593Smuzhiyun uint32_t reserved73; 411*4882a593Smuzhiyun uint32_t reserved74; 412*4882a593Smuzhiyun uint32_t reserved75; 413*4882a593Smuzhiyun uint32_t reserved76; 414*4882a593Smuzhiyun uint32_t reserved77; 415*4882a593Smuzhiyun uint32_t reserved78; 416*4882a593Smuzhiyun uint32_t reserved_t[256]; 417*4882a593Smuzhiyun }; 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun struct vi_mqd_allocation { 420*4882a593Smuzhiyun struct vi_mqd mqd; 421*4882a593Smuzhiyun uint32_t wptr_poll_mem; 422*4882a593Smuzhiyun uint32_t rptr_report_mem; 423*4882a593Smuzhiyun uint32_t dynamic_cu_mask; 424*4882a593Smuzhiyun uint32_t dynamic_rb_mask; 425*4882a593Smuzhiyun }; 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun struct vi_ce_ib_state { 428*4882a593Smuzhiyun uint32_t ce_ib_completion_status; 429*4882a593Smuzhiyun uint32_t ce_constegnine_count; 430*4882a593Smuzhiyun uint32_t ce_ibOffset_ib1; 431*4882a593Smuzhiyun uint32_t ce_ibOffset_ib2; 432*4882a593Smuzhiyun }; /* Total of 4 DWORD */ 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun struct vi_de_ib_state { 435*4882a593Smuzhiyun uint32_t ib_completion_status; 436*4882a593Smuzhiyun uint32_t de_constEngine_count; 437*4882a593Smuzhiyun uint32_t ib_offset_ib1; 438*4882a593Smuzhiyun uint32_t ib_offset_ib2; 439*4882a593Smuzhiyun uint32_t preamble_begin_ib1; 440*4882a593Smuzhiyun uint32_t preamble_begin_ib2; 441*4882a593Smuzhiyun uint32_t preamble_end_ib1; 442*4882a593Smuzhiyun uint32_t preamble_end_ib2; 443*4882a593Smuzhiyun uint32_t draw_indirect_baseLo; 444*4882a593Smuzhiyun uint32_t draw_indirect_baseHi; 445*4882a593Smuzhiyun uint32_t disp_indirect_baseLo; 446*4882a593Smuzhiyun uint32_t disp_indirect_baseHi; 447*4882a593Smuzhiyun uint32_t gds_backup_addrlo; 448*4882a593Smuzhiyun uint32_t gds_backup_addrhi; 449*4882a593Smuzhiyun uint32_t index_base_addrlo; 450*4882a593Smuzhiyun uint32_t index_base_addrhi; 451*4882a593Smuzhiyun uint32_t sample_cntl; 452*4882a593Smuzhiyun }; /* Total of 17 DWORD */ 453*4882a593Smuzhiyun 454*4882a593Smuzhiyun struct vi_ce_ib_state_chained_ib { 455*4882a593Smuzhiyun /* section of non chained ib part */ 456*4882a593Smuzhiyun uint32_t ce_ib_completion_status; 457*4882a593Smuzhiyun uint32_t ce_constegnine_count; 458*4882a593Smuzhiyun uint32_t ce_ibOffset_ib1; 459*4882a593Smuzhiyun uint32_t ce_ibOffset_ib2; 460*4882a593Smuzhiyun 461*4882a593Smuzhiyun /* section of chained ib */ 462*4882a593Smuzhiyun uint32_t ce_chainib_addrlo_ib1; 463*4882a593Smuzhiyun uint32_t ce_chainib_addrlo_ib2; 464*4882a593Smuzhiyun uint32_t ce_chainib_addrhi_ib1; 465*4882a593Smuzhiyun uint32_t ce_chainib_addrhi_ib2; 466*4882a593Smuzhiyun uint32_t ce_chainib_size_ib1; 467*4882a593Smuzhiyun uint32_t ce_chainib_size_ib2; 468*4882a593Smuzhiyun }; /* total 10 DWORD */ 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun struct vi_de_ib_state_chained_ib { 471*4882a593Smuzhiyun /* section of non chained ib part */ 472*4882a593Smuzhiyun uint32_t ib_completion_status; 473*4882a593Smuzhiyun uint32_t de_constEngine_count; 474*4882a593Smuzhiyun uint32_t ib_offset_ib1; 475*4882a593Smuzhiyun uint32_t ib_offset_ib2; 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun /* section of chained ib */ 478*4882a593Smuzhiyun uint32_t chain_ib_addrlo_ib1; 479*4882a593Smuzhiyun uint32_t chain_ib_addrlo_ib2; 480*4882a593Smuzhiyun uint32_t chain_ib_addrhi_ib1; 481*4882a593Smuzhiyun uint32_t chain_ib_addrhi_ib2; 482*4882a593Smuzhiyun uint32_t chain_ib_size_ib1; 483*4882a593Smuzhiyun uint32_t chain_ib_size_ib2; 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun /* section of non chained ib part */ 486*4882a593Smuzhiyun uint32_t preamble_begin_ib1; 487*4882a593Smuzhiyun uint32_t preamble_begin_ib2; 488*4882a593Smuzhiyun uint32_t preamble_end_ib1; 489*4882a593Smuzhiyun uint32_t preamble_end_ib2; 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun /* section of chained ib */ 492*4882a593Smuzhiyun uint32_t chain_ib_pream_addrlo_ib1; 493*4882a593Smuzhiyun uint32_t chain_ib_pream_addrlo_ib2; 494*4882a593Smuzhiyun uint32_t chain_ib_pream_addrhi_ib1; 495*4882a593Smuzhiyun uint32_t chain_ib_pream_addrhi_ib2; 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun /* section of non chained ib part */ 498*4882a593Smuzhiyun uint32_t draw_indirect_baseLo; 499*4882a593Smuzhiyun uint32_t draw_indirect_baseHi; 500*4882a593Smuzhiyun uint32_t disp_indirect_baseLo; 501*4882a593Smuzhiyun uint32_t disp_indirect_baseHi; 502*4882a593Smuzhiyun uint32_t gds_backup_addrlo; 503*4882a593Smuzhiyun uint32_t gds_backup_addrhi; 504*4882a593Smuzhiyun uint32_t index_base_addrlo; 505*4882a593Smuzhiyun uint32_t index_base_addrhi; 506*4882a593Smuzhiyun uint32_t sample_cntl; 507*4882a593Smuzhiyun }; /* Total of 27 DWORD */ 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun struct vi_gfx_meta_data { 510*4882a593Smuzhiyun /* 4 DWORD, address must be 4KB aligned */ 511*4882a593Smuzhiyun struct vi_ce_ib_state ce_payload; 512*4882a593Smuzhiyun uint32_t reserved1[60]; 513*4882a593Smuzhiyun /* 17 DWORD, address must be 64B aligned */ 514*4882a593Smuzhiyun struct vi_de_ib_state de_payload; 515*4882a593Smuzhiyun /* PFP IB base address which get pre-empted */ 516*4882a593Smuzhiyun uint32_t DeIbBaseAddrLo; 517*4882a593Smuzhiyun uint32_t DeIbBaseAddrHi; 518*4882a593Smuzhiyun uint32_t reserved2[941]; 519*4882a593Smuzhiyun }; /* Total of 4K Bytes */ 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun struct vi_gfx_meta_data_chained_ib { 522*4882a593Smuzhiyun /* 10 DWORD, address must be 4KB aligned */ 523*4882a593Smuzhiyun struct vi_ce_ib_state_chained_ib ce_payload; 524*4882a593Smuzhiyun uint32_t reserved1[54]; 525*4882a593Smuzhiyun /* 27 DWORD, address must be 64B aligned */ 526*4882a593Smuzhiyun struct vi_de_ib_state_chained_ib de_payload; 527*4882a593Smuzhiyun /* PFP IB base address which get pre-empted */ 528*4882a593Smuzhiyun uint32_t DeIbBaseAddrLo; 529*4882a593Smuzhiyun uint32_t DeIbBaseAddrHi; 530*4882a593Smuzhiyun uint32_t reserved2[931]; 531*4882a593Smuzhiyun }; /* Total of 4K Bytes */ 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun #endif /* VI_STRUCTS_H_ */ 534