9309 lines · 450.5 KB · C
RawDownload
/* * Copyright 2006-2007 Advanced Micro Devices, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */  /****************************************************************************//*Portion I: Definitions  shared between VBIOS and Driver                   *//****************************************************************************/ #ifndef _ATOMBIOS_H#define _ATOMBIOS_H #define ATOM_VERSION_MAJOR                   0x00020000#define ATOM_VERSION_MINOR                   0x00000002 #define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR) /* Endianness should be specified before inclusion, * default to little endian */#ifndef ATOM_BIG_ENDIAN#error Endian not specified#endif #ifdef _H2INC  #ifndef ULONG    typedef unsigned long ULONG;  #endif   #ifndef UCHAR    typedef unsigned char UCHAR;  #endif   #ifndef USHORT    typedef unsigned short USHORT;  #endif#endif #define ATOM_DAC_A            0#define ATOM_DAC_B            1#define ATOM_EXT_DAC          2 #define ATOM_CRTC1            0#define ATOM_CRTC2            1#define ATOM_CRTC3            2#define ATOM_CRTC4            3#define ATOM_CRTC5            4#define ATOM_CRTC6            5 #define ATOM_UNDERLAY_PIPE0   16#define ATOM_UNDERLAY_PIPE1   17 #define ATOM_CRTC_INVALID     0xFF #define ATOM_DIGA             0#define ATOM_DIGB             1 #define ATOM_PPLL1            0#define ATOM_PPLL2            1#define ATOM_DCPLL            2#define ATOM_PPLL0            2#define ATOM_PPLL3            3 #define ATOM_PHY_PLL0         4#define ATOM_PHY_PLL1         5 #define ATOM_EXT_PLL1         8#define ATOM_GCK_DFS          8#define ATOM_EXT_PLL2         9#define ATOM_FCH_CLK          9#define ATOM_EXT_CLOCK        10#define ATOM_DP_DTO           11 #define ATOM_COMBOPHY_PLL0    20#define ATOM_COMBOPHY_PLL1    21#define ATOM_COMBOPHY_PLL2    22#define ATOM_COMBOPHY_PLL3    23#define ATOM_COMBOPHY_PLL4    24#define ATOM_COMBOPHY_PLL5    25 #define ATOM_PPLL_INVALID     0xFF #define ENCODER_REFCLK_SRC_P1PLL       0#define ENCODER_REFCLK_SRC_P2PLL       1#define ENCODER_REFCLK_SRC_DCPLL       2#define ENCODER_REFCLK_SRC_EXTCLK      3#define ENCODER_REFCLK_SRC_INVALID     0xFF #define ATOM_SCALER_DISABLE   0   //For Fudo, it's bypass and auto-cengter & no replication#define ATOM_SCALER_CENTER    1   //For Fudo, it's bypass and auto-center & auto replication#define ATOM_SCALER_EXPANSION 2   //For Fudo, it's 2 Tap alpha blending mode#define ATOM_SCALER_MULTI_EX  3   //For Fudo only, it's multi-tap mode only used to drive TV or CV, only used by Bios #define ATOM_DISABLE          0#define ATOM_ENABLE           1#define ATOM_LCD_BLOFF                          (ATOM_DISABLE+2)#define ATOM_LCD_BLON                           (ATOM_ENABLE+2)#define ATOM_LCD_BL_BRIGHTNESS_CONTROL          (ATOM_ENABLE+3)#define ATOM_LCD_SELFTEST_START                 (ATOM_DISABLE+5)#define ATOM_LCD_SELFTEST_STOP                  (ATOM_ENABLE+5)#define ATOM_ENCODER_INIT                       (ATOM_DISABLE+7)#define ATOM_INIT                               (ATOM_DISABLE+7)#define ATOM_GET_STATUS                         (ATOM_DISABLE+8) #define ATOM_BLANKING         1#define ATOM_BLANKING_OFF     0  #define ATOM_CRT1             0#define ATOM_CRT2             1 #define ATOM_TV_NTSC          1#define ATOM_TV_NTSCJ         2#define ATOM_TV_PAL           3#define ATOM_TV_PALM          4#define ATOM_TV_PALCN         5#define ATOM_TV_PALN          6#define ATOM_TV_PAL60         7#define ATOM_TV_SECAM         8#define ATOM_TV_CV            16 #define ATOM_DAC1_PS2         1#define ATOM_DAC1_CV          2#define ATOM_DAC1_NTSC        3#define ATOM_DAC1_PAL         4 #define ATOM_DAC2_PS2         ATOM_DAC1_PS2#define ATOM_DAC2_CV          ATOM_DAC1_CV#define ATOM_DAC2_NTSC        ATOM_DAC1_NTSC#define ATOM_DAC2_PAL         ATOM_DAC1_PAL #define ATOM_PM_ON            0#define ATOM_PM_STANDBY       1#define ATOM_PM_SUSPEND       2#define ATOM_PM_OFF           3 // For ATOM_LVDS_INFO_V12// Bit0:{=0:single, =1:dual},// Bit1 {=0:666RGB, =1:888RGB},// Bit2:3:{Grey level}// Bit4:{=0:LDI format for RGB888, =1 FPDI format for RGB888}#define ATOM_PANEL_MISC_DUAL               0x00000001#define ATOM_PANEL_MISC_888RGB             0x00000002#define ATOM_PANEL_MISC_GREY_LEVEL         0x0000000C#define ATOM_PANEL_MISC_FPDI               0x00000010#define ATOM_PANEL_MISC_GREY_LEVEL_SHIFT   2#define ATOM_PANEL_MISC_SPATIAL            0x00000020#define ATOM_PANEL_MISC_TEMPORAL           0x00000040#define ATOM_PANEL_MISC_API_ENABLED        0x00000080 #define MEMTYPE_DDR1                       "DDR1"#define MEMTYPE_DDR2                       "DDR2"#define MEMTYPE_DDR3                       "DDR3"#define MEMTYPE_DDR4                       "DDR4" #define ASIC_BUS_TYPE_PCI                  "PCI"#define ASIC_BUS_TYPE_AGP                  "AGP"#define ASIC_BUS_TYPE_PCIE                 "PCI_EXPRESS" //Maximum size of that FireGL flag string#define ATOM_FIREGL_FLAG_STRING            "FGL"      //Flag used to enable FireGL Support#define ATOM_MAX_SIZE_OF_FIREGL_FLAG_STRING     3     //sizeof( ATOM_FIREGL_FLAG_STRING ) #define ATOM_FAKE_DESKTOP_STRING           "DSK"      //Flag used to enable mobile ASIC on Desktop#define ATOM_MAX_SIZE_OF_FAKE_DESKTOP_STRING    ATOM_MAX_SIZE_OF_FIREGL_FLAG_STRING #define ATOM_M54T_FLAG_STRING              "M54T"     //Flag used to enable M54T Support#define ATOM_MAX_SIZE_OF_M54T_FLAG_STRING  4          //sizeof( ATOM_M54T_FLAG_STRING ) #define HW_ASSISTED_I2C_STATUS_FAILURE     2#define HW_ASSISTED_I2C_STATUS_SUCCESS     1 #pragma pack(1)                                       // BIOS data must use byte alignment // Define offset to location of ROM header.#define OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER         0x00000048L#define OFFSET_TO_ATOM_ROM_IMAGE_SIZE                0x00000002L #define OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE         0x94#define MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE        20    //including the terminator 0x0!#define OFFSET_TO_GET_ATOMBIOS_STRINGS_NUMBER      0x002f#define OFFSET_TO_GET_ATOMBIOS_STRINGS_START       0x006e /****************************************************************************/// Common header for all tables (Data table, Command table).// Every table pointed  _ATOM_MASTER_DATA_TABLE has this common header.// And the pointer actually points to this header./****************************************************************************/ typedef struct _ATOM_COMMON_TABLE_HEADER{  USHORT usStructureSize;  UCHAR  ucTableFormatRevision;   //Change it when the Parser is not backward compatible  UCHAR  ucTableContentRevision;  //Change it only when the table needs to change but the firmware                                  //Image can't be updated, while Driver needs to carry the new table!}ATOM_COMMON_TABLE_HEADER; /****************************************************************************/// Structure stores the ROM header./****************************************************************************/typedef struct _ATOM_ROM_HEADER{  ATOM_COMMON_TABLE_HEADER      sHeader;  UCHAR  uaFirmWareSignature[4];    //Signature to distinguish between Atombios and non-atombios,                                    //atombios should init it as "ATOM", don't change the position  USHORT usBiosRuntimeSegmentAddress;  USHORT usProtectedModeInfoOffset;  USHORT usConfigFilenameOffset;  USHORT usCRC_BlockOffset;  USHORT usBIOS_BootupMessageOffset;  USHORT usInt10Offset;  USHORT usPciBusDevInitCode;  USHORT usIoBaseAddress;  USHORT usSubsystemVendorID;  USHORT usSubsystemID;  USHORT usPCI_InfoOffset;  USHORT usMasterCommandTableOffset;//Offest for SW to get all command table offsets, Don't change the position  USHORT usMasterDataTableOffset;   //Offest for SW to get all data table offsets, Don't change the position  UCHAR  ucExtendedFunctionCode;  UCHAR  ucReserved;}ATOM_ROM_HEADER;  typedef struct _ATOM_ROM_HEADER_V2_1{  ATOM_COMMON_TABLE_HEADER      sHeader;  UCHAR  uaFirmWareSignature[4];    //Signature to distinguish between Atombios and non-atombios,                                    //atombios should init it as "ATOM", don't change the position  USHORT usBiosRuntimeSegmentAddress;  USHORT usProtectedModeInfoOffset;  USHORT usConfigFilenameOffset;  USHORT usCRC_BlockOffset;  USHORT usBIOS_BootupMessageOffset;  USHORT usInt10Offset;  USHORT usPciBusDevInitCode;  USHORT usIoBaseAddress;  USHORT usSubsystemVendorID;  USHORT usSubsystemID;  USHORT usPCI_InfoOffset;  USHORT usMasterCommandTableOffset;//Offest for SW to get all command table offsets, Don't change the position  USHORT usMasterDataTableOffset;   //Offest for SW to get all data table offsets, Don't change the position  UCHAR  ucExtendedFunctionCode;  UCHAR  ucReserved;  ULONG  ulPSPDirTableOffset;}ATOM_ROM_HEADER_V2_1;  //==============================Command Table Portion====================================  /****************************************************************************/// Structures used in Command.mtb/****************************************************************************/typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{  USHORT ASIC_Init;                              //Function Table, used by various SW components,latest version 1.1  USHORT GetDisplaySurfaceSize;                  //Atomic Table,  Used by Bios when enabling HW ICON  USHORT ASIC_RegistersInit;                     //Atomic Table,  indirectly used by various SW components,called from ASIC_Init  USHORT VRAM_BlockVenderDetection;              //Atomic Table,  used only by Bios  USHORT DIGxEncoderControl;                     //Only used by Bios  USHORT MemoryControllerInit;                   //Atomic Table,  indirectly used by various SW components,called from ASIC_Init  USHORT EnableCRTCMemReq;                       //Function Table,directly used by various SW components,latest version 2.1  USHORT MemoryParamAdjust;                      //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock if needed  USHORT DVOEncoderControl;                      //Function Table,directly used by various SW components,latest version 1.2  USHORT GPIOPinControl;                         //Atomic Table,  only used by Bios  USHORT SetEngineClock;                         //Function Table,directly used by various SW components,latest version 1.1  USHORT SetMemoryClock;                         //Function Table,directly used by various SW components,latest version 1.1  USHORT SetPixelClock;                          //Function Table,directly used by various SW components,latest version 1.2  USHORT EnableDispPowerGating;                  //Atomic Table,  indirectly used by various SW components,called from ASIC_Init  USHORT ResetMemoryDLL;                         //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock  USHORT ResetMemoryDevice;                      //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock  USHORT MemoryPLLInit;                          //Atomic Table,  used only by Bios  USHORT AdjustDisplayPll;                       //Atomic Table,  used by various SW componentes.  USHORT AdjustMemoryController;                 //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock  USHORT EnableASIC_StaticPwrMgt;                //Atomic Table,  only used by Bios  USHORT SetUniphyInstance;                      //Atomic Table,  only used by Bios  USHORT DAC_LoadDetection;                      //Atomic Table,  directly used by various SW components,latest version 1.2  USHORT LVTMAEncoderControl;                    //Atomic Table,directly used by various SW components,latest version 1.3  USHORT HW_Misc_Operation;                      //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT DAC1EncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT DAC2EncoderControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT DVOOutputControl;                       //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT CV1OutputControl;                       //Atomic Table,  Atomic Table,  Obsolete from Ry6xx, use DAC2 Output instead  USHORT GetConditionalGoldenSetting;            //Only used by Bios  USHORT SMC_Init;                               //Function Table,directly used by various SW components,latest version 1.1  USHORT PatchMCSetting;                         //only used by BIOS  USHORT MC_SEQ_Control;                         //only used by BIOS  USHORT Gfx_Harvesting;                         //Atomic Table,  Obsolete from Ry6xx, Now only used by BIOS for GFX harvesting  USHORT EnableScaler;                           //Atomic Table,  used only by Bios  USHORT BlankCRTC;                              //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT EnableCRTC;                             //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT GetPixelClock;                          //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT EnableVGA_Render;                       //Function Table,directly used by various SW components,latest version 1.1  USHORT GetSCLKOverMCLKRatio;                   //Atomic Table,  only used by Bios  USHORT SetCRTC_Timing;                         //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT SetCRTC_OverScan;                       //Atomic Table,  used by various SW components,latest version 1.1  USHORT GetSMUClockInfo;                         //Atomic Table,  used only by Bios  USHORT SelectCRTC_Source;                      //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT EnableGraphSurfaces;                    //Atomic Table,  used only by Bios  USHORT UpdateCRTC_DoubleBufferRegisters;       //Atomic Table,  used only by Bios  USHORT LUT_AutoFill;                           //Atomic Table,  only used by Bios  USHORT SetDCEClock;                            //Atomic Table,  start from DCE11.1, shared by driver and VBIOS, change DISPCLK and DPREFCLK  USHORT GetMemoryClock;                         //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT GetEngineClock;                         //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT SetCRTC_UsingDTDTiming;                 //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT ExternalEncoderControl;                 //Atomic Table,  directly used by various SW components,latest version 2.1  USHORT LVTMAOutputControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT VRAM_BlockDetectionByStrap;             //Atomic Table,  used only by Bios  USHORT MemoryCleanUp;                          //Atomic Table,  only used by Bios  USHORT ProcessI2cChannelTransaction;           //Function Table,only used by Bios  USHORT WriteOneByteToHWAssistedI2C;            //Function Table,indirectly used by various SW components  USHORT ReadHWAssistedI2CStatus;                //Atomic Table,  indirectly used by various SW components  USHORT SpeedFanControl;                        //Function Table,indirectly used by various SW components,called from ASIC_Init  USHORT PowerConnectorDetection;                //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT MC_Synchronization;                     //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock  USHORT ComputeMemoryEnginePLL;                 //Atomic Table,  indirectly used by various SW components,called from SetMemory/EngineClock  USHORT Gfx_Init;                               //Atomic Table,  indirectly used by various SW components,called from SetMemory or SetEngineClock  USHORT VRAM_GetCurrentInfoBlock;               //Atomic Table,  used only by Bios  USHORT DynamicMemorySettings;                  //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock  USHORT MemoryTraining;                         //Atomic Table,  used only by Bios  USHORT EnableSpreadSpectrumOnPPLL;             //Atomic Table,  directly used by various SW components,latest version 1.2  USHORT TMDSAOutputControl;                     //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT SetVoltage;                             //Function Table,directly and/or indirectly used by various SW components,latest version 1.1  USHORT DAC1OutputControl;                      //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT ReadEfuseValue;                         //Atomic Table,  directly used by various SW components,latest version 1.1  USHORT ComputeMemoryClockParam;                //Function Table,only used by Bios, obsolete soon.Switch to use "ReadEDIDFromHWAssistedI2C"  USHORT ClockSource;                            //Atomic Table,  indirectly used by various SW components,called from ASIC_Init  USHORT MemoryDeviceInit;                       //Atomic Table,  indirectly used by various SW components,called from SetMemoryClock  USHORT GetDispObjectInfo;                      //Atomic Table,  indirectly used by various SW components,called from EnableVGARender  USHORT DIG1EncoderControl;                     //Atomic Table,directly used by various SW components,latest version 1.1  USHORT DIG2EncoderControl;                     //Atomic Table,directly used by various SW components,latest version 1.1  USHORT DIG1TransmitterControl;                 //Atomic Table,directly used by various SW components,latest version 1.1  USHORT DIG2TransmitterControl;                 //Atomic Table,directly used by various SW components,latest version 1.1  USHORT ProcessAuxChannelTransaction;           //Function Table,only used by Bios  USHORT DPEncoderService;                       //Function Table,only used by Bios  USHORT GetVoltageInfo;                         //Function Table,only used by Bios since SI}ATOM_MASTER_LIST_OF_COMMAND_TABLES; // For backward compatible#define ReadEDIDFromHWAssistedI2C                ProcessI2cChannelTransaction#define DPTranslatorControl                      DIG2EncoderControl#define UNIPHYTransmitterControl                 DIG1TransmitterControl#define LVTMATransmitterControl                  DIG2TransmitterControl#define SetCRTC_DPM_State                        GetConditionalGoldenSetting#define ASIC_StaticPwrMgtStatusChange            SetUniphyInstance#define HPDInterruptService                      ReadHWAssistedI2CStatus#define EnableVGA_Access                         GetSCLKOverMCLKRatio#define EnableYUV                                GetDispObjectInfo#define DynamicClockGating                       EnableDispPowerGating#define SetupHWAssistedI2CStatus                 ComputeMemoryClockParam#define DAC2OutputControl                        ReadEfuseValue #define TMDSAEncoderControl                      PatchMCSetting#define LVDSEncoderControl                       MC_SEQ_Control#define LCD1OutputControl                        HW_Misc_Operation#define TV1OutputControl                         Gfx_Harvesting#define TVEncoderControl                         SMC_Init#define EnableHW_IconCursor                      SetDCEClock#define SetCRTC_Replication                      GetSMUClockInfo #define MemoryRefreshConversion                  Gfx_Init typedef struct _ATOM_MASTER_COMMAND_TABLE{  ATOM_COMMON_TABLE_HEADER           sHeader;  ATOM_MASTER_LIST_OF_COMMAND_TABLES ListOfCommandTables;}ATOM_MASTER_COMMAND_TABLE; /****************************************************************************/// Structures used in every command table/****************************************************************************/typedef struct _ATOM_TABLE_ATTRIBUTE{#if ATOM_BIG_ENDIAN  USHORT  UpdatedByUtility:1;         //[15]=Table updated by utility flag  USHORT  PS_SizeInBytes:7;           //[14:8]=Size of parameter space in Bytes (multiple of a dword),  USHORT  WS_SizeInBytes:8;           //[7:0]=Size of workspace in Bytes (in multiple of a dword),#else  USHORT  WS_SizeInBytes:8;           //[7:0]=Size of workspace in Bytes (in multiple of a dword),  USHORT  PS_SizeInBytes:7;           //[14:8]=Size of parameter space in Bytes (multiple of a dword),  USHORT  UpdatedByUtility:1;         //[15]=Table updated by utility flag#endif}ATOM_TABLE_ATTRIBUTE; /****************************************************************************/// Common header for all command tables.// Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header.// And the pointer actually points to this header./****************************************************************************/typedef struct _ATOM_COMMON_ROM_COMMAND_TABLE_HEADER{  ATOM_COMMON_TABLE_HEADER CommonHeader;  ATOM_TABLE_ATTRIBUTE     TableAttribute;}ATOM_COMMON_ROM_COMMAND_TABLE_HEADER; /****************************************************************************/// Structures used by ComputeMemoryEnginePLLTable/****************************************************************************/ #define COMPUTE_MEMORY_PLL_PARAM        1#define COMPUTE_ENGINE_PLL_PARAM        2#define ADJUST_MC_SETTING_PARAM         3 /****************************************************************************/// Structures used by AdjustMemoryControllerTable/****************************************************************************/typedef struct _ATOM_ADJUST_MEMORY_CLOCK_FREQ{#if ATOM_BIG_ENDIAN  ULONG ulPointerReturnFlag:1;      // BYTE_3[7]=1 - Return the pointer to the right Data Block; BYTE_3[7]=0 - Program the right Data Block  ULONG ulMemoryModuleNumber:7;     // BYTE_3[6:0]  ULONG ulClockFreq:24;#else  ULONG ulClockFreq:24;  ULONG ulMemoryModuleNumber:7;     // BYTE_3[6:0]  ULONG ulPointerReturnFlag:1;      // BYTE_3[7]=1 - Return the pointer to the right Data Block; BYTE_3[7]=0 - Program the right Data Block#endif}ATOM_ADJUST_MEMORY_CLOCK_FREQ;#define POINTER_RETURN_FLAG             0x80 typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS{  ULONG   ulClock;        //When returen, it's the re-calculated clock based on given Fb_div Post_Div and ref_div  UCHAR   ucAction;       //0:reserved //1:Memory //2:Engine  UCHAR   ucReserved;     //may expand to return larger Fbdiv later  UCHAR   ucFbDiv;        //return value  UCHAR   ucPostDiv;      //return value}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS; typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2{  ULONG   ulClock;        //When return, [23:0] return real clock  UCHAR   ucAction;       //0:reserved;COMPUTE_MEMORY_PLL_PARAM:Memory;COMPUTE_ENGINE_PLL_PARAM:Engine. it return ref_div to be written to register  USHORT  usFbDiv;          //return Feedback value to be written to register  UCHAR   ucPostDiv;      //return post div to be written to register}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2; #define COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION   COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS #define SET_CLOCK_FREQ_MASK                       0x00FFFFFF  //Clock change tables only take bit [23:0] as the requested clock value#define USE_NON_BUS_CLOCK_MASK                    0x01000000  //Applicable to both memory and engine clock change, when set, it uses another clock as the temporary clock (engine uses memory and vice versa)#define USE_MEMORY_SELF_REFRESH_MASK              0x02000000   //Only applicable to memory clock change, when set, using memory self refresh during clock transition#define SKIP_INTERNAL_MEMORY_PARAMETER_CHANGE     0x04000000  //Only applicable to memory clock change, when set, the table will skip predefined internal memory parameter change#define FIRST_TIME_CHANGE_CLOCK                   0x08000000   //Applicable to both memory and engine clock change,when set, it means this is 1st time to change clock after ASIC bootup#define SKIP_SW_PROGRAM_PLL                       0x10000000   //Applicable to both memory and engine clock change, when set, it means the table will not program SPLL/MPLL#define USE_SS_ENABLED_PIXEL_CLOCK                USE_NON_BUS_CLOCK_MASK #define b3USE_NON_BUS_CLOCK_MASK                  0x01       //Applicable to both memory and engine clock change, when set, it uses another clock as the temporary clock (engine uses memory and vice versa)#define b3USE_MEMORY_SELF_REFRESH                 0x02        //Only applicable to memory clock change, when set, using memory self refresh during clock transition#define b3SKIP_INTERNAL_MEMORY_PARAMETER_CHANGE   0x04       //Only applicable to memory clock change, when set, the table will skip predefined internal memory parameter change#define b3FIRST_TIME_CHANGE_CLOCK                 0x08       //Applicable to both memory and engine clock change,when set, it means this is 1st time to change clock after ASIC bootup#define b3SKIP_SW_PROGRAM_PLL                     0x10       //Applicable to both memory and engine clock change, when set, it means the table will not program SPLL/MPLL#define b3DRAM_SELF_REFRESH_EXIT                  0x20       //Applicable to DRAM self refresh exit only. when set, it means it will go to program DRAM self refresh exit path#define b3SRIOV_INIT_BOOT                         0x40       //Use by HV GPU driver only, to load uCode. for ASIC_InitTable SCLK parameter only#define b3SRIOV_LOAD_UCODE                        0x40       //Use by HV GPU driver only, to load uCode. for ASIC_InitTable SCLK parameter only#define b3SRIOV_SKIP_ASIC_INIT                    0x02       //Use by HV GPU driver only, skip ASIC_Init for primary adapter boot. for ASIC_InitTable SCLK parameter only typedef struct _ATOM_COMPUTE_CLOCK_FREQ{#if ATOM_BIG_ENDIAN  ULONG ulComputeClockFlag:8;                 // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM  ULONG ulClockFreq:24;                       // in unit of 10kHz#else  ULONG ulClockFreq:24;                       // in unit of 10kHz  ULONG ulComputeClockFlag:8;                 // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM#endif}ATOM_COMPUTE_CLOCK_FREQ; typedef struct _ATOM_S_MPLL_FB_DIVIDER{  USHORT usFbDivFrac;  USHORT usFbDiv;}ATOM_S_MPLL_FB_DIVIDER; typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3{  union  {    ATOM_COMPUTE_CLOCK_FREQ  ulClock;         //Input Parameter    ULONG ulClockParams;                      //ULONG access for BE    ATOM_S_MPLL_FB_DIVIDER   ulFbDiv;         //Output Parameter  };  UCHAR   ucRefDiv;                           //Output Parameter

Lines 1–500 of 9309.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t