162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Copyright 2018 Advanced Micro Devices, Inc. 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 562306a36Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 662306a36Sopenharmony_ci * to deal in the Software without restriction, including without limitation 762306a36Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 862306a36Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 962306a36Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 1062306a36Sopenharmony_ci * 1162306a36Sopenharmony_ci * The above copyright notice and this permission notice shall be included in 1262306a36Sopenharmony_ci * all copies or substantial portions of the Software. 1362306a36Sopenharmony_ci * 1462306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1562306a36Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1662306a36Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1762306a36Sopenharmony_ci * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 1862306a36Sopenharmony_ci * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 1962306a36Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 2062306a36Sopenharmony_ci * OTHER DEALINGS IN THE SOFTWARE. 2162306a36Sopenharmony_ci * 2262306a36Sopenharmony_ci */ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#ifndef _DISCOVERY_H_ 2562306a36Sopenharmony_ci#define _DISCOVERY_H_ 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci#define PSP_HEADER_SIZE 256 2862306a36Sopenharmony_ci#define BINARY_SIGNATURE 0x28211407 2962306a36Sopenharmony_ci#define DISCOVERY_TABLE_SIGNATURE 0x53445049 3062306a36Sopenharmony_ci#define GC_TABLE_ID 0x4347 3162306a36Sopenharmony_ci#define HARVEST_TABLE_SIGNATURE 0x56524148 3262306a36Sopenharmony_ci#define VCN_INFO_TABLE_ID 0x004E4356 3362306a36Sopenharmony_ci#define MALL_INFO_TABLE_ID 0x4C4C414D 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_citypedef enum 3662306a36Sopenharmony_ci{ 3762306a36Sopenharmony_ci IP_DISCOVERY = 0, 3862306a36Sopenharmony_ci GC, 3962306a36Sopenharmony_ci HARVEST_INFO, 4062306a36Sopenharmony_ci VCN_INFO, 4162306a36Sopenharmony_ci MALL_INFO, 4262306a36Sopenharmony_ci RESERVED_1, 4362306a36Sopenharmony_ci TOTAL_TABLES = 6 4462306a36Sopenharmony_ci} table; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#pragma pack(1) 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_citypedef struct table_info 4962306a36Sopenharmony_ci{ 5062306a36Sopenharmony_ci uint16_t offset; /* Byte offset */ 5162306a36Sopenharmony_ci uint16_t checksum; /* Byte sum of the table */ 5262306a36Sopenharmony_ci uint16_t size; /* Table size */ 5362306a36Sopenharmony_ci uint16_t padding; 5462306a36Sopenharmony_ci} table_info; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_citypedef struct binary_header 5762306a36Sopenharmony_ci{ 5862306a36Sopenharmony_ci /* psp structure should go at the top of this structure */ 5962306a36Sopenharmony_ci uint32_t binary_signature; /* 0x7, 0x14, 0x21, 0x28 */ 6062306a36Sopenharmony_ci uint16_t version_major; 6162306a36Sopenharmony_ci uint16_t version_minor; 6262306a36Sopenharmony_ci uint16_t binary_checksum; /* Byte sum of the binary after this field */ 6362306a36Sopenharmony_ci uint16_t binary_size; /* Binary Size*/ 6462306a36Sopenharmony_ci table_info table_list[TOTAL_TABLES]; 6562306a36Sopenharmony_ci} binary_header; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_citypedef struct die_info 6862306a36Sopenharmony_ci{ 6962306a36Sopenharmony_ci uint16_t die_id; 7062306a36Sopenharmony_ci uint16_t die_offset; /* Points to the corresponding die_header structure */ 7162306a36Sopenharmony_ci} die_info; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_citypedef struct ip_discovery_header 7562306a36Sopenharmony_ci{ 7662306a36Sopenharmony_ci uint32_t signature; /* Table Signature */ 7762306a36Sopenharmony_ci uint16_t version; /* Table Version */ 7862306a36Sopenharmony_ci uint16_t size; /* Table Size */ 7962306a36Sopenharmony_ci uint32_t id; /* Table ID */ 8062306a36Sopenharmony_ci uint16_t num_dies; /* Number of Dies */ 8162306a36Sopenharmony_ci die_info die_info[16]; /* list die information for up to 16 dies */ 8262306a36Sopenharmony_ci union { 8362306a36Sopenharmony_ci uint16_t padding[1]; /* version <= 3 */ 8462306a36Sopenharmony_ci struct { /* version == 4 */ 8562306a36Sopenharmony_ci uint8_t base_addr_64_bit : 1; /* ip structures are using 64 bit base address */ 8662306a36Sopenharmony_ci uint8_t reserved : 7; 8762306a36Sopenharmony_ci uint8_t reserved2; 8862306a36Sopenharmony_ci }; 8962306a36Sopenharmony_ci }; 9062306a36Sopenharmony_ci} ip_discovery_header; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_citypedef struct ip 9362306a36Sopenharmony_ci{ 9462306a36Sopenharmony_ci uint16_t hw_id; /* Hardware ID */ 9562306a36Sopenharmony_ci uint8_t number_instance; /* instance of the IP */ 9662306a36Sopenharmony_ci uint8_t num_base_address; /* Number of Base Addresses */ 9762306a36Sopenharmony_ci uint8_t major; /* HCID Major */ 9862306a36Sopenharmony_ci uint8_t minor; /* HCID Minor */ 9962306a36Sopenharmony_ci uint8_t revision; /* HCID Revision */ 10062306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 10162306a36Sopenharmony_ci uint8_t reserved : 4; /* Placeholder field */ 10262306a36Sopenharmony_ci uint8_t harvest : 4; /* Harvest */ 10362306a36Sopenharmony_ci#else 10462306a36Sopenharmony_ci uint8_t harvest : 4; /* Harvest */ 10562306a36Sopenharmony_ci uint8_t reserved : 4; /* Placeholder field */ 10662306a36Sopenharmony_ci#endif 10762306a36Sopenharmony_ci uint32_t base_address[]; /* variable number of Addresses */ 10862306a36Sopenharmony_ci} ip; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_citypedef struct ip_v3 11162306a36Sopenharmony_ci{ 11262306a36Sopenharmony_ci uint16_t hw_id; /* Hardware ID */ 11362306a36Sopenharmony_ci uint8_t instance_number; /* Instance number for the IP */ 11462306a36Sopenharmony_ci uint8_t num_base_address; /* Number of base addresses*/ 11562306a36Sopenharmony_ci uint8_t major; /* Hardware ID.major version */ 11662306a36Sopenharmony_ci uint8_t minor; /* Hardware ID.minor version */ 11762306a36Sopenharmony_ci uint8_t revision; /* Hardware ID.revision version */ 11862306a36Sopenharmony_ci#if defined(__BIG_ENDIAN) 11962306a36Sopenharmony_ci uint8_t variant : 4; /* HW variant */ 12062306a36Sopenharmony_ci uint8_t sub_revision : 4; /* HCID Sub-Revision */ 12162306a36Sopenharmony_ci#else 12262306a36Sopenharmony_ci uint8_t sub_revision : 4; /* HCID Sub-Revision */ 12362306a36Sopenharmony_ci uint8_t variant : 4; /* HW variant */ 12462306a36Sopenharmony_ci#endif 12562306a36Sopenharmony_ci uint32_t base_address[]; /* Base Address list. Corresponds to the num_base_address field*/ 12662306a36Sopenharmony_ci} ip_v3; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_citypedef struct ip_v4 { 12962306a36Sopenharmony_ci uint16_t hw_id; /* Hardware ID */ 13062306a36Sopenharmony_ci uint8_t instance_number; /* Instance number for the IP */ 13162306a36Sopenharmony_ci uint8_t num_base_address; /* Number of base addresses*/ 13262306a36Sopenharmony_ci uint8_t major; /* Hardware ID.major version */ 13362306a36Sopenharmony_ci uint8_t minor; /* Hardware ID.minor version */ 13462306a36Sopenharmony_ci uint8_t revision; /* Hardware ID.revision version */ 13562306a36Sopenharmony_ci#if defined(LITTLEENDIAN_CPU) 13662306a36Sopenharmony_ci uint8_t sub_revision : 4; /* HCID Sub-Revision */ 13762306a36Sopenharmony_ci uint8_t variant : 4; /* HW variant */ 13862306a36Sopenharmony_ci#elif defined(BIGENDIAN_CPU) 13962306a36Sopenharmony_ci uint8_t variant : 4; /* HW variant */ 14062306a36Sopenharmony_ci uint8_t sub_revision : 4; /* HCID Sub-Revision */ 14162306a36Sopenharmony_ci#endif 14262306a36Sopenharmony_ci union { 14362306a36Sopenharmony_ci DECLARE_FLEX_ARRAY(uint32_t, base_address); /* 32-bit Base Address list. Corresponds to the num_base_address field*/ 14462306a36Sopenharmony_ci DECLARE_FLEX_ARRAY(uint64_t, base_address_64); /* 64-bit Base Address list. Corresponds to the num_base_address field*/ 14562306a36Sopenharmony_ci } __packed; 14662306a36Sopenharmony_ci} ip_v4; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_citypedef struct die_header 14962306a36Sopenharmony_ci{ 15062306a36Sopenharmony_ci uint16_t die_id; 15162306a36Sopenharmony_ci uint16_t num_ips; 15262306a36Sopenharmony_ci} die_header; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_citypedef struct ip_structure 15562306a36Sopenharmony_ci{ 15662306a36Sopenharmony_ci ip_discovery_header* header; 15762306a36Sopenharmony_ci struct die 15862306a36Sopenharmony_ci { 15962306a36Sopenharmony_ci die_header *die_header; 16062306a36Sopenharmony_ci union 16162306a36Sopenharmony_ci { 16262306a36Sopenharmony_ci ip *ip_list; 16362306a36Sopenharmony_ci ip_v3 *ip_v3_list; 16462306a36Sopenharmony_ci ip_v4 *ip_v4_list; 16562306a36Sopenharmony_ci }; /* IP list. Variable size*/ 16662306a36Sopenharmony_ci } die; 16762306a36Sopenharmony_ci} ip_structure; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_cistruct gpu_info_header { 17062306a36Sopenharmony_ci uint32_t table_id; /* table ID */ 17162306a36Sopenharmony_ci uint16_t version_major; /* table version */ 17262306a36Sopenharmony_ci uint16_t version_minor; /* table version */ 17362306a36Sopenharmony_ci uint32_t size; /* size of the entire header+data in bytes */ 17462306a36Sopenharmony_ci}; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_cistruct gc_info_v1_0 { 17762306a36Sopenharmony_ci struct gpu_info_header header; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci uint32_t gc_num_se; 18062306a36Sopenharmony_ci uint32_t gc_num_wgp0_per_sa; 18162306a36Sopenharmony_ci uint32_t gc_num_wgp1_per_sa; 18262306a36Sopenharmony_ci uint32_t gc_num_rb_per_se; 18362306a36Sopenharmony_ci uint32_t gc_num_gl2c; 18462306a36Sopenharmony_ci uint32_t gc_num_gprs; 18562306a36Sopenharmony_ci uint32_t gc_num_max_gs_thds; 18662306a36Sopenharmony_ci uint32_t gc_gs_table_depth; 18762306a36Sopenharmony_ci uint32_t gc_gsprim_buff_depth; 18862306a36Sopenharmony_ci uint32_t gc_parameter_cache_depth; 18962306a36Sopenharmony_ci uint32_t gc_double_offchip_lds_buffer; 19062306a36Sopenharmony_ci uint32_t gc_wave_size; 19162306a36Sopenharmony_ci uint32_t gc_max_waves_per_simd; 19262306a36Sopenharmony_ci uint32_t gc_max_scratch_slots_per_cu; 19362306a36Sopenharmony_ci uint32_t gc_lds_size; 19462306a36Sopenharmony_ci uint32_t gc_num_sc_per_se; 19562306a36Sopenharmony_ci uint32_t gc_num_sa_per_se; 19662306a36Sopenharmony_ci uint32_t gc_num_packer_per_sc; 19762306a36Sopenharmony_ci uint32_t gc_num_gl2a; 19862306a36Sopenharmony_ci}; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_cistruct gc_info_v1_1 { 20162306a36Sopenharmony_ci struct gpu_info_header header; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci uint32_t gc_num_se; 20462306a36Sopenharmony_ci uint32_t gc_num_wgp0_per_sa; 20562306a36Sopenharmony_ci uint32_t gc_num_wgp1_per_sa; 20662306a36Sopenharmony_ci uint32_t gc_num_rb_per_se; 20762306a36Sopenharmony_ci uint32_t gc_num_gl2c; 20862306a36Sopenharmony_ci uint32_t gc_num_gprs; 20962306a36Sopenharmony_ci uint32_t gc_num_max_gs_thds; 21062306a36Sopenharmony_ci uint32_t gc_gs_table_depth; 21162306a36Sopenharmony_ci uint32_t gc_gsprim_buff_depth; 21262306a36Sopenharmony_ci uint32_t gc_parameter_cache_depth; 21362306a36Sopenharmony_ci uint32_t gc_double_offchip_lds_buffer; 21462306a36Sopenharmony_ci uint32_t gc_wave_size; 21562306a36Sopenharmony_ci uint32_t gc_max_waves_per_simd; 21662306a36Sopenharmony_ci uint32_t gc_max_scratch_slots_per_cu; 21762306a36Sopenharmony_ci uint32_t gc_lds_size; 21862306a36Sopenharmony_ci uint32_t gc_num_sc_per_se; 21962306a36Sopenharmony_ci uint32_t gc_num_sa_per_se; 22062306a36Sopenharmony_ci uint32_t gc_num_packer_per_sc; 22162306a36Sopenharmony_ci uint32_t gc_num_gl2a; 22262306a36Sopenharmony_ci uint32_t gc_num_tcp_per_sa; 22362306a36Sopenharmony_ci uint32_t gc_num_sdp_interface; 22462306a36Sopenharmony_ci uint32_t gc_num_tcps; 22562306a36Sopenharmony_ci}; 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_cistruct gc_info_v1_2 { 22862306a36Sopenharmony_ci struct gpu_info_header header; 22962306a36Sopenharmony_ci uint32_t gc_num_se; 23062306a36Sopenharmony_ci uint32_t gc_num_wgp0_per_sa; 23162306a36Sopenharmony_ci uint32_t gc_num_wgp1_per_sa; 23262306a36Sopenharmony_ci uint32_t gc_num_rb_per_se; 23362306a36Sopenharmony_ci uint32_t gc_num_gl2c; 23462306a36Sopenharmony_ci uint32_t gc_num_gprs; 23562306a36Sopenharmony_ci uint32_t gc_num_max_gs_thds; 23662306a36Sopenharmony_ci uint32_t gc_gs_table_depth; 23762306a36Sopenharmony_ci uint32_t gc_gsprim_buff_depth; 23862306a36Sopenharmony_ci uint32_t gc_parameter_cache_depth; 23962306a36Sopenharmony_ci uint32_t gc_double_offchip_lds_buffer; 24062306a36Sopenharmony_ci uint32_t gc_wave_size; 24162306a36Sopenharmony_ci uint32_t gc_max_waves_per_simd; 24262306a36Sopenharmony_ci uint32_t gc_max_scratch_slots_per_cu; 24362306a36Sopenharmony_ci uint32_t gc_lds_size; 24462306a36Sopenharmony_ci uint32_t gc_num_sc_per_se; 24562306a36Sopenharmony_ci uint32_t gc_num_sa_per_se; 24662306a36Sopenharmony_ci uint32_t gc_num_packer_per_sc; 24762306a36Sopenharmony_ci uint32_t gc_num_gl2a; 24862306a36Sopenharmony_ci uint32_t gc_num_tcp_per_sa; 24962306a36Sopenharmony_ci uint32_t gc_num_sdp_interface; 25062306a36Sopenharmony_ci uint32_t gc_num_tcps; 25162306a36Sopenharmony_ci uint32_t gc_num_tcp_per_wpg; 25262306a36Sopenharmony_ci uint32_t gc_tcp_l1_size; 25362306a36Sopenharmony_ci uint32_t gc_num_sqc_per_wgp; 25462306a36Sopenharmony_ci uint32_t gc_l1_instruction_cache_size_per_sqc; 25562306a36Sopenharmony_ci uint32_t gc_l1_data_cache_size_per_sqc; 25662306a36Sopenharmony_ci uint32_t gc_gl1c_per_sa; 25762306a36Sopenharmony_ci uint32_t gc_gl1c_size_per_instance; 25862306a36Sopenharmony_ci uint32_t gc_gl2c_per_gpu; 25962306a36Sopenharmony_ci}; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_cistruct gc_info_v2_0 { 26262306a36Sopenharmony_ci struct gpu_info_header header; 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci uint32_t gc_num_se; 26562306a36Sopenharmony_ci uint32_t gc_num_cu_per_sh; 26662306a36Sopenharmony_ci uint32_t gc_num_sh_per_se; 26762306a36Sopenharmony_ci uint32_t gc_num_rb_per_se; 26862306a36Sopenharmony_ci uint32_t gc_num_tccs; 26962306a36Sopenharmony_ci uint32_t gc_num_gprs; 27062306a36Sopenharmony_ci uint32_t gc_num_max_gs_thds; 27162306a36Sopenharmony_ci uint32_t gc_gs_table_depth; 27262306a36Sopenharmony_ci uint32_t gc_gsprim_buff_depth; 27362306a36Sopenharmony_ci uint32_t gc_parameter_cache_depth; 27462306a36Sopenharmony_ci uint32_t gc_double_offchip_lds_buffer; 27562306a36Sopenharmony_ci uint32_t gc_wave_size; 27662306a36Sopenharmony_ci uint32_t gc_max_waves_per_simd; 27762306a36Sopenharmony_ci uint32_t gc_max_scratch_slots_per_cu; 27862306a36Sopenharmony_ci uint32_t gc_lds_size; 27962306a36Sopenharmony_ci uint32_t gc_num_sc_per_se; 28062306a36Sopenharmony_ci uint32_t gc_num_packer_per_sc; 28162306a36Sopenharmony_ci}; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_cistruct gc_info_v2_1 { 28462306a36Sopenharmony_ci struct gpu_info_header header; 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ci uint32_t gc_num_se; 28762306a36Sopenharmony_ci uint32_t gc_num_cu_per_sh; 28862306a36Sopenharmony_ci uint32_t gc_num_sh_per_se; 28962306a36Sopenharmony_ci uint32_t gc_num_rb_per_se; 29062306a36Sopenharmony_ci uint32_t gc_num_tccs; 29162306a36Sopenharmony_ci uint32_t gc_num_gprs; 29262306a36Sopenharmony_ci uint32_t gc_num_max_gs_thds; 29362306a36Sopenharmony_ci uint32_t gc_gs_table_depth; 29462306a36Sopenharmony_ci uint32_t gc_gsprim_buff_depth; 29562306a36Sopenharmony_ci uint32_t gc_parameter_cache_depth; 29662306a36Sopenharmony_ci uint32_t gc_double_offchip_lds_buffer; 29762306a36Sopenharmony_ci uint32_t gc_wave_size; 29862306a36Sopenharmony_ci uint32_t gc_max_waves_per_simd; 29962306a36Sopenharmony_ci uint32_t gc_max_scratch_slots_per_cu; 30062306a36Sopenharmony_ci uint32_t gc_lds_size; 30162306a36Sopenharmony_ci uint32_t gc_num_sc_per_se; 30262306a36Sopenharmony_ci uint32_t gc_num_packer_per_sc; 30362306a36Sopenharmony_ci /* new for v2_1 */ 30462306a36Sopenharmony_ci uint32_t gc_num_tcp_per_sh; 30562306a36Sopenharmony_ci uint32_t gc_tcp_size_per_cu; 30662306a36Sopenharmony_ci uint32_t gc_num_sdp_interface; 30762306a36Sopenharmony_ci uint32_t gc_num_cu_per_sqc; 30862306a36Sopenharmony_ci uint32_t gc_instruction_cache_size_per_sqc; 30962306a36Sopenharmony_ci uint32_t gc_scalar_data_cache_size_per_sqc; 31062306a36Sopenharmony_ci uint32_t gc_tcc_size; 31162306a36Sopenharmony_ci}; 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_citypedef struct harvest_info_header { 31462306a36Sopenharmony_ci uint32_t signature; /* Table Signature */ 31562306a36Sopenharmony_ci uint32_t version; /* Table Version */ 31662306a36Sopenharmony_ci} harvest_info_header; 31762306a36Sopenharmony_ci 31862306a36Sopenharmony_citypedef struct harvest_info { 31962306a36Sopenharmony_ci uint16_t hw_id; /* Hardware ID */ 32062306a36Sopenharmony_ci uint8_t number_instance; /* Instance of the IP */ 32162306a36Sopenharmony_ci uint8_t reserved; /* Reserved for alignment */ 32262306a36Sopenharmony_ci} harvest_info; 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_citypedef struct harvest_table { 32562306a36Sopenharmony_ci harvest_info_header header; 32662306a36Sopenharmony_ci harvest_info list[32]; 32762306a36Sopenharmony_ci} harvest_table; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_cistruct mall_info_header { 33062306a36Sopenharmony_ci uint32_t table_id; /* table ID */ 33162306a36Sopenharmony_ci uint16_t version_major; /* table version */ 33262306a36Sopenharmony_ci uint16_t version_minor; /* table version */ 33362306a36Sopenharmony_ci uint32_t size_bytes; /* size of the entire header+data in bytes */ 33462306a36Sopenharmony_ci}; 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_cistruct mall_info_v1_0 { 33762306a36Sopenharmony_ci struct mall_info_header header; 33862306a36Sopenharmony_ci uint32_t mall_size_per_m; 33962306a36Sopenharmony_ci uint32_t m_s_present; 34062306a36Sopenharmony_ci uint32_t m_half_use; 34162306a36Sopenharmony_ci uint32_t m_mall_config; 34262306a36Sopenharmony_ci uint32_t reserved[5]; 34362306a36Sopenharmony_ci}; 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_cistruct mall_info_v2_0 { 34662306a36Sopenharmony_ci struct mall_info_header header; 34762306a36Sopenharmony_ci uint32_t mall_size_per_umc; 34862306a36Sopenharmony_ci uint32_t reserved[8]; 34962306a36Sopenharmony_ci}; 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci#define VCN_INFO_TABLE_MAX_NUM_INSTANCES 4 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_cistruct vcn_info_header { 35462306a36Sopenharmony_ci uint32_t table_id; /* table ID */ 35562306a36Sopenharmony_ci uint16_t version_major; /* table version */ 35662306a36Sopenharmony_ci uint16_t version_minor; /* table version */ 35762306a36Sopenharmony_ci uint32_t size_bytes; /* size of the entire header+data in bytes */ 35862306a36Sopenharmony_ci}; 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_cistruct vcn_instance_info_v1_0 36162306a36Sopenharmony_ci{ 36262306a36Sopenharmony_ci uint32_t instance_num; /* VCN IP instance number. 0 - VCN0; 1 - VCN1 etc*/ 36362306a36Sopenharmony_ci union _fuse_data { 36462306a36Sopenharmony_ci struct { 36562306a36Sopenharmony_ci uint32_t av1_disabled : 1; 36662306a36Sopenharmony_ci uint32_t vp9_disabled : 1; 36762306a36Sopenharmony_ci uint32_t hevc_disabled : 1; 36862306a36Sopenharmony_ci uint32_t h264_disabled : 1; 36962306a36Sopenharmony_ci uint32_t reserved : 28; 37062306a36Sopenharmony_ci } bits; 37162306a36Sopenharmony_ci uint32_t all_bits; 37262306a36Sopenharmony_ci } fuse_data; 37362306a36Sopenharmony_ci uint32_t reserved[2]; 37462306a36Sopenharmony_ci}; 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_cistruct vcn_info_v1_0 { 37762306a36Sopenharmony_ci struct vcn_info_header header; 37862306a36Sopenharmony_ci uint32_t num_of_instances; /* number of entries used in instance_info below*/ 37962306a36Sopenharmony_ci struct vcn_instance_info_v1_0 instance_info[VCN_INFO_TABLE_MAX_NUM_INSTANCES]; 38062306a36Sopenharmony_ci uint32_t reserved[4]; 38162306a36Sopenharmony_ci}; 38262306a36Sopenharmony_ci 38362306a36Sopenharmony_ci#pragma pack() 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci#endif 386