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