14b219123SFelix Kuehling /* 24b219123SFelix Kuehling * Copyright 2012-2016 Advanced Micro Devices, Inc. 34b219123SFelix Kuehling * 44b219123SFelix Kuehling * Permission is hereby granted, free of charge, to any person obtaining a 54b219123SFelix Kuehling * copy of this software and associated documentation files (the "Software"), 64b219123SFelix Kuehling * to deal in the Software without restriction, including without limitation 74b219123SFelix Kuehling * the rights to use, copy, modify, merge, publish, distribute, sublicense, 84b219123SFelix Kuehling * and/or sell copies of the Software, and to permit persons to whom the 94b219123SFelix Kuehling * Software is furnished to do so, subject to the following conditions: 104b219123SFelix Kuehling * 114b219123SFelix Kuehling * The above copyright notice and this permission notice shall be included in 124b219123SFelix Kuehling * all copies or substantial portions of the Software. 134b219123SFelix Kuehling * 144b219123SFelix Kuehling * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 154b219123SFelix Kuehling * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 164b219123SFelix Kuehling * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 174b219123SFelix Kuehling * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 184b219123SFelix Kuehling * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 194b219123SFelix Kuehling * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 204b219123SFelix Kuehling * OTHER DEALINGS IN THE SOFTWARE. 214b219123SFelix Kuehling * 224b219123SFelix Kuehling */ 234b219123SFelix Kuehling 244b219123SFelix Kuehling #ifndef V9_STRUCTS_H_ 254b219123SFelix Kuehling #define V9_STRUCTS_H_ 264b219123SFelix Kuehling 274b219123SFelix Kuehling struct v9_sdma_mqd { 284b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_cntl; 294b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_base; 304b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_base_hi; 314b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_rptr; 32cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_rb_rptr_hi; 334b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_wptr; 34cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_rb_wptr_hi; 354b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_wptr_poll_cntl; 364b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_rptr_addr_hi; 374b219123SFelix Kuehling uint32_t sdmax_rlcx_rb_rptr_addr_lo; 384b219123SFelix Kuehling uint32_t sdmax_rlcx_ib_cntl; 394b219123SFelix Kuehling uint32_t sdmax_rlcx_ib_rptr; 404b219123SFelix Kuehling uint32_t sdmax_rlcx_ib_offset; 414b219123SFelix Kuehling uint32_t sdmax_rlcx_ib_base_lo; 424b219123SFelix Kuehling uint32_t sdmax_rlcx_ib_base_hi; 434b219123SFelix Kuehling uint32_t sdmax_rlcx_ib_size; 444b219123SFelix Kuehling uint32_t sdmax_rlcx_skip_cntl; 454b219123SFelix Kuehling uint32_t sdmax_rlcx_context_status; 464b219123SFelix Kuehling uint32_t sdmax_rlcx_doorbell; 47cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_status; 484b219123SFelix Kuehling uint32_t sdmax_rlcx_doorbell_log; 49cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_watermark; 50cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_doorbell_offset; 51cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_csa_addr_lo; 52cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_csa_addr_hi; 53cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_ib_sub_remain; 54cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_preempt; 55cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_dummy_reg; 56cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_rb_wptr_poll_addr_hi; 57cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_rb_wptr_poll_addr_lo; 58cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_rb_aql_cntl; 59cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_minor_ptr_update; 60cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data0; 61cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data1; 62cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data2; 63cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data3; 64cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data4; 65cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data5; 66cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data6; 67cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data7; 68cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_data8; 69cf05fb8bSFelix Kuehling uint32_t sdmax_rlcx_midcmd_cntl; 704b219123SFelix Kuehling uint32_t reserved_42; 714b219123SFelix Kuehling uint32_t reserved_43; 724b219123SFelix Kuehling uint32_t reserved_44; 734b219123SFelix Kuehling uint32_t reserved_45; 744b219123SFelix Kuehling uint32_t reserved_46; 754b219123SFelix Kuehling uint32_t reserved_47; 764b219123SFelix Kuehling uint32_t reserved_48; 774b219123SFelix Kuehling uint32_t reserved_49; 784b219123SFelix Kuehling uint32_t reserved_50; 794b219123SFelix Kuehling uint32_t reserved_51; 804b219123SFelix Kuehling uint32_t reserved_52; 814b219123SFelix Kuehling uint32_t reserved_53; 824b219123SFelix Kuehling uint32_t reserved_54; 834b219123SFelix Kuehling uint32_t reserved_55; 844b219123SFelix Kuehling uint32_t reserved_56; 854b219123SFelix Kuehling uint32_t reserved_57; 864b219123SFelix Kuehling uint32_t reserved_58; 874b219123SFelix Kuehling uint32_t reserved_59; 884b219123SFelix Kuehling uint32_t reserved_60; 894b219123SFelix Kuehling uint32_t reserved_61; 904b219123SFelix Kuehling uint32_t reserved_62; 914b219123SFelix Kuehling uint32_t reserved_63; 924b219123SFelix Kuehling uint32_t reserved_64; 934b219123SFelix Kuehling uint32_t reserved_65; 944b219123SFelix Kuehling uint32_t reserved_66; 954b219123SFelix Kuehling uint32_t reserved_67; 964b219123SFelix Kuehling uint32_t reserved_68; 974b219123SFelix Kuehling uint32_t reserved_69; 984b219123SFelix Kuehling uint32_t reserved_70; 994b219123SFelix Kuehling uint32_t reserved_71; 1004b219123SFelix Kuehling uint32_t reserved_72; 1014b219123SFelix Kuehling uint32_t reserved_73; 1024b219123SFelix Kuehling uint32_t reserved_74; 1034b219123SFelix Kuehling uint32_t reserved_75; 1044b219123SFelix Kuehling uint32_t reserved_76; 1054b219123SFelix Kuehling uint32_t reserved_77; 1064b219123SFelix Kuehling uint32_t reserved_78; 1074b219123SFelix Kuehling uint32_t reserved_79; 1084b219123SFelix Kuehling uint32_t reserved_80; 1094b219123SFelix Kuehling uint32_t reserved_81; 1104b219123SFelix Kuehling uint32_t reserved_82; 1114b219123SFelix Kuehling uint32_t reserved_83; 1124b219123SFelix Kuehling uint32_t reserved_84; 1134b219123SFelix Kuehling uint32_t reserved_85; 1144b219123SFelix Kuehling uint32_t reserved_86; 1154b219123SFelix Kuehling uint32_t reserved_87; 1164b219123SFelix Kuehling uint32_t reserved_88; 1174b219123SFelix Kuehling uint32_t reserved_89; 1184b219123SFelix Kuehling uint32_t reserved_90; 1194b219123SFelix Kuehling uint32_t reserved_91; 1204b219123SFelix Kuehling uint32_t reserved_92; 1214b219123SFelix Kuehling uint32_t reserved_93; 1224b219123SFelix Kuehling uint32_t reserved_94; 1234b219123SFelix Kuehling uint32_t reserved_95; 1244b219123SFelix Kuehling uint32_t reserved_96; 1254b219123SFelix Kuehling uint32_t reserved_97; 1264b219123SFelix Kuehling uint32_t reserved_98; 1274b219123SFelix Kuehling uint32_t reserved_99; 1284b219123SFelix Kuehling uint32_t reserved_100; 1294b219123SFelix Kuehling uint32_t reserved_101; 1304b219123SFelix Kuehling uint32_t reserved_102; 1314b219123SFelix Kuehling uint32_t reserved_103; 1324b219123SFelix Kuehling uint32_t reserved_104; 1334b219123SFelix Kuehling uint32_t reserved_105; 1344b219123SFelix Kuehling uint32_t reserved_106; 1354b219123SFelix Kuehling uint32_t reserved_107; 1364b219123SFelix Kuehling uint32_t reserved_108; 1374b219123SFelix Kuehling uint32_t reserved_109; 1384b219123SFelix Kuehling uint32_t reserved_110; 1394b219123SFelix Kuehling uint32_t reserved_111; 1404b219123SFelix Kuehling uint32_t reserved_112; 1414b219123SFelix Kuehling uint32_t reserved_113; 1424b219123SFelix Kuehling uint32_t reserved_114; 1434b219123SFelix Kuehling uint32_t reserved_115; 1444b219123SFelix Kuehling uint32_t reserved_116; 1454b219123SFelix Kuehling uint32_t reserved_117; 1464b219123SFelix Kuehling uint32_t reserved_118; 1474b219123SFelix Kuehling uint32_t reserved_119; 1484b219123SFelix Kuehling uint32_t reserved_120; 1494b219123SFelix Kuehling uint32_t reserved_121; 1504b219123SFelix Kuehling uint32_t reserved_122; 1514b219123SFelix Kuehling uint32_t reserved_123; 1524b219123SFelix Kuehling uint32_t reserved_124; 1534b219123SFelix Kuehling uint32_t reserved_125; 154c6fd980aSOak Zeng /* reserved_126,127: repurposed for driver-internal use */ 1554b219123SFelix Kuehling uint32_t sdma_engine_id; 1564b219123SFelix Kuehling uint32_t sdma_queue_id; 1574b219123SFelix Kuehling }; 1584b219123SFelix Kuehling 1594b219123SFelix Kuehling struct v9_mqd { 1604b219123SFelix Kuehling uint32_t header; 1614b219123SFelix Kuehling uint32_t compute_dispatch_initiator; 1624b219123SFelix Kuehling uint32_t compute_dim_x; 1634b219123SFelix Kuehling uint32_t compute_dim_y; 1644b219123SFelix Kuehling uint32_t compute_dim_z; 1654b219123SFelix Kuehling uint32_t compute_start_x; 1664b219123SFelix Kuehling uint32_t compute_start_y; 1674b219123SFelix Kuehling uint32_t compute_start_z; 1684b219123SFelix Kuehling uint32_t compute_num_thread_x; 1694b219123SFelix Kuehling uint32_t compute_num_thread_y; 1704b219123SFelix Kuehling uint32_t compute_num_thread_z; 1714b219123SFelix Kuehling uint32_t compute_pipelinestat_enable; 1724b219123SFelix Kuehling uint32_t compute_perfcount_enable; 1734b219123SFelix Kuehling uint32_t compute_pgm_lo; 1744b219123SFelix Kuehling uint32_t compute_pgm_hi; 1754b219123SFelix Kuehling uint32_t compute_tba_lo; 1764b219123SFelix Kuehling uint32_t compute_tba_hi; 1774b219123SFelix Kuehling uint32_t compute_tma_lo; 1784b219123SFelix Kuehling uint32_t compute_tma_hi; 1794b219123SFelix Kuehling uint32_t compute_pgm_rsrc1; 1804b219123SFelix Kuehling uint32_t compute_pgm_rsrc2; 1814b219123SFelix Kuehling uint32_t compute_vmid; 1824b219123SFelix Kuehling uint32_t compute_resource_limits; 1834b219123SFelix Kuehling uint32_t compute_static_thread_mgmt_se0; 1844b219123SFelix Kuehling uint32_t compute_static_thread_mgmt_se1; 1854b219123SFelix Kuehling uint32_t compute_tmpring_size; 1864b219123SFelix Kuehling uint32_t compute_static_thread_mgmt_se2; 1874b219123SFelix Kuehling uint32_t compute_static_thread_mgmt_se3; 1884b219123SFelix Kuehling uint32_t compute_restart_x; 1894b219123SFelix Kuehling uint32_t compute_restart_y; 1904b219123SFelix Kuehling uint32_t compute_restart_z; 1914b219123SFelix Kuehling uint32_t compute_thread_trace_enable; 1924b219123SFelix Kuehling uint32_t compute_misc_reserved; 1934b219123SFelix Kuehling uint32_t compute_dispatch_id; 1944b219123SFelix Kuehling uint32_t compute_threadgroup_id; 1954b219123SFelix Kuehling uint32_t compute_relaunch; 1964b219123SFelix Kuehling uint32_t compute_wave_restore_addr_lo; 1974b219123SFelix Kuehling uint32_t compute_wave_restore_addr_hi; 1984b219123SFelix Kuehling uint32_t compute_wave_restore_control; 199*2f77b9a2SMukul Joshi union { 200*2f77b9a2SMukul Joshi struct { 2015145d57eSJay Cornwall uint32_t compute_static_thread_mgmt_se4; 2025145d57eSJay Cornwall uint32_t compute_static_thread_mgmt_se5; 2035145d57eSJay Cornwall uint32_t compute_static_thread_mgmt_se6; 2045145d57eSJay Cornwall uint32_t compute_static_thread_mgmt_se7; 205*2f77b9a2SMukul Joshi }; 206*2f77b9a2SMukul Joshi struct { 207*2f77b9a2SMukul Joshi uint32_t compute_current_logic_xcc_id; // offset: 39 (0x27) 208*2f77b9a2SMukul Joshi uint32_t compute_restart_cg_tg_id; // offset: 40 (0x28) 209*2f77b9a2SMukul Joshi uint32_t compute_tg_chunk_size; // offset: 41 (0x29) 210*2f77b9a2SMukul Joshi uint32_t compute_restore_tg_chunk_size; // offset: 42 (0x2A) 211*2f77b9a2SMukul Joshi }; 212*2f77b9a2SMukul Joshi }; 2134b219123SFelix Kuehling uint32_t reserved_43; 2144b219123SFelix Kuehling uint32_t reserved_44; 2154b219123SFelix Kuehling uint32_t reserved_45; 2164b219123SFelix Kuehling uint32_t reserved_46; 2174b219123SFelix Kuehling uint32_t reserved_47; 2184b219123SFelix Kuehling uint32_t reserved_48; 2194b219123SFelix Kuehling uint32_t reserved_49; 2204b219123SFelix Kuehling uint32_t reserved_50; 2214b219123SFelix Kuehling uint32_t reserved_51; 2224b219123SFelix Kuehling uint32_t reserved_52; 2234b219123SFelix Kuehling uint32_t reserved_53; 2244b219123SFelix Kuehling uint32_t reserved_54; 2254b219123SFelix Kuehling uint32_t reserved_55; 2264b219123SFelix Kuehling uint32_t reserved_56; 2274b219123SFelix Kuehling uint32_t reserved_57; 2284b219123SFelix Kuehling uint32_t reserved_58; 2294b219123SFelix Kuehling uint32_t reserved_59; 2304b219123SFelix Kuehling uint32_t reserved_60; 2314b219123SFelix Kuehling uint32_t reserved_61; 2324b219123SFelix Kuehling uint32_t reserved_62; 2334b219123SFelix Kuehling uint32_t reserved_63; 2344b219123SFelix Kuehling uint32_t reserved_64; 2354b219123SFelix Kuehling uint32_t compute_user_data_0; 2364b219123SFelix Kuehling uint32_t compute_user_data_1; 2374b219123SFelix Kuehling uint32_t compute_user_data_2; 2384b219123SFelix Kuehling uint32_t compute_user_data_3; 2394b219123SFelix Kuehling uint32_t compute_user_data_4; 2404b219123SFelix Kuehling uint32_t compute_user_data_5; 2414b219123SFelix Kuehling uint32_t compute_user_data_6; 2424b219123SFelix Kuehling uint32_t compute_user_data_7; 2434b219123SFelix Kuehling uint32_t compute_user_data_8; 2444b219123SFelix Kuehling uint32_t compute_user_data_9; 2454b219123SFelix Kuehling uint32_t compute_user_data_10; 2464b219123SFelix Kuehling uint32_t compute_user_data_11; 2474b219123SFelix Kuehling uint32_t compute_user_data_12; 2484b219123SFelix Kuehling uint32_t compute_user_data_13; 2494b219123SFelix Kuehling uint32_t compute_user_data_14; 2504b219123SFelix Kuehling uint32_t compute_user_data_15; 2514b219123SFelix Kuehling uint32_t cp_compute_csinvoc_count_lo; 2524b219123SFelix Kuehling uint32_t cp_compute_csinvoc_count_hi; 2534b219123SFelix Kuehling uint32_t reserved_83; 2544b219123SFelix Kuehling uint32_t reserved_84; 2554b219123SFelix Kuehling uint32_t reserved_85; 2564b219123SFelix Kuehling uint32_t cp_mqd_query_time_lo; 2574b219123SFelix Kuehling uint32_t cp_mqd_query_time_hi; 2584b219123SFelix Kuehling uint32_t cp_mqd_connect_start_time_lo; 2594b219123SFelix Kuehling uint32_t cp_mqd_connect_start_time_hi; 2604b219123SFelix Kuehling uint32_t cp_mqd_connect_end_time_lo; 2614b219123SFelix Kuehling uint32_t cp_mqd_connect_end_time_hi; 2624b219123SFelix Kuehling uint32_t cp_mqd_connect_end_wf_count; 2634b219123SFelix Kuehling uint32_t cp_mqd_connect_end_pq_rptr; 2644b219123SFelix Kuehling uint32_t cp_mqd_connect_end_pq_wptr; 2654b219123SFelix Kuehling uint32_t cp_mqd_connect_end_ib_rptr; 2664b219123SFelix Kuehling uint32_t cp_mqd_readindex_lo; 2674b219123SFelix Kuehling uint32_t cp_mqd_readindex_hi; 2684b219123SFelix Kuehling uint32_t cp_mqd_save_start_time_lo; 2694b219123SFelix Kuehling uint32_t cp_mqd_save_start_time_hi; 2704b219123SFelix Kuehling uint32_t cp_mqd_save_end_time_lo; 2714b219123SFelix Kuehling uint32_t cp_mqd_save_end_time_hi; 2724b219123SFelix Kuehling uint32_t cp_mqd_restore_start_time_lo; 2734b219123SFelix Kuehling uint32_t cp_mqd_restore_start_time_hi; 2744b219123SFelix Kuehling uint32_t cp_mqd_restore_end_time_lo; 2754b219123SFelix Kuehling uint32_t cp_mqd_restore_end_time_hi; 2764b219123SFelix Kuehling uint32_t disable_queue; 2774b219123SFelix Kuehling uint32_t reserved_107; 2784b219123SFelix Kuehling uint32_t gds_cs_ctxsw_cnt0; 2794b219123SFelix Kuehling uint32_t gds_cs_ctxsw_cnt1; 2804b219123SFelix Kuehling uint32_t gds_cs_ctxsw_cnt2; 2814b219123SFelix Kuehling uint32_t gds_cs_ctxsw_cnt3; 2824b219123SFelix Kuehling uint32_t reserved_112; 2834b219123SFelix Kuehling uint32_t reserved_113; 2844b219123SFelix Kuehling uint32_t cp_pq_exe_status_lo; 2854b219123SFelix Kuehling uint32_t cp_pq_exe_status_hi; 2864b219123SFelix Kuehling uint32_t cp_packet_id_lo; 2874b219123SFelix Kuehling uint32_t cp_packet_id_hi; 2884b219123SFelix Kuehling uint32_t cp_packet_exe_status_lo; 2894b219123SFelix Kuehling uint32_t cp_packet_exe_status_hi; 2904b219123SFelix Kuehling uint32_t gds_save_base_addr_lo; 2914b219123SFelix Kuehling uint32_t gds_save_base_addr_hi; 2924b219123SFelix Kuehling uint32_t gds_save_mask_lo; 2934b219123SFelix Kuehling uint32_t gds_save_mask_hi; 2944b219123SFelix Kuehling uint32_t ctx_save_base_addr_lo; 2954b219123SFelix Kuehling uint32_t ctx_save_base_addr_hi; 29629696bd6SAlex Deucher uint32_t dynamic_cu_mask_addr_lo; 29729696bd6SAlex Deucher uint32_t dynamic_cu_mask_addr_hi; 2984b219123SFelix Kuehling uint32_t cp_mqd_base_addr_lo; 2994b219123SFelix Kuehling uint32_t cp_mqd_base_addr_hi; 3004b219123SFelix Kuehling uint32_t cp_hqd_active; 3014b219123SFelix Kuehling uint32_t cp_hqd_vmid; 3024b219123SFelix Kuehling uint32_t cp_hqd_persistent_state; 3034b219123SFelix Kuehling uint32_t cp_hqd_pipe_priority; 3044b219123SFelix Kuehling uint32_t cp_hqd_queue_priority; 3054b219123SFelix Kuehling uint32_t cp_hqd_quantum; 3064b219123SFelix Kuehling uint32_t cp_hqd_pq_base_lo; 3074b219123SFelix Kuehling uint32_t cp_hqd_pq_base_hi; 3084b219123SFelix Kuehling uint32_t cp_hqd_pq_rptr; 3094b219123SFelix Kuehling uint32_t cp_hqd_pq_rptr_report_addr_lo; 3104b219123SFelix Kuehling uint32_t cp_hqd_pq_rptr_report_addr_hi; 3114b219123SFelix Kuehling uint32_t cp_hqd_pq_wptr_poll_addr_lo; 3124b219123SFelix Kuehling uint32_t cp_hqd_pq_wptr_poll_addr_hi; 3134b219123SFelix Kuehling uint32_t cp_hqd_pq_doorbell_control; 3144b219123SFelix Kuehling uint32_t reserved_144; 3154b219123SFelix Kuehling uint32_t cp_hqd_pq_control; 3164b219123SFelix Kuehling uint32_t cp_hqd_ib_base_addr_lo; 3174b219123SFelix Kuehling uint32_t cp_hqd_ib_base_addr_hi; 3184b219123SFelix Kuehling uint32_t cp_hqd_ib_rptr; 3194b219123SFelix Kuehling uint32_t cp_hqd_ib_control; 3204b219123SFelix Kuehling uint32_t cp_hqd_iq_timer; 3214b219123SFelix Kuehling uint32_t cp_hqd_iq_rptr; 3224b219123SFelix Kuehling uint32_t cp_hqd_dequeue_request; 3234b219123SFelix Kuehling uint32_t cp_hqd_dma_offload; 3244b219123SFelix Kuehling uint32_t cp_hqd_sema_cmd; 3254b219123SFelix Kuehling uint32_t cp_hqd_msg_type; 3264b219123SFelix Kuehling uint32_t cp_hqd_atomic0_preop_lo; 3274b219123SFelix Kuehling uint32_t cp_hqd_atomic0_preop_hi; 3284b219123SFelix Kuehling uint32_t cp_hqd_atomic1_preop_lo; 3294b219123SFelix Kuehling uint32_t cp_hqd_atomic1_preop_hi; 3304b219123SFelix Kuehling uint32_t cp_hqd_hq_status0; 3314b219123SFelix Kuehling uint32_t cp_hqd_hq_control0; 3324b219123SFelix Kuehling uint32_t cp_mqd_control; 3334b219123SFelix Kuehling uint32_t cp_hqd_hq_status1; 3344b219123SFelix Kuehling uint32_t cp_hqd_hq_control1; 3354b219123SFelix Kuehling uint32_t cp_hqd_eop_base_addr_lo; 3364b219123SFelix Kuehling uint32_t cp_hqd_eop_base_addr_hi; 3374b219123SFelix Kuehling uint32_t cp_hqd_eop_control; 3384b219123SFelix Kuehling uint32_t cp_hqd_eop_rptr; 3394b219123SFelix Kuehling uint32_t cp_hqd_eop_wptr; 3404b219123SFelix Kuehling uint32_t cp_hqd_eop_done_events; 3414b219123SFelix Kuehling uint32_t cp_hqd_ctx_save_base_addr_lo; 3424b219123SFelix Kuehling uint32_t cp_hqd_ctx_save_base_addr_hi; 3434b219123SFelix Kuehling uint32_t cp_hqd_ctx_save_control; 3444b219123SFelix Kuehling uint32_t cp_hqd_cntl_stack_offset; 3454b219123SFelix Kuehling uint32_t cp_hqd_cntl_stack_size; 3464b219123SFelix Kuehling uint32_t cp_hqd_wg_state_offset; 3474b219123SFelix Kuehling uint32_t cp_hqd_ctx_save_size; 3484b219123SFelix Kuehling uint32_t cp_hqd_gds_resource_state; 3494b219123SFelix Kuehling uint32_t cp_hqd_error; 3504b219123SFelix Kuehling uint32_t cp_hqd_eop_wptr_mem; 3514b219123SFelix Kuehling uint32_t cp_hqd_aql_control; 3524b219123SFelix Kuehling uint32_t cp_hqd_pq_wptr_lo; 3534b219123SFelix Kuehling uint32_t cp_hqd_pq_wptr_hi; 3544b219123SFelix Kuehling uint32_t reserved_184; 3554b219123SFelix Kuehling uint32_t reserved_185; 3564b219123SFelix Kuehling uint32_t reserved_186; 3574b219123SFelix Kuehling uint32_t reserved_187; 3584b219123SFelix Kuehling uint32_t reserved_188; 3594b219123SFelix Kuehling uint32_t reserved_189; 3604b219123SFelix Kuehling uint32_t reserved_190; 3614b219123SFelix Kuehling uint32_t reserved_191; 3624b219123SFelix Kuehling uint32_t iqtimer_pkt_header; 3634b219123SFelix Kuehling uint32_t iqtimer_pkt_dw0; 3644b219123SFelix Kuehling uint32_t iqtimer_pkt_dw1; 3654b219123SFelix Kuehling uint32_t iqtimer_pkt_dw2; 3664b219123SFelix Kuehling uint32_t iqtimer_pkt_dw3; 3674b219123SFelix Kuehling uint32_t iqtimer_pkt_dw4; 3684b219123SFelix Kuehling uint32_t iqtimer_pkt_dw5; 3694b219123SFelix Kuehling uint32_t iqtimer_pkt_dw6; 3704b219123SFelix Kuehling uint32_t iqtimer_pkt_dw7; 3714b219123SFelix Kuehling uint32_t iqtimer_pkt_dw8; 3724b219123SFelix Kuehling uint32_t iqtimer_pkt_dw9; 3734b219123SFelix Kuehling uint32_t iqtimer_pkt_dw10; 3744b219123SFelix Kuehling uint32_t iqtimer_pkt_dw11; 3754b219123SFelix Kuehling uint32_t iqtimer_pkt_dw12; 3764b219123SFelix Kuehling uint32_t iqtimer_pkt_dw13; 3774b219123SFelix Kuehling uint32_t iqtimer_pkt_dw14; 3784b219123SFelix Kuehling uint32_t iqtimer_pkt_dw15; 3794b219123SFelix Kuehling uint32_t iqtimer_pkt_dw16; 3804b219123SFelix Kuehling uint32_t iqtimer_pkt_dw17; 3814b219123SFelix Kuehling uint32_t iqtimer_pkt_dw18; 3824b219123SFelix Kuehling uint32_t iqtimer_pkt_dw19; 3834b219123SFelix Kuehling uint32_t iqtimer_pkt_dw20; 3844b219123SFelix Kuehling uint32_t iqtimer_pkt_dw21; 3854b219123SFelix Kuehling uint32_t iqtimer_pkt_dw22; 3864b219123SFelix Kuehling uint32_t iqtimer_pkt_dw23; 3874b219123SFelix Kuehling uint32_t iqtimer_pkt_dw24; 3884b219123SFelix Kuehling uint32_t iqtimer_pkt_dw25; 3894b219123SFelix Kuehling uint32_t iqtimer_pkt_dw26; 3904b219123SFelix Kuehling uint32_t iqtimer_pkt_dw27; 3914b219123SFelix Kuehling uint32_t iqtimer_pkt_dw28; 3924b219123SFelix Kuehling uint32_t iqtimer_pkt_dw29; 3934b219123SFelix Kuehling uint32_t iqtimer_pkt_dw30; 3944b219123SFelix Kuehling uint32_t iqtimer_pkt_dw31; 395*2f77b9a2SMukul Joshi union { 396*2f77b9a2SMukul Joshi struct { 3974b219123SFelix Kuehling uint32_t reserved_225; 3984b219123SFelix Kuehling uint32_t reserved_226; 399*2f77b9a2SMukul Joshi }; 400*2f77b9a2SMukul Joshi struct { 401*2f77b9a2SMukul Joshi uint32_t pm4_target_xcc_in_xcp; // offset: 225 (0xE1) 402*2f77b9a2SMukul Joshi uint32_t cp_mqd_stride_size; // offset: 226 (0xE2) 403*2f77b9a2SMukul Joshi }; 404*2f77b9a2SMukul Joshi }; 4054b219123SFelix Kuehling uint32_t reserved_227; 4064b219123SFelix Kuehling uint32_t set_resources_header; 4074b219123SFelix Kuehling uint32_t set_resources_dw1; 4084b219123SFelix Kuehling uint32_t set_resources_dw2; 4094b219123SFelix Kuehling uint32_t set_resources_dw3; 4104b219123SFelix Kuehling uint32_t set_resources_dw4; 4114b219123SFelix Kuehling uint32_t set_resources_dw5; 4124b219123SFelix Kuehling uint32_t set_resources_dw6; 4134b219123SFelix Kuehling uint32_t set_resources_dw7; 4144b219123SFelix Kuehling uint32_t reserved_236; 4154b219123SFelix Kuehling uint32_t reserved_237; 4164b219123SFelix Kuehling uint32_t reserved_238; 4174b219123SFelix Kuehling uint32_t reserved_239; 4184b219123SFelix Kuehling uint32_t queue_doorbell_id0; 4194b219123SFelix Kuehling uint32_t queue_doorbell_id1; 4204b219123SFelix Kuehling uint32_t queue_doorbell_id2; 4214b219123SFelix Kuehling uint32_t queue_doorbell_id3; 4224b219123SFelix Kuehling uint32_t queue_doorbell_id4; 4234b219123SFelix Kuehling uint32_t queue_doorbell_id5; 4244b219123SFelix Kuehling uint32_t queue_doorbell_id6; 4254b219123SFelix Kuehling uint32_t queue_doorbell_id7; 4264b219123SFelix Kuehling uint32_t queue_doorbell_id8; 4274b219123SFelix Kuehling uint32_t queue_doorbell_id9; 4284b219123SFelix Kuehling uint32_t queue_doorbell_id10; 4294b219123SFelix Kuehling uint32_t queue_doorbell_id11; 4304b219123SFelix Kuehling uint32_t queue_doorbell_id12; 4314b219123SFelix Kuehling uint32_t queue_doorbell_id13; 4324b219123SFelix Kuehling uint32_t queue_doorbell_id14; 4334b219123SFelix Kuehling uint32_t queue_doorbell_id15; 4344b219123SFelix Kuehling uint32_t reserved_256; 4354b219123SFelix Kuehling uint32_t reserved_257; 4364b219123SFelix Kuehling uint32_t reserved_258; 4374b219123SFelix Kuehling uint32_t reserved_259; 4384b219123SFelix Kuehling uint32_t reserved_260; 4394b219123SFelix Kuehling uint32_t reserved_261; 4404b219123SFelix Kuehling uint32_t reserved_262; 4414b219123SFelix Kuehling uint32_t reserved_263; 4424b219123SFelix Kuehling uint32_t reserved_264; 4434b219123SFelix Kuehling uint32_t reserved_265; 4444b219123SFelix Kuehling uint32_t reserved_266; 4454b219123SFelix Kuehling uint32_t reserved_267; 4464b219123SFelix Kuehling uint32_t reserved_268; 4474b219123SFelix Kuehling uint32_t reserved_269; 4484b219123SFelix Kuehling uint32_t reserved_270; 4494b219123SFelix Kuehling uint32_t reserved_271; 4504b219123SFelix Kuehling uint32_t reserved_272; 4514b219123SFelix Kuehling uint32_t reserved_273; 4524b219123SFelix Kuehling uint32_t reserved_274; 4534b219123SFelix Kuehling uint32_t reserved_275; 4544b219123SFelix Kuehling uint32_t reserved_276; 4554b219123SFelix Kuehling uint32_t reserved_277; 4564b219123SFelix Kuehling uint32_t reserved_278; 4574b219123SFelix Kuehling uint32_t reserved_279; 4584b219123SFelix Kuehling uint32_t reserved_280; 4594b219123SFelix Kuehling uint32_t reserved_281; 4604b219123SFelix Kuehling uint32_t reserved_282; 4614b219123SFelix Kuehling uint32_t reserved_283; 4624b219123SFelix Kuehling uint32_t reserved_284; 4634b219123SFelix Kuehling uint32_t reserved_285; 4644b219123SFelix Kuehling uint32_t reserved_286; 4654b219123SFelix Kuehling uint32_t reserved_287; 4664b219123SFelix Kuehling uint32_t reserved_288; 4674b219123SFelix Kuehling uint32_t reserved_289; 4684b219123SFelix Kuehling uint32_t reserved_290; 4694b219123SFelix Kuehling uint32_t reserved_291; 4704b219123SFelix Kuehling uint32_t reserved_292; 4714b219123SFelix Kuehling uint32_t reserved_293; 4724b219123SFelix Kuehling uint32_t reserved_294; 4734b219123SFelix Kuehling uint32_t reserved_295; 4744b219123SFelix Kuehling uint32_t reserved_296; 4754b219123SFelix Kuehling uint32_t reserved_297; 4764b219123SFelix Kuehling uint32_t reserved_298; 4774b219123SFelix Kuehling uint32_t reserved_299; 4784b219123SFelix Kuehling uint32_t reserved_300; 4794b219123SFelix Kuehling uint32_t reserved_301; 4804b219123SFelix Kuehling uint32_t reserved_302; 4814b219123SFelix Kuehling uint32_t reserved_303; 4824b219123SFelix Kuehling uint32_t reserved_304; 4834b219123SFelix Kuehling uint32_t reserved_305; 4844b219123SFelix Kuehling uint32_t reserved_306; 4854b219123SFelix Kuehling uint32_t reserved_307; 4864b219123SFelix Kuehling uint32_t reserved_308; 4874b219123SFelix Kuehling uint32_t reserved_309; 4884b219123SFelix Kuehling uint32_t reserved_310; 4894b219123SFelix Kuehling uint32_t reserved_311; 4904b219123SFelix Kuehling uint32_t reserved_312; 4914b219123SFelix Kuehling uint32_t reserved_313; 4924b219123SFelix Kuehling uint32_t reserved_314; 4934b219123SFelix Kuehling uint32_t reserved_315; 4944b219123SFelix Kuehling uint32_t reserved_316; 4954b219123SFelix Kuehling uint32_t reserved_317; 4964b219123SFelix Kuehling uint32_t reserved_318; 4974b219123SFelix Kuehling uint32_t reserved_319; 4984b219123SFelix Kuehling uint32_t reserved_320; 4994b219123SFelix Kuehling uint32_t reserved_321; 5004b219123SFelix Kuehling uint32_t reserved_322; 5014b219123SFelix Kuehling uint32_t reserved_323; 5024b219123SFelix Kuehling uint32_t reserved_324; 5034b219123SFelix Kuehling uint32_t reserved_325; 5044b219123SFelix Kuehling uint32_t reserved_326; 5054b219123SFelix Kuehling uint32_t reserved_327; 5064b219123SFelix Kuehling uint32_t reserved_328; 5074b219123SFelix Kuehling uint32_t reserved_329; 5084b219123SFelix Kuehling uint32_t reserved_330; 5094b219123SFelix Kuehling uint32_t reserved_331; 5104b219123SFelix Kuehling uint32_t reserved_332; 5114b219123SFelix Kuehling uint32_t reserved_333; 5124b219123SFelix Kuehling uint32_t reserved_334; 5134b219123SFelix Kuehling uint32_t reserved_335; 5144b219123SFelix Kuehling uint32_t reserved_336; 5154b219123SFelix Kuehling uint32_t reserved_337; 5164b219123SFelix Kuehling uint32_t reserved_338; 5174b219123SFelix Kuehling uint32_t reserved_339; 5184b219123SFelix Kuehling uint32_t reserved_340; 5194b219123SFelix Kuehling uint32_t reserved_341; 5204b219123SFelix Kuehling uint32_t reserved_342; 5214b219123SFelix Kuehling uint32_t reserved_343; 5224b219123SFelix Kuehling uint32_t reserved_344; 5234b219123SFelix Kuehling uint32_t reserved_345; 5244b219123SFelix Kuehling uint32_t reserved_346; 5254b219123SFelix Kuehling uint32_t reserved_347; 5264b219123SFelix Kuehling uint32_t reserved_348; 5274b219123SFelix Kuehling uint32_t reserved_349; 5284b219123SFelix Kuehling uint32_t reserved_350; 5294b219123SFelix Kuehling uint32_t reserved_351; 5304b219123SFelix Kuehling uint32_t reserved_352; 5314b219123SFelix Kuehling uint32_t reserved_353; 5324b219123SFelix Kuehling uint32_t reserved_354; 5334b219123SFelix Kuehling uint32_t reserved_355; 5344b219123SFelix Kuehling uint32_t reserved_356; 5354b219123SFelix Kuehling uint32_t reserved_357; 5364b219123SFelix Kuehling uint32_t reserved_358; 5374b219123SFelix Kuehling uint32_t reserved_359; 5384b219123SFelix Kuehling uint32_t reserved_360; 5394b219123SFelix Kuehling uint32_t reserved_361; 5404b219123SFelix Kuehling uint32_t reserved_362; 5414b219123SFelix Kuehling uint32_t reserved_363; 5424b219123SFelix Kuehling uint32_t reserved_364; 5434b219123SFelix Kuehling uint32_t reserved_365; 5444b219123SFelix Kuehling uint32_t reserved_366; 5454b219123SFelix Kuehling uint32_t reserved_367; 5464b219123SFelix Kuehling uint32_t reserved_368; 5474b219123SFelix Kuehling uint32_t reserved_369; 5484b219123SFelix Kuehling uint32_t reserved_370; 5494b219123SFelix Kuehling uint32_t reserved_371; 5504b219123SFelix Kuehling uint32_t reserved_372; 5514b219123SFelix Kuehling uint32_t reserved_373; 5524b219123SFelix Kuehling uint32_t reserved_374; 5534b219123SFelix Kuehling uint32_t reserved_375; 5544b219123SFelix Kuehling uint32_t reserved_376; 5554b219123SFelix Kuehling uint32_t reserved_377; 5564b219123SFelix Kuehling uint32_t reserved_378; 5574b219123SFelix Kuehling uint32_t reserved_379; 5584b219123SFelix Kuehling uint32_t reserved_380; 5594b219123SFelix Kuehling uint32_t reserved_381; 5604b219123SFelix Kuehling uint32_t reserved_382; 5614b219123SFelix Kuehling uint32_t reserved_383; 5624b219123SFelix Kuehling uint32_t reserved_384; 5634b219123SFelix Kuehling uint32_t reserved_385; 5644b219123SFelix Kuehling uint32_t reserved_386; 5654b219123SFelix Kuehling uint32_t reserved_387; 5664b219123SFelix Kuehling uint32_t reserved_388; 5674b219123SFelix Kuehling uint32_t reserved_389; 5684b219123SFelix Kuehling uint32_t reserved_390; 5694b219123SFelix Kuehling uint32_t reserved_391; 5704b219123SFelix Kuehling uint32_t reserved_392; 5714b219123SFelix Kuehling uint32_t reserved_393; 5724b219123SFelix Kuehling uint32_t reserved_394; 5734b219123SFelix Kuehling uint32_t reserved_395; 5744b219123SFelix Kuehling uint32_t reserved_396; 5754b219123SFelix Kuehling uint32_t reserved_397; 5764b219123SFelix Kuehling uint32_t reserved_398; 5774b219123SFelix Kuehling uint32_t reserved_399; 5784b219123SFelix Kuehling uint32_t reserved_400; 5794b219123SFelix Kuehling uint32_t reserved_401; 5804b219123SFelix Kuehling uint32_t reserved_402; 5814b219123SFelix Kuehling uint32_t reserved_403; 5824b219123SFelix Kuehling uint32_t reserved_404; 5834b219123SFelix Kuehling uint32_t reserved_405; 5844b219123SFelix Kuehling uint32_t reserved_406; 5854b219123SFelix Kuehling uint32_t reserved_407; 5864b219123SFelix Kuehling uint32_t reserved_408; 5874b219123SFelix Kuehling uint32_t reserved_409; 5884b219123SFelix Kuehling uint32_t reserved_410; 5894b219123SFelix Kuehling uint32_t reserved_411; 5904b219123SFelix Kuehling uint32_t reserved_412; 5914b219123SFelix Kuehling uint32_t reserved_413; 5924b219123SFelix Kuehling uint32_t reserved_414; 5934b219123SFelix Kuehling uint32_t reserved_415; 5944b219123SFelix Kuehling uint32_t reserved_416; 5954b219123SFelix Kuehling uint32_t reserved_417; 5964b219123SFelix Kuehling uint32_t reserved_418; 5974b219123SFelix Kuehling uint32_t reserved_419; 5984b219123SFelix Kuehling uint32_t reserved_420; 5994b219123SFelix Kuehling uint32_t reserved_421; 6004b219123SFelix Kuehling uint32_t reserved_422; 6014b219123SFelix Kuehling uint32_t reserved_423; 6024b219123SFelix Kuehling uint32_t reserved_424; 6034b219123SFelix Kuehling uint32_t reserved_425; 6044b219123SFelix Kuehling uint32_t reserved_426; 6054b219123SFelix Kuehling uint32_t reserved_427; 6064b219123SFelix Kuehling uint32_t reserved_428; 6074b219123SFelix Kuehling uint32_t reserved_429; 6084b219123SFelix Kuehling uint32_t reserved_430; 6094b219123SFelix Kuehling uint32_t reserved_431; 6104b219123SFelix Kuehling uint32_t reserved_432; 6114b219123SFelix Kuehling uint32_t reserved_433; 6124b219123SFelix Kuehling uint32_t reserved_434; 6134b219123SFelix Kuehling uint32_t reserved_435; 6144b219123SFelix Kuehling uint32_t reserved_436; 6154b219123SFelix Kuehling uint32_t reserved_437; 6164b219123SFelix Kuehling uint32_t reserved_438; 6174b219123SFelix Kuehling uint32_t reserved_439; 6184b219123SFelix Kuehling uint32_t reserved_440; 6194b219123SFelix Kuehling uint32_t reserved_441; 6204b219123SFelix Kuehling uint32_t reserved_442; 6214b219123SFelix Kuehling uint32_t reserved_443; 6224b219123SFelix Kuehling uint32_t reserved_444; 6234b219123SFelix Kuehling uint32_t reserved_445; 6244b219123SFelix Kuehling uint32_t reserved_446; 6254b219123SFelix Kuehling uint32_t reserved_447; 6264b219123SFelix Kuehling uint32_t reserved_448; 6274b219123SFelix Kuehling uint32_t reserved_449; 6284b219123SFelix Kuehling uint32_t reserved_450; 6294b219123SFelix Kuehling uint32_t reserved_451; 6304b219123SFelix Kuehling uint32_t reserved_452; 6314b219123SFelix Kuehling uint32_t reserved_453; 6324b219123SFelix Kuehling uint32_t reserved_454; 6334b219123SFelix Kuehling uint32_t reserved_455; 6344b219123SFelix Kuehling uint32_t reserved_456; 6354b219123SFelix Kuehling uint32_t reserved_457; 6364b219123SFelix Kuehling uint32_t reserved_458; 6374b219123SFelix Kuehling uint32_t reserved_459; 6384b219123SFelix Kuehling uint32_t reserved_460; 6394b219123SFelix Kuehling uint32_t reserved_461; 6404b219123SFelix Kuehling uint32_t reserved_462; 6414b219123SFelix Kuehling uint32_t reserved_463; 6424b219123SFelix Kuehling uint32_t reserved_464; 6434b219123SFelix Kuehling uint32_t reserved_465; 6444b219123SFelix Kuehling uint32_t reserved_466; 6454b219123SFelix Kuehling uint32_t reserved_467; 6464b219123SFelix Kuehling uint32_t reserved_468; 6474b219123SFelix Kuehling uint32_t reserved_469; 6484b219123SFelix Kuehling uint32_t reserved_470; 6494b219123SFelix Kuehling uint32_t reserved_471; 6504b219123SFelix Kuehling uint32_t reserved_472; 6514b219123SFelix Kuehling uint32_t reserved_473; 6524b219123SFelix Kuehling uint32_t reserved_474; 6534b219123SFelix Kuehling uint32_t reserved_475; 6544b219123SFelix Kuehling uint32_t reserved_476; 6554b219123SFelix Kuehling uint32_t reserved_477; 6564b219123SFelix Kuehling uint32_t reserved_478; 6574b219123SFelix Kuehling uint32_t reserved_479; 6584b219123SFelix Kuehling uint32_t reserved_480; 6594b219123SFelix Kuehling uint32_t reserved_481; 6604b219123SFelix Kuehling uint32_t reserved_482; 6614b219123SFelix Kuehling uint32_t reserved_483; 6624b219123SFelix Kuehling uint32_t reserved_484; 6634b219123SFelix Kuehling uint32_t reserved_485; 6644b219123SFelix Kuehling uint32_t reserved_486; 6654b219123SFelix Kuehling uint32_t reserved_487; 6664b219123SFelix Kuehling uint32_t reserved_488; 6674b219123SFelix Kuehling uint32_t reserved_489; 6684b219123SFelix Kuehling uint32_t reserved_490; 6694b219123SFelix Kuehling uint32_t reserved_491; 6704b219123SFelix Kuehling uint32_t reserved_492; 6714b219123SFelix Kuehling uint32_t reserved_493; 6724b219123SFelix Kuehling uint32_t reserved_494; 6734b219123SFelix Kuehling uint32_t reserved_495; 6744b219123SFelix Kuehling uint32_t reserved_496; 6754b219123SFelix Kuehling uint32_t reserved_497; 6764b219123SFelix Kuehling uint32_t reserved_498; 6774b219123SFelix Kuehling uint32_t reserved_499; 6784b219123SFelix Kuehling uint32_t reserved_500; 6794b219123SFelix Kuehling uint32_t reserved_501; 6804b219123SFelix Kuehling uint32_t reserved_502; 6814b219123SFelix Kuehling uint32_t reserved_503; 6824b219123SFelix Kuehling uint32_t reserved_504; 6834b219123SFelix Kuehling uint32_t reserved_505; 6844b219123SFelix Kuehling uint32_t reserved_506; 6854b219123SFelix Kuehling uint32_t reserved_507; 6864b219123SFelix Kuehling uint32_t reserved_508; 6874b219123SFelix Kuehling uint32_t reserved_509; 6884b219123SFelix Kuehling uint32_t reserved_510; 6894b219123SFelix Kuehling uint32_t reserved_511; 6904b219123SFelix Kuehling }; 6914b219123SFelix Kuehling 692ffe6d881SAlex Deucher struct v9_mqd_allocation { 693ffe6d881SAlex Deucher struct v9_mqd mqd; 694ffe6d881SAlex Deucher uint32_t wptr_poll_mem; 695ffe6d881SAlex Deucher uint32_t rptr_report_mem; 696ffe6d881SAlex Deucher uint32_t dynamic_cu_mask; 697ffe6d881SAlex Deucher uint32_t dynamic_rb_mask; 698ffe6d881SAlex Deucher }; 699ffe6d881SAlex Deucher 700cca02cd3SXiangliang Yu /* from vega10 all CSA format is shifted to chain ib compatible mode */ 701cca02cd3SXiangliang Yu struct v9_ce_ib_state { 702cca02cd3SXiangliang Yu /* section of non chained ib part */ 703cca02cd3SXiangliang Yu uint32_t ce_ib_completion_status; 704cca02cd3SXiangliang Yu uint32_t ce_constegnine_count; 705cca02cd3SXiangliang Yu uint32_t ce_ibOffset_ib1; 706cca02cd3SXiangliang Yu uint32_t ce_ibOffset_ib2; 707cca02cd3SXiangliang Yu 708cca02cd3SXiangliang Yu /* section of chained ib */ 709cca02cd3SXiangliang Yu uint32_t ce_chainib_addrlo_ib1; 710cca02cd3SXiangliang Yu uint32_t ce_chainib_addrlo_ib2; 711cca02cd3SXiangliang Yu uint32_t ce_chainib_addrhi_ib1; 712cca02cd3SXiangliang Yu uint32_t ce_chainib_addrhi_ib2; 713cca02cd3SXiangliang Yu uint32_t ce_chainib_size_ib1; 714cca02cd3SXiangliang Yu uint32_t ce_chainib_size_ib2; 715cca02cd3SXiangliang Yu }; /* total 10 DWORD */ 716cca02cd3SXiangliang Yu 717cca02cd3SXiangliang Yu struct v9_de_ib_state { 718cca02cd3SXiangliang Yu /* section of non chained ib part */ 719cca02cd3SXiangliang Yu uint32_t ib_completion_status; 720cca02cd3SXiangliang Yu uint32_t de_constEngine_count; 721cca02cd3SXiangliang Yu uint32_t ib_offset_ib1; 722cca02cd3SXiangliang Yu uint32_t ib_offset_ib2; 723cca02cd3SXiangliang Yu 724cca02cd3SXiangliang Yu /* section of chained ib */ 725cca02cd3SXiangliang Yu uint32_t chain_ib_addrlo_ib1; 726cca02cd3SXiangliang Yu uint32_t chain_ib_addrlo_ib2; 727cca02cd3SXiangliang Yu uint32_t chain_ib_addrhi_ib1; 728cca02cd3SXiangliang Yu uint32_t chain_ib_addrhi_ib2; 729cca02cd3SXiangliang Yu uint32_t chain_ib_size_ib1; 730cca02cd3SXiangliang Yu uint32_t chain_ib_size_ib2; 731cca02cd3SXiangliang Yu 732cca02cd3SXiangliang Yu /* section of non chained ib part */ 733cca02cd3SXiangliang Yu uint32_t preamble_begin_ib1; 734cca02cd3SXiangliang Yu uint32_t preamble_begin_ib2; 735cca02cd3SXiangliang Yu uint32_t preamble_end_ib1; 736cca02cd3SXiangliang Yu uint32_t preamble_end_ib2; 737cca02cd3SXiangliang Yu 738cca02cd3SXiangliang Yu /* section of chained ib */ 739cca02cd3SXiangliang Yu uint32_t chain_ib_pream_addrlo_ib1; 740cca02cd3SXiangliang Yu uint32_t chain_ib_pream_addrlo_ib2; 741cca02cd3SXiangliang Yu uint32_t chain_ib_pream_addrhi_ib1; 742cca02cd3SXiangliang Yu uint32_t chain_ib_pream_addrhi_ib2; 743cca02cd3SXiangliang Yu 744cca02cd3SXiangliang Yu /* section of non chained ib part */ 745cca02cd3SXiangliang Yu uint32_t draw_indirect_baseLo; 746cca02cd3SXiangliang Yu uint32_t draw_indirect_baseHi; 747cca02cd3SXiangliang Yu uint32_t disp_indirect_baseLo; 748cca02cd3SXiangliang Yu uint32_t disp_indirect_baseHi; 749cca02cd3SXiangliang Yu uint32_t gds_backup_addrlo; 750cca02cd3SXiangliang Yu uint32_t gds_backup_addrhi; 751cca02cd3SXiangliang Yu uint32_t index_base_addrlo; 752cca02cd3SXiangliang Yu uint32_t index_base_addrhi; 753cca02cd3SXiangliang Yu uint32_t sample_cntl; 754cca02cd3SXiangliang Yu }; /* Total of 27 DWORD */ 755cca02cd3SXiangliang Yu 756cca02cd3SXiangliang Yu struct v9_gfx_meta_data { 757cca02cd3SXiangliang Yu /* 10 DWORD, address must be 4KB aligned */ 758cca02cd3SXiangliang Yu struct v9_ce_ib_state ce_payload; 759cca02cd3SXiangliang Yu uint32_t reserved1[54]; 760cca02cd3SXiangliang Yu /* 27 DWORD, address must be 64B aligned */ 761cca02cd3SXiangliang Yu struct v9_de_ib_state de_payload; 762cca02cd3SXiangliang Yu /* PFP IB base address which get pre-empted */ 763cca02cd3SXiangliang Yu uint32_t DeIbBaseAddrLo; 764cca02cd3SXiangliang Yu uint32_t DeIbBaseAddrHi; 765cca02cd3SXiangliang Yu uint32_t reserved2[931]; 766cca02cd3SXiangliang Yu }; /* Total of 4K Bytes */ 767cca02cd3SXiangliang Yu 7684b219123SFelix Kuehling #endif /* V9_STRUCTS_H_ */ 769