162306a36Sopenharmony_ci/****************************************************************************\ 262306a36Sopenharmony_ci* 362306a36Sopenharmony_ci* File Name atomfirmware.h 462306a36Sopenharmony_ci* Project This is an interface header file between atombios and OS GPU drivers for SoC15 products 562306a36Sopenharmony_ci* 662306a36Sopenharmony_ci* Description header file of general definitions for OS and pre-OS video drivers 762306a36Sopenharmony_ci* 862306a36Sopenharmony_ci* Copyright 2014 Advanced Micro Devices, Inc. 962306a36Sopenharmony_ci* 1062306a36Sopenharmony_ci* Permission is hereby granted, free of charge, to any person obtaining a copy of this software 1162306a36Sopenharmony_ci* and associated documentation files (the "Software"), to deal in the Software without restriction, 1262306a36Sopenharmony_ci* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 1362306a36Sopenharmony_ci* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 1462306a36Sopenharmony_ci* subject to the following conditions: 1562306a36Sopenharmony_ci* 1662306a36Sopenharmony_ci* The above copyright notice and this permission notice shall be included in all copies or substantial 1762306a36Sopenharmony_ci* portions of the Software. 1862306a36Sopenharmony_ci* 1962306a36Sopenharmony_ci* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2062306a36Sopenharmony_ci* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2162306a36Sopenharmony_ci* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 2262306a36Sopenharmony_ci* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 2362306a36Sopenharmony_ci* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 2462306a36Sopenharmony_ci* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 2562306a36Sopenharmony_ci* OTHER DEALINGS IN THE SOFTWARE. 2662306a36Sopenharmony_ci* 2762306a36Sopenharmony_ci\****************************************************************************/ 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci/*IMPORTANT NOTES 3062306a36Sopenharmony_ci* If a change in VBIOS/Driver/Tool's interface is only needed for SoC15 and forward products, then the change is only needed in this atomfirmware.h header file. 3162306a36Sopenharmony_ci* If a change in VBIOS/Driver/Tool's interface is only needed for pre-SoC15 products, then the change is only needed in atombios.h header file. 3262306a36Sopenharmony_ci* If a change is needed for both pre and post SoC15 products, then the change has to be made separately and might be differently in both atomfirmware.h and atombios.h. 3362306a36Sopenharmony_ci*/ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#ifndef _ATOMFIRMWARE_H_ 3662306a36Sopenharmony_ci#define _ATOMFIRMWARE_H_ 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cienum atom_bios_header_version_def{ 3962306a36Sopenharmony_ci ATOM_MAJOR_VERSION =0x0003, 4062306a36Sopenharmony_ci ATOM_MINOR_VERSION =0x0003, 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#ifdef _H2INC 4462306a36Sopenharmony_ci #ifndef uint32_t 4562306a36Sopenharmony_ci typedef unsigned long uint32_t; 4662306a36Sopenharmony_ci #endif 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci #ifndef uint16_t 4962306a36Sopenharmony_ci typedef unsigned short uint16_t; 5062306a36Sopenharmony_ci #endif 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci #ifndef uint8_t 5362306a36Sopenharmony_ci typedef unsigned char uint8_t; 5462306a36Sopenharmony_ci #endif 5562306a36Sopenharmony_ci#endif 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cienum atom_crtc_def{ 5862306a36Sopenharmony_ci ATOM_CRTC1 =0, 5962306a36Sopenharmony_ci ATOM_CRTC2 =1, 6062306a36Sopenharmony_ci ATOM_CRTC3 =2, 6162306a36Sopenharmony_ci ATOM_CRTC4 =3, 6262306a36Sopenharmony_ci ATOM_CRTC5 =4, 6362306a36Sopenharmony_ci ATOM_CRTC6 =5, 6462306a36Sopenharmony_ci ATOM_CRTC_INVALID =0xff, 6562306a36Sopenharmony_ci}; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_cienum atom_ppll_def{ 6862306a36Sopenharmony_ci ATOM_PPLL0 =2, 6962306a36Sopenharmony_ci ATOM_GCK_DFS =8, 7062306a36Sopenharmony_ci ATOM_FCH_CLK =9, 7162306a36Sopenharmony_ci ATOM_DP_DTO =11, 7262306a36Sopenharmony_ci ATOM_COMBOPHY_PLL0 =20, 7362306a36Sopenharmony_ci ATOM_COMBOPHY_PLL1 =21, 7462306a36Sopenharmony_ci ATOM_COMBOPHY_PLL2 =22, 7562306a36Sopenharmony_ci ATOM_COMBOPHY_PLL3 =23, 7662306a36Sopenharmony_ci ATOM_COMBOPHY_PLL4 =24, 7762306a36Sopenharmony_ci ATOM_COMBOPHY_PLL5 =25, 7862306a36Sopenharmony_ci ATOM_PPLL_INVALID =0xff, 7962306a36Sopenharmony_ci}; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci// define ASIC internal encoder id ( bit vector ), used for CRTC_SourceSel 8262306a36Sopenharmony_cienum atom_dig_def{ 8362306a36Sopenharmony_ci ASIC_INT_DIG1_ENCODER_ID =0x03, 8462306a36Sopenharmony_ci ASIC_INT_DIG2_ENCODER_ID =0x09, 8562306a36Sopenharmony_ci ASIC_INT_DIG3_ENCODER_ID =0x0a, 8662306a36Sopenharmony_ci ASIC_INT_DIG4_ENCODER_ID =0x0b, 8762306a36Sopenharmony_ci ASIC_INT_DIG5_ENCODER_ID =0x0c, 8862306a36Sopenharmony_ci ASIC_INT_DIG6_ENCODER_ID =0x0d, 8962306a36Sopenharmony_ci ASIC_INT_DIG7_ENCODER_ID =0x0e, 9062306a36Sopenharmony_ci}; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci//ucEncoderMode 9362306a36Sopenharmony_cienum atom_encode_mode_def 9462306a36Sopenharmony_ci{ 9562306a36Sopenharmony_ci ATOM_ENCODER_MODE_DP =0, 9662306a36Sopenharmony_ci ATOM_ENCODER_MODE_DP_SST =0, 9762306a36Sopenharmony_ci ATOM_ENCODER_MODE_LVDS =1, 9862306a36Sopenharmony_ci ATOM_ENCODER_MODE_DVI =2, 9962306a36Sopenharmony_ci ATOM_ENCODER_MODE_HDMI =3, 10062306a36Sopenharmony_ci ATOM_ENCODER_MODE_DP_AUDIO =5, 10162306a36Sopenharmony_ci ATOM_ENCODER_MODE_DP_MST =5, 10262306a36Sopenharmony_ci ATOM_ENCODER_MODE_CRT =15, 10362306a36Sopenharmony_ci ATOM_ENCODER_MODE_DVO =16, 10462306a36Sopenharmony_ci}; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_cienum atom_encoder_refclk_src_def{ 10762306a36Sopenharmony_ci ENCODER_REFCLK_SRC_P1PLL =0, 10862306a36Sopenharmony_ci ENCODER_REFCLK_SRC_P2PLL =1, 10962306a36Sopenharmony_ci ENCODER_REFCLK_SRC_P3PLL =2, 11062306a36Sopenharmony_ci ENCODER_REFCLK_SRC_EXTCLK =3, 11162306a36Sopenharmony_ci ENCODER_REFCLK_SRC_INVALID =0xff, 11262306a36Sopenharmony_ci}; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cienum atom_scaler_def{ 11562306a36Sopenharmony_ci ATOM_SCALER_DISABLE =0, /*scaler bypass mode, auto-center & no replication*/ 11662306a36Sopenharmony_ci ATOM_SCALER_CENTER =1, //For Fudo, it's bypass and auto-center & auto replication 11762306a36Sopenharmony_ci ATOM_SCALER_EXPANSION =2, /*scaler expansion by 2 tap alpha blending mode*/ 11862306a36Sopenharmony_ci}; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_cienum atom_operation_def{ 12162306a36Sopenharmony_ci ATOM_DISABLE = 0, 12262306a36Sopenharmony_ci ATOM_ENABLE = 1, 12362306a36Sopenharmony_ci ATOM_INIT = 7, 12462306a36Sopenharmony_ci ATOM_GET_STATUS = 8, 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_cienum atom_embedded_display_op_def{ 12862306a36Sopenharmony_ci ATOM_LCD_BL_OFF = 2, 12962306a36Sopenharmony_ci ATOM_LCD_BL_OM = 3, 13062306a36Sopenharmony_ci ATOM_LCD_BL_BRIGHTNESS_CONTROL = 4, 13162306a36Sopenharmony_ci ATOM_LCD_SELFTEST_START = 5, 13262306a36Sopenharmony_ci ATOM_LCD_SELFTEST_STOP = 6, 13362306a36Sopenharmony_ci}; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_cienum atom_spread_spectrum_mode{ 13662306a36Sopenharmony_ci ATOM_SS_CENTER_OR_DOWN_MODE_MASK = 0x01, 13762306a36Sopenharmony_ci ATOM_SS_DOWN_SPREAD_MODE = 0x00, 13862306a36Sopenharmony_ci ATOM_SS_CENTRE_SPREAD_MODE = 0x01, 13962306a36Sopenharmony_ci ATOM_INT_OR_EXT_SS_MASK = 0x02, 14062306a36Sopenharmony_ci ATOM_INTERNAL_SS_MASK = 0x00, 14162306a36Sopenharmony_ci ATOM_EXTERNAL_SS_MASK = 0x02, 14262306a36Sopenharmony_ci}; 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci/* define panel bit per color */ 14562306a36Sopenharmony_cienum atom_panel_bit_per_color{ 14662306a36Sopenharmony_ci PANEL_BPC_UNDEFINE =0x00, 14762306a36Sopenharmony_ci PANEL_6BIT_PER_COLOR =0x01, 14862306a36Sopenharmony_ci PANEL_8BIT_PER_COLOR =0x02, 14962306a36Sopenharmony_ci PANEL_10BIT_PER_COLOR =0x03, 15062306a36Sopenharmony_ci PANEL_12BIT_PER_COLOR =0x04, 15162306a36Sopenharmony_ci PANEL_16BIT_PER_COLOR =0x05, 15262306a36Sopenharmony_ci}; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci//ucVoltageType 15562306a36Sopenharmony_cienum atom_voltage_type 15662306a36Sopenharmony_ci{ 15762306a36Sopenharmony_ci VOLTAGE_TYPE_VDDC = 1, 15862306a36Sopenharmony_ci VOLTAGE_TYPE_MVDDC = 2, 15962306a36Sopenharmony_ci VOLTAGE_TYPE_MVDDQ = 3, 16062306a36Sopenharmony_ci VOLTAGE_TYPE_VDDCI = 4, 16162306a36Sopenharmony_ci VOLTAGE_TYPE_VDDGFX = 5, 16262306a36Sopenharmony_ci VOLTAGE_TYPE_PCC = 6, 16362306a36Sopenharmony_ci VOLTAGE_TYPE_MVPP = 7, 16462306a36Sopenharmony_ci VOLTAGE_TYPE_LEDDPM = 8, 16562306a36Sopenharmony_ci VOLTAGE_TYPE_PCC_MVDD = 9, 16662306a36Sopenharmony_ci VOLTAGE_TYPE_PCIE_VDDC = 10, 16762306a36Sopenharmony_ci VOLTAGE_TYPE_PCIE_VDDR = 11, 16862306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_1 = 0x11, 16962306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_2 = 0x12, 17062306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_3 = 0x13, 17162306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_4 = 0x14, 17262306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_5 = 0x15, 17362306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_6 = 0x16, 17462306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_7 = 0x17, 17562306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_8 = 0x18, 17662306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_9 = 0x19, 17762306a36Sopenharmony_ci VOLTAGE_TYPE_GENERIC_I2C_10 = 0x1A, 17862306a36Sopenharmony_ci}; 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_cienum atom_dgpu_vram_type { 18162306a36Sopenharmony_ci ATOM_DGPU_VRAM_TYPE_GDDR5 = 0x50, 18262306a36Sopenharmony_ci ATOM_DGPU_VRAM_TYPE_HBM2 = 0x60, 18362306a36Sopenharmony_ci ATOM_DGPU_VRAM_TYPE_HBM2E = 0x61, 18462306a36Sopenharmony_ci ATOM_DGPU_VRAM_TYPE_GDDR6 = 0x70, 18562306a36Sopenharmony_ci ATOM_DGPU_VRAM_TYPE_HBM3 = 0x80, 18662306a36Sopenharmony_ci}; 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_cienum atom_dp_vs_preemph_def{ 18962306a36Sopenharmony_ci DP_VS_LEVEL0_PREEMPH_LEVEL0 = 0x00, 19062306a36Sopenharmony_ci DP_VS_LEVEL1_PREEMPH_LEVEL0 = 0x01, 19162306a36Sopenharmony_ci DP_VS_LEVEL2_PREEMPH_LEVEL0 = 0x02, 19262306a36Sopenharmony_ci DP_VS_LEVEL3_PREEMPH_LEVEL0 = 0x03, 19362306a36Sopenharmony_ci DP_VS_LEVEL0_PREEMPH_LEVEL1 = 0x08, 19462306a36Sopenharmony_ci DP_VS_LEVEL1_PREEMPH_LEVEL1 = 0x09, 19562306a36Sopenharmony_ci DP_VS_LEVEL2_PREEMPH_LEVEL1 = 0x0a, 19662306a36Sopenharmony_ci DP_VS_LEVEL0_PREEMPH_LEVEL2 = 0x10, 19762306a36Sopenharmony_ci DP_VS_LEVEL1_PREEMPH_LEVEL2 = 0x11, 19862306a36Sopenharmony_ci DP_VS_LEVEL0_PREEMPH_LEVEL3 = 0x18, 19962306a36Sopenharmony_ci}; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci#define BIOS_ATOM_PREFIX "ATOMBIOS" 20262306a36Sopenharmony_ci#define BIOS_VERSION_PREFIX "ATOMBIOSBK-AMD" 20362306a36Sopenharmony_ci#define BIOS_STRING_LENGTH 43 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci/* 20662306a36Sopenharmony_cienum atom_string_def{ 20762306a36Sopenharmony_ciasic_bus_type_pcie_string = "PCI_EXPRESS", 20862306a36Sopenharmony_ciatom_fire_gl_string = "FGL", 20962306a36Sopenharmony_ciatom_bios_string = "ATOM" 21062306a36Sopenharmony_ci}; 21162306a36Sopenharmony_ci*/ 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci#pragma pack(1) /* BIOS data must use byte aligment*/ 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_cienum atombios_image_offset{ 21662306a36Sopenharmony_ci OFFSET_TO_ATOM_ROM_HEADER_POINTER = 0x00000048, 21762306a36Sopenharmony_ci OFFSET_TO_ATOM_ROM_IMAGE_SIZE = 0x00000002, 21862306a36Sopenharmony_ci OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE = 0x94, 21962306a36Sopenharmony_ci MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE = 20, /*including the terminator 0x0!*/ 22062306a36Sopenharmony_ci OFFSET_TO_GET_ATOMBIOS_NUMBER_OF_STRINGS = 0x2f, 22162306a36Sopenharmony_ci OFFSET_TO_GET_ATOMBIOS_STRING_START = 0x6e, 22262306a36Sopenharmony_ci OFFSET_TO_VBIOS_PART_NUMBER = 0x80, 22362306a36Sopenharmony_ci OFFSET_TO_VBIOS_DATE = 0x50, 22462306a36Sopenharmony_ci}; 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci/**************************************************************************** 22762306a36Sopenharmony_ci* Common header for all tables (Data table, Command function). 22862306a36Sopenharmony_ci* Every table pointed in _ATOM_MASTER_DATA_TABLE has this common header. 22962306a36Sopenharmony_ci* And the pointer actually points to this header. 23062306a36Sopenharmony_ci****************************************************************************/ 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_cistruct atom_common_table_header 23362306a36Sopenharmony_ci{ 23462306a36Sopenharmony_ci uint16_t structuresize; 23562306a36Sopenharmony_ci uint8_t format_revision; //mainly used for a hw function, when the parser is not backward compatible 23662306a36Sopenharmony_ci uint8_t content_revision; //change it when a data table has a structure change, or a hw function has a input/output parameter change 23762306a36Sopenharmony_ci}; 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci/**************************************************************************** 24062306a36Sopenharmony_ci* Structure stores the ROM header. 24162306a36Sopenharmony_ci****************************************************************************/ 24262306a36Sopenharmony_cistruct atom_rom_header_v2_2 24362306a36Sopenharmony_ci{ 24462306a36Sopenharmony_ci struct atom_common_table_header table_header; 24562306a36Sopenharmony_ci uint8_t atom_bios_string[4]; //enum atom_string_def atom_bios_string; //Signature to distinguish between Atombios and non-atombios, 24662306a36Sopenharmony_ci uint16_t bios_segment_address; 24762306a36Sopenharmony_ci uint16_t protectedmodeoffset; 24862306a36Sopenharmony_ci uint16_t configfilenameoffset; 24962306a36Sopenharmony_ci uint16_t crc_block_offset; 25062306a36Sopenharmony_ci uint16_t vbios_bootupmessageoffset; 25162306a36Sopenharmony_ci uint16_t int10_offset; 25262306a36Sopenharmony_ci uint16_t pcibusdevinitcode; 25362306a36Sopenharmony_ci uint16_t iobaseaddress; 25462306a36Sopenharmony_ci uint16_t subsystem_vendor_id; 25562306a36Sopenharmony_ci uint16_t subsystem_id; 25662306a36Sopenharmony_ci uint16_t pci_info_offset; 25762306a36Sopenharmony_ci uint16_t masterhwfunction_offset; //Offest for SW to get all command function offsets, Don't change the position 25862306a36Sopenharmony_ci uint16_t masterdatatable_offset; //Offest for SW to get all data table offsets, Don't change the position 25962306a36Sopenharmony_ci uint16_t reserved; 26062306a36Sopenharmony_ci uint32_t pspdirtableoffset; 26162306a36Sopenharmony_ci}; 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci/*==============================hw function portion======================================================================*/ 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci/**************************************************************************** 26762306a36Sopenharmony_ci* Structures used in Command.mtb, each function name is not given here since those function could change from time to time 26862306a36Sopenharmony_ci* The real functionality of each function is associated with the parameter structure version when defined 26962306a36Sopenharmony_ci* For all internal cmd function definitions, please reference to atomstruct.h 27062306a36Sopenharmony_ci****************************************************************************/ 27162306a36Sopenharmony_cistruct atom_master_list_of_command_functions_v2_1{ 27262306a36Sopenharmony_ci uint16_t asic_init; //Function 27362306a36Sopenharmony_ci uint16_t cmd_function1; //used as an internal one 27462306a36Sopenharmony_ci uint16_t cmd_function2; //used as an internal one 27562306a36Sopenharmony_ci uint16_t cmd_function3; //used as an internal one 27662306a36Sopenharmony_ci uint16_t digxencodercontrol; //Function 27762306a36Sopenharmony_ci uint16_t cmd_function5; //used as an internal one 27862306a36Sopenharmony_ci uint16_t cmd_function6; //used as an internal one 27962306a36Sopenharmony_ci uint16_t cmd_function7; //used as an internal one 28062306a36Sopenharmony_ci uint16_t cmd_function8; //used as an internal one 28162306a36Sopenharmony_ci uint16_t cmd_function9; //used as an internal one 28262306a36Sopenharmony_ci uint16_t setengineclock; //Function 28362306a36Sopenharmony_ci uint16_t setmemoryclock; //Function 28462306a36Sopenharmony_ci uint16_t setpixelclock; //Function 28562306a36Sopenharmony_ci uint16_t enabledisppowergating; //Function 28662306a36Sopenharmony_ci uint16_t cmd_function14; //used as an internal one 28762306a36Sopenharmony_ci uint16_t cmd_function15; //used as an internal one 28862306a36Sopenharmony_ci uint16_t cmd_function16; //used as an internal one 28962306a36Sopenharmony_ci uint16_t cmd_function17; //used as an internal one 29062306a36Sopenharmony_ci uint16_t cmd_function18; //used as an internal one 29162306a36Sopenharmony_ci uint16_t cmd_function19; //used as an internal one 29262306a36Sopenharmony_ci uint16_t cmd_function20; //used as an internal one 29362306a36Sopenharmony_ci uint16_t cmd_function21; //used as an internal one 29462306a36Sopenharmony_ci uint16_t cmd_function22; //used as an internal one 29562306a36Sopenharmony_ci uint16_t cmd_function23; //used as an internal one 29662306a36Sopenharmony_ci uint16_t cmd_function24; //used as an internal one 29762306a36Sopenharmony_ci uint16_t cmd_function25; //used as an internal one 29862306a36Sopenharmony_ci uint16_t cmd_function26; //used as an internal one 29962306a36Sopenharmony_ci uint16_t cmd_function27; //used as an internal one 30062306a36Sopenharmony_ci uint16_t cmd_function28; //used as an internal one 30162306a36Sopenharmony_ci uint16_t cmd_function29; //used as an internal one 30262306a36Sopenharmony_ci uint16_t cmd_function30; //used as an internal one 30362306a36Sopenharmony_ci uint16_t cmd_function31; //used as an internal one 30462306a36Sopenharmony_ci uint16_t cmd_function32; //used as an internal one 30562306a36Sopenharmony_ci uint16_t cmd_function33; //used as an internal one 30662306a36Sopenharmony_ci uint16_t blankcrtc; //Function 30762306a36Sopenharmony_ci uint16_t enablecrtc; //Function 30862306a36Sopenharmony_ci uint16_t cmd_function36; //used as an internal one 30962306a36Sopenharmony_ci uint16_t cmd_function37; //used as an internal one 31062306a36Sopenharmony_ci uint16_t cmd_function38; //used as an internal one 31162306a36Sopenharmony_ci uint16_t cmd_function39; //used as an internal one 31262306a36Sopenharmony_ci uint16_t cmd_function40; //used as an internal one 31362306a36Sopenharmony_ci uint16_t getsmuclockinfo; //Function 31462306a36Sopenharmony_ci uint16_t selectcrtc_source; //Function 31562306a36Sopenharmony_ci uint16_t cmd_function43; //used as an internal one 31662306a36Sopenharmony_ci uint16_t cmd_function44; //used as an internal one 31762306a36Sopenharmony_ci uint16_t cmd_function45; //used as an internal one 31862306a36Sopenharmony_ci uint16_t setdceclock; //Function 31962306a36Sopenharmony_ci uint16_t getmemoryclock; //Function 32062306a36Sopenharmony_ci uint16_t getengineclock; //Function 32162306a36Sopenharmony_ci uint16_t setcrtc_usingdtdtiming; //Function 32262306a36Sopenharmony_ci uint16_t externalencodercontrol; //Function 32362306a36Sopenharmony_ci uint16_t cmd_function51; //used as an internal one 32462306a36Sopenharmony_ci uint16_t cmd_function52; //used as an internal one 32562306a36Sopenharmony_ci uint16_t cmd_function53; //used as an internal one 32662306a36Sopenharmony_ci uint16_t processi2cchanneltransaction;//Function 32762306a36Sopenharmony_ci uint16_t cmd_function55; //used as an internal one 32862306a36Sopenharmony_ci uint16_t cmd_function56; //used as an internal one 32962306a36Sopenharmony_ci uint16_t cmd_function57; //used as an internal one 33062306a36Sopenharmony_ci uint16_t cmd_function58; //used as an internal one 33162306a36Sopenharmony_ci uint16_t cmd_function59; //used as an internal one 33262306a36Sopenharmony_ci uint16_t computegpuclockparam; //Function 33362306a36Sopenharmony_ci uint16_t cmd_function61; //used as an internal one 33462306a36Sopenharmony_ci uint16_t cmd_function62; //used as an internal one 33562306a36Sopenharmony_ci uint16_t dynamicmemorysettings; //Function function 33662306a36Sopenharmony_ci uint16_t memorytraining; //Function function 33762306a36Sopenharmony_ci uint16_t cmd_function65; //used as an internal one 33862306a36Sopenharmony_ci uint16_t cmd_function66; //used as an internal one 33962306a36Sopenharmony_ci uint16_t setvoltage; //Function 34062306a36Sopenharmony_ci uint16_t cmd_function68; //used as an internal one 34162306a36Sopenharmony_ci uint16_t readefusevalue; //Function 34262306a36Sopenharmony_ci uint16_t cmd_function70; //used as an internal one 34362306a36Sopenharmony_ci uint16_t cmd_function71; //used as an internal one 34462306a36Sopenharmony_ci uint16_t cmd_function72; //used as an internal one 34562306a36Sopenharmony_ci uint16_t cmd_function73; //used as an internal one 34662306a36Sopenharmony_ci uint16_t cmd_function74; //used as an internal one 34762306a36Sopenharmony_ci uint16_t cmd_function75; //used as an internal one 34862306a36Sopenharmony_ci uint16_t dig1transmittercontrol; //Function 34962306a36Sopenharmony_ci uint16_t cmd_function77; //used as an internal one 35062306a36Sopenharmony_ci uint16_t processauxchanneltransaction;//Function 35162306a36Sopenharmony_ci uint16_t cmd_function79; //used as an internal one 35262306a36Sopenharmony_ci uint16_t getvoltageinfo; //Function 35362306a36Sopenharmony_ci}; 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_cistruct atom_master_command_function_v2_1 35662306a36Sopenharmony_ci{ 35762306a36Sopenharmony_ci struct atom_common_table_header table_header; 35862306a36Sopenharmony_ci struct atom_master_list_of_command_functions_v2_1 listofcmdfunctions; 35962306a36Sopenharmony_ci}; 36062306a36Sopenharmony_ci 36162306a36Sopenharmony_ci/**************************************************************************** 36262306a36Sopenharmony_ci* Structures used in every command function 36362306a36Sopenharmony_ci****************************************************************************/ 36462306a36Sopenharmony_cistruct atom_function_attribute 36562306a36Sopenharmony_ci{ 36662306a36Sopenharmony_ci uint16_t ws_in_bytes:8; //[7:0]=Size of workspace in Bytes (in multiple of a dword), 36762306a36Sopenharmony_ci uint16_t ps_in_bytes:7; //[14:8]=Size of parameter space in Bytes (multiple of a dword), 36862306a36Sopenharmony_ci uint16_t updated_by_util:1; //[15]=flag to indicate the function is updated by util 36962306a36Sopenharmony_ci}; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_ci/**************************************************************************** 37362306a36Sopenharmony_ci* Common header for all hw functions. 37462306a36Sopenharmony_ci* Every function pointed by _master_list_of_hw_function has this common header. 37562306a36Sopenharmony_ci* And the pointer actually points to this header. 37662306a36Sopenharmony_ci****************************************************************************/ 37762306a36Sopenharmony_cistruct atom_rom_hw_function_header 37862306a36Sopenharmony_ci{ 37962306a36Sopenharmony_ci struct atom_common_table_header func_header; 38062306a36Sopenharmony_ci struct atom_function_attribute func_attrib; 38162306a36Sopenharmony_ci}; 38262306a36Sopenharmony_ci 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ci/*==============================sw data table portion======================================================================*/ 38562306a36Sopenharmony_ci/**************************************************************************** 38662306a36Sopenharmony_ci* Structures used in data.mtb, each data table name is not given here since those data table could change from time to time 38762306a36Sopenharmony_ci* The real name of each table is given when its data structure version is defined 38862306a36Sopenharmony_ci****************************************************************************/ 38962306a36Sopenharmony_cistruct atom_master_list_of_data_tables_v2_1{ 39062306a36Sopenharmony_ci uint16_t utilitypipeline; /* Offest for the utility to get parser info,Don't change this position!*/ 39162306a36Sopenharmony_ci uint16_t multimedia_info; 39262306a36Sopenharmony_ci uint16_t smc_dpm_info; 39362306a36Sopenharmony_ci uint16_t sw_datatable3; 39462306a36Sopenharmony_ci uint16_t firmwareinfo; /* Shared by various SW components */ 39562306a36Sopenharmony_ci uint16_t sw_datatable5; 39662306a36Sopenharmony_ci uint16_t lcd_info; /* Shared by various SW components */ 39762306a36Sopenharmony_ci uint16_t sw_datatable7; 39862306a36Sopenharmony_ci uint16_t smu_info; 39962306a36Sopenharmony_ci uint16_t sw_datatable9; 40062306a36Sopenharmony_ci uint16_t sw_datatable10; 40162306a36Sopenharmony_ci uint16_t vram_usagebyfirmware; /* Shared by various SW components */ 40262306a36Sopenharmony_ci uint16_t gpio_pin_lut; /* Shared by various SW components */ 40362306a36Sopenharmony_ci uint16_t sw_datatable13; 40462306a36Sopenharmony_ci uint16_t gfx_info; 40562306a36Sopenharmony_ci uint16_t powerplayinfo; /* Shared by various SW components */ 40662306a36Sopenharmony_ci uint16_t sw_datatable16; 40762306a36Sopenharmony_ci uint16_t sw_datatable17; 40862306a36Sopenharmony_ci uint16_t sw_datatable18; 40962306a36Sopenharmony_ci uint16_t sw_datatable19; 41062306a36Sopenharmony_ci uint16_t sw_datatable20; 41162306a36Sopenharmony_ci uint16_t sw_datatable21; 41262306a36Sopenharmony_ci uint16_t displayobjectinfo; /* Shared by various SW components */ 41362306a36Sopenharmony_ci uint16_t indirectioaccess; /* used as an internal one */ 41462306a36Sopenharmony_ci uint16_t umc_info; /* Shared by various SW components */ 41562306a36Sopenharmony_ci uint16_t sw_datatable25; 41662306a36Sopenharmony_ci uint16_t sw_datatable26; 41762306a36Sopenharmony_ci uint16_t dce_info; /* Shared by various SW components */ 41862306a36Sopenharmony_ci uint16_t vram_info; /* Shared by various SW components */ 41962306a36Sopenharmony_ci uint16_t sw_datatable29; 42062306a36Sopenharmony_ci uint16_t integratedsysteminfo; /* Shared by various SW components */ 42162306a36Sopenharmony_ci uint16_t asic_profiling_info; /* Shared by various SW components */ 42262306a36Sopenharmony_ci uint16_t voltageobject_info; /* shared by various SW components */ 42362306a36Sopenharmony_ci uint16_t sw_datatable33; 42462306a36Sopenharmony_ci uint16_t sw_datatable34; 42562306a36Sopenharmony_ci}; 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_cistruct atom_master_data_table_v2_1 42962306a36Sopenharmony_ci{ 43062306a36Sopenharmony_ci struct atom_common_table_header table_header; 43162306a36Sopenharmony_ci struct atom_master_list_of_data_tables_v2_1 listOfdatatables; 43262306a36Sopenharmony_ci}; 43362306a36Sopenharmony_ci 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_cistruct atom_dtd_format 43662306a36Sopenharmony_ci{ 43762306a36Sopenharmony_ci uint16_t pixclk; 43862306a36Sopenharmony_ci uint16_t h_active; 43962306a36Sopenharmony_ci uint16_t h_blanking_time; 44062306a36Sopenharmony_ci uint16_t v_active; 44162306a36Sopenharmony_ci uint16_t v_blanking_time; 44262306a36Sopenharmony_ci uint16_t h_sync_offset; 44362306a36Sopenharmony_ci uint16_t h_sync_width; 44462306a36Sopenharmony_ci uint16_t v_sync_offset; 44562306a36Sopenharmony_ci uint16_t v_syncwidth; 44662306a36Sopenharmony_ci uint16_t reserved; 44762306a36Sopenharmony_ci uint16_t reserved0; 44862306a36Sopenharmony_ci uint8_t h_border; 44962306a36Sopenharmony_ci uint8_t v_border; 45062306a36Sopenharmony_ci uint16_t miscinfo; 45162306a36Sopenharmony_ci uint8_t atom_mode_id; 45262306a36Sopenharmony_ci uint8_t refreshrate; 45362306a36Sopenharmony_ci}; 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ci/* atom_dtd_format.modemiscinfo defintion */ 45662306a36Sopenharmony_cienum atom_dtd_format_modemiscinfo{ 45762306a36Sopenharmony_ci ATOM_HSYNC_POLARITY = 0x0002, 45862306a36Sopenharmony_ci ATOM_VSYNC_POLARITY = 0x0004, 45962306a36Sopenharmony_ci ATOM_H_REPLICATIONBY2 = 0x0010, 46062306a36Sopenharmony_ci ATOM_V_REPLICATIONBY2 = 0x0020, 46162306a36Sopenharmony_ci ATOM_INTERLACE = 0x0080, 46262306a36Sopenharmony_ci ATOM_COMPOSITESYNC = 0x0040, 46362306a36Sopenharmony_ci}; 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_ci/* utilitypipeline 46762306a36Sopenharmony_ci * when format_revision==1 && content_revision==1, then this an info table for atomworks to use during debug session, no structure is associated with it. 46862306a36Sopenharmony_ci * the location of it can't change 46962306a36Sopenharmony_ci*/ 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ci/* 47362306a36Sopenharmony_ci *************************************************************************** 47462306a36Sopenharmony_ci Data Table firmwareinfo structure 47562306a36Sopenharmony_ci *************************************************************************** 47662306a36Sopenharmony_ci*/ 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_cistruct atom_firmware_info_v3_1 47962306a36Sopenharmony_ci{ 48062306a36Sopenharmony_ci struct atom_common_table_header table_header; 48162306a36Sopenharmony_ci uint32_t firmware_revision; 48262306a36Sopenharmony_ci uint32_t bootup_sclk_in10khz; 48362306a36Sopenharmony_ci uint32_t bootup_mclk_in10khz; 48462306a36Sopenharmony_ci uint32_t firmware_capability; // enum atombios_firmware_capability 48562306a36Sopenharmony_ci uint32_t main_call_parser_entry; /* direct address of main parser call in VBIOS binary. */ 48662306a36Sopenharmony_ci uint32_t bios_scratch_reg_startaddr; // 1st bios scratch register dword address 48762306a36Sopenharmony_ci uint16_t bootup_vddc_mv; 48862306a36Sopenharmony_ci uint16_t bootup_vddci_mv; 48962306a36Sopenharmony_ci uint16_t bootup_mvddc_mv; 49062306a36Sopenharmony_ci uint16_t bootup_vddgfx_mv; 49162306a36Sopenharmony_ci uint8_t mem_module_id; 49262306a36Sopenharmony_ci uint8_t coolingsolution_id; /*0: Air cooling; 1: Liquid cooling ... */ 49362306a36Sopenharmony_ci uint8_t reserved1[2]; 49462306a36Sopenharmony_ci uint32_t mc_baseaddr_high; 49562306a36Sopenharmony_ci uint32_t mc_baseaddr_low; 49662306a36Sopenharmony_ci uint32_t reserved2[6]; 49762306a36Sopenharmony_ci}; 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci/* Total 32bit cap indication */ 50062306a36Sopenharmony_cienum atombios_firmware_capability 50162306a36Sopenharmony_ci{ 50262306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_FIRMWARE_POSTED = 0x00000001, 50362306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_GPU_VIRTUALIZATION = 0x00000002, 50462306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_WMI_SUPPORT = 0x00000040, 50562306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_HWEMU_ENABLE = 0x00000080, 50662306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_HWEMU_UMC_CFG = 0x00000100, 50762306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_SRAM_ECC = 0x00000200, 50862306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_ENABLE_2STAGE_BIST_TRAINING = 0x00000400, 50962306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_ENABLE_2ND_USB20PORT = 0x0008000, 51062306a36Sopenharmony_ci ATOM_FIRMWARE_CAP_DYNAMIC_BOOT_CFG_ENABLE = 0x0020000, 51162306a36Sopenharmony_ci}; 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_cienum atom_cooling_solution_id{ 51462306a36Sopenharmony_ci AIR_COOLING = 0x00, 51562306a36Sopenharmony_ci LIQUID_COOLING = 0x01 51662306a36Sopenharmony_ci}; 51762306a36Sopenharmony_ci 51862306a36Sopenharmony_cistruct atom_firmware_info_v3_2 { 51962306a36Sopenharmony_ci struct atom_common_table_header table_header; 52062306a36Sopenharmony_ci uint32_t firmware_revision; 52162306a36Sopenharmony_ci uint32_t bootup_sclk_in10khz; 52262306a36Sopenharmony_ci uint32_t bootup_mclk_in10khz; 52362306a36Sopenharmony_ci uint32_t firmware_capability; // enum atombios_firmware_capability 52462306a36Sopenharmony_ci uint32_t main_call_parser_entry; /* direct address of main parser call in VBIOS binary. */ 52562306a36Sopenharmony_ci uint32_t bios_scratch_reg_startaddr; // 1st bios scratch register dword address 52662306a36Sopenharmony_ci uint16_t bootup_vddc_mv; 52762306a36Sopenharmony_ci uint16_t bootup_vddci_mv; 52862306a36Sopenharmony_ci uint16_t bootup_mvddc_mv; 52962306a36Sopenharmony_ci uint16_t bootup_vddgfx_mv; 53062306a36Sopenharmony_ci uint8_t mem_module_id; 53162306a36Sopenharmony_ci uint8_t coolingsolution_id; /*0: Air cooling; 1: Liquid cooling ... */ 53262306a36Sopenharmony_ci uint8_t reserved1[2]; 53362306a36Sopenharmony_ci uint32_t mc_baseaddr_high; 53462306a36Sopenharmony_ci uint32_t mc_baseaddr_low; 53562306a36Sopenharmony_ci uint8_t board_i2c_feature_id; // enum of atom_board_i2c_feature_id_def 53662306a36Sopenharmony_ci uint8_t board_i2c_feature_gpio_id; // i2c id find in gpio_lut data table gpio_id 53762306a36Sopenharmony_ci uint8_t board_i2c_feature_slave_addr; 53862306a36Sopenharmony_ci uint8_t reserved3; 53962306a36Sopenharmony_ci uint16_t bootup_mvddq_mv; 54062306a36Sopenharmony_ci uint16_t bootup_mvpp_mv; 54162306a36Sopenharmony_ci uint32_t zfbstartaddrin16mb; 54262306a36Sopenharmony_ci uint32_t reserved2[3]; 54362306a36Sopenharmony_ci}; 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_cistruct atom_firmware_info_v3_3 54662306a36Sopenharmony_ci{ 54762306a36Sopenharmony_ci struct atom_common_table_header table_header; 54862306a36Sopenharmony_ci uint32_t firmware_revision; 54962306a36Sopenharmony_ci uint32_t bootup_sclk_in10khz; 55062306a36Sopenharmony_ci uint32_t bootup_mclk_in10khz; 55162306a36Sopenharmony_ci uint32_t firmware_capability; // enum atombios_firmware_capability 55262306a36Sopenharmony_ci uint32_t main_call_parser_entry; /* direct address of main parser call in VBIOS binary. */ 55362306a36Sopenharmony_ci uint32_t bios_scratch_reg_startaddr; // 1st bios scratch register dword address 55462306a36Sopenharmony_ci uint16_t bootup_vddc_mv; 55562306a36Sopenharmony_ci uint16_t bootup_vddci_mv; 55662306a36Sopenharmony_ci uint16_t bootup_mvddc_mv; 55762306a36Sopenharmony_ci uint16_t bootup_vddgfx_mv; 55862306a36Sopenharmony_ci uint8_t mem_module_id; 55962306a36Sopenharmony_ci uint8_t coolingsolution_id; /*0: Air cooling; 1: Liquid cooling ... */ 56062306a36Sopenharmony_ci uint8_t reserved1[2]; 56162306a36Sopenharmony_ci uint32_t mc_baseaddr_high; 56262306a36Sopenharmony_ci uint32_t mc_baseaddr_low; 56362306a36Sopenharmony_ci uint8_t board_i2c_feature_id; // enum of atom_board_i2c_feature_id_def 56462306a36Sopenharmony_ci uint8_t board_i2c_feature_gpio_id; // i2c id find in gpio_lut data table gpio_id 56562306a36Sopenharmony_ci uint8_t board_i2c_feature_slave_addr; 56662306a36Sopenharmony_ci uint8_t reserved3; 56762306a36Sopenharmony_ci uint16_t bootup_mvddq_mv; 56862306a36Sopenharmony_ci uint16_t bootup_mvpp_mv; 56962306a36Sopenharmony_ci uint32_t zfbstartaddrin16mb; 57062306a36Sopenharmony_ci uint32_t pplib_pptable_id; // if pplib_pptable_id!=0, pplib get powerplay table inside driver instead of from VBIOS 57162306a36Sopenharmony_ci uint32_t reserved2[2]; 57262306a36Sopenharmony_ci}; 57362306a36Sopenharmony_ci 57462306a36Sopenharmony_cistruct atom_firmware_info_v3_4 { 57562306a36Sopenharmony_ci struct atom_common_table_header table_header; 57662306a36Sopenharmony_ci uint32_t firmware_revision; 57762306a36Sopenharmony_ci uint32_t bootup_sclk_in10khz; 57862306a36Sopenharmony_ci uint32_t bootup_mclk_in10khz; 57962306a36Sopenharmony_ci uint32_t firmware_capability; // enum atombios_firmware_capability 58062306a36Sopenharmony_ci uint32_t main_call_parser_entry; /* direct address of main parser call in VBIOS binary. */ 58162306a36Sopenharmony_ci uint32_t bios_scratch_reg_startaddr; // 1st bios scratch register dword address 58262306a36Sopenharmony_ci uint16_t bootup_vddc_mv; 58362306a36Sopenharmony_ci uint16_t bootup_vddci_mv; 58462306a36Sopenharmony_ci uint16_t bootup_mvddc_mv; 58562306a36Sopenharmony_ci uint16_t bootup_vddgfx_mv; 58662306a36Sopenharmony_ci uint8_t mem_module_id; 58762306a36Sopenharmony_ci uint8_t coolingsolution_id; /*0: Air cooling; 1: Liquid cooling ... */ 58862306a36Sopenharmony_ci uint8_t reserved1[2]; 58962306a36Sopenharmony_ci uint32_t mc_baseaddr_high; 59062306a36Sopenharmony_ci uint32_t mc_baseaddr_low; 59162306a36Sopenharmony_ci uint8_t board_i2c_feature_id; // enum of atom_board_i2c_feature_id_def 59262306a36Sopenharmony_ci uint8_t board_i2c_feature_gpio_id; // i2c id find in gpio_lut data table gpio_id 59362306a36Sopenharmony_ci uint8_t board_i2c_feature_slave_addr; 59462306a36Sopenharmony_ci uint8_t ras_rom_i2c_slave_addr; 59562306a36Sopenharmony_ci uint16_t bootup_mvddq_mv; 59662306a36Sopenharmony_ci uint16_t bootup_mvpp_mv; 59762306a36Sopenharmony_ci uint32_t zfbstartaddrin16mb; 59862306a36Sopenharmony_ci uint32_t pplib_pptable_id; // if pplib_pptable_id!=0, pplib get powerplay table inside driver instead of from VBIOS 59962306a36Sopenharmony_ci uint32_t mvdd_ratio; // mvdd_raio = (real mvdd in power rail)*1000/(mvdd_output_from_svi2) 60062306a36Sopenharmony_ci uint16_t hw_bootup_vddgfx_mv; // hw default vddgfx voltage level decide by board strap 60162306a36Sopenharmony_ci uint16_t hw_bootup_vddc_mv; // hw default vddc voltage level decide by board strap 60262306a36Sopenharmony_ci uint16_t hw_bootup_mvddc_mv; // hw default mvddc voltage level decide by board strap 60362306a36Sopenharmony_ci uint16_t hw_bootup_vddci_mv; // hw default vddci voltage level decide by board strap 60462306a36Sopenharmony_ci uint32_t maco_pwrlimit_mw; // bomaco mode power limit in unit of m-watt 60562306a36Sopenharmony_ci uint32_t usb_pwrlimit_mw; // power limit when USB is enable in unit of m-watt 60662306a36Sopenharmony_ci uint32_t fw_reserved_size_in_kb; // VBIOS reserved extra fw size in unit of kb. 60762306a36Sopenharmony_ci uint32_t pspbl_init_done_reg_addr; 60862306a36Sopenharmony_ci uint32_t pspbl_init_done_value; 60962306a36Sopenharmony_ci uint32_t pspbl_init_done_check_timeout; // time out in unit of us when polling pspbl init done 61062306a36Sopenharmony_ci uint32_t reserved[2]; 61162306a36Sopenharmony_ci}; 61262306a36Sopenharmony_ci 61362306a36Sopenharmony_ci/* 61462306a36Sopenharmony_ci *************************************************************************** 61562306a36Sopenharmony_ci Data Table lcd_info structure 61662306a36Sopenharmony_ci *************************************************************************** 61762306a36Sopenharmony_ci*/ 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_cistruct lcd_info_v2_1 62062306a36Sopenharmony_ci{ 62162306a36Sopenharmony_ci struct atom_common_table_header table_header; 62262306a36Sopenharmony_ci struct atom_dtd_format lcd_timing; 62362306a36Sopenharmony_ci uint16_t backlight_pwm; 62462306a36Sopenharmony_ci uint16_t special_handle_cap; 62562306a36Sopenharmony_ci uint16_t panel_misc; 62662306a36Sopenharmony_ci uint16_t lvds_max_slink_pclk; 62762306a36Sopenharmony_ci uint16_t lvds_ss_percentage; 62862306a36Sopenharmony_ci uint16_t lvds_ss_rate_10hz; 62962306a36Sopenharmony_ci uint8_t pwr_on_digon_to_de; /*all pwr sequence numbers below are in uint of 4ms*/ 63062306a36Sopenharmony_ci uint8_t pwr_on_de_to_vary_bl; 63162306a36Sopenharmony_ci uint8_t pwr_down_vary_bloff_to_de; 63262306a36Sopenharmony_ci uint8_t pwr_down_de_to_digoff; 63362306a36Sopenharmony_ci uint8_t pwr_off_delay; 63462306a36Sopenharmony_ci uint8_t pwr_on_vary_bl_to_blon; 63562306a36Sopenharmony_ci uint8_t pwr_down_bloff_to_vary_bloff; 63662306a36Sopenharmony_ci uint8_t panel_bpc; 63762306a36Sopenharmony_ci uint8_t dpcd_edp_config_cap; 63862306a36Sopenharmony_ci uint8_t dpcd_max_link_rate; 63962306a36Sopenharmony_ci uint8_t dpcd_max_lane_count; 64062306a36Sopenharmony_ci uint8_t dpcd_max_downspread; 64162306a36Sopenharmony_ci uint8_t min_allowed_bl_level; 64262306a36Sopenharmony_ci uint8_t max_allowed_bl_level; 64362306a36Sopenharmony_ci uint8_t bootup_bl_level; 64462306a36Sopenharmony_ci uint8_t dplvdsrxid; 64562306a36Sopenharmony_ci uint32_t reserved1[8]; 64662306a36Sopenharmony_ci}; 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ci/* lcd_info_v2_1.panel_misc defintion */ 64962306a36Sopenharmony_cienum atom_lcd_info_panel_misc{ 65062306a36Sopenharmony_ci ATOM_PANEL_MISC_FPDI =0x0002, 65162306a36Sopenharmony_ci}; 65262306a36Sopenharmony_ci 65362306a36Sopenharmony_ci//uceDPToLVDSRxId 65462306a36Sopenharmony_cienum atom_lcd_info_dptolvds_rx_id 65562306a36Sopenharmony_ci{ 65662306a36Sopenharmony_ci eDP_TO_LVDS_RX_DISABLE = 0x00, // no eDP->LVDS translator chip 65762306a36Sopenharmony_ci eDP_TO_LVDS_COMMON_ID = 0x01, // common eDP->LVDS translator chip without AMD SW init 65862306a36Sopenharmony_ci eDP_TO_LVDS_REALTEK_ID = 0x02, // Realtek tansaltor which require AMD SW init 65962306a36Sopenharmony_ci}; 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci/* 66362306a36Sopenharmony_ci *************************************************************************** 66462306a36Sopenharmony_ci Data Table gpio_pin_lut structure 66562306a36Sopenharmony_ci *************************************************************************** 66662306a36Sopenharmony_ci*/ 66762306a36Sopenharmony_ci 66862306a36Sopenharmony_cistruct atom_gpio_pin_assignment 66962306a36Sopenharmony_ci{ 67062306a36Sopenharmony_ci uint32_t data_a_reg_index; 67162306a36Sopenharmony_ci uint8_t gpio_bitshift; 67262306a36Sopenharmony_ci uint8_t gpio_mask_bitshift; 67362306a36Sopenharmony_ci uint8_t gpio_id; 67462306a36Sopenharmony_ci uint8_t reserved; 67562306a36Sopenharmony_ci}; 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_ci/* atom_gpio_pin_assignment.gpio_id definition */ 67862306a36Sopenharmony_cienum atom_gpio_pin_assignment_gpio_id { 67962306a36Sopenharmony_ci I2C_HW_LANE_MUX =0x0f, /* only valid when bit7=1 */ 68062306a36Sopenharmony_ci I2C_HW_ENGINE_ID_MASK =0x70, /* only valid when bit7=1 */ 68162306a36Sopenharmony_ci I2C_HW_CAP =0x80, /*only when the I2C_HW_CAP is set, the pin ID is assigned to an I2C pin pair, otherwise, it's an generic GPIO pin */ 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci /* gpio_id pre-define id for multiple usage */ 68462306a36Sopenharmony_ci /* GPIO use to control PCIE_VDDC in certain SLT board */ 68562306a36Sopenharmony_ci PCIE_VDDC_CONTROL_GPIO_PINID = 56, 68662306a36Sopenharmony_ci /* if PP_AC_DC_SWITCH_GPIO_PINID in Gpio_Pin_LutTable, AC/DC swithing feature is enable */ 68762306a36Sopenharmony_ci PP_AC_DC_SWITCH_GPIO_PINID = 60, 68862306a36Sopenharmony_ci /* VDDC_REGULATOR_VRHOT_GPIO_PINID in Gpio_Pin_LutTable, VRHot feature is enable */ 68962306a36Sopenharmony_ci VDDC_VRHOT_GPIO_PINID = 61, 69062306a36Sopenharmony_ci /*if VDDC_PCC_GPIO_PINID in GPIO_LUTable, Peak Current Control feature is enabled */ 69162306a36Sopenharmony_ci VDDC_PCC_GPIO_PINID = 62, 69262306a36Sopenharmony_ci /* Only used on certain SLT/PA board to allow utility to cut Efuse. */ 69362306a36Sopenharmony_ci EFUSE_CUT_ENABLE_GPIO_PINID = 63, 69462306a36Sopenharmony_ci /* ucGPIO=DRAM_SELF_REFRESH_GPIO_PIND uses for memory self refresh (ucGPIO=0, DRAM self-refresh; ucGPIO= */ 69562306a36Sopenharmony_ci DRAM_SELF_REFRESH_GPIO_PINID = 64, 69662306a36Sopenharmony_ci /* Thermal interrupt output->system thermal chip GPIO pin */ 69762306a36Sopenharmony_ci THERMAL_INT_OUTPUT_GPIO_PINID =65, 69862306a36Sopenharmony_ci}; 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_cistruct atom_gpio_pin_lut_v2_1 70262306a36Sopenharmony_ci{ 70362306a36Sopenharmony_ci struct atom_common_table_header table_header; 70462306a36Sopenharmony_ci /*the real number of this included in the structure is calcualted by using the (whole structure size - the header size)/size of atom_gpio_pin_lut */ 70562306a36Sopenharmony_ci struct atom_gpio_pin_assignment gpio_pin[8]; 70662306a36Sopenharmony_ci}; 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_ci 70962306a36Sopenharmony_ci/* 71062306a36Sopenharmony_ci * VBIOS/PRE-OS always reserve a FB region at the top of frame buffer. driver should not write 71162306a36Sopenharmony_ci * access that region. driver can allocate their own reservation region as long as it does not 71262306a36Sopenharmony_ci * overlap firwmare's reservation region. 71362306a36Sopenharmony_ci * if (pre-NV1X) atom data table firmwareInfoTable version < 3.3: 71462306a36Sopenharmony_ci * in this case, atom data table vram_usagebyfirmwareTable version always <= 2.1 71562306a36Sopenharmony_ci * if VBIOS/UEFI GOP is posted: 71662306a36Sopenharmony_ci * VBIOS/UEFIGOP update used_by_firmware_in_kb = total reserved size by VBIOS 71762306a36Sopenharmony_ci * update start_address_in_kb = total_mem_size_in_kb - used_by_firmware_in_kb; 71862306a36Sopenharmony_ci * ( total_mem_size_in_kb = reg(CONFIG_MEMSIZE)<<10) 71962306a36Sopenharmony_ci * driver can allocate driver reservation region under firmware reservation, 72062306a36Sopenharmony_ci * used_by_driver_in_kb = driver reservation size 72162306a36Sopenharmony_ci * driver reservation start address = (start_address_in_kb - used_by_driver_in_kb) 72262306a36Sopenharmony_ci * Comment1[hchan]: There is only one reservation at the beginning of the FB reserved by 72362306a36Sopenharmony_ci * host driver. Host driver would overwrite the table with the following 72462306a36Sopenharmony_ci * used_by_firmware_in_kb = total reserved size for pf-vf info exchange and 72562306a36Sopenharmony_ci * set SRIOV_MSG_SHARE_RESERVATION mask start_address_in_kb = 0 72662306a36Sopenharmony_ci * else there is no VBIOS reservation region: 72762306a36Sopenharmony_ci * driver must allocate driver reservation region at top of FB. 72862306a36Sopenharmony_ci * driver set used_by_driver_in_kb = driver reservation size 72962306a36Sopenharmony_ci * driver reservation start address = (total_mem_size_in_kb - used_by_driver_in_kb) 73062306a36Sopenharmony_ci * same as Comment1 73162306a36Sopenharmony_ci * else (NV1X and after): 73262306a36Sopenharmony_ci * if VBIOS/UEFI GOP is posted: 73362306a36Sopenharmony_ci * VBIOS/UEFIGOP update: 73462306a36Sopenharmony_ci * used_by_firmware_in_kb = atom_firmware_Info_v3_3.fw_reserved_size_in_kb; 73562306a36Sopenharmony_ci * start_address_in_kb = total_mem_size_in_kb - used_by_firmware_in_kb; 73662306a36Sopenharmony_ci * (total_mem_size_in_kb = reg(CONFIG_MEMSIZE)<<10) 73762306a36Sopenharmony_ci * if vram_usagebyfirmwareTable version <= 2.1: 73862306a36Sopenharmony_ci * driver can allocate driver reservation region under firmware reservation, 73962306a36Sopenharmony_ci * driver set used_by_driver_in_kb = driver reservation size 74062306a36Sopenharmony_ci * driver reservation start address = start_address_in_kb - used_by_driver_in_kb 74162306a36Sopenharmony_ci * same as Comment1 74262306a36Sopenharmony_ci * else driver can: 74362306a36Sopenharmony_ci * allocate it reservation any place as long as it does overlap pre-OS FW reservation area 74462306a36Sopenharmony_ci * set used_by_driver_region0_in_kb = driver reservation size 74562306a36Sopenharmony_ci * set driver_region0_start_address_in_kb = driver reservation region start address 74662306a36Sopenharmony_ci * Comment2[hchan]: Host driver can set used_by_firmware_in_kb and start_address_in_kb to 74762306a36Sopenharmony_ci * zero as the reservation for VF as it doesn’t exist. And Host driver should also 74862306a36Sopenharmony_ci * update atom_firmware_Info table to remove the same VBIOS reservation as well. 74962306a36Sopenharmony_ci */ 75062306a36Sopenharmony_ci 75162306a36Sopenharmony_cistruct vram_usagebyfirmware_v2_1 75262306a36Sopenharmony_ci{ 75362306a36Sopenharmony_ci struct atom_common_table_header table_header; 75462306a36Sopenharmony_ci uint32_t start_address_in_kb; 75562306a36Sopenharmony_ci uint16_t used_by_firmware_in_kb; 75662306a36Sopenharmony_ci uint16_t used_by_driver_in_kb; 75762306a36Sopenharmony_ci}; 75862306a36Sopenharmony_ci 75962306a36Sopenharmony_cistruct vram_usagebyfirmware_v2_2 { 76062306a36Sopenharmony_ci struct atom_common_table_header table_header; 76162306a36Sopenharmony_ci uint32_t fw_region_start_address_in_kb; 76262306a36Sopenharmony_ci uint16_t used_by_firmware_in_kb; 76362306a36Sopenharmony_ci uint16_t reserved; 76462306a36Sopenharmony_ci uint32_t driver_region0_start_address_in_kb; 76562306a36Sopenharmony_ci uint32_t used_by_driver_region0_in_kb; 76662306a36Sopenharmony_ci uint32_t reserved32[7]; 76762306a36Sopenharmony_ci}; 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_ci/* 77062306a36Sopenharmony_ci *************************************************************************** 77162306a36Sopenharmony_ci Data Table displayobjectinfo structure 77262306a36Sopenharmony_ci *************************************************************************** 77362306a36Sopenharmony_ci*/ 77462306a36Sopenharmony_ci 77562306a36Sopenharmony_cienum atom_object_record_type_id { 77662306a36Sopenharmony_ci ATOM_I2C_RECORD_TYPE = 1, 77762306a36Sopenharmony_ci ATOM_HPD_INT_RECORD_TYPE = 2, 77862306a36Sopenharmony_ci ATOM_CONNECTOR_CAP_RECORD_TYPE = 3, 77962306a36Sopenharmony_ci ATOM_CONNECTOR_SPEED_UPTO = 4, 78062306a36Sopenharmony_ci ATOM_OBJECT_GPIO_CNTL_RECORD_TYPE = 9, 78162306a36Sopenharmony_ci ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE = 16, 78262306a36Sopenharmony_ci ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE = 17, 78362306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_TYPE = 20, 78462306a36Sopenharmony_ci ATOM_BRACKET_LAYOUT_RECORD_TYPE = 21, 78562306a36Sopenharmony_ci ATOM_CONNECTOR_FORCED_TMDS_CAP_RECORD_TYPE = 22, 78662306a36Sopenharmony_ci ATOM_DISP_CONNECTOR_CAPS_RECORD_TYPE = 23, 78762306a36Sopenharmony_ci ATOM_BRACKET_LAYOUT_V2_RECORD_TYPE = 25, 78862306a36Sopenharmony_ci ATOM_RECORD_END_TYPE = 0xFF, 78962306a36Sopenharmony_ci}; 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_cistruct atom_common_record_header 79262306a36Sopenharmony_ci{ 79362306a36Sopenharmony_ci uint8_t record_type; //An emun to indicate the record type 79462306a36Sopenharmony_ci uint8_t record_size; //The size of the whole record in byte 79562306a36Sopenharmony_ci}; 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_cistruct atom_i2c_record 79862306a36Sopenharmony_ci{ 79962306a36Sopenharmony_ci struct atom_common_record_header record_header; //record_type = ATOM_I2C_RECORD_TYPE 80062306a36Sopenharmony_ci uint8_t i2c_id; 80162306a36Sopenharmony_ci uint8_t i2c_slave_addr; //The slave address, it's 0 when the record is attached to connector for DDC 80262306a36Sopenharmony_ci}; 80362306a36Sopenharmony_ci 80462306a36Sopenharmony_cistruct atom_hpd_int_record 80562306a36Sopenharmony_ci{ 80662306a36Sopenharmony_ci struct atom_common_record_header record_header; //record_type = ATOM_HPD_INT_RECORD_TYPE 80762306a36Sopenharmony_ci uint8_t pin_id; //Corresponding block in GPIO_PIN_INFO table gives the pin info 80862306a36Sopenharmony_ci uint8_t plugin_pin_state; 80962306a36Sopenharmony_ci}; 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_cistruct atom_connector_caps_record { 81262306a36Sopenharmony_ci struct atom_common_record_header 81362306a36Sopenharmony_ci record_header; //record_type = ATOM_CONN_CAP_RECORD_TYPE 81462306a36Sopenharmony_ci uint16_t connector_caps; //01b if internal display is checked; 10b if internal BL is checked; 0 of Not 81562306a36Sopenharmony_ci}; 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_cistruct atom_connector_speed_record { 81862306a36Sopenharmony_ci struct atom_common_record_header 81962306a36Sopenharmony_ci record_header; //record_type = ATOM_CONN_SPEED_UPTO 82062306a36Sopenharmony_ci uint32_t connector_max_speed; // connector Max speed attribute, it sets 8100 in Mhz when DP connector @8.1Ghz. 82162306a36Sopenharmony_ci uint16_t reserved; 82262306a36Sopenharmony_ci}; 82362306a36Sopenharmony_ci 82462306a36Sopenharmony_ci// Bit maps for ATOM_ENCODER_CAP_RECORD.usEncoderCap 82562306a36Sopenharmony_cienum atom_encoder_caps_def 82662306a36Sopenharmony_ci{ 82762306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_HBR2 =0x01, // DP1.2 HBR2 is supported by HW encoder, it is retired in NI. the real meaning from SI is MST_EN 82862306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_MST_EN =0x01, // from SI, this bit means DP MST is enable or not. 82962306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_HBR2_EN =0x02, // DP1.2 HBR2 setting is qualified and HBR2 can be enabled 83062306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_HDMI6Gbps_EN =0x04, // HDMI2.0 6Gbps enable or not. 83162306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_HBR3_EN =0x08, // DP1.3 HBR3 is supported by board. 83262306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_DP2 =0x10, // DP2 is supported by ASIC/board. 83362306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_UHBR10_EN =0x20, // DP2.0 UHBR10 settings is supported by board 83462306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_UHBR13_5_EN =0x40, // DP2.0 UHBR13.5 settings is supported by board 83562306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_UHBR20_EN =0x80, // DP2.0 UHBR20 settings is supported by board 83662306a36Sopenharmony_ci ATOM_ENCODER_CAP_RECORD_USB_C_TYPE =0x100, // the DP connector is a USB-C type. 83762306a36Sopenharmony_ci}; 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_cistruct atom_encoder_caps_record 84062306a36Sopenharmony_ci{ 84162306a36Sopenharmony_ci struct atom_common_record_header record_header; //record_type = ATOM_ENCODER_CAP_RECORD_TYPE 84262306a36Sopenharmony_ci uint32_t encodercaps; 84362306a36Sopenharmony_ci}; 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_cienum atom_connector_caps_def 84662306a36Sopenharmony_ci{ 84762306a36Sopenharmony_ci ATOM_CONNECTOR_CAP_INTERNAL_DISPLAY = 0x01, //a cap bit to indicate that this non-embedded display connector is an internal display 84862306a36Sopenharmony_ci ATOM_CONNECTOR_CAP_INTERNAL_DISPLAY_BL = 0x02, //a cap bit to indicate that this internal display requires BL control from GPU, refers to lcd_info for BL PWM freq 84962306a36Sopenharmony_ci}; 85062306a36Sopenharmony_ci 85162306a36Sopenharmony_cistruct atom_disp_connector_caps_record 85262306a36Sopenharmony_ci{ 85362306a36Sopenharmony_ci struct atom_common_record_header record_header; 85462306a36Sopenharmony_ci uint32_t connectcaps; 85562306a36Sopenharmony_ci}; 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_ci//The following generic object gpio pin control record type will replace JTAG_RECORD/FPGA_CONTROL_RECORD/DVI_EXT_INPUT_RECORD above gradually 85862306a36Sopenharmony_cistruct atom_gpio_pin_control_pair 85962306a36Sopenharmony_ci{ 86062306a36Sopenharmony_ci uint8_t gpio_id; // GPIO_ID, find the corresponding ID in GPIO_LUT table 86162306a36Sopenharmony_ci uint8_t gpio_pinstate; // Pin state showing how to set-up the pin 86262306a36Sopenharmony_ci}; 86362306a36Sopenharmony_ci 86462306a36Sopenharmony_cistruct atom_object_gpio_cntl_record 86562306a36Sopenharmony_ci{ 86662306a36Sopenharmony_ci struct atom_common_record_header record_header; 86762306a36Sopenharmony_ci uint8_t flag; // Future expnadibility 86862306a36Sopenharmony_ci uint8_t number_of_pins; // Number of GPIO pins used to control the object 86962306a36Sopenharmony_ci struct atom_gpio_pin_control_pair gpio[1]; // the real gpio pin pair determined by number of pins ucNumberOfPins 87062306a36Sopenharmony_ci}; 87162306a36Sopenharmony_ci 87262306a36Sopenharmony_ci//Definitions for GPIO pin state 87362306a36Sopenharmony_cienum atom_gpio_pin_control_pinstate_def 87462306a36Sopenharmony_ci{ 87562306a36Sopenharmony_ci GPIO_PIN_TYPE_INPUT = 0x00, 87662306a36Sopenharmony_ci GPIO_PIN_TYPE_OUTPUT = 0x10, 87762306a36Sopenharmony_ci GPIO_PIN_TYPE_HW_CONTROL = 0x20, 87862306a36Sopenharmony_ci 87962306a36Sopenharmony_ci//For GPIO_PIN_TYPE_OUTPUT the following is defined 88062306a36Sopenharmony_ci GPIO_PIN_OUTPUT_STATE_MASK = 0x01, 88162306a36Sopenharmony_ci GPIO_PIN_OUTPUT_STATE_SHIFT = 0, 88262306a36Sopenharmony_ci GPIO_PIN_STATE_ACTIVE_LOW = 0x0, 88362306a36Sopenharmony_ci GPIO_PIN_STATE_ACTIVE_HIGH = 0x1, 88462306a36Sopenharmony_ci}; 88562306a36Sopenharmony_ci 88662306a36Sopenharmony_ci// Indexes to GPIO array in GLSync record 88762306a36Sopenharmony_ci// GLSync record is for Frame Lock/Gen Lock feature. 88862306a36Sopenharmony_cienum atom_glsync_record_gpio_index_def 88962306a36Sopenharmony_ci{ 89062306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_REFCLK = 0, 89162306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_HSYNC = 1, 89262306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_VSYNC = 2, 89362306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_SWAP_REQ = 3, 89462306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_SWAP_GNT = 4, 89562306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_INTERRUPT = 5, 89662306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_V_RESET = 6, 89762306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_SWAP_CNTL = 7, 89862306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_SWAP_SEL = 8, 89962306a36Sopenharmony_ci ATOM_GPIO_INDEX_GLSYNC_MAX = 9, 90062306a36Sopenharmony_ci}; 90162306a36Sopenharmony_ci 90262306a36Sopenharmony_ci 90362306a36Sopenharmony_cistruct atom_connector_hpdpin_lut_record //record for ATOM_CONNECTOR_HPDPIN_LUT_RECORD_TYPE 90462306a36Sopenharmony_ci{ 90562306a36Sopenharmony_ci struct atom_common_record_header record_header; 90662306a36Sopenharmony_ci uint8_t hpd_pin_map[8]; 90762306a36Sopenharmony_ci}; 90862306a36Sopenharmony_ci 90962306a36Sopenharmony_cistruct atom_connector_auxddc_lut_record //record for ATOM_CONNECTOR_AUXDDC_LUT_RECORD_TYPE 91062306a36Sopenharmony_ci{ 91162306a36Sopenharmony_ci struct atom_common_record_header record_header; 91262306a36Sopenharmony_ci uint8_t aux_ddc_map[8]; 91362306a36Sopenharmony_ci}; 91462306a36Sopenharmony_ci 91562306a36Sopenharmony_cistruct atom_connector_forced_tmds_cap_record 91662306a36Sopenharmony_ci{ 91762306a36Sopenharmony_ci struct atom_common_record_header record_header; 91862306a36Sopenharmony_ci // override TMDS capability on this connector when it operate in TMDS mode. usMaxTmdsClkRate = max TMDS Clock in Mhz/2.5 91962306a36Sopenharmony_ci uint8_t maxtmdsclkrate_in2_5mhz; 92062306a36Sopenharmony_ci uint8_t reserved; 92162306a36Sopenharmony_ci}; 92262306a36Sopenharmony_ci 92362306a36Sopenharmony_cistruct atom_connector_layout_info 92462306a36Sopenharmony_ci{ 92562306a36Sopenharmony_ci uint16_t connectorobjid; 92662306a36Sopenharmony_ci uint8_t connector_type; 92762306a36Sopenharmony_ci uint8_t position; 92862306a36Sopenharmony_ci}; 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_ci// define ATOM_CONNECTOR_LAYOUT_INFO.ucConnectorType to describe the display connector size 93162306a36Sopenharmony_cienum atom_connector_layout_info_connector_type_def 93262306a36Sopenharmony_ci{ 93362306a36Sopenharmony_ci CONNECTOR_TYPE_DVI_D = 1, 93462306a36Sopenharmony_ci 93562306a36Sopenharmony_ci CONNECTOR_TYPE_HDMI = 4, 93662306a36Sopenharmony_ci CONNECTOR_TYPE_DISPLAY_PORT = 5, 93762306a36Sopenharmony_ci CONNECTOR_TYPE_MINI_DISPLAY_PORT = 6, 93862306a36Sopenharmony_ci}; 93962306a36Sopenharmony_ci 94062306a36Sopenharmony_cistruct atom_bracket_layout_record 94162306a36Sopenharmony_ci{ 94262306a36Sopenharmony_ci struct atom_common_record_header record_header; 94362306a36Sopenharmony_ci uint8_t bracketlen; 94462306a36Sopenharmony_ci uint8_t bracketwidth; 94562306a36Sopenharmony_ci uint8_t conn_num; 94662306a36Sopenharmony_ci uint8_t reserved; 94762306a36Sopenharmony_ci struct atom_connector_layout_info conn_info[1]; 94862306a36Sopenharmony_ci}; 94962306a36Sopenharmony_cistruct atom_bracket_layout_record_v2 { 95062306a36Sopenharmony_ci struct atom_common_record_header 95162306a36Sopenharmony_ci record_header; //record_type = ATOM_BRACKET_LAYOUT_RECORD_TYPE 95262306a36Sopenharmony_ci uint8_t bracketlen; //Bracket Length in mm 95362306a36Sopenharmony_ci uint8_t bracketwidth; //Bracket Width in mm 95462306a36Sopenharmony_ci uint8_t conn_num; //Connector numbering 95562306a36Sopenharmony_ci uint8_t mini_type; //Mini Type (0 = Normal; 1 = Mini) 95662306a36Sopenharmony_ci uint8_t reserved1; 95762306a36Sopenharmony_ci uint8_t reserved2; 95862306a36Sopenharmony_ci}; 95962306a36Sopenharmony_ci 96062306a36Sopenharmony_cienum atom_connector_layout_info_mini_type_def { 96162306a36Sopenharmony_ci MINI_TYPE_NORMAL = 0, 96262306a36Sopenharmony_ci MINI_TYPE_MINI = 1, 96362306a36Sopenharmony_ci}; 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_cienum atom_display_device_tag_def{ 96662306a36Sopenharmony_ci ATOM_DISPLAY_LCD1_SUPPORT = 0x0002, //an embedded display is either an LVDS or eDP signal type of display 96762306a36Sopenharmony_ci ATOM_DISPLAY_LCD2_SUPPORT = 0x0020, //second edp device tag 0x0020 for backward compability 96862306a36Sopenharmony_ci ATOM_DISPLAY_DFP1_SUPPORT = 0x0008, 96962306a36Sopenharmony_ci ATOM_DISPLAY_DFP2_SUPPORT = 0x0080, 97062306a36Sopenharmony_ci ATOM_DISPLAY_DFP3_SUPPORT = 0x0200, 97162306a36Sopenharmony_ci ATOM_DISPLAY_DFP4_SUPPORT = 0x0400, 97262306a36Sopenharmony_ci ATOM_DISPLAY_DFP5_SUPPORT = 0x0800, 97362306a36Sopenharmony_ci ATOM_DISPLAY_DFP6_SUPPORT = 0x0040, 97462306a36Sopenharmony_ci ATOM_DISPLAY_DFPx_SUPPORT = 0x0ec8, 97562306a36Sopenharmony_ci}; 97662306a36Sopenharmony_ci 97762306a36Sopenharmony_cistruct atom_display_object_path_v2 97862306a36Sopenharmony_ci{ 97962306a36Sopenharmony_ci uint16_t display_objid; //Connector Object ID or Misc Object ID 98062306a36Sopenharmony_ci uint16_t disp_recordoffset; 98162306a36Sopenharmony_ci uint16_t encoderobjid; //first encoder closer to the connector, could be either an external or intenal encoder 98262306a36Sopenharmony_ci uint16_t extencoderobjid; //2nd encoder after the first encoder, from the connector point of view; 98362306a36Sopenharmony_ci uint16_t encoder_recordoffset; 98462306a36Sopenharmony_ci uint16_t extencoder_recordoffset; 98562306a36Sopenharmony_ci uint16_t device_tag; //a supported device vector, each display path starts with this.the paths are enumerated in the way of priority, a path appears first 98662306a36Sopenharmony_ci uint8_t priority_id; 98762306a36Sopenharmony_ci uint8_t reserved; 98862306a36Sopenharmony_ci}; 98962306a36Sopenharmony_ci 99062306a36Sopenharmony_cistruct atom_display_object_path_v3 { 99162306a36Sopenharmony_ci uint16_t display_objid; //Connector Object ID or Misc Object ID 99262306a36Sopenharmony_ci uint16_t disp_recordoffset; 99362306a36Sopenharmony_ci uint16_t encoderobjid; //first encoder closer to the connector, could be either an external or intenal encoder 99462306a36Sopenharmony_ci uint16_t reserved1; //only on USBC case, otherwise always = 0 99562306a36Sopenharmony_ci uint16_t reserved2; //reserved and always = 0 99662306a36Sopenharmony_ci uint16_t reserved3; //reserved and always = 0 99762306a36Sopenharmony_ci //a supported device vector, each display path starts with this.the paths are enumerated in the way of priority, 99862306a36Sopenharmony_ci //a path appears first 99962306a36Sopenharmony_ci uint16_t device_tag; 100062306a36Sopenharmony_ci uint16_t reserved4; //reserved and always = 0 100162306a36Sopenharmony_ci}; 100262306a36Sopenharmony_ci 100362306a36Sopenharmony_cistruct display_object_info_table_v1_4 100462306a36Sopenharmony_ci{ 100562306a36Sopenharmony_ci struct atom_common_table_header table_header; 100662306a36Sopenharmony_ci uint16_t supporteddevices; 100762306a36Sopenharmony_ci uint8_t number_of_path; 100862306a36Sopenharmony_ci uint8_t reserved; 100962306a36Sopenharmony_ci struct atom_display_object_path_v2 display_path[8]; //the real number of this included in the structure is calculated by using the (whole structure size - the header size- number_of_path)/size of atom_display_object_path 101062306a36Sopenharmony_ci}; 101162306a36Sopenharmony_ci 101262306a36Sopenharmony_cistruct display_object_info_table_v1_5 { 101362306a36Sopenharmony_ci struct atom_common_table_header table_header; 101462306a36Sopenharmony_ci uint16_t supporteddevices; 101562306a36Sopenharmony_ci uint8_t number_of_path; 101662306a36Sopenharmony_ci uint8_t reserved; 101762306a36Sopenharmony_ci // the real number of this included in the structure is calculated by using the 101862306a36Sopenharmony_ci // (whole structure size - the header size- number_of_path)/size of atom_display_object_path 101962306a36Sopenharmony_ci struct atom_display_object_path_v3 display_path[8]; 102062306a36Sopenharmony_ci}; 102162306a36Sopenharmony_ci 102262306a36Sopenharmony_ci/* 102362306a36Sopenharmony_ci *************************************************************************** 102462306a36Sopenharmony_ci Data Table dce_info structure 102562306a36Sopenharmony_ci *************************************************************************** 102662306a36Sopenharmony_ci*/ 102762306a36Sopenharmony_cistruct atom_display_controller_info_v4_1 102862306a36Sopenharmony_ci{ 102962306a36Sopenharmony_ci struct atom_common_table_header table_header; 103062306a36Sopenharmony_ci uint32_t display_caps; 103162306a36Sopenharmony_ci uint32_t bootup_dispclk_10khz; 103262306a36Sopenharmony_ci uint16_t dce_refclk_10khz; 103362306a36Sopenharmony_ci uint16_t i2c_engine_refclk_10khz; 103462306a36Sopenharmony_ci uint16_t dvi_ss_percentage; // in unit of 0.001% 103562306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 103662306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; // in unit of 0.001% 103762306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 103862306a36Sopenharmony_ci uint16_t dp_ss_percentage; // in unit of 0.001% 103962306a36Sopenharmony_ci uint16_t dp_ss_rate_10hz; 104062306a36Sopenharmony_ci uint8_t dvi_ss_mode; // enum of atom_spread_spectrum_mode 104162306a36Sopenharmony_ci uint8_t hdmi_ss_mode; // enum of atom_spread_spectrum_mode 104262306a36Sopenharmony_ci uint8_t dp_ss_mode; // enum of atom_spread_spectrum_mode 104362306a36Sopenharmony_ci uint8_t ss_reserved; 104462306a36Sopenharmony_ci uint8_t hardcode_mode_num; // a hardcode mode number defined in StandardVESA_TimingTable when a CRT or DFP EDID is not available 104562306a36Sopenharmony_ci uint8_t reserved1[3]; 104662306a36Sopenharmony_ci uint16_t dpphy_refclk_10khz; 104762306a36Sopenharmony_ci uint16_t reserved2; 104862306a36Sopenharmony_ci uint8_t dceip_min_ver; 104962306a36Sopenharmony_ci uint8_t dceip_max_ver; 105062306a36Sopenharmony_ci uint8_t max_disp_pipe_num; 105162306a36Sopenharmony_ci uint8_t max_vbios_active_disp_pipe_num; 105262306a36Sopenharmony_ci uint8_t max_ppll_num; 105362306a36Sopenharmony_ci uint8_t max_disp_phy_num; 105462306a36Sopenharmony_ci uint8_t max_aux_pairs; 105562306a36Sopenharmony_ci uint8_t remotedisplayconfig; 105662306a36Sopenharmony_ci uint8_t reserved3[8]; 105762306a36Sopenharmony_ci}; 105862306a36Sopenharmony_ci 105962306a36Sopenharmony_cistruct atom_display_controller_info_v4_2 106062306a36Sopenharmony_ci{ 106162306a36Sopenharmony_ci struct atom_common_table_header table_header; 106262306a36Sopenharmony_ci uint32_t display_caps; 106362306a36Sopenharmony_ci uint32_t bootup_dispclk_10khz; 106462306a36Sopenharmony_ci uint16_t dce_refclk_10khz; 106562306a36Sopenharmony_ci uint16_t i2c_engine_refclk_10khz; 106662306a36Sopenharmony_ci uint16_t dvi_ss_percentage; // in unit of 0.001% 106762306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 106862306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; // in unit of 0.001% 106962306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 107062306a36Sopenharmony_ci uint16_t dp_ss_percentage; // in unit of 0.001% 107162306a36Sopenharmony_ci uint16_t dp_ss_rate_10hz; 107262306a36Sopenharmony_ci uint8_t dvi_ss_mode; // enum of atom_spread_spectrum_mode 107362306a36Sopenharmony_ci uint8_t hdmi_ss_mode; // enum of atom_spread_spectrum_mode 107462306a36Sopenharmony_ci uint8_t dp_ss_mode; // enum of atom_spread_spectrum_mode 107562306a36Sopenharmony_ci uint8_t ss_reserved; 107662306a36Sopenharmony_ci uint8_t dfp_hardcode_mode_num; // DFP hardcode mode number defined in StandardVESA_TimingTable when EDID is not available 107762306a36Sopenharmony_ci uint8_t dfp_hardcode_refreshrate;// DFP hardcode mode refreshrate defined in StandardVESA_TimingTable when EDID is not available 107862306a36Sopenharmony_ci uint8_t vga_hardcode_mode_num; // VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 107962306a36Sopenharmony_ci uint8_t vga_hardcode_refreshrate;// VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 108062306a36Sopenharmony_ci uint16_t dpphy_refclk_10khz; 108162306a36Sopenharmony_ci uint16_t reserved2; 108262306a36Sopenharmony_ci uint8_t dcnip_min_ver; 108362306a36Sopenharmony_ci uint8_t dcnip_max_ver; 108462306a36Sopenharmony_ci uint8_t max_disp_pipe_num; 108562306a36Sopenharmony_ci uint8_t max_vbios_active_disp_pipe_num; 108662306a36Sopenharmony_ci uint8_t max_ppll_num; 108762306a36Sopenharmony_ci uint8_t max_disp_phy_num; 108862306a36Sopenharmony_ci uint8_t max_aux_pairs; 108962306a36Sopenharmony_ci uint8_t remotedisplayconfig; 109062306a36Sopenharmony_ci uint8_t reserved3[8]; 109162306a36Sopenharmony_ci}; 109262306a36Sopenharmony_ci 109362306a36Sopenharmony_cistruct atom_display_controller_info_v4_3 109462306a36Sopenharmony_ci{ 109562306a36Sopenharmony_ci struct atom_common_table_header table_header; 109662306a36Sopenharmony_ci uint32_t display_caps; 109762306a36Sopenharmony_ci uint32_t bootup_dispclk_10khz; 109862306a36Sopenharmony_ci uint16_t dce_refclk_10khz; 109962306a36Sopenharmony_ci uint16_t i2c_engine_refclk_10khz; 110062306a36Sopenharmony_ci uint16_t dvi_ss_percentage; // in unit of 0.001% 110162306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 110262306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; // in unit of 0.001% 110362306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 110462306a36Sopenharmony_ci uint16_t dp_ss_percentage; // in unit of 0.001% 110562306a36Sopenharmony_ci uint16_t dp_ss_rate_10hz; 110662306a36Sopenharmony_ci uint8_t dvi_ss_mode; // enum of atom_spread_spectrum_mode 110762306a36Sopenharmony_ci uint8_t hdmi_ss_mode; // enum of atom_spread_spectrum_mode 110862306a36Sopenharmony_ci uint8_t dp_ss_mode; // enum of atom_spread_spectrum_mode 110962306a36Sopenharmony_ci uint8_t ss_reserved; 111062306a36Sopenharmony_ci uint8_t dfp_hardcode_mode_num; // DFP hardcode mode number defined in StandardVESA_TimingTable when EDID is not available 111162306a36Sopenharmony_ci uint8_t dfp_hardcode_refreshrate;// DFP hardcode mode refreshrate defined in StandardVESA_TimingTable when EDID is not available 111262306a36Sopenharmony_ci uint8_t vga_hardcode_mode_num; // VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 111362306a36Sopenharmony_ci uint8_t vga_hardcode_refreshrate;// VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 111462306a36Sopenharmony_ci uint16_t dpphy_refclk_10khz; 111562306a36Sopenharmony_ci uint16_t reserved2; 111662306a36Sopenharmony_ci uint8_t dcnip_min_ver; 111762306a36Sopenharmony_ci uint8_t dcnip_max_ver; 111862306a36Sopenharmony_ci uint8_t max_disp_pipe_num; 111962306a36Sopenharmony_ci uint8_t max_vbios_active_disp_pipe_num; 112062306a36Sopenharmony_ci uint8_t max_ppll_num; 112162306a36Sopenharmony_ci uint8_t max_disp_phy_num; 112262306a36Sopenharmony_ci uint8_t max_aux_pairs; 112362306a36Sopenharmony_ci uint8_t remotedisplayconfig; 112462306a36Sopenharmony_ci uint8_t reserved3[8]; 112562306a36Sopenharmony_ci}; 112662306a36Sopenharmony_ci 112762306a36Sopenharmony_cistruct atom_display_controller_info_v4_4 { 112862306a36Sopenharmony_ci struct atom_common_table_header table_header; 112962306a36Sopenharmony_ci uint32_t display_caps; 113062306a36Sopenharmony_ci uint32_t bootup_dispclk_10khz; 113162306a36Sopenharmony_ci uint16_t dce_refclk_10khz; 113262306a36Sopenharmony_ci uint16_t i2c_engine_refclk_10khz; 113362306a36Sopenharmony_ci uint16_t dvi_ss_percentage; // in unit of 0.001% 113462306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 113562306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; // in unit of 0.001% 113662306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 113762306a36Sopenharmony_ci uint16_t dp_ss_percentage; // in unit of 0.001% 113862306a36Sopenharmony_ci uint16_t dp_ss_rate_10hz; 113962306a36Sopenharmony_ci uint8_t dvi_ss_mode; // enum of atom_spread_spectrum_mode 114062306a36Sopenharmony_ci uint8_t hdmi_ss_mode; // enum of atom_spread_spectrum_mode 114162306a36Sopenharmony_ci uint8_t dp_ss_mode; // enum of atom_spread_spectrum_mode 114262306a36Sopenharmony_ci uint8_t ss_reserved; 114362306a36Sopenharmony_ci uint8_t dfp_hardcode_mode_num; // DFP hardcode mode number defined in StandardVESA_TimingTable when EDID is not available 114462306a36Sopenharmony_ci uint8_t dfp_hardcode_refreshrate;// DFP hardcode mode refreshrate defined in StandardVESA_TimingTable when EDID is not available 114562306a36Sopenharmony_ci uint8_t vga_hardcode_mode_num; // VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 114662306a36Sopenharmony_ci uint8_t vga_hardcode_refreshrate;// VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 114762306a36Sopenharmony_ci uint16_t dpphy_refclk_10khz; 114862306a36Sopenharmony_ci uint16_t hw_chip_id; 114962306a36Sopenharmony_ci uint8_t dcnip_min_ver; 115062306a36Sopenharmony_ci uint8_t dcnip_max_ver; 115162306a36Sopenharmony_ci uint8_t max_disp_pipe_num; 115262306a36Sopenharmony_ci uint8_t max_vbios_active_disp_pipum; 115362306a36Sopenharmony_ci uint8_t max_ppll_num; 115462306a36Sopenharmony_ci uint8_t max_disp_phy_num; 115562306a36Sopenharmony_ci uint8_t max_aux_pairs; 115662306a36Sopenharmony_ci uint8_t remotedisplayconfig; 115762306a36Sopenharmony_ci uint32_t dispclk_pll_vco_freq; 115862306a36Sopenharmony_ci uint32_t dp_ref_clk_freq; 115962306a36Sopenharmony_ci uint32_t max_mclk_chg_lat; // Worst case blackout duration for a memory clock frequency (p-state) change, units of 100s of ns (0.1 us) 116062306a36Sopenharmony_ci uint32_t max_sr_exit_lat; // Worst case memory self refresh exit time, units of 100ns of ns (0.1us) 116162306a36Sopenharmony_ci uint32_t max_sr_enter_exit_lat; // Worst case memory self refresh entry followed by immediate exit time, units of 100ns of ns (0.1us) 116262306a36Sopenharmony_ci uint16_t dc_golden_table_offset; // point of struct of atom_dc_golden_table_vxx 116362306a36Sopenharmony_ci uint16_t dc_golden_table_ver; 116462306a36Sopenharmony_ci uint32_t reserved3[3]; 116562306a36Sopenharmony_ci}; 116662306a36Sopenharmony_ci 116762306a36Sopenharmony_cistruct atom_dc_golden_table_v1 116862306a36Sopenharmony_ci{ 116962306a36Sopenharmony_ci uint32_t aux_dphy_rx_control0_val; 117062306a36Sopenharmony_ci uint32_t aux_dphy_tx_control_val; 117162306a36Sopenharmony_ci uint32_t aux_dphy_rx_control1_val; 117262306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_0_val; 117362306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_1_val; 117462306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_2_val; 117562306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_3_val; 117662306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_4_val; 117762306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_5_val; 117862306a36Sopenharmony_ci uint32_t reserved[23]; 117962306a36Sopenharmony_ci}; 118062306a36Sopenharmony_ci 118162306a36Sopenharmony_cienum dce_info_caps_def { 118262306a36Sopenharmony_ci // only for VBIOS 118362306a36Sopenharmony_ci DCE_INFO_CAPS_FORCE_DISPDEV_CONNECTED = 0x02, 118462306a36Sopenharmony_ci // only for VBIOS 118562306a36Sopenharmony_ci DCE_INFO_CAPS_DISABLE_DFP_DP_HBR2 = 0x04, 118662306a36Sopenharmony_ci // only for VBIOS 118762306a36Sopenharmony_ci DCE_INFO_CAPS_ENABLE_INTERLAC_TIMING = 0x08, 118862306a36Sopenharmony_ci // only for VBIOS 118962306a36Sopenharmony_ci DCE_INFO_CAPS_LTTPR_SUPPORT_ENABLE = 0x20, 119062306a36Sopenharmony_ci DCE_INFO_CAPS_VBIOS_LTTPR_TRANSPARENT_ENABLE = 0x40, 119162306a36Sopenharmony_ci}; 119262306a36Sopenharmony_ci 119362306a36Sopenharmony_cistruct atom_display_controller_info_v4_5 119462306a36Sopenharmony_ci{ 119562306a36Sopenharmony_ci struct atom_common_table_header table_header; 119662306a36Sopenharmony_ci uint32_t display_caps; 119762306a36Sopenharmony_ci uint32_t bootup_dispclk_10khz; 119862306a36Sopenharmony_ci uint16_t dce_refclk_10khz; 119962306a36Sopenharmony_ci uint16_t i2c_engine_refclk_10khz; 120062306a36Sopenharmony_ci uint16_t dvi_ss_percentage; // in unit of 0.001% 120162306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 120262306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; // in unit of 0.001% 120362306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 120462306a36Sopenharmony_ci uint16_t dp_ss_percentage; // in unit of 0.001% 120562306a36Sopenharmony_ci uint16_t dp_ss_rate_10hz; 120662306a36Sopenharmony_ci uint8_t dvi_ss_mode; // enum of atom_spread_spectrum_mode 120762306a36Sopenharmony_ci uint8_t hdmi_ss_mode; // enum of atom_spread_spectrum_mode 120862306a36Sopenharmony_ci uint8_t dp_ss_mode; // enum of atom_spread_spectrum_mode 120962306a36Sopenharmony_ci uint8_t ss_reserved; 121062306a36Sopenharmony_ci // DFP hardcode mode number defined in StandardVESA_TimingTable when EDID is not available 121162306a36Sopenharmony_ci uint8_t dfp_hardcode_mode_num; 121262306a36Sopenharmony_ci // DFP hardcode mode refreshrate defined in StandardVESA_TimingTable when EDID is not available 121362306a36Sopenharmony_ci uint8_t dfp_hardcode_refreshrate; 121462306a36Sopenharmony_ci // VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 121562306a36Sopenharmony_ci uint8_t vga_hardcode_mode_num; 121662306a36Sopenharmony_ci // VGA hardcode mode number defined in StandardVESA_TimingTable when EDID is not avablable 121762306a36Sopenharmony_ci uint8_t vga_hardcode_refreshrate; 121862306a36Sopenharmony_ci uint16_t dpphy_refclk_10khz; 121962306a36Sopenharmony_ci uint16_t hw_chip_id; 122062306a36Sopenharmony_ci uint8_t dcnip_min_ver; 122162306a36Sopenharmony_ci uint8_t dcnip_max_ver; 122262306a36Sopenharmony_ci uint8_t max_disp_pipe_num; 122362306a36Sopenharmony_ci uint8_t max_vbios_active_disp_pipe_num; 122462306a36Sopenharmony_ci uint8_t max_ppll_num; 122562306a36Sopenharmony_ci uint8_t max_disp_phy_num; 122662306a36Sopenharmony_ci uint8_t max_aux_pairs; 122762306a36Sopenharmony_ci uint8_t remotedisplayconfig; 122862306a36Sopenharmony_ci uint32_t dispclk_pll_vco_freq; 122962306a36Sopenharmony_ci uint32_t dp_ref_clk_freq; 123062306a36Sopenharmony_ci // Worst case blackout duration for a memory clock frequency (p-state) change, units of 100s of ns (0.1 us) 123162306a36Sopenharmony_ci uint32_t max_mclk_chg_lat; 123262306a36Sopenharmony_ci // Worst case memory self refresh exit time, units of 100ns of ns (0.1us) 123362306a36Sopenharmony_ci uint32_t max_sr_exit_lat; 123462306a36Sopenharmony_ci // Worst case memory self refresh entry followed by immediate exit time, units of 100ns of ns (0.1us) 123562306a36Sopenharmony_ci uint32_t max_sr_enter_exit_lat; 123662306a36Sopenharmony_ci uint16_t dc_golden_table_offset; // point of struct of atom_dc_golden_table_vxx 123762306a36Sopenharmony_ci uint16_t dc_golden_table_ver; 123862306a36Sopenharmony_ci uint32_t aux_dphy_rx_control0_val; 123962306a36Sopenharmony_ci uint32_t aux_dphy_tx_control_val; 124062306a36Sopenharmony_ci uint32_t aux_dphy_rx_control1_val; 124162306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_0_val; 124262306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_1_val; 124362306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_2_val; 124462306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_3_val; 124562306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_4_val; 124662306a36Sopenharmony_ci uint32_t dc_gpio_aux_ctrl_5_val; 124762306a36Sopenharmony_ci uint32_t reserved[26]; 124862306a36Sopenharmony_ci}; 124962306a36Sopenharmony_ci 125062306a36Sopenharmony_ci/* 125162306a36Sopenharmony_ci *************************************************************************** 125262306a36Sopenharmony_ci Data Table ATOM_EXTERNAL_DISPLAY_CONNECTION_INFO structure 125362306a36Sopenharmony_ci *************************************************************************** 125462306a36Sopenharmony_ci*/ 125562306a36Sopenharmony_cistruct atom_ext_display_path 125662306a36Sopenharmony_ci{ 125762306a36Sopenharmony_ci uint16_t device_tag; //A bit vector to show what devices are supported 125862306a36Sopenharmony_ci uint16_t device_acpi_enum; //16bit device ACPI id. 125962306a36Sopenharmony_ci uint16_t connectorobjid; //A physical connector for displays to plug in, using object connector definitions 126062306a36Sopenharmony_ci uint8_t auxddclut_index; //An index into external AUX/DDC channel LUT 126162306a36Sopenharmony_ci uint8_t hpdlut_index; //An index into external HPD pin LUT 126262306a36Sopenharmony_ci uint16_t ext_encoder_objid; //external encoder object id 126362306a36Sopenharmony_ci uint8_t channelmapping; // if ucChannelMapping=0, using default one to one mapping 126462306a36Sopenharmony_ci uint8_t chpninvert; // bit vector for up to 8 lanes, =0: P and N is not invert, =1 P and N is inverted 126562306a36Sopenharmony_ci uint16_t caps; 126662306a36Sopenharmony_ci uint16_t reserved; 126762306a36Sopenharmony_ci}; 126862306a36Sopenharmony_ci 126962306a36Sopenharmony_ci//usCaps 127062306a36Sopenharmony_cienum ext_display_path_cap_def { 127162306a36Sopenharmony_ci EXT_DISPLAY_PATH_CAPS__HBR2_DISABLE = 0x0001, 127262306a36Sopenharmony_ci EXT_DISPLAY_PATH_CAPS__DP_FIXED_VS_EN = 0x0002, 127362306a36Sopenharmony_ci EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK = 0x007C, 127462306a36Sopenharmony_ci EXT_DISPLAY_PATH_CAPS__HDMI20_PI3EQX1204 = (0x01 << 2), //PI redriver chip 127562306a36Sopenharmony_ci EXT_DISPLAY_PATH_CAPS__HDMI20_TISN65DP159RSBT = (0x02 << 2), //TI retimer chip 127662306a36Sopenharmony_ci EXT_DISPLAY_PATH_CAPS__HDMI20_PARADE_PS175 = (0x03 << 2) //Parade DP->HDMI recoverter chip 127762306a36Sopenharmony_ci}; 127862306a36Sopenharmony_ci 127962306a36Sopenharmony_cistruct atom_external_display_connection_info 128062306a36Sopenharmony_ci{ 128162306a36Sopenharmony_ci struct atom_common_table_header table_header; 128262306a36Sopenharmony_ci uint8_t guid[16]; // a GUID is a 16 byte long string 128362306a36Sopenharmony_ci struct atom_ext_display_path path[7]; // total of fixed 7 entries. 128462306a36Sopenharmony_ci uint8_t checksum; // a simple Checksum of the sum of whole structure equal to 0x0. 128562306a36Sopenharmony_ci uint8_t stereopinid; // use for eDP panel 128662306a36Sopenharmony_ci uint8_t remotedisplayconfig; 128762306a36Sopenharmony_ci uint8_t edptolvdsrxid; 128862306a36Sopenharmony_ci uint8_t fixdpvoltageswing; // usCaps[1]=1, this indicate DP_LANE_SET value 128962306a36Sopenharmony_ci uint8_t reserved[3]; // for potential expansion 129062306a36Sopenharmony_ci}; 129162306a36Sopenharmony_ci 129262306a36Sopenharmony_ci/* 129362306a36Sopenharmony_ci *************************************************************************** 129462306a36Sopenharmony_ci Data Table integratedsysteminfo structure 129562306a36Sopenharmony_ci *************************************************************************** 129662306a36Sopenharmony_ci*/ 129762306a36Sopenharmony_ci 129862306a36Sopenharmony_cistruct atom_camera_dphy_timing_param 129962306a36Sopenharmony_ci{ 130062306a36Sopenharmony_ci uint8_t profile_id; // SENSOR_PROFILES 130162306a36Sopenharmony_ci uint32_t param; 130262306a36Sopenharmony_ci}; 130362306a36Sopenharmony_ci 130462306a36Sopenharmony_cistruct atom_camera_dphy_elec_param 130562306a36Sopenharmony_ci{ 130662306a36Sopenharmony_ci uint16_t param[3]; 130762306a36Sopenharmony_ci}; 130862306a36Sopenharmony_ci 130962306a36Sopenharmony_cistruct atom_camera_module_info 131062306a36Sopenharmony_ci{ 131162306a36Sopenharmony_ci uint8_t module_id; // 0: Rear, 1: Front right of user, 2: Front left of user 131262306a36Sopenharmony_ci uint8_t module_name[8]; 131362306a36Sopenharmony_ci struct atom_camera_dphy_timing_param timingparam[6]; // Exact number is under estimation and confirmation from sensor vendor 131462306a36Sopenharmony_ci}; 131562306a36Sopenharmony_ci 131662306a36Sopenharmony_cistruct atom_camera_flashlight_info 131762306a36Sopenharmony_ci{ 131862306a36Sopenharmony_ci uint8_t flashlight_id; // 0: Rear, 1: Front 131962306a36Sopenharmony_ci uint8_t name[8]; 132062306a36Sopenharmony_ci}; 132162306a36Sopenharmony_ci 132262306a36Sopenharmony_cistruct atom_camera_data 132362306a36Sopenharmony_ci{ 132462306a36Sopenharmony_ci uint32_t versionCode; 132562306a36Sopenharmony_ci struct atom_camera_module_info cameraInfo[3]; // Assuming 3 camera sensors max 132662306a36Sopenharmony_ci struct atom_camera_flashlight_info flashInfo; // Assuming 1 flashlight max 132762306a36Sopenharmony_ci struct atom_camera_dphy_elec_param dphy_param; 132862306a36Sopenharmony_ci uint32_t crc_val; // CRC 132962306a36Sopenharmony_ci}; 133062306a36Sopenharmony_ci 133162306a36Sopenharmony_ci 133262306a36Sopenharmony_cistruct atom_14nm_dpphy_dvihdmi_tuningset 133362306a36Sopenharmony_ci{ 133462306a36Sopenharmony_ci uint32_t max_symclk_in10khz; 133562306a36Sopenharmony_ci uint8_t encoder_mode; //atom_encode_mode_def, =2: DVI, =3: HDMI mode 133662306a36Sopenharmony_ci uint8_t phy_sel; //bit vector of phy, bit0= phya, bit1=phyb, ....bit5 = phyf 133762306a36Sopenharmony_ci uint16_t margindeemph; //COMMON_MAR_DEEMPH_NOM[7:0]tx_margin_nom [15:8]deemph_gen1_nom 133862306a36Sopenharmony_ci uint8_t deemph_6db_4; //COMMON_SELDEEMPH60[31:24]deemph_6db_4 133962306a36Sopenharmony_ci uint8_t boostadj; //CMD_BUS_GLOBAL_FOR_TX_LANE0 [19:16]tx_boost_adj [20]tx_boost_en [23:22]tx_binary_ron_code_offset 134062306a36Sopenharmony_ci uint8_t tx_driver_fifty_ohms; //COMMON_ZCALCODE_CTRL[21].tx_driver_fifty_ohms 134162306a36Sopenharmony_ci uint8_t deemph_sel; //MARGIN_DEEMPH_LANE0.DEEMPH_SEL 134262306a36Sopenharmony_ci}; 134362306a36Sopenharmony_ci 134462306a36Sopenharmony_cistruct atom_14nm_dpphy_dp_setting{ 134562306a36Sopenharmony_ci uint8_t dp_vs_pemph_level; //enum of atom_dp_vs_preemph_def 134662306a36Sopenharmony_ci uint16_t margindeemph; //COMMON_MAR_DEEMPH_NOM[7:0]tx_margin_nom [15:8]deemph_gen1_nom 134762306a36Sopenharmony_ci uint8_t deemph_6db_4; //COMMON_SELDEEMPH60[31:24]deemph_6db_4 134862306a36Sopenharmony_ci uint8_t boostadj; //CMD_BUS_GLOBAL_FOR_TX_LANE0 [19:16]tx_boost_adj [20]tx_boost_en [23:22]tx_binary_ron_code_offset 134962306a36Sopenharmony_ci}; 135062306a36Sopenharmony_ci 135162306a36Sopenharmony_cistruct atom_14nm_dpphy_dp_tuningset{ 135262306a36Sopenharmony_ci uint8_t phy_sel; // bit vector of phy, bit0= phya, bit1=phyb, ....bit5 = phyf 135362306a36Sopenharmony_ci uint8_t version; 135462306a36Sopenharmony_ci uint16_t table_size; // size of atom_14nm_dpphy_dp_tuningset 135562306a36Sopenharmony_ci uint16_t reserved; 135662306a36Sopenharmony_ci struct atom_14nm_dpphy_dp_setting dptuning[10]; 135762306a36Sopenharmony_ci}; 135862306a36Sopenharmony_ci 135962306a36Sopenharmony_cistruct atom_14nm_dig_transmitter_info_header_v4_0{ 136062306a36Sopenharmony_ci struct atom_common_table_header table_header; 136162306a36Sopenharmony_ci uint16_t pcie_phy_tmds_hdmi_macro_settings_offset; // offset of PCIEPhyTMDSHDMIMacroSettingsTbl 136262306a36Sopenharmony_ci uint16_t uniphy_vs_emph_lookup_table_offset; // offset of UniphyVSEmphLookUpTbl 136362306a36Sopenharmony_ci uint16_t uniphy_xbar_settings_table_offset; // offset of UniphyXbarSettingsTbl 136462306a36Sopenharmony_ci}; 136562306a36Sopenharmony_ci 136662306a36Sopenharmony_cistruct atom_14nm_combphy_tmds_vs_set 136762306a36Sopenharmony_ci{ 136862306a36Sopenharmony_ci uint8_t sym_clk; 136962306a36Sopenharmony_ci uint8_t dig_mode; 137062306a36Sopenharmony_ci uint8_t phy_sel; 137162306a36Sopenharmony_ci uint16_t common_mar_deemph_nom__margin_deemph_val; 137262306a36Sopenharmony_ci uint8_t common_seldeemph60__deemph_6db_4_val; 137362306a36Sopenharmony_ci uint8_t cmd_bus_global_for_tx_lane0__boostadj_val ; 137462306a36Sopenharmony_ci uint8_t common_zcalcode_ctrl__tx_driver_fifty_ohms_val; 137562306a36Sopenharmony_ci uint8_t margin_deemph_lane0__deemph_sel_val; 137662306a36Sopenharmony_ci}; 137762306a36Sopenharmony_ci 137862306a36Sopenharmony_cistruct atom_DCN_dpphy_dvihdmi_tuningset 137962306a36Sopenharmony_ci{ 138062306a36Sopenharmony_ci uint32_t max_symclk_in10khz; 138162306a36Sopenharmony_ci uint8_t encoder_mode; //atom_encode_mode_def, =2: DVI, =3: HDMI mode 138262306a36Sopenharmony_ci uint8_t phy_sel; //bit vector of phy, bit0= phya, bit1=phyb, ....bit5 = phyf 138362306a36Sopenharmony_ci uint8_t tx_eq_main; // map to RDPCSTX_PHY_FUSE0/1/2/3[5:0](EQ_MAIN) 138462306a36Sopenharmony_ci uint8_t tx_eq_pre; // map to RDPCSTX_PHY_FUSE0/1/2/3[11:6](EQ_PRE) 138562306a36Sopenharmony_ci uint8_t tx_eq_post; // map to RDPCSTX_PHY_FUSE0/1/2/3[17:12](EQ_POST) 138662306a36Sopenharmony_ci uint8_t reserved1; 138762306a36Sopenharmony_ci uint8_t tx_vboost_lvl; // tx_vboost_lvl, map to RDPCSTX_PHY_CNTL0.RDPCS_PHY_TX_VBOOST_LVL 138862306a36Sopenharmony_ci uint8_t reserved2; 138962306a36Sopenharmony_ci}; 139062306a36Sopenharmony_ci 139162306a36Sopenharmony_cistruct atom_DCN_dpphy_dp_setting{ 139262306a36Sopenharmony_ci uint8_t dp_vs_pemph_level; //enum of atom_dp_vs_preemph_def 139362306a36Sopenharmony_ci uint8_t tx_eq_main; // map to RDPCSTX_PHY_FUSE0/1/2/3[5:0](EQ_MAIN) 139462306a36Sopenharmony_ci uint8_t tx_eq_pre; // map to RDPCSTX_PHY_FUSE0/1/2/3[11:6](EQ_PRE) 139562306a36Sopenharmony_ci uint8_t tx_eq_post; // map to RDPCSTX_PHY_FUSE0/1/2/3[17:12](EQ_POST) 139662306a36Sopenharmony_ci uint8_t tx_vboost_lvl; // tx_vboost_lvl, map to RDPCSTX_PHY_CNTL0.RDPCS_PHY_TX_VBOOST_LVL 139762306a36Sopenharmony_ci}; 139862306a36Sopenharmony_ci 139962306a36Sopenharmony_cistruct atom_DCN_dpphy_dp_tuningset{ 140062306a36Sopenharmony_ci uint8_t phy_sel; // bit vector of phy, bit0= phya, bit1=phyb, ....bit5 = phyf 140162306a36Sopenharmony_ci uint8_t version; 140262306a36Sopenharmony_ci uint16_t table_size; // size of atom_14nm_dpphy_dp_setting 140362306a36Sopenharmony_ci uint16_t reserved; 140462306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_setting dptunings[10]; 140562306a36Sopenharmony_ci}; 140662306a36Sopenharmony_ci 140762306a36Sopenharmony_cistruct atom_i2c_reg_info { 140862306a36Sopenharmony_ci uint8_t ucI2cRegIndex; 140962306a36Sopenharmony_ci uint8_t ucI2cRegVal; 141062306a36Sopenharmony_ci}; 141162306a36Sopenharmony_ci 141262306a36Sopenharmony_cistruct atom_hdmi_retimer_redriver_set { 141362306a36Sopenharmony_ci uint8_t HdmiSlvAddr; 141462306a36Sopenharmony_ci uint8_t HdmiRegNum; 141562306a36Sopenharmony_ci uint8_t Hdmi6GRegNum; 141662306a36Sopenharmony_ci struct atom_i2c_reg_info HdmiRegSetting[9]; //For non 6G Hz use 141762306a36Sopenharmony_ci struct atom_i2c_reg_info Hdmi6GhzRegSetting[3]; //For 6G Hz use. 141862306a36Sopenharmony_ci}; 141962306a36Sopenharmony_ci 142062306a36Sopenharmony_cistruct atom_integrated_system_info_v1_11 142162306a36Sopenharmony_ci{ 142262306a36Sopenharmony_ci struct atom_common_table_header table_header; 142362306a36Sopenharmony_ci uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def 142462306a36Sopenharmony_ci uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def 142562306a36Sopenharmony_ci uint32_t system_config; 142662306a36Sopenharmony_ci uint32_t cpucapinfo; 142762306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1% 142862306a36Sopenharmony_ci uint16_t gpuclk_ss_type; 142962306a36Sopenharmony_ci uint16_t lvds_ss_percentage; //unit of 0.001%, 1000 mean 1% 143062306a36Sopenharmony_ci uint16_t lvds_ss_rate_10hz; 143162306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; //unit of 0.001%, 1000 mean 1% 143262306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 143362306a36Sopenharmony_ci uint16_t dvi_ss_percentage; //unit of 0.001%, 1000 mean 1% 143462306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 143562306a36Sopenharmony_ci uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def 143662306a36Sopenharmony_ci uint16_t lvds_misc; // enum of atom_sys_info_lvds_misc_def 143762306a36Sopenharmony_ci uint16_t backlight_pwm_hz; // pwm frequency in hz 143862306a36Sopenharmony_ci uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication. 143962306a36Sopenharmony_ci uint8_t umachannelnumber; // number of memory channels 144062306a36Sopenharmony_ci uint8_t pwr_on_digon_to_de; /* all pwr sequence numbers below are in uint of 4ms */ 144162306a36Sopenharmony_ci uint8_t pwr_on_de_to_vary_bl; 144262306a36Sopenharmony_ci uint8_t pwr_down_vary_bloff_to_de; 144362306a36Sopenharmony_ci uint8_t pwr_down_de_to_digoff; 144462306a36Sopenharmony_ci uint8_t pwr_off_delay; 144562306a36Sopenharmony_ci uint8_t pwr_on_vary_bl_to_blon; 144662306a36Sopenharmony_ci uint8_t pwr_down_bloff_to_vary_bloff; 144762306a36Sopenharmony_ci uint8_t min_allowed_bl_level; 144862306a36Sopenharmony_ci uint8_t htc_hyst_limit; 144962306a36Sopenharmony_ci uint8_t htc_tmp_limit; 145062306a36Sopenharmony_ci uint8_t reserved1; 145162306a36Sopenharmony_ci uint8_t reserved2; 145262306a36Sopenharmony_ci struct atom_external_display_connection_info extdispconninfo; 145362306a36Sopenharmony_ci struct atom_14nm_dpphy_dvihdmi_tuningset dvi_tuningset; 145462306a36Sopenharmony_ci struct atom_14nm_dpphy_dvihdmi_tuningset hdmi_tuningset; 145562306a36Sopenharmony_ci struct atom_14nm_dpphy_dvihdmi_tuningset hdmi6g_tuningset; 145662306a36Sopenharmony_ci struct atom_14nm_dpphy_dp_tuningset dp_tuningset; // rbr 1.62G dp tuning set 145762306a36Sopenharmony_ci struct atom_14nm_dpphy_dp_tuningset dp_hbr3_tuningset; // HBR3 dp tuning set 145862306a36Sopenharmony_ci struct atom_camera_data camera_info; 145962306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp0_retimer_set; //for DP0 146062306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp1_retimer_set; //for DP1 146162306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp2_retimer_set; //for DP2 146262306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp3_retimer_set; //for DP3 146362306a36Sopenharmony_ci struct atom_14nm_dpphy_dp_tuningset dp_hbr_tuningset; //hbr 2.7G dp tuning set 146462306a36Sopenharmony_ci struct atom_14nm_dpphy_dp_tuningset dp_hbr2_tuningset; //hbr2 5.4G dp turnig set 146562306a36Sopenharmony_ci struct atom_14nm_dpphy_dp_tuningset edp_tuningset; //edp tuning set 146662306a36Sopenharmony_ci uint32_t reserved[66]; 146762306a36Sopenharmony_ci}; 146862306a36Sopenharmony_ci 146962306a36Sopenharmony_cistruct atom_integrated_system_info_v1_12 147062306a36Sopenharmony_ci{ 147162306a36Sopenharmony_ci struct atom_common_table_header table_header; 147262306a36Sopenharmony_ci uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def 147362306a36Sopenharmony_ci uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def 147462306a36Sopenharmony_ci uint32_t system_config; 147562306a36Sopenharmony_ci uint32_t cpucapinfo; 147662306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1% 147762306a36Sopenharmony_ci uint16_t gpuclk_ss_type; 147862306a36Sopenharmony_ci uint16_t lvds_ss_percentage; //unit of 0.001%, 1000 mean 1% 147962306a36Sopenharmony_ci uint16_t lvds_ss_rate_10hz; 148062306a36Sopenharmony_ci uint16_t hdmi_ss_percentage; //unit of 0.001%, 1000 mean 1% 148162306a36Sopenharmony_ci uint16_t hdmi_ss_rate_10hz; 148262306a36Sopenharmony_ci uint16_t dvi_ss_percentage; //unit of 0.001%, 1000 mean 1% 148362306a36Sopenharmony_ci uint16_t dvi_ss_rate_10hz; 148462306a36Sopenharmony_ci uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def 148562306a36Sopenharmony_ci uint16_t lvds_misc; // enum of atom_sys_info_lvds_misc_def 148662306a36Sopenharmony_ci uint16_t backlight_pwm_hz; // pwm frequency in hz 148762306a36Sopenharmony_ci uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication. 148862306a36Sopenharmony_ci uint8_t umachannelnumber; // number of memory channels 148962306a36Sopenharmony_ci uint8_t pwr_on_digon_to_de; // all pwr sequence numbers below are in uint of 4ms // 149062306a36Sopenharmony_ci uint8_t pwr_on_de_to_vary_bl; 149162306a36Sopenharmony_ci uint8_t pwr_down_vary_bloff_to_de; 149262306a36Sopenharmony_ci uint8_t pwr_down_de_to_digoff; 149362306a36Sopenharmony_ci uint8_t pwr_off_delay; 149462306a36Sopenharmony_ci uint8_t pwr_on_vary_bl_to_blon; 149562306a36Sopenharmony_ci uint8_t pwr_down_bloff_to_vary_bloff; 149662306a36Sopenharmony_ci uint8_t min_allowed_bl_level; 149762306a36Sopenharmony_ci uint8_t htc_hyst_limit; 149862306a36Sopenharmony_ci uint8_t htc_tmp_limit; 149962306a36Sopenharmony_ci uint8_t reserved1; 150062306a36Sopenharmony_ci uint8_t reserved2; 150162306a36Sopenharmony_ci struct atom_external_display_connection_info extdispconninfo; 150262306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset TMDS_tuningset; 150362306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK5_tuningset; 150462306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK8_tuningset; 150562306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset rbr_tuningset; // rbr 1.62G dp tuning set 150662306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset hbr3_tuningset; // HBR3 dp tuning set 150762306a36Sopenharmony_ci struct atom_camera_data camera_info; 150862306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp0_retimer_set; //for DP0 150962306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp1_retimer_set; //for DP1 151062306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp2_retimer_set; //for DP2 151162306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp3_retimer_set; //for DP3 151262306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset hbr_tuningset; //hbr 2.7G dp tuning set 151362306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset hbr2_tuningset; //hbr2 5.4G dp turnig set 151462306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset edp_tunings; //edp tuning set 151562306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK6_tuningset; 151662306a36Sopenharmony_ci uint32_t reserved[63]; 151762306a36Sopenharmony_ci}; 151862306a36Sopenharmony_ci 151962306a36Sopenharmony_cistruct edp_info_table 152062306a36Sopenharmony_ci{ 152162306a36Sopenharmony_ci uint16_t edp_backlight_pwm_hz; 152262306a36Sopenharmony_ci uint16_t edp_ss_percentage; 152362306a36Sopenharmony_ci uint16_t edp_ss_rate_10hz; 152462306a36Sopenharmony_ci uint16_t reserved1; 152562306a36Sopenharmony_ci uint32_t reserved2; 152662306a36Sopenharmony_ci uint8_t edp_pwr_on_off_delay; 152762306a36Sopenharmony_ci uint8_t edp_pwr_on_vary_bl_to_blon; 152862306a36Sopenharmony_ci uint8_t edp_pwr_down_bloff_to_vary_bloff; 152962306a36Sopenharmony_ci uint8_t edp_panel_bpc; 153062306a36Sopenharmony_ci uint8_t edp_bootup_bl_level; 153162306a36Sopenharmony_ci uint8_t reserved3[3]; 153262306a36Sopenharmony_ci uint32_t reserved4[3]; 153362306a36Sopenharmony_ci}; 153462306a36Sopenharmony_ci 153562306a36Sopenharmony_cistruct atom_integrated_system_info_v2_1 153662306a36Sopenharmony_ci{ 153762306a36Sopenharmony_ci struct atom_common_table_header table_header; 153862306a36Sopenharmony_ci uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def 153962306a36Sopenharmony_ci uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def 154062306a36Sopenharmony_ci uint32_t system_config; 154162306a36Sopenharmony_ci uint32_t cpucapinfo; 154262306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1% 154362306a36Sopenharmony_ci uint16_t gpuclk_ss_type; 154462306a36Sopenharmony_ci uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def 154562306a36Sopenharmony_ci uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication. 154662306a36Sopenharmony_ci uint8_t umachannelnumber; // number of memory channels 154762306a36Sopenharmony_ci uint8_t htc_hyst_limit; 154862306a36Sopenharmony_ci uint8_t htc_tmp_limit; 154962306a36Sopenharmony_ci uint8_t reserved1; 155062306a36Sopenharmony_ci uint8_t reserved2; 155162306a36Sopenharmony_ci struct edp_info_table edp1_info; 155262306a36Sopenharmony_ci struct edp_info_table edp2_info; 155362306a36Sopenharmony_ci uint32_t reserved3[8]; 155462306a36Sopenharmony_ci struct atom_external_display_connection_info extdispconninfo; 155562306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset TMDS_tuningset; 155662306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK5_tuningset; //add clk6 155762306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK6_tuningset; 155862306a36Sopenharmony_ci struct atom_DCN_dpphy_dvihdmi_tuningset hdmiCLK8_tuningset; 155962306a36Sopenharmony_ci uint32_t reserved4[6];//reserve 2*sizeof(atom_DCN_dpphy_dvihdmi_tuningset) 156062306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset rbr_tuningset; // rbr 1.62G dp tuning set 156162306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset hbr_tuningset; //hbr 2.7G dp tuning set 156262306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset hbr2_tuningset; //hbr2 5.4G dp turnig set 156362306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset hbr3_tuningset; // HBR3 dp tuning set 156462306a36Sopenharmony_ci struct atom_DCN_dpphy_dp_tuningset edp_tunings; //edp tuning set 156562306a36Sopenharmony_ci uint32_t reserved5[28];//reserve 2*sizeof(atom_DCN_dpphy_dp_tuningset) 156662306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp0_retimer_set; //for DP0 156762306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp1_retimer_set; //for DP1 156862306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp2_retimer_set; //for DP2 156962306a36Sopenharmony_ci struct atom_hdmi_retimer_redriver_set dp3_retimer_set; //for DP3 157062306a36Sopenharmony_ci uint32_t reserved6[30];// reserve size of(atom_camera_data) for camera_info 157162306a36Sopenharmony_ci uint32_t reserved7[32]; 157262306a36Sopenharmony_ci 157362306a36Sopenharmony_ci}; 157462306a36Sopenharmony_ci 157562306a36Sopenharmony_cistruct atom_n6_display_phy_tuning_set { 157662306a36Sopenharmony_ci uint8_t display_signal_type; 157762306a36Sopenharmony_ci uint8_t phy_sel; 157862306a36Sopenharmony_ci uint8_t preset_level; 157962306a36Sopenharmony_ci uint8_t reserved1; 158062306a36Sopenharmony_ci uint32_t reserved2; 158162306a36Sopenharmony_ci uint32_t speed_upto; 158262306a36Sopenharmony_ci uint8_t tx_vboost_level; 158362306a36Sopenharmony_ci uint8_t tx_vreg_v2i; 158462306a36Sopenharmony_ci uint8_t tx_vregdrv_byp; 158562306a36Sopenharmony_ci uint8_t tx_term_cntl; 158662306a36Sopenharmony_ci uint8_t tx_peak_level; 158762306a36Sopenharmony_ci uint8_t tx_slew_en; 158862306a36Sopenharmony_ci uint8_t tx_eq_pre; 158962306a36Sopenharmony_ci uint8_t tx_eq_main; 159062306a36Sopenharmony_ci uint8_t tx_eq_post; 159162306a36Sopenharmony_ci uint8_t tx_en_inv_pre; 159262306a36Sopenharmony_ci uint8_t tx_en_inv_post; 159362306a36Sopenharmony_ci uint8_t reserved3; 159462306a36Sopenharmony_ci uint32_t reserved4; 159562306a36Sopenharmony_ci uint32_t reserved5; 159662306a36Sopenharmony_ci uint32_t reserved6; 159762306a36Sopenharmony_ci}; 159862306a36Sopenharmony_ci 159962306a36Sopenharmony_cistruct atom_display_phy_tuning_info { 160062306a36Sopenharmony_ci struct atom_common_table_header table_header; 160162306a36Sopenharmony_ci struct atom_n6_display_phy_tuning_set disp_phy_tuning[1]; 160262306a36Sopenharmony_ci}; 160362306a36Sopenharmony_ci 160462306a36Sopenharmony_cistruct atom_integrated_system_info_v2_2 160562306a36Sopenharmony_ci{ 160662306a36Sopenharmony_ci struct atom_common_table_header table_header; 160762306a36Sopenharmony_ci uint32_t vbios_misc; //enum of atom_system_vbiosmisc_def 160862306a36Sopenharmony_ci uint32_t gpucapinfo; //enum of atom_system_gpucapinf_def 160962306a36Sopenharmony_ci uint32_t system_config; 161062306a36Sopenharmony_ci uint32_t cpucapinfo; 161162306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; //unit of 0.001%, 1000 mean 1% 161262306a36Sopenharmony_ci uint16_t gpuclk_ss_type; 161362306a36Sopenharmony_ci uint16_t dpphy_override; // bit vector, enum of atom_sysinfo_dpphy_override_def 161462306a36Sopenharmony_ci uint8_t memorytype; // enum of atom_dmi_t17_mem_type_def, APU memory type indication. 161562306a36Sopenharmony_ci uint8_t umachannelnumber; // number of memory channels 161662306a36Sopenharmony_ci uint8_t htc_hyst_limit; 161762306a36Sopenharmony_ci uint8_t htc_tmp_limit; 161862306a36Sopenharmony_ci uint8_t reserved1; 161962306a36Sopenharmony_ci uint8_t reserved2; 162062306a36Sopenharmony_ci struct edp_info_table edp1_info; 162162306a36Sopenharmony_ci struct edp_info_table edp2_info; 162262306a36Sopenharmony_ci uint32_t reserved3[8]; 162362306a36Sopenharmony_ci struct atom_external_display_connection_info extdispconninfo; 162462306a36Sopenharmony_ci 162562306a36Sopenharmony_ci uint32_t reserved4[189]; 162662306a36Sopenharmony_ci}; 162762306a36Sopenharmony_ci 162862306a36Sopenharmony_ci// system_config 162962306a36Sopenharmony_cienum atom_system_vbiosmisc_def{ 163062306a36Sopenharmony_ci INTEGRATED_SYSTEM_INFO__GET_EDID_CALLBACK_FUNC_SUPPORT = 0x01, 163162306a36Sopenharmony_ci}; 163262306a36Sopenharmony_ci 163362306a36Sopenharmony_ci 163462306a36Sopenharmony_ci// gpucapinfo 163562306a36Sopenharmony_cienum atom_system_gpucapinf_def{ 163662306a36Sopenharmony_ci SYS_INFO_GPUCAPS__ENABEL_DFS_BYPASS = 0x10, 163762306a36Sopenharmony_ci}; 163862306a36Sopenharmony_ci 163962306a36Sopenharmony_ci//dpphy_override 164062306a36Sopenharmony_cienum atom_sysinfo_dpphy_override_def{ 164162306a36Sopenharmony_ci ATOM_ENABLE_DVI_TUNINGSET = 0x01, 164262306a36Sopenharmony_ci ATOM_ENABLE_HDMI_TUNINGSET = 0x02, 164362306a36Sopenharmony_ci ATOM_ENABLE_HDMI6G_TUNINGSET = 0x04, 164462306a36Sopenharmony_ci ATOM_ENABLE_DP_TUNINGSET = 0x08, 164562306a36Sopenharmony_ci ATOM_ENABLE_DP_HBR3_TUNINGSET = 0x10, 164662306a36Sopenharmony_ci}; 164762306a36Sopenharmony_ci 164862306a36Sopenharmony_ci//lvds_misc 164962306a36Sopenharmony_cienum atom_sys_info_lvds_misc_def 165062306a36Sopenharmony_ci{ 165162306a36Sopenharmony_ci SYS_INFO_LVDS_MISC_888_FPDI_MODE =0x01, 165262306a36Sopenharmony_ci SYS_INFO_LVDS_MISC_888_BPC_MODE =0x04, 165362306a36Sopenharmony_ci SYS_INFO_LVDS_MISC_OVERRIDE_EN =0x08, 165462306a36Sopenharmony_ci}; 165562306a36Sopenharmony_ci 165662306a36Sopenharmony_ci 165762306a36Sopenharmony_ci//memorytype DMI Type 17 offset 12h - Memory Type 165862306a36Sopenharmony_cienum atom_dmi_t17_mem_type_def{ 165962306a36Sopenharmony_ci OtherMemType = 0x01, ///< Assign 01 to Other 166062306a36Sopenharmony_ci UnknownMemType, ///< Assign 02 to Unknown 166162306a36Sopenharmony_ci DramMemType, ///< Assign 03 to DRAM 166262306a36Sopenharmony_ci EdramMemType, ///< Assign 04 to EDRAM 166362306a36Sopenharmony_ci VramMemType, ///< Assign 05 to VRAM 166462306a36Sopenharmony_ci SramMemType, ///< Assign 06 to SRAM 166562306a36Sopenharmony_ci RamMemType, ///< Assign 07 to RAM 166662306a36Sopenharmony_ci RomMemType, ///< Assign 08 to ROM 166762306a36Sopenharmony_ci FlashMemType, ///< Assign 09 to Flash 166862306a36Sopenharmony_ci EepromMemType, ///< Assign 10 to EEPROM 166962306a36Sopenharmony_ci FepromMemType, ///< Assign 11 to FEPROM 167062306a36Sopenharmony_ci EpromMemType, ///< Assign 12 to EPROM 167162306a36Sopenharmony_ci CdramMemType, ///< Assign 13 to CDRAM 167262306a36Sopenharmony_ci ThreeDramMemType, ///< Assign 14 to 3DRAM 167362306a36Sopenharmony_ci SdramMemType, ///< Assign 15 to SDRAM 167462306a36Sopenharmony_ci SgramMemType, ///< Assign 16 to SGRAM 167562306a36Sopenharmony_ci RdramMemType, ///< Assign 17 to RDRAM 167662306a36Sopenharmony_ci DdrMemType, ///< Assign 18 to DDR 167762306a36Sopenharmony_ci Ddr2MemType, ///< Assign 19 to DDR2 167862306a36Sopenharmony_ci Ddr2FbdimmMemType, ///< Assign 20 to DDR2 FB-DIMM 167962306a36Sopenharmony_ci Ddr3MemType = 0x18, ///< Assign 24 to DDR3 168062306a36Sopenharmony_ci Fbd2MemType, ///< Assign 25 to FBD2 168162306a36Sopenharmony_ci Ddr4MemType, ///< Assign 26 to DDR4 168262306a36Sopenharmony_ci LpDdrMemType, ///< Assign 27 to LPDDR 168362306a36Sopenharmony_ci LpDdr2MemType, ///< Assign 28 to LPDDR2 168462306a36Sopenharmony_ci LpDdr3MemType, ///< Assign 29 to LPDDR3 168562306a36Sopenharmony_ci LpDdr4MemType, ///< Assign 30 to LPDDR4 168662306a36Sopenharmony_ci GDdr6MemType, ///< Assign 31 to GDDR6 168762306a36Sopenharmony_ci HbmMemType, ///< Assign 32 to HBM 168862306a36Sopenharmony_ci Hbm2MemType, ///< Assign 33 to HBM2 168962306a36Sopenharmony_ci Ddr5MemType, ///< Assign 34 to DDR5 169062306a36Sopenharmony_ci LpDdr5MemType, ///< Assign 35 to LPDDR5 169162306a36Sopenharmony_ci}; 169262306a36Sopenharmony_ci 169362306a36Sopenharmony_ci 169462306a36Sopenharmony_ci// this Table is used starting from NL/AM, used by SBIOS and pass the IntegratedSystemInfoTable/PowerPlayInfoTable/SystemCameraInfoTable 169562306a36Sopenharmony_cistruct atom_fusion_system_info_v4 169662306a36Sopenharmony_ci{ 169762306a36Sopenharmony_ci struct atom_integrated_system_info_v1_11 sysinfo; // refer to ATOM_INTEGRATED_SYSTEM_INFO_V1_8 definition 169862306a36Sopenharmony_ci uint32_t powerplayinfo[256]; // Reserve 1024 bytes space for PowerPlayInfoTable 169962306a36Sopenharmony_ci}; 170062306a36Sopenharmony_ci 170162306a36Sopenharmony_ci 170262306a36Sopenharmony_ci/* 170362306a36Sopenharmony_ci *************************************************************************** 170462306a36Sopenharmony_ci Data Table gfx_info structure 170562306a36Sopenharmony_ci *************************************************************************** 170662306a36Sopenharmony_ci*/ 170762306a36Sopenharmony_ci 170862306a36Sopenharmony_cistruct atom_gfx_info_v2_2 170962306a36Sopenharmony_ci{ 171062306a36Sopenharmony_ci struct atom_common_table_header table_header; 171162306a36Sopenharmony_ci uint8_t gfxip_min_ver; 171262306a36Sopenharmony_ci uint8_t gfxip_max_ver; 171362306a36Sopenharmony_ci uint8_t max_shader_engines; 171462306a36Sopenharmony_ci uint8_t max_tile_pipes; 171562306a36Sopenharmony_ci uint8_t max_cu_per_sh; 171662306a36Sopenharmony_ci uint8_t max_sh_per_se; 171762306a36Sopenharmony_ci uint8_t max_backends_per_se; 171862306a36Sopenharmony_ci uint8_t max_texture_channel_caches; 171962306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr; 172062306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr_hi; 172162306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr; 172262306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr_hi; 172362306a36Sopenharmony_ci uint32_t regaddr_cp_dma_command; 172462306a36Sopenharmony_ci uint32_t regaddr_cp_status; 172562306a36Sopenharmony_ci uint32_t regaddr_rlc_gpu_clock_32; 172662306a36Sopenharmony_ci uint32_t rlc_gpu_timer_refclk; 172762306a36Sopenharmony_ci}; 172862306a36Sopenharmony_ci 172962306a36Sopenharmony_cistruct atom_gfx_info_v2_3 { 173062306a36Sopenharmony_ci struct atom_common_table_header table_header; 173162306a36Sopenharmony_ci uint8_t gfxip_min_ver; 173262306a36Sopenharmony_ci uint8_t gfxip_max_ver; 173362306a36Sopenharmony_ci uint8_t max_shader_engines; 173462306a36Sopenharmony_ci uint8_t max_tile_pipes; 173562306a36Sopenharmony_ci uint8_t max_cu_per_sh; 173662306a36Sopenharmony_ci uint8_t max_sh_per_se; 173762306a36Sopenharmony_ci uint8_t max_backends_per_se; 173862306a36Sopenharmony_ci uint8_t max_texture_channel_caches; 173962306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr; 174062306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr_hi; 174162306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr; 174262306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr_hi; 174362306a36Sopenharmony_ci uint32_t regaddr_cp_dma_command; 174462306a36Sopenharmony_ci uint32_t regaddr_cp_status; 174562306a36Sopenharmony_ci uint32_t regaddr_rlc_gpu_clock_32; 174662306a36Sopenharmony_ci uint32_t rlc_gpu_timer_refclk; 174762306a36Sopenharmony_ci uint8_t active_cu_per_sh; 174862306a36Sopenharmony_ci uint8_t active_rb_per_se; 174962306a36Sopenharmony_ci uint16_t gcgoldenoffset; 175062306a36Sopenharmony_ci uint32_t rm21_sram_vmin_value; 175162306a36Sopenharmony_ci}; 175262306a36Sopenharmony_ci 175362306a36Sopenharmony_cistruct atom_gfx_info_v2_4 175462306a36Sopenharmony_ci{ 175562306a36Sopenharmony_ci struct atom_common_table_header table_header; 175662306a36Sopenharmony_ci uint8_t gfxip_min_ver; 175762306a36Sopenharmony_ci uint8_t gfxip_max_ver; 175862306a36Sopenharmony_ci uint8_t max_shader_engines; 175962306a36Sopenharmony_ci uint8_t reserved; 176062306a36Sopenharmony_ci uint8_t max_cu_per_sh; 176162306a36Sopenharmony_ci uint8_t max_sh_per_se; 176262306a36Sopenharmony_ci uint8_t max_backends_per_se; 176362306a36Sopenharmony_ci uint8_t max_texture_channel_caches; 176462306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr; 176562306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr_hi; 176662306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr; 176762306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr_hi; 176862306a36Sopenharmony_ci uint32_t regaddr_cp_dma_command; 176962306a36Sopenharmony_ci uint32_t regaddr_cp_status; 177062306a36Sopenharmony_ci uint32_t regaddr_rlc_gpu_clock_32; 177162306a36Sopenharmony_ci uint32_t rlc_gpu_timer_refclk; 177262306a36Sopenharmony_ci uint8_t active_cu_per_sh; 177362306a36Sopenharmony_ci uint8_t active_rb_per_se; 177462306a36Sopenharmony_ci uint16_t gcgoldenoffset; 177562306a36Sopenharmony_ci uint16_t gc_num_gprs; 177662306a36Sopenharmony_ci uint16_t gc_gsprim_buff_depth; 177762306a36Sopenharmony_ci uint16_t gc_parameter_cache_depth; 177862306a36Sopenharmony_ci uint16_t gc_wave_size; 177962306a36Sopenharmony_ci uint16_t gc_max_waves_per_simd; 178062306a36Sopenharmony_ci uint16_t gc_lds_size; 178162306a36Sopenharmony_ci uint8_t gc_num_max_gs_thds; 178262306a36Sopenharmony_ci uint8_t gc_gs_table_depth; 178362306a36Sopenharmony_ci uint8_t gc_double_offchip_lds_buffer; 178462306a36Sopenharmony_ci uint8_t gc_max_scratch_slots_per_cu; 178562306a36Sopenharmony_ci uint32_t sram_rm_fuses_val; 178662306a36Sopenharmony_ci uint32_t sram_custom_rm_fuses_val; 178762306a36Sopenharmony_ci}; 178862306a36Sopenharmony_ci 178962306a36Sopenharmony_cistruct atom_gfx_info_v2_7 { 179062306a36Sopenharmony_ci struct atom_common_table_header table_header; 179162306a36Sopenharmony_ci uint8_t gfxip_min_ver; 179262306a36Sopenharmony_ci uint8_t gfxip_max_ver; 179362306a36Sopenharmony_ci uint8_t max_shader_engines; 179462306a36Sopenharmony_ci uint8_t reserved; 179562306a36Sopenharmony_ci uint8_t max_cu_per_sh; 179662306a36Sopenharmony_ci uint8_t max_sh_per_se; 179762306a36Sopenharmony_ci uint8_t max_backends_per_se; 179862306a36Sopenharmony_ci uint8_t max_texture_channel_caches; 179962306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr; 180062306a36Sopenharmony_ci uint32_t regaddr_cp_dma_src_addr_hi; 180162306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr; 180262306a36Sopenharmony_ci uint32_t regaddr_cp_dma_dst_addr_hi; 180362306a36Sopenharmony_ci uint32_t regaddr_cp_dma_command; 180462306a36Sopenharmony_ci uint32_t regaddr_cp_status; 180562306a36Sopenharmony_ci uint32_t regaddr_rlc_gpu_clock_32; 180662306a36Sopenharmony_ci uint32_t rlc_gpu_timer_refclk; 180762306a36Sopenharmony_ci uint8_t active_cu_per_sh; 180862306a36Sopenharmony_ci uint8_t active_rb_per_se; 180962306a36Sopenharmony_ci uint16_t gcgoldenoffset; 181062306a36Sopenharmony_ci uint16_t gc_num_gprs; 181162306a36Sopenharmony_ci uint16_t gc_gsprim_buff_depth; 181262306a36Sopenharmony_ci uint16_t gc_parameter_cache_depth; 181362306a36Sopenharmony_ci uint16_t gc_wave_size; 181462306a36Sopenharmony_ci uint16_t gc_max_waves_per_simd; 181562306a36Sopenharmony_ci uint16_t gc_lds_size; 181662306a36Sopenharmony_ci uint8_t gc_num_max_gs_thds; 181762306a36Sopenharmony_ci uint8_t gc_gs_table_depth; 181862306a36Sopenharmony_ci uint8_t gc_double_offchip_lds_buffer; 181962306a36Sopenharmony_ci uint8_t gc_max_scratch_slots_per_cu; 182062306a36Sopenharmony_ci uint32_t sram_rm_fuses_val; 182162306a36Sopenharmony_ci uint32_t sram_custom_rm_fuses_val; 182262306a36Sopenharmony_ci uint8_t cut_cu; 182362306a36Sopenharmony_ci uint8_t active_cu_total; 182462306a36Sopenharmony_ci uint8_t cu_reserved[2]; 182562306a36Sopenharmony_ci uint32_t gc_config; 182662306a36Sopenharmony_ci uint8_t inactive_cu_per_se[8]; 182762306a36Sopenharmony_ci uint32_t reserved2[6]; 182862306a36Sopenharmony_ci}; 182962306a36Sopenharmony_ci 183062306a36Sopenharmony_cistruct atom_gfx_info_v3_0 { 183162306a36Sopenharmony_ci struct atom_common_table_header table_header; 183262306a36Sopenharmony_ci uint8_t gfxip_min_ver; 183362306a36Sopenharmony_ci uint8_t gfxip_max_ver; 183462306a36Sopenharmony_ci uint8_t max_shader_engines; 183562306a36Sopenharmony_ci uint8_t max_tile_pipes; 183662306a36Sopenharmony_ci uint8_t max_cu_per_sh; 183762306a36Sopenharmony_ci uint8_t max_sh_per_se; 183862306a36Sopenharmony_ci uint8_t max_backends_per_se; 183962306a36Sopenharmony_ci uint8_t max_texture_channel_caches; 184062306a36Sopenharmony_ci uint32_t regaddr_lsdma_queue0_rb_rptr; 184162306a36Sopenharmony_ci uint32_t regaddr_lsdma_queue0_rb_rptr_hi; 184262306a36Sopenharmony_ci uint32_t regaddr_lsdma_queue0_rb_wptr; 184362306a36Sopenharmony_ci uint32_t regaddr_lsdma_queue0_rb_wptr_hi; 184462306a36Sopenharmony_ci uint32_t regaddr_lsdma_command; 184562306a36Sopenharmony_ci uint32_t regaddr_lsdma_status; 184662306a36Sopenharmony_ci uint32_t regaddr_golden_tsc_count_lower; 184762306a36Sopenharmony_ci uint32_t golden_tsc_count_lower_refclk; 184862306a36Sopenharmony_ci uint8_t active_wgp_per_se; 184962306a36Sopenharmony_ci uint8_t active_rb_per_se; 185062306a36Sopenharmony_ci uint8_t active_se; 185162306a36Sopenharmony_ci uint8_t reserved1; 185262306a36Sopenharmony_ci uint32_t sram_rm_fuses_val; 185362306a36Sopenharmony_ci uint32_t sram_custom_rm_fuses_val; 185462306a36Sopenharmony_ci uint32_t inactive_sa_mask; 185562306a36Sopenharmony_ci uint32_t gc_config; 185662306a36Sopenharmony_ci uint8_t inactive_wgp[16]; 185762306a36Sopenharmony_ci uint8_t inactive_rb[16]; 185862306a36Sopenharmony_ci uint32_t gdfll_as_wait_ctrl_val; 185962306a36Sopenharmony_ci uint32_t gdfll_as_step_ctrl_val; 186062306a36Sopenharmony_ci uint32_t reserved[8]; 186162306a36Sopenharmony_ci}; 186262306a36Sopenharmony_ci 186362306a36Sopenharmony_ci/* 186462306a36Sopenharmony_ci *************************************************************************** 186562306a36Sopenharmony_ci Data Table smu_info structure 186662306a36Sopenharmony_ci *************************************************************************** 186762306a36Sopenharmony_ci*/ 186862306a36Sopenharmony_cistruct atom_smu_info_v3_1 186962306a36Sopenharmony_ci{ 187062306a36Sopenharmony_ci struct atom_common_table_header table_header; 187162306a36Sopenharmony_ci uint8_t smuip_min_ver; 187262306a36Sopenharmony_ci uint8_t smuip_max_ver; 187362306a36Sopenharmony_ci uint8_t smu_rsd1; 187462306a36Sopenharmony_ci uint8_t gpuclk_ss_mode; // enum of atom_spread_spectrum_mode 187562306a36Sopenharmony_ci uint16_t sclk_ss_percentage; 187662306a36Sopenharmony_ci uint16_t sclk_ss_rate_10hz; 187762306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; // in unit of 0.001% 187862306a36Sopenharmony_ci uint16_t gpuclk_ss_rate_10hz; 187962306a36Sopenharmony_ci uint32_t core_refclk_10khz; 188062306a36Sopenharmony_ci uint8_t ac_dc_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for AC/DC switching, =0xff means invalid 188162306a36Sopenharmony_ci uint8_t ac_dc_polarity; // GPIO polarity for AC/DC switching 188262306a36Sopenharmony_ci uint8_t vr0hot_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for VR0 HOT event, =0xff means invalid 188362306a36Sopenharmony_ci uint8_t vr0hot_polarity; // GPIO polarity for VR0 HOT event 188462306a36Sopenharmony_ci uint8_t vr1hot_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for VR1 HOT event , =0xff means invalid 188562306a36Sopenharmony_ci uint8_t vr1hot_polarity; // GPIO polarity for VR1 HOT event 188662306a36Sopenharmony_ci uint8_t fw_ctf_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for CTF, =0xff means invalid 188762306a36Sopenharmony_ci uint8_t fw_ctf_polarity; // GPIO polarity for CTF 188862306a36Sopenharmony_ci}; 188962306a36Sopenharmony_ci 189062306a36Sopenharmony_cistruct atom_smu_info_v3_2 { 189162306a36Sopenharmony_ci struct atom_common_table_header table_header; 189262306a36Sopenharmony_ci uint8_t smuip_min_ver; 189362306a36Sopenharmony_ci uint8_t smuip_max_ver; 189462306a36Sopenharmony_ci uint8_t smu_rsd1; 189562306a36Sopenharmony_ci uint8_t gpuclk_ss_mode; 189662306a36Sopenharmony_ci uint16_t sclk_ss_percentage; 189762306a36Sopenharmony_ci uint16_t sclk_ss_rate_10hz; 189862306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; // in unit of 0.001% 189962306a36Sopenharmony_ci uint16_t gpuclk_ss_rate_10hz; 190062306a36Sopenharmony_ci uint32_t core_refclk_10khz; 190162306a36Sopenharmony_ci uint8_t ac_dc_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for AC/DC switching, =0xff means invalid 190262306a36Sopenharmony_ci uint8_t ac_dc_polarity; // GPIO polarity for AC/DC switching 190362306a36Sopenharmony_ci uint8_t vr0hot_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for VR0 HOT event, =0xff means invalid 190462306a36Sopenharmony_ci uint8_t vr0hot_polarity; // GPIO polarity for VR0 HOT event 190562306a36Sopenharmony_ci uint8_t vr1hot_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for VR1 HOT event , =0xff means invalid 190662306a36Sopenharmony_ci uint8_t vr1hot_polarity; // GPIO polarity for VR1 HOT event 190762306a36Sopenharmony_ci uint8_t fw_ctf_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for CTF, =0xff means invalid 190862306a36Sopenharmony_ci uint8_t fw_ctf_polarity; // GPIO polarity for CTF 190962306a36Sopenharmony_ci uint8_t pcc_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for PCC, =0xff means invalid 191062306a36Sopenharmony_ci uint8_t pcc_gpio_polarity; // GPIO polarity for CTF 191162306a36Sopenharmony_ci uint16_t smugoldenoffset; 191262306a36Sopenharmony_ci uint32_t gpupll_vco_freq_10khz; 191362306a36Sopenharmony_ci uint32_t bootup_smnclk_10khz; 191462306a36Sopenharmony_ci uint32_t bootup_socclk_10khz; 191562306a36Sopenharmony_ci uint32_t bootup_mp0clk_10khz; 191662306a36Sopenharmony_ci uint32_t bootup_mp1clk_10khz; 191762306a36Sopenharmony_ci uint32_t bootup_lclk_10khz; 191862306a36Sopenharmony_ci uint32_t bootup_dcefclk_10khz; 191962306a36Sopenharmony_ci uint32_t ctf_threshold_override_value; 192062306a36Sopenharmony_ci uint32_t reserved[5]; 192162306a36Sopenharmony_ci}; 192262306a36Sopenharmony_ci 192362306a36Sopenharmony_cistruct atom_smu_info_v3_3 { 192462306a36Sopenharmony_ci struct atom_common_table_header table_header; 192562306a36Sopenharmony_ci uint8_t smuip_min_ver; 192662306a36Sopenharmony_ci uint8_t smuip_max_ver; 192762306a36Sopenharmony_ci uint8_t waflclk_ss_mode; 192862306a36Sopenharmony_ci uint8_t gpuclk_ss_mode; 192962306a36Sopenharmony_ci uint16_t sclk_ss_percentage; 193062306a36Sopenharmony_ci uint16_t sclk_ss_rate_10hz; 193162306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; // in unit of 0.001% 193262306a36Sopenharmony_ci uint16_t gpuclk_ss_rate_10hz; 193362306a36Sopenharmony_ci uint32_t core_refclk_10khz; 193462306a36Sopenharmony_ci uint8_t ac_dc_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for AC/DC switching, =0xff means invalid 193562306a36Sopenharmony_ci uint8_t ac_dc_polarity; // GPIO polarity for AC/DC switching 193662306a36Sopenharmony_ci uint8_t vr0hot_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for VR0 HOT event, =0xff means invalid 193762306a36Sopenharmony_ci uint8_t vr0hot_polarity; // GPIO polarity for VR0 HOT event 193862306a36Sopenharmony_ci uint8_t vr1hot_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for VR1 HOT event , =0xff means invalid 193962306a36Sopenharmony_ci uint8_t vr1hot_polarity; // GPIO polarity for VR1 HOT event 194062306a36Sopenharmony_ci uint8_t fw_ctf_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for CTF, =0xff means invalid 194162306a36Sopenharmony_ci uint8_t fw_ctf_polarity; // GPIO polarity for CTF 194262306a36Sopenharmony_ci uint8_t pcc_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for PCC, =0xff means invalid 194362306a36Sopenharmony_ci uint8_t pcc_gpio_polarity; // GPIO polarity for CTF 194462306a36Sopenharmony_ci uint16_t smugoldenoffset; 194562306a36Sopenharmony_ci uint32_t gpupll_vco_freq_10khz; 194662306a36Sopenharmony_ci uint32_t bootup_smnclk_10khz; 194762306a36Sopenharmony_ci uint32_t bootup_socclk_10khz; 194862306a36Sopenharmony_ci uint32_t bootup_mp0clk_10khz; 194962306a36Sopenharmony_ci uint32_t bootup_mp1clk_10khz; 195062306a36Sopenharmony_ci uint32_t bootup_lclk_10khz; 195162306a36Sopenharmony_ci uint32_t bootup_dcefclk_10khz; 195262306a36Sopenharmony_ci uint32_t ctf_threshold_override_value; 195362306a36Sopenharmony_ci uint32_t syspll3_0_vco_freq_10khz; 195462306a36Sopenharmony_ci uint32_t syspll3_1_vco_freq_10khz; 195562306a36Sopenharmony_ci uint32_t bootup_fclk_10khz; 195662306a36Sopenharmony_ci uint32_t bootup_waflclk_10khz; 195762306a36Sopenharmony_ci uint32_t smu_info_caps; 195862306a36Sopenharmony_ci uint16_t waflclk_ss_percentage; // in unit of 0.001% 195962306a36Sopenharmony_ci uint16_t smuinitoffset; 196062306a36Sopenharmony_ci uint32_t reserved; 196162306a36Sopenharmony_ci}; 196262306a36Sopenharmony_ci 196362306a36Sopenharmony_cistruct atom_smu_info_v3_5 196462306a36Sopenharmony_ci{ 196562306a36Sopenharmony_ci struct atom_common_table_header table_header; 196662306a36Sopenharmony_ci uint8_t smuip_min_ver; 196762306a36Sopenharmony_ci uint8_t smuip_max_ver; 196862306a36Sopenharmony_ci uint8_t waflclk_ss_mode; 196962306a36Sopenharmony_ci uint8_t gpuclk_ss_mode; 197062306a36Sopenharmony_ci uint16_t sclk_ss_percentage; 197162306a36Sopenharmony_ci uint16_t sclk_ss_rate_10hz; 197262306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; // in unit of 0.001% 197362306a36Sopenharmony_ci uint16_t gpuclk_ss_rate_10hz; 197462306a36Sopenharmony_ci uint32_t core_refclk_10khz; 197562306a36Sopenharmony_ci uint32_t syspll0_1_vco_freq_10khz; 197662306a36Sopenharmony_ci uint32_t syspll0_2_vco_freq_10khz; 197762306a36Sopenharmony_ci uint8_t pcc_gpio_bit; // GPIO bit shift in SMU_GPIOPAD_A configured for PCC, =0xff means invalid 197862306a36Sopenharmony_ci uint8_t pcc_gpio_polarity; // GPIO polarity for CTF 197962306a36Sopenharmony_ci uint16_t smugoldenoffset; 198062306a36Sopenharmony_ci uint32_t syspll0_0_vco_freq_10khz; 198162306a36Sopenharmony_ci uint32_t bootup_smnclk_10khz; 198262306a36Sopenharmony_ci uint32_t bootup_socclk_10khz; 198362306a36Sopenharmony_ci uint32_t bootup_mp0clk_10khz; 198462306a36Sopenharmony_ci uint32_t bootup_mp1clk_10khz; 198562306a36Sopenharmony_ci uint32_t bootup_lclk_10khz; 198662306a36Sopenharmony_ci uint32_t bootup_dcefclk_10khz; 198762306a36Sopenharmony_ci uint32_t ctf_threshold_override_value; 198862306a36Sopenharmony_ci uint32_t syspll3_0_vco_freq_10khz; 198962306a36Sopenharmony_ci uint32_t syspll3_1_vco_freq_10khz; 199062306a36Sopenharmony_ci uint32_t bootup_fclk_10khz; 199162306a36Sopenharmony_ci uint32_t bootup_waflclk_10khz; 199262306a36Sopenharmony_ci uint32_t smu_info_caps; 199362306a36Sopenharmony_ci uint16_t waflclk_ss_percentage; // in unit of 0.001% 199462306a36Sopenharmony_ci uint16_t smuinitoffset; 199562306a36Sopenharmony_ci uint32_t bootup_dprefclk_10khz; 199662306a36Sopenharmony_ci uint32_t bootup_usbclk_10khz; 199762306a36Sopenharmony_ci uint32_t smb_slave_address; 199862306a36Sopenharmony_ci uint32_t cg_fdo_ctrl0_val; 199962306a36Sopenharmony_ci uint32_t cg_fdo_ctrl1_val; 200062306a36Sopenharmony_ci uint32_t cg_fdo_ctrl2_val; 200162306a36Sopenharmony_ci uint32_t gdfll_as_wait_ctrl_val; 200262306a36Sopenharmony_ci uint32_t gdfll_as_step_ctrl_val; 200362306a36Sopenharmony_ci uint32_t bootup_dtbclk_10khz; 200462306a36Sopenharmony_ci uint32_t fclk_syspll_refclk_10khz; 200562306a36Sopenharmony_ci uint32_t smusvi_svc0_val; 200662306a36Sopenharmony_ci uint32_t smusvi_svc1_val; 200762306a36Sopenharmony_ci uint32_t smusvi_svd0_val; 200862306a36Sopenharmony_ci uint32_t smusvi_svd1_val; 200962306a36Sopenharmony_ci uint32_t smusvi_svt0_val; 201062306a36Sopenharmony_ci uint32_t smusvi_svt1_val; 201162306a36Sopenharmony_ci uint32_t cg_tach_ctrl_val; 201262306a36Sopenharmony_ci uint32_t cg_pump_ctrl1_val; 201362306a36Sopenharmony_ci uint32_t cg_pump_tach_ctrl_val; 201462306a36Sopenharmony_ci uint32_t thm_ctf_delay_val; 201562306a36Sopenharmony_ci uint32_t thm_thermal_int_ctrl_val; 201662306a36Sopenharmony_ci uint32_t thm_tmon_config_val; 201762306a36Sopenharmony_ci uint32_t reserved[16]; 201862306a36Sopenharmony_ci}; 201962306a36Sopenharmony_ci 202062306a36Sopenharmony_cistruct atom_smu_info_v3_6 202162306a36Sopenharmony_ci{ 202262306a36Sopenharmony_ci struct atom_common_table_header table_header; 202362306a36Sopenharmony_ci uint8_t smuip_min_ver; 202462306a36Sopenharmony_ci uint8_t smuip_max_ver; 202562306a36Sopenharmony_ci uint8_t waflclk_ss_mode; 202662306a36Sopenharmony_ci uint8_t gpuclk_ss_mode; 202762306a36Sopenharmony_ci uint16_t sclk_ss_percentage; 202862306a36Sopenharmony_ci uint16_t sclk_ss_rate_10hz; 202962306a36Sopenharmony_ci uint16_t gpuclk_ss_percentage; 203062306a36Sopenharmony_ci uint16_t gpuclk_ss_rate_10hz; 203162306a36Sopenharmony_ci uint32_t core_refclk_10khz; 203262306a36Sopenharmony_ci uint32_t syspll0_1_vco_freq_10khz; 203362306a36Sopenharmony_ci uint32_t syspll0_2_vco_freq_10khz; 203462306a36Sopenharmony_ci uint8_t pcc_gpio_bit; 203562306a36Sopenharmony_ci uint8_t pcc_gpio_polarity; 203662306a36Sopenharmony_ci uint16_t smugoldenoffset; 203762306a36Sopenharmony_ci uint32_t syspll0_0_vco_freq_10khz; 203862306a36Sopenharmony_ci uint32_t bootup_smnclk_10khz; 203962306a36Sopenharmony_ci uint32_t bootup_socclk_10khz; 204062306a36Sopenharmony_ci uint32_t bootup_mp0clk_10khz; 204162306a36Sopenharmony_ci uint32_t bootup_mp1clk_10khz; 204262306a36Sopenharmony_ci uint32_t bootup_lclk_10khz; 204362306a36Sopenharmony_ci uint32_t bootup_dxioclk_10khz; 204462306a36Sopenharmony_ci uint32_t ctf_threshold_override_value; 204562306a36Sopenharmony_ci uint32_t syspll3_0_vco_freq_10khz; 204662306a36Sopenharmony_ci uint32_t syspll3_1_vco_freq_10khz; 204762306a36Sopenharmony_ci uint32_t bootup_fclk_10khz; 204862306a36Sopenharmony_ci uint32_t bootup_waflclk_10khz; 204962306a36Sopenharmony_ci uint32_t smu_info_caps; 205062306a36Sopenharmony_ci uint16_t waflclk_ss_percentage; 205162306a36Sopenharmony_ci uint16_t smuinitoffset; 205262306a36Sopenharmony_ci uint32_t bootup_gfxavsclk_10khz; 205362306a36Sopenharmony_ci uint32_t bootup_mpioclk_10khz; 205462306a36Sopenharmony_ci uint32_t smb_slave_address; 205562306a36Sopenharmony_ci uint32_t cg_fdo_ctrl0_val; 205662306a36Sopenharmony_ci uint32_t cg_fdo_ctrl1_val; 205762306a36Sopenharmony_ci uint32_t cg_fdo_ctrl2_val; 205862306a36Sopenharmony_ci uint32_t gdfll_as_wait_ctrl_val; 205962306a36Sopenharmony_ci uint32_t gdfll_as_step_ctrl_val; 206062306a36Sopenharmony_ci uint32_t reserved_clk; 206162306a36Sopenharmony_ci uint32_t fclk_syspll_refclk_10khz; 206262306a36Sopenharmony_ci uint32_t smusvi_svc0_val; 206362306a36Sopenharmony_ci uint32_t smusvi_svc1_val; 206462306a36Sopenharmony_ci uint32_t smusvi_svd0_val; 206562306a36Sopenharmony_ci uint32_t smusvi_svd1_val; 206662306a36Sopenharmony_ci uint32_t smusvi_svt0_val; 206762306a36Sopenharmony_ci uint32_t smusvi_svt1_val; 206862306a36Sopenharmony_ci uint32_t cg_tach_ctrl_val; 206962306a36Sopenharmony_ci uint32_t cg_pump_ctrl1_val; 207062306a36Sopenharmony_ci uint32_t cg_pump_tach_ctrl_val; 207162306a36Sopenharmony_ci uint32_t thm_ctf_delay_val; 207262306a36Sopenharmony_ci uint32_t thm_thermal_int_ctrl_val; 207362306a36Sopenharmony_ci uint32_t thm_tmon_config_val; 207462306a36Sopenharmony_ci uint32_t bootup_vclk_10khz; 207562306a36Sopenharmony_ci uint32_t bootup_dclk_10khz; 207662306a36Sopenharmony_ci uint32_t smu_gpiopad_pu_en_val; 207762306a36Sopenharmony_ci uint32_t smu_gpiopad_pd_en_val; 207862306a36Sopenharmony_ci uint32_t reserved[12]; 207962306a36Sopenharmony_ci}; 208062306a36Sopenharmony_ci 208162306a36Sopenharmony_cistruct atom_smu_info_v4_0 { 208262306a36Sopenharmony_ci struct atom_common_table_header table_header; 208362306a36Sopenharmony_ci uint32_t bootup_gfxclk_bypass_10khz; 208462306a36Sopenharmony_ci uint32_t bootup_usrclk_10khz; 208562306a36Sopenharmony_ci uint32_t bootup_csrclk_10khz; 208662306a36Sopenharmony_ci uint32_t core_refclk_10khz; 208762306a36Sopenharmony_ci uint32_t syspll1_vco_freq_10khz; 208862306a36Sopenharmony_ci uint32_t syspll2_vco_freq_10khz; 208962306a36Sopenharmony_ci uint8_t pcc_gpio_bit; 209062306a36Sopenharmony_ci uint8_t pcc_gpio_polarity; 209162306a36Sopenharmony_ci uint16_t bootup_vddusr_mv; 209262306a36Sopenharmony_ci uint32_t syspll0_vco_freq_10khz; 209362306a36Sopenharmony_ci uint32_t bootup_smnclk_10khz; 209462306a36Sopenharmony_ci uint32_t bootup_socclk_10khz; 209562306a36Sopenharmony_ci uint32_t bootup_mp0clk_10khz; 209662306a36Sopenharmony_ci uint32_t bootup_mp1clk_10khz; 209762306a36Sopenharmony_ci uint32_t bootup_lclk_10khz; 209862306a36Sopenharmony_ci uint32_t bootup_dcefclk_10khz; 209962306a36Sopenharmony_ci uint32_t ctf_threshold_override_value; 210062306a36Sopenharmony_ci uint32_t syspll3_vco_freq_10khz; 210162306a36Sopenharmony_ci uint32_t mm_syspll_vco_freq_10khz; 210262306a36Sopenharmony_ci uint32_t bootup_fclk_10khz; 210362306a36Sopenharmony_ci uint32_t bootup_waflclk_10khz; 210462306a36Sopenharmony_ci uint32_t smu_info_caps; 210562306a36Sopenharmony_ci uint16_t waflclk_ss_percentage; 210662306a36Sopenharmony_ci uint16_t smuinitoffset; 210762306a36Sopenharmony_ci uint32_t bootup_dprefclk_10khz; 210862306a36Sopenharmony_ci uint32_t bootup_usbclk_10khz; 210962306a36Sopenharmony_ci uint32_t smb_slave_address; 211062306a36Sopenharmony_ci uint32_t cg_fdo_ctrl0_val; 211162306a36Sopenharmony_ci uint32_t cg_fdo_ctrl1_val; 211262306a36Sopenharmony_ci uint32_t cg_fdo_ctrl2_val; 211362306a36Sopenharmony_ci uint32_t gdfll_as_wait_ctrl_val; 211462306a36Sopenharmony_ci uint32_t gdfll_as_step_ctrl_val; 211562306a36Sopenharmony_ci uint32_t bootup_dtbclk_10khz; 211662306a36Sopenharmony_ci uint32_t fclk_syspll_refclk_10khz; 211762306a36Sopenharmony_ci uint32_t smusvi_svc0_val; 211862306a36Sopenharmony_ci uint32_t smusvi_svc1_val; 211962306a36Sopenharmony_ci uint32_t smusvi_svd0_val; 212062306a36Sopenharmony_ci uint32_t smusvi_svd1_val; 212162306a36Sopenharmony_ci uint32_t smusvi_svt0_val; 212262306a36Sopenharmony_ci uint32_t smusvi_svt1_val; 212362306a36Sopenharmony_ci uint32_t cg_tach_ctrl_val; 212462306a36Sopenharmony_ci uint32_t cg_pump_ctrl1_val; 212562306a36Sopenharmony_ci uint32_t cg_pump_tach_ctrl_val; 212662306a36Sopenharmony_ci uint32_t thm_ctf_delay_val; 212762306a36Sopenharmony_ci uint32_t thm_thermal_int_ctrl_val; 212862306a36Sopenharmony_ci uint32_t thm_tmon_config_val; 212962306a36Sopenharmony_ci uint32_t smbus_timing_cntrl0_val; 213062306a36Sopenharmony_ci uint32_t smbus_timing_cntrl1_val; 213162306a36Sopenharmony_ci uint32_t smbus_timing_cntrl2_val; 213262306a36Sopenharmony_ci uint32_t pwr_disp_timer_global_control_val; 213362306a36Sopenharmony_ci uint32_t bootup_mpioclk_10khz; 213462306a36Sopenharmony_ci uint32_t bootup_dclk0_10khz; 213562306a36Sopenharmony_ci uint32_t bootup_vclk0_10khz; 213662306a36Sopenharmony_ci uint32_t bootup_dclk1_10khz; 213762306a36Sopenharmony_ci uint32_t bootup_vclk1_10khz; 213862306a36Sopenharmony_ci uint32_t bootup_baco400clk_10khz; 213962306a36Sopenharmony_ci uint32_t bootup_baco1200clk_bypass_10khz; 214062306a36Sopenharmony_ci uint32_t bootup_baco700clk_bypass_10khz; 214162306a36Sopenharmony_ci uint32_t reserved[16]; 214262306a36Sopenharmony_ci}; 214362306a36Sopenharmony_ci 214462306a36Sopenharmony_ci/* 214562306a36Sopenharmony_ci *************************************************************************** 214662306a36Sopenharmony_ci Data Table smc_dpm_info structure 214762306a36Sopenharmony_ci *************************************************************************** 214862306a36Sopenharmony_ci */ 214962306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_1 215062306a36Sopenharmony_ci{ 215162306a36Sopenharmony_ci struct atom_common_table_header table_header; 215262306a36Sopenharmony_ci uint8_t liquid1_i2c_address; 215362306a36Sopenharmony_ci uint8_t liquid2_i2c_address; 215462306a36Sopenharmony_ci uint8_t vr_i2c_address; 215562306a36Sopenharmony_ci uint8_t plx_i2c_address; 215662306a36Sopenharmony_ci 215762306a36Sopenharmony_ci uint8_t liquid_i2c_linescl; 215862306a36Sopenharmony_ci uint8_t liquid_i2c_linesda; 215962306a36Sopenharmony_ci uint8_t vr_i2c_linescl; 216062306a36Sopenharmony_ci uint8_t vr_i2c_linesda; 216162306a36Sopenharmony_ci 216262306a36Sopenharmony_ci uint8_t plx_i2c_linescl; 216362306a36Sopenharmony_ci uint8_t plx_i2c_linesda; 216462306a36Sopenharmony_ci uint8_t vrsensorpresent; 216562306a36Sopenharmony_ci uint8_t liquidsensorpresent; 216662306a36Sopenharmony_ci 216762306a36Sopenharmony_ci uint16_t maxvoltagestepgfx; 216862306a36Sopenharmony_ci uint16_t maxvoltagestepsoc; 216962306a36Sopenharmony_ci 217062306a36Sopenharmony_ci uint8_t vddgfxvrmapping; 217162306a36Sopenharmony_ci uint8_t vddsocvrmapping; 217262306a36Sopenharmony_ci uint8_t vddmem0vrmapping; 217362306a36Sopenharmony_ci uint8_t vddmem1vrmapping; 217462306a36Sopenharmony_ci 217562306a36Sopenharmony_ci uint8_t gfxulvphasesheddingmask; 217662306a36Sopenharmony_ci uint8_t soculvphasesheddingmask; 217762306a36Sopenharmony_ci uint8_t padding8_v[2]; 217862306a36Sopenharmony_ci 217962306a36Sopenharmony_ci uint16_t gfxmaxcurrent; 218062306a36Sopenharmony_ci uint8_t gfxoffset; 218162306a36Sopenharmony_ci uint8_t padding_telemetrygfx; 218262306a36Sopenharmony_ci 218362306a36Sopenharmony_ci uint16_t socmaxcurrent; 218462306a36Sopenharmony_ci uint8_t socoffset; 218562306a36Sopenharmony_ci uint8_t padding_telemetrysoc; 218662306a36Sopenharmony_ci 218762306a36Sopenharmony_ci uint16_t mem0maxcurrent; 218862306a36Sopenharmony_ci uint8_t mem0offset; 218962306a36Sopenharmony_ci uint8_t padding_telemetrymem0; 219062306a36Sopenharmony_ci 219162306a36Sopenharmony_ci uint16_t mem1maxcurrent; 219262306a36Sopenharmony_ci uint8_t mem1offset; 219362306a36Sopenharmony_ci uint8_t padding_telemetrymem1; 219462306a36Sopenharmony_ci 219562306a36Sopenharmony_ci uint8_t acdcgpio; 219662306a36Sopenharmony_ci uint8_t acdcpolarity; 219762306a36Sopenharmony_ci uint8_t vr0hotgpio; 219862306a36Sopenharmony_ci uint8_t vr0hotpolarity; 219962306a36Sopenharmony_ci 220062306a36Sopenharmony_ci uint8_t vr1hotgpio; 220162306a36Sopenharmony_ci uint8_t vr1hotpolarity; 220262306a36Sopenharmony_ci uint8_t padding1; 220362306a36Sopenharmony_ci uint8_t padding2; 220462306a36Sopenharmony_ci 220562306a36Sopenharmony_ci uint8_t ledpin0; 220662306a36Sopenharmony_ci uint8_t ledpin1; 220762306a36Sopenharmony_ci uint8_t ledpin2; 220862306a36Sopenharmony_ci uint8_t padding8_4; 220962306a36Sopenharmony_ci 221062306a36Sopenharmony_ci uint8_t pllgfxclkspreadenabled; 221162306a36Sopenharmony_ci uint8_t pllgfxclkspreadpercent; 221262306a36Sopenharmony_ci uint16_t pllgfxclkspreadfreq; 221362306a36Sopenharmony_ci 221462306a36Sopenharmony_ci uint8_t uclkspreadenabled; 221562306a36Sopenharmony_ci uint8_t uclkspreadpercent; 221662306a36Sopenharmony_ci uint16_t uclkspreadfreq; 221762306a36Sopenharmony_ci 221862306a36Sopenharmony_ci uint8_t socclkspreadenabled; 221962306a36Sopenharmony_ci uint8_t socclkspreadpercent; 222062306a36Sopenharmony_ci uint16_t socclkspreadfreq; 222162306a36Sopenharmony_ci 222262306a36Sopenharmony_ci uint8_t acggfxclkspreadenabled; 222362306a36Sopenharmony_ci uint8_t acggfxclkspreadpercent; 222462306a36Sopenharmony_ci uint16_t acggfxclkspreadfreq; 222562306a36Sopenharmony_ci 222662306a36Sopenharmony_ci uint8_t Vr2_I2C_address; 222762306a36Sopenharmony_ci uint8_t padding_vr2[3]; 222862306a36Sopenharmony_ci 222962306a36Sopenharmony_ci uint32_t boardreserved[9]; 223062306a36Sopenharmony_ci}; 223162306a36Sopenharmony_ci 223262306a36Sopenharmony_ci/* 223362306a36Sopenharmony_ci *************************************************************************** 223462306a36Sopenharmony_ci Data Table smc_dpm_info structure 223562306a36Sopenharmony_ci *************************************************************************** 223662306a36Sopenharmony_ci */ 223762306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_3 223862306a36Sopenharmony_ci{ 223962306a36Sopenharmony_ci struct atom_common_table_header table_header; 224062306a36Sopenharmony_ci uint8_t liquid1_i2c_address; 224162306a36Sopenharmony_ci uint8_t liquid2_i2c_address; 224262306a36Sopenharmony_ci uint8_t vr_i2c_address; 224362306a36Sopenharmony_ci uint8_t plx_i2c_address; 224462306a36Sopenharmony_ci 224562306a36Sopenharmony_ci uint8_t liquid_i2c_linescl; 224662306a36Sopenharmony_ci uint8_t liquid_i2c_linesda; 224762306a36Sopenharmony_ci uint8_t vr_i2c_linescl; 224862306a36Sopenharmony_ci uint8_t vr_i2c_linesda; 224962306a36Sopenharmony_ci 225062306a36Sopenharmony_ci uint8_t plx_i2c_linescl; 225162306a36Sopenharmony_ci uint8_t plx_i2c_linesda; 225262306a36Sopenharmony_ci uint8_t vrsensorpresent; 225362306a36Sopenharmony_ci uint8_t liquidsensorpresent; 225462306a36Sopenharmony_ci 225562306a36Sopenharmony_ci uint16_t maxvoltagestepgfx; 225662306a36Sopenharmony_ci uint16_t maxvoltagestepsoc; 225762306a36Sopenharmony_ci 225862306a36Sopenharmony_ci uint8_t vddgfxvrmapping; 225962306a36Sopenharmony_ci uint8_t vddsocvrmapping; 226062306a36Sopenharmony_ci uint8_t vddmem0vrmapping; 226162306a36Sopenharmony_ci uint8_t vddmem1vrmapping; 226262306a36Sopenharmony_ci 226362306a36Sopenharmony_ci uint8_t gfxulvphasesheddingmask; 226462306a36Sopenharmony_ci uint8_t soculvphasesheddingmask; 226562306a36Sopenharmony_ci uint8_t externalsensorpresent; 226662306a36Sopenharmony_ci uint8_t padding8_v; 226762306a36Sopenharmony_ci 226862306a36Sopenharmony_ci uint16_t gfxmaxcurrent; 226962306a36Sopenharmony_ci uint8_t gfxoffset; 227062306a36Sopenharmony_ci uint8_t padding_telemetrygfx; 227162306a36Sopenharmony_ci 227262306a36Sopenharmony_ci uint16_t socmaxcurrent; 227362306a36Sopenharmony_ci uint8_t socoffset; 227462306a36Sopenharmony_ci uint8_t padding_telemetrysoc; 227562306a36Sopenharmony_ci 227662306a36Sopenharmony_ci uint16_t mem0maxcurrent; 227762306a36Sopenharmony_ci uint8_t mem0offset; 227862306a36Sopenharmony_ci uint8_t padding_telemetrymem0; 227962306a36Sopenharmony_ci 228062306a36Sopenharmony_ci uint16_t mem1maxcurrent; 228162306a36Sopenharmony_ci uint8_t mem1offset; 228262306a36Sopenharmony_ci uint8_t padding_telemetrymem1; 228362306a36Sopenharmony_ci 228462306a36Sopenharmony_ci uint8_t acdcgpio; 228562306a36Sopenharmony_ci uint8_t acdcpolarity; 228662306a36Sopenharmony_ci uint8_t vr0hotgpio; 228762306a36Sopenharmony_ci uint8_t vr0hotpolarity; 228862306a36Sopenharmony_ci 228962306a36Sopenharmony_ci uint8_t vr1hotgpio; 229062306a36Sopenharmony_ci uint8_t vr1hotpolarity; 229162306a36Sopenharmony_ci uint8_t padding1; 229262306a36Sopenharmony_ci uint8_t padding2; 229362306a36Sopenharmony_ci 229462306a36Sopenharmony_ci uint8_t ledpin0; 229562306a36Sopenharmony_ci uint8_t ledpin1; 229662306a36Sopenharmony_ci uint8_t ledpin2; 229762306a36Sopenharmony_ci uint8_t padding8_4; 229862306a36Sopenharmony_ci 229962306a36Sopenharmony_ci uint8_t pllgfxclkspreadenabled; 230062306a36Sopenharmony_ci uint8_t pllgfxclkspreadpercent; 230162306a36Sopenharmony_ci uint16_t pllgfxclkspreadfreq; 230262306a36Sopenharmony_ci 230362306a36Sopenharmony_ci uint8_t uclkspreadenabled; 230462306a36Sopenharmony_ci uint8_t uclkspreadpercent; 230562306a36Sopenharmony_ci uint16_t uclkspreadfreq; 230662306a36Sopenharmony_ci 230762306a36Sopenharmony_ci uint8_t fclkspreadenabled; 230862306a36Sopenharmony_ci uint8_t fclkspreadpercent; 230962306a36Sopenharmony_ci uint16_t fclkspreadfreq; 231062306a36Sopenharmony_ci 231162306a36Sopenharmony_ci uint8_t fllgfxclkspreadenabled; 231262306a36Sopenharmony_ci uint8_t fllgfxclkspreadpercent; 231362306a36Sopenharmony_ci uint16_t fllgfxclkspreadfreq; 231462306a36Sopenharmony_ci 231562306a36Sopenharmony_ci uint32_t boardreserved[10]; 231662306a36Sopenharmony_ci}; 231762306a36Sopenharmony_ci 231862306a36Sopenharmony_cistruct smudpm_i2ccontrollerconfig_t { 231962306a36Sopenharmony_ci uint32_t enabled; 232062306a36Sopenharmony_ci uint32_t slaveaddress; 232162306a36Sopenharmony_ci uint32_t controllerport; 232262306a36Sopenharmony_ci uint32_t controllername; 232362306a36Sopenharmony_ci uint32_t thermalthrottler; 232462306a36Sopenharmony_ci uint32_t i2cprotocol; 232562306a36Sopenharmony_ci uint32_t i2cspeed; 232662306a36Sopenharmony_ci}; 232762306a36Sopenharmony_ci 232862306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_4 232962306a36Sopenharmony_ci{ 233062306a36Sopenharmony_ci struct atom_common_table_header table_header; 233162306a36Sopenharmony_ci uint32_t i2c_padding[3]; 233262306a36Sopenharmony_ci 233362306a36Sopenharmony_ci uint16_t maxvoltagestepgfx; 233462306a36Sopenharmony_ci uint16_t maxvoltagestepsoc; 233562306a36Sopenharmony_ci 233662306a36Sopenharmony_ci uint8_t vddgfxvrmapping; 233762306a36Sopenharmony_ci uint8_t vddsocvrmapping; 233862306a36Sopenharmony_ci uint8_t vddmem0vrmapping; 233962306a36Sopenharmony_ci uint8_t vddmem1vrmapping; 234062306a36Sopenharmony_ci 234162306a36Sopenharmony_ci uint8_t gfxulvphasesheddingmask; 234262306a36Sopenharmony_ci uint8_t soculvphasesheddingmask; 234362306a36Sopenharmony_ci uint8_t externalsensorpresent; 234462306a36Sopenharmony_ci uint8_t padding8_v; 234562306a36Sopenharmony_ci 234662306a36Sopenharmony_ci uint16_t gfxmaxcurrent; 234762306a36Sopenharmony_ci uint8_t gfxoffset; 234862306a36Sopenharmony_ci uint8_t padding_telemetrygfx; 234962306a36Sopenharmony_ci 235062306a36Sopenharmony_ci uint16_t socmaxcurrent; 235162306a36Sopenharmony_ci uint8_t socoffset; 235262306a36Sopenharmony_ci uint8_t padding_telemetrysoc; 235362306a36Sopenharmony_ci 235462306a36Sopenharmony_ci uint16_t mem0maxcurrent; 235562306a36Sopenharmony_ci uint8_t mem0offset; 235662306a36Sopenharmony_ci uint8_t padding_telemetrymem0; 235762306a36Sopenharmony_ci 235862306a36Sopenharmony_ci uint16_t mem1maxcurrent; 235962306a36Sopenharmony_ci uint8_t mem1offset; 236062306a36Sopenharmony_ci uint8_t padding_telemetrymem1; 236162306a36Sopenharmony_ci 236262306a36Sopenharmony_ci 236362306a36Sopenharmony_ci uint8_t acdcgpio; 236462306a36Sopenharmony_ci uint8_t acdcpolarity; 236562306a36Sopenharmony_ci uint8_t vr0hotgpio; 236662306a36Sopenharmony_ci uint8_t vr0hotpolarity; 236762306a36Sopenharmony_ci 236862306a36Sopenharmony_ci uint8_t vr1hotgpio; 236962306a36Sopenharmony_ci uint8_t vr1hotpolarity; 237062306a36Sopenharmony_ci uint8_t padding1; 237162306a36Sopenharmony_ci uint8_t padding2; 237262306a36Sopenharmony_ci 237362306a36Sopenharmony_ci 237462306a36Sopenharmony_ci uint8_t ledpin0; 237562306a36Sopenharmony_ci uint8_t ledpin1; 237662306a36Sopenharmony_ci uint8_t ledpin2; 237762306a36Sopenharmony_ci uint8_t padding8_4; 237862306a36Sopenharmony_ci 237962306a36Sopenharmony_ci 238062306a36Sopenharmony_ci uint8_t pllgfxclkspreadenabled; 238162306a36Sopenharmony_ci uint8_t pllgfxclkspreadpercent; 238262306a36Sopenharmony_ci uint16_t pllgfxclkspreadfreq; 238362306a36Sopenharmony_ci 238462306a36Sopenharmony_ci 238562306a36Sopenharmony_ci uint8_t uclkspreadenabled; 238662306a36Sopenharmony_ci uint8_t uclkspreadpercent; 238762306a36Sopenharmony_ci uint16_t uclkspreadfreq; 238862306a36Sopenharmony_ci 238962306a36Sopenharmony_ci 239062306a36Sopenharmony_ci uint8_t fclkspreadenabled; 239162306a36Sopenharmony_ci uint8_t fclkspreadpercent; 239262306a36Sopenharmony_ci uint16_t fclkspreadfreq; 239362306a36Sopenharmony_ci 239462306a36Sopenharmony_ci 239562306a36Sopenharmony_ci uint8_t fllgfxclkspreadenabled; 239662306a36Sopenharmony_ci uint8_t fllgfxclkspreadpercent; 239762306a36Sopenharmony_ci uint16_t fllgfxclkspreadfreq; 239862306a36Sopenharmony_ci 239962306a36Sopenharmony_ci 240062306a36Sopenharmony_ci struct smudpm_i2ccontrollerconfig_t i2ccontrollers[7]; 240162306a36Sopenharmony_ci 240262306a36Sopenharmony_ci 240362306a36Sopenharmony_ci uint32_t boardreserved[10]; 240462306a36Sopenharmony_ci}; 240562306a36Sopenharmony_ci 240662306a36Sopenharmony_cienum smudpm_v4_5_i2ccontrollername_e{ 240762306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_VR_GFX = 0, 240862306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_VR_SOC, 240962306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_VR_VDDCI, 241062306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_VR_MVDD, 241162306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_LIQUID0, 241262306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_LIQUID1, 241362306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_PLX, 241462306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_SPARE, 241562306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_NAME_COUNT, 241662306a36Sopenharmony_ci}; 241762306a36Sopenharmony_ci 241862306a36Sopenharmony_cienum smudpm_v4_5_i2ccontrollerthrottler_e{ 241962306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_TYPE_NONE = 0, 242062306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_GFX, 242162306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_SOC, 242262306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_VDDCI, 242362306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_VR_MVDD, 242462306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_LIQUID0, 242562306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_LIQUID1, 242662306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_PLX, 242762306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_THROTTLER_COUNT, 242862306a36Sopenharmony_ci}; 242962306a36Sopenharmony_ci 243062306a36Sopenharmony_cienum smudpm_v4_5_i2ccontrollerprotocol_e{ 243162306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_VR_0, 243262306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_VR_1, 243362306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_TMP_0, 243462306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_TMP_1, 243562306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_SPARE_0, 243662306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_SPARE_1, 243762306a36Sopenharmony_ci SMC_V4_5_I2C_CONTROLLER_PROTOCOL_COUNT, 243862306a36Sopenharmony_ci}; 243962306a36Sopenharmony_ci 244062306a36Sopenharmony_cistruct smudpm_i2c_controller_config_v2 244162306a36Sopenharmony_ci{ 244262306a36Sopenharmony_ci uint8_t Enabled; 244362306a36Sopenharmony_ci uint8_t Speed; 244462306a36Sopenharmony_ci uint8_t Padding[2]; 244562306a36Sopenharmony_ci uint32_t SlaveAddress; 244662306a36Sopenharmony_ci uint8_t ControllerPort; 244762306a36Sopenharmony_ci uint8_t ControllerName; 244862306a36Sopenharmony_ci uint8_t ThermalThrotter; 244962306a36Sopenharmony_ci uint8_t I2cProtocol; 245062306a36Sopenharmony_ci}; 245162306a36Sopenharmony_ci 245262306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_5 245362306a36Sopenharmony_ci{ 245462306a36Sopenharmony_ci struct atom_common_table_header table_header; 245562306a36Sopenharmony_ci // SECTION: BOARD PARAMETERS 245662306a36Sopenharmony_ci // I2C Control 245762306a36Sopenharmony_ci struct smudpm_i2c_controller_config_v2 I2cControllers[8]; 245862306a36Sopenharmony_ci 245962306a36Sopenharmony_ci // SVI2 Board Parameters 246062306a36Sopenharmony_ci uint16_t MaxVoltageStepGfx; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. 246162306a36Sopenharmony_ci uint16_t MaxVoltageStepSoc; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. 246262306a36Sopenharmony_ci 246362306a36Sopenharmony_ci uint8_t VddGfxVrMapping; // Use VR_MAPPING* bitfields 246462306a36Sopenharmony_ci uint8_t VddSocVrMapping; // Use VR_MAPPING* bitfields 246562306a36Sopenharmony_ci uint8_t VddMem0VrMapping; // Use VR_MAPPING* bitfields 246662306a36Sopenharmony_ci uint8_t VddMem1VrMapping; // Use VR_MAPPING* bitfields 246762306a36Sopenharmony_ci 246862306a36Sopenharmony_ci uint8_t GfxUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 246962306a36Sopenharmony_ci uint8_t SocUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 247062306a36Sopenharmony_ci uint8_t ExternalSensorPresent; // External RDI connected to TMON (aka TEMP IN) 247162306a36Sopenharmony_ci uint8_t Padding8_V; 247262306a36Sopenharmony_ci 247362306a36Sopenharmony_ci // Telemetry Settings 247462306a36Sopenharmony_ci uint16_t GfxMaxCurrent; // in Amps 247562306a36Sopenharmony_ci uint8_t GfxOffset; // in Amps 247662306a36Sopenharmony_ci uint8_t Padding_TelemetryGfx; 247762306a36Sopenharmony_ci uint16_t SocMaxCurrent; // in Amps 247862306a36Sopenharmony_ci uint8_t SocOffset; // in Amps 247962306a36Sopenharmony_ci uint8_t Padding_TelemetrySoc; 248062306a36Sopenharmony_ci 248162306a36Sopenharmony_ci uint16_t Mem0MaxCurrent; // in Amps 248262306a36Sopenharmony_ci uint8_t Mem0Offset; // in Amps 248362306a36Sopenharmony_ci uint8_t Padding_TelemetryMem0; 248462306a36Sopenharmony_ci 248562306a36Sopenharmony_ci uint16_t Mem1MaxCurrent; // in Amps 248662306a36Sopenharmony_ci uint8_t Mem1Offset; // in Amps 248762306a36Sopenharmony_ci uint8_t Padding_TelemetryMem1; 248862306a36Sopenharmony_ci 248962306a36Sopenharmony_ci // GPIO Settings 249062306a36Sopenharmony_ci uint8_t AcDcGpio; // GPIO pin configured for AC/DC switching 249162306a36Sopenharmony_ci uint8_t AcDcPolarity; // GPIO polarity for AC/DC switching 249262306a36Sopenharmony_ci uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event 249362306a36Sopenharmony_ci uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event 249462306a36Sopenharmony_ci 249562306a36Sopenharmony_ci uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event 249662306a36Sopenharmony_ci uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event 249762306a36Sopenharmony_ci uint8_t GthrGpio; // GPIO pin configured for GTHR Event 249862306a36Sopenharmony_ci uint8_t GthrPolarity; // replace GPIO polarity for GTHR 249962306a36Sopenharmony_ci 250062306a36Sopenharmony_ci // LED Display Settings 250162306a36Sopenharmony_ci uint8_t LedPin0; // GPIO number for LedPin[0] 250262306a36Sopenharmony_ci uint8_t LedPin1; // GPIO number for LedPin[1] 250362306a36Sopenharmony_ci uint8_t LedPin2; // GPIO number for LedPin[2] 250462306a36Sopenharmony_ci uint8_t padding8_4; 250562306a36Sopenharmony_ci 250662306a36Sopenharmony_ci // GFXCLK PLL Spread Spectrum 250762306a36Sopenharmony_ci uint8_t PllGfxclkSpreadEnabled; // on or off 250862306a36Sopenharmony_ci uint8_t PllGfxclkSpreadPercent; // Q4.4 250962306a36Sopenharmony_ci uint16_t PllGfxclkSpreadFreq; // kHz 251062306a36Sopenharmony_ci 251162306a36Sopenharmony_ci // GFXCLK DFLL Spread Spectrum 251262306a36Sopenharmony_ci uint8_t DfllGfxclkSpreadEnabled; // on or off 251362306a36Sopenharmony_ci uint8_t DfllGfxclkSpreadPercent; // Q4.4 251462306a36Sopenharmony_ci uint16_t DfllGfxclkSpreadFreq; // kHz 251562306a36Sopenharmony_ci 251662306a36Sopenharmony_ci // UCLK Spread Spectrum 251762306a36Sopenharmony_ci uint8_t UclkSpreadEnabled; // on or off 251862306a36Sopenharmony_ci uint8_t UclkSpreadPercent; // Q4.4 251962306a36Sopenharmony_ci uint16_t UclkSpreadFreq; // kHz 252062306a36Sopenharmony_ci 252162306a36Sopenharmony_ci // SOCCLK Spread Spectrum 252262306a36Sopenharmony_ci uint8_t SoclkSpreadEnabled; // on or off 252362306a36Sopenharmony_ci uint8_t SocclkSpreadPercent; // Q4.4 252462306a36Sopenharmony_ci uint16_t SocclkSpreadFreq; // kHz 252562306a36Sopenharmony_ci 252662306a36Sopenharmony_ci // Total board power 252762306a36Sopenharmony_ci uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power 252862306a36Sopenharmony_ci uint16_t BoardPadding; 252962306a36Sopenharmony_ci 253062306a36Sopenharmony_ci // Mvdd Svi2 Div Ratio Setting 253162306a36Sopenharmony_ci uint32_t MvddRatio; // This is used for MVDD Vid workaround. It has 16 fractional bits (Q16.16) 253262306a36Sopenharmony_ci 253362306a36Sopenharmony_ci uint32_t BoardReserved[9]; 253462306a36Sopenharmony_ci 253562306a36Sopenharmony_ci}; 253662306a36Sopenharmony_ci 253762306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_6 253862306a36Sopenharmony_ci{ 253962306a36Sopenharmony_ci struct atom_common_table_header table_header; 254062306a36Sopenharmony_ci // section: board parameters 254162306a36Sopenharmony_ci uint32_t i2c_padding[3]; // old i2c control are moved to new area 254262306a36Sopenharmony_ci 254362306a36Sopenharmony_ci uint16_t maxvoltagestepgfx; // in mv(q2) max voltage step that smu will request. multiple steps are taken if voltage change exceeds this value. 254462306a36Sopenharmony_ci uint16_t maxvoltagestepsoc; // in mv(q2) max voltage step that smu will request. multiple steps are taken if voltage change exceeds this value. 254562306a36Sopenharmony_ci 254662306a36Sopenharmony_ci uint8_t vddgfxvrmapping; // use vr_mapping* bitfields 254762306a36Sopenharmony_ci uint8_t vddsocvrmapping; // use vr_mapping* bitfields 254862306a36Sopenharmony_ci uint8_t vddmemvrmapping; // use vr_mapping* bitfields 254962306a36Sopenharmony_ci uint8_t boardvrmapping; // use vr_mapping* bitfields 255062306a36Sopenharmony_ci 255162306a36Sopenharmony_ci uint8_t gfxulvphasesheddingmask; // set this to 1 to set psi0/1 to 1 in ulv mode 255262306a36Sopenharmony_ci uint8_t externalsensorpresent; // external rdi connected to tmon (aka temp in) 255362306a36Sopenharmony_ci uint8_t padding8_v[2]; 255462306a36Sopenharmony_ci 255562306a36Sopenharmony_ci // telemetry settings 255662306a36Sopenharmony_ci uint16_t gfxmaxcurrent; // in amps 255762306a36Sopenharmony_ci uint8_t gfxoffset; // in amps 255862306a36Sopenharmony_ci uint8_t padding_telemetrygfx; 255962306a36Sopenharmony_ci 256062306a36Sopenharmony_ci uint16_t socmaxcurrent; // in amps 256162306a36Sopenharmony_ci uint8_t socoffset; // in amps 256262306a36Sopenharmony_ci uint8_t padding_telemetrysoc; 256362306a36Sopenharmony_ci 256462306a36Sopenharmony_ci uint16_t memmaxcurrent; // in amps 256562306a36Sopenharmony_ci uint8_t memoffset; // in amps 256662306a36Sopenharmony_ci uint8_t padding_telemetrymem; 256762306a36Sopenharmony_ci 256862306a36Sopenharmony_ci uint16_t boardmaxcurrent; // in amps 256962306a36Sopenharmony_ci uint8_t boardoffset; // in amps 257062306a36Sopenharmony_ci uint8_t padding_telemetryboardinput; 257162306a36Sopenharmony_ci 257262306a36Sopenharmony_ci // gpio settings 257362306a36Sopenharmony_ci uint8_t vr0hotgpio; // gpio pin configured for vr0 hot event 257462306a36Sopenharmony_ci uint8_t vr0hotpolarity; // gpio polarity for vr0 hot event 257562306a36Sopenharmony_ci uint8_t vr1hotgpio; // gpio pin configured for vr1 hot event 257662306a36Sopenharmony_ci uint8_t vr1hotpolarity; // gpio polarity for vr1 hot event 257762306a36Sopenharmony_ci 257862306a36Sopenharmony_ci // gfxclk pll spread spectrum 257962306a36Sopenharmony_ci uint8_t pllgfxclkspreadenabled; // on or off 258062306a36Sopenharmony_ci uint8_t pllgfxclkspreadpercent; // q4.4 258162306a36Sopenharmony_ci uint16_t pllgfxclkspreadfreq; // khz 258262306a36Sopenharmony_ci 258362306a36Sopenharmony_ci // uclk spread spectrum 258462306a36Sopenharmony_ci uint8_t uclkspreadenabled; // on or off 258562306a36Sopenharmony_ci uint8_t uclkspreadpercent; // q4.4 258662306a36Sopenharmony_ci uint16_t uclkspreadfreq; // khz 258762306a36Sopenharmony_ci 258862306a36Sopenharmony_ci // fclk spread spectrum 258962306a36Sopenharmony_ci uint8_t fclkspreadenabled; // on or off 259062306a36Sopenharmony_ci uint8_t fclkspreadpercent; // q4.4 259162306a36Sopenharmony_ci uint16_t fclkspreadfreq; // khz 259262306a36Sopenharmony_ci 259362306a36Sopenharmony_ci 259462306a36Sopenharmony_ci // gfxclk fll spread spectrum 259562306a36Sopenharmony_ci uint8_t fllgfxclkspreadenabled; // on or off 259662306a36Sopenharmony_ci uint8_t fllgfxclkspreadpercent; // q4.4 259762306a36Sopenharmony_ci uint16_t fllgfxclkspreadfreq; // khz 259862306a36Sopenharmony_ci 259962306a36Sopenharmony_ci // i2c controller structure 260062306a36Sopenharmony_ci struct smudpm_i2c_controller_config_v2 i2ccontrollers[8]; 260162306a36Sopenharmony_ci 260262306a36Sopenharmony_ci // memory section 260362306a36Sopenharmony_ci uint32_t memorychannelenabled; // for dram use only, max 32 channels enabled bit mask. 260462306a36Sopenharmony_ci 260562306a36Sopenharmony_ci uint8_t drambitwidth; // for dram use only. see dram bit width type defines 260662306a36Sopenharmony_ci uint8_t paddingmem[3]; 260762306a36Sopenharmony_ci 260862306a36Sopenharmony_ci // total board power 260962306a36Sopenharmony_ci uint16_t totalboardpower; //only needed for tcp estimated case, where tcp = tgp+total board power 261062306a36Sopenharmony_ci uint16_t boardpadding; 261162306a36Sopenharmony_ci 261262306a36Sopenharmony_ci // section: xgmi training 261362306a36Sopenharmony_ci uint8_t xgmilinkspeed[4]; 261462306a36Sopenharmony_ci uint8_t xgmilinkwidth[4]; 261562306a36Sopenharmony_ci 261662306a36Sopenharmony_ci uint16_t xgmifclkfreq[4]; 261762306a36Sopenharmony_ci uint16_t xgmisocvoltage[4]; 261862306a36Sopenharmony_ci 261962306a36Sopenharmony_ci // reserved 262062306a36Sopenharmony_ci uint32_t boardreserved[10]; 262162306a36Sopenharmony_ci}; 262262306a36Sopenharmony_ci 262362306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_7 262462306a36Sopenharmony_ci{ 262562306a36Sopenharmony_ci struct atom_common_table_header table_header; 262662306a36Sopenharmony_ci // SECTION: BOARD PARAMETERS 262762306a36Sopenharmony_ci // I2C Control 262862306a36Sopenharmony_ci struct smudpm_i2c_controller_config_v2 I2cControllers[8]; 262962306a36Sopenharmony_ci 263062306a36Sopenharmony_ci // SVI2 Board Parameters 263162306a36Sopenharmony_ci uint16_t MaxVoltageStepGfx; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. 263262306a36Sopenharmony_ci uint16_t MaxVoltageStepSoc; // In mV(Q2) Max voltage step that SMU will request. Multiple steps are taken if voltage change exceeds this value. 263362306a36Sopenharmony_ci 263462306a36Sopenharmony_ci uint8_t VddGfxVrMapping; // Use VR_MAPPING* bitfields 263562306a36Sopenharmony_ci uint8_t VddSocVrMapping; // Use VR_MAPPING* bitfields 263662306a36Sopenharmony_ci uint8_t VddMem0VrMapping; // Use VR_MAPPING* bitfields 263762306a36Sopenharmony_ci uint8_t VddMem1VrMapping; // Use VR_MAPPING* bitfields 263862306a36Sopenharmony_ci 263962306a36Sopenharmony_ci uint8_t GfxUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 264062306a36Sopenharmony_ci uint8_t SocUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 264162306a36Sopenharmony_ci uint8_t ExternalSensorPresent; // External RDI connected to TMON (aka TEMP IN) 264262306a36Sopenharmony_ci uint8_t Padding8_V; 264362306a36Sopenharmony_ci 264462306a36Sopenharmony_ci // Telemetry Settings 264562306a36Sopenharmony_ci uint16_t GfxMaxCurrent; // in Amps 264662306a36Sopenharmony_ci uint8_t GfxOffset; // in Amps 264762306a36Sopenharmony_ci uint8_t Padding_TelemetryGfx; 264862306a36Sopenharmony_ci uint16_t SocMaxCurrent; // in Amps 264962306a36Sopenharmony_ci uint8_t SocOffset; // in Amps 265062306a36Sopenharmony_ci uint8_t Padding_TelemetrySoc; 265162306a36Sopenharmony_ci 265262306a36Sopenharmony_ci uint16_t Mem0MaxCurrent; // in Amps 265362306a36Sopenharmony_ci uint8_t Mem0Offset; // in Amps 265462306a36Sopenharmony_ci uint8_t Padding_TelemetryMem0; 265562306a36Sopenharmony_ci 265662306a36Sopenharmony_ci uint16_t Mem1MaxCurrent; // in Amps 265762306a36Sopenharmony_ci uint8_t Mem1Offset; // in Amps 265862306a36Sopenharmony_ci uint8_t Padding_TelemetryMem1; 265962306a36Sopenharmony_ci 266062306a36Sopenharmony_ci // GPIO Settings 266162306a36Sopenharmony_ci uint8_t AcDcGpio; // GPIO pin configured for AC/DC switching 266262306a36Sopenharmony_ci uint8_t AcDcPolarity; // GPIO polarity for AC/DC switching 266362306a36Sopenharmony_ci uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event 266462306a36Sopenharmony_ci uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event 266562306a36Sopenharmony_ci 266662306a36Sopenharmony_ci uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event 266762306a36Sopenharmony_ci uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event 266862306a36Sopenharmony_ci uint8_t GthrGpio; // GPIO pin configured for GTHR Event 266962306a36Sopenharmony_ci uint8_t GthrPolarity; // replace GPIO polarity for GTHR 267062306a36Sopenharmony_ci 267162306a36Sopenharmony_ci // LED Display Settings 267262306a36Sopenharmony_ci uint8_t LedPin0; // GPIO number for LedPin[0] 267362306a36Sopenharmony_ci uint8_t LedPin1; // GPIO number for LedPin[1] 267462306a36Sopenharmony_ci uint8_t LedPin2; // GPIO number for LedPin[2] 267562306a36Sopenharmony_ci uint8_t padding8_4; 267662306a36Sopenharmony_ci 267762306a36Sopenharmony_ci // GFXCLK PLL Spread Spectrum 267862306a36Sopenharmony_ci uint8_t PllGfxclkSpreadEnabled; // on or off 267962306a36Sopenharmony_ci uint8_t PllGfxclkSpreadPercent; // Q4.4 268062306a36Sopenharmony_ci uint16_t PllGfxclkSpreadFreq; // kHz 268162306a36Sopenharmony_ci 268262306a36Sopenharmony_ci // GFXCLK DFLL Spread Spectrum 268362306a36Sopenharmony_ci uint8_t DfllGfxclkSpreadEnabled; // on or off 268462306a36Sopenharmony_ci uint8_t DfllGfxclkSpreadPercent; // Q4.4 268562306a36Sopenharmony_ci uint16_t DfllGfxclkSpreadFreq; // kHz 268662306a36Sopenharmony_ci 268762306a36Sopenharmony_ci // UCLK Spread Spectrum 268862306a36Sopenharmony_ci uint8_t UclkSpreadEnabled; // on or off 268962306a36Sopenharmony_ci uint8_t UclkSpreadPercent; // Q4.4 269062306a36Sopenharmony_ci uint16_t UclkSpreadFreq; // kHz 269162306a36Sopenharmony_ci 269262306a36Sopenharmony_ci // SOCCLK Spread Spectrum 269362306a36Sopenharmony_ci uint8_t SoclkSpreadEnabled; // on or off 269462306a36Sopenharmony_ci uint8_t SocclkSpreadPercent; // Q4.4 269562306a36Sopenharmony_ci uint16_t SocclkSpreadFreq; // kHz 269662306a36Sopenharmony_ci 269762306a36Sopenharmony_ci // Total board power 269862306a36Sopenharmony_ci uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power 269962306a36Sopenharmony_ci uint16_t BoardPadding; 270062306a36Sopenharmony_ci 270162306a36Sopenharmony_ci // Mvdd Svi2 Div Ratio Setting 270262306a36Sopenharmony_ci uint32_t MvddRatio; // This is used for MVDD Vid workaround. It has 16 fractional bits (Q16.16) 270362306a36Sopenharmony_ci 270462306a36Sopenharmony_ci // GPIO pins for I2C communications with 2nd controller for Input Telemetry Sequence 270562306a36Sopenharmony_ci uint8_t GpioI2cScl; // Serial Clock 270662306a36Sopenharmony_ci uint8_t GpioI2cSda; // Serial Data 270762306a36Sopenharmony_ci uint16_t GpioPadding; 270862306a36Sopenharmony_ci 270962306a36Sopenharmony_ci // Additional LED Display Settings 271062306a36Sopenharmony_ci uint8_t LedPin3; // GPIO number for LedPin[3] - PCIE GEN Speed 271162306a36Sopenharmony_ci uint8_t LedPin4; // GPIO number for LedPin[4] - PMFW Error Status 271262306a36Sopenharmony_ci uint16_t LedEnableMask; 271362306a36Sopenharmony_ci 271462306a36Sopenharmony_ci // Power Limit Scalars 271562306a36Sopenharmony_ci uint8_t PowerLimitScalar[4]; //[PPT_THROTTLER_COUNT] 271662306a36Sopenharmony_ci 271762306a36Sopenharmony_ci uint8_t MvddUlvPhaseSheddingMask; 271862306a36Sopenharmony_ci uint8_t VddciUlvPhaseSheddingMask; 271962306a36Sopenharmony_ci uint8_t Padding8_Psi1; 272062306a36Sopenharmony_ci uint8_t Padding8_Psi2; 272162306a36Sopenharmony_ci 272262306a36Sopenharmony_ci uint32_t BoardReserved[5]; 272362306a36Sopenharmony_ci}; 272462306a36Sopenharmony_ci 272562306a36Sopenharmony_cistruct smudpm_i2c_controller_config_v3 272662306a36Sopenharmony_ci{ 272762306a36Sopenharmony_ci uint8_t Enabled; 272862306a36Sopenharmony_ci uint8_t Speed; 272962306a36Sopenharmony_ci uint8_t SlaveAddress; 273062306a36Sopenharmony_ci uint8_t ControllerPort; 273162306a36Sopenharmony_ci uint8_t ControllerName; 273262306a36Sopenharmony_ci uint8_t ThermalThrotter; 273362306a36Sopenharmony_ci uint8_t I2cProtocol; 273462306a36Sopenharmony_ci uint8_t PaddingConfig; 273562306a36Sopenharmony_ci}; 273662306a36Sopenharmony_ci 273762306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_9 273862306a36Sopenharmony_ci{ 273962306a36Sopenharmony_ci struct atom_common_table_header table_header; 274062306a36Sopenharmony_ci 274162306a36Sopenharmony_ci //SECTION: Gaming Clocks 274262306a36Sopenharmony_ci //uint32_t GamingClk[6]; 274362306a36Sopenharmony_ci 274462306a36Sopenharmony_ci // SECTION: I2C Control 274562306a36Sopenharmony_ci struct smudpm_i2c_controller_config_v3 I2cControllers[16]; 274662306a36Sopenharmony_ci 274762306a36Sopenharmony_ci uint8_t GpioScl; // GPIO Number for SCL Line, used only for CKSVII2C1 274862306a36Sopenharmony_ci uint8_t GpioSda; // GPIO Number for SDA Line, used only for CKSVII2C1 274962306a36Sopenharmony_ci uint8_t FchUsbPdSlaveAddr; //For requesting USB PD controller S-states via FCH I2C when entering PME turn off 275062306a36Sopenharmony_ci uint8_t I2cSpare; 275162306a36Sopenharmony_ci 275262306a36Sopenharmony_ci // SECTION: SVI2 Board Parameters 275362306a36Sopenharmony_ci uint8_t VddGfxVrMapping; // Use VR_MAPPING* bitfields 275462306a36Sopenharmony_ci uint8_t VddSocVrMapping; // Use VR_MAPPING* bitfields 275562306a36Sopenharmony_ci uint8_t VddMem0VrMapping; // Use VR_MAPPING* bitfields 275662306a36Sopenharmony_ci uint8_t VddMem1VrMapping; // Use VR_MAPPING* bitfields 275762306a36Sopenharmony_ci 275862306a36Sopenharmony_ci uint8_t GfxUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 275962306a36Sopenharmony_ci uint8_t SocUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 276062306a36Sopenharmony_ci uint8_t VddciUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 276162306a36Sopenharmony_ci uint8_t MvddUlvPhaseSheddingMask; // set this to 1 to set PSI0/1 to 1 in ULV mode 276262306a36Sopenharmony_ci 276362306a36Sopenharmony_ci // SECTION: Telemetry Settings 276462306a36Sopenharmony_ci uint16_t GfxMaxCurrent; // in Amps 276562306a36Sopenharmony_ci uint8_t GfxOffset; // in Amps 276662306a36Sopenharmony_ci uint8_t Padding_TelemetryGfx; 276762306a36Sopenharmony_ci 276862306a36Sopenharmony_ci uint16_t SocMaxCurrent; // in Amps 276962306a36Sopenharmony_ci uint8_t SocOffset; // in Amps 277062306a36Sopenharmony_ci uint8_t Padding_TelemetrySoc; 277162306a36Sopenharmony_ci 277262306a36Sopenharmony_ci uint16_t Mem0MaxCurrent; // in Amps 277362306a36Sopenharmony_ci uint8_t Mem0Offset; // in Amps 277462306a36Sopenharmony_ci uint8_t Padding_TelemetryMem0; 277562306a36Sopenharmony_ci 277662306a36Sopenharmony_ci uint16_t Mem1MaxCurrent; // in Amps 277762306a36Sopenharmony_ci uint8_t Mem1Offset; // in Amps 277862306a36Sopenharmony_ci uint8_t Padding_TelemetryMem1; 277962306a36Sopenharmony_ci 278062306a36Sopenharmony_ci uint32_t MvddRatio; // This is used for MVDD Svi2 Div Ratio workaround. It has 16 fractional bits (Q16.16) 278162306a36Sopenharmony_ci 278262306a36Sopenharmony_ci // SECTION: GPIO Settings 278362306a36Sopenharmony_ci uint8_t AcDcGpio; // GPIO pin configured for AC/DC switching 278462306a36Sopenharmony_ci uint8_t AcDcPolarity; // GPIO polarity for AC/DC switching 278562306a36Sopenharmony_ci uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event 278662306a36Sopenharmony_ci uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event 278762306a36Sopenharmony_ci 278862306a36Sopenharmony_ci uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event 278962306a36Sopenharmony_ci uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event 279062306a36Sopenharmony_ci uint8_t GthrGpio; // GPIO pin configured for GTHR Event 279162306a36Sopenharmony_ci uint8_t GthrPolarity; // replace GPIO polarity for GTHR 279262306a36Sopenharmony_ci 279362306a36Sopenharmony_ci // LED Display Settings 279462306a36Sopenharmony_ci uint8_t LedPin0; // GPIO number for LedPin[0] 279562306a36Sopenharmony_ci uint8_t LedPin1; // GPIO number for LedPin[1] 279662306a36Sopenharmony_ci uint8_t LedPin2; // GPIO number for LedPin[2] 279762306a36Sopenharmony_ci uint8_t LedEnableMask; 279862306a36Sopenharmony_ci 279962306a36Sopenharmony_ci uint8_t LedPcie; // GPIO number for PCIE results 280062306a36Sopenharmony_ci uint8_t LedError; // GPIO number for Error Cases 280162306a36Sopenharmony_ci uint8_t LedSpare1[2]; 280262306a36Sopenharmony_ci 280362306a36Sopenharmony_ci // SECTION: Clock Spread Spectrum 280462306a36Sopenharmony_ci 280562306a36Sopenharmony_ci // GFXCLK PLL Spread Spectrum 280662306a36Sopenharmony_ci uint8_t PllGfxclkSpreadEnabled; // on or off 280762306a36Sopenharmony_ci uint8_t PllGfxclkSpreadPercent; // Q4.4 280862306a36Sopenharmony_ci uint16_t PllGfxclkSpreadFreq; // kHz 280962306a36Sopenharmony_ci 281062306a36Sopenharmony_ci // GFXCLK DFLL Spread Spectrum 281162306a36Sopenharmony_ci uint8_t DfllGfxclkSpreadEnabled; // on or off 281262306a36Sopenharmony_ci uint8_t DfllGfxclkSpreadPercent; // Q4.4 281362306a36Sopenharmony_ci uint16_t DfllGfxclkSpreadFreq; // kHz 281462306a36Sopenharmony_ci 281562306a36Sopenharmony_ci // UCLK Spread Spectrum 281662306a36Sopenharmony_ci uint8_t UclkSpreadEnabled; // on or off 281762306a36Sopenharmony_ci uint8_t UclkSpreadPercent; // Q4.4 281862306a36Sopenharmony_ci uint16_t UclkSpreadFreq; // kHz 281962306a36Sopenharmony_ci 282062306a36Sopenharmony_ci // FCLK Spread Spectrum 282162306a36Sopenharmony_ci uint8_t FclkSpreadEnabled; // on or off 282262306a36Sopenharmony_ci uint8_t FclkSpreadPercent; // Q4.4 282362306a36Sopenharmony_ci uint16_t FclkSpreadFreq; // kHz 282462306a36Sopenharmony_ci 282562306a36Sopenharmony_ci // Section: Memory Config 282662306a36Sopenharmony_ci uint32_t MemoryChannelEnabled; // For DRAM use only, Max 32 channels enabled bit mask. 282762306a36Sopenharmony_ci 282862306a36Sopenharmony_ci uint8_t DramBitWidth; // For DRAM use only. See Dram Bit width type defines 282962306a36Sopenharmony_ci uint8_t PaddingMem1[3]; 283062306a36Sopenharmony_ci 283162306a36Sopenharmony_ci // Section: Total Board Power 283262306a36Sopenharmony_ci uint16_t TotalBoardPower; //Only needed for TCP Estimated case, where TCP = TGP+Total Board Power 283362306a36Sopenharmony_ci uint16_t BoardPowerPadding; 283462306a36Sopenharmony_ci 283562306a36Sopenharmony_ci // SECTION: XGMI Training 283662306a36Sopenharmony_ci uint8_t XgmiLinkSpeed [4]; 283762306a36Sopenharmony_ci uint8_t XgmiLinkWidth [4]; 283862306a36Sopenharmony_ci 283962306a36Sopenharmony_ci uint16_t XgmiFclkFreq [4]; 284062306a36Sopenharmony_ci uint16_t XgmiSocVoltage [4]; 284162306a36Sopenharmony_ci 284262306a36Sopenharmony_ci // SECTION: Board Reserved 284362306a36Sopenharmony_ci 284462306a36Sopenharmony_ci uint32_t BoardReserved[16]; 284562306a36Sopenharmony_ci 284662306a36Sopenharmony_ci}; 284762306a36Sopenharmony_ci 284862306a36Sopenharmony_cistruct atom_smc_dpm_info_v4_10 284962306a36Sopenharmony_ci{ 285062306a36Sopenharmony_ci struct atom_common_table_header table_header; 285162306a36Sopenharmony_ci 285262306a36Sopenharmony_ci // SECTION: BOARD PARAMETERS 285362306a36Sopenharmony_ci // Telemetry Settings 285462306a36Sopenharmony_ci uint16_t GfxMaxCurrent; // in Amps 285562306a36Sopenharmony_ci uint8_t GfxOffset; // in Amps 285662306a36Sopenharmony_ci uint8_t Padding_TelemetryGfx; 285762306a36Sopenharmony_ci 285862306a36Sopenharmony_ci uint16_t SocMaxCurrent; // in Amps 285962306a36Sopenharmony_ci uint8_t SocOffset; // in Amps 286062306a36Sopenharmony_ci uint8_t Padding_TelemetrySoc; 286162306a36Sopenharmony_ci 286262306a36Sopenharmony_ci uint16_t MemMaxCurrent; // in Amps 286362306a36Sopenharmony_ci uint8_t MemOffset; // in Amps 286462306a36Sopenharmony_ci uint8_t Padding_TelemetryMem; 286562306a36Sopenharmony_ci 286662306a36Sopenharmony_ci uint16_t BoardMaxCurrent; // in Amps 286762306a36Sopenharmony_ci uint8_t BoardOffset; // in Amps 286862306a36Sopenharmony_ci uint8_t Padding_TelemetryBoardInput; 286962306a36Sopenharmony_ci 287062306a36Sopenharmony_ci // Platform input telemetry voltage coefficient 287162306a36Sopenharmony_ci uint32_t BoardVoltageCoeffA; // decode by /1000 287262306a36Sopenharmony_ci uint32_t BoardVoltageCoeffB; // decode by /1000 287362306a36Sopenharmony_ci 287462306a36Sopenharmony_ci // GPIO Settings 287562306a36Sopenharmony_ci uint8_t VR0HotGpio; // GPIO pin configured for VR0 HOT event 287662306a36Sopenharmony_ci uint8_t VR0HotPolarity; // GPIO polarity for VR0 HOT event 287762306a36Sopenharmony_ci uint8_t VR1HotGpio; // GPIO pin configured for VR1 HOT event 287862306a36Sopenharmony_ci uint8_t VR1HotPolarity; // GPIO polarity for VR1 HOT event 287962306a36Sopenharmony_ci 288062306a36Sopenharmony_ci // UCLK Spread Spectrum 288162306a36Sopenharmony_ci uint8_t UclkSpreadEnabled; // on or off 288262306a36Sopenharmony_ci uint8_t UclkSpreadPercent; // Q4.4 288362306a36Sopenharmony_ci uint16_t UclkSpreadFreq; // kHz 288462306a36Sopenharmony_ci 288562306a36Sopenharmony_ci // FCLK Spread Spectrum 288662306a36Sopenharmony_ci uint8_t FclkSpreadEnabled; // on or off 288762306a36Sopenharmony_ci uint8_t FclkSpreadPercent; // Q4.4 288862306a36Sopenharmony_ci uint16_t FclkSpreadFreq; // kHz 288962306a36Sopenharmony_ci 289062306a36Sopenharmony_ci // I2C Controller Structure 289162306a36Sopenharmony_ci struct smudpm_i2c_controller_config_v3 I2cControllers[8]; 289262306a36Sopenharmony_ci 289362306a36Sopenharmony_ci // GPIO pins for I2C communications with 2nd controller for Input Telemetry Sequence 289462306a36Sopenharmony_ci uint8_t GpioI2cScl; // Serial Clock 289562306a36Sopenharmony_ci uint8_t GpioI2cSda; // Serial Data 289662306a36Sopenharmony_ci uint16_t spare5; 289762306a36Sopenharmony_ci 289862306a36Sopenharmony_ci uint32_t reserved[16]; 289962306a36Sopenharmony_ci}; 290062306a36Sopenharmony_ci 290162306a36Sopenharmony_ci/* 290262306a36Sopenharmony_ci *************************************************************************** 290362306a36Sopenharmony_ci Data Table asic_profiling_info structure 290462306a36Sopenharmony_ci *************************************************************************** 290562306a36Sopenharmony_ci*/ 290662306a36Sopenharmony_cistruct atom_asic_profiling_info_v4_1 290762306a36Sopenharmony_ci{ 290862306a36Sopenharmony_ci struct atom_common_table_header table_header; 290962306a36Sopenharmony_ci uint32_t maxvddc; 291062306a36Sopenharmony_ci uint32_t minvddc; 291162306a36Sopenharmony_ci uint32_t avfs_meannsigma_acontant0; 291262306a36Sopenharmony_ci uint32_t avfs_meannsigma_acontant1; 291362306a36Sopenharmony_ci uint32_t avfs_meannsigma_acontant2; 291462306a36Sopenharmony_ci uint16_t avfs_meannsigma_dc_tol_sigma; 291562306a36Sopenharmony_ci uint16_t avfs_meannsigma_platform_mean; 291662306a36Sopenharmony_ci uint16_t avfs_meannsigma_platform_sigma; 291762306a36Sopenharmony_ci uint32_t gb_vdroop_table_cksoff_a0; 291862306a36Sopenharmony_ci uint32_t gb_vdroop_table_cksoff_a1; 291962306a36Sopenharmony_ci uint32_t gb_vdroop_table_cksoff_a2; 292062306a36Sopenharmony_ci uint32_t gb_vdroop_table_ckson_a0; 292162306a36Sopenharmony_ci uint32_t gb_vdroop_table_ckson_a1; 292262306a36Sopenharmony_ci uint32_t gb_vdroop_table_ckson_a2; 292362306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_cksoff_m1; 292462306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_cksoff_m2; 292562306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_cksoff_b; 292662306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_ckson_m1; 292762306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_ckson_m2; 292862306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_ckson_b; 292962306a36Sopenharmony_ci uint16_t max_voltage_0_25mv; 293062306a36Sopenharmony_ci uint8_t enable_gb_vdroop_table_cksoff; 293162306a36Sopenharmony_ci uint8_t enable_gb_vdroop_table_ckson; 293262306a36Sopenharmony_ci uint8_t enable_gb_fuse_table_cksoff; 293362306a36Sopenharmony_ci uint8_t enable_gb_fuse_table_ckson; 293462306a36Sopenharmony_ci uint16_t psm_age_comfactor; 293562306a36Sopenharmony_ci uint8_t enable_apply_avfs_cksoff_voltage; 293662306a36Sopenharmony_ci uint8_t reserved; 293762306a36Sopenharmony_ci uint32_t dispclk2gfxclk_a; 293862306a36Sopenharmony_ci uint32_t dispclk2gfxclk_b; 293962306a36Sopenharmony_ci uint32_t dispclk2gfxclk_c; 294062306a36Sopenharmony_ci uint32_t pixclk2gfxclk_a; 294162306a36Sopenharmony_ci uint32_t pixclk2gfxclk_b; 294262306a36Sopenharmony_ci uint32_t pixclk2gfxclk_c; 294362306a36Sopenharmony_ci uint32_t dcefclk2gfxclk_a; 294462306a36Sopenharmony_ci uint32_t dcefclk2gfxclk_b; 294562306a36Sopenharmony_ci uint32_t dcefclk2gfxclk_c; 294662306a36Sopenharmony_ci uint32_t phyclk2gfxclk_a; 294762306a36Sopenharmony_ci uint32_t phyclk2gfxclk_b; 294862306a36Sopenharmony_ci uint32_t phyclk2gfxclk_c; 294962306a36Sopenharmony_ci}; 295062306a36Sopenharmony_ci 295162306a36Sopenharmony_cistruct atom_asic_profiling_info_v4_2 { 295262306a36Sopenharmony_ci struct atom_common_table_header table_header; 295362306a36Sopenharmony_ci uint32_t maxvddc; 295462306a36Sopenharmony_ci uint32_t minvddc; 295562306a36Sopenharmony_ci uint32_t avfs_meannsigma_acontant0; 295662306a36Sopenharmony_ci uint32_t avfs_meannsigma_acontant1; 295762306a36Sopenharmony_ci uint32_t avfs_meannsigma_acontant2; 295862306a36Sopenharmony_ci uint16_t avfs_meannsigma_dc_tol_sigma; 295962306a36Sopenharmony_ci uint16_t avfs_meannsigma_platform_mean; 296062306a36Sopenharmony_ci uint16_t avfs_meannsigma_platform_sigma; 296162306a36Sopenharmony_ci uint32_t gb_vdroop_table_cksoff_a0; 296262306a36Sopenharmony_ci uint32_t gb_vdroop_table_cksoff_a1; 296362306a36Sopenharmony_ci uint32_t gb_vdroop_table_cksoff_a2; 296462306a36Sopenharmony_ci uint32_t gb_vdroop_table_ckson_a0; 296562306a36Sopenharmony_ci uint32_t gb_vdroop_table_ckson_a1; 296662306a36Sopenharmony_ci uint32_t gb_vdroop_table_ckson_a2; 296762306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_cksoff_m1; 296862306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_cksoff_m2; 296962306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_cksoff_b; 297062306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_ckson_m1; 297162306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_ckson_m2; 297262306a36Sopenharmony_ci uint32_t avfsgb_fuse_table_ckson_b; 297362306a36Sopenharmony_ci uint16_t max_voltage_0_25mv; 297462306a36Sopenharmony_ci uint8_t enable_gb_vdroop_table_cksoff; 297562306a36Sopenharmony_ci uint8_t enable_gb_vdroop_table_ckson; 297662306a36Sopenharmony_ci uint8_t enable_gb_fuse_table_cksoff; 297762306a36Sopenharmony_ci uint8_t enable_gb_fuse_table_ckson; 297862306a36Sopenharmony_ci uint16_t psm_age_comfactor; 297962306a36Sopenharmony_ci uint8_t enable_apply_avfs_cksoff_voltage; 298062306a36Sopenharmony_ci uint8_t reserved; 298162306a36Sopenharmony_ci uint32_t dispclk2gfxclk_a; 298262306a36Sopenharmony_ci uint32_t dispclk2gfxclk_b; 298362306a36Sopenharmony_ci uint32_t dispclk2gfxclk_c; 298462306a36Sopenharmony_ci uint32_t pixclk2gfxclk_a; 298562306a36Sopenharmony_ci uint32_t pixclk2gfxclk_b; 298662306a36Sopenharmony_ci uint32_t pixclk2gfxclk_c; 298762306a36Sopenharmony_ci uint32_t dcefclk2gfxclk_a; 298862306a36Sopenharmony_ci uint32_t dcefclk2gfxclk_b; 298962306a36Sopenharmony_ci uint32_t dcefclk2gfxclk_c; 299062306a36Sopenharmony_ci uint32_t phyclk2gfxclk_a; 299162306a36Sopenharmony_ci uint32_t phyclk2gfxclk_b; 299262306a36Sopenharmony_ci uint32_t phyclk2gfxclk_c; 299362306a36Sopenharmony_ci uint32_t acg_gb_vdroop_table_a0; 299462306a36Sopenharmony_ci uint32_t acg_gb_vdroop_table_a1; 299562306a36Sopenharmony_ci uint32_t acg_gb_vdroop_table_a2; 299662306a36Sopenharmony_ci uint32_t acg_avfsgb_fuse_table_m1; 299762306a36Sopenharmony_ci uint32_t acg_avfsgb_fuse_table_m2; 299862306a36Sopenharmony_ci uint32_t acg_avfsgb_fuse_table_b; 299962306a36Sopenharmony_ci uint8_t enable_acg_gb_vdroop_table; 300062306a36Sopenharmony_ci uint8_t enable_acg_gb_fuse_table; 300162306a36Sopenharmony_ci uint32_t acg_dispclk2gfxclk_a; 300262306a36Sopenharmony_ci uint32_t acg_dispclk2gfxclk_b; 300362306a36Sopenharmony_ci uint32_t acg_dispclk2gfxclk_c; 300462306a36Sopenharmony_ci uint32_t acg_pixclk2gfxclk_a; 300562306a36Sopenharmony_ci uint32_t acg_pixclk2gfxclk_b; 300662306a36Sopenharmony_ci uint32_t acg_pixclk2gfxclk_c; 300762306a36Sopenharmony_ci uint32_t acg_dcefclk2gfxclk_a; 300862306a36Sopenharmony_ci uint32_t acg_dcefclk2gfxclk_b; 300962306a36Sopenharmony_ci uint32_t acg_dcefclk2gfxclk_c; 301062306a36Sopenharmony_ci uint32_t acg_phyclk2gfxclk_a; 301162306a36Sopenharmony_ci uint32_t acg_phyclk2gfxclk_b; 301262306a36Sopenharmony_ci uint32_t acg_phyclk2gfxclk_c; 301362306a36Sopenharmony_ci}; 301462306a36Sopenharmony_ci 301562306a36Sopenharmony_ci/* 301662306a36Sopenharmony_ci *************************************************************************** 301762306a36Sopenharmony_ci Data Table multimedia_info structure 301862306a36Sopenharmony_ci *************************************************************************** 301962306a36Sopenharmony_ci*/ 302062306a36Sopenharmony_cistruct atom_multimedia_info_v2_1 302162306a36Sopenharmony_ci{ 302262306a36Sopenharmony_ci struct atom_common_table_header table_header; 302362306a36Sopenharmony_ci uint8_t uvdip_min_ver; 302462306a36Sopenharmony_ci uint8_t uvdip_max_ver; 302562306a36Sopenharmony_ci uint8_t vceip_min_ver; 302662306a36Sopenharmony_ci uint8_t vceip_max_ver; 302762306a36Sopenharmony_ci uint16_t uvd_enc_max_input_width_pixels; 302862306a36Sopenharmony_ci uint16_t uvd_enc_max_input_height_pixels; 302962306a36Sopenharmony_ci uint16_t vce_enc_max_input_width_pixels; 303062306a36Sopenharmony_ci uint16_t vce_enc_max_input_height_pixels; 303162306a36Sopenharmony_ci uint32_t uvd_enc_max_bandwidth; // 16x16 pixels/sec, codec independent 303262306a36Sopenharmony_ci uint32_t vce_enc_max_bandwidth; // 16x16 pixels/sec, codec independent 303362306a36Sopenharmony_ci}; 303462306a36Sopenharmony_ci 303562306a36Sopenharmony_ci 303662306a36Sopenharmony_ci/* 303762306a36Sopenharmony_ci *************************************************************************** 303862306a36Sopenharmony_ci Data Table umc_info structure 303962306a36Sopenharmony_ci *************************************************************************** 304062306a36Sopenharmony_ci*/ 304162306a36Sopenharmony_cistruct atom_umc_info_v3_1 304262306a36Sopenharmony_ci{ 304362306a36Sopenharmony_ci struct atom_common_table_header table_header; 304462306a36Sopenharmony_ci uint32_t ucode_version; 304562306a36Sopenharmony_ci uint32_t ucode_rom_startaddr; 304662306a36Sopenharmony_ci uint32_t ucode_length; 304762306a36Sopenharmony_ci uint16_t umc_reg_init_offset; 304862306a36Sopenharmony_ci uint16_t customer_ucode_name_offset; 304962306a36Sopenharmony_ci uint16_t mclk_ss_percentage; 305062306a36Sopenharmony_ci uint16_t mclk_ss_rate_10hz; 305162306a36Sopenharmony_ci uint8_t umcip_min_ver; 305262306a36Sopenharmony_ci uint8_t umcip_max_ver; 305362306a36Sopenharmony_ci uint8_t vram_type; //enum of atom_dgpu_vram_type 305462306a36Sopenharmony_ci uint8_t umc_config; 305562306a36Sopenharmony_ci uint32_t mem_refclk_10khz; 305662306a36Sopenharmony_ci}; 305762306a36Sopenharmony_ci 305862306a36Sopenharmony_ci// umc_info.umc_config 305962306a36Sopenharmony_cienum atom_umc_config_def { 306062306a36Sopenharmony_ci UMC_CONFIG__ENABLE_1KB_INTERLEAVE_MODE = 0x00000001, 306162306a36Sopenharmony_ci UMC_CONFIG__DEFAULT_MEM_ECC_ENABLE = 0x00000002, 306262306a36Sopenharmony_ci UMC_CONFIG__ENABLE_HBM_LANE_REPAIR = 0x00000004, 306362306a36Sopenharmony_ci UMC_CONFIG__ENABLE_BANK_HARVESTING = 0x00000008, 306462306a36Sopenharmony_ci UMC_CONFIG__ENABLE_PHY_REINIT = 0x00000010, 306562306a36Sopenharmony_ci UMC_CONFIG__DISABLE_UCODE_CHKSTATUS = 0x00000020, 306662306a36Sopenharmony_ci}; 306762306a36Sopenharmony_ci 306862306a36Sopenharmony_cistruct atom_umc_info_v3_2 306962306a36Sopenharmony_ci{ 307062306a36Sopenharmony_ci struct atom_common_table_header table_header; 307162306a36Sopenharmony_ci uint32_t ucode_version; 307262306a36Sopenharmony_ci uint32_t ucode_rom_startaddr; 307362306a36Sopenharmony_ci uint32_t ucode_length; 307462306a36Sopenharmony_ci uint16_t umc_reg_init_offset; 307562306a36Sopenharmony_ci uint16_t customer_ucode_name_offset; 307662306a36Sopenharmony_ci uint16_t mclk_ss_percentage; 307762306a36Sopenharmony_ci uint16_t mclk_ss_rate_10hz; 307862306a36Sopenharmony_ci uint8_t umcip_min_ver; 307962306a36Sopenharmony_ci uint8_t umcip_max_ver; 308062306a36Sopenharmony_ci uint8_t vram_type; //enum of atom_dgpu_vram_type 308162306a36Sopenharmony_ci uint8_t umc_config; 308262306a36Sopenharmony_ci uint32_t mem_refclk_10khz; 308362306a36Sopenharmony_ci uint32_t pstate_uclk_10khz[4]; 308462306a36Sopenharmony_ci uint16_t umcgoldenoffset; 308562306a36Sopenharmony_ci uint16_t densitygoldenoffset; 308662306a36Sopenharmony_ci}; 308762306a36Sopenharmony_ci 308862306a36Sopenharmony_cistruct atom_umc_info_v3_3 308962306a36Sopenharmony_ci{ 309062306a36Sopenharmony_ci struct atom_common_table_header table_header; 309162306a36Sopenharmony_ci uint32_t ucode_reserved; 309262306a36Sopenharmony_ci uint32_t ucode_rom_startaddr; 309362306a36Sopenharmony_ci uint32_t ucode_length; 309462306a36Sopenharmony_ci uint16_t umc_reg_init_offset; 309562306a36Sopenharmony_ci uint16_t customer_ucode_name_offset; 309662306a36Sopenharmony_ci uint16_t mclk_ss_percentage; 309762306a36Sopenharmony_ci uint16_t mclk_ss_rate_10hz; 309862306a36Sopenharmony_ci uint8_t umcip_min_ver; 309962306a36Sopenharmony_ci uint8_t umcip_max_ver; 310062306a36Sopenharmony_ci uint8_t vram_type; //enum of atom_dgpu_vram_type 310162306a36Sopenharmony_ci uint8_t umc_config; 310262306a36Sopenharmony_ci uint32_t mem_refclk_10khz; 310362306a36Sopenharmony_ci uint32_t pstate_uclk_10khz[4]; 310462306a36Sopenharmony_ci uint16_t umcgoldenoffset; 310562306a36Sopenharmony_ci uint16_t densitygoldenoffset; 310662306a36Sopenharmony_ci uint32_t umc_config1; 310762306a36Sopenharmony_ci uint32_t bist_data_startaddr; 310862306a36Sopenharmony_ci uint32_t reserved[2]; 310962306a36Sopenharmony_ci}; 311062306a36Sopenharmony_ci 311162306a36Sopenharmony_cienum atom_umc_config1_def { 311262306a36Sopenharmony_ci UMC_CONFIG1__ENABLE_PSTATE_PHASE_STORE_TRAIN = 0x00000001, 311362306a36Sopenharmony_ci UMC_CONFIG1__ENABLE_AUTO_FRAMING = 0x00000002, 311462306a36Sopenharmony_ci UMC_CONFIG1__ENABLE_RESTORE_BIST_DATA = 0x00000004, 311562306a36Sopenharmony_ci UMC_CONFIG1__DISABLE_STROBE_MODE = 0x00000008, 311662306a36Sopenharmony_ci UMC_CONFIG1__DEBUG_DATA_PARITY_EN = 0x00000010, 311762306a36Sopenharmony_ci UMC_CONFIG1__ENABLE_ECC_CAPABLE = 0x00010000, 311862306a36Sopenharmony_ci}; 311962306a36Sopenharmony_ci 312062306a36Sopenharmony_cistruct atom_umc_info_v4_0 { 312162306a36Sopenharmony_ci struct atom_common_table_header table_header; 312262306a36Sopenharmony_ci uint32_t ucode_reserved[5]; 312362306a36Sopenharmony_ci uint8_t umcip_min_ver; 312462306a36Sopenharmony_ci uint8_t umcip_max_ver; 312562306a36Sopenharmony_ci uint8_t vram_type; 312662306a36Sopenharmony_ci uint8_t umc_config; 312762306a36Sopenharmony_ci uint32_t mem_refclk_10khz; 312862306a36Sopenharmony_ci uint32_t clk_reserved[4]; 312962306a36Sopenharmony_ci uint32_t golden_reserved; 313062306a36Sopenharmony_ci uint32_t umc_config1; 313162306a36Sopenharmony_ci uint32_t reserved[2]; 313262306a36Sopenharmony_ci uint8_t channel_num; 313362306a36Sopenharmony_ci uint8_t channel_width; 313462306a36Sopenharmony_ci uint8_t channel_reserve[2]; 313562306a36Sopenharmony_ci uint8_t umc_info_reserved[16]; 313662306a36Sopenharmony_ci}; 313762306a36Sopenharmony_ci 313862306a36Sopenharmony_ci/* 313962306a36Sopenharmony_ci *************************************************************************** 314062306a36Sopenharmony_ci Data Table vram_info structure 314162306a36Sopenharmony_ci *************************************************************************** 314262306a36Sopenharmony_ci*/ 314362306a36Sopenharmony_cistruct atom_vram_module_v9 { 314462306a36Sopenharmony_ci // Design Specific Values 314562306a36Sopenharmony_ci uint32_t memory_size; // Total memory size in unit of MB for CONFIG_MEMSIZE zeros 314662306a36Sopenharmony_ci uint32_t channel_enable; // bit vector, each bit indicate specific channel enable or not 314762306a36Sopenharmony_ci uint32_t max_mem_clk; // max memory clock of this memory in unit of 10kHz, =0 means it is not defined 314862306a36Sopenharmony_ci uint16_t reserved[3]; 314962306a36Sopenharmony_ci uint16_t mem_voltage; // mem_voltage 315062306a36Sopenharmony_ci uint16_t vram_module_size; // Size of atom_vram_module_v9 315162306a36Sopenharmony_ci uint8_t ext_memory_id; // Current memory module ID 315262306a36Sopenharmony_ci uint8_t memory_type; // enum of atom_dgpu_vram_type 315362306a36Sopenharmony_ci uint8_t channel_num; // Number of mem. channels supported in this module 315462306a36Sopenharmony_ci uint8_t channel_width; // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT 315562306a36Sopenharmony_ci uint8_t density; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 315662306a36Sopenharmony_ci uint8_t tunningset_id; // MC phy registers set per. 315762306a36Sopenharmony_ci uint8_t vender_rev_id; // [7:4] Revision, [3:0] Vendor code 315862306a36Sopenharmony_ci uint8_t refreshrate; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) 315962306a36Sopenharmony_ci uint8_t hbm_ven_rev_id; // hbm_ven_rev_id 316062306a36Sopenharmony_ci uint8_t vram_rsd2; // reserved 316162306a36Sopenharmony_ci char dram_pnstring[20]; // part number end with '0'. 316262306a36Sopenharmony_ci}; 316362306a36Sopenharmony_ci 316462306a36Sopenharmony_cistruct atom_vram_info_header_v2_3 { 316562306a36Sopenharmony_ci struct atom_common_table_header table_header; 316662306a36Sopenharmony_ci uint16_t mem_adjust_tbloffset; // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust setting 316762306a36Sopenharmony_ci uint16_t mem_clk_patch_tbloffset; // offset of atom_umc_init_reg_block structure for memory clock specific UMC setting 316862306a36Sopenharmony_ci uint16_t mc_adjust_pertile_tbloffset; // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings 316962306a36Sopenharmony_ci uint16_t mc_phyinit_tbloffset; // offset of atom_umc_init_reg_block structure for MC phy init set 317062306a36Sopenharmony_ci uint16_t dram_data_remap_tbloffset; // reserved for now 317162306a36Sopenharmony_ci uint16_t tmrs_seq_offset; // offset of HBM tmrs 317262306a36Sopenharmony_ci uint16_t post_ucode_init_offset; // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init 317362306a36Sopenharmony_ci uint16_t vram_rsd2; 317462306a36Sopenharmony_ci uint8_t vram_module_num; // indicate number of VRAM module 317562306a36Sopenharmony_ci uint8_t umcip_min_ver; 317662306a36Sopenharmony_ci uint8_t umcip_max_ver; 317762306a36Sopenharmony_ci uint8_t mc_phy_tile_num; // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset 317862306a36Sopenharmony_ci struct atom_vram_module_v9 vram_module[16]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; 317962306a36Sopenharmony_ci}; 318062306a36Sopenharmony_ci 318162306a36Sopenharmony_ci/* 318262306a36Sopenharmony_ci *************************************************************************** 318362306a36Sopenharmony_ci Data Table vram_info v3.0 structure 318462306a36Sopenharmony_ci *************************************************************************** 318562306a36Sopenharmony_ci*/ 318662306a36Sopenharmony_cistruct atom_vram_module_v3_0 { 318762306a36Sopenharmony_ci uint8_t density; 318862306a36Sopenharmony_ci uint8_t tunningset_id; 318962306a36Sopenharmony_ci uint8_t ext_memory_id; 319062306a36Sopenharmony_ci uint8_t dram_vendor_id; 319162306a36Sopenharmony_ci uint16_t dram_info_offset; 319262306a36Sopenharmony_ci uint16_t mem_tuning_offset; 319362306a36Sopenharmony_ci uint16_t tmrs_seq_offset; 319462306a36Sopenharmony_ci uint16_t reserved1; 319562306a36Sopenharmony_ci uint32_t dram_size_per_ch; 319662306a36Sopenharmony_ci uint32_t reserved[3]; 319762306a36Sopenharmony_ci char dram_pnstring[40]; 319862306a36Sopenharmony_ci}; 319962306a36Sopenharmony_ci 320062306a36Sopenharmony_cistruct atom_vram_info_header_v3_0 { 320162306a36Sopenharmony_ci struct atom_common_table_header table_header; 320262306a36Sopenharmony_ci uint16_t mem_tuning_table_offset; 320362306a36Sopenharmony_ci uint16_t dram_info_table_offset; 320462306a36Sopenharmony_ci uint16_t tmrs_table_offset; 320562306a36Sopenharmony_ci uint16_t mc_init_table_offset; 320662306a36Sopenharmony_ci uint16_t dram_data_remap_table_offset; 320762306a36Sopenharmony_ci uint16_t umc_emuinittable_offset; 320862306a36Sopenharmony_ci uint16_t reserved_sub_table_offset[2]; 320962306a36Sopenharmony_ci uint8_t vram_module_num; 321062306a36Sopenharmony_ci uint8_t umcip_min_ver; 321162306a36Sopenharmony_ci uint8_t umcip_max_ver; 321262306a36Sopenharmony_ci uint8_t mc_phy_tile_num; 321362306a36Sopenharmony_ci uint8_t memory_type; 321462306a36Sopenharmony_ci uint8_t channel_num; 321562306a36Sopenharmony_ci uint8_t channel_width; 321662306a36Sopenharmony_ci uint8_t reserved1; 321762306a36Sopenharmony_ci uint32_t channel_enable; 321862306a36Sopenharmony_ci uint32_t channel1_enable; 321962306a36Sopenharmony_ci uint32_t feature_enable; 322062306a36Sopenharmony_ci uint32_t feature1_enable; 322162306a36Sopenharmony_ci uint32_t hardcode_mem_size; 322262306a36Sopenharmony_ci uint32_t reserved4[4]; 322362306a36Sopenharmony_ci struct atom_vram_module_v3_0 vram_module[8]; 322462306a36Sopenharmony_ci}; 322562306a36Sopenharmony_ci 322662306a36Sopenharmony_cistruct atom_umc_register_addr_info{ 322762306a36Sopenharmony_ci uint32_t umc_register_addr:24; 322862306a36Sopenharmony_ci uint32_t umc_reg_type_ind:1; 322962306a36Sopenharmony_ci uint32_t umc_reg_rsvd:7; 323062306a36Sopenharmony_ci}; 323162306a36Sopenharmony_ci 323262306a36Sopenharmony_ci//atom_umc_register_addr_info. 323362306a36Sopenharmony_cienum atom_umc_register_addr_info_flag{ 323462306a36Sopenharmony_ci b3ATOM_UMC_REG_ADD_INFO_INDIRECT_ACCESS =0x01, 323562306a36Sopenharmony_ci}; 323662306a36Sopenharmony_ci 323762306a36Sopenharmony_ciunion atom_umc_register_addr_info_access 323862306a36Sopenharmony_ci{ 323962306a36Sopenharmony_ci struct atom_umc_register_addr_info umc_reg_addr; 324062306a36Sopenharmony_ci uint32_t u32umc_reg_addr; 324162306a36Sopenharmony_ci}; 324262306a36Sopenharmony_ci 324362306a36Sopenharmony_cistruct atom_umc_reg_setting_id_config{ 324462306a36Sopenharmony_ci uint32_t memclockrange:24; 324562306a36Sopenharmony_ci uint32_t mem_blk_id:8; 324662306a36Sopenharmony_ci}; 324762306a36Sopenharmony_ci 324862306a36Sopenharmony_ciunion atom_umc_reg_setting_id_config_access 324962306a36Sopenharmony_ci{ 325062306a36Sopenharmony_ci struct atom_umc_reg_setting_id_config umc_id_access; 325162306a36Sopenharmony_ci uint32_t u32umc_id_access; 325262306a36Sopenharmony_ci}; 325362306a36Sopenharmony_ci 325462306a36Sopenharmony_cistruct atom_umc_reg_setting_data_block{ 325562306a36Sopenharmony_ci union atom_umc_reg_setting_id_config_access block_id; 325662306a36Sopenharmony_ci uint32_t u32umc_reg_data[1]; 325762306a36Sopenharmony_ci}; 325862306a36Sopenharmony_ci 325962306a36Sopenharmony_cistruct atom_umc_init_reg_block{ 326062306a36Sopenharmony_ci uint16_t umc_reg_num; 326162306a36Sopenharmony_ci uint16_t reserved; 326262306a36Sopenharmony_ci union atom_umc_register_addr_info_access umc_reg_list[1]; //for allocation purpose, the real number come from umc_reg_num; 326362306a36Sopenharmony_ci struct atom_umc_reg_setting_data_block umc_reg_setting_list[1]; 326462306a36Sopenharmony_ci}; 326562306a36Sopenharmony_ci 326662306a36Sopenharmony_cistruct atom_vram_module_v10 { 326762306a36Sopenharmony_ci // Design Specific Values 326862306a36Sopenharmony_ci uint32_t memory_size; // Total memory size in unit of MB for CONFIG_MEMSIZE zeros 326962306a36Sopenharmony_ci uint32_t channel_enable; // bit vector, each bit indicate specific channel enable or not 327062306a36Sopenharmony_ci uint32_t max_mem_clk; // max memory clock of this memory in unit of 10kHz, =0 means it is not defined 327162306a36Sopenharmony_ci uint16_t reserved[3]; 327262306a36Sopenharmony_ci uint16_t mem_voltage; // mem_voltage 327362306a36Sopenharmony_ci uint16_t vram_module_size; // Size of atom_vram_module_v9 327462306a36Sopenharmony_ci uint8_t ext_memory_id; // Current memory module ID 327562306a36Sopenharmony_ci uint8_t memory_type; // enum of atom_dgpu_vram_type 327662306a36Sopenharmony_ci uint8_t channel_num; // Number of mem. channels supported in this module 327762306a36Sopenharmony_ci uint8_t channel_width; // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT 327862306a36Sopenharmony_ci uint8_t density; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 327962306a36Sopenharmony_ci uint8_t tunningset_id; // MC phy registers set per 328062306a36Sopenharmony_ci uint8_t vender_rev_id; // [7:4] Revision, [3:0] Vendor code 328162306a36Sopenharmony_ci uint8_t refreshrate; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) 328262306a36Sopenharmony_ci uint8_t vram_flags; // bit0= bankgroup enable 328362306a36Sopenharmony_ci uint8_t vram_rsd2; // reserved 328462306a36Sopenharmony_ci uint16_t gddr6_mr10; // gddr6 mode register10 value 328562306a36Sopenharmony_ci uint16_t gddr6_mr1; // gddr6 mode register1 value 328662306a36Sopenharmony_ci uint16_t gddr6_mr2; // gddr6 mode register2 value 328762306a36Sopenharmony_ci uint16_t gddr6_mr7; // gddr6 mode register7 value 328862306a36Sopenharmony_ci char dram_pnstring[20]; // part number end with '0' 328962306a36Sopenharmony_ci}; 329062306a36Sopenharmony_ci 329162306a36Sopenharmony_cistruct atom_vram_info_header_v2_4 { 329262306a36Sopenharmony_ci struct atom_common_table_header table_header; 329362306a36Sopenharmony_ci uint16_t mem_adjust_tbloffset; // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust setting 329462306a36Sopenharmony_ci uint16_t mem_clk_patch_tbloffset; // offset of atom_umc_init_reg_block structure for memory clock specific UMC setting 329562306a36Sopenharmony_ci uint16_t mc_adjust_pertile_tbloffset; // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings 329662306a36Sopenharmony_ci uint16_t mc_phyinit_tbloffset; // offset of atom_umc_init_reg_block structure for MC phy init set 329762306a36Sopenharmony_ci uint16_t dram_data_remap_tbloffset; // reserved for now 329862306a36Sopenharmony_ci uint16_t reserved; // offset of reserved 329962306a36Sopenharmony_ci uint16_t post_ucode_init_offset; // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init 330062306a36Sopenharmony_ci uint16_t vram_rsd2; 330162306a36Sopenharmony_ci uint8_t vram_module_num; // indicate number of VRAM module 330262306a36Sopenharmony_ci uint8_t umcip_min_ver; 330362306a36Sopenharmony_ci uint8_t umcip_max_ver; 330462306a36Sopenharmony_ci uint8_t mc_phy_tile_num; // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset 330562306a36Sopenharmony_ci struct atom_vram_module_v10 vram_module[16]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; 330662306a36Sopenharmony_ci}; 330762306a36Sopenharmony_ci 330862306a36Sopenharmony_cistruct atom_vram_module_v11 { 330962306a36Sopenharmony_ci // Design Specific Values 331062306a36Sopenharmony_ci uint32_t memory_size; // Total memory size in unit of MB for CONFIG_MEMSIZE zeros 331162306a36Sopenharmony_ci uint32_t channel_enable; // bit vector, each bit indicate specific channel enable or not 331262306a36Sopenharmony_ci uint16_t mem_voltage; // mem_voltage 331362306a36Sopenharmony_ci uint16_t vram_module_size; // Size of atom_vram_module_v9 331462306a36Sopenharmony_ci uint8_t ext_memory_id; // Current memory module ID 331562306a36Sopenharmony_ci uint8_t memory_type; // enum of atom_dgpu_vram_type 331662306a36Sopenharmony_ci uint8_t channel_num; // Number of mem. channels supported in this module 331762306a36Sopenharmony_ci uint8_t channel_width; // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT 331862306a36Sopenharmony_ci uint8_t density; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 331962306a36Sopenharmony_ci uint8_t tunningset_id; // MC phy registers set per. 332062306a36Sopenharmony_ci uint16_t reserved[4]; // reserved 332162306a36Sopenharmony_ci uint8_t vender_rev_id; // [7:4] Revision, [3:0] Vendor code 332262306a36Sopenharmony_ci uint8_t refreshrate; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) 332362306a36Sopenharmony_ci uint8_t vram_flags; // bit0= bankgroup enable 332462306a36Sopenharmony_ci uint8_t vram_rsd2; // reserved 332562306a36Sopenharmony_ci uint16_t gddr6_mr10; // gddr6 mode register10 value 332662306a36Sopenharmony_ci uint16_t gddr6_mr0; // gddr6 mode register0 value 332762306a36Sopenharmony_ci uint16_t gddr6_mr1; // gddr6 mode register1 value 332862306a36Sopenharmony_ci uint16_t gddr6_mr2; // gddr6 mode register2 value 332962306a36Sopenharmony_ci uint16_t gddr6_mr4; // gddr6 mode register4 value 333062306a36Sopenharmony_ci uint16_t gddr6_mr7; // gddr6 mode register7 value 333162306a36Sopenharmony_ci uint16_t gddr6_mr8; // gddr6 mode register8 value 333262306a36Sopenharmony_ci char dram_pnstring[40]; // part number end with '0'. 333362306a36Sopenharmony_ci}; 333462306a36Sopenharmony_ci 333562306a36Sopenharmony_cistruct atom_gddr6_ac_timing_v2_5 { 333662306a36Sopenharmony_ci uint32_t u32umc_id_access; 333762306a36Sopenharmony_ci uint8_t RL; 333862306a36Sopenharmony_ci uint8_t WL; 333962306a36Sopenharmony_ci uint8_t tRAS; 334062306a36Sopenharmony_ci uint8_t tRC; 334162306a36Sopenharmony_ci 334262306a36Sopenharmony_ci uint16_t tREFI; 334362306a36Sopenharmony_ci uint8_t tRFC; 334462306a36Sopenharmony_ci uint8_t tRFCpb; 334562306a36Sopenharmony_ci 334662306a36Sopenharmony_ci uint8_t tRREFD; 334762306a36Sopenharmony_ci uint8_t tRCDRD; 334862306a36Sopenharmony_ci uint8_t tRCDWR; 334962306a36Sopenharmony_ci uint8_t tRP; 335062306a36Sopenharmony_ci 335162306a36Sopenharmony_ci uint8_t tRRDS; 335262306a36Sopenharmony_ci uint8_t tRRDL; 335362306a36Sopenharmony_ci uint8_t tWR; 335462306a36Sopenharmony_ci uint8_t tWTRS; 335562306a36Sopenharmony_ci 335662306a36Sopenharmony_ci uint8_t tWTRL; 335762306a36Sopenharmony_ci uint8_t tFAW; 335862306a36Sopenharmony_ci uint8_t tCCDS; 335962306a36Sopenharmony_ci uint8_t tCCDL; 336062306a36Sopenharmony_ci 336162306a36Sopenharmony_ci uint8_t tCRCRL; 336262306a36Sopenharmony_ci uint8_t tCRCWL; 336362306a36Sopenharmony_ci uint8_t tCKE; 336462306a36Sopenharmony_ci uint8_t tCKSRE; 336562306a36Sopenharmony_ci 336662306a36Sopenharmony_ci uint8_t tCKSRX; 336762306a36Sopenharmony_ci uint8_t tRTPS; 336862306a36Sopenharmony_ci uint8_t tRTPL; 336962306a36Sopenharmony_ci uint8_t tMRD; 337062306a36Sopenharmony_ci 337162306a36Sopenharmony_ci uint8_t tMOD; 337262306a36Sopenharmony_ci uint8_t tXS; 337362306a36Sopenharmony_ci uint8_t tXHP; 337462306a36Sopenharmony_ci uint8_t tXSMRS; 337562306a36Sopenharmony_ci 337662306a36Sopenharmony_ci uint32_t tXSH; 337762306a36Sopenharmony_ci 337862306a36Sopenharmony_ci uint8_t tPD; 337962306a36Sopenharmony_ci uint8_t tXP; 338062306a36Sopenharmony_ci uint8_t tCPDED; 338162306a36Sopenharmony_ci uint8_t tACTPDE; 338262306a36Sopenharmony_ci 338362306a36Sopenharmony_ci uint8_t tPREPDE; 338462306a36Sopenharmony_ci uint8_t tREFPDE; 338562306a36Sopenharmony_ci uint8_t tMRSPDEN; 338662306a36Sopenharmony_ci uint8_t tRDSRE; 338762306a36Sopenharmony_ci 338862306a36Sopenharmony_ci uint8_t tWRSRE; 338962306a36Sopenharmony_ci uint8_t tPPD; 339062306a36Sopenharmony_ci uint8_t tCCDMW; 339162306a36Sopenharmony_ci uint8_t tWTRTR; 339262306a36Sopenharmony_ci 339362306a36Sopenharmony_ci uint8_t tLTLTR; 339462306a36Sopenharmony_ci uint8_t tREFTR; 339562306a36Sopenharmony_ci uint8_t VNDR; 339662306a36Sopenharmony_ci uint8_t reserved[9]; 339762306a36Sopenharmony_ci}; 339862306a36Sopenharmony_ci 339962306a36Sopenharmony_cistruct atom_gddr6_bit_byte_remap { 340062306a36Sopenharmony_ci uint32_t dphy_byteremap; //mmUMC_DPHY_ByteRemap 340162306a36Sopenharmony_ci uint32_t dphy_bitremap0; //mmUMC_DPHY_BitRemap0 340262306a36Sopenharmony_ci uint32_t dphy_bitremap1; //mmUMC_DPHY_BitRemap1 340362306a36Sopenharmony_ci uint32_t dphy_bitremap2; //mmUMC_DPHY_BitRemap2 340462306a36Sopenharmony_ci uint32_t aphy_bitremap0; //mmUMC_APHY_BitRemap0 340562306a36Sopenharmony_ci uint32_t aphy_bitremap1; //mmUMC_APHY_BitRemap1 340662306a36Sopenharmony_ci uint32_t phy_dram; //mmUMC_PHY_DRAM 340762306a36Sopenharmony_ci}; 340862306a36Sopenharmony_ci 340962306a36Sopenharmony_cistruct atom_gddr6_dram_data_remap { 341062306a36Sopenharmony_ci uint32_t table_size; 341162306a36Sopenharmony_ci uint8_t phyintf_ck_inverted[8]; //UMC_PHY_PHYINTF_CNTL.INV_CK 341262306a36Sopenharmony_ci struct atom_gddr6_bit_byte_remap bit_byte_remap[16]; 341362306a36Sopenharmony_ci}; 341462306a36Sopenharmony_ci 341562306a36Sopenharmony_cistruct atom_vram_info_header_v2_5 { 341662306a36Sopenharmony_ci struct atom_common_table_header table_header; 341762306a36Sopenharmony_ci uint16_t mem_adjust_tbloffset; // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust settings 341862306a36Sopenharmony_ci uint16_t gddr6_ac_timing_offset; // offset of atom_gddr6_ac_timing_v2_5 structure for memory clock specific UMC settings 341962306a36Sopenharmony_ci uint16_t mc_adjust_pertile_tbloffset; // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings 342062306a36Sopenharmony_ci uint16_t mc_phyinit_tbloffset; // offset of atom_umc_init_reg_block structure for MC phy init set 342162306a36Sopenharmony_ci uint16_t dram_data_remap_tbloffset; // offset of atom_gddr6_dram_data_remap array to indicate DRAM data lane to GPU mapping 342262306a36Sopenharmony_ci uint16_t reserved; // offset of reserved 342362306a36Sopenharmony_ci uint16_t post_ucode_init_offset; // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init 342462306a36Sopenharmony_ci uint16_t strobe_mode_patch_tbloffset; // offset of atom_umc_init_reg_block structure for Strobe Mode memory clock specific UMC settings 342562306a36Sopenharmony_ci uint8_t vram_module_num; // indicate number of VRAM module 342662306a36Sopenharmony_ci uint8_t umcip_min_ver; 342762306a36Sopenharmony_ci uint8_t umcip_max_ver; 342862306a36Sopenharmony_ci uint8_t mc_phy_tile_num; // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset 342962306a36Sopenharmony_ci struct atom_vram_module_v11 vram_module[16]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; 343062306a36Sopenharmony_ci}; 343162306a36Sopenharmony_ci 343262306a36Sopenharmony_cistruct atom_vram_info_header_v2_6 { 343362306a36Sopenharmony_ci struct atom_common_table_header table_header; 343462306a36Sopenharmony_ci uint16_t mem_adjust_tbloffset; 343562306a36Sopenharmony_ci uint16_t mem_clk_patch_tbloffset; 343662306a36Sopenharmony_ci uint16_t mc_adjust_pertile_tbloffset; 343762306a36Sopenharmony_ci uint16_t mc_phyinit_tbloffset; 343862306a36Sopenharmony_ci uint16_t dram_data_remap_tbloffset; 343962306a36Sopenharmony_ci uint16_t tmrs_seq_offset; 344062306a36Sopenharmony_ci uint16_t post_ucode_init_offset; 344162306a36Sopenharmony_ci uint16_t vram_rsd2; 344262306a36Sopenharmony_ci uint8_t vram_module_num; 344362306a36Sopenharmony_ci uint8_t umcip_min_ver; 344462306a36Sopenharmony_ci uint8_t umcip_max_ver; 344562306a36Sopenharmony_ci uint8_t mc_phy_tile_num; 344662306a36Sopenharmony_ci struct atom_vram_module_v9 vram_module[16]; 344762306a36Sopenharmony_ci}; 344862306a36Sopenharmony_ci/* 344962306a36Sopenharmony_ci *************************************************************************** 345062306a36Sopenharmony_ci Data Table voltageobject_info structure 345162306a36Sopenharmony_ci *************************************************************************** 345262306a36Sopenharmony_ci*/ 345362306a36Sopenharmony_cistruct atom_i2c_data_entry 345462306a36Sopenharmony_ci{ 345562306a36Sopenharmony_ci uint16_t i2c_reg_index; // i2c register address, can be up to 16bit 345662306a36Sopenharmony_ci uint16_t i2c_reg_data; // i2c register data, can be up to 16bit 345762306a36Sopenharmony_ci}; 345862306a36Sopenharmony_ci 345962306a36Sopenharmony_cistruct atom_voltage_object_header_v4{ 346062306a36Sopenharmony_ci uint8_t voltage_type; //enum atom_voltage_type 346162306a36Sopenharmony_ci uint8_t voltage_mode; //enum atom_voltage_object_mode 346262306a36Sopenharmony_ci uint16_t object_size; //Size of Object 346362306a36Sopenharmony_ci}; 346462306a36Sopenharmony_ci 346562306a36Sopenharmony_ci// atom_voltage_object_header_v4.voltage_mode 346662306a36Sopenharmony_cienum atom_voltage_object_mode 346762306a36Sopenharmony_ci{ 346862306a36Sopenharmony_ci VOLTAGE_OBJ_GPIO_LUT = 0, //VOLTAGE and GPIO Lookup table ->atom_gpio_voltage_object_v4 346962306a36Sopenharmony_ci VOLTAGE_OBJ_VR_I2C_INIT_SEQ = 3, //VOLTAGE REGULATOR INIT sequece through I2C -> atom_i2c_voltage_object_v4 347062306a36Sopenharmony_ci VOLTAGE_OBJ_PHASE_LUT = 4, //Set Vregulator Phase lookup table ->atom_gpio_voltage_object_v4 347162306a36Sopenharmony_ci VOLTAGE_OBJ_SVID2 = 7, //Indicate voltage control by SVID2 ->atom_svid2_voltage_object_v4 347262306a36Sopenharmony_ci VOLTAGE_OBJ_EVV = 8, 347362306a36Sopenharmony_ci VOLTAGE_OBJ_MERGED_POWER = 9, 347462306a36Sopenharmony_ci}; 347562306a36Sopenharmony_ci 347662306a36Sopenharmony_cistruct atom_i2c_voltage_object_v4 347762306a36Sopenharmony_ci{ 347862306a36Sopenharmony_ci struct atom_voltage_object_header_v4 header; // voltage mode = VOLTAGE_OBJ_VR_I2C_INIT_SEQ 347962306a36Sopenharmony_ci uint8_t regulator_id; //Indicate Voltage Regulator Id 348062306a36Sopenharmony_ci uint8_t i2c_id; 348162306a36Sopenharmony_ci uint8_t i2c_slave_addr; 348262306a36Sopenharmony_ci uint8_t i2c_control_offset; 348362306a36Sopenharmony_ci uint8_t i2c_flag; // Bit0: 0 - One byte data; 1 - Two byte data 348462306a36Sopenharmony_ci uint8_t i2c_speed; // =0, use default i2c speed, otherwise use it in unit of kHz. 348562306a36Sopenharmony_ci uint8_t reserved[2]; 348662306a36Sopenharmony_ci struct atom_i2c_data_entry i2cdatalut[1]; // end with 0xff 348762306a36Sopenharmony_ci}; 348862306a36Sopenharmony_ci 348962306a36Sopenharmony_ci// ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag 349062306a36Sopenharmony_cienum atom_i2c_voltage_control_flag 349162306a36Sopenharmony_ci{ 349262306a36Sopenharmony_ci VOLTAGE_DATA_ONE_BYTE = 0, 349362306a36Sopenharmony_ci VOLTAGE_DATA_TWO_BYTE = 1, 349462306a36Sopenharmony_ci}; 349562306a36Sopenharmony_ci 349662306a36Sopenharmony_ci 349762306a36Sopenharmony_cistruct atom_voltage_gpio_map_lut 349862306a36Sopenharmony_ci{ 349962306a36Sopenharmony_ci uint32_t voltage_gpio_reg_val; // The Voltage ID which is used to program GPIO register 350062306a36Sopenharmony_ci uint16_t voltage_level_mv; // The corresponding Voltage Value, in mV 350162306a36Sopenharmony_ci}; 350262306a36Sopenharmony_ci 350362306a36Sopenharmony_cistruct atom_gpio_voltage_object_v4 350462306a36Sopenharmony_ci{ 350562306a36Sopenharmony_ci struct atom_voltage_object_header_v4 header; // voltage mode = VOLTAGE_OBJ_GPIO_LUT or VOLTAGE_OBJ_PHASE_LUT 350662306a36Sopenharmony_ci uint8_t gpio_control_id; // default is 0 which indicate control through CG VID mode 350762306a36Sopenharmony_ci uint8_t gpio_entry_num; // indiate the entry numbers of Votlage/Gpio value Look up table 350862306a36Sopenharmony_ci uint8_t phase_delay_us; // phase delay in unit of micro second 350962306a36Sopenharmony_ci uint8_t reserved; 351062306a36Sopenharmony_ci uint32_t gpio_mask_val; // GPIO Mask value 351162306a36Sopenharmony_ci struct atom_voltage_gpio_map_lut voltage_gpio_lut[1]; 351262306a36Sopenharmony_ci}; 351362306a36Sopenharmony_ci 351462306a36Sopenharmony_cistruct atom_svid2_voltage_object_v4 351562306a36Sopenharmony_ci{ 351662306a36Sopenharmony_ci struct atom_voltage_object_header_v4 header; // voltage mode = VOLTAGE_OBJ_SVID2 351762306a36Sopenharmony_ci uint8_t loadline_psi1; // bit4:0= loadline setting ( Core Loadline trim and offset trim ), bit5=0:PSI1_L disable =1: PSI1_L enable 351862306a36Sopenharmony_ci uint8_t psi0_l_vid_thresd; // VR PSI0_L VID threshold 351962306a36Sopenharmony_ci uint8_t psi0_enable; // 352062306a36Sopenharmony_ci uint8_t maxvstep; 352162306a36Sopenharmony_ci uint8_t telemetry_offset; 352262306a36Sopenharmony_ci uint8_t telemetry_gain; 352362306a36Sopenharmony_ci uint16_t reserved1; 352462306a36Sopenharmony_ci}; 352562306a36Sopenharmony_ci 352662306a36Sopenharmony_cistruct atom_merged_voltage_object_v4 352762306a36Sopenharmony_ci{ 352862306a36Sopenharmony_ci struct atom_voltage_object_header_v4 header; // voltage mode = VOLTAGE_OBJ_MERGED_POWER 352962306a36Sopenharmony_ci uint8_t merged_powerrail_type; //enum atom_voltage_type 353062306a36Sopenharmony_ci uint8_t reserved[3]; 353162306a36Sopenharmony_ci}; 353262306a36Sopenharmony_ci 353362306a36Sopenharmony_ciunion atom_voltage_object_v4{ 353462306a36Sopenharmony_ci struct atom_gpio_voltage_object_v4 gpio_voltage_obj; 353562306a36Sopenharmony_ci struct atom_i2c_voltage_object_v4 i2c_voltage_obj; 353662306a36Sopenharmony_ci struct atom_svid2_voltage_object_v4 svid2_voltage_obj; 353762306a36Sopenharmony_ci struct atom_merged_voltage_object_v4 merged_voltage_obj; 353862306a36Sopenharmony_ci}; 353962306a36Sopenharmony_ci 354062306a36Sopenharmony_cistruct atom_voltage_objects_info_v4_1 354162306a36Sopenharmony_ci{ 354262306a36Sopenharmony_ci struct atom_common_table_header table_header; 354362306a36Sopenharmony_ci union atom_voltage_object_v4 voltage_object[1]; //Info for Voltage control 354462306a36Sopenharmony_ci}; 354562306a36Sopenharmony_ci 354662306a36Sopenharmony_ci 354762306a36Sopenharmony_ci/* 354862306a36Sopenharmony_ci *************************************************************************** 354962306a36Sopenharmony_ci All Command Function structure definition 355062306a36Sopenharmony_ci *************************************************************************** 355162306a36Sopenharmony_ci*/ 355262306a36Sopenharmony_ci 355362306a36Sopenharmony_ci/* 355462306a36Sopenharmony_ci *************************************************************************** 355562306a36Sopenharmony_ci Structures used by asic_init 355662306a36Sopenharmony_ci *************************************************************************** 355762306a36Sopenharmony_ci*/ 355862306a36Sopenharmony_ci 355962306a36Sopenharmony_cistruct asic_init_engine_parameters 356062306a36Sopenharmony_ci{ 356162306a36Sopenharmony_ci uint32_t sclkfreqin10khz:24; 356262306a36Sopenharmony_ci uint32_t engineflag:8; /* enum atom_asic_init_engine_flag */ 356362306a36Sopenharmony_ci}; 356462306a36Sopenharmony_ci 356562306a36Sopenharmony_cistruct asic_init_mem_parameters 356662306a36Sopenharmony_ci{ 356762306a36Sopenharmony_ci uint32_t mclkfreqin10khz:24; 356862306a36Sopenharmony_ci uint32_t memflag:8; /* enum atom_asic_init_mem_flag */ 356962306a36Sopenharmony_ci}; 357062306a36Sopenharmony_ci 357162306a36Sopenharmony_cistruct asic_init_parameters_v2_1 357262306a36Sopenharmony_ci{ 357362306a36Sopenharmony_ci struct asic_init_engine_parameters engineparam; 357462306a36Sopenharmony_ci struct asic_init_mem_parameters memparam; 357562306a36Sopenharmony_ci}; 357662306a36Sopenharmony_ci 357762306a36Sopenharmony_cistruct asic_init_ps_allocation_v2_1 357862306a36Sopenharmony_ci{ 357962306a36Sopenharmony_ci struct asic_init_parameters_v2_1 param; 358062306a36Sopenharmony_ci uint32_t reserved[16]; 358162306a36Sopenharmony_ci}; 358262306a36Sopenharmony_ci 358362306a36Sopenharmony_ci 358462306a36Sopenharmony_cienum atom_asic_init_engine_flag 358562306a36Sopenharmony_ci{ 358662306a36Sopenharmony_ci b3NORMAL_ENGINE_INIT = 0, 358762306a36Sopenharmony_ci b3SRIOV_SKIP_ASIC_INIT = 0x02, 358862306a36Sopenharmony_ci b3SRIOV_LOAD_UCODE = 0x40, 358962306a36Sopenharmony_ci}; 359062306a36Sopenharmony_ci 359162306a36Sopenharmony_cienum atom_asic_init_mem_flag 359262306a36Sopenharmony_ci{ 359362306a36Sopenharmony_ci b3NORMAL_MEM_INIT = 0, 359462306a36Sopenharmony_ci b3DRAM_SELF_REFRESH_EXIT =0x20, 359562306a36Sopenharmony_ci}; 359662306a36Sopenharmony_ci 359762306a36Sopenharmony_ci/* 359862306a36Sopenharmony_ci *************************************************************************** 359962306a36Sopenharmony_ci Structures used by setengineclock 360062306a36Sopenharmony_ci *************************************************************************** 360162306a36Sopenharmony_ci*/ 360262306a36Sopenharmony_ci 360362306a36Sopenharmony_cistruct set_engine_clock_parameters_v2_1 360462306a36Sopenharmony_ci{ 360562306a36Sopenharmony_ci uint32_t sclkfreqin10khz:24; 360662306a36Sopenharmony_ci uint32_t sclkflag:8; /* enum atom_set_engine_mem_clock_flag, */ 360762306a36Sopenharmony_ci uint32_t reserved[10]; 360862306a36Sopenharmony_ci}; 360962306a36Sopenharmony_ci 361062306a36Sopenharmony_cistruct set_engine_clock_ps_allocation_v2_1 361162306a36Sopenharmony_ci{ 361262306a36Sopenharmony_ci struct set_engine_clock_parameters_v2_1 clockinfo; 361362306a36Sopenharmony_ci uint32_t reserved[10]; 361462306a36Sopenharmony_ci}; 361562306a36Sopenharmony_ci 361662306a36Sopenharmony_ci 361762306a36Sopenharmony_cienum atom_set_engine_mem_clock_flag 361862306a36Sopenharmony_ci{ 361962306a36Sopenharmony_ci b3NORMAL_CHANGE_CLOCK = 0, 362062306a36Sopenharmony_ci b3FIRST_TIME_CHANGE_CLOCK = 0x08, 362162306a36Sopenharmony_ci b3STORE_DPM_TRAINGING = 0x40, //Applicable to memory clock change,when set, it store specific DPM mode training result 362262306a36Sopenharmony_ci}; 362362306a36Sopenharmony_ci 362462306a36Sopenharmony_ci/* 362562306a36Sopenharmony_ci *************************************************************************** 362662306a36Sopenharmony_ci Structures used by getengineclock 362762306a36Sopenharmony_ci *************************************************************************** 362862306a36Sopenharmony_ci*/ 362962306a36Sopenharmony_cistruct get_engine_clock_parameter 363062306a36Sopenharmony_ci{ 363162306a36Sopenharmony_ci uint32_t sclk_10khz; // current engine speed in 10KHz unit 363262306a36Sopenharmony_ci uint32_t reserved; 363362306a36Sopenharmony_ci}; 363462306a36Sopenharmony_ci 363562306a36Sopenharmony_ci/* 363662306a36Sopenharmony_ci *************************************************************************** 363762306a36Sopenharmony_ci Structures used by setmemoryclock 363862306a36Sopenharmony_ci *************************************************************************** 363962306a36Sopenharmony_ci*/ 364062306a36Sopenharmony_cistruct set_memory_clock_parameters_v2_1 364162306a36Sopenharmony_ci{ 364262306a36Sopenharmony_ci uint32_t mclkfreqin10khz:24; 364362306a36Sopenharmony_ci uint32_t mclkflag:8; /* enum atom_set_engine_mem_clock_flag, */ 364462306a36Sopenharmony_ci uint32_t reserved[10]; 364562306a36Sopenharmony_ci}; 364662306a36Sopenharmony_ci 364762306a36Sopenharmony_cistruct set_memory_clock_ps_allocation_v2_1 364862306a36Sopenharmony_ci{ 364962306a36Sopenharmony_ci struct set_memory_clock_parameters_v2_1 clockinfo; 365062306a36Sopenharmony_ci uint32_t reserved[10]; 365162306a36Sopenharmony_ci}; 365262306a36Sopenharmony_ci 365362306a36Sopenharmony_ci 365462306a36Sopenharmony_ci/* 365562306a36Sopenharmony_ci *************************************************************************** 365662306a36Sopenharmony_ci Structures used by getmemoryclock 365762306a36Sopenharmony_ci *************************************************************************** 365862306a36Sopenharmony_ci*/ 365962306a36Sopenharmony_cistruct get_memory_clock_parameter 366062306a36Sopenharmony_ci{ 366162306a36Sopenharmony_ci uint32_t mclk_10khz; // current engine speed in 10KHz unit 366262306a36Sopenharmony_ci uint32_t reserved; 366362306a36Sopenharmony_ci}; 366462306a36Sopenharmony_ci 366562306a36Sopenharmony_ci 366662306a36Sopenharmony_ci 366762306a36Sopenharmony_ci/* 366862306a36Sopenharmony_ci *************************************************************************** 366962306a36Sopenharmony_ci Structures used by setvoltage 367062306a36Sopenharmony_ci *************************************************************************** 367162306a36Sopenharmony_ci*/ 367262306a36Sopenharmony_ci 367362306a36Sopenharmony_cistruct set_voltage_parameters_v1_4 367462306a36Sopenharmony_ci{ 367562306a36Sopenharmony_ci uint8_t voltagetype; /* enum atom_voltage_type */ 367662306a36Sopenharmony_ci uint8_t command; /* Indicate action: Set voltage level, enum atom_set_voltage_command */ 367762306a36Sopenharmony_ci uint16_t vlevel_mv; /* real voltage level in unit of mv or Voltage Phase (0, 1, 2, .. ) */ 367862306a36Sopenharmony_ci}; 367962306a36Sopenharmony_ci 368062306a36Sopenharmony_ci//set_voltage_parameters_v2_1.voltagemode 368162306a36Sopenharmony_cienum atom_set_voltage_command{ 368262306a36Sopenharmony_ci ATOM_SET_VOLTAGE = 0, 368362306a36Sopenharmony_ci ATOM_INIT_VOLTAGE_REGULATOR = 3, 368462306a36Sopenharmony_ci ATOM_SET_VOLTAGE_PHASE = 4, 368562306a36Sopenharmony_ci ATOM_GET_LEAKAGE_ID = 8, 368662306a36Sopenharmony_ci}; 368762306a36Sopenharmony_ci 368862306a36Sopenharmony_cistruct set_voltage_ps_allocation_v1_4 368962306a36Sopenharmony_ci{ 369062306a36Sopenharmony_ci struct set_voltage_parameters_v1_4 setvoltageparam; 369162306a36Sopenharmony_ci uint32_t reserved[10]; 369262306a36Sopenharmony_ci}; 369362306a36Sopenharmony_ci 369462306a36Sopenharmony_ci 369562306a36Sopenharmony_ci/* 369662306a36Sopenharmony_ci *************************************************************************** 369762306a36Sopenharmony_ci Structures used by computegpuclockparam 369862306a36Sopenharmony_ci *************************************************************************** 369962306a36Sopenharmony_ci*/ 370062306a36Sopenharmony_ci 370162306a36Sopenharmony_ci//ATOM_COMPUTE_CLOCK_FREQ.ulComputeClockFlag 370262306a36Sopenharmony_cienum atom_gpu_clock_type 370362306a36Sopenharmony_ci{ 370462306a36Sopenharmony_ci COMPUTE_GPUCLK_INPUT_FLAG_DEFAULT_GPUCLK =0x00, 370562306a36Sopenharmony_ci COMPUTE_GPUCLK_INPUT_FLAG_GFXCLK =0x01, 370662306a36Sopenharmony_ci COMPUTE_GPUCLK_INPUT_FLAG_UCLK =0x02, 370762306a36Sopenharmony_ci}; 370862306a36Sopenharmony_ci 370962306a36Sopenharmony_cistruct compute_gpu_clock_input_parameter_v1_8 371062306a36Sopenharmony_ci{ 371162306a36Sopenharmony_ci uint32_t gpuclock_10khz:24; //Input= target clock, output = actual clock 371262306a36Sopenharmony_ci uint32_t gpu_clock_type:8; //Input indicate clock type: enum atom_gpu_clock_type 371362306a36Sopenharmony_ci uint32_t reserved[5]; 371462306a36Sopenharmony_ci}; 371562306a36Sopenharmony_ci 371662306a36Sopenharmony_ci 371762306a36Sopenharmony_cistruct compute_gpu_clock_output_parameter_v1_8 371862306a36Sopenharmony_ci{ 371962306a36Sopenharmony_ci uint32_t gpuclock_10khz:24; //Input= target clock, output = actual clock 372062306a36Sopenharmony_ci uint32_t dfs_did:8; //return parameter: DFS divider which is used to program to register directly 372162306a36Sopenharmony_ci uint32_t pll_fb_mult; //Feedback Multiplier, bit 8:0 int, bit 15:12 post_div, bit 31:16 frac 372262306a36Sopenharmony_ci uint32_t pll_ss_fbsmult; // Spread FB Mult: bit 8:0 int, bit 31:16 frac 372362306a36Sopenharmony_ci uint16_t pll_ss_slew_frac; 372462306a36Sopenharmony_ci uint8_t pll_ss_enable; 372562306a36Sopenharmony_ci uint8_t reserved; 372662306a36Sopenharmony_ci uint32_t reserved1[2]; 372762306a36Sopenharmony_ci}; 372862306a36Sopenharmony_ci 372962306a36Sopenharmony_ci 373062306a36Sopenharmony_ci 373162306a36Sopenharmony_ci/* 373262306a36Sopenharmony_ci *************************************************************************** 373362306a36Sopenharmony_ci Structures used by ReadEfuseValue 373462306a36Sopenharmony_ci *************************************************************************** 373562306a36Sopenharmony_ci*/ 373662306a36Sopenharmony_ci 373762306a36Sopenharmony_cistruct read_efuse_input_parameters_v3_1 373862306a36Sopenharmony_ci{ 373962306a36Sopenharmony_ci uint16_t efuse_start_index; 374062306a36Sopenharmony_ci uint8_t reserved; 374162306a36Sopenharmony_ci uint8_t bitslen; 374262306a36Sopenharmony_ci}; 374362306a36Sopenharmony_ci 374462306a36Sopenharmony_ci// ReadEfuseValue input/output parameter 374562306a36Sopenharmony_ciunion read_efuse_value_parameters_v3_1 374662306a36Sopenharmony_ci{ 374762306a36Sopenharmony_ci struct read_efuse_input_parameters_v3_1 efuse_info; 374862306a36Sopenharmony_ci uint32_t efusevalue; 374962306a36Sopenharmony_ci}; 375062306a36Sopenharmony_ci 375162306a36Sopenharmony_ci 375262306a36Sopenharmony_ci/* 375362306a36Sopenharmony_ci *************************************************************************** 375462306a36Sopenharmony_ci Structures used by getsmuclockinfo 375562306a36Sopenharmony_ci *************************************************************************** 375662306a36Sopenharmony_ci*/ 375762306a36Sopenharmony_cistruct atom_get_smu_clock_info_parameters_v3_1 375862306a36Sopenharmony_ci{ 375962306a36Sopenharmony_ci uint8_t syspll_id; // 0= syspll0, 1=syspll1, 2=syspll2 376062306a36Sopenharmony_ci uint8_t clk_id; // atom_smu9_syspll0_clock_id (only valid when command == GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ ) 376162306a36Sopenharmony_ci uint8_t command; // enum of atom_get_smu_clock_info_command 376262306a36Sopenharmony_ci uint8_t dfsdid; // =0: get DFS DID from register, >0, give DFS divider, (only valid when command == GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ ) 376362306a36Sopenharmony_ci}; 376462306a36Sopenharmony_ci 376562306a36Sopenharmony_cienum atom_get_smu_clock_info_command 376662306a36Sopenharmony_ci{ 376762306a36Sopenharmony_ci GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ = 0, 376862306a36Sopenharmony_ci GET_SMU_CLOCK_INFO_V3_1_GET_PLLVCO_FREQ = 1, 376962306a36Sopenharmony_ci GET_SMU_CLOCK_INFO_V3_1_GET_PLLREFCLK_FREQ = 2, 377062306a36Sopenharmony_ci}; 377162306a36Sopenharmony_ci 377262306a36Sopenharmony_cienum atom_smu9_syspll0_clock_id 377362306a36Sopenharmony_ci{ 377462306a36Sopenharmony_ci SMU9_SYSPLL0_SMNCLK_ID = 0, // SMNCLK 377562306a36Sopenharmony_ci SMU9_SYSPLL0_SOCCLK_ID = 1, // SOCCLK (FCLK) 377662306a36Sopenharmony_ci SMU9_SYSPLL0_MP0CLK_ID = 2, // MP0CLK 377762306a36Sopenharmony_ci SMU9_SYSPLL0_MP1CLK_ID = 3, // MP1CLK 377862306a36Sopenharmony_ci SMU9_SYSPLL0_LCLK_ID = 4, // LCLK 377962306a36Sopenharmony_ci SMU9_SYSPLL0_DCLK_ID = 5, // DCLK 378062306a36Sopenharmony_ci SMU9_SYSPLL0_VCLK_ID = 6, // VCLK 378162306a36Sopenharmony_ci SMU9_SYSPLL0_ECLK_ID = 7, // ECLK 378262306a36Sopenharmony_ci SMU9_SYSPLL0_DCEFCLK_ID = 8, // DCEFCLK 378362306a36Sopenharmony_ci SMU9_SYSPLL0_DPREFCLK_ID = 10, // DPREFCLK 378462306a36Sopenharmony_ci SMU9_SYSPLL0_DISPCLK_ID = 11, // DISPCLK 378562306a36Sopenharmony_ci}; 378662306a36Sopenharmony_ci 378762306a36Sopenharmony_cienum atom_smu11_syspll_id { 378862306a36Sopenharmony_ci SMU11_SYSPLL0_ID = 0, 378962306a36Sopenharmony_ci SMU11_SYSPLL1_0_ID = 1, 379062306a36Sopenharmony_ci SMU11_SYSPLL1_1_ID = 2, 379162306a36Sopenharmony_ci SMU11_SYSPLL1_2_ID = 3, 379262306a36Sopenharmony_ci SMU11_SYSPLL2_ID = 4, 379362306a36Sopenharmony_ci SMU11_SYSPLL3_0_ID = 5, 379462306a36Sopenharmony_ci SMU11_SYSPLL3_1_ID = 6, 379562306a36Sopenharmony_ci}; 379662306a36Sopenharmony_ci 379762306a36Sopenharmony_cienum atom_smu11_syspll0_clock_id { 379862306a36Sopenharmony_ci SMU11_SYSPLL0_ECLK_ID = 0, // ECLK 379962306a36Sopenharmony_ci SMU11_SYSPLL0_SOCCLK_ID = 1, // SOCCLK 380062306a36Sopenharmony_ci SMU11_SYSPLL0_MP0CLK_ID = 2, // MP0CLK 380162306a36Sopenharmony_ci SMU11_SYSPLL0_DCLK_ID = 3, // DCLK 380262306a36Sopenharmony_ci SMU11_SYSPLL0_VCLK_ID = 4, // VCLK 380362306a36Sopenharmony_ci SMU11_SYSPLL0_DCEFCLK_ID = 5, // DCEFCLK 380462306a36Sopenharmony_ci}; 380562306a36Sopenharmony_ci 380662306a36Sopenharmony_cienum atom_smu11_syspll1_0_clock_id { 380762306a36Sopenharmony_ci SMU11_SYSPLL1_0_UCLKA_ID = 0, // UCLK_a 380862306a36Sopenharmony_ci}; 380962306a36Sopenharmony_ci 381062306a36Sopenharmony_cienum atom_smu11_syspll1_1_clock_id { 381162306a36Sopenharmony_ci SMU11_SYSPLL1_0_UCLKB_ID = 0, // UCLK_b 381262306a36Sopenharmony_ci}; 381362306a36Sopenharmony_ci 381462306a36Sopenharmony_cienum atom_smu11_syspll1_2_clock_id { 381562306a36Sopenharmony_ci SMU11_SYSPLL1_0_FCLK_ID = 0, // FCLK 381662306a36Sopenharmony_ci}; 381762306a36Sopenharmony_ci 381862306a36Sopenharmony_cienum atom_smu11_syspll2_clock_id { 381962306a36Sopenharmony_ci SMU11_SYSPLL2_GFXCLK_ID = 0, // GFXCLK 382062306a36Sopenharmony_ci}; 382162306a36Sopenharmony_ci 382262306a36Sopenharmony_cienum atom_smu11_syspll3_0_clock_id { 382362306a36Sopenharmony_ci SMU11_SYSPLL3_0_WAFCLK_ID = 0, // WAFCLK 382462306a36Sopenharmony_ci SMU11_SYSPLL3_0_DISPCLK_ID = 1, // DISPCLK 382562306a36Sopenharmony_ci SMU11_SYSPLL3_0_DPREFCLK_ID = 2, // DPREFCLK 382662306a36Sopenharmony_ci}; 382762306a36Sopenharmony_ci 382862306a36Sopenharmony_cienum atom_smu11_syspll3_1_clock_id { 382962306a36Sopenharmony_ci SMU11_SYSPLL3_1_MP1CLK_ID = 0, // MP1CLK 383062306a36Sopenharmony_ci SMU11_SYSPLL3_1_SMNCLK_ID = 1, // SMNCLK 383162306a36Sopenharmony_ci SMU11_SYSPLL3_1_LCLK_ID = 2, // LCLK 383262306a36Sopenharmony_ci}; 383362306a36Sopenharmony_ci 383462306a36Sopenharmony_cienum atom_smu12_syspll_id { 383562306a36Sopenharmony_ci SMU12_SYSPLL0_ID = 0, 383662306a36Sopenharmony_ci SMU12_SYSPLL1_ID = 1, 383762306a36Sopenharmony_ci SMU12_SYSPLL2_ID = 2, 383862306a36Sopenharmony_ci SMU12_SYSPLL3_0_ID = 3, 383962306a36Sopenharmony_ci SMU12_SYSPLL3_1_ID = 4, 384062306a36Sopenharmony_ci}; 384162306a36Sopenharmony_ci 384262306a36Sopenharmony_cienum atom_smu12_syspll0_clock_id { 384362306a36Sopenharmony_ci SMU12_SYSPLL0_SMNCLK_ID = 0, // SOCCLK 384462306a36Sopenharmony_ci SMU12_SYSPLL0_SOCCLK_ID = 1, // SOCCLK 384562306a36Sopenharmony_ci SMU12_SYSPLL0_MP0CLK_ID = 2, // MP0CLK 384662306a36Sopenharmony_ci SMU12_SYSPLL0_MP1CLK_ID = 3, // MP1CLK 384762306a36Sopenharmony_ci SMU12_SYSPLL0_MP2CLK_ID = 4, // MP2CLK 384862306a36Sopenharmony_ci SMU12_SYSPLL0_VCLK_ID = 5, // VCLK 384962306a36Sopenharmony_ci SMU12_SYSPLL0_LCLK_ID = 6, // LCLK 385062306a36Sopenharmony_ci SMU12_SYSPLL0_DCLK_ID = 7, // DCLK 385162306a36Sopenharmony_ci SMU12_SYSPLL0_ACLK_ID = 8, // ACLK 385262306a36Sopenharmony_ci SMU12_SYSPLL0_ISPCLK_ID = 9, // ISPCLK 385362306a36Sopenharmony_ci SMU12_SYSPLL0_SHUBCLK_ID = 10, // SHUBCLK 385462306a36Sopenharmony_ci}; 385562306a36Sopenharmony_ci 385662306a36Sopenharmony_cienum atom_smu12_syspll1_clock_id { 385762306a36Sopenharmony_ci SMU12_SYSPLL1_DISPCLK_ID = 0, // DISPCLK 385862306a36Sopenharmony_ci SMU12_SYSPLL1_DPPCLK_ID = 1, // DPPCLK 385962306a36Sopenharmony_ci SMU12_SYSPLL1_DPREFCLK_ID = 2, // DPREFCLK 386062306a36Sopenharmony_ci SMU12_SYSPLL1_DCFCLK_ID = 3, // DCFCLK 386162306a36Sopenharmony_ci}; 386262306a36Sopenharmony_ci 386362306a36Sopenharmony_cienum atom_smu12_syspll2_clock_id { 386462306a36Sopenharmony_ci SMU12_SYSPLL2_Pre_GFXCLK_ID = 0, // Pre_GFXCLK 386562306a36Sopenharmony_ci}; 386662306a36Sopenharmony_ci 386762306a36Sopenharmony_cienum atom_smu12_syspll3_0_clock_id { 386862306a36Sopenharmony_ci SMU12_SYSPLL3_0_FCLK_ID = 0, // FCLK 386962306a36Sopenharmony_ci}; 387062306a36Sopenharmony_ci 387162306a36Sopenharmony_cienum atom_smu12_syspll3_1_clock_id { 387262306a36Sopenharmony_ci SMU12_SYSPLL3_1_UMCCLK_ID = 0, // UMCCLK 387362306a36Sopenharmony_ci}; 387462306a36Sopenharmony_ci 387562306a36Sopenharmony_cistruct atom_get_smu_clock_info_output_parameters_v3_1 387662306a36Sopenharmony_ci{ 387762306a36Sopenharmony_ci union { 387862306a36Sopenharmony_ci uint32_t smu_clock_freq_hz; 387962306a36Sopenharmony_ci uint32_t syspllvcofreq_10khz; 388062306a36Sopenharmony_ci uint32_t sysspllrefclk_10khz; 388162306a36Sopenharmony_ci }atom_smu_outputclkfreq; 388262306a36Sopenharmony_ci}; 388362306a36Sopenharmony_ci 388462306a36Sopenharmony_ci 388562306a36Sopenharmony_ci 388662306a36Sopenharmony_ci/* 388762306a36Sopenharmony_ci *************************************************************************** 388862306a36Sopenharmony_ci Structures used by dynamicmemorysettings 388962306a36Sopenharmony_ci *************************************************************************** 389062306a36Sopenharmony_ci*/ 389162306a36Sopenharmony_ci 389262306a36Sopenharmony_cienum atom_dynamic_memory_setting_command 389362306a36Sopenharmony_ci{ 389462306a36Sopenharmony_ci COMPUTE_MEMORY_PLL_PARAM = 1, 389562306a36Sopenharmony_ci COMPUTE_ENGINE_PLL_PARAM = 2, 389662306a36Sopenharmony_ci ADJUST_MC_SETTING_PARAM = 3, 389762306a36Sopenharmony_ci}; 389862306a36Sopenharmony_ci 389962306a36Sopenharmony_ci/* when command = COMPUTE_MEMORY_PLL_PARAM or ADJUST_MC_SETTING_PARAM */ 390062306a36Sopenharmony_cistruct dynamic_mclk_settings_parameters_v2_1 390162306a36Sopenharmony_ci{ 390262306a36Sopenharmony_ci uint32_t mclk_10khz:24; //Input= target mclk 390362306a36Sopenharmony_ci uint32_t command:8; //command enum of atom_dynamic_memory_setting_command 390462306a36Sopenharmony_ci uint32_t reserved; 390562306a36Sopenharmony_ci}; 390662306a36Sopenharmony_ci 390762306a36Sopenharmony_ci/* when command = COMPUTE_ENGINE_PLL_PARAM */ 390862306a36Sopenharmony_cistruct dynamic_sclk_settings_parameters_v2_1 390962306a36Sopenharmony_ci{ 391062306a36Sopenharmony_ci uint32_t sclk_10khz:24; //Input= target mclk 391162306a36Sopenharmony_ci uint32_t command:8; //command enum of atom_dynamic_memory_setting_command 391262306a36Sopenharmony_ci uint32_t mclk_10khz; 391362306a36Sopenharmony_ci uint32_t reserved; 391462306a36Sopenharmony_ci}; 391562306a36Sopenharmony_ci 391662306a36Sopenharmony_ciunion dynamic_memory_settings_parameters_v2_1 391762306a36Sopenharmony_ci{ 391862306a36Sopenharmony_ci struct dynamic_mclk_settings_parameters_v2_1 mclk_setting; 391962306a36Sopenharmony_ci struct dynamic_sclk_settings_parameters_v2_1 sclk_setting; 392062306a36Sopenharmony_ci}; 392162306a36Sopenharmony_ci 392262306a36Sopenharmony_ci 392362306a36Sopenharmony_ci 392462306a36Sopenharmony_ci/* 392562306a36Sopenharmony_ci *************************************************************************** 392662306a36Sopenharmony_ci Structures used by memorytraining 392762306a36Sopenharmony_ci *************************************************************************** 392862306a36Sopenharmony_ci*/ 392962306a36Sopenharmony_ci 393062306a36Sopenharmony_cienum atom_umc6_0_ucode_function_call_enum_id 393162306a36Sopenharmony_ci{ 393262306a36Sopenharmony_ci UMC60_UCODE_FUNC_ID_REINIT = 0, 393362306a36Sopenharmony_ci UMC60_UCODE_FUNC_ID_ENTER_SELFREFRESH = 1, 393462306a36Sopenharmony_ci UMC60_UCODE_FUNC_ID_EXIT_SELFREFRESH = 2, 393562306a36Sopenharmony_ci}; 393662306a36Sopenharmony_ci 393762306a36Sopenharmony_ci 393862306a36Sopenharmony_cistruct memory_training_parameters_v2_1 393962306a36Sopenharmony_ci{ 394062306a36Sopenharmony_ci uint8_t ucode_func_id; 394162306a36Sopenharmony_ci uint8_t ucode_reserved[3]; 394262306a36Sopenharmony_ci uint32_t reserved[5]; 394362306a36Sopenharmony_ci}; 394462306a36Sopenharmony_ci 394562306a36Sopenharmony_ci 394662306a36Sopenharmony_ci/* 394762306a36Sopenharmony_ci *************************************************************************** 394862306a36Sopenharmony_ci Structures used by setpixelclock 394962306a36Sopenharmony_ci *************************************************************************** 395062306a36Sopenharmony_ci*/ 395162306a36Sopenharmony_ci 395262306a36Sopenharmony_cistruct set_pixel_clock_parameter_v1_7 395362306a36Sopenharmony_ci{ 395462306a36Sopenharmony_ci uint32_t pixclk_100hz; // target the pixel clock to drive the CRTC timing in unit of 100Hz. 395562306a36Sopenharmony_ci 395662306a36Sopenharmony_ci uint8_t pll_id; // ATOM_PHY_PLL0/ATOM_PHY_PLL1/ATOM_PPLL0 395762306a36Sopenharmony_ci uint8_t encoderobjid; // ASIC encoder id defined in objectId.h, 395862306a36Sopenharmony_ci // indicate which graphic encoder will be used. 395962306a36Sopenharmony_ci uint8_t encoder_mode; // Encoder mode: 396062306a36Sopenharmony_ci uint8_t miscinfo; // enum atom_set_pixel_clock_v1_7_misc_info 396162306a36Sopenharmony_ci uint8_t crtc_id; // enum of atom_crtc_def 396262306a36Sopenharmony_ci uint8_t deep_color_ratio; // HDMI panel bit depth: enum atom_set_pixel_clock_v1_7_deepcolor_ratio 396362306a36Sopenharmony_ci uint8_t reserved1[2]; 396462306a36Sopenharmony_ci uint32_t reserved2; 396562306a36Sopenharmony_ci}; 396662306a36Sopenharmony_ci 396762306a36Sopenharmony_ci//ucMiscInfo 396862306a36Sopenharmony_cienum atom_set_pixel_clock_v1_7_misc_info 396962306a36Sopenharmony_ci{ 397062306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_FORCE_PROG_PPLL = 0x01, 397162306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_PROG_PHYPLL = 0x02, 397262306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_YUV420_MODE = 0x04, 397362306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_DVI_DUALLINK_EN = 0x08, 397462306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_REF_DIV_SRC = 0x30, 397562306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_XTALIN = 0x00, 397662306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_PCIE = 0x10, 397762306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_GENLK = 0x20, 397862306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_REF_DIV_SRC_REFPAD = 0x30, 397962306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_ATOMIC_UPDATE = 0x40, 398062306a36Sopenharmony_ci PIXEL_CLOCK_V7_MISC_FORCE_SS_DIS = 0x80, 398162306a36Sopenharmony_ci}; 398262306a36Sopenharmony_ci 398362306a36Sopenharmony_ci/* deep_color_ratio */ 398462306a36Sopenharmony_cienum atom_set_pixel_clock_v1_7_deepcolor_ratio 398562306a36Sopenharmony_ci{ 398662306a36Sopenharmony_ci PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_DIS = 0x00, //00 - DCCG_DEEP_COLOR_DTO_DISABLE: Disable Deep Color DTO 398762306a36Sopenharmony_ci PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_5_4 = 0x01, //01 - DCCG_DEEP_COLOR_DTO_5_4_RATIO: Set Deep Color DTO to 5:4 398862306a36Sopenharmony_ci PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_3_2 = 0x02, //02 - DCCG_DEEP_COLOR_DTO_3_2_RATIO: Set Deep Color DTO to 3:2 398962306a36Sopenharmony_ci PIXEL_CLOCK_V7_DEEPCOLOR_RATIO_2_1 = 0x03, //03 - DCCG_DEEP_COLOR_DTO_2_1_RATIO: Set Deep Color DTO to 2:1 399062306a36Sopenharmony_ci}; 399162306a36Sopenharmony_ci 399262306a36Sopenharmony_ci/* 399362306a36Sopenharmony_ci *************************************************************************** 399462306a36Sopenharmony_ci Structures used by setdceclock 399562306a36Sopenharmony_ci *************************************************************************** 399662306a36Sopenharmony_ci*/ 399762306a36Sopenharmony_ci 399862306a36Sopenharmony_ci// SetDCEClock input parameter for DCE11.2( ELM and BF ) and above 399962306a36Sopenharmony_cistruct set_dce_clock_parameters_v2_1 400062306a36Sopenharmony_ci{ 400162306a36Sopenharmony_ci uint32_t dceclk_10khz; // target DCE frequency in unit of 10KHZ, return real DISPCLK/DPREFCLK frequency. 400262306a36Sopenharmony_ci uint8_t dceclktype; // =0: DISPCLK =1: DPREFCLK =2: PIXCLK 400362306a36Sopenharmony_ci uint8_t dceclksrc; // ATOM_PLL0 or ATOM_GCK_DFS or ATOM_FCH_CLK or ATOM_COMBOPHY_PLLx 400462306a36Sopenharmony_ci uint8_t dceclkflag; // Bit [1:0] = PPLL ref clock source ( when ucDCEClkSrc= ATOM_PPLL0 ) 400562306a36Sopenharmony_ci uint8_t crtc_id; // ucDisp Pipe Id, ATOM_CRTC0/1/2/..., use only when ucDCEClkType = PIXCLK 400662306a36Sopenharmony_ci}; 400762306a36Sopenharmony_ci 400862306a36Sopenharmony_ci//ucDCEClkType 400962306a36Sopenharmony_cienum atom_set_dce_clock_clock_type 401062306a36Sopenharmony_ci{ 401162306a36Sopenharmony_ci DCE_CLOCK_TYPE_DISPCLK = 0, 401262306a36Sopenharmony_ci DCE_CLOCK_TYPE_DPREFCLK = 1, 401362306a36Sopenharmony_ci DCE_CLOCK_TYPE_PIXELCLK = 2, // used by VBIOS internally, called by SetPixelClock 401462306a36Sopenharmony_ci}; 401562306a36Sopenharmony_ci 401662306a36Sopenharmony_ci//ucDCEClkFlag when ucDCEClkType == DPREFCLK 401762306a36Sopenharmony_cienum atom_set_dce_clock_dprefclk_flag 401862306a36Sopenharmony_ci{ 401962306a36Sopenharmony_ci DCE_CLOCK_FLAG_PLL_REFCLK_SRC_MASK = 0x03, 402062306a36Sopenharmony_ci DCE_CLOCK_FLAG_PLL_REFCLK_SRC_GENERICA = 0x00, 402162306a36Sopenharmony_ci DCE_CLOCK_FLAG_PLL_REFCLK_SRC_GENLK = 0x01, 402262306a36Sopenharmony_ci DCE_CLOCK_FLAG_PLL_REFCLK_SRC_PCIE = 0x02, 402362306a36Sopenharmony_ci DCE_CLOCK_FLAG_PLL_REFCLK_SRC_XTALIN = 0x03, 402462306a36Sopenharmony_ci}; 402562306a36Sopenharmony_ci 402662306a36Sopenharmony_ci//ucDCEClkFlag when ucDCEClkType == PIXCLK 402762306a36Sopenharmony_cienum atom_set_dce_clock_pixclk_flag 402862306a36Sopenharmony_ci{ 402962306a36Sopenharmony_ci DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_MASK = 0x03, 403062306a36Sopenharmony_ci DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_DIS = 0x00, //00 - DCCG_DEEP_COLOR_DTO_DISABLE: Disable Deep Color DTO 403162306a36Sopenharmony_ci DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_5_4 = 0x01, //01 - DCCG_DEEP_COLOR_DTO_5_4_RATIO: Set Deep Color DTO to 5:4 403262306a36Sopenharmony_ci DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_3_2 = 0x02, //02 - DCCG_DEEP_COLOR_DTO_3_2_RATIO: Set Deep Color DTO to 3:2 403362306a36Sopenharmony_ci DCE_CLOCK_FLAG_PCLK_DEEPCOLOR_RATIO_2_1 = 0x03, //03 - DCCG_DEEP_COLOR_DTO_2_1_RATIO: Set Deep Color DTO to 2:1 403462306a36Sopenharmony_ci DCE_CLOCK_FLAG_PIXCLK_YUV420_MODE = 0x04, 403562306a36Sopenharmony_ci}; 403662306a36Sopenharmony_ci 403762306a36Sopenharmony_cistruct set_dce_clock_ps_allocation_v2_1 403862306a36Sopenharmony_ci{ 403962306a36Sopenharmony_ci struct set_dce_clock_parameters_v2_1 param; 404062306a36Sopenharmony_ci uint32_t ulReserved[2]; 404162306a36Sopenharmony_ci}; 404262306a36Sopenharmony_ci 404362306a36Sopenharmony_ci 404462306a36Sopenharmony_ci/****************************************************************************/ 404562306a36Sopenharmony_ci// Structures used by BlankCRTC 404662306a36Sopenharmony_ci/****************************************************************************/ 404762306a36Sopenharmony_cistruct blank_crtc_parameters 404862306a36Sopenharmony_ci{ 404962306a36Sopenharmony_ci uint8_t crtc_id; // enum atom_crtc_def 405062306a36Sopenharmony_ci uint8_t blanking; // enum atom_blank_crtc_command 405162306a36Sopenharmony_ci uint16_t reserved; 405262306a36Sopenharmony_ci uint32_t reserved1; 405362306a36Sopenharmony_ci}; 405462306a36Sopenharmony_ci 405562306a36Sopenharmony_cienum atom_blank_crtc_command 405662306a36Sopenharmony_ci{ 405762306a36Sopenharmony_ci ATOM_BLANKING = 1, 405862306a36Sopenharmony_ci ATOM_BLANKING_OFF = 0, 405962306a36Sopenharmony_ci}; 406062306a36Sopenharmony_ci 406162306a36Sopenharmony_ci/****************************************************************************/ 406262306a36Sopenharmony_ci// Structures used by enablecrtc 406362306a36Sopenharmony_ci/****************************************************************************/ 406462306a36Sopenharmony_cistruct enable_crtc_parameters 406562306a36Sopenharmony_ci{ 406662306a36Sopenharmony_ci uint8_t crtc_id; // enum atom_crtc_def 406762306a36Sopenharmony_ci uint8_t enable; // ATOM_ENABLE or ATOM_DISABLE 406862306a36Sopenharmony_ci uint8_t padding[2]; 406962306a36Sopenharmony_ci}; 407062306a36Sopenharmony_ci 407162306a36Sopenharmony_ci 407262306a36Sopenharmony_ci/****************************************************************************/ 407362306a36Sopenharmony_ci// Structure used by EnableDispPowerGating 407462306a36Sopenharmony_ci/****************************************************************************/ 407562306a36Sopenharmony_cistruct enable_disp_power_gating_parameters_v2_1 407662306a36Sopenharmony_ci{ 407762306a36Sopenharmony_ci uint8_t disp_pipe_id; // ATOM_CRTC1, ATOM_CRTC2, ... 407862306a36Sopenharmony_ci uint8_t enable; // ATOM_ENABLE or ATOM_DISABLE 407962306a36Sopenharmony_ci uint8_t padding[2]; 408062306a36Sopenharmony_ci}; 408162306a36Sopenharmony_ci 408262306a36Sopenharmony_cistruct enable_disp_power_gating_ps_allocation 408362306a36Sopenharmony_ci{ 408462306a36Sopenharmony_ci struct enable_disp_power_gating_parameters_v2_1 param; 408562306a36Sopenharmony_ci uint32_t ulReserved[4]; 408662306a36Sopenharmony_ci}; 408762306a36Sopenharmony_ci 408862306a36Sopenharmony_ci/****************************************************************************/ 408962306a36Sopenharmony_ci// Structure used in setcrtc_usingdtdtiming 409062306a36Sopenharmony_ci/****************************************************************************/ 409162306a36Sopenharmony_cistruct set_crtc_using_dtd_timing_parameters 409262306a36Sopenharmony_ci{ 409362306a36Sopenharmony_ci uint16_t h_size; 409462306a36Sopenharmony_ci uint16_t h_blanking_time; 409562306a36Sopenharmony_ci uint16_t v_size; 409662306a36Sopenharmony_ci uint16_t v_blanking_time; 409762306a36Sopenharmony_ci uint16_t h_syncoffset; 409862306a36Sopenharmony_ci uint16_t h_syncwidth; 409962306a36Sopenharmony_ci uint16_t v_syncoffset; 410062306a36Sopenharmony_ci uint16_t v_syncwidth; 410162306a36Sopenharmony_ci uint16_t modemiscinfo; 410262306a36Sopenharmony_ci uint8_t h_border; 410362306a36Sopenharmony_ci uint8_t v_border; 410462306a36Sopenharmony_ci uint8_t crtc_id; // enum atom_crtc_def 410562306a36Sopenharmony_ci uint8_t encoder_mode; // atom_encode_mode_def 410662306a36Sopenharmony_ci uint8_t padding[2]; 410762306a36Sopenharmony_ci}; 410862306a36Sopenharmony_ci 410962306a36Sopenharmony_ci 411062306a36Sopenharmony_ci/****************************************************************************/ 411162306a36Sopenharmony_ci// Structures used by processi2cchanneltransaction 411262306a36Sopenharmony_ci/****************************************************************************/ 411362306a36Sopenharmony_cistruct process_i2c_channel_transaction_parameters 411462306a36Sopenharmony_ci{ 411562306a36Sopenharmony_ci uint8_t i2cspeed_khz; 411662306a36Sopenharmony_ci union { 411762306a36Sopenharmony_ci uint8_t regindex; 411862306a36Sopenharmony_ci uint8_t status; /* enum atom_process_i2c_flag */ 411962306a36Sopenharmony_ci } regind_status; 412062306a36Sopenharmony_ci uint16_t i2c_data_out; 412162306a36Sopenharmony_ci uint8_t flag; /* enum atom_process_i2c_status */ 412262306a36Sopenharmony_ci uint8_t trans_bytes; 412362306a36Sopenharmony_ci uint8_t slave_addr; 412462306a36Sopenharmony_ci uint8_t i2c_id; 412562306a36Sopenharmony_ci}; 412662306a36Sopenharmony_ci 412762306a36Sopenharmony_ci//ucFlag 412862306a36Sopenharmony_cienum atom_process_i2c_flag 412962306a36Sopenharmony_ci{ 413062306a36Sopenharmony_ci HW_I2C_WRITE = 1, 413162306a36Sopenharmony_ci HW_I2C_READ = 0, 413262306a36Sopenharmony_ci I2C_2BYTE_ADDR = 0x02, 413362306a36Sopenharmony_ci HW_I2C_SMBUS_BYTE_WR = 0x04, 413462306a36Sopenharmony_ci}; 413562306a36Sopenharmony_ci 413662306a36Sopenharmony_ci//status 413762306a36Sopenharmony_cienum atom_process_i2c_status 413862306a36Sopenharmony_ci{ 413962306a36Sopenharmony_ci HW_ASSISTED_I2C_STATUS_FAILURE =2, 414062306a36Sopenharmony_ci HW_ASSISTED_I2C_STATUS_SUCCESS =1, 414162306a36Sopenharmony_ci}; 414262306a36Sopenharmony_ci 414362306a36Sopenharmony_ci 414462306a36Sopenharmony_ci/****************************************************************************/ 414562306a36Sopenharmony_ci// Structures used by processauxchanneltransaction 414662306a36Sopenharmony_ci/****************************************************************************/ 414762306a36Sopenharmony_ci 414862306a36Sopenharmony_cistruct process_aux_channel_transaction_parameters_v1_2 414962306a36Sopenharmony_ci{ 415062306a36Sopenharmony_ci uint16_t aux_request; 415162306a36Sopenharmony_ci uint16_t dataout; 415262306a36Sopenharmony_ci uint8_t channelid; 415362306a36Sopenharmony_ci union { 415462306a36Sopenharmony_ci uint8_t reply_status; 415562306a36Sopenharmony_ci uint8_t aux_delay; 415662306a36Sopenharmony_ci } aux_status_delay; 415762306a36Sopenharmony_ci uint8_t dataout_len; 415862306a36Sopenharmony_ci uint8_t hpd_id; //=0: HPD1, =1: HPD2, =2: HPD3, =3: HPD4, =4: HPD5, =5: HPD6 415962306a36Sopenharmony_ci}; 416062306a36Sopenharmony_ci 416162306a36Sopenharmony_ci 416262306a36Sopenharmony_ci/****************************************************************************/ 416362306a36Sopenharmony_ci// Structures used by selectcrtc_source 416462306a36Sopenharmony_ci/****************************************************************************/ 416562306a36Sopenharmony_ci 416662306a36Sopenharmony_cistruct select_crtc_source_parameters_v2_3 416762306a36Sopenharmony_ci{ 416862306a36Sopenharmony_ci uint8_t crtc_id; // enum atom_crtc_def 416962306a36Sopenharmony_ci uint8_t encoder_id; // enum atom_dig_def 417062306a36Sopenharmony_ci uint8_t encode_mode; // enum atom_encode_mode_def 417162306a36Sopenharmony_ci uint8_t dst_bpc; // enum atom_panel_bit_per_color 417262306a36Sopenharmony_ci}; 417362306a36Sopenharmony_ci 417462306a36Sopenharmony_ci 417562306a36Sopenharmony_ci/****************************************************************************/ 417662306a36Sopenharmony_ci// Structures used by digxencodercontrol 417762306a36Sopenharmony_ci/****************************************************************************/ 417862306a36Sopenharmony_ci 417962306a36Sopenharmony_ci// ucAction: 418062306a36Sopenharmony_cienum atom_dig_encoder_control_action 418162306a36Sopenharmony_ci{ 418262306a36Sopenharmony_ci ATOM_ENCODER_CMD_DISABLE_DIG = 0, 418362306a36Sopenharmony_ci ATOM_ENCODER_CMD_ENABLE_DIG = 1, 418462306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_LINK_TRAINING_START = 0x08, 418562306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN1 = 0x09, 418662306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN2 = 0x0a, 418762306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN3 = 0x13, 418862306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_LINK_TRAINING_COMPLETE = 0x0b, 418962306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_VIDEO_OFF = 0x0c, 419062306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_VIDEO_ON = 0x0d, 419162306a36Sopenharmony_ci ATOM_ENCODER_CMD_SETUP_PANEL_MODE = 0x10, 419262306a36Sopenharmony_ci ATOM_ENCODER_CMD_DP_LINK_TRAINING_PATTERN4 = 0x14, 419362306a36Sopenharmony_ci ATOM_ENCODER_CMD_STREAM_SETUP = 0x0F, 419462306a36Sopenharmony_ci ATOM_ENCODER_CMD_LINK_SETUP = 0x11, 419562306a36Sopenharmony_ci ATOM_ENCODER_CMD_ENCODER_BLANK = 0x12, 419662306a36Sopenharmony_ci}; 419762306a36Sopenharmony_ci 419862306a36Sopenharmony_ci//define ucPanelMode 419962306a36Sopenharmony_cienum atom_dig_encoder_control_panelmode 420062306a36Sopenharmony_ci{ 420162306a36Sopenharmony_ci DP_PANEL_MODE_DISABLE = 0x00, 420262306a36Sopenharmony_ci DP_PANEL_MODE_ENABLE_eDP_MODE = 0x01, 420362306a36Sopenharmony_ci DP_PANEL_MODE_ENABLE_LVLINK_MODE = 0x11, 420462306a36Sopenharmony_ci}; 420562306a36Sopenharmony_ci 420662306a36Sopenharmony_ci//ucDigId 420762306a36Sopenharmony_cienum atom_dig_encoder_control_v5_digid 420862306a36Sopenharmony_ci{ 420962306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG0_ENCODER = 0x00, 421062306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG1_ENCODER = 0x01, 421162306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG2_ENCODER = 0x02, 421262306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG3_ENCODER = 0x03, 421362306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG4_ENCODER = 0x04, 421462306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG5_ENCODER = 0x05, 421562306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG6_ENCODER = 0x06, 421662306a36Sopenharmony_ci ATOM_ENCODER_CONFIG_V5_DIG7_ENCODER = 0x07, 421762306a36Sopenharmony_ci}; 421862306a36Sopenharmony_ci 421962306a36Sopenharmony_cistruct dig_encoder_stream_setup_parameters_v1_5 422062306a36Sopenharmony_ci{ 422162306a36Sopenharmony_ci uint8_t digid; // 0~6 map to DIG0~DIG6 enum atom_dig_encoder_control_v5_digid 422262306a36Sopenharmony_ci uint8_t action; // = ATOM_ENOCODER_CMD_STREAM_SETUP 422362306a36Sopenharmony_ci uint8_t digmode; // ATOM_ENCODER_MODE_DP/ATOM_ENCODER_MODE_DVI/ATOM_ENCODER_MODE_HDMI 422462306a36Sopenharmony_ci uint8_t lanenum; // Lane number 422562306a36Sopenharmony_ci uint32_t pclk_10khz; // Pixel Clock in 10Khz 422662306a36Sopenharmony_ci uint8_t bitpercolor; 422762306a36Sopenharmony_ci uint8_t dplinkrate_270mhz;//= DP link rate/270Mhz, =6: 1.62G = 10: 2.7G, =20: 5.4Ghz, =30: 8.1Ghz etc 422862306a36Sopenharmony_ci uint8_t reserved[2]; 422962306a36Sopenharmony_ci}; 423062306a36Sopenharmony_ci 423162306a36Sopenharmony_cistruct dig_encoder_link_setup_parameters_v1_5 423262306a36Sopenharmony_ci{ 423362306a36Sopenharmony_ci uint8_t digid; // 0~6 map to DIG0~DIG6 enum atom_dig_encoder_control_v5_digid 423462306a36Sopenharmony_ci uint8_t action; // = ATOM_ENOCODER_CMD_LINK_SETUP 423562306a36Sopenharmony_ci uint8_t digmode; // ATOM_ENCODER_MODE_DP/ATOM_ENCODER_MODE_DVI/ATOM_ENCODER_MODE_HDMI 423662306a36Sopenharmony_ci uint8_t lanenum; // Lane number 423762306a36Sopenharmony_ci uint8_t symclk_10khz; // Symbol Clock in 10Khz 423862306a36Sopenharmony_ci uint8_t hpd_sel; 423962306a36Sopenharmony_ci uint8_t digfe_sel; // DIG stream( front-end ) selection, bit0 means DIG0 FE is enable, 424062306a36Sopenharmony_ci uint8_t reserved[2]; 424162306a36Sopenharmony_ci}; 424262306a36Sopenharmony_ci 424362306a36Sopenharmony_cistruct dp_panel_mode_set_parameters_v1_5 424462306a36Sopenharmony_ci{ 424562306a36Sopenharmony_ci uint8_t digid; // 0~6 map to DIG0~DIG6 enum atom_dig_encoder_control_v5_digid 424662306a36Sopenharmony_ci uint8_t action; // = ATOM_ENCODER_CMD_DPLINK_SETUP 424762306a36Sopenharmony_ci uint8_t panelmode; // enum atom_dig_encoder_control_panelmode 424862306a36Sopenharmony_ci uint8_t reserved1; 424962306a36Sopenharmony_ci uint32_t reserved2[2]; 425062306a36Sopenharmony_ci}; 425162306a36Sopenharmony_ci 425262306a36Sopenharmony_cistruct dig_encoder_generic_cmd_parameters_v1_5 425362306a36Sopenharmony_ci{ 425462306a36Sopenharmony_ci uint8_t digid; // 0~6 map to DIG0~DIG6 enum atom_dig_encoder_control_v5_digid 425562306a36Sopenharmony_ci uint8_t action; // = rest of generic encoder command which does not carry any parameters 425662306a36Sopenharmony_ci uint8_t reserved1[2]; 425762306a36Sopenharmony_ci uint32_t reserved2[2]; 425862306a36Sopenharmony_ci}; 425962306a36Sopenharmony_ci 426062306a36Sopenharmony_ciunion dig_encoder_control_parameters_v1_5 426162306a36Sopenharmony_ci{ 426262306a36Sopenharmony_ci struct dig_encoder_generic_cmd_parameters_v1_5 cmd_param; 426362306a36Sopenharmony_ci struct dig_encoder_stream_setup_parameters_v1_5 stream_param; 426462306a36Sopenharmony_ci struct dig_encoder_link_setup_parameters_v1_5 link_param; 426562306a36Sopenharmony_ci struct dp_panel_mode_set_parameters_v1_5 dppanel_param; 426662306a36Sopenharmony_ci}; 426762306a36Sopenharmony_ci 426862306a36Sopenharmony_ci/* 426962306a36Sopenharmony_ci *************************************************************************** 427062306a36Sopenharmony_ci Structures used by dig1transmittercontrol 427162306a36Sopenharmony_ci *************************************************************************** 427262306a36Sopenharmony_ci*/ 427362306a36Sopenharmony_cistruct dig_transmitter_control_parameters_v1_6 427462306a36Sopenharmony_ci{ 427562306a36Sopenharmony_ci uint8_t phyid; // 0=UNIPHYA, 1=UNIPHYB, 2=UNIPHYC, 3=UNIPHYD, 4= UNIPHYE 5=UNIPHYF 427662306a36Sopenharmony_ci uint8_t action; // define as ATOM_TRANSMITER_ACTION_xxx 427762306a36Sopenharmony_ci union { 427862306a36Sopenharmony_ci uint8_t digmode; // enum atom_encode_mode_def 427962306a36Sopenharmony_ci uint8_t dplaneset; // DP voltage swing and pre-emphasis value defined in DPCD DP_LANE_SET, "DP_LANE_SET__xDB_y_zV" 428062306a36Sopenharmony_ci } mode_laneset; 428162306a36Sopenharmony_ci uint8_t lanenum; // Lane number 1, 2, 4, 8 428262306a36Sopenharmony_ci uint32_t symclk_10khz; // Symbol Clock in 10Khz 428362306a36Sopenharmony_ci uint8_t hpdsel; // =1: HPD1, =2: HPD2, .... =6: HPD6, =0: HPD is not assigned 428462306a36Sopenharmony_ci uint8_t digfe_sel; // DIG stream( front-end ) selection, bit0 means DIG0 FE is enable, 428562306a36Sopenharmony_ci uint8_t connobj_id; // Connector Object Id defined in ObjectId.h 428662306a36Sopenharmony_ci uint8_t reserved; 428762306a36Sopenharmony_ci uint32_t reserved1; 428862306a36Sopenharmony_ci}; 428962306a36Sopenharmony_ci 429062306a36Sopenharmony_cistruct dig_transmitter_control_ps_allocation_v1_6 429162306a36Sopenharmony_ci{ 429262306a36Sopenharmony_ci struct dig_transmitter_control_parameters_v1_6 param; 429362306a36Sopenharmony_ci uint32_t reserved[4]; 429462306a36Sopenharmony_ci}; 429562306a36Sopenharmony_ci 429662306a36Sopenharmony_ci//ucAction 429762306a36Sopenharmony_cienum atom_dig_transmitter_control_action 429862306a36Sopenharmony_ci{ 429962306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_DISABLE = 0, 430062306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_ENABLE = 1, 430162306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_LCD_BLOFF = 2, 430262306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_LCD_BLON = 3, 430362306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL = 4, 430462306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_LCD_SELFTEST_START = 5, 430562306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_LCD_SELFTEST_STOP = 6, 430662306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_INIT = 7, 430762306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT = 8, 430862306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT = 9, 430962306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_SETUP = 10, 431062306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH = 11, 431162306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_POWER_ON = 12, 431262306a36Sopenharmony_ci ATOM_TRANSMITTER_ACTION_POWER_OFF = 13, 431362306a36Sopenharmony_ci}; 431462306a36Sopenharmony_ci 431562306a36Sopenharmony_ci// digfe_sel 431662306a36Sopenharmony_cienum atom_dig_transmitter_control_digfe_sel 431762306a36Sopenharmony_ci{ 431862306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGA_SEL = 0x01, 431962306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGB_SEL = 0x02, 432062306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGC_SEL = 0x04, 432162306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGD_SEL = 0x08, 432262306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGE_SEL = 0x10, 432362306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGF_SEL = 0x20, 432462306a36Sopenharmony_ci ATOM_TRANMSITTER_V6__DIGG_SEL = 0x40, 432562306a36Sopenharmony_ci}; 432662306a36Sopenharmony_ci 432762306a36Sopenharmony_ci 432862306a36Sopenharmony_ci//ucHPDSel 432962306a36Sopenharmony_cienum atom_dig_transmitter_control_hpd_sel 433062306a36Sopenharmony_ci{ 433162306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_NO_HPD_SEL = 0x00, 433262306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_HPD1_SEL = 0x01, 433362306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_HPD2_SEL = 0x02, 433462306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_HPD3_SEL = 0x03, 433562306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_HPD4_SEL = 0x04, 433662306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_HPD5_SEL = 0x05, 433762306a36Sopenharmony_ci ATOM_TRANSMITTER_V6_HPD6_SEL = 0x06, 433862306a36Sopenharmony_ci}; 433962306a36Sopenharmony_ci 434062306a36Sopenharmony_ci// ucDPLaneSet 434162306a36Sopenharmony_cienum atom_dig_transmitter_control_dplaneset 434262306a36Sopenharmony_ci{ 434362306a36Sopenharmony_ci DP_LANE_SET__0DB_0_4V = 0x00, 434462306a36Sopenharmony_ci DP_LANE_SET__0DB_0_6V = 0x01, 434562306a36Sopenharmony_ci DP_LANE_SET__0DB_0_8V = 0x02, 434662306a36Sopenharmony_ci DP_LANE_SET__0DB_1_2V = 0x03, 434762306a36Sopenharmony_ci DP_LANE_SET__3_5DB_0_4V = 0x08, 434862306a36Sopenharmony_ci DP_LANE_SET__3_5DB_0_6V = 0x09, 434962306a36Sopenharmony_ci DP_LANE_SET__3_5DB_0_8V = 0x0a, 435062306a36Sopenharmony_ci DP_LANE_SET__6DB_0_4V = 0x10, 435162306a36Sopenharmony_ci DP_LANE_SET__6DB_0_6V = 0x11, 435262306a36Sopenharmony_ci DP_LANE_SET__9_5DB_0_4V = 0x18, 435362306a36Sopenharmony_ci}; 435462306a36Sopenharmony_ci 435562306a36Sopenharmony_ci 435662306a36Sopenharmony_ci 435762306a36Sopenharmony_ci/****************************************************************************/ 435862306a36Sopenharmony_ci// Structures used by ExternalEncoderControl V2.4 435962306a36Sopenharmony_ci/****************************************************************************/ 436062306a36Sopenharmony_ci 436162306a36Sopenharmony_cistruct external_encoder_control_parameters_v2_4 436262306a36Sopenharmony_ci{ 436362306a36Sopenharmony_ci uint16_t pixelclock_10khz; // pixel clock in 10Khz, valid when ucAction=SETUP/ENABLE_OUTPUT 436462306a36Sopenharmony_ci uint8_t config; // indicate which encoder, and DP link rate when ucAction = SETUP/ENABLE_OUTPUT 436562306a36Sopenharmony_ci uint8_t action; // 436662306a36Sopenharmony_ci uint8_t encodermode; // encoder mode, only used when ucAction = SETUP/ENABLE_OUTPUT 436762306a36Sopenharmony_ci uint8_t lanenum; // lane number, only used when ucAction = SETUP/ENABLE_OUTPUT 436862306a36Sopenharmony_ci uint8_t bitpercolor; // output bit per color, only valid when ucAction = SETUP/ENABLE_OUTPUT and ucEncodeMode= DP 436962306a36Sopenharmony_ci uint8_t hpd_id; 437062306a36Sopenharmony_ci}; 437162306a36Sopenharmony_ci 437262306a36Sopenharmony_ci 437362306a36Sopenharmony_ci// ucAction 437462306a36Sopenharmony_cienum external_encoder_control_action_def 437562306a36Sopenharmony_ci{ 437662306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_DISABLE_OUTPUT = 0x00, 437762306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_ENABLE_OUTPUT = 0x01, 437862306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_ENCODER_INIT = 0x07, 437962306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP = 0x0f, 438062306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING_OFF = 0x10, 438162306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING = 0x11, 438262306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_DACLOAD_DETECTION = 0x12, 438362306a36Sopenharmony_ci EXTERNAL_ENCODER_ACTION_V3_DDC_SETUP = 0x14, 438462306a36Sopenharmony_ci}; 438562306a36Sopenharmony_ci 438662306a36Sopenharmony_ci// ucConfig 438762306a36Sopenharmony_cienum external_encoder_control_v2_4_config_def 438862306a36Sopenharmony_ci{ 438962306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_MASK = 0x03, 439062306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_1_62GHZ = 0x00, 439162306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_2_70GHZ = 0x01, 439262306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_5_40GHZ = 0x02, 439362306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_3_24GHZ = 0x03, 439462306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_ENCODER_SEL_MAKS = 0x70, 439562306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_ENCODER1 = 0x00, 439662306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_ENCODER2 = 0x10, 439762306a36Sopenharmony_ci EXTERNAL_ENCODER_CONFIG_V3_ENCODER3 = 0x20, 439862306a36Sopenharmony_ci}; 439962306a36Sopenharmony_ci 440062306a36Sopenharmony_cistruct external_encoder_control_ps_allocation_v2_4 440162306a36Sopenharmony_ci{ 440262306a36Sopenharmony_ci struct external_encoder_control_parameters_v2_4 sExtEncoder; 440362306a36Sopenharmony_ci uint32_t reserved[2]; 440462306a36Sopenharmony_ci}; 440562306a36Sopenharmony_ci 440662306a36Sopenharmony_ci 440762306a36Sopenharmony_ci/* 440862306a36Sopenharmony_ci *************************************************************************** 440962306a36Sopenharmony_ci AMD ACPI Table 441062306a36Sopenharmony_ci 441162306a36Sopenharmony_ci *************************************************************************** 441262306a36Sopenharmony_ci*/ 441362306a36Sopenharmony_ci 441462306a36Sopenharmony_cistruct amd_acpi_description_header{ 441562306a36Sopenharmony_ci uint32_t signature; 441662306a36Sopenharmony_ci uint32_t tableLength; //Length 441762306a36Sopenharmony_ci uint8_t revision; 441862306a36Sopenharmony_ci uint8_t checksum; 441962306a36Sopenharmony_ci uint8_t oemId[6]; 442062306a36Sopenharmony_ci uint8_t oemTableId[8]; //UINT64 OemTableId; 442162306a36Sopenharmony_ci uint32_t oemRevision; 442262306a36Sopenharmony_ci uint32_t creatorId; 442362306a36Sopenharmony_ci uint32_t creatorRevision; 442462306a36Sopenharmony_ci}; 442562306a36Sopenharmony_ci 442662306a36Sopenharmony_cistruct uefi_acpi_vfct{ 442762306a36Sopenharmony_ci struct amd_acpi_description_header sheader; 442862306a36Sopenharmony_ci uint8_t tableUUID[16]; //0x24 442962306a36Sopenharmony_ci uint32_t vbiosimageoffset; //0x34. Offset to the first GOP_VBIOS_CONTENT block from the beginning of the stucture. 443062306a36Sopenharmony_ci uint32_t lib1Imageoffset; //0x38. Offset to the first GOP_LIB1_CONTENT block from the beginning of the stucture. 443162306a36Sopenharmony_ci uint32_t reserved[4]; //0x3C 443262306a36Sopenharmony_ci}; 443362306a36Sopenharmony_ci 443462306a36Sopenharmony_cistruct vfct_image_header{ 443562306a36Sopenharmony_ci uint32_t pcibus; //0x4C 443662306a36Sopenharmony_ci uint32_t pcidevice; //0x50 443762306a36Sopenharmony_ci uint32_t pcifunction; //0x54 443862306a36Sopenharmony_ci uint16_t vendorid; //0x58 443962306a36Sopenharmony_ci uint16_t deviceid; //0x5A 444062306a36Sopenharmony_ci uint16_t ssvid; //0x5C 444162306a36Sopenharmony_ci uint16_t ssid; //0x5E 444262306a36Sopenharmony_ci uint32_t revision; //0x60 444362306a36Sopenharmony_ci uint32_t imagelength; //0x64 444462306a36Sopenharmony_ci}; 444562306a36Sopenharmony_ci 444662306a36Sopenharmony_ci 444762306a36Sopenharmony_cistruct gop_vbios_content { 444862306a36Sopenharmony_ci struct vfct_image_header vbiosheader; 444962306a36Sopenharmony_ci uint8_t vbioscontent[1]; 445062306a36Sopenharmony_ci}; 445162306a36Sopenharmony_ci 445262306a36Sopenharmony_cistruct gop_lib1_content { 445362306a36Sopenharmony_ci struct vfct_image_header lib1header; 445462306a36Sopenharmony_ci uint8_t lib1content[1]; 445562306a36Sopenharmony_ci}; 445662306a36Sopenharmony_ci 445762306a36Sopenharmony_ci 445862306a36Sopenharmony_ci 445962306a36Sopenharmony_ci/* 446062306a36Sopenharmony_ci *************************************************************************** 446162306a36Sopenharmony_ci Scratch Register definitions 446262306a36Sopenharmony_ci Each number below indicates which scratch regiser request, Active and 446362306a36Sopenharmony_ci Connect all share the same definitions as display_device_tag defines 446462306a36Sopenharmony_ci *************************************************************************** 446562306a36Sopenharmony_ci*/ 446662306a36Sopenharmony_ci 446762306a36Sopenharmony_cienum scratch_register_def{ 446862306a36Sopenharmony_ci ATOM_DEVICE_CONNECT_INFO_DEF = 0, 446962306a36Sopenharmony_ci ATOM_BL_BRI_LEVEL_INFO_DEF = 2, 447062306a36Sopenharmony_ci ATOM_ACTIVE_INFO_DEF = 3, 447162306a36Sopenharmony_ci ATOM_LCD_INFO_DEF = 4, 447262306a36Sopenharmony_ci ATOM_DEVICE_REQ_INFO_DEF = 5, 447362306a36Sopenharmony_ci ATOM_ACC_CHANGE_INFO_DEF = 6, 447462306a36Sopenharmony_ci ATOM_PRE_OS_MODE_INFO_DEF = 7, 447562306a36Sopenharmony_ci ATOM_PRE_OS_ASSERTION_DEF = 8, //For GOP to record a 32bit assertion code, this is enabled by default in prodution GOP drivers. 447662306a36Sopenharmony_ci ATOM_INTERNAL_TIMER_INFO_DEF = 10, 447762306a36Sopenharmony_ci}; 447862306a36Sopenharmony_ci 447962306a36Sopenharmony_cienum scratch_device_connect_info_bit_def{ 448062306a36Sopenharmony_ci ATOM_DISPLAY_LCD1_CONNECT =0x0002, 448162306a36Sopenharmony_ci ATOM_DISPLAY_DFP1_CONNECT =0x0008, 448262306a36Sopenharmony_ci ATOM_DISPLAY_DFP2_CONNECT =0x0080, 448362306a36Sopenharmony_ci ATOM_DISPLAY_DFP3_CONNECT =0x0200, 448462306a36Sopenharmony_ci ATOM_DISPLAY_DFP4_CONNECT =0x0400, 448562306a36Sopenharmony_ci ATOM_DISPLAY_DFP5_CONNECT =0x0800, 448662306a36Sopenharmony_ci ATOM_DISPLAY_DFP6_CONNECT =0x0040, 448762306a36Sopenharmony_ci ATOM_DISPLAY_DFPx_CONNECT =0x0ec8, 448862306a36Sopenharmony_ci ATOM_CONNECT_INFO_DEVICE_MASK =0x0fff, 448962306a36Sopenharmony_ci}; 449062306a36Sopenharmony_ci 449162306a36Sopenharmony_cienum scratch_bl_bri_level_info_bit_def{ 449262306a36Sopenharmony_ci ATOM_CURRENT_BL_LEVEL_SHIFT =0x8, 449362306a36Sopenharmony_ci#ifndef _H2INC 449462306a36Sopenharmony_ci ATOM_CURRENT_BL_LEVEL_MASK =0x0000ff00, 449562306a36Sopenharmony_ci ATOM_DEVICE_DPMS_STATE =0x00010000, 449662306a36Sopenharmony_ci#endif 449762306a36Sopenharmony_ci}; 449862306a36Sopenharmony_ci 449962306a36Sopenharmony_cienum scratch_active_info_bits_def{ 450062306a36Sopenharmony_ci ATOM_DISPLAY_LCD1_ACTIVE =0x0002, 450162306a36Sopenharmony_ci ATOM_DISPLAY_DFP1_ACTIVE =0x0008, 450262306a36Sopenharmony_ci ATOM_DISPLAY_DFP2_ACTIVE =0x0080, 450362306a36Sopenharmony_ci ATOM_DISPLAY_DFP3_ACTIVE =0x0200, 450462306a36Sopenharmony_ci ATOM_DISPLAY_DFP4_ACTIVE =0x0400, 450562306a36Sopenharmony_ci ATOM_DISPLAY_DFP5_ACTIVE =0x0800, 450662306a36Sopenharmony_ci ATOM_DISPLAY_DFP6_ACTIVE =0x0040, 450762306a36Sopenharmony_ci ATOM_ACTIVE_INFO_DEVICE_MASK =0x0fff, 450862306a36Sopenharmony_ci}; 450962306a36Sopenharmony_ci 451062306a36Sopenharmony_cienum scratch_device_req_info_bits_def{ 451162306a36Sopenharmony_ci ATOM_DISPLAY_LCD1_REQ =0x0002, 451262306a36Sopenharmony_ci ATOM_DISPLAY_DFP1_REQ =0x0008, 451362306a36Sopenharmony_ci ATOM_DISPLAY_DFP2_REQ =0x0080, 451462306a36Sopenharmony_ci ATOM_DISPLAY_DFP3_REQ =0x0200, 451562306a36Sopenharmony_ci ATOM_DISPLAY_DFP4_REQ =0x0400, 451662306a36Sopenharmony_ci ATOM_DISPLAY_DFP5_REQ =0x0800, 451762306a36Sopenharmony_ci ATOM_DISPLAY_DFP6_REQ =0x0040, 451862306a36Sopenharmony_ci ATOM_REQ_INFO_DEVICE_MASK =0x0fff, 451962306a36Sopenharmony_ci}; 452062306a36Sopenharmony_ci 452162306a36Sopenharmony_cienum scratch_acc_change_info_bitshift_def{ 452262306a36Sopenharmony_ci ATOM_ACC_CHANGE_ACC_MODE_SHIFT =4, 452362306a36Sopenharmony_ci ATOM_ACC_CHANGE_LID_STATUS_SHIFT =6, 452462306a36Sopenharmony_ci}; 452562306a36Sopenharmony_ci 452662306a36Sopenharmony_cienum scratch_acc_change_info_bits_def{ 452762306a36Sopenharmony_ci ATOM_ACC_CHANGE_ACC_MODE =0x00000010, 452862306a36Sopenharmony_ci ATOM_ACC_CHANGE_LID_STATUS =0x00000040, 452962306a36Sopenharmony_ci}; 453062306a36Sopenharmony_ci 453162306a36Sopenharmony_cienum scratch_pre_os_mode_info_bits_def{ 453262306a36Sopenharmony_ci ATOM_PRE_OS_MODE_MASK =0x00000003, 453362306a36Sopenharmony_ci ATOM_PRE_OS_MODE_VGA =0x00000000, 453462306a36Sopenharmony_ci ATOM_PRE_OS_MODE_VESA =0x00000001, 453562306a36Sopenharmony_ci ATOM_PRE_OS_MODE_GOP =0x00000002, 453662306a36Sopenharmony_ci ATOM_PRE_OS_MODE_PIXEL_DEPTH =0x0000000C, 453762306a36Sopenharmony_ci ATOM_PRE_OS_MODE_PIXEL_FORMAT_MASK=0x000000F0, 453862306a36Sopenharmony_ci ATOM_PRE_OS_MODE_8BIT_PAL_EN =0x00000100, 453962306a36Sopenharmony_ci ATOM_ASIC_INIT_COMPLETE =0x00000200, 454062306a36Sopenharmony_ci#ifndef _H2INC 454162306a36Sopenharmony_ci ATOM_PRE_OS_MODE_NUMBER_MASK =0xFFFF0000, 454262306a36Sopenharmony_ci#endif 454362306a36Sopenharmony_ci}; 454462306a36Sopenharmony_ci 454562306a36Sopenharmony_ci 454662306a36Sopenharmony_ci 454762306a36Sopenharmony_ci/* 454862306a36Sopenharmony_ci *************************************************************************** 454962306a36Sopenharmony_ci ATOM firmware ID header file 455062306a36Sopenharmony_ci !! Please keep it at end of the atomfirmware.h !! 455162306a36Sopenharmony_ci *************************************************************************** 455262306a36Sopenharmony_ci*/ 455362306a36Sopenharmony_ci#include "atomfirmwareid.h" 455462306a36Sopenharmony_ci#pragma pack() 455562306a36Sopenharmony_ci 455662306a36Sopenharmony_ci#endif 455762306a36Sopenharmony_ci 4558