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