vendorcode/amd/agesa/fam14: Remove dropped platform
This platform use the LEGACY_SMP_INIT which is to be deprecated after release 4.18. Change-Id: I9dd3ce763418ff767acd0c55be26a998df77081b Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/69124 Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
		| @@ -1,4 +1,3 @@ | ||||
| subdirs-$(CONFIG_CPU_AMD_AGESA_FAMILY14) += f14 | ||||
| subdirs-$(CONFIG_CPU_AMD_AGESA_FAMILY15_TN) += f15tn | ||||
| subdirs-$(CONFIG_CPU_AMD_AGESA_FAMILY16_KB) += f16kb | ||||
|  | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,485 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Agesa structures and definitions | ||||
|  * | ||||
|  * Contains AMD AGESA core interface | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Include | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef _AMD_H_ | ||||
| #define _AMD_H_ | ||||
|  | ||||
| #define AGESA_REVISION  "Arch2008" | ||||
| #define AGESA_ID        "AGESA" | ||||
|  | ||||
| #define Int16FromChar(a,b) ((a) << 0 | (b) << 8) | ||||
| #define Int32FromChar(a,b,c,d) ((a) << 0 | (b) << 8 | (c) << 16 | (d) << 24) | ||||
| // | ||||
| // | ||||
| // AGESA Types and Definitions | ||||
| // | ||||
| // | ||||
| #define LAST_ENTRY          0xFFFFFFFF | ||||
| #define IMAGE_SIGNATURE     Int32FromChar ('$', 'A', 'M', 'D') | ||||
| #define IOCF8 0xCF8 | ||||
| #define IOCFC 0xCFC | ||||
|  | ||||
| /// The return status for all AGESA public services. | ||||
| /// | ||||
| /// Services return the most severe status of any logged event.  Status other than SUCCESS, UNSUPPORTED, and BOUNDS_CHK | ||||
| /// will have log entries with more detail. | ||||
| /// | ||||
| typedef enum { | ||||
|   AGESA_SUCCESS = 0,             ///< The service completed normally. Info may be logged. | ||||
|   AGESA_UNSUPPORTED,             ///< The dispatcher or create struct had an unimplemented function requested. | ||||
|                                  ///<  Not logged. | ||||
|   AGESA_BOUNDS_CHK,              ///< A dynamic parameter was out of range and the service was not provided. | ||||
|                                  ///< Example, memory address not installed, heap buffer handle not found. | ||||
|                                  ///< Not Logged. | ||||
|   // AGESA_STATUS of greater severity (the ones below this line), always have a log entry available. | ||||
|   AGESA_ALERT,                   ///< An observed condition, but no loss of function. | ||||
|                                  ///<  See log.  Example, HT CRC. | ||||
|   AGESA_WARNING,                 ///< Possible or minor loss of function.  See Log. | ||||
|   AGESA_ERROR,                   ///< Significant loss of function, boot may be possible.  See Log. | ||||
|   AGESA_CRITICAL,                ///< Continue boot only to notify user.  See Log. | ||||
|   AGESA_FATAL,                   ///< Halt booting.  See Log, however Fatal errors pertaining to heap problems | ||||
|                                  ///< may not be able to reliably produce log events. | ||||
|   AgesaStatusMax                 ///< Not a status, for limit checking. | ||||
| } AGESA_STATUS; | ||||
|  | ||||
| /// For checking whether a status is at or above the mandatory log level. | ||||
| #define AGESA_STATUS_LOG_LEVEL AGESA_ALERT | ||||
|  | ||||
| /** | ||||
|  * Callout method to the host environment. | ||||
|  * | ||||
|  * Callout using a dispatch with appropriate thunk layer, which is determined by the host environment. | ||||
|  * | ||||
|  * @param[in]        Function      The specific callout function being invoked. | ||||
|  * @param[in]        FcnData       Function specific data item. | ||||
|  * @param[in,out]    ConfigPtr     Reference to Callout params. | ||||
|  */ | ||||
| typedef AGESA_STATUS (*CALLOUT_ENTRY) ( | ||||
|   IN       UINT32  Function, | ||||
|   IN       UINTN   FcnData, | ||||
|   IN OUT   VOID    *ConfigPtr | ||||
|   ); | ||||
|  | ||||
| typedef AGESA_STATUS (*IMAGE_ENTRY) (VOID *ConfigPtr); | ||||
| typedef AGESA_STATUS (*MODULE_ENTRY) (VOID *ConfigPtr); | ||||
|  | ||||
| ///This allocation type is used by the AmdCreateStruct entry point | ||||
| typedef enum { | ||||
|   PreMemHeap = 0,                                           ///< Create heap in cache. | ||||
|   PostMemDram,                                              ///< Create heap in memory. | ||||
|   ByHost                                                    ///< Create heap by Host. | ||||
| } ALLOCATION_METHOD; | ||||
|  | ||||
| /// These width descriptors are used by the library function, and others, to specify the data size | ||||
| typedef enum ACCESS_WIDTH { | ||||
|   AccessWidth8 = 1,                                         ///< Access width is 8 bits. | ||||
|   AccessWidth16,                                            ///< Access width is 16 bits. | ||||
|   AccessWidth32,                                            ///< Access width is 32 bits. | ||||
|   AccessWidth64,                                            ///< Access width is 64 bits. | ||||
|  | ||||
|   AccessS3SaveWidth8 = 0x81,                                ///< Save 8 bits data. | ||||
|   AccessS3SaveWidth16,                                      ///< Save 16 bits data. | ||||
|   AccessS3SaveWidth32,                                      ///< Save 32 bits data. | ||||
|   AccessS3SaveWidth64,                                      ///< Save 64 bits data. | ||||
| } ACCESS_WIDTH; | ||||
|  | ||||
| /// AGESA struct name | ||||
| typedef enum { | ||||
|   // AGESA BASIC FUNCTIONS | ||||
|   AMD_INIT_RECOVERY = 0x00020000,                           ///< AmdInitRecovery entry point handle | ||||
|   AMD_CREATE_STRUCT,                                        ///< AmdCreateStruct handle | ||||
|   AMD_INIT_EARLY,                                           ///< AmdInitEarly entry point handle | ||||
|   AMD_INIT_ENV,                                             ///< AmdInitEnv entry point handle | ||||
|   AMD_INIT_LATE,                                            ///< AmdInitLate entry point handle | ||||
|   AMD_INIT_MID,                                             ///< AmdInitMid entry point handle | ||||
|   AMD_INIT_POST,                                            ///< AmdInitPost entry point handle | ||||
|   AMD_INIT_RESET,                                           ///< AmdInitReset entry point handle | ||||
|   AMD_INIT_RESUME,                                          ///< AmdInitResume entry point handle | ||||
|   AMD_RELEASE_STRUCT,                                       ///< AmdReleaseStruct handle | ||||
|   AMD_S3LATE_RESTORE,                                       ///< AmdS3LateRestore entry point handle | ||||
|   AMD_S3_SAVE,                                              ///< AmdS3Save entry point handle | ||||
|   AMD_GET_APIC_ID,                                          ///< AmdGetApicId entry point handle | ||||
|   AMD_GET_PCI_ADDRESS,                                      ///< AmdGetPciAddress entry point handle | ||||
|   AMD_IDENTIFY_CORE,                                        ///< AmdIdentifyCore general service handle | ||||
|   AMD_READ_EVENT_LOG,                                       ///< AmdReadEventLog general service handle | ||||
|   AMD_GET_EXECACHE_SIZE,                                    ///< AmdGetAvailableExeCacheSize general service handle | ||||
|   AMD_LATE_RUN_AP_TASK,                                     ///< AmdLateRunApTask entry point handle | ||||
|   AMD_IDENTIFY_DIMMS,                                       ///< AmdIdentifyDimm general service handle | ||||
|   AMD_GET_2D_DATA_EYE,                                      ///< AmdGet2DDataEye general service handle | ||||
|   AMD_S3FINAL_RESTORE,                                      ///< AmdS3FinalRestore entry point handle | ||||
|   AMD_INIT_RTB                                              ///< AmdInitRtb entry point handle | ||||
| } AGESA_STRUCT_NAME; | ||||
|  | ||||
|   /*  ResetType constant values */ | ||||
| #define WARM_RESET_WHENEVER 1 | ||||
| #define COLD_RESET_WHENEVER 2 | ||||
| #define WARM_RESET_IMMEDIATELY 3 | ||||
| #define COLD_RESET_IMMEDIATELY 4 | ||||
|  | ||||
|  | ||||
| // AGESA Structures | ||||
|  | ||||
| /// The standard header for all AGESA services. | ||||
| /// For internal AGESA naming conventions, see @ref amdconfigparamname . | ||||
| typedef struct { | ||||
|   IN       UINT32          ImageBasePtr;     ///< The AGESA Image base address. | ||||
|   IN       UINT32          Func;             ///< The service desired | ||||
|   IN       UINT32          AltImageBasePtr;  ///< Alternate Image location | ||||
|   IN       CALLOUT_ENTRY   CalloutPtr;       ///< For Callout from AGESA | ||||
|   IN       UINT8           HeapStatus;       ///< For heap status from boot time slide. | ||||
|   IN       VOID           *HeapBasePtr;      ///< Location of the heap | ||||
|   IN OUT   UINT8           Reserved[7];      ///< This space is reserved for future use. | ||||
| } AMD_CONFIG_PARAMS; | ||||
|  | ||||
|  | ||||
| /// Create Struct Interface. | ||||
| typedef struct { | ||||
|   IN       AMD_CONFIG_PARAMS   StdHeader;          ///< Standard configuration header | ||||
|   IN       AGESA_STRUCT_NAME   AgesaFunctionName;  ///< The service to init | ||||
|   IN       ALLOCATION_METHOD   AllocationMethod;   ///< How to handle buffer allocation | ||||
|   IN OUT   UINT32              NewStructSize;      ///< The size of the allocated data, in for ByHost, else out only. | ||||
|   IN OUT   VOID                *NewStructPtr;      ///< The struct for the service. | ||||
|                                                    ///< The struct to init for ByHost allocation, | ||||
|                                                    ///< the initialized struct on return. | ||||
| } AMD_INTERFACE_PARAMS; | ||||
|  | ||||
| #define FUNC_0    0   // bit-placed for PCI address creation | ||||
| #define FUNC_1    1 | ||||
| #define FUNC_2    2 | ||||
| #define FUNC_3    3 | ||||
| #define FUNC_4    4 | ||||
| #define FUNC_5    5 | ||||
| #define FUNC_6    6 | ||||
| #define FUNC_7    7 | ||||
|  | ||||
| /// AGESA Binary module header structure | ||||
| typedef struct { | ||||
|   IN  UINT32  Signature;                          ///< Binary Signature | ||||
|   IN  CHAR8   CreatorID[8];                       ///< 8 characters ID | ||||
|   IN  CHAR8   Version[12];                        ///< 12 characters version | ||||
|   IN  UINT32  ModuleInfoOffset;                   ///< Offset of module | ||||
|   IN  UINT32  EntryPointAddress;                  ///< Entry address | ||||
|   IN  UINT32  ImageBase;                          ///< Image base | ||||
|   IN  UINT32  RelocTableOffset;                   ///< Relocate Table offset | ||||
|   IN  UINT32  ImageSize;                          ///< Size | ||||
|   IN  UINT16  Checksum;                           ///< Checksum | ||||
|   IN  UINT8   ImageType;                          ///< Type | ||||
|   IN  UINT8   V_Reserved;                         ///< Reserved | ||||
| } AMD_IMAGE_HEADER; | ||||
| /// AGESA Binary module header structure | ||||
| typedef struct _AMD_MODULE_HEADER { | ||||
|   IN  UINT32          ModuleHeaderSignature;      ///< Module signature | ||||
|   IN  CHAR8           ModuleIdentifier[8];        ///< 8 characters ID | ||||
|   IN  CHAR8           ModuleVersion[12];          ///< 12 characters version | ||||
|   IN  VOID            *ModuleDispatcher;          ///< A pointer point to dispatcher | ||||
|   IN  struct _AMD_MODULE_HEADER  *NextBlock;      ///< Next module header link | ||||
| } AMD_MODULE_HEADER; | ||||
|  | ||||
| // AMD_CODE_HEADER Signatures. | ||||
| #define AGESA_CODE_SIGNATURE  {'!', '!', 'A', 'G', 'E', 'S', 'A', ' '} | ||||
| #define CIMXNB_CODE_SIGNATURE {'!', '!', 'C', 'I', 'M', 'X', 'N', 'B'} | ||||
| #define CIMXSB_CODE_SIGNATURE {'!', '!', 'C', 'I', 'M', 'X', 'S', 'B'} | ||||
|  | ||||
| /// AGESA_CODE_SIGNATURE | ||||
| typedef struct { | ||||
|   IN  CHAR8   Signature[8];                       ///< code header Signature | ||||
|   IN  CHAR8   ComponentName[8];                   ///< 8 character name of the code module | ||||
|   IN  CHAR8   Version[12];                        ///< 12 character version string | ||||
|   IN  CHAR8   TerminatorNull;                     ///< null terminated string | ||||
|   IN  CHAR8   VerReserved[7];                     ///< reserved space | ||||
| } AMD_CODE_HEADER; | ||||
|  | ||||
| /// Extended PCI address format | ||||
| typedef struct { | ||||
|   IN OUT  UINT32      Register:12;                ///< Register offset | ||||
|   IN OUT  UINT32      Function:3;                 ///< Function number | ||||
|   IN OUT  UINT32      Device:5;                   ///< Device number | ||||
|   IN OUT  UINT32      Bus:8;                      ///< Bus number | ||||
|   IN OUT  UINT32      Segment:4;                  ///< Segment | ||||
| } EXT_PCI_ADDR; | ||||
|  | ||||
| /// Union type for PCI address | ||||
| typedef union _PCI_ADDR { | ||||
|   IN  UINT32          AddressValue;               ///< Formal address | ||||
|   IN  EXT_PCI_ADDR    Address;                    ///< Extended address | ||||
| } PCI_ADDR; | ||||
|  | ||||
| //   SBDFO - Segment Bus Device Function Offset | ||||
| //   31:28   Segment (4-bits) | ||||
| //   27:20   Bus     (8-bits) | ||||
| //   19:15   Device  (5-bits) | ||||
| //   14:12   Function(3-bits) | ||||
| //   11:00   Offset  (12-bits) | ||||
|  | ||||
| #define MAKE_SBDFO(Seg, Bus, Dev, Fun, Off) ((((UINT32) (Seg)) << 28) | (((UINT32) (Bus)) << 20) | \ | ||||
|                    (((UINT32)(Dev)) << 15) | (((UINT32)(Fun)) << 12) | ((UINT32)(Off))) | ||||
| #define ILLEGAL_SBDFO 0xFFFFFFFF | ||||
|  | ||||
| /// CPUID data received registers format | ||||
| typedef struct { | ||||
|   OUT UINT32          EAX_Reg;                    ///< CPUID instruction result in EAX | ||||
|   OUT UINT32          EBX_Reg;                    ///< CPUID instruction result in EBX | ||||
|   OUT UINT32          ECX_Reg;                    ///< CPUID instruction result in ECX | ||||
|   OUT UINT32          EDX_Reg;                    ///< CPUID instruction result in EDX | ||||
| } CPUID_DATA; | ||||
|  | ||||
| /// HT frequency for external callbacks | ||||
| typedef enum { | ||||
|   HT_FREQUENCY_200M          = 0,                 ///< HT speed 200 for external callbacks | ||||
|   HT_FREQUENCY_400M          = 2,                 ///< HT speed 400 for external callbacks | ||||
|   HT_FREQUENCY_600M          = 4,                 ///< HT speed 600 for external callbacks | ||||
|   HT_FREQUENCY_800M          = 5,                 ///< HT speed 800 for external callbacks | ||||
|   HT_FREQUENCY_1000M         = 6,                 ///< HT speed 1000 for external callbacks | ||||
|   HT_FREQUENCY_1200M         = 7,                 ///< HT speed 1200 for external callbacks | ||||
|   HT_FREQUENCY_1400M         = 8,                 ///< HT speed 1400 for external callbacks | ||||
|   HT_FREQUENCY_1600M         = 9,                 ///< HT speed 1600 for external callbacks | ||||
|   HT_FREQUENCY_1800M         = 10,                ///< HT speed 1800 for external callbacks | ||||
|   HT_FREQUENCY_2000M         = 11,                ///< HT speed 2000 for external callbacks | ||||
|   HT_FREQUENCY_2200M         = 12,                ///< HT speed 2200 for external callbacks | ||||
|   HT_FREQUENCY_2400M         = 13,                ///< HT speed 2400 for external callbacks | ||||
|   HT_FREQUENCY_2600M         = 14,                ///< HT speed 2600 for external callbacks | ||||
|   HT_FREQUENCY_2800M         = 17,                ///< HT speed 2800 for external callbacks | ||||
|   HT_FREQUENCY_3000M         = 18,                ///< HT speed 3000 for external callbacks | ||||
|   HT_FREQUENCY_3200M         = 19,                ///< HT speed 3200 for external callbacks | ||||
|   HT_FREQUENCY_MAX                                ///< Limit check. | ||||
| } HT_FREQUENCIES; | ||||
| // The minimum HT3 frequency | ||||
| #define HT3_FREQUENCY_MIN HT_FREQUENCY_1200M | ||||
|  | ||||
| #ifndef BIT0 | ||||
|   #define BIT0        0x0000000000000001ull | ||||
| #endif | ||||
| #ifndef BIT1 | ||||
|   #define BIT1        0x0000000000000002ull | ||||
| #endif | ||||
| #ifndef BIT2 | ||||
|   #define BIT2        0x0000000000000004ull | ||||
| #endif | ||||
| #ifndef BIT3 | ||||
|   #define BIT3        0x0000000000000008ull | ||||
| #endif | ||||
| #ifndef BIT4 | ||||
|   #define BIT4        0x0000000000000010ull | ||||
| #endif | ||||
| #ifndef BIT5 | ||||
|   #define BIT5        0x0000000000000020ull | ||||
| #endif | ||||
| #ifndef BIT6 | ||||
|   #define BIT6        0x0000000000000040ull | ||||
| #endif | ||||
| #ifndef BIT7 | ||||
|   #define BIT7        0x0000000000000080ull | ||||
| #endif | ||||
| #ifndef BIT8 | ||||
|   #define BIT8        0x0000000000000100ull | ||||
| #endif | ||||
| #ifndef BIT9 | ||||
|   #define BIT9        0x0000000000000200ull | ||||
| #endif | ||||
| #ifndef BIT10 | ||||
|   #define BIT10       0x0000000000000400ull | ||||
| #endif | ||||
| #ifndef BIT11 | ||||
|   #define BIT11       0x0000000000000800ull | ||||
| #endif | ||||
| #ifndef BIT12 | ||||
|   #define BIT12       0x0000000000001000ull | ||||
| #endif | ||||
| #ifndef BIT13 | ||||
|   #define BIT13       0x0000000000002000ull | ||||
| #endif | ||||
| #ifndef BIT14 | ||||
|   #define BIT14       0x0000000000004000ull | ||||
| #endif | ||||
| #ifndef BIT15 | ||||
|   #define BIT15       0x0000000000008000ull | ||||
| #endif | ||||
| #ifndef BIT16 | ||||
|   #define BIT16       0x0000000000010000ull | ||||
| #endif | ||||
| #ifndef BIT17 | ||||
|   #define BIT17       0x0000000000020000ull | ||||
| #endif | ||||
| #ifndef BIT18 | ||||
|   #define BIT18       0x0000000000040000ull | ||||
| #endif | ||||
| #ifndef BIT19 | ||||
|   #define BIT19       0x0000000000080000ull | ||||
| #endif | ||||
| #ifndef BIT20 | ||||
|   #define BIT20       0x0000000000100000ull | ||||
| #endif | ||||
| #ifndef BIT21 | ||||
|   #define BIT21       0x0000000000200000ull | ||||
| #endif | ||||
| #ifndef BIT22 | ||||
|   #define BIT22       0x0000000000400000ull | ||||
| #endif | ||||
| #ifndef BIT23 | ||||
|   #define BIT23       0x0000000000800000ull | ||||
| #endif | ||||
| #ifndef BIT24 | ||||
|   #define BIT24       0x0000000001000000ull | ||||
| #endif | ||||
| #ifndef BIT25 | ||||
|   #define BIT25       0x0000000002000000ull | ||||
| #endif | ||||
| #ifndef BIT26 | ||||
|   #define BIT26       0x0000000004000000ull | ||||
| #endif | ||||
| #ifndef BIT27 | ||||
|   #define BIT27       0x0000000008000000ull | ||||
| #endif | ||||
| #ifndef BIT28 | ||||
|   #define BIT28       0x0000000010000000ull | ||||
| #endif | ||||
| #ifndef BIT29 | ||||
|   #define BIT29       0x0000000020000000ull | ||||
| #endif | ||||
| #ifndef BIT30 | ||||
|   #define BIT30       0x0000000040000000ull | ||||
| #endif | ||||
| #ifndef BIT31 | ||||
|   #define BIT31       0x0000000080000000ull | ||||
| #endif | ||||
| #ifndef BIT32 | ||||
|   #define BIT32       0x0000000100000000ull | ||||
| #endif | ||||
| #ifndef BIT33 | ||||
|   #define BIT33       0x0000000200000000ull | ||||
| #endif | ||||
| #ifndef BIT34 | ||||
|   #define BIT34       0x0000000400000000ull | ||||
| #endif | ||||
| #ifndef BIT35 | ||||
|   #define BIT35       0x0000000800000000ull | ||||
| #endif | ||||
| #ifndef BIT36 | ||||
|   #define BIT36       0x0000001000000000ull | ||||
| #endif | ||||
| #ifndef BIT37 | ||||
|   #define BIT37       0x0000002000000000ull | ||||
| #endif | ||||
| #ifndef BIT38 | ||||
|   #define BIT38       0x0000004000000000ull | ||||
| #endif | ||||
| #ifndef BIT39 | ||||
|   #define BIT39       0x0000008000000000ull | ||||
| #endif | ||||
| #ifndef BIT40 | ||||
|   #define BIT40       0x0000010000000000ull | ||||
| #endif | ||||
| #ifndef BIT41 | ||||
|   #define BIT41       0x0000020000000000ull | ||||
| #endif | ||||
| #ifndef BIT42 | ||||
|   #define BIT42       0x0000040000000000ull | ||||
| #endif | ||||
| #ifndef BIT43 | ||||
|   #define BIT43       0x0000080000000000ull | ||||
| #endif | ||||
| #ifndef BIT44 | ||||
|   #define BIT44       0x0000100000000000ull | ||||
| #endif | ||||
| #ifndef BIT45 | ||||
|   #define BIT45       0x0000200000000000ull | ||||
| #endif | ||||
| #ifndef BIT46 | ||||
|   #define BIT46       0x0000400000000000ull | ||||
| #endif | ||||
| #ifndef BIT47 | ||||
|   #define BIT47       0x0000800000000000ull | ||||
| #endif | ||||
| #ifndef BIT48 | ||||
|   #define BIT48       0x0001000000000000ull | ||||
| #endif | ||||
| #ifndef BIT49 | ||||
|   #define BIT49       0x0002000000000000ull | ||||
| #endif | ||||
| #ifndef BIT50 | ||||
|   #define BIT50       0x0004000000000000ull | ||||
| #endif | ||||
| #ifndef BIT51 | ||||
|   #define BIT51       0x0008000000000000ull | ||||
| #endif | ||||
| #ifndef BIT52 | ||||
|   #define BIT52       0x0010000000000000ull | ||||
| #endif | ||||
| #ifndef BIT53 | ||||
|   #define BIT53       0x0020000000000000ull | ||||
| #endif | ||||
| #ifndef BIT54 | ||||
|   #define BIT54       0x0040000000000000ull | ||||
| #endif | ||||
| #ifndef BIT55 | ||||
|   #define BIT55       0x0080000000000000ull | ||||
| #endif | ||||
| #ifndef BIT56 | ||||
|   #define BIT56       0x0100000000000000ull | ||||
| #endif | ||||
| #ifndef BIT57 | ||||
|   #define BIT57       0x0200000000000000ull | ||||
| #endif | ||||
| #ifndef BIT58 | ||||
|   #define BIT58       0x0400000000000000ull | ||||
| #endif | ||||
| #ifndef BIT59 | ||||
|   #define BIT59       0x0800000000000000ull | ||||
| #endif | ||||
| #ifndef BIT60 | ||||
|   #define BIT60       0x1000000000000000ull | ||||
| #endif | ||||
| #ifndef BIT61 | ||||
|   #define BIT61       0x2000000000000000ull | ||||
| #endif | ||||
| #ifndef BIT62 | ||||
|   #define BIT62       0x4000000000000000ull | ||||
| #endif | ||||
| #ifndef BIT63 | ||||
|   #define BIT63       0x8000000000000000ull | ||||
| #endif | ||||
|  | ||||
| #endif // _AMD_H_ | ||||
| @@ -1,108 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: C6 C-state | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 37456 $   @e \$Date: 2010-09-04 04:17:05 +0800 (Sat, 04 Sep 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_C6_STATE_INSTALL_H_ | ||||
| #define _OPTION_C6_STATE_INSTALL_H_ | ||||
|  | ||||
| #include "cpuC6State.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_C6_STATE_FEAT | ||||
| #define F14_C6_STATE_SUPPORT | ||||
|  | ||||
| #if OPTION_C6_STATE == TRUE | ||||
|   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) | ||||
|  | ||||
|     #ifdef OPTION_FAMILY14H | ||||
|       #if OPTION_FAMILY14H == TRUE | ||||
|         #if OPTION_FAMILY14H_ON == TRUE | ||||
|           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureC6State; | ||||
|           #undef OPTION_C6_STATE_FEAT | ||||
|           #define OPTION_C6_STATE_FEAT &CpuFeatureC6State, | ||||
|           extern CONST C6_FAMILY_SERVICES ROMDATA F14C6Support; | ||||
|           #undef F14_C6_STATE_SUPPORT | ||||
|           #define F14_C6_STATE_SUPPORT {AMD_FAMILY_14_ON, &F14C6Support}, | ||||
|  | ||||
|           #if OPTION_EARLY_SAMPLES == TRUE | ||||
|             extern F_F14_ES_IS_C6_SUPPORTED F14IsC6DisabledEarlySample; | ||||
|             extern F_F14_ES_C6_INIT F14C6A0Workaround; | ||||
|  | ||||
|             CONST F14_ES_C6_SUPPORT ROMDATA F14EarlySampleC6Support = | ||||
|             { | ||||
|               F14IsC6DisabledEarlySample, | ||||
|               F14C6A0Workaround | ||||
|             }; | ||||
|           #else | ||||
|             CONST F14_ES_C6_SUPPORT ROMDATA F14EarlySampleC6Support = | ||||
|             { | ||||
|               (PF_F14_ES_IS_C6_SUPPORTED) CommonVoid, | ||||
|               (PF_F14_ES_C6_INIT) CommonVoid | ||||
|             }; | ||||
|           #endif | ||||
|  | ||||
|         #endif | ||||
|       #endif | ||||
|     #endif | ||||
|  | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA C6FamilyServiceArray[] = | ||||
| { | ||||
|   F14_C6_STATE_SUPPORT | ||||
|   {0, NULL} | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA C6FamilyServiceTable = | ||||
| { | ||||
|   (sizeof (C6FamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &C6FamilyServiceArray[0] | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_C6_STATE_INSTALL_H_ | ||||
| @@ -1,91 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Core Performance Boost | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_CPB_INSTALL_H_ | ||||
| #define _OPTION_CPB_INSTALL_H_ | ||||
|  | ||||
| #include "cpuCpb.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_CPB_FEAT | ||||
| #define F14_ON_CPB_SUPPORT | ||||
|  | ||||
| #if OPTION_CPB == TRUE | ||||
|   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE) | ||||
|  | ||||
|     // Family 14h | ||||
|     #ifdef OPTION_FAMILY14H | ||||
|       #if OPTION_FAMILY14H == TRUE | ||||
|         #if OPTION_FAMILY14H_ON == TRUE | ||||
|           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureCpb; | ||||
|           #undef OPTION_CPB_FEAT | ||||
|           #define OPTION_CPB_FEAT &CpuFeatureCpb, | ||||
|           extern CONST CPB_FAMILY_SERVICES ROMDATA F14OnCpbSupport; | ||||
|           #undef F14_ON_CPB_SUPPORT | ||||
|           #define F14_ON_CPB_SUPPORT {AMD_FAMILY_14_ON, &F14OnCpbSupport}, | ||||
|         #endif | ||||
|       #endif | ||||
|     #endif | ||||
|  | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA CpbFamilyServiceArray[] = | ||||
| { | ||||
|   F14_ON_CPB_SUPPORT | ||||
|   {0, NULL} | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA CpbFamilyServiceTable = | ||||
| { | ||||
|   (sizeof (CpbFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &CpbFamilyServiceArray[0] | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_CPB_INSTALL_H_ | ||||
| @@ -1,70 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: CPU Cache Flush On Halt | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_CPU_CACHEFLUSHONHALT_INSTALL_H_ | ||||
| #define _OPTION_CPU_CACHEFLUSHONHALT_INSTALL_H_ | ||||
|  | ||||
| #include "cpuPostInit.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_CPU_CACHE_FLUSH_ON_HALT_FEAT | ||||
|  | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA CacheFlushOnHaltFamilyServiceArray[] = | ||||
| { | ||||
|   {0, NULL} | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA CacheFlushOnHaltFamilyServiceTable = | ||||
| { | ||||
|   (sizeof (CacheFlushOnHaltFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &CacheFlushOnHaltFamilyServiceArray[0] | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_CPU_CACHEFLUSHONHALT_INSTALL_H_ | ||||
| @@ -1,68 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: CPU Core Leveling | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_CPU_CORELEVELING_INSTALL_H_ | ||||
| #define _OPTION_CPU_CORELEVELING_INSTALL_H_ | ||||
|  | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_CPU_CORE_LEVELING_FEAT | ||||
|  | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA CoreLevelingFamilyServiceArray[] = | ||||
| { | ||||
|   {0, NULL} | ||||
| }; | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA CoreLevelingFamilyServiceTable = | ||||
| { | ||||
|   (sizeof (CoreLevelingFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &CoreLevelingFamilyServiceArray[0] | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_CPU_CORELEVELING_INSTALL_H_ | ||||
| @@ -1,357 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of all appropriate CPU family specific support. | ||||
|  * | ||||
|  * This file generates the defaults tables for all family specific | ||||
|  * combinations. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 37640 $   @e \$Date: 2010-09-08 23:01:59 +0800 (Wed, 08 Sep 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*  Default all CPU Specific Service members to off.  They | ||||
|     will be enabled as needed by cross referencing families | ||||
|     with entry points in the family / model install files.  */ | ||||
| #define GET_PSTATE_POWER            FALSE | ||||
| #define GET_PSTATE_FREQ             FALSE | ||||
| #define DISABLE_PSTATE              FALSE | ||||
| #define TRANSITION_PSTATE           FALSE | ||||
| #define PROC_IDD_MAX                FALSE | ||||
| #define GET_TSC_RATE                FALSE | ||||
| #define PSTATE_TRANSITION_LATENCY   FALSE | ||||
| #define GET_PSTATE_REGISTER_INFO    FALSE | ||||
| #define GET_PSTATE_MAX_STATE        FALSE | ||||
| #define SET_PSTATE_LEVELING_REG     FALSE | ||||
| #define GET_NB_FREQ                 FALSE | ||||
| #define IS_NBCOF_INIT_NEEDED        FALSE | ||||
| #define AP_INITIAL_LAUNCH           FALSE | ||||
| #define GET_AP_MAILBOX_FROM_HW      FALSE | ||||
| #define SET_AP_CORE_NUMBER          FALSE | ||||
| #define GET_AP_CORE_NUMBER          FALSE | ||||
| #define TRANSFER_AP_CORE_NUMBER     FALSE | ||||
| #define ID_POSITION_INITIAL_APICID  FALSE | ||||
| #define SAVE_FEATURES               FALSE | ||||
| #define WRITE_FEATURES              FALSE | ||||
| #define SET_DOWN_CORE_REG           FALSE | ||||
| #define SET_WARM_RESET_FLAG         FALSE | ||||
| #define GET_WARM_RESET_FLAG         FALSE | ||||
| #define USES_REGISTER_TABLES        FALSE | ||||
| #define BASE_FAMILY_PCI             FALSE | ||||
| #define MODEL_SPECIFIC_PCI          FALSE | ||||
| #define BASE_FAMILY_MSR             FALSE | ||||
| #define MODEL_SPECIFIC_MSR          FALSE | ||||
| #define BRAND_STRING1               FALSE | ||||
| #define BRAND_STRING2               FALSE | ||||
| #define BASE_FAMILY_HT_PCI          FALSE | ||||
| #define MODEL_SPECIFIC_HT_PCI       FALSE | ||||
| #define BASE_FAMILY_WORKAROUNDS     FALSE | ||||
| #define GET_PATCHES                 FALSE | ||||
| #define GET_PATCHES_EQUIVALENCE_TABLE FALSE | ||||
| #define GET_CACHE_INFO              FALSE | ||||
| #define GET_SYSTEM_PM_TABLE         FALSE | ||||
| #define GET_WHEA_INIT               FALSE | ||||
| #define GET_CFOH_REG                FALSE | ||||
| #define GET_PLATFORM_TYPE_SPECIFIC_INFO FALSE | ||||
| #define IS_NB_PSTATE_ENABLED        FALSE | ||||
|  | ||||
| /* | ||||
|  * Pull in family specific services based on entry point | ||||
|  */ | ||||
| #if AGESA_ENTRY_INIT_RESET == TRUE | ||||
|   #undef ID_POSITION_INITIAL_APICID | ||||
|   #define ID_POSITION_INITIAL_APICID  TRUE | ||||
|   #undef GET_AP_MAILBOX_FROM_HW | ||||
|   #define GET_AP_MAILBOX_FROM_HW      TRUE | ||||
|   #undef SET_WARM_RESET_FLAG | ||||
|   #define SET_WARM_RESET_FLAG         TRUE | ||||
|   #undef GET_WARM_RESET_FLAG | ||||
|   #define GET_WARM_RESET_FLAG         TRUE | ||||
|   #undef GET_CACHE_INFO | ||||
|   #define GET_CACHE_INFO              TRUE | ||||
|   #undef GET_AP_CORE_NUMBER | ||||
|   #define GET_AP_CORE_NUMBER          TRUE | ||||
|   #undef TRANSFER_AP_CORE_NUMBER | ||||
|   #define TRANSFER_AP_CORE_NUMBER     TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|   #undef TRANSITION_PSTATE | ||||
|   #define TRANSITION_PSTATE           TRUE | ||||
|   #undef DISABLE_PSTATE | ||||
|   #define DISABLE_PSTATE              TRUE | ||||
|   #undef PROC_IDD_MAX | ||||
|   #define PROC_IDD_MAX                TRUE | ||||
|   #undef GET_TSC_RATE | ||||
|   #define GET_TSC_RATE                TRUE | ||||
|   #undef GET_NB_FREQ | ||||
|   #define GET_NB_FREQ                 TRUE | ||||
|   #undef IS_NBCOF_INIT_NEEDED | ||||
|   #define IS_NBCOF_INIT_NEEDED        TRUE | ||||
|   #undef AP_INITIAL_LAUNCH | ||||
|   #define AP_INITIAL_LAUNCH           TRUE | ||||
|   #undef GET_AP_MAILBOX_FROM_HW | ||||
|   #define GET_AP_MAILBOX_FROM_HW      TRUE | ||||
|   #undef SET_AP_CORE_NUMBER | ||||
|   #define SET_AP_CORE_NUMBER          TRUE | ||||
|   #undef GET_AP_CORE_NUMBER | ||||
|   #define GET_AP_CORE_NUMBER          TRUE | ||||
|   #undef TRANSFER_AP_CORE_NUMBER | ||||
|   #define TRANSFER_AP_CORE_NUMBER     TRUE | ||||
|   #undef ID_POSITION_INITIAL_APICID | ||||
|   #define ID_POSITION_INITIAL_APICID  TRUE | ||||
|   #undef SET_DOWN_CORE_REG | ||||
|   #define SET_DOWN_CORE_REG           TRUE | ||||
|   #undef SET_WARM_RESET_FLAG | ||||
|   #define SET_WARM_RESET_FLAG         TRUE | ||||
|   #undef GET_WARM_RESET_FLAG | ||||
|   #define GET_WARM_RESET_FLAG         TRUE | ||||
|   #undef USES_REGISTER_TABLES | ||||
|   #define USES_REGISTER_TABLES        TRUE | ||||
|   #undef BASE_FAMILY_PCI | ||||
|   #define BASE_FAMILY_PCI             TRUE | ||||
|   #undef MODEL_SPECIFIC_PCI | ||||
|   #define MODEL_SPECIFIC_PCI          TRUE | ||||
|   #undef BASE_FAMILY_MSR | ||||
|   #define BASE_FAMILY_MSR             TRUE | ||||
|   #undef MODEL_SPECIFIC_MSR | ||||
|   #define MODEL_SPECIFIC_MSR          TRUE | ||||
|   #undef BRAND_STRING1 | ||||
|   #define BRAND_STRING1               TRUE | ||||
|   #undef BRAND_STRING2 | ||||
|   #define BRAND_STRING2               TRUE | ||||
|   #undef BASE_FAMILY_HT_PCI | ||||
|   #define BASE_FAMILY_HT_PCI          TRUE | ||||
|   #undef MODEL_SPECIFIC_HT_PCI | ||||
|   #define MODEL_SPECIFIC_HT_PCI       TRUE | ||||
|   #undef BASE_FAMILY_WORKAROUNDS | ||||
|   #define BASE_FAMILY_WORKAROUNDS     TRUE | ||||
|   #undef GET_PATCHES | ||||
|   #define GET_PATCHES                 TRUE | ||||
|   #undef GET_PATCHES_EQUIVALENCE_TABLE | ||||
|   #define GET_PATCHES_EQUIVALENCE_TABLE TRUE | ||||
|   #undef GET_SYSTEM_PM_TABLE | ||||
|   #define GET_SYSTEM_PM_TABLE         TRUE | ||||
|   #undef GET_CACHE_INFO | ||||
|   #define GET_CACHE_INFO              TRUE | ||||
|   #undef GET_PLATFORM_TYPE_SPECIFIC_INFO | ||||
|   #define GET_PLATFORM_TYPE_SPECIFIC_INFO TRUE | ||||
|   #undef IS_NB_PSTATE_ENABLED | ||||
|   #define IS_NB_PSTATE_ENABLED        TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_POST == TRUE | ||||
|   #undef ID_POSITION_INITIAL_APICID | ||||
|   #define ID_POSITION_INITIAL_APICID  TRUE | ||||
|   #undef GET_PSTATE_POWER | ||||
|   #define GET_PSTATE_POWER            TRUE | ||||
|   #undef GET_PSTATE_FREQ | ||||
|   #define GET_PSTATE_FREQ             TRUE | ||||
|   #undef TRANSITION_PSTATE | ||||
|   #define TRANSITION_PSTATE           TRUE | ||||
|   #undef PROC_IDD_MAX | ||||
|   #define PROC_IDD_MAX                TRUE | ||||
|   #undef GET_AP_CORE_NUMBER | ||||
|   #define GET_AP_CORE_NUMBER          TRUE | ||||
|   #undef GET_PSTATE_REGISTER_INFO | ||||
|   #define GET_PSTATE_REGISTER_INFO    TRUE | ||||
|   #undef GET_PSTATE_MAX_STATE | ||||
|   #define GET_PSTATE_MAX_STATE        TRUE | ||||
|   #undef SET_PSTATE_LEVELING_REG | ||||
|   #define SET_PSTATE_LEVELING_REG     TRUE | ||||
|   #undef SET_WARM_RESET_FLAG | ||||
|   #define SET_WARM_RESET_FLAG         TRUE | ||||
|   #undef GET_WARM_RESET_FLAG | ||||
|   #define GET_WARM_RESET_FLAG         TRUE | ||||
|   #undef SAVE_FEATURES | ||||
|   #define SAVE_FEATURES               TRUE | ||||
|   #undef WRITE_FEATURES | ||||
|   #define WRITE_FEATURES              TRUE | ||||
|   #undef GET_CFOH_REG | ||||
|   #define GET_CFOH_REG                TRUE | ||||
|   #undef IS_NB_PSTATE_ENABLED | ||||
|   #define IS_NB_PSTATE_ENABLED        TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_ENV == TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_MID == TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_LATE == TRUE | ||||
|   #undef GET_AP_CORE_NUMBER | ||||
|   #define GET_AP_CORE_NUMBER          TRUE | ||||
|   #undef GET_PSTATE_FREQ | ||||
|   #define GET_PSTATE_FREQ             TRUE | ||||
|   #undef TRANSITION_PSTATE | ||||
|   #define TRANSITION_PSTATE           TRUE | ||||
|   #undef PSTATE_TRANSITION_LATENCY | ||||
|   #define PSTATE_TRANSITION_LATENCY   TRUE | ||||
|   #undef GET_WHEA_INIT | ||||
|   #define GET_WHEA_INIT               TRUE | ||||
|   #undef GET_PLATFORM_TYPE_SPECIFIC_INFO | ||||
|   #define GET_PLATFORM_TYPE_SPECIFIC_INFO TRUE | ||||
|   #undef GET_TSC_RATE | ||||
|   #define GET_TSC_RATE                TRUE | ||||
|   #undef BRAND_STRING1 | ||||
|   #define BRAND_STRING1               TRUE | ||||
|   #undef BRAND_STRING2 | ||||
|   #define BRAND_STRING2               TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_S3SAVE == TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_RESUME == TRUE | ||||
|   #undef GET_CFOH_REG | ||||
|   #define GET_CFOH_REG                TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_LATE_RESTORE == TRUE | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE | ||||
|   #undef ID_POSITION_INITIAL_APICID | ||||
|   #define ID_POSITION_INITIAL_APICID  TRUE | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Initialize PCI MMIO mask to 0 | ||||
|  */ | ||||
| #define FAMILY_MMIO_BASE_MASK (0ull) | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Initialize all families to disabled | ||||
|  */ | ||||
| #define OPT_F14_TABLE | ||||
|  | ||||
| #define OPT_F14_ID_TABLE | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Install family specific support | ||||
|  */ | ||||
|  | ||||
| #if (OPTION_FAMILY14H == TRUE) | ||||
|   #include  "OptionFamily14hInstall.h" | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Process PCI MMIO mask | ||||
|  */ | ||||
|  | ||||
| // If size is 0, but base is not, break the build. | ||||
| #if (CFG_PCI_MMIO_BASE != 0) && (CFG_PCI_MMIO_SIZE == 0) | ||||
|   #error    BLDCFG: Invalid PCI MMIO size -- acceptable values are 1, 2, 4, 8, 16, 32, 64, 128, and 256 | ||||
| #endif | ||||
|  | ||||
| // If base is 0, but size is not, break the build. | ||||
| #if (CFG_PCI_MMIO_BASE == 0) && (CFG_PCI_MMIO_SIZE != 0) | ||||
|   #error    BLDCFG: Invalid PCI MMIO base -- must be 8MB or greater | ||||
| #endif | ||||
|  | ||||
| #if (CFG_PCI_MMIO_BASE != 0) && (CFG_PCI_MMIO_SIZE != 0) | ||||
|   // Both are non-zero, begin further processing. | ||||
|  | ||||
|   // Heap runs from 4MB to 8MB. Disallow any addresses below 8MB. | ||||
|   #if (CFG_PCI_MMIO_BASE < 0x800000) | ||||
|     #error    BLDCFG: Invalid PCI MMIO base -- must be 8MB or greater | ||||
|   #endif | ||||
|  | ||||
|   // Break the build if the address is too high for the enabled families. | ||||
|   #if ((CFG_PCI_MMIO_BASE & FAMILY_MMIO_BASE_MASK) != 0) | ||||
|     #error       BLDCFG: Invalid PCI MMIO base address for the installed CPU families | ||||
|   #endif | ||||
|  | ||||
|   // If the size parameter is not valid, break the build. | ||||
|   #if (CFG_PCI_MMIO_SIZE != 1) && (CFG_PCI_MMIO_SIZE != 2) && (CFG_PCI_MMIO_SIZE != 4) && (CFG_PCI_MMIO_SIZE != 8) && (CFG_PCI_MMIO_SIZE != 16) | ||||
|     #if (CFG_PCI_MMIO_SIZE != 32) && (CFG_PCI_MMIO_SIZE != 64) && (CFG_PCI_MMIO_SIZE != 128) && (CFG_PCI_MMIO_SIZE != 256) | ||||
|       #error      BLDCFG: Invalid PCI MMIO size -- acceptable values are 1, 2, 4, 8, 16, 32, 64, 128, and 256 | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   #define PCI_MMIO_ALIGNMENT ((0x100000 * CFG_PCI_MMIO_SIZE) - 1) | ||||
|   // If the base is not aligned according to size, break the build. | ||||
|   #if ((CFG_PCI_MMIO_BASE & PCI_MMIO_ALIGNMENT) != 0) | ||||
|     #error      BLDCFG: Invalid PCI MMIO base -- must be properly aligned according to MMIO size | ||||
|   #endif | ||||
|   #undef PCI_MMIO_ALIGNMENT | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Process sockets / modules | ||||
|  */ | ||||
| #ifndef ADVCFG_PLATFORM_SOCKETS | ||||
|   #error BLDOPT Set Family supported sockets. | ||||
| #endif | ||||
| #ifndef ADVCFG_PLATFORM_MODULES | ||||
|   #error BLDOPT Set Family supported modules. | ||||
| #endif | ||||
|  | ||||
| CONST OPTIONS_CONFIG_TOPOLOGY ROMDATA TopologyConfiguration = | ||||
| { | ||||
|   ADVCFG_PLATFORM_SOCKETS, | ||||
|   ADVCFG_PLATFORM_MODULES | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Instantiate global data needed for processor identification | ||||
|  */ | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA CpuSupportedFamiliesArray[] = | ||||
| { | ||||
|   OPT_F14_TABLE | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA CpuSupportedFamiliesTable = | ||||
| { | ||||
|   (sizeof (CpuSupportedFamiliesArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &CpuSupportedFamiliesArray[0] | ||||
| }; | ||||
|  | ||||
|  | ||||
| CONST CPU_LOGICAL_ID_FAMILY_XLAT ROMDATA CpuSupportedFamilyIdArray[] = | ||||
| { | ||||
|   OPT_F14_ID_TABLE | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_ID_XLAT_TABLE ROMDATA CpuSupportedFamilyIdTable = | ||||
| { | ||||
|   (sizeof (CpuSupportedFamilyIdArray) / sizeof (CPU_LOGICAL_ID_FAMILY_XLAT)), | ||||
|   CpuSupportedFamilyIdArray | ||||
| }; | ||||
| @@ -1,78 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of multiple CPU features. | ||||
|  * | ||||
|  * Aggregates enabled CPU features into a list for the dispatcher to process. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 37157 $   @e \$Date: 2010-09-01 03:24:07 +0800 (Wed, 01 Sep 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_CPU_FEATURES_INSTALL_H_ | ||||
| #define _OPTION_CPU_FEATURES_INSTALL_H_ | ||||
|  | ||||
| #include "OptionHwC1eInstall.h" | ||||
| #include "OptionMsgBasedC1eInstall.h" | ||||
| #include "OptionSwC1eInstall.h" | ||||
| #include "OptionHtAssistInstall.h" | ||||
| #include "OptionCpuCoreLevelingInstall.h" | ||||
| #include "OptionIoCstateInstall.h" | ||||
| #include "OptionC6Install.h" | ||||
| #include "OptionCpbInstall.h" | ||||
| #include "OptionCpuCacheFlushOnHaltInstall.h" | ||||
| #include "OptionLowPwrPstateInstall.h" | ||||
| #include "OptionPreserveMailboxInstall.h" | ||||
|  | ||||
| CONST CPU_FEATURE_DESCRIPTOR* ROMDATA CONST SupportedCpuFeatureList[] = | ||||
| { | ||||
|   OPTION_HW_C1E_FEAT | ||||
|   OPTION_MSG_BASED_C1E_FEAT | ||||
|   OPTION_SW_C1E_FEAT | ||||
|   OPTION_HT_ASSIST_FEAT | ||||
|   OPTION_CPU_CORE_LEVELING_FEAT | ||||
|   OPTION_IO_CSTATE_FEAT | ||||
|   OPTION_C6_STATE_FEAT | ||||
|   OPTION_CPB_FEAT | ||||
|   OPTION_CPU_CACHE_FLUSH_ON_HALT_FEAT | ||||
|   OPTION_CPU_LOW_PWR_PSTATE_FOR_PROCHOT_FEAT  // this function should be run before creating ACPI objects and after Pstate initialization | ||||
|   OPTION_PRESERVE_MAILBOX_FEAT | ||||
|   NULL | ||||
| }; | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_CPU_FEATURES_INSTALL_H_ | ||||
| @@ -1,129 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: DMI | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_DMI_INSTALL_H_ | ||||
| #define _OPTION_DMI_INSTALL_H_ | ||||
|  | ||||
| #include "cpuLateInit.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #if AGESA_ENTRY_INIT_LATE == TRUE | ||||
|   #ifndef OPTION_DMI | ||||
|     #error  BLDOPT: Option not defined: "OPTION_DMI" | ||||
|   #endif | ||||
|   #if OPTION_DMI == TRUE | ||||
|     OPTION_DMI_FEATURE          GetDmiInfoMain; | ||||
|     OPTION_DMI_RELEASE_BUFFER   ReleaseDmiBuffer; | ||||
|     #define USER_DMI_OPTION     &GetDmiInfoMain | ||||
|     #define USER_DMI_RELEASE_BUFFER &ReleaseDmiBuffer | ||||
|  | ||||
|     // This additional check keeps AP launch routines from being unnecessarily included | ||||
|     // in single socket systems. | ||||
|     #if OPTION_MULTISOCKET == TRUE | ||||
|       #define CPU_DMI_AP_GET_TYPE4_TYPE7 {AP_LATE_TASK_GET_TYPE4_TYPE7, (IMAGE_ENTRY) GetType4Type7Info}, | ||||
|     #else | ||||
|       #define CPU_DMI_AP_GET_TYPE4_TYPE7 | ||||
|     #endif | ||||
|  | ||||
|     // Family 14 | ||||
|     #ifdef OPTION_FAMILY14H | ||||
|       #if OPTION_FAMILY14H == TRUE | ||||
|         extern PROC_FAMILY_TABLE ProcFamily14DmiTable; | ||||
|         #define FAM14_DMI_SUPPORT FAM14_ENABLED, | ||||
|         #define FAM14_DMI_TABLE &ProcFamily14DmiTable, | ||||
|       #else | ||||
|         #define FAM14_DMI_SUPPORT | ||||
|         #define FAM14_DMI_TABLE | ||||
|       #endif | ||||
|     #else | ||||
|       #define FAM14_DMI_SUPPORT | ||||
|       #define FAM14_DMI_TABLE | ||||
|     #endif | ||||
|  | ||||
|   #else | ||||
|     OPTION_DMI_FEATURE          GetDmiInfoStub; | ||||
|     OPTION_DMI_RELEASE_BUFFER   ReleaseDmiBufferStub; | ||||
|     #define USER_DMI_OPTION     GetDmiInfoStub | ||||
|     #define USER_DMI_RELEASE_BUFFER ReleaseDmiBufferStub | ||||
|     #define FAM14_DMI_SUPPORT | ||||
|     #define FAM14_DMI_TABLE | ||||
|     #define CPU_DMI_AP_GET_TYPE4_TYPE7 | ||||
|   #endif | ||||
| #else | ||||
|   OPTION_DMI_FEATURE          GetDmiInfoStub; | ||||
|   OPTION_DMI_RELEASE_BUFFER   ReleaseDmiBufferStub; | ||||
|   #define USER_DMI_OPTION     GetDmiInfoStub | ||||
|   #define USER_DMI_RELEASE_BUFFER ReleaseDmiBufferStub | ||||
|   #define FAM14_DMI_SUPPORT | ||||
|   #define FAM14_DMI_TABLE | ||||
|   #define CPU_DMI_AP_GET_TYPE4_TYPE7 | ||||
| #endif | ||||
|  | ||||
| /// DMI supported families enum | ||||
| typedef enum { | ||||
|   FAM14_DMI_SUPPORT                   ///< Conditionally define F14 support | ||||
|   NUM_DMI_FAMILIES                    ///< Number of installed families | ||||
| } AGESA_DMI_SUPPORTED_FAM; | ||||
|  | ||||
| /*  Declare the Family List. An array of pointers to tables that each describe a family  */ | ||||
| CONST PROC_FAMILY_TABLE ROMDATA *ProcTables[] = { | ||||
|   FAM14_DMI_TABLE | ||||
|   NULL | ||||
| }; | ||||
|  | ||||
| /*  Declare the instance of the DMI option configuration structure  */ | ||||
| CONST OPTION_DMI_CONFIGURATION ROMDATA OptionDmiConfiguration = { | ||||
|   DMI_STRUCT_VERSION, | ||||
|   USER_DMI_OPTION, | ||||
|   USER_DMI_RELEASE_BUFFER, | ||||
|   NUM_DMI_FAMILIES, | ||||
|   (VOID *((*)[])) &ProcTables           // Compiler says array size must match struct decl | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_DMI_INSTALL_H_ | ||||
| @@ -1,669 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of family 14h support | ||||
|  * | ||||
|  * This file generates the default tables for family 14h processors. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 37854 $   @e \$Date: 2010-09-14 06:35:39 +0800 (Tue, 14 Sep 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_FAMILY_14H_INSTALL_H_ | ||||
| #define _OPTION_FAMILY_14H_INSTALL_H_ | ||||
|  | ||||
|  | ||||
| #include "OptionFamily14hEarlySample.h" | ||||
|  | ||||
| /* | ||||
|  * Common Family 14h routines | ||||
|  */ | ||||
| extern F_CPU_DISABLE_PSTATE F14DisablePstate; | ||||
| extern F_CPU_TRANSITION_PSTATE F14TransitionPstate; | ||||
| extern F_CPU_GET_TSC_RATE F14GetTscRate; | ||||
| extern F_CPU_GET_NB_FREQ F14GetCurrentNbFrequency; | ||||
| extern F_CPU_GET_NB_PSTATE_INFO F14GetNbPstateInfo; | ||||
| extern F_CPU_IS_NBCOF_INIT_NEEDED F14GetNbCofVidUpdate; | ||||
| extern F_CPU_AP_INITIAL_LAUNCH F14LaunchApCore; | ||||
| extern F_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE F14GetApMailboxFromHardware; | ||||
| extern F_CPU_GET_AP_CORE_NUMBER F14GetApCoreNumber; | ||||
| extern F_CORE_ID_POSITION_IN_INITIAL_APIC_ID F14CpuAmdCoreIdPositionInInitialApicId; | ||||
| extern F_CPU_SET_WARM_RESET_FLAG F14SetAgesaWarmResetFlag; | ||||
| extern F_CPU_GET_WARM_RESET_FLAG F14GetAgesaWarmResetFlag; | ||||
| extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14BrandIdString1; | ||||
| extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14BrandIdString2; | ||||
| extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14CacheInfo; | ||||
| extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14SysPmTable; | ||||
| extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14WheaInitData; | ||||
| //extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetEmptyArray; | ||||
| extern F_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO F14GetPlatformTypeSpecificInfo; | ||||
| extern F_CPU_GET_IDD_MAX F14GetProcIddMax; | ||||
| extern CONST REGISTER_TABLE ROMDATA F14PciRegisterTable; | ||||
| extern CONST REGISTER_TABLE ROMDATA F14PerCorePciRegisterTable; | ||||
| extern CONST REGISTER_TABLE ROMDATA F14MsrRegisterTable; | ||||
| extern F_CPU_NUMBER_OF_BRANDSTRING_CORES F14GetNumberOfCoresForBrandstring; | ||||
| extern F_GET_EARLY_INIT_TABLE GetF14OnEarlyInitOnCoreTable; | ||||
| extern F_IS_NB_PSTATE_ENABLED F14IsNbPstateEnabled; | ||||
| #if OPTION_EARLY_SAMPLES == TRUE | ||||
|   extern CONST REGISTER_TABLE ROMDATA F14EarlySampleMsrRegisterTable; | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Install family 14h model 0 support | ||||
|  */ | ||||
| #ifdef OPTION_FAMILY14H_ON | ||||
|   #if OPTION_FAMILY14H_ON == TRUE | ||||
|     extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14OnMicroCodePatchesStruct; | ||||
|     extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14OnMicrocodeEquivalenceTable; | ||||
|     extern CONST REGISTER_TABLE ROMDATA F14OnPciRegisterTable; | ||||
|  | ||||
|     #if USES_REGISTER_TABLES == TRUE | ||||
|       CONST REGISTER_TABLE ROMDATA * CONST F14OnRegisterTables[] = | ||||
|       { | ||||
|         #if BASE_FAMILY_PCI == TRUE | ||||
|           &F14PciRegisterTable, | ||||
|         #endif | ||||
|         #if BASE_FAMILY_PCI == TRUE | ||||
|           &F14PerCorePciRegisterTable, | ||||
|         #endif | ||||
|         #if BASE_FAMILY_MSR == TRUE | ||||
|           &F14MsrRegisterTable, | ||||
|           #if OPTION_EARLY_SAMPLES == TRUE | ||||
|             &F14EarlySampleMsrRegisterTable, | ||||
|           #endif | ||||
|         #endif | ||||
|         #if MODEL_SPECIFIC_PCI == TRUE | ||||
|           &F14OnPciRegisterTable, | ||||
|         #endif | ||||
|         // the end. | ||||
|         NULL | ||||
|       }; | ||||
|     #endif | ||||
|  | ||||
|     #if USES_REGISTER_TABLES == TRUE | ||||
|       CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F14OnTableEntryTypeDescriptors[] = | ||||
|       { | ||||
|         {MsrRegister, SetRegisterForMsrEntry}, | ||||
|         {PciRegister, SetRegisterForPciEntry}, | ||||
|         {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry}, | ||||
|         // End | ||||
|         {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid} | ||||
|       }; | ||||
|     #endif | ||||
|  | ||||
|     CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF14OnServices = | ||||
|     { | ||||
|       0, | ||||
|       #if DISABLE_PSTATE == TRUE | ||||
|         F14DisablePstate, | ||||
|       #else | ||||
|         (PF_CPU_DISABLE_PSTATE) CommonAssert, | ||||
|       #endif | ||||
|       #if TRANSITION_PSTATE == TRUE | ||||
|         F14TransitionPstate, | ||||
|       #else | ||||
|         (PF_CPU_TRANSITION_PSTATE) CommonAssert, | ||||
|       #endif | ||||
|       #if PROC_IDD_MAX == TRUE | ||||
|         F14GetProcIddMax, | ||||
|       #else | ||||
|         (PF_CPU_GET_IDD_MAX) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_TSC_RATE == TRUE | ||||
|         F14GetTscRate, | ||||
|       #else | ||||
|         (PF_CPU_GET_TSC_RATE) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_NB_FREQ == TRUE | ||||
|         F14GetCurrentNbFrequency, | ||||
|       #else | ||||
|         (PF_CPU_GET_NB_FREQ) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_NB_FREQ == TRUE | ||||
|         F14GetNbPstateInfo, | ||||
|       #else | ||||
|         (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert, | ||||
|       #endif | ||||
|       #if IS_NBCOF_INIT_NEEDED == TRUE | ||||
|         F14GetNbCofVidUpdate, | ||||
|       #else | ||||
|         (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert, | ||||
|       #endif | ||||
|       #if AP_INITIAL_LAUNCH == TRUE | ||||
|         F14LaunchApCore, | ||||
|       #else | ||||
|         (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert, | ||||
|       #endif | ||||
|       #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE) | ||||
|         F14GetNumberOfCoresForBrandstring, | ||||
|       #else | ||||
|         (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_AP_MAILBOX_FROM_HW == TRUE | ||||
|         F14GetApMailboxFromHardware, | ||||
|       #else | ||||
|         (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert, | ||||
|       #endif | ||||
|       #if SET_AP_CORE_NUMBER == TRUE | ||||
|         (PF_CPU_SET_AP_CORE_NUMBER) CommonVoid, | ||||
|       #else | ||||
|         (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_AP_CORE_NUMBER == TRUE | ||||
|         F14GetApCoreNumber, | ||||
|       #else | ||||
|         (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert, | ||||
|       #endif | ||||
|       #if TRANSFER_AP_CORE_NUMBER == TRUE | ||||
|         (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonVoid, | ||||
|       #else | ||||
|         (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert, | ||||
|       #endif | ||||
|       #if ID_POSITION_INITIAL_APICID == TRUE | ||||
|         F14CpuAmdCoreIdPositionInInitialApicId, | ||||
|       #else | ||||
|         (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert, | ||||
|       #endif | ||||
|       #if SAVE_FEATURES == TRUE | ||||
|         (PF_CPU_SAVE_FEATURES) CommonVoid, | ||||
|       #else | ||||
|         (PF_CPU_SAVE_FEATURES) CommonAssert, | ||||
|       #endif | ||||
|       #if WRITE_FEATURES == TRUE | ||||
|         (PF_CPU_WRITE_FEATURES) CommonVoid, | ||||
|       #else | ||||
|         (PF_CPU_WRITE_FEATURES) CommonAssert, | ||||
|       #endif | ||||
|       #if SET_WARM_RESET_FLAG == TRUE | ||||
|         F14SetAgesaWarmResetFlag, | ||||
|       #else | ||||
|         (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_WARM_RESET_FLAG == TRUE | ||||
|         F14GetAgesaWarmResetFlag, | ||||
|       #else | ||||
|         (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert, | ||||
|       #endif | ||||
|       #if BRAND_STRING1 == TRUE | ||||
|         GetF14BrandIdString1, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if BRAND_STRING2 == TRUE | ||||
|         GetF14BrandIdString2, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_PATCHES == TRUE | ||||
|         GetF14OnMicroCodePatchesStruct, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE | ||||
|         GetF14OnMicrocodeEquivalenceTable, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_CACHE_INFO == TRUE | ||||
|         GetF14CacheInfo, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_SYSTEM_PM_TABLE == TRUE | ||||
|         GetF14SysPmTable, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_WHEA_INIT == TRUE | ||||
|         GetF14WheaInitData, | ||||
|       #else | ||||
|         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|       #endif | ||||
|       #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE | ||||
|         F14GetPlatformTypeSpecificInfo, | ||||
|       #else | ||||
|         (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert, | ||||
|       #endif | ||||
|       #if IS_NB_PSTATE_ENABLED == TRUE | ||||
|         F14IsNbPstateEnabled, | ||||
|       #else | ||||
|         (PF_IS_NB_PSTATE_ENABLED) CommonAssert, | ||||
|       #endif | ||||
|       #if (BASE_FAMILY_HT_PCI == TRUE) | ||||
|         (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse, | ||||
|       #else | ||||
|         (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse, | ||||
|       #endif | ||||
|       #if (BASE_FAMILY_HT_PCI == TRUE) | ||||
|         (PF_SET_HT_PHY_REGISTER) CommonVoid, | ||||
|       #else | ||||
|         (PF_SET_HT_PHY_REGISTER) CommonAssert, | ||||
|       #endif | ||||
|       #if BASE_FAMILY_PCI == TRUE | ||||
|         (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse, | ||||
|       #else | ||||
|         (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse, | ||||
|       #endif | ||||
|       #if USES_REGISTER_TABLES == TRUE | ||||
|         (REGISTER_TABLE **) F14OnRegisterTables, | ||||
|       #else | ||||
|         NULL, | ||||
|       #endif | ||||
|       #if USES_REGISTER_TABLES == TRUE | ||||
|         (TABLE_ENTRY_TYPE_DESCRIPTOR *) F14OnTableEntryTypeDescriptors, | ||||
|       #else | ||||
|         NULL, | ||||
|       #endif | ||||
|       #if MODEL_SPECIFIC_HT_PCI == TRUE | ||||
|         NULL, | ||||
|       #else | ||||
|         NULL, | ||||
|       #endif | ||||
|       NULL, | ||||
|       InitCacheDisabled, | ||||
|       #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|         GetF14OnEarlyInitOnCoreTable | ||||
|       #else | ||||
|         (PF_GET_EARLY_INIT_TABLE) CommonVoid | ||||
|       #endif | ||||
|     }; | ||||
|  | ||||
|     #define ON_SOCKETS 1 | ||||
|     #define ON_MODULES 1 | ||||
|     #define ON_RECOVERY_SOCKETS 1 | ||||
|     #define ON_RECOVERY_MODULES 1 | ||||
|     extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF14OnLogicalIdAndRev; | ||||
|     #define OPT_F14_ON_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF14OnLogicalIdAndRev, | ||||
|     #ifndef ADVCFG_PLATFORM_SOCKETS | ||||
|       #define ADVCFG_PLATFORM_SOCKETS ON_SOCKETS | ||||
|     #else | ||||
|       #if ADVCFG_PLATFORM_SOCKETS < ON_SOCKETS | ||||
|         #undef ADVCFG_PLATFORM_SOCKETS | ||||
|         #define ADVCFG_PLATFORM_SOCKETS ON_SOCKETS | ||||
|       #endif | ||||
|     #endif | ||||
|     #ifndef ADVCFG_PLATFORM_MODULES | ||||
|       #define ADVCFG_PLATFORM_MODULES ON_MODULES | ||||
|     #else | ||||
|       #if ADVCFG_PLATFORM_MODULES < ON_MODULES | ||||
|         #undef ADVCFG_PLATFORM_MODULES | ||||
|         #define ADVCFG_PLATFORM_MODULES ON_MODULES | ||||
|       #endif | ||||
|     #endif | ||||
|  | ||||
|     #if GET_PATCHES == TRUE | ||||
|       #define F14_ON_UCODE_0B | ||||
|       #define F14_ON_UCODE_1A | ||||
|       #define F14_ON_UCODE_29 | ||||
|       #define F14_ON_UCODE_119 | ||||
|  | ||||
|       #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|         #if OPTION_EARLY_SAMPLES == TRUE | ||||
|           extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch0500000B; | ||||
|           #undef F14_ON_UCODE_0B | ||||
|           #define F14_ON_UCODE_0B &CpuF14MicrocodePatch0500000B, | ||||
|  | ||||
|           extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch0500001A; | ||||
|           #undef F14_ON_UCODE_1A | ||||
|           #define F14_ON_UCODE_1A &CpuF14MicrocodePatch0500001A, | ||||
|         #endif | ||||
|         extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch05000029; | ||||
|         #undef F14_ON_UCODE_29 | ||||
|         #define F14_ON_UCODE_29 &CpuF14MicrocodePatch05000029, | ||||
|  | ||||
| 	extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch05000119; | ||||
|         #undef F14_ON_UCODE_119 | ||||
|         #define F14_ON_UCODE_119 &CpuF14MicrocodePatch05000119, | ||||
|       #endif | ||||
|  | ||||
|       CONST MICROCODE_PATCHES ROMDATA * CONST CpuF14OnMicroCodePatchArray[] = | ||||
|       { | ||||
|         F14_ON_UCODE_119 | ||||
|         F14_ON_UCODE_29 | ||||
|         F14_ON_UCODE_0B | ||||
|         F14_ON_UCODE_1A | ||||
|         NULL | ||||
|       }; | ||||
|  | ||||
|       CONST UINT8 ROMDATA CpuF14OnNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF14OnMicroCodePatchArray) / sizeof (CpuF14OnMicroCodePatchArray[0])) - 1); | ||||
|     #endif | ||||
|  | ||||
|     #if OPTION_EARLY_SAMPLES == TRUE | ||||
|       extern F_F14_ES_GET_EARLY_INIT_TABLE GetF14OnEarlySampleEarlyInitTable; | ||||
|       extern F_F14_ES_NB_PSTATE_INIT F14NbPstateInitEarlySampleHook; | ||||
|       extern F_F14_ES_POWER_PLANE_INIT F14PowerPlaneInitEarlySampleHook; | ||||
|  | ||||
|       CONST F14_ES_CORE_SUPPORT ROMDATA F14EarlySampleCoreSupport = | ||||
|       { | ||||
|         #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|           GetF14OnEarlySampleEarlyInitTable, | ||||
|           F14PowerPlaneInitEarlySampleHook, | ||||
|         #else | ||||
|           (PF_F14_ES_GET_EARLY_INIT_TABLE) CommonAssert, | ||||
|           (PF_F14_ES_POWER_PLANE_INIT) CommonAssert, | ||||
|         #endif | ||||
|         #if (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) | ||||
|           F14NbPstateInitEarlySampleHook | ||||
|         #else | ||||
|           (PF_F14_ES_NB_PSTATE_INIT) CommonAssert | ||||
|         #endif | ||||
|       }; | ||||
|     #else | ||||
|       CONST F14_ES_CORE_SUPPORT ROMDATA F14EarlySampleCoreSupport = | ||||
|       { | ||||
|         #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|           (PF_F14_ES_GET_EARLY_INIT_TABLE) CommonVoid, | ||||
|           (PF_F14_ES_POWER_PLANE_INIT) CommonVoid, | ||||
|         #else | ||||
|           (PF_F14_ES_GET_EARLY_INIT_TABLE) CommonAssert, | ||||
|           (PF_F14_ES_POWER_PLANE_INIT) CommonAssert, | ||||
|         #endif | ||||
|         #if (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) | ||||
|           (PF_F14_ES_NB_PSTATE_INIT) CommonVoid | ||||
|         #else | ||||
|           (PF_F14_ES_NB_PSTATE_INIT) CommonAssert | ||||
|         #endif | ||||
|       }; | ||||
|     #endif | ||||
|  | ||||
|     #define OPT_F14_ON_CPU {AMD_FAMILY_14_ON, &cpuF14OnServices}, | ||||
|   #else  //  OPTION_FAMILY14H_ON == TRUE | ||||
|     #define OPT_F14_ON_CPU | ||||
|     #define OPT_F14_ON_ID | ||||
|   #endif  //  OPTION_FAMILY14H_ON == TRUE | ||||
| #else  //  defined (OPTION_FAMILY14H_ON) | ||||
|   #define OPT_F14_ON_CPU | ||||
|   #define OPT_F14_ON_ID | ||||
| #endif  //  defined (OPTION_FAMILY14H_ON) | ||||
|  | ||||
| /* | ||||
|  * Install unknown family 14h support | ||||
|  */ | ||||
|  | ||||
| #if USES_REGISTER_TABLES == TRUE | ||||
|   CONST REGISTER_TABLE ROMDATA * CONST F14UnknownRegisterTables[] = | ||||
|   { | ||||
|     #if BASE_FAMILY_PCI == TRUE | ||||
|       &F14PciRegisterTable, | ||||
|     #endif | ||||
|     #if BASE_FAMILY_PCI == TRUE | ||||
|       &F14PerCorePciRegisterTable, | ||||
|     #endif | ||||
|     #if BASE_FAMILY_MSR == TRUE | ||||
|       &F14MsrRegisterTable, | ||||
|     #endif | ||||
|     // the end. | ||||
|     NULL | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #if USES_REGISTER_TABLES == TRUE | ||||
|   CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F14UnknownTableEntryTypeDescriptors[] = | ||||
|   { | ||||
|     {MsrRegister, SetRegisterForMsrEntry}, | ||||
|     {PciRegister, SetRegisterForPciEntry}, | ||||
|     {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry}, | ||||
|     // End | ||||
|     {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid} | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF14UnknownServices = | ||||
| { | ||||
|   0, | ||||
|   #if DISABLE_PSTATE == TRUE | ||||
|     F14DisablePstate, | ||||
|   #else | ||||
|     (PF_CPU_DISABLE_PSTATE) CommonAssert, | ||||
|   #endif | ||||
|   #if TRANSITION_PSTATE == TRUE | ||||
|     F14TransitionPstate, | ||||
|   #else | ||||
|     (PF_CPU_TRANSITION_PSTATE) CommonAssert, | ||||
|   #endif | ||||
|   #if PROC_IDD_MAX == TRUE | ||||
|     (PF_CPU_GET_IDD_MAX) F14GetProcIddMax, | ||||
|   #else | ||||
|     (PF_CPU_GET_IDD_MAX) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_TSC_RATE == TRUE | ||||
|     F14GetTscRate, | ||||
|   #else | ||||
|     (PF_CPU_GET_TSC_RATE) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_NB_FREQ == TRUE | ||||
|     F14GetCurrentNbFrequency, | ||||
|   #else | ||||
|     (PF_CPU_GET_NB_FREQ) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_NB_FREQ == TRUE | ||||
|     F14GetNbPstateInfo, | ||||
|   #else | ||||
|     (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert, | ||||
|   #endif | ||||
|   #if IS_NBCOF_INIT_NEEDED == TRUE | ||||
|     F14GetNbCofVidUpdate, | ||||
|   #else | ||||
|     (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert, | ||||
|   #endif | ||||
|   #if AP_INITIAL_LAUNCH == TRUE | ||||
|     F14LaunchApCore, | ||||
|   #else | ||||
|     (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert, | ||||
|   #endif | ||||
|   #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE) | ||||
|     F14GetNumberOfCoresForBrandstring, | ||||
|   #else | ||||
|     (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_AP_MAILBOX_FROM_HW == TRUE | ||||
|     F14GetApMailboxFromHardware, | ||||
|   #else | ||||
|     (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert, | ||||
|   #endif | ||||
|   #if SET_AP_CORE_NUMBER == TRUE | ||||
|     (PF_CPU_SET_AP_CORE_NUMBER) CommonVoid, | ||||
|   #else | ||||
|     (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_AP_CORE_NUMBER == TRUE | ||||
|     F14GetApCoreNumber, | ||||
|   #else | ||||
|     (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert, | ||||
|   #endif | ||||
|   #if TRANSFER_AP_CORE_NUMBER == TRUE | ||||
|     (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonVoid, | ||||
|   #else | ||||
|     (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert, | ||||
|   #endif | ||||
|   #if ID_POSITION_INITIAL_APICID == TRUE | ||||
|     F14CpuAmdCoreIdPositionInInitialApicId, | ||||
|   #else | ||||
|     (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert, | ||||
|   #endif | ||||
|   #if SAVE_FEATURES == TRUE | ||||
|     (PF_CPU_SAVE_FEATURES) CommonVoid, | ||||
|   #else | ||||
|     (PF_CPU_SAVE_FEATURES) CommonAssert, | ||||
|   #endif | ||||
|   #if WRITE_FEATURES == TRUE | ||||
|     (PF_CPU_WRITE_FEATURES) CommonVoid, | ||||
|   #else | ||||
|     (PF_CPU_WRITE_FEATURES) CommonAssert, | ||||
|   #endif | ||||
|   #if SET_WARM_RESET_FLAG == TRUE | ||||
|     F14SetAgesaWarmResetFlag, | ||||
|   #else | ||||
|     (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_WARM_RESET_FLAG == TRUE | ||||
|     F14GetAgesaWarmResetFlag, | ||||
|   #else | ||||
|     (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert, | ||||
|   #endif | ||||
|   #if BRAND_STRING1 == TRUE | ||||
|     GetF14BrandIdString1, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if BRAND_STRING2 == TRUE | ||||
|     GetF14BrandIdString2, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_PATCHES == TRUE | ||||
|     GetEmptyArray, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE | ||||
|     GetEmptyArray, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_CACHE_INFO == TRUE | ||||
|     GetF14CacheInfo, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_SYSTEM_PM_TABLE == TRUE | ||||
|     GetF14SysPmTable, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_WHEA_INIT == TRUE | ||||
|     GetF14WheaInitData, | ||||
|   #else | ||||
|     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert, | ||||
|   #endif | ||||
|   #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE | ||||
|     F14GetPlatformTypeSpecificInfo, | ||||
|   #else | ||||
|     (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert, | ||||
|   #endif | ||||
|   #if IS_NB_PSTATE_ENABLED == TRUE | ||||
|     F14IsNbPstateEnabled, | ||||
|   #else | ||||
|     (PF_IS_NB_PSTATE_ENABLED) CommonAssert, | ||||
|   #endif | ||||
|   #if (BASE_FAMILY_HT_PCI == TRUE) | ||||
|     (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse, | ||||
|   #else | ||||
|     (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonVoid, | ||||
|   #endif | ||||
|   #if (BASE_FAMILY_HT_PCI == TRUE) | ||||
|     (PF_SET_HT_PHY_REGISTER) CommonVoid, | ||||
|   #else | ||||
|     (PF_SET_HT_PHY_REGISTER) CommonVoid, | ||||
|   #endif | ||||
|   #if BASE_FAMILY_PCI == TRUE | ||||
|     (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse, | ||||
|   #else | ||||
|     (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse, | ||||
|   #endif | ||||
|   #if USES_REGISTER_TABLES == TRUE | ||||
|     (REGISTER_TABLE **) F14UnknownRegisterTables, | ||||
|   #else | ||||
|     NULL, | ||||
|   #endif | ||||
|   #if USES_REGISTER_TABLES == TRUE | ||||
|     (TABLE_ENTRY_TYPE_DESCRIPTOR *) F14UnknownTableEntryTypeDescriptors, | ||||
|   #else | ||||
|     NULL, | ||||
|   #endif | ||||
|   #if MODEL_SPECIFIC_HT_PCI == TRUE | ||||
|     NULL, | ||||
|   #else | ||||
|     NULL, | ||||
|   #endif | ||||
|   NULL, | ||||
|   InitCacheDisabled, | ||||
|   #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|     GetF14OnEarlyInitOnCoreTable | ||||
|   #else | ||||
|     (PF_GET_EARLY_INIT_TABLE) CommonVoid | ||||
|   #endif | ||||
| }; | ||||
|  | ||||
|  // Family 14h maximum base address is 40 bits. Limit BLDCFG to 40 bits, if appropriate. | ||||
| #if (FAMILY_MMIO_BASE_MASK < 0xFFFFFF0000000000ull) | ||||
|   #undef  FAMILY_MMIO_BASE_MASK | ||||
|   #define FAMILY_MMIO_BASE_MASK (0xFFFFFF0000000000ull) | ||||
| #endif | ||||
|  | ||||
| #undef OPT_F14_ID_TABLE | ||||
| #define OPT_F14_ID_TABLE {0x14, {AMD_FAMILY_14, AMD_F14_UNKNOWN}, F14LogicalIdTable, (sizeof (F14LogicalIdTable) / sizeof (F14LogicalIdTable[0]))}, | ||||
| #define OPT_F14_UNKNOWN_CPU {AMD_FAMILY_14, &cpuF14UnknownServices}, | ||||
|  | ||||
| #undef OPT_F14_TABLE | ||||
| #define OPT_F14_TABLE   OPT_F14_ON_CPU  OPT_F14_UNKNOWN_CPU | ||||
|  | ||||
| #if OPTION_FT1_SOCKET_SUPPORT == TRUE | ||||
|   extern CONST CPU_BRAND_TABLE ROMDATA F14OnBrandIdString1ArrayFt1; | ||||
|   extern CONST CPU_BRAND_TABLE ROMDATA F14OnBrandIdString2ArrayFt1; | ||||
|   #define F14_FT1_BRANDSTRING1 &F14OnBrandIdString1ArrayFt1, | ||||
|   #define F14_FT1_BRANDSTRING2 &F14OnBrandIdString2ArrayFt1, | ||||
| #else | ||||
|   #define F14_FT1_BRANDSTRING1 | ||||
|   #define F14_FT1_BRANDSTRING2 | ||||
| #endif | ||||
|  | ||||
| #if BRAND_STRING1 == TRUE | ||||
|   CONST CPU_BRAND_TABLE ROMDATA * CONST F14BrandIdString1Tables[] = | ||||
|   { | ||||
|     F14_FT1_BRANDSTRING1 | ||||
|   }; | ||||
|  | ||||
|   CONST UINT8 F14BrandIdString1TableCount = (sizeof (F14BrandIdString1Tables) / sizeof (F14BrandIdString1Tables[0])); | ||||
| #endif | ||||
|  | ||||
| #if BRAND_STRING2 == TRUE | ||||
|   CONST CPU_BRAND_TABLE ROMDATA *CONST F14BrandIdString2Tables[] = | ||||
|   { | ||||
|     F14_FT1_BRANDSTRING2 | ||||
|   }; | ||||
|  | ||||
|   CONST UINT8 F14BrandIdString2TableCount = (sizeof (F14BrandIdString2Tables) / sizeof (F14BrandIdString2Tables[0])); | ||||
| #endif | ||||
|  | ||||
| CONST PF_CPU_GET_SUBFAMILY_ID_ARRAY ROMDATA F14LogicalIdTable[] = | ||||
| { | ||||
|   OPT_F14_ON_ID | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_FAMILY_14H_INSTALL_H_ | ||||
| @@ -1,53 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: GfxRecovery | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _OPTION_GFX_RECOVERY_INSTALL_H_ | ||||
| #define _OPTION_GFX_RECOVERY_INSTALL_H_ | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_GFX_RECOVERY_INSTALL_H_ | ||||
| @@ -1,490 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: GNB | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 44325 $   @e \$Date: 2010-12-22 03:29:53 -0700 (Wed, 22 Dec 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_GNB_INSTALL_H_ | ||||
| #define _OPTION_GNB_INSTALL_H_ | ||||
|  | ||||
| #include "S3SaveState.h" | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
|  | ||||
| #define GNB_TYPE_LN FALSE | ||||
| #define GNB_TYPE_ON OPTION_FAMILY14H | ||||
| #define GNB_TYPE_KR FALSE | ||||
| #define GNB_TYPE_TN FALSE | ||||
|  | ||||
| #include "Gnb.h" | ||||
| #include "GnbPcie.h" | ||||
|  | ||||
| #ifndef CFG_IGFX_AS_PCIE_EP | ||||
|   #define CFG_IGFX_AS_PCIE_EP     TRUE | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_LCLK_DEEP_SLEEP_EN | ||||
|   #if (GNB_TYPE_ON == TRUE) | ||||
|     #define  CFG_LCLK_DEEP_SLEEP_EN   TRUE | ||||
|   #else | ||||
|     #define  CFG_LCLK_DEEP_SLEEP_EN   FALSE | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_LCLK_DPM_EN | ||||
|   #if (GNB_TYPE_ON == TRUE) | ||||
|     #define CFG_LCLK_DPM_EN          TRUE | ||||
|   #else | ||||
|     #define CFG_LCLK_DPM_EN          FALSE | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_GMC_POWER_GATE_STUTTER_ONLY | ||||
|   #define CFG_GMC_POWER_GATE_STUTTER_ONLY     FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_SMU_SCLK_CLOCK_GATING_ENABLE | ||||
|   #if (GNB_TYPE_ON == TRUE) | ||||
|     #define  CFG_SMU_SCLK_CLOCK_GATING_ENABLE   TRUE | ||||
|   #else | ||||
|     #define CFG_SMU_SCLK_CLOCK_GATING_ENABLE   FALSE | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_PCIE_ASPM_BLACK_LIST_ENABLE | ||||
|   #define CFG_PCIE_ASPM_BLACK_LIST_ENABLE     TRUE | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_GNB_PCIE_LINK_RECEIVER_DETECTION_POOLING | ||||
|   #define CFG_GNB_PCIE_LINK_RECEIVER_DETECTION_POOLING  (60 * 1000) | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_GNB_PCIE_LINK_L0_POOLING | ||||
|   #define CFG_GNB_PCIE_LINK_L0_POOLING                  (60 * 1000) | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_GNB_PCIE_LINK_GPIO_RESET_ASSERT_TIME | ||||
|   #define CFG_GNB_PCIE_LINK_GPIO_RESET_ASSERT_TIME      (2 * 1000) | ||||
| #endif | ||||
|  | ||||
| #ifndef CFG_GNB_PCIE_LINK_RESET_TO_TRAINING_TIME | ||||
|   #define CFG_GNB_PCIE_LINK_RESET_TO_TRAINING_TIME      (2 * 1000) | ||||
| #endif | ||||
|  | ||||
| #ifdef BLDCFG_PCIE_TRAINING_ALGORITHM | ||||
|   #define CFG_GNB_PCIE_TRAINING_ALGORITHM               BLDCFG_PCIE_TRAINING_ALGORITHM | ||||
| #else | ||||
|   #define CFG_GNB_PCIE_TRAINING_ALGORITHM               PcieTrainingStandard | ||||
| #endif | ||||
|  | ||||
| CONST GNB_BUILD_OPTIONS  GnbBuildOptions = { | ||||
|   CFG_IGFX_AS_PCIE_EP, | ||||
|   CFG_LCLK_DEEP_SLEEP_EN, | ||||
|   CFG_LCLK_DPM_EN, | ||||
|   CFG_GMC_POWER_GATE_STUTTER_ONLY, | ||||
|   CFG_SMU_SCLK_CLOCK_GATING_ENABLE, | ||||
|   CFG_PCIE_ASPM_BLACK_LIST_ENABLE, | ||||
|   CFG_GNB_PCIE_LINK_RECEIVER_DETECTION_POOLING, | ||||
|   CFG_GNB_PCIE_LINK_L0_POOLING, | ||||
|   CFG_GNB_PCIE_LINK_GPIO_RESET_ASSERT_TIME, | ||||
|   CFG_GNB_PCIE_LINK_RESET_TO_TRAINING_TIME, | ||||
|   CFG_GNB_PCIE_TRAINING_ALGORITHM | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_EARLY == TRUE) | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_NB_EARLY_INIT | ||||
|     #define OPTION_NB_EARLY_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_NB_EARLY_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                NbInitAtEarly; | ||||
|     #define OPTION_NBINITATEARLY_ENTRY                {AMD_FAMILY_LN | AMD_FAMILY_ON, NbInitAtEarly}, | ||||
|   #else | ||||
|     #define OPTION_NBINITATEARLY_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
| // SMU init | ||||
|   #ifndef OPTION_SMU | ||||
|     #define OPTION_SMU  TRUE | ||||
|   #endif | ||||
|   #if (OPTION_SMU == TRUE) && (GNB_TYPE_LN == TRUE) | ||||
|     OPTION_GNB_FEATURE                                F12NbSmuInitFeature; | ||||
|     #define OPTION_F12NBSMUINITFEATURE_ENTRY          {AMD_FAMILY_LN, F12NbSmuInitFeature}, | ||||
|   #else | ||||
|     #define OPTION_F12NBSMUINITFEATURE_ENTRY | ||||
|   #endif | ||||
|   #if (OPTION_SMU == TRUE) && (GNB_TYPE_ON == TRUE) | ||||
|     OPTION_GNB_FEATURE                                F14NbSmuInitFeature; | ||||
|     #define OPTION_F14NBSMUINITFEATURE_ENTRY          {AMD_FAMILY_ON, F14NbSmuInitFeature}, | ||||
|   #else | ||||
|     #define OPTION_F14NBSMUINITFEATURE_ENTRY | ||||
|   #endif | ||||
|   #if (OPTION_SMU == TRUE) && (GNB_TYPE_KR == TRUE) | ||||
|     OPTION_GNB_FEATURE                                KRNbSmuInitFeature; | ||||
|     #define OPTION_KRNBSMUINITFEATURE_ENTRY          {AMD_FAMILY_KR, KRNbSmuInitFeature}, | ||||
|   #else | ||||
|     #define OPTION_KRNBSMUINITFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIE_CONFIG_INIT | ||||
|     #define OPTION_PCIE_CONFIG_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIE_CONFIG_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE  ) | ||||
|     OPTION_GNB_FEATURE                                  PcieConfigurationInit; | ||||
|     #define OPTION_PCIECONFIGURATIONINIT_ENTRY          {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieConfigurationInit}, | ||||
|   #else | ||||
|     #define OPTION_PCIECONFIGURATIONINIT_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIE_EARLY_INIT | ||||
|     #define OPTION_PCIE_EARLY_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIE_EARLY_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                   PcieInitAtEarly; | ||||
|     #define OPTION_PCIEINITATEARLY_ENTRY                 {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieInitAtEarly}, | ||||
|   #else | ||||
|     #define  OPTION_PCIEINITATEARLY_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   CONST OPTION_GNB_CONFIGURATION  GnbEarlyFeatureTable[] = { | ||||
|     OPTION_NBINITATEARLY_ENTRY | ||||
|     OPTION_F12NBSMUINITFEATURE_ENTRY | ||||
|     OPTION_F14NBSMUINITFEATURE_ENTRY | ||||
|     OPTION_KRNBSMUINITFEATURE_ENTRY | ||||
|     OPTION_PCIECONFIGURATIONINIT_ENTRY | ||||
|     OPTION_PCIEINITATEARLY_ENTRY | ||||
|     {0, NULL} | ||||
|   }; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_POST == TRUE) | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_GFX_CONFIG_POST_INIT | ||||
|     #define OPTION_GFX_CONFIG_POST_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_GFX_CONFIG_POST_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE  ) | ||||
|     OPTION_GNB_FEATURE                                   GfxConfigPostInterface; | ||||
|     #define OPTION_GFXCONFIGPOSTINTERFACE_ENTRY          {AMD_FAMILY_LN | AMD_FAMILY_ON, GfxConfigPostInterface}, | ||||
|   #else | ||||
|     #define  OPTION_GFXCONFIGPOSTINTERFACE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_GFX_POST_INIT | ||||
|     #define OPTION_GFX_POST_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_GFX_POST_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                   GfxInitAtPost; | ||||
|     #define OPTION_GFXINITATPOST_ENTRY                   {AMD_FAMILY_LN | AMD_FAMILY_ON, GfxInitAtPost}, | ||||
|   #else | ||||
|    #define  OPTION_GFXINITATPOST_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_NB_POST_INIT | ||||
|     #define OPTION_NB_POST_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_NB_POST_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  NbInitAtPost; | ||||
|     #define OPTION_NBINITATPOST_ENTRY                   {AMD_FAMILY_LN | AMD_FAMILY_ON, NbInitAtPost}, | ||||
|   #else | ||||
|     #define OPTION_NBINITATPOST_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIE_POST_EALRY_INIT | ||||
|     #define OPTION_PCIE_POST_EALRY_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIE_POST_EALRY_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  PcieInitAtPostEarly; | ||||
|     #define OPTION_PCIEINITATPOSTEARLY_ENTRY            {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieInitAtPostEarly}, | ||||
|   #else | ||||
|     #define OPTION_PCIEINITATPOSTEARLY_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIE_POST_INIT | ||||
|     #define OPTION_PCIE_POST_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIE_POST_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  PcieInitAtPost; | ||||
|     #define OPTION_PCIEINITATPOST_ENTRY                 {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieInitAtPost}, | ||||
|   #else | ||||
|     #define OPTION_PCIEINITATPOST_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   CONST OPTION_GNB_CONFIGURATION  GnbPostFeatureTable[] = { | ||||
|     OPTION_PCIEINITATPOSTEARLY_ENTRY | ||||
|     OPTION_GFXCONFIGPOSTINTERFACE_ENTRY | ||||
|     OPTION_GFXINITATPOST_ENTRY | ||||
|     {0, NULL} | ||||
|   }; | ||||
|  | ||||
|   CONST OPTION_GNB_CONFIGURATION  GnbPostAfterDramFeatureTable[] = { | ||||
|     OPTION_NBINITATPOST_ENTRY | ||||
|     OPTION_PCIEINITATPOST_ENTRY | ||||
|     {0, NULL} | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_ENV == TRUE) | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_FUSE_TABLE_INIT | ||||
|     #define OPTION_FUSE_TABLE_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_FUSE_TABLE_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  NbFuseTableFeature; | ||||
|     #define OPTION_NBFUSETABLEFEATURE_ENTRY             {AMD_FAMILY_LN | AMD_FAMILY_ON, NbFuseTableFeature}, | ||||
|   #else | ||||
|     #define OPTION_NBFUSETABLEFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_NB_ENV_INIT | ||||
|     #define OPTION_NB_ENV_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_NB_ENV_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  NbInitAtEnv; | ||||
|     #define OPTION_NBINITATENVT_ENTRY                   {AMD_FAMILY_LN | AMD_FAMILY_ON, NbInitAtEnv}, | ||||
|   #else | ||||
|     #define OPTION_NBINITATENVT_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_GFX_CONFIG_ENV_INIT | ||||
|     #define OPTION_GFX_CONFIG_ENV_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_GFX_CONFIG_ENV_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE  ) | ||||
|     OPTION_GNB_FEATURE                                   GfxConfigEnvInterface; | ||||
|     #define OPTION_GFXCONFIGENVINTERFACE_ENTRY           {AMD_FAMILY_LN | AMD_FAMILY_ON, GfxConfigEnvInterface}, | ||||
|   #else | ||||
|     #define  OPTION_GFXCONFIGENVINTERFACE_ENTRY | ||||
|   #endif | ||||
|  | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_GFX_ENV_INIT | ||||
|     #define OPTION_GFX_ENV_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_GFX_ENV_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  GfxInitAtEnvPost; | ||||
|     #define OPTION_GFXINITATENVPOST_ENTRY               {AMD_FAMILY_LN | AMD_FAMILY_ON, GfxInitAtEnvPost}, | ||||
|   #else | ||||
|     #define OPTION_GFXINITATENVPOST_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_POWER_GATE | ||||
|     #define OPTION_POWER_GATE TRUE | ||||
|   #endif | ||||
|   #if (OPTION_POWER_GATE == TRUE) && (GNB_TYPE_LN == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  F12NbPowerGateFeature; | ||||
|     #define OPTION_F12NBPOWERGATEFEATURE_ENTRY          {AMD_FAMILY_LN, F12NbPowerGateFeature}, | ||||
|   #else | ||||
|     #define OPTION_F12NBPOWERGATEFEATURE_ENTRY | ||||
|   #endif | ||||
|   #if (OPTION_POWER_GATE == TRUE) && (GNB_TYPE_ON == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  F14NbPowerGateFeature; | ||||
|     #define OPTION_F14NBPOWERGATEFEATURE_ENTRY          {AMD_FAMILY_ON, F14NbPowerGateFeature}, | ||||
|   #else | ||||
|     #define OPTION_F14NBPOWERGATEFEATURE_ENTRY | ||||
|   #endif | ||||
|   #if (OPTION_POWER_GATE == TRUE) && (GNB_TYPE_KR == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  KRNbPowerGateFeature; | ||||
|     #define OPTION_KRNBPOWERGATEFEATURE_ENTRY           {AMD_FAMILY_KR, KRNbPowerGateFeature}, | ||||
|   #else | ||||
|     #define OPTION_KRNBPOWERGATEFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIE_ENV_INIT | ||||
|     #define OPTION_PCIE_ENV_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIE_ENV_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  PcieInitAtEnv; | ||||
|     #define OPTION_PCIEINITATENV_ENTRY                  {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieInitAtEnv}, | ||||
|   #else | ||||
|     #define OPTION_PCIEINITATENV_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|  | ||||
|   CONST OPTION_GNB_CONFIGURATION  GnbEnvFeatureTable[] = { | ||||
|     OPTION_NBFUSETABLEFEATURE_ENTRY | ||||
|     OPTION_NBINITATENVT_ENTRY | ||||
|     OPTION_PCIEINITATENV_ENTRY | ||||
|     OPTION_GFXCONFIGENVINTERFACE_ENTRY | ||||
|     OPTION_GFXINITATENVPOST_ENTRY | ||||
|     OPTION_F12NBPOWERGATEFEATURE_ENTRY | ||||
|     OPTION_F14NBPOWERGATEFEATURE_ENTRY | ||||
|     OPTION_KRNBPOWERGATEFEATURE_ENTRY | ||||
|     {0, NULL} | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_MID == TRUE) | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTOIN_GNB_CABLESAFE | ||||
|     #define OPTOIN_GNB_CABLESAFE TRUE | ||||
|   #endif | ||||
|   #if (OPTOIN_GNB_CABLESAFE == TRUE) && (GNB_TYPE_LN == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  GnbCableSafeEntry; | ||||
|     #define OPTION_GNBCABLESAFEENTRY_ENTRY              {AMD_FAMILY_LN, GnbCableSafeEntry}, | ||||
|   #else | ||||
|     #define OPTION_GNBCABLESAFEENTRY_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTOIN_NB_LCLK_NCLK_RATIO | ||||
|     #define OPTOIN_NB_LCLK_NCLK_RATIO TRUE | ||||
|   #endif | ||||
|   #if (OPTOIN_NB_LCLK_NCLK_RATIO == TRUE) && (GNB_TYPE_ON == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  F14NbLclkNclkRatioFeature; | ||||
|     #define OPTION_F14NBLCLKNCLKRATIOFEATURE_ENTRY      {AMD_FAMILY_ON, F14NbLclkNclkRatioFeature}, | ||||
|   #else | ||||
|     #define OPTION_F14NBLCLKNCLKRATIOFEATURE_ENTRY | ||||
|   #endif | ||||
|   #if (OPTOIN_NB_LCLK_NCLK_RATIO == TRUE) && (GNB_TYPE_KR == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  KRNbLclkNclkRatioFeature; | ||||
|     #define OPTION_KRNBLCLKNCLKRATIOFEATURE_ENTRY       {AMD_FAMILY_KR, KRNbLclkNclkRatioFeature}, | ||||
|   #else | ||||
|     #define OPTION_KRNBLCLKNCLKRATIOFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_NB_LCLK_DPM_INIT | ||||
|     #define OPTION_NB_LCLK_DPM_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_NB_LCLK_DPM_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  NbLclkDpmFeature; | ||||
|     #define OPTION_NBLCLKDPMFEATURE_ENTRY               {AMD_FAMILY_LN | AMD_FAMILY_ON, NbLclkDpmFeature}, | ||||
|   #else | ||||
|     #define OPTION_NBLCLKDPMFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIE_POWER_GATE | ||||
|     #define OPTION_PCIE_POWER_GATE TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIE_POWER_GATE == TRUE) && (GNB_TYPE_LN == TRUE) | ||||
|     OPTION_GNB_FEATURE                                  PciePowerGateFeature; | ||||
|     #define OPTION_PCIEPOWERGATEFEATURE_ENTRY           {AMD_FAMILY_LN, PciePowerGateFeature}, | ||||
|   #else | ||||
|     #define OPTION_PCIEPOWERGATEFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_GFX_MID_INIT | ||||
|     #define OPTION_GFX_MID_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_GFX_MID_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  GfxInitAtMidPost; | ||||
|     #define OPTION_GFXINITATMIDPOST_ENTRY               {AMD_FAMILY_LN | AMD_FAMILY_ON, GfxInitAtMidPost}, | ||||
|   #else | ||||
|     #define OPTION_GFXINITATMIDPOST_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_GFX_INTEGRATED_TABLE_INIT | ||||
|     #define OPTION_GFX_INTEGRATED_TABLE_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_GFX_INTEGRATED_TABLE_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                 GfxIntegratedInfoTableEntry; | ||||
|     #define OPTION_GFXINTEGRATEDINFOTABLE_ENTRY        {AMD_FAMILY_LN | AMD_FAMILY_ON, GfxIntegratedInfoTableEntry}, | ||||
|   #else | ||||
|     #define OPTION_GFXINTEGRATEDINFOTABLE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_PCIe_MID_INIT | ||||
|     #define OPTION_PCIe_MID_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_PCIe_MID_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  PcieInitAtMid; | ||||
|     #define OPTION_PCIEINITATMID_ENTRY                  {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieInitAtMid}, | ||||
|   #else | ||||
|     #define OPTION_PCIEINITATMID_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_NB_MID_INIT | ||||
|     #define OPTION_NB_MID_INIT TRUE | ||||
|   #endif | ||||
|   #if (OPTION_NB_MID_INIT == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|     OPTION_GNB_FEATURE                                  NbInitAtLatePost; | ||||
|     #define OPTION_NBINITATLATEPOST_ENTRY               {AMD_FAMILY_LN | AMD_FAMILY_ON, NbInitAtLatePost}, | ||||
|   #else | ||||
|     #define OPTION_NBINITATLATEPOST_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   CONST OPTION_GNB_CONFIGURATION  GnbMidFeatureTable[] = { | ||||
|     OPTION_GFXINITATMIDPOST_ENTRY | ||||
|     OPTION_GFXINTEGRATEDINFOTABLE_ENTRY | ||||
|     OPTION_GNBCABLESAFEENTRY_ENTRY | ||||
|     OPTION_PCIEINITATMID_ENTRY | ||||
|     OPTION_NBINITATLATEPOST_ENTRY | ||||
|     OPTION_F14NBLCLKNCLKRATIOFEATURE_ENTRY | ||||
|     OPTION_KRNBLCLKNCLKRATIOFEATURE_ENTRY | ||||
|     OPTION_NBLCLKDPMFEATURE_ENTRY | ||||
|     OPTION_PCIEPOWERGATEFEATURE_ENTRY | ||||
|     {0, NULL} | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_LATE == TRUE) | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   #ifndef OPTION_ALIB | ||||
|     #define OPTION_ALIB FALSE | ||||
|   #endif | ||||
|   #if (OPTION_ALIB == TRUE) && (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE  ) | ||||
|     OPTION_GNB_FEATURE                                  PcieAlibFeature; | ||||
|     #define OPTION_PCIEALIBFEATURE_ENTRY                {AMD_FAMILY_LN | AMD_FAMILY_ON, PcieAlibFeature}, | ||||
|   #else | ||||
|     #define OPTION_PCIEALIBFEATURE_ENTRY | ||||
|   #endif | ||||
| //--------------------------------------------------------------------------------------------------- | ||||
|   CONST OPTION_GNB_CONFIGURATION  GnbLateFeatureTable[] = { | ||||
|     OPTION_PCIEALIBFEATURE_ENTRY | ||||
|     {0, NULL} | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #if  (GNB_TYPE_LN == TRUE || GNB_TYPE_ON == TRUE ) | ||||
|   S3_DISPATCH_FUNCTION  NbSmuServiceRequestS3Script; | ||||
|   S3_DISPATCH_FUNCTION  PcieLateRestoreS3Script; | ||||
|   S3_DISPATCH_FUNCTION  NbSmuIndirectWriteS3Script; | ||||
|   #define GNB_S3_DISPATCH_FUNCTION_TABLE \ | ||||
|   {S3DispatchGnbSmuIndirectWrite, NbSmuIndirectWriteS3Script}, \ | ||||
|   {S3DispatchGnbSmuServiceRequest, NbSmuServiceRequestS3Script}, \ | ||||
|   {S3DispatchGnbPcieLateRestore, PcieLateRestoreS3Script}, | ||||
| #endif | ||||
|  | ||||
| #endif  // _OPTION_GNB_INSTALL_H_ | ||||
| @@ -1,80 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: HT Assist | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_HT_ASSIST_INSTALL_H_ | ||||
| #define _OPTION_HT_ASSIST_INSTALL_H_ | ||||
|  | ||||
| #include "cpuHtAssist.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_HT_ASSIST_FEAT | ||||
| #define HT_ASSIST_AP_DISABLE_CACHE | ||||
| #define HT_ASSIST_AP_ENABLE_CACHE | ||||
|  | ||||
| #if (OPTION_HT_ASSIST == TRUE || OPTION_ATM_MODE == TRUE) | ||||
|   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_MID == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE) | ||||
|  | ||||
|     CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA HtAssistFamilyServiceArray[] = | ||||
|     { | ||||
|       {0, NULL} | ||||
|     }; | ||||
|     CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA HtAssistFamilyServiceTable = | ||||
|     { | ||||
|       (sizeof (HtAssistFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|       &HtAssistFamilyServiceArray[0] | ||||
|     }; | ||||
|  | ||||
|     #undef HT_ASSIST_AP_DISABLE_CACHE | ||||
|     #define HT_ASSIST_AP_DISABLE_CACHE {AP_LATE_TASK_DISABLE_CACHE, (IMAGE_ENTRY) DisableAllCaches}, | ||||
|     #undef HT_ASSIST_AP_ENABLE_CACHE | ||||
|     #define HT_ASSIST_AP_ENABLE_CACHE {AP_LATE_TASK_ENABLE_CACHE, (IMAGE_ENTRY) EnableAllCaches}, | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #endif  // _OPTION_HT_ASSIST_INSTALL_H_ | ||||
| @@ -1,248 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Ht | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_HT_INSTALL_H_ | ||||
| #define _OPTION_HT_INSTALL_H_ | ||||
|  | ||||
| #include "Topology.h" | ||||
| #include "htFeat.h" | ||||
| #include "htInterface.h" | ||||
| #include "htNb.h" | ||||
| #include "htTopologies.h" | ||||
| /* | ||||
|  * Advanced Option only, hardware socket naming is the preferred method. | ||||
|  */ | ||||
| #ifdef BLDCFG_SYSTEM_PHYSICAL_SOCKET_MAP | ||||
|   #define CFG_SYSTEM_PHYSICAL_SOCKET_MAP         (BLDCFG_SYSTEM_PHYSICAL_SOCKET_MAP) | ||||
| #else | ||||
|   #define CFG_SYSTEM_PHYSICAL_SOCKET_MAP         (NULL) | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * OPTION_IS_RECOVERY_HT is true if Basic API is being used. | ||||
|  */ | ||||
| #ifndef OPTION_IS_RECOVERY_HT | ||||
|   #define OPTION_IS_RECOVERY_HT TRUE | ||||
| #endif | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition. | ||||
|  */ | ||||
|  | ||||
| #ifndef OPTION_MULTISOCKET | ||||
|   #error  BLDOPT: Option not defined: "OPTION_MULTISOCKET" | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * Based on user level options, set Ht internal options. | ||||
|  * this will have to be changed to not set non-coherent only. | ||||
|  */ | ||||
| #define OPTION_HT_NON_COHERENT_ONLY FALSE | ||||
|  | ||||
| /* Fusion Families do not need a non-coherent only option. */ | ||||
|  | ||||
| /* | ||||
|  * Macros will generate the correct item reference based on options | ||||
|  */ | ||||
| #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|   // Select the interface and features | ||||
|   #if OPTION_FAMILY14H == TRUE | ||||
|     #define INTERNAL_HT_OPTION_BUILTIN_TOPOLOGIES NULL | ||||
|     #define INTERNAL_HT_OPTION_FEATURES     &HtFeaturesNone | ||||
|     #define INTERNAL_HT_OPTION_INTERFACE    &HtInterfaceMapsOnly | ||||
|     #define INTERNAL_HT_OPTION_FAM14_NB     &HtFam14Nb, | ||||
|   #else | ||||
|     #define INTERNAL_HT_OPTION_FAM14_NB | ||||
|   #endif | ||||
|  | ||||
|   #define INTERNAL_ONLY_NB_LIST_ITEM INTERNAL_ONLY_HT_OPTION_SUPPORTED_NBS, | ||||
|   #ifndef INTERNAL_ONLY_HT_OPTION_SUPPORTED_NBS | ||||
|     #undef INTERNAL_ONLY_NB_LIST_ITEM | ||||
|     #define INTERNAL_ONLY_NB_LIST_ITEM | ||||
|   #endif | ||||
|  | ||||
|   /* Install the correct set of northbridge implementations. Each item provides its own comma, the last item | ||||
|    * is ok to have a comma because the final item (NULL) is added below. | ||||
|    */ | ||||
|   #define INTERNAL_HT_OPTION_SUPPORTED_NBS \ | ||||
|                                              INTERNAL_ONLY_NB_LIST_ITEM \ | ||||
|                                              INTERNAL_HT_OPTION_FAM14_NB | ||||
|  | ||||
| #else | ||||
|   // Not Init Early | ||||
|   #define INTERNAL_HT_OPTION_FEATURES     NULL | ||||
|   #define INTERNAL_HT_OPTION_INTERFACE    NULL | ||||
|   #define INTERNAL_HT_OPTION_SUPPORTED_NBS NULL | ||||
|   #define HT_OPTIONS_PLATFORM             NULL | ||||
|   #define INTERNAL_HT_OPTION_BUILTIN_TOPOLOGIES NULL | ||||
| #endif | ||||
|  | ||||
| #ifdef AGESA_ENTRY_INIT_EARLY | ||||
|   #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|  | ||||
|     extern HT_FEATURES HtFeaturesDefault; | ||||
|     extern HT_FEATURES HtFeaturesNonCoherentOnly; | ||||
|     extern HT_FEATURES HtFeaturesNone; | ||||
|     extern HT_INTERFACE HtInterfaceDefault; | ||||
|     extern HT_INTERFACE HtInterfaceNonCoherentOnly; | ||||
|     extern HT_INTERFACE HtInterfaceMapsOnly; | ||||
|     extern HT_INTERFACE HtInterfaceNone; | ||||
|     extern NORTHBRIDGE HtFam10NbDefault; | ||||
|     extern NORTHBRIDGE HtFam10RevDNbDefault; | ||||
|     extern NORTHBRIDGE HtFam10NbNonCoherentOnly; | ||||
|     extern NORTHBRIDGE HtFam10RevDNbNonCoherentOnly; | ||||
|     extern NORTHBRIDGE HtFam12Nb; | ||||
|     extern NORTHBRIDGE HtFam14Nb; | ||||
|     extern NORTHBRIDGE HtFam10NbNone; | ||||
|     extern NORTHBRIDGE HtFam15NbDefault; | ||||
|     extern NORTHBRIDGE HtFam15NbNonCoherentOnly; | ||||
|  | ||||
|     CONST VOID * CONST ROMDATA HtInstalledFamilyNorthbridgeList[] = { | ||||
|       INTERNAL_HT_OPTION_SUPPORTED_NBS | ||||
|       NULL | ||||
|     }; | ||||
|  | ||||
|     STATIC CONST AMD_HT_INTERFACE ROMDATA HtOptionsPlatform = | ||||
|     { | ||||
|       CFG_STARTING_BUSNUM, CFG_MAXIMUM_BUSNUM, CFG_ALLOCATED_BUSNUM, | ||||
|       (MANUAL_BUID_SWAP_LIST *)CFG_BUID_SWAP_LIST, | ||||
|       (DEVICE_CAP_OVERRIDE *)CFG_HTDEVICE_CAPABILITIES_OVERRIDE_LIST, | ||||
|       (CPU_TO_CPU_PCB_LIMITS *)CFG_HTFABRIC_LIMITS_LIST, | ||||
|       (IO_PCB_LIMITS *)CFG_HTCHAIN_LIMITS_LIST, | ||||
|       (OVERRIDE_BUS_NUMBERS *)CFG_BUS_NUMBERS_LIST, | ||||
|       (IGNORE_LINK *)CFG_IGNORE_LINK_LIST, | ||||
|       (SKIP_REGANG *)CFG_LINK_SKIP_REGANG_LIST, | ||||
|       (UINT8 **)CFG_ADDITIONAL_TOPOLOGIES_LIST, | ||||
|       (SYSTEM_PHYSICAL_SOCKET_MAP *)CFG_SYSTEM_PHYSICAL_SOCKET_MAP | ||||
|     }; | ||||
|     #ifndef HT_OPTIONS_PLATFORM | ||||
|       #define HT_OPTIONS_PLATFORM &HtOptionsPlatform | ||||
|     #endif | ||||
|  | ||||
|     /** | ||||
|      * A list of all the supported topologies. | ||||
|      * | ||||
|      */ | ||||
|     #ifndef INTERNAL_HT_OPTION_BUILTIN_TOPOLOGIES | ||||
|       CONST UINT8 *CONST ROMDATA AmdTopolist[] = | ||||
|       { | ||||
|         amdHtTopologySingleNode, | ||||
|         amdHtTopologyDualNode, | ||||
|         amdHtTopologyThreeLine, | ||||
|         amdHtTopologyTriangle, | ||||
|         amdHtTopologyFourLine, | ||||
|         amdHtTopologyFourStar, | ||||
|         amdHtTopologyFourDegenerate, | ||||
|         amdHtTopologyFourSquare, | ||||
|         amdHtTopologyFourKite, | ||||
|         amdHtTopologyFourFully, | ||||
|         amdHtTopologyFiveFully, | ||||
|         amdHtTopologyFiveTwistedLadder, | ||||
|         amdHtTopologySixFully, | ||||
|         amdHtTopologySixDoubloonLower, | ||||
|         amdHtTopologySixDoubloonUpper, | ||||
|         amdHtTopologySixTwistedLadder, | ||||
|         amdHtTopologySevenFully, | ||||
|         amdHtTopologySevenTwistedLadder, | ||||
|         amdHtTopologyEightFully, | ||||
|         amdHtTopologyEightDoubloon, | ||||
|         amdHtTopologyEightTwistedLadder, | ||||
|         amdHtTopologyEightStraightLadder, | ||||
|         amdHtTopologySixTwinTriangles, | ||||
|         amdHtTopologyEightTwinFullyFourWays, | ||||
|         NULL | ||||
|       }; | ||||
|       #define INTERNAL_HT_OPTION_BUILTIN_TOPOLOGIES AmdTopolist | ||||
|     #endif | ||||
|  | ||||
|     /** | ||||
|      * Declare the instance of the Ht option configuration structure | ||||
|      */ | ||||
|     CONST OPTION_HT_CONFIGURATION ROMDATA OptionHtConfiguration = { | ||||
|       OPTION_IS_RECOVERY_HT, | ||||
|       CFG_SET_HTCRC_SYNC_FLOOD, | ||||
|       CFG_USE_UNIT_ID_CLUMPING, | ||||
|       HT_OPTIONS_PLATFORM, | ||||
|       INTERNAL_HT_OPTION_INTERFACE, | ||||
|       INTERNAL_HT_OPTION_FEATURES, | ||||
|       &HtInstalledFamilyNorthbridgeList, | ||||
|       INTERNAL_HT_OPTION_BUILTIN_TOPOLOGIES | ||||
|     }; | ||||
|  | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef OPTION_HT_INIIT_RESET_ENTRY | ||||
|  | ||||
|   #define OPTION_HT_INIIT_RESET_ENTRY AmdHtInitReset | ||||
|  | ||||
|   #if OPTION_FAMILY14H == TRUE | ||||
|     #undef OPTION_HT_INIIT_RESET_ENTRY | ||||
|     #undef OPTION_HT_INIIT_RESET_CONSTRUCTOR_ENTRY | ||||
|     #define OPTION_HT_INIIT_RESET_ENTRY NULL | ||||
|     #define OPTION_HT_INIIT_RESET_CONSTRUCTOR_ENTRY NULL | ||||
|   #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #ifdef AGESA_ENTRY_INIT_RESET | ||||
|   #if AGESA_ENTRY_INIT_RESET == TRUE | ||||
|  | ||||
|     CONST AMD_HT_RESET_INTERFACE ROMDATA HtOptionResetDefaults = { | ||||
|       (MANUAL_BUID_SWAP_LIST *)CFG_BUID_SWAP_LIST, | ||||
|       0                                            // Unused by options | ||||
|     }; | ||||
|  | ||||
|     CONST OPTION_HT_INIT_RESET ROMDATA HtOptionInitReset = { | ||||
|       OPTION_HT_INIIT_RESET_ENTRY, | ||||
|       OPTION_HT_INIIT_RESET_CONSTRUCTOR_ENTRY | ||||
|     }; | ||||
|   #endif | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #endif  // _OPTION_HT_INSTALL_H_ | ||||
| @@ -1,69 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: HW C1e | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_HW_C1E_INSTALL_H_ | ||||
| #define _OPTION_HW_C1E_INSTALL_H_ | ||||
|  | ||||
| #include "cpuHwC1e.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_HW_C1E_FEAT | ||||
| #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|   CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA HwC1eFamilyServiceArray[] = | ||||
|   { | ||||
|     {0, NULL} | ||||
|   }; | ||||
|   CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA HwC1eFamilyServiceTable = | ||||
|   { | ||||
|     (sizeof (HwC1eFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|     &HwC1eFamilyServiceArray[0] | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #endif  // _OPTION_HW_C1E_INSTALL_H_ | ||||
| @@ -1,281 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * IDS Option Install File | ||||
|  * | ||||
|  * This file generates the defaults tables for family 10h model 5 processors. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
| #ifndef _OPTION_IDS_INSTALL_H_ | ||||
| #define _OPTION_IDS_INSTALL_H_ | ||||
| #include "Ids.h" | ||||
| #include "IdsHt.h" | ||||
| #include "IdsLib.h" | ||||
| #ifdef __IDS_EXTENDED__ | ||||
|   #include OPTION_IDS_EXT_INSTALL_FILE | ||||
| #endif | ||||
|  | ||||
| #define IDS_LATE_RUN_AP_TASK | ||||
|  | ||||
| #define M_HTIDS_PORT_OVERRIDE_HOOK (PF_HtIdsGetPortOverride)CommonVoid | ||||
| #if (IDSOPT_IDS_ENABLED == TRUE) | ||||
|   #if (IDSOPT_CONTROL_ENABLED == TRUE) | ||||
|     // Check for all families which include HT Features. | ||||
|   #endif | ||||
| #endif // OPTION_IDS_LEVEL | ||||
| CONST PF_HtIdsGetPortOverride ROMDATA pf_HtIdsGetPortOverride = M_HTIDS_PORT_OVERRIDE_HOOK; | ||||
|  | ||||
| #if (IDSOPT_IDS_ENABLED == TRUE) | ||||
|   #if (AGESA_ENTRY_INIT_LATE == TRUE) | ||||
|     #undef IDS_LATE_RUN_AP_TASK | ||||
|     #define IDS_LATE_RUN_AP_TASK | ||||
|   #endif | ||||
| #endif // OPTION_IDS_LEVEL | ||||
|  | ||||
| #if (IDSOPT_TRACING_ENABLED == TRUE) | ||||
|   #if (AGESA_ENTRY_INIT_POST == TRUE) | ||||
|     #include <mu.h> | ||||
|     CONST SCRIPT_FUNCTION ROMDATA ScriptFuncList[] = { | ||||
|       { (UINTN) MemUWriteCachelines, "WriteCl(PhyAddrLo,BufferAddr,ClCnt)"}, | ||||
|       { (UINTN) MemUReadCachelines, "ReadCl(BufferAddr,PhyAddrLo,ClCnt)"}, | ||||
|       { (UINTN) MemUFlushPattern, "FlushCl(PhyAddrLo,ClCnt)"} | ||||
|     }; | ||||
|   #else | ||||
|     CONST SCRIPT_FUNCTION ROMDATA ScriptFuncList[] = { | ||||
|       { (UINTN) CommonReturnFalse, "DefRet()"}, | ||||
|       { (UINTN) CommonReturnFalse, "DefRet()"}, | ||||
|       { (UINTN) CommonReturnFalse, "DefRet()"} | ||||
|     }; | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| ///Ids Feat Options | ||||
| #if (IDSOPT_IDS_ENABLED == TRUE) | ||||
|   #if (IDSOPT_CONTROL_ENABLED == TRUE) | ||||
|  | ||||
|     #ifndef OPTION_IDS_EXTEND_FEATS | ||||
|       #define OPTION_IDS_EXTEND_FEATS | ||||
|     #endif | ||||
|  | ||||
|     #define OPTION_IDS_FEAT_GNB_PLATFORMCFG\ | ||||
|                 OPTION_IDS_FEAT_GNB_PLATFORMCFGF14 | ||||
|  | ||||
| /*---------------------------------------------------------------------------- | ||||
|  *                        Family 14 feat blocks | ||||
|  * | ||||
|  *---------------------------------------------------------------------------- | ||||
|  */ | ||||
|     #define OPTION_IDS_FEAT_GNB_PLATFORMCFGF14 | ||||
|     #ifdef OPTION_FAMILY14H | ||||
|       #if OPTION_FAMILY14H == TRUE | ||||
|         extern CONST IDS_FEAT_STRUCT ROMDATA IdsFeatGnbPlatformCfgBlockF14; | ||||
|         #undef OPTION_IDS_FEAT_GNB_PLATFORMCFGF14 | ||||
|         #define OPTION_IDS_FEAT_GNB_PLATFORMCFGF14 &IdsFeatGnbPlatformCfgBlockF14, | ||||
|       #endif | ||||
|     #endif | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatUcodeBlock = | ||||
|     { | ||||
|       IDS_FEAT_UCODE_UPDATE, | ||||
|       IDS_ALL_CORES, | ||||
|       IDS_UCODE, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubUCode | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatPowerPolicyBlock = | ||||
|     { | ||||
|       IDS_FEAT_POWER_POLICY, | ||||
|       IDS_ALL_CORES, | ||||
|       IDS_PLATFORMCFG_OVERRIDE, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubPowerPolicyOverride | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatTargetPstateBlock = | ||||
|     { | ||||
|       IDS_FEAT_TARGET_PSTATE, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_INIT_LATE_AFTER, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubTargetPstate | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatPostPstateBlock = | ||||
|     { | ||||
|       IDS_FEAT_POSTPSTATE, | ||||
|       IDS_ALL_CORES, | ||||
|       IDS_CPU_Early_Override, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubPostPState | ||||
|     }; | ||||
|  | ||||
|     //Dram controller Features | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatDctAllMemClkBlock = | ||||
|     { | ||||
|       IDS_FEAT_DCT_ALLMEMCLK, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_ALL_MEMORY_CLOCK, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubAllMemClkEn | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatDctGangModeBlock = | ||||
|     { | ||||
|       IDS_FEAT_DCT_GANGMODE, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_GANGING_MODE, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubGangingMode | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatDctBurstLengthBlock = | ||||
|     { | ||||
|       IDS_FEAT_DCT_BURSTLENGTH, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_BURST_LENGTH32, | ||||
|       AMD_FAMILY_10, | ||||
|       IdsSubBurstLength32 | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatDctPowerDownCtrlBlock = | ||||
|     { | ||||
|       IDS_FEAT_DCT_POWERDOWN, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_INIT_POST_BEFORE, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubPowerDownCtrl | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatDctDllShutDownBlock = | ||||
|     { | ||||
|       IDS_FEAT_DCT_DLLSHUTDOWN, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_DLL_SHUT_DOWN, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubDllShutDownSR | ||||
|     }; | ||||
|  | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatDctPowerDownModeBlock = | ||||
|     { | ||||
|       IDS_FEAT_DCT_POWERDOWN, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_POWERDOWN_MODE, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubPowerDownMode | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatHdtOutBlock = | ||||
|     { | ||||
|       IDS_FEAT_HDTOUT, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_INIT_EARLY_BEFORE, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubHdtOut | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT ROMDATA IdsFeatHtSettingBlock = | ||||
|     { | ||||
|       IDS_FEAT_HT_SETTING, | ||||
|       IDS_BSP_ONLY, | ||||
|       IDS_HT_CONTROL, | ||||
|       IDS_FAMILY_ALL, | ||||
|       IdsSubHtLinkControl | ||||
|     }; | ||||
|  | ||||
|     CONST IDS_FEAT_STRUCT* ROMDATA IdsCommonFeats[] = | ||||
|     { | ||||
|       &IdsFeatUcodeBlock, | ||||
|       &IdsFeatPowerPolicyBlock, | ||||
|  | ||||
|       &IdsFeatTargetPstateBlock, | ||||
|  | ||||
|       &IdsFeatPostPstateBlock, | ||||
|  | ||||
|       OPTION_IDS_FEAT_ECCSYMBOLSIZE | ||||
|  | ||||
|       OPTION_IDS_FEAT_ECCCTRL | ||||
|  | ||||
|       &IdsFeatDctAllMemClkBlock, | ||||
|  | ||||
|       &IdsFeatDctGangModeBlock, | ||||
|  | ||||
|       &IdsFeatDctBurstLengthBlock, | ||||
|  | ||||
|       &IdsFeatDctPowerDownCtrlBlock, | ||||
|  | ||||
|       &IdsFeatDctPowerDownModeBlock, | ||||
|  | ||||
|       &IdsFeatDctPowerDownModeBlock, | ||||
|  | ||||
|       OPTION_IDS_FEAT_HT_ASSIST | ||||
|  | ||||
|       &IdsFeatHdtOutBlock, | ||||
|  | ||||
|       &IdsFeatHtSettingBlock, | ||||
|  | ||||
|       OPTION_IDS_FEAT_GNB_PLATFORMCFG | ||||
|  | ||||
|       OPTION_IDS_FEAT_CPB_CTRL | ||||
|  | ||||
|       OPTION_IDS_FEAT_HTC_CTRL | ||||
|  | ||||
|       OPTION_IDS_FEAT_MEMORY_MAPPING | ||||
|  | ||||
|       OPTION_IDS_EXTEND_FEATS | ||||
|  | ||||
|       NULL | ||||
|     }; | ||||
|   #else | ||||
|     CONST IDS_FEAT_STRUCT* ROMDATA IdsCommonFeats[] = | ||||
|     { | ||||
|       NULL | ||||
|     }; | ||||
|   #endif//IDSOPT_CONTROL_ENABLED | ||||
| #else | ||||
|   CONST IDS_FEAT_STRUCT* ROMDATA IdsCommonFeats[] = | ||||
|   { | ||||
|     NULL | ||||
|   }; | ||||
| #endif// IDSOPT_IDS_ENABLED | ||||
|  | ||||
|  | ||||
| #endif | ||||
| @@ -1,91 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: IO C-state | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_IO_CSTATE_INSTALL_H_ | ||||
| #define _OPTION_IO_CSTATE_INSTALL_H_ | ||||
|  | ||||
| #include "cpuIoCstate.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
|  | ||||
| #define OPTION_IO_CSTATE_FEAT | ||||
| #define F14_IO_CSTATE_SUPPORT | ||||
|  | ||||
| #if OPTION_IO_CSTATE == TRUE | ||||
|   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) | ||||
|  | ||||
|     #ifdef OPTION_FAMILY14H | ||||
|       #if OPTION_FAMILY14H == TRUE | ||||
|         #if OPTION_FAMILY14H_ON == TRUE | ||||
|           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureIoCstate; | ||||
|           #undef OPTION_IO_CSTATE_FEAT | ||||
|           #define OPTION_IO_CSTATE_FEAT &CpuFeatureIoCstate, | ||||
|           extern CONST IO_CSTATE_FAMILY_SERVICES ROMDATA F14IoCstateSupport; | ||||
|           #undef F14_IO_CSTATE_SUPPORT | ||||
|           #define F14_IO_CSTATE_SUPPORT {AMD_FAMILY_14_ON, &F14IoCstateSupport}, | ||||
|         #endif | ||||
|       #endif | ||||
|     #endif | ||||
|  | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA IoCstateFamilyServiceArray[] = | ||||
| { | ||||
|   F14_IO_CSTATE_SUPPORT | ||||
|   {0, NULL} | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA IoCstateFamilyServiceTable = | ||||
| { | ||||
|   (sizeof (IoCstateFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &IoCstateFamilyServiceArray[0] | ||||
| }; | ||||
|  | ||||
| #endif // _OPTION_IO_CSTATE_INSTALL_H_ | ||||
| @@ -1,74 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Low Power Pstate for PROCHOT_L Throttling. | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_LOW_PWR_PSTATE_INSTALL_H_ | ||||
| #define _OPTION_LOW_PWR_PSTATE_INSTALL_H_ | ||||
|  | ||||
| #include "cpuLowPwrPstate.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_CPU_LOW_PWR_PSTATE_FOR_PROCHOT_FEAT | ||||
|  | ||||
| #if OPTION_CPU_LOW_PWR_PSTATE_FOR_PROCHOT == TRUE | ||||
|   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA LowPwrPstateFamilyServiceArray[] = | ||||
| { | ||||
|   {0, NULL} | ||||
| }; | ||||
|  | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA LowPwrPstateFamilyServiceTable = | ||||
| { | ||||
|   (sizeof (LowPwrPstateFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &LowPwrPstateFamilyServiceArray[0] | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_LOW_PWR_PSTATE_INSTALL_H_ | ||||
| @@ -1,784 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Memory | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 37402 $   @e \$Date: 2010-09-03 05:36:02 +0800 (Fri, 03 Sep 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_MEMORY_INSTALL_H_ | ||||
| #define _OPTION_MEMORY_INSTALL_H_ | ||||
|  | ||||
| /*------------------------------------------------------------------------------- | ||||
|  *  This option file is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------- | ||||
|  * FEATURE BLOCK FUNCTIONS | ||||
|  * | ||||
|  *  This section defines function names that depend upon options that are selected | ||||
|  *  in the platform solution install file. | ||||
|  */ | ||||
| BOOLEAN MemFDefRet ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr | ||||
|   ) | ||||
| { | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| BOOLEAN MemMDefRet ( | ||||
|   IN   MEM_MAIN_DATA_BLOCK *MMPtr | ||||
|   ) | ||||
| { | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| BOOLEAN MemMDefRetFalse ( | ||||
|   IN   MEM_MAIN_DATA_BLOCK *MMPtr | ||||
|   ) | ||||
| { | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  * | ||||
|  *   This function initializes the northbridge block for dimm identification translator | ||||
|  * | ||||
|  *     @param[in,out]   *NBPtr   - Pointer to the MEM_NB_BLOCK | ||||
|  *     @param[in,out]   *MemPtr  - Pointer to the MEM_DATA_STRUCT | ||||
|  *     @param[in,out]   NodeID   - ID of current node to construct | ||||
|  *     @return          TRUE     - This is the correct constructor for the targeted node. | ||||
|  *     @return          FALSE    - This isn't the correct constructor for the targeted node. | ||||
|  */ | ||||
| BOOLEAN MemNIdentifyDimmConstructorRetDef ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN       UINT8 NodeID | ||||
|   ) | ||||
| { | ||||
|   return FALSE; | ||||
| } | ||||
| /*---------------------------------------------------------------------------------- | ||||
|  * TABLE FEATURE BLOCK FUNCTIONS | ||||
|  * | ||||
|  *  This section defines function names that depend upon options that are selected | ||||
|  *  in the platform solution install file. | ||||
|  */ | ||||
| UINT8 MemFTableDefRet ( | ||||
|   IN OUT   MEM_TABLE_ALIAS **MTPtr | ||||
|   ) | ||||
| { | ||||
|   return 0; | ||||
| } | ||||
| /*---------------------------------------------------------------------------------- | ||||
|  * FEATURE S3 BLOCK FUNCTIONS | ||||
|  * | ||||
|  *  This section defines function names that depend upon options that are selected | ||||
|  *  in the platform solution install file. | ||||
|  */ | ||||
| BOOLEAN MemFS3DefConstructorRet ( | ||||
|   IN OUT   VOID *S3NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN       UINT8 NodeID | ||||
|   ) | ||||
| { | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| #if (OPTION_MEMCTLR_ON == TRUE) | ||||
|   #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE)) | ||||
|     #if (OPTION_S3_MEM_SUPPORT == TRUE) | ||||
|       extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockON; | ||||
|       #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON MemS3ResumeConstructNBBlockON | ||||
|     #else | ||||
|       #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON MemFS3DefConstructorRet | ||||
|     #endif | ||||
|   #else | ||||
|     #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON MemFS3DefConstructorRet | ||||
|   #endif | ||||
|   #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE) | ||||
|     extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorON; | ||||
|     #define MEM_IDENDIMM_ON MemNIdentifyDimmConstructorON | ||||
|   #else | ||||
|     #define MEM_IDENDIMM_ON MemNIdentifyDimmConstructorRetDef | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| /*---------------------------------------------------------------------------------- | ||||
|  * NORTHBRIDGE BLOCK CONSTRUCTOR AND INITIALIZER FUNCTION DEFAULT ASSIGNMENTS | ||||
|  * | ||||
|  *---------------------------------------------------------------------------------- | ||||
| */ | ||||
| #define MEM_NB_SUPPORT_ON | ||||
| #define MEM_NB_SUPPORT_END { MEM_NB_SUPPORT_STRUCT_VERSION, 0, 0, 0, 0, 0 } | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_POST == TRUE) | ||||
|   /*---------------------------------------------------------------------------------- | ||||
|    * FLOW CONTROL FUNCTION | ||||
|    * | ||||
|    *  This section selects the function that controls the memory initialization sequence | ||||
|    *  based upon the number of processor families that the BIOS will support. | ||||
|    */ | ||||
|  | ||||
|   extern MEM_FLOW_CFG MemMFlowDef; | ||||
|  | ||||
|   #if (OPTION_MEMCTLR_ON == TRUE) | ||||
|     extern MEM_FLOW_CFG MemMFlowON; | ||||
|     #define MEM_MAIN_FLOW_CONTROL_PTR_ON MemMFlowON, | ||||
|   #else | ||||
|     #define MEM_MAIN_FLOW_CONTROL_PTR_ON MemMFlowDef, | ||||
|   #endif | ||||
|  | ||||
|   MEM_FLOW_CFG* CONST memFlowControlInstalled[] = { | ||||
|     MEM_MAIN_FLOW_CONTROL_PTR_ON | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   #if (OPTION_ONLINE_SPARE == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMOnlineSpare; | ||||
|     #define MEM_MAIN_FEATURE_ONLINE_SPARE  MemMOnlineSpare | ||||
|     extern OPTION_MEM_FEATURE_NB MemFOnlineSpare; | ||||
|     #define MEM_FEATURE_ONLINE_SPARE  MemFOnlineSpare | ||||
|   #else | ||||
|     #define MEM_MAIN_FEATURE_ONLINE_SPARE  MemMDefRet | ||||
|     #define MEM_FEATURE_ONLINE_SPARE  MemFDefRet | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_MEM_RESTORE == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMContextSave; | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMContextRestore; | ||||
|     #define MEM_MAIN_FEATURE_MEM_SAVE     MemMContextSave | ||||
|     #define MEM_MAIN_FEATURE_MEM_RESTORE  MemMContextRestore | ||||
|   #else | ||||
|     #define MEM_MAIN_FEATURE_MEM_SAVE     MemMDefRet | ||||
|     #define MEM_MAIN_FEATURE_MEM_RESTORE  MemMDefRetFalse | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_BANK_INTERLEAVE == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_NB MemFInterleaveBanks; | ||||
|     #define MEM_FEATURE_BANK_INTERLEAVE  MemFInterleaveBanks | ||||
|     extern OPTION_MEM_FEATURE_NB MemFUndoInterleaveBanks; | ||||
|     #define MEM_FEATURE_UNDO_BANK_INTERLEAVE MemFUndoInterleaveBanks | ||||
|   #else | ||||
|     #define MEM_FEATURE_BANK_INTERLEAVE  MemFDefRet | ||||
|     #define MEM_FEATURE_UNDO_BANK_INTERLEAVE MemFDefRet | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_NODE_INTERLEAVE == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMInterleaveNodes; | ||||
|     #define MEM_MAIN_FEATURE_NODE_INTERLEAVE  MemMInterleaveNodes | ||||
|     extern OPTION_MEM_FEATURE_NB MemFCheckInterleaveNodes; | ||||
|     extern OPTION_MEM_FEATURE_NB MemFInterleaveNodes; | ||||
|     #define MEM_FEATURE_NODE_INTERLEAVE_CHECK  MemFCheckInterleaveNodes | ||||
|     #define MEM_FEATURE_NODE_INTERLEAVE  MemFInterleaveNodes | ||||
|   #else | ||||
|     #define MEM_FEATURE_NODE_INTERLEAVE_CHECK  MemFDefRet | ||||
|     #define MEM_FEATURE_NODE_INTERLEAVE  MemFDefRet | ||||
|     #define MEM_MAIN_FEATURE_NODE_INTERLEAVE  MemMDefRet | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_DCT_INTERLEAVE == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_NB MemFInterleaveChannels; | ||||
|     #define MEM_FEATURE_CHANNEL_INTERLEAVE  MemFInterleaveChannels | ||||
|   #else | ||||
|     #define MEM_FEATURE_CHANNEL_INTERLEAVE  MemFDefRet | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_ECC == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMEcc; | ||||
|     #define MEM_MAIN_FEATURE_ECC  MemMEcc | ||||
|     extern OPTION_MEM_FEATURE_NB MemFCheckECC; | ||||
|     extern OPTION_MEM_FEATURE_NB MemFInitECC; | ||||
|     #define MEM_FEATURE_CK_ECC   MemFCheckECC | ||||
|     #define MEM_FEATURE_ECC   MemFInitECC | ||||
|     #define MEM_FEATURE_ECCX8  MemMDefRet | ||||
|   #else | ||||
|     #define MEM_MAIN_FEATURE_ECC  MemMDefRet | ||||
|     #define MEM_FEATURE_CK_ECC   MemFDefRet | ||||
|     #define MEM_FEATURE_ECC   MemFDefRet | ||||
|     #define MEM_FEATURE_ECCX8  MemMDefRet | ||||
|   #endif | ||||
|  | ||||
|   extern OPTION_MEM_FEATURE_MAIN MemMMctMemClr; | ||||
|   #define MEM_MAIN_FEATURE_MEM_CLEAR  MemMMctMemClr | ||||
|  | ||||
|   #if (OPTION_DMI == TRUE) | ||||
|     #if (OPTION_DDR3 == TRUE) | ||||
|       extern OPTION_MEM_FEATURE_MAIN MemFDMISupport3; | ||||
|       #define MEM_MAIN_FEATURE_MEM_DMI MemFDMISupport3 | ||||
|     #else | ||||
|       extern OPTION_MEM_FEATURE_MAIN MemFDMISupport2; | ||||
|       #define MEM_MAIN_FEATURE_MEM_DMI MemFDMISupport2 | ||||
|     #endif | ||||
|   #else | ||||
|     #define MEM_MAIN_FEATURE_MEM_DMI MemMDefRet | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_DDR3 == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_NB MemFOnDimmThermal; | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMLvDdr3; | ||||
|     extern OPTION_MEM_FEATURE_NB MemFLvDdr3; | ||||
|     #define MEM_FEATURE_ONDIMMTHERMAL MemFOnDimmThermal | ||||
|     #define MEM_MAIN_FEATURE_LVDDR3 MemMLvDdr3 | ||||
|     #define MEM_FEATURE_LVDDR3 MemFLvDdr3 | ||||
|   #else | ||||
|     #define MEM_FEATURE_ONDIMMTHERMAL MemFDefRet | ||||
|     #define MEM_MAIN_FEATURE_LVDDR3 MemMDefRet | ||||
|     #define MEM_FEATURE_LVDDR3 MemFDefRet | ||||
|   #endif | ||||
|  | ||||
|   extern OPTION_MEM_FEATURE_NB MemFInterleaveRegion; | ||||
|   #define MEM_FEATURE_REGION_INTERLEAVE    MemFInterleaveRegion | ||||
|  | ||||
|   extern OPTION_MEM_FEATURE_MAIN MemMUmaAlloc; | ||||
|   #define MEM_MAIN_FEATURE_UMAALLOC   MemMUmaAlloc | ||||
|  | ||||
|   extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining; | ||||
|   #if (OPTION_PARALLEL_TRAINING == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMParallelTraining; | ||||
|     #define MEM_MAIN_FEATURE_TRAINING  MemMParallelTraining | ||||
|   #else | ||||
|     #define MEM_MAIN_FEATURE_TRAINING  MemMStandardTraining | ||||
|   #endif | ||||
|  | ||||
|   #if (OPTION_DIMM_EXCLUDE == TRUE) | ||||
|     extern OPTION_MEM_FEATURE_MAIN MemMRASExcludeDIMM; | ||||
|     #define MEM_MAIN_FEATURE_DIMM_EXCLUDE  MemMRASExcludeDIMM | ||||
|     extern OPTION_MEM_FEATURE_NB MemFRASExcludeDIMM; | ||||
|     #define MEM_FEATURE_DIMM_EXCLUDE  MemFRASExcludeDIMM | ||||
|   #else | ||||
|     #define MEM_FEATURE_DIMM_EXCLUDE  MemFDefRet | ||||
|     #define MEM_MAIN_FEATURE_DIMM_EXCLUDE  MemMDefRet | ||||
|   #endif | ||||
|  | ||||
|   /*---------------------------------------------------------------------------------- | ||||
|    * TECHNOLOGY BLOCK CONSTRUCTOR FUNCTION ASSIGNMENTS | ||||
|    * | ||||
|    *---------------------------------------------------------------------------------- | ||||
|   */ | ||||
|   #if OPTION_DDR3 == TRUE | ||||
|     extern MEM_TECH_CONSTRUCTOR MemConstructTechBlock3; | ||||
|     #define MEM_TECH_CONSTRUCTOR_DDR3 MemConstructTechBlock3, | ||||
|     #if (OPTION_HW_DRAM_INIT == TRUE) | ||||
|       extern MEM_TECH_FEAT MemTDramInitHw; | ||||
|       #define MEM_TECH_FEATURE_HW_DRAMINIT  MemTDramInitHw | ||||
|     #else | ||||
|       #define  MEM_TECH_FEATURE_HW_DRAMINIT MemTFeatDef | ||||
|     #endif | ||||
|     #if (OPTION_SW_DRAM_INIT == TRUE) | ||||
| //      extern MEM_TECH_FEAT MemTDramInitSw3; | ||||
|       #define MEM_TECH_FEATURE_SW_DRAMINIT  MemTDramInitSw3 | ||||
|     #else | ||||
|       #define MEM_TECH_FEATURE_SW_DRAMINIT  MemTFeatDef | ||||
|     #endif | ||||
|   #else | ||||
|     #define MEM_TECH_CONSTRUCTOR_DDR3 | ||||
|   #endif | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * FEATURE BLOCKS | ||||
|    * | ||||
|    *  This section instantiates a feature block structure for each memory controller installed | ||||
|    *  by the platform solution install file. | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * ONTARIO FEATURE BLOCK | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   #if (OPTION_MEMCTLR_ON == TRUE) | ||||
|     #if OPTION_DDR3 | ||||
|       #undef MEM_TECH_FEATURE_DRAMINIT | ||||
|       #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT | ||||
|     #endif | ||||
|  | ||||
|     #if (OPTION_CONTINOUS_PATTERN_GENERATION == TRUE) | ||||
|       extern OPTION_MEM_FEATURE_NB MemNInitCPGClientNb; | ||||
|       #undef MEM_TECH_FEATURE_CPG | ||||
|       #define MEM_TECH_FEATURE_CPG    MemNInitCPGClientNb | ||||
|     #else | ||||
|       #undef MEM_TECH_FEATURE_CPG | ||||
|       #define MEM_TECH_FEATURE_CPG    MemFDefRet | ||||
|     #endif | ||||
|  | ||||
|     #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE) | ||||
|       extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb; | ||||
|       #undef MEM_TECH_FEATURE_HWRXEN | ||||
|       #define MEM_TECH_FEATURE_HWRXEN    MemNInitDqsTrainRcvrEnHwNb | ||||
|     #else | ||||
|       extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb; | ||||
|       #undef MEM_TECH_FEATURE_HWRXEN | ||||
|       #define MEM_TECH_FEATURE_HWRXEN    MemNDisableDqsTrainRcvrEnHwNb | ||||
|     #endif | ||||
|  | ||||
|     #undef MEM_MAIN_FEATURE_TRAINING | ||||
|     #undef MEM_FEATURE_TRAINING | ||||
|     #define MEM_MAIN_FEATURE_TRAINING  MemMStandardTraining | ||||
|     extern OPTION_MEM_FEATURE_NB MemFStandardTraining; | ||||
|     #define MEM_FEATURE_TRAINING  MemFStandardTraining | ||||
|  | ||||
|     #if (OPTION_EARLY_SAMPLES == TRUE) | ||||
|       extern OPTION_MEM_FEATURE_NB MemNInitEarlySampleSupportON; | ||||
|       #define MEM_EARLY_SAMPLE_SUPPORT    MemNInitEarlySampleSupportON | ||||
|     #else | ||||
|       #define MEM_EARLY_SAMPLE_SUPPORT    MemFDefRet | ||||
|     #endif | ||||
|  | ||||
|     CONST MEM_FEAT_BLOCK_NB  MemFeatBlockOn = { | ||||
|       MEM_FEAT_BLOCK_NB_STRUCT_VERSION, | ||||
|       MemFDefRet, | ||||
|       MEM_FEATURE_BANK_INTERLEAVE, | ||||
|       MEM_FEATURE_UNDO_BANK_INTERLEAVE, | ||||
|       MemFDefRet, | ||||
|       MemFDefRet, | ||||
|       MemFDefRet, | ||||
|       MemFDefRet, | ||||
|       MemFDefRet, | ||||
|       MemFDefRet, | ||||
|       MEM_FEATURE_TRAINING, | ||||
|       MEM_FEATURE_LVDDR3, | ||||
|       MEM_FEATURE_ONDIMMTHERMAL, | ||||
|       MEM_TECH_FEATURE_DRAMINIT, | ||||
|       MEM_FEATURE_DIMM_EXCLUDE, | ||||
|       MEM_EARLY_SAMPLE_SUPPORT, | ||||
|       MEM_TECH_FEATURE_CPG, | ||||
|       MEM_TECH_FEATURE_HWRXEN | ||||
|     }; | ||||
|  | ||||
|     #undef MEM_NB_SUPPORT_ON | ||||
|     extern MEM_NB_CONSTRUCTOR MemConstructNBBlockON; | ||||
|     extern MEM_INITIALIZER MemNInitDefaultsON; | ||||
|     #define MEM_NB_SUPPORT_ON { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockON, MemNInitDefaultsON, &MemFeatBlockOn, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON, MEM_IDENDIMM_ON }, | ||||
|  | ||||
|   #endif // OPTION_MEMCTRL_ON | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * MAIN FEATURE BLOCK | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   CONST MEM_FEAT_BLOCK_MAIN MemFeatMain = { | ||||
|     MEM_FEAT_BLOCK_MAIN_STRUCT_VERSION, | ||||
|     MEM_MAIN_FEATURE_TRAINING, | ||||
|     MEM_MAIN_FEATURE_DIMM_EXCLUDE, | ||||
|     MEM_MAIN_FEATURE_ONLINE_SPARE, | ||||
|     MEM_MAIN_FEATURE_NODE_INTERLEAVE, | ||||
|     MEM_MAIN_FEATURE_ECC, | ||||
|     MEM_MAIN_FEATURE_MEM_CLEAR, | ||||
|     MEM_MAIN_FEATURE_MEM_DMI, | ||||
|     MEM_MAIN_FEATURE_LVDDR3, | ||||
|     MEM_MAIN_FEATURE_UMAALLOC, | ||||
|     MEM_MAIN_FEATURE_MEM_SAVE, | ||||
|     MEM_MAIN_FEATURE_MEM_RESTORE | ||||
|   }; | ||||
|  | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * Technology Training SPECIFIC CONFIGURATION | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|  | ||||
|   #if OPTION_MEMCTLR_ON | ||||
|     extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceON; | ||||
|     #if OPTION_DDR3 | ||||
|       #undef TECH_TRAIN_ENTER_HW_TRN_DDR3 | ||||
|       #define TECH_TRAIN_ENTER_HW_TRN_DDR3   MemTFeatDef | ||||
|       #undef TECH_TRAIN_EXIT_HW_TRN_DDR3 | ||||
|       #define TECH_TRAIN_EXIT_HW_TRN_DDR3    MemTExitPhyAssistedTrainingClient3 | ||||
|       #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_HW_WL_P1_DDR3   MemTWriteLevelizationHw3Pass1 | ||||
|         #define TECH_TRAIN_HW_WL_P2_DDR3   MemTWriteLevelizationHw3Pass2 | ||||
|       #else | ||||
|         #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef | ||||
|         #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef | ||||
|       #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3    MemTDqsTrainRcvrEnHwPass1 | ||||
|         #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3    MemTDqsTrainRcvrEnHwPass2 | ||||
|       #else | ||||
|         #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef | ||||
|         #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3    MemTTrainRcvrEnSwPass1 | ||||
|       #else | ||||
|         #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       #undef TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 | ||||
|       #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3    MemTTrainOptRcvrEnSwPass1 | ||||
|       #else | ||||
|         #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3    MemTTrainDQSEdgeDetectSw | ||||
|       #else | ||||
|         #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3    MemTTrainDQSEdgeDetectSw | ||||
|       #else | ||||
|         #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       #if (OPTION_MAX_RD_LAT_TRAINING == TRUE) | ||||
|         #define TECH_TRAIN_MAX_RD_LAT_DDR3    MemTTrainMaxLatency | ||||
|       #else | ||||
|         #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef | ||||
|       #endif | ||||
|       CONST MEM_TECH_FEAT_BLOCK  memTechTrainingFeatSequenceDDR3ON = { | ||||
|         MEM_TECH_FEAT_BLOCK_STRUCT_VERSION, | ||||
|         TECH_TRAIN_ENTER_HW_TRN_DDR3, | ||||
|         TECH_TRAIN_SW_WL_DDR3, | ||||
|         TECH_TRAIN_HW_WL_P1_DDR3, | ||||
|         TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3, | ||||
|         TECH_TRAIN_HW_WL_P2_DDR3, | ||||
|         TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3, | ||||
|         TECH_TRAIN_EXIT_HW_TRN_DDR3, | ||||
|         TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3, | ||||
|         TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3, | ||||
|         TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3, | ||||
|         TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3, | ||||
|         TECH_TRAIN_MAX_RD_LAT_DDR3 | ||||
|       }; | ||||
| //      extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb; | ||||
|       #define NB_TRAIN_FLOW_DDR3    MemNDQSTiming3Nb | ||||
| //      extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb; | ||||
|       #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR3Nb, memNEnableTrainSequenceON, &memTechTrainingFeatSequenceDDR3ON }, | ||||
|     #else | ||||
|       #undef TECH_TRAIN_ENTER_HW_TRN_DDR3 | ||||
|       #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef | ||||
|       #undef TECH_TRAIN_EXIT_HW_TRN_DDR3 | ||||
|       #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef | ||||
|       #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef | ||||
|       #define NB_TRAIN_FLOW_DDR3    (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue | ||||
|       #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON  { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 }, | ||||
|     #endif | ||||
|   #else | ||||
|     #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON  { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 }, | ||||
|   #endif | ||||
|  | ||||
|   #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_END { MEM_NB_SUPPORT_STRUCT_VERSION, 0, 0, 0 } | ||||
|  | ||||
|   CONST MEM_FEAT_TRAIN_SEQ memTrainSequenceDDR3[] = { | ||||
|     MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON | ||||
|     MEM_TECH_ENABLE_TRAINING_SEQUENCE_END | ||||
|   }; | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * NB TRAINING FLOW CONTROL | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   #define NB_TRAIN_FLOW_DDR2    (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue | ||||
|  | ||||
|   OPTION_MEM_FEATURE_NB* CONST memNTrainFlowControl[] = {    // Training flow control | ||||
|     NB_TRAIN_FLOW_DDR2, | ||||
|     NB_TRAIN_FLOW_DDR3, | ||||
|   }; | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * TECHNOLOGY BLOCK | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   MEM_TECH_CONSTRUCTOR* CONST memTechInstalled[] = {    // Types of technology installed | ||||
|     MEM_TECH_CONSTRUCTOR_DDR3 | ||||
|     NULL | ||||
|   }; | ||||
|    /*--------------------------------------------------------------------------------------------------- | ||||
|    * PLATFORM SPECIFIC BLOCK FORM FACTOR DEFINITION | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|  | ||||
|   #if OPTION_MEMCTLR_ON | ||||
|     #if OPTION_UDIMMS | ||||
|       #if OPTION_DDR3 | ||||
|         #define PLAT_SP_ON_FF_UDIMM3    MemPConstructPsUON3, | ||||
|       #else | ||||
|         #define PLAT_SP_ON_FF_UDIMM3    MemPConstructPsUDef, | ||||
|       #endif | ||||
|     #else | ||||
|       #define PLAT_SP_ON_FF_UDIMM3    MemPConstructPsUDef, | ||||
|     #endif | ||||
|     #if OPTION_SODIMMS | ||||
|       #if OPTION_DDR3 | ||||
|         #define PLAT_SP_ON_FF_SDIMM3    MemPConstructPsSON3, | ||||
|       #else | ||||
|         #define PLAT_SP_ON_FF_SDIMM3    MemPConstructPsUDef, | ||||
|       #endif | ||||
|     #else | ||||
|       #define PLAT_SP_ON_FF_SDIMM3    MemPConstructPsUDef, | ||||
|     #endif | ||||
|   #else | ||||
|     #define PLAT_SP_ON_FF_SDIMM3    MemPConstructPsUDef, | ||||
|     #define PLAT_SP_ON_FF_UDIMM3    MemPConstructPsUDef, | ||||
|   #endif | ||||
|   MEM_PLAT_SPEC_CFG* CONST memPlatSpecFFInstalledON[MAX_FF_TYPES] = { | ||||
|     PLAT_SP_ON_FF_SDIMM3 | ||||
|     PLAT_SP_ON_FF_UDIMM3 | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * PLATFORM-SPECIFIC CONFIGURATION | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|  | ||||
|   #if OPTION_MEMCTLR_ON | ||||
|     #if OPTION_UDIMMS | ||||
|       #if OPTION_DDR3 | ||||
|         #define PSC_ON_UDIMM_DDR3    MemAGetPsCfgUON3, | ||||
|       #else | ||||
|         #define PSC_ON_UDIMM_DDR3 | ||||
|       #endif | ||||
|     #endif | ||||
|     #if OPTION_RDIMMS | ||||
|       #if OPTION_DDR3 | ||||
|         #define PSC_ON_RDIMM_DDR3    //MemAGetPsCfgRON3, | ||||
|       #else | ||||
|         #define PSC_ON_RDIMM_DDR3 | ||||
|       #endif | ||||
|     #endif | ||||
|     #if OPTION_SODIMMS | ||||
|       #if OPTION_DDR3 | ||||
|         #define PSC_ON_SODIMM_DDR3   MemAGetPsCfgSON3, | ||||
|       #else | ||||
|         #define PSC_ON_SODIMM_DDR3 | ||||
|       #endif | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   /*---------------------------------------------------------------------- | ||||
|    * DEFAULT PSCFG DEFINITIONS | ||||
|    * | ||||
|    *---------------------------------------------------------------------- | ||||
|    */ | ||||
|  | ||||
|   #ifndef PSC_ON_UDIMM_DDR3 | ||||
|     #define PSC_ON_UDIMM_DDR3 | ||||
|   #endif | ||||
|   #ifndef PSC_ON_RDIMM_DDR3 | ||||
|     #define PSC_ON_RDIMM_DDR3 | ||||
|   #endif | ||||
|   #ifndef PSC_ON_SODIMM_DDR3 | ||||
|     #define PSC_ON_SODIMM_DDR3 | ||||
|   #endif | ||||
|  | ||||
|   MEM_PLATFORM_CFG* CONST memPlatformTypeInstalled[] = { | ||||
|     PSC_ON_UDIMM_DDR3 | ||||
|     PSC_ON_RDIMM_DDR3 | ||||
|     PSC_ON_SODIMM_DDR3 | ||||
|     NULL | ||||
|   }; | ||||
|   CONST UINTN SIZE_OF_PLATFORM = (sizeof (memPlatformTypeInstalled) / sizeof (MEM_PLATFORM_CFG*)); | ||||
| //  #if SIZE_OF_PLATFORM > MAX_PLATFORM_TYPES | ||||
| //    #error   Size of memPlatformTypeInstalled array larger than MAX_PLATFORM_TYPES | ||||
| //  #endif | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * EXTRACTABLE PLATFORM SPECIFIC CONFIGURATION | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   #define MEM_PSC_FLOW_BLOCK_END NULL | ||||
|   #define PSC_TBL_END NULL | ||||
|   #define MEM_PSC_FLOW_DEFTRUE (BOOLEAN (*) (MEM_NB_BLOCK*, MEM_PSC_TABLE_BLOCK *)) memDefTrue | ||||
|  | ||||
|  | ||||
|   MEM_PSC_FLOW_BLOCK* CONST memPlatSpecFlowArray[] = { | ||||
|     MEM_PSC_FLOW_BLOCK_END | ||||
|   }; | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|   * | ||||
|   *  LRDIMM CONTROL | ||||
|   * | ||||
|   *--------------------------------------------------------------------------------------------------- | ||||
|   */ | ||||
|   #if (OPTION_LRDIMMS == TRUE) | ||||
|     #define MEM_TECH_FEATURE_LRDIMM_INIT    MemTFeatDef | ||||
|   #else //#if (OPTION_LRDIMMS == FALSE) | ||||
|     #define MEM_TECH_FEATURE_LRDIMM_INIT    MemTFeatDef | ||||
|   #endif | ||||
|   CONST MEM_TECH_LRDIMM memLrdimmSupported = { | ||||
|     MEM_TECH_LRDIMM_STRUCT_VERSION, | ||||
|     MEM_TECH_FEATURE_LRDIMM_INIT | ||||
|   }; | ||||
| #else | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * MAIN FLOW CONTROL | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   MEM_FLOW_CFG* CONST memFlowControlInstalled[] = { | ||||
|     NULL | ||||
|   }; | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * NB TRAINING FLOW CONTROL | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   OPTION_MEM_FEATURE_NB* CONST memNTrainFlowControl[] = {    // Training flow control | ||||
|     NULL, | ||||
|     NULL, | ||||
|   }; | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * DEFAULT TECHNOLOGY BLOCK | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   MEM_TECH_CONSTRUCTOR* CONST memTechInstalled[] = {    // Types of technology installed | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * DEFAULT TECHNOLOGY MAP | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   CONST UINT8 MemoryTechnologyMap[MAX_SOCKETS_SUPPORTED] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * DEFAULT MAIN FEATURE BLOCK | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   CONST MEM_FEAT_BLOCK_MAIN MemFeatMain = { | ||||
|     0 | ||||
|   }; | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * DEFAULT NORTHBRIDGE SUPPORT LIST | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   #if (OPTION_MEMCTLR_ON == TRUE) | ||||
|     #undef MEM_NB_SUPPORT_ON | ||||
|     #define MEM_NB_SUPPORT_ON { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON, MEM_IDENDIMM_ON }, | ||||
|   #endif | ||||
|  | ||||
|   /*--------------------------------------------------------------------------------------------------- | ||||
|    * DEFAULT Technology Training | ||||
|    * | ||||
|    * | ||||
|    *--------------------------------------------------------------------------------------------------- | ||||
|    */ | ||||
|   #if OPTION_DDR3 | ||||
|     CONST MEM_TECH_FEAT_BLOCK  memTechTrainingFeatDDR3 = { | ||||
|       0 | ||||
|     }; | ||||
|     CONST MEM_FEAT_TRAIN_SEQ memTrainSequenceDDR3[] = { | ||||
|       { 0 } | ||||
|     }; | ||||
|   #endif | ||||
|  | ||||
|     /*--------------------------------------------------------------------------------------------------- | ||||
|      * DEFAULT Platform Specific list | ||||
|      * | ||||
|      * | ||||
|      *--------------------------------------------------------------------------------------------------- | ||||
|      */ | ||||
|   #if (OPTION_MEMCTLR_ON == TRUE) | ||||
|     MEM_PLAT_SPEC_CFG* CONST memPlatSpecFFInstalledON[MAX_FF_TYPES] = { | ||||
|       NULL | ||||
|     }; | ||||
|   #endif | ||||
|   /*---------------------------------------------------------------------- | ||||
|    * DEFAULT PSCFG DEFINITIONS | ||||
|    * | ||||
|    *---------------------------------------------------------------------- | ||||
|    */ | ||||
|   MEM_PLATFORM_CFG* CONST memPlatformTypeInstalled[] = { | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   /*---------------------------------------------------------------------- | ||||
|    * EXTRACTABLE PLATFORM SPECIFIC CONFIGURATION | ||||
|    * | ||||
|    *---------------------------------------------------------------------- | ||||
|    */ | ||||
|   MEM_PSC_FLOW_BLOCK* CONST memPlatSpecFlowArray[] = { | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   CONST MEM_TECH_LRDIMM memLrdimmSupported = { | ||||
|     MEM_TECH_LRDIMM_STRUCT_VERSION, | ||||
|     NULL | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------------------- | ||||
|  * NORTHBRIDGE SUPPORT LIST | ||||
|  * | ||||
|  * | ||||
|  *--------------------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| CONST MEM_NB_SUPPORT memNBInstalled[] = { | ||||
|   MEM_NB_SUPPORT_ON | ||||
|   MEM_NB_SUPPORT_END | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_MEMORY_INSTALL_H_ | ||||
| @@ -1,71 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Message-Based C1e | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_MSG_BASED_C1E_INSTALL_H_ | ||||
| #define _OPTION_MSG_BASED_C1E_INSTALL_H_ | ||||
|  | ||||
| #include "cpuMsgBasedC1e.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_MSG_BASED_C1E_FEAT | ||||
| #if OPTION_MSG_BASED_C1E == TRUE | ||||
|   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) | ||||
|  | ||||
|     CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA MsgBasedC1eFamilyServiceArray[] = | ||||
|     { | ||||
|       {0, NULL} | ||||
|     }; | ||||
|     CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA MsgBasedC1eFamilyServiceTable = | ||||
|     { | ||||
|       (sizeof (MsgBasedC1eFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|       &MsgBasedC1eFamilyServiceArray[0] | ||||
|     }; | ||||
|   #endif | ||||
| #endif | ||||
| #endif  // _OPTION_MSG_BASED_C1E_INSTALL_H_ | ||||
| @@ -1,92 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Multiple Socket Support | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_MULTISOCKET_INSTALL_H_ | ||||
| #define _OPTION_MULTISOCKET_INSTALL_H_ | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #ifndef OPTION_MULTISOCKET | ||||
|   #error  BLDOPT: Option not defined: "OPTION_MULTISOCKET" | ||||
| #endif | ||||
|  | ||||
| #if OPTION_MULTISOCKET == TRUE | ||||
|   OPTION_MULTISOCKET_PM_STEPS GetNumberOfSystemPmStepsPtrMulti; | ||||
|   #define GET_NUM_PM_STEPS    GetNumberOfSystemPmStepsPtrMulti | ||||
|   OPTION_MULTISOCKET_PM_CORE0_TASK RunCodeOnAllSystemCore0sMulti; | ||||
|   #define CORE0_PM_TASK       RunCodeOnAllSystemCore0sMulti | ||||
|   OPTION_MULTISOCKET_PM_NB_COF GetSystemNbCofMulti; | ||||
|   #define GET_SYS_NB_COF      GetSystemNbCofMulti | ||||
|   OPTION_MULTISOCKET_PM_NB_COF_UPDATE GetSystemNbCofVidUpdateMulti; | ||||
|   #define GET_SYS_NB_COF_UPDATE GetSystemNbCofVidUpdateMulti | ||||
|   OPTION_MULTISOCKET_PM_GET_EVENTS GetEarlyPmErrorsMulti; | ||||
|   #define GET_EARLY_PM_ERRORS GetEarlyPmErrorsMulti | ||||
| #else | ||||
|   OPTION_MULTISOCKET_PM_STEPS GetNumberOfSystemPmStepsPtrSingle; | ||||
|   #define GET_NUM_PM_STEPS    GetNumberOfSystemPmStepsPtrSingle | ||||
|   OPTION_MULTISOCKET_PM_CORE0_TASK RunCodeOnAllSystemCore0sSingle; | ||||
|   #define CORE0_PM_TASK       RunCodeOnAllSystemCore0sSingle | ||||
|   OPTION_MULTISOCKET_PM_NB_COF GetSystemNbCofSingle; | ||||
|   #define GET_SYS_NB_COF      GetSystemNbCofSingle | ||||
|   OPTION_MULTISOCKET_PM_NB_COF_UPDATE GetSystemNbCofVidUpdateSingle; | ||||
|   #define GET_SYS_NB_COF_UPDATE GetSystemNbCofVidUpdateSingle | ||||
|   OPTION_MULTISOCKET_PM_GET_EVENTS GetEarlyPmErrorsSingle; | ||||
|   #define GET_EARLY_PM_ERRORS GetEarlyPmErrorsSingle | ||||
| #endif | ||||
|  | ||||
| /*  Declare the instance of the DMI option configuration structure  */ | ||||
| CONST OPTION_MULTISOCKET_CONFIGURATION  OptionMultiSocketConfiguration = { | ||||
|   MULTISOCKET_STRUCT_VERSION, | ||||
|   GET_NUM_PM_STEPS, | ||||
|   CORE0_PM_TASK, | ||||
|   GET_SYS_NB_COF, | ||||
|   GET_SYS_NB_COF_UPDATE, | ||||
|   GET_EARLY_PM_ERRORS | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_MULTISOCKET_INSTALL_H_ | ||||
| @@ -1,71 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: Preserve Mailbox | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_PRESERVE_MAILBOX_INSTALL_H_ | ||||
| #define _OPTION_PRESERVE_MAILBOX_INSTALL_H_ | ||||
|  | ||||
| #include "PreserveMailbox.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_PRESERVE_MAILBOX_FEAT | ||||
|  | ||||
| #if ((AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE)) | ||||
|  | ||||
|   CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA PreserveMailboxFamilyServiceArray[] = | ||||
|   { | ||||
|     {0, NULL} | ||||
|   }; | ||||
|   CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA PreserveMailboxFamilyServiceTable = | ||||
|   { | ||||
|     (sizeof (PreserveMailboxFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|     &PreserveMailboxFamilyServiceArray[0] | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #endif  // _OPTION_PRESERVE_MAILBOX_INSTALL_H_ | ||||
| @@ -1,215 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: PState | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_PSTATE_INSTALL_H_ | ||||
| #define _OPTION_PSTATE_INSTALL_H_ | ||||
|  | ||||
| #include "cpuPstateTables.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
|  | ||||
| #define F14_PSTATE_SERVICE_SUPPORT | ||||
|  | ||||
| #if ((AGESA_ENTRY_INIT_LATE == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE)) | ||||
|   // | ||||
|   //Define Pstate CPU Family service | ||||
|   // | ||||
|  | ||||
|   #ifdef OPTION_FAMILY14H | ||||
|     #if OPTION_FAMILY14H == TRUE | ||||
|       extern CONST PSTATE_CPU_FAMILY_SERVICES ROMDATA F14PstateServices; | ||||
|       #undef F14_PSTATE_SERVICE_SUPPORT | ||||
|       #define F14_PSTATE_SERVICE_SUPPORT {AMD_FAMILY_14, &F14PstateServices}, | ||||
|     #endif | ||||
|   #endif | ||||
|  | ||||
|   // | ||||
|   //Define ACPI Pstate objects. | ||||
|   // | ||||
|   #ifndef OPTION_ACPI_PSTATES | ||||
|     #error  BLDOPT: Option not defined: "OPTION_ACPI_PSTATES" | ||||
|   #endif | ||||
|   #if (OPTION_ACPI_PSTATES == TRUE) | ||||
| //    OPTION_SSDT_FEATURE               GenerateSsdt; | ||||
|     #define USER_SSDT_MAIN            GenerateSsdt | ||||
|     #ifndef OPTION_MULTISOCKET | ||||
|       #error  BLDOPT: Option not defined: "OPTION_MULTISOCKET" | ||||
|     #endif | ||||
|  | ||||
|     OPTION_ACPI_FEATURE               CreatePStateAcpiTables; | ||||
|     OPTION_PSTATE_GATHER              PStateGatherMain; | ||||
|     #if ((OPTION_MULTISOCKET == TRUE) && (AGESA_ENTRY_INIT_POST == TRUE)) | ||||
|       OPTION_PSTATE_LEVELING          PStateLevelingMain; | ||||
|       #define USER_PSTATE_OPTION_LEVEL  PStateLevelingMain | ||||
|     #else | ||||
|       OPTION_PSTATE_LEVELING            PStateLevelingStub; | ||||
|       #define USER_PSTATE_OPTION_LEVEL  PStateLevelingStub | ||||
|     #endif | ||||
|     #if AGESA_ENTRY_INIT_LATE == TRUE | ||||
|       #define USER_PSTATE_OPTION_MAIN   CreatePStateAcpiTables | ||||
|     #else | ||||
|       OPTION_ACPI_FEATURE               CreateAcpiTablesStub; | ||||
|       #define USER_PSTATE_OPTION_MAIN   CreateAcpiTablesStub | ||||
|     #endif | ||||
|     #if AGESA_ENTRY_INIT_POST == TRUE | ||||
|       #define USER_PSTATE_OPTION_GATHER PStateGatherMain | ||||
|     #else | ||||
|       OPTION_PSTATE_GATHER              PStateGatherStub; | ||||
|       #define USER_PSTATE_OPTION_GATHER PStateGatherStub | ||||
|     #endif | ||||
|     #if CFG_ACPI_PSTATES_PPC == TRUE | ||||
|       #define USER_PSTATE_CFG_PPC   TRUE | ||||
|     #else | ||||
|       #define USER_PSTATE_CFG_PPC   FALSE | ||||
|     #endif | ||||
|     #if CFG_ACPI_PSTATES_PCT == TRUE | ||||
|       #define USER_PSTATE_CFG_PCT   TRUE | ||||
|     #else | ||||
|       #define USER_PSTATE_CFG_PCT   FALSE | ||||
|     #endif | ||||
|     #if CFG_ACPI_PSTATES_PSD == TRUE | ||||
|       #define USER_PSTATE_CFG_PSD   TRUE | ||||
|     #else | ||||
|       #define USER_PSTATE_CFG_PSD   FALSE | ||||
|     #endif | ||||
|     #if CFG_ACPI_PSTATES_PSS == TRUE | ||||
|       #define USER_PSTATE_CFG_PSS   TRUE | ||||
|     #else | ||||
|       #define USER_PSTATE_CFG_PSS   FALSE | ||||
|     #endif | ||||
|     #if CFG_ACPI_PSTATES_XPSS == TRUE | ||||
|       #define USER_PSTATE_CFG_XPSS   TRUE | ||||
|     #else | ||||
|       #define USER_PSTATE_CFG_XPSS   FALSE | ||||
|     #endif | ||||
|  | ||||
|     #if OPTION_IO_CSTATE == TRUE | ||||
|       OPTION_ACPI_FEATURE             CreateCStateAcpiTables; | ||||
|       #define USER_CSTATE_OPTION_MAIN CreateCStateAcpiTables | ||||
|     #else | ||||
|       OPTION_ACPI_FEATURE             CreateAcpiTablesStub; | ||||
|       #define USER_CSTATE_OPTION_MAIN CreateAcpiTablesStub | ||||
|     #endif | ||||
|   #else | ||||
|     OPTION_SSDT_FEATURE               GenerateSsdtStub; | ||||
|     OPTION_ACPI_FEATURE               CreateAcpiTablesStub; | ||||
|     OPTION_PSTATE_GATHER              PStateGatherStub; | ||||
|     OPTION_PSTATE_LEVELING            PStateLevelingStub; | ||||
|     #define USER_SSDT_MAIN            GenerateSsdtStub | ||||
|     #define USER_PSTATE_OPTION_MAIN   CreateAcpiTablesStub | ||||
|     #define USER_CSTATE_OPTION_MAIN   CreateAcpiTablesStub | ||||
|     #define USER_PSTATE_OPTION_GATHER PStateGatherStub | ||||
|     #define USER_PSTATE_OPTION_LEVEL  PStateLevelingStub | ||||
|     #define USER_PSTATE_CFG_PPC    FALSE | ||||
|     #define USER_PSTATE_CFG_PCT    FALSE | ||||
|     #define USER_PSTATE_CFG_PSD    FALSE | ||||
|     #define USER_PSTATE_CFG_PSS    FALSE | ||||
|     #define USER_PSTATE_CFG_XPSS   FALSE | ||||
|  | ||||
|     // If ACPI Objects are disabled for PStates, we still need to check | ||||
|     // whether ACPI Objects are enabled for CStates | ||||
|     #if OPTION_IO_CSTATE == TRUE | ||||
|       OPTION_SSDT_FEATURE               GenerateSsdt; | ||||
|       OPTION_PSTATE_GATHER              PStateGatherMain; | ||||
|       OPTION_ACPI_FEATURE               CreateCStateAcpiTables; | ||||
|       #undef  USER_SSDT_MAIN | ||||
|       #define USER_SSDT_MAIN            GenerateSsdt | ||||
|       #undef  USER_PSTATE_OPTION_GATHER | ||||
|       #define USER_PSTATE_OPTION_GATHER PStateGatherMain | ||||
|       #undef  USER_CSTATE_OPTION_MAIN | ||||
|       #define USER_CSTATE_OPTION_MAIN   CreateCStateAcpiTables | ||||
|     #endif | ||||
|   #endif | ||||
| #else | ||||
|   OPTION_SSDT_FEATURE               GenerateSsdtStub; | ||||
|   OPTION_ACPI_FEATURE               CreateAcpiTablesStub; | ||||
|   OPTION_PSTATE_GATHER              PStateGatherStub; | ||||
|   OPTION_PSTATE_LEVELING            PStateLevelingStub; | ||||
|   #define USER_SSDT_MAIN            GenerateSsdtStub | ||||
|   #define USER_PSTATE_OPTION_MAIN   CreateAcpiTablesStub | ||||
|   #define USER_CSTATE_OPTION_MAIN   CreateAcpiTablesStub | ||||
|   #define USER_PSTATE_OPTION_GATHER PStateGatherStub | ||||
|   #define USER_PSTATE_OPTION_LEVEL  PStateLevelingStub | ||||
|   #define USER_PSTATE_CFG_PPC    FALSE | ||||
|   #define USER_PSTATE_CFG_PCT    FALSE | ||||
|   #define USER_PSTATE_CFG_PSD    FALSE | ||||
|   #define USER_PSTATE_CFG_PSS    FALSE | ||||
|   #define USER_PSTATE_CFG_XPSS   FALSE | ||||
| #endif | ||||
|  | ||||
| /*  Declare the instance of the PSTATE option configuration structure  */ | ||||
| CONST OPTION_PSTATE_POST_CONFIGURATION      OptionPstatePostConfiguration = { | ||||
|   PSTATE_STRUCT_VERSION, | ||||
|   USER_PSTATE_OPTION_GATHER, | ||||
|   USER_PSTATE_OPTION_LEVEL | ||||
| }; | ||||
|  | ||||
| CONST OPTION_PSTATE_LATE_CONFIGURATION      OptionPstateLateConfiguration = { | ||||
|   PSTATE_STRUCT_VERSION, | ||||
|   USER_SSDT_MAIN, | ||||
|   USER_PSTATE_OPTION_MAIN, | ||||
|   USER_CSTATE_OPTION_MAIN, | ||||
|   USER_PSTATE_CFG_PPC, | ||||
|   USER_PSTATE_CFG_PCT, | ||||
|   USER_PSTATE_CFG_PSD, | ||||
|   USER_PSTATE_CFG_PSS, | ||||
|   USER_PSTATE_CFG_XPSS | ||||
| }; | ||||
|  | ||||
| CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA PstateCpuFamilyServiceArray[] = | ||||
| { | ||||
|   F14_PSTATE_SERVICE_SUPPORT | ||||
|   {0, NULL} | ||||
| }; | ||||
| CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA PstateFamilyServiceTable = | ||||
| { | ||||
|   (sizeof (PstateCpuFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|   &PstateCpuFamilyServiceArray[0] | ||||
| }; | ||||
| #endif  // _OPTION_PSTATE_INSTALL_H_ | ||||
| @@ -1,91 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: S3SCRIPT | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _OPTION_S3SCRIPT_INSTALL_H_ | ||||
| #define _OPTION_S3SCRIPT_INSTALL_H_ | ||||
|  | ||||
| #include "S3SaveState.h" | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #ifndef OPTION_S3SCRIPT | ||||
|   #define OPTION_S3SCRIPT  FALSE    //if not define assume PI not use script | ||||
| #endif | ||||
|  | ||||
| #if (AGESA_ENTRY_INIT_LATE == TRUE) || (AGESA_ENTRY_INIT_ENV == TRUE) || (AGESA_ENTRY_INIT_MID == TRUE) | ||||
|   #if OPTION_S3SCRIPT == TRUE | ||||
|     #define P_S3_SCRIPT_INIT      S3ScriptInitState | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #if AGESA_ENTRY_INIT_LATE_RESTORE == TRUE | ||||
|   #if OPTION_S3SCRIPT == TRUE | ||||
|     #define P_S3_SCRIPT_RESTORE   S3ScriptRestoreState | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef P_S3_SCRIPT_INIT | ||||
|   #define P_S3_SCRIPT_INIT        S3ScriptInitStateStub | ||||
| #endif | ||||
|  | ||||
| #ifndef P_S3_SCRIPT_RESTORE | ||||
|   #define P_S3_SCRIPT_RESTORE     S3ScriptInitStateStub | ||||
|   #undef  GNB_S3_DISPATCH_FUNCTION_TABLE | ||||
| #endif | ||||
|  | ||||
| #ifndef GNB_S3_DISPATCH_FUNCTION_TABLE | ||||
|   #define GNB_S3_DISPATCH_FUNCTION_TABLE | ||||
| #endif | ||||
|  | ||||
| /*  Declare the instance of the S3SCRIPT option configuration structure  */ | ||||
| S3_SCRIPT_CONFIGURATION OptionS3ScriptConfiguration = { | ||||
|   P_S3_SCRIPT_INIT, | ||||
|   P_S3_SCRIPT_RESTORE | ||||
| }; | ||||
|  | ||||
| S3_DISPATCH_FUNCTION_ENTRY S3DispatchFunctionTable [] = { | ||||
|   GNB_S3_DISPATCH_FUNCTION_TABLE | ||||
|   {0, NULL} | ||||
| }; | ||||
| #endif  // _OPTION_S3SCRIPT_INSTALL_H_ | ||||
| @@ -1,79 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: SLIT | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _OPTION_SLIT_INSTALL_H_ | ||||
| #define _OPTION_SLIT_INSTALL_H_ | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #if AGESA_ENTRY_INIT_LATE == TRUE | ||||
|   #ifndef OPTION_SLIT | ||||
|     #error  BLDOPT: Option not defined: "OPTION_SLIT" | ||||
|   #endif | ||||
|   #if OPTION_SLIT == TRUE | ||||
|     OPTION_SLIT_FEATURE               GetAcpiSlitMain; | ||||
|     OPTION_SLIT_RELEASE_BUFFER   ReleaseSlitBuffer; | ||||
|     #define USER_SLIT_OPTION     GetAcpiSlitMain | ||||
|     #define USER_SLIT_RELEASE_BUFFER ReleaseSlitBuffer | ||||
|   #else | ||||
|     OPTION_SLIT_FEATURE               GetAcpiSlitStub; | ||||
|     OPTION_SLIT_RELEASE_BUFFER   ReleaseSlitBufferStub; | ||||
|     #define USER_SLIT_OPTION     GetAcpiSlitStub | ||||
|     #define USER_SLIT_RELEASE_BUFFER ReleaseSlitBufferStub | ||||
|   #endif | ||||
| #else | ||||
|   OPTION_SLIT_FEATURE               GetAcpiSlitStub; | ||||
|   OPTION_SLIT_RELEASE_BUFFER   ReleaseSlitBufferStub; | ||||
|   #define USER_SLIT_OPTION     GetAcpiSlitStub | ||||
|   #define USER_SLIT_RELEASE_BUFFER ReleaseSlitBufferStub | ||||
| #endif | ||||
| /*  Declare the instance of the SLIT option configuration structure  */ | ||||
| OPTION_SLIT_CONFIGURATION OptionSlitConfiguration = { | ||||
|   SLIT_STRUCT_VERSION, | ||||
|   USER_SLIT_OPTION, | ||||
|   USER_SLIT_RELEASE_BUFFER | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_SLIT_INSTALL_H_ | ||||
| @@ -1,73 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: SRAT | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _OPTION_SRAT_INSTALL_H_ | ||||
| #define _OPTION_SRAT_INSTALL_H_ | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #if AGESA_ENTRY_INIT_LATE == TRUE | ||||
|   #ifndef OPTION_SRAT | ||||
|     #error  BLDOPT: Option not defined: "OPTION_SRAT" | ||||
|   #endif | ||||
|   #if OPTION_SRAT == TRUE | ||||
|     OPTION_SRAT_FEATURE          GetAcpiSratMain; | ||||
|     #define USER_SRAT_OPTION     GetAcpiSratMain | ||||
|   #else | ||||
|     OPTION_SRAT_FEATURE          GetAcpiSratStub; | ||||
|     #define USER_SRAT_OPTION     GetAcpiSratStub | ||||
|   #endif | ||||
| #else | ||||
|   OPTION_SRAT_FEATURE            GetAcpiSratStub; | ||||
|   #define USER_SRAT_OPTION       GetAcpiSratStub | ||||
| #endif | ||||
|  | ||||
| /*  Declare the instance of the WHEA option configuration structure  */ | ||||
| OPTION_SRAT_CONFIGURATION OptionSratConfiguration = { | ||||
|   SRAT_STRUCT_VERSION, | ||||
|   USER_SRAT_OPTION | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_WHEA_INSTALL_H_ | ||||
| @@ -1,66 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: SW C1e | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _OPTION_SW_C1E_INSTALL_H_ | ||||
| #define _OPTION_SW_C1E_INSTALL_H_ | ||||
|  | ||||
| #include "cpuSwC1e.h" | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #define OPTION_SW_C1E_FEAT | ||||
| #if AGESA_ENTRY_INIT_EARLY == TRUE | ||||
|   CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA SwC1eFamilyServiceArray[] = | ||||
|   { | ||||
|     {0, NULL} | ||||
|   }; | ||||
|   CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA SwC1eFamilyServiceTable = | ||||
|   { | ||||
|     (sizeof (SwC1eFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)), | ||||
|     &SwC1eFamilyServiceArray[0] | ||||
|   }; | ||||
| #endif | ||||
|  | ||||
| #endif  // _OPTION_SW_C1E_INSTALL_H_ | ||||
| @@ -1,74 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Install of build option: WHEA | ||||
|  * | ||||
|  * Contains AMD AGESA install macros and test conditions. Output is the | ||||
|  * defaults tables reflecting the User's build options selection. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Options | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _OPTION_WHEA_INSTALL_H_ | ||||
| #define _OPTION_WHEA_INSTALL_H_ | ||||
|  | ||||
| /*  This option is designed to be included into the platform solution install | ||||
|  *  file. The platform solution install file will define the options status. | ||||
|  *  Check to validate the definition | ||||
|  */ | ||||
| #if AGESA_ENTRY_INIT_LATE == TRUE | ||||
|   #ifndef OPTION_WHEA | ||||
|     #error  BLDOPT: Option not defined: "OPTION_WHEA" | ||||
|   #endif | ||||
|   #if OPTION_WHEA == TRUE | ||||
|     OPTION_WHEA_FEATURE          GetAcpiWheaMain; | ||||
|     #define USER_WHEA_OPTION     GetAcpiWheaMain | ||||
|   #else | ||||
|     OPTION_WHEA_FEATURE          GetAcpiWheaStub; | ||||
|     #define USER_WHEA_OPTION     GetAcpiWheaStub | ||||
|   #endif | ||||
|  | ||||
| #else | ||||
|   OPTION_WHEA_FEATURE            GetAcpiWheaStub; | ||||
|   #define USER_WHEA_OPTION       GetAcpiWheaStub | ||||
| #endif | ||||
|  | ||||
| /*  Declare the instance of the WHEA option configuration structure  */ | ||||
| OPTION_WHEA_CONFIGURATION OptionWheaConfiguration = { | ||||
|   WHEA_STRUCT_VERSION, | ||||
|   USER_WHEA_OPTION | ||||
| }; | ||||
|  | ||||
| #endif  // _OPTION_WHEA_INSTALL_H_ | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,54 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Pushhigh Interface | ||||
|  * | ||||
|  * Contains interface to Pushhigh entry | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Legacy | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _DISPATCHER_H_ | ||||
| #define _DISPATCHER_H_ | ||||
|  | ||||
| // AGESA function prototypes | ||||
| AGESA_STATUS CALLCONV AmdAgesaDispatcher ( IN OUT VOID *ConfigPtr ); | ||||
| AGESA_STATUS CALLCONV AmdAgesaCallout ( IN UINT32 Func, IN UINTN Data, IN OUT VOID *ConfigPtr ); | ||||
|  | ||||
| #endif // _DISPATCHER_H_ | ||||
| @@ -1,166 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Advanced API Interface for HT, Memory and CPU | ||||
|  * | ||||
|  * Contains additional declarations need to use HT, Memory and CPU Advanced interface, such as | ||||
|  * would be required by the basic interface implementations. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Include | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
|  | ||||
| #ifndef _ADVANCED_API_H_ | ||||
| #define _ADVANCED_API_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------- | ||||
|  *                           HT FUNCTIONS PROTOTYPE | ||||
|  * | ||||
|  *---------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * A constructor for the HyperTransport input structure. | ||||
|  * | ||||
|  * Sets inputs to valid, basic level, defaults. | ||||
|  * | ||||
|  * @param[in]   StdHeader       Opaque handle to standard config header | ||||
|  * @param[in]   AmdHtInterface  HT Interface structure to initialize. | ||||
|  * | ||||
|  * @retval AGESA_SUCCESS      Constructors are not allowed to fail | ||||
| */ | ||||
| AGESA_STATUS | ||||
| AmdHtInterfaceConstructor ( | ||||
|   IN       AMD_CONFIG_PARAMS    *StdHeader, | ||||
|   IN       AMD_HT_INTERFACE     *AmdHtInterface | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * The top level external interface for Hypertransport Initialization. | ||||
|  * | ||||
|  * Create our initial internal state, initialize the coherent fabric, | ||||
|  * initialize the non-coherent chains, and perform any required fabric tuning or | ||||
|  * optimization. | ||||
|  * | ||||
|  * @param[in]   StdHeader              Opaque handle to standard config header | ||||
|  * @param[in]   PlatformConfiguration  The platform configuration options. | ||||
|  * @param[in]   AmdHtInterface         HT Interface structure. | ||||
|  * | ||||
|  * @retval      AGESA_SUCCESS     Only information events logged. | ||||
|  * @retval      AGESA_ALERT       Sync Flood or CRC error logged. | ||||
|  * @retval      AGESA_WARNING     Example: expected capability not found | ||||
|  * @retval      AGESA_ERROR       logged events indicating some devices may not be available | ||||
|  * @retval      AGESA_FATAL       Mixed Family or MP capability mismatch | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AmdHtInitialize ( | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfiguration, | ||||
|   IN       AMD_HT_INTERFACE       *AmdHtInterface | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------- | ||||
|  *                        HT Recovery   FUNCTIONS PROTOTYPE | ||||
|  * | ||||
|  *---------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * A constructor for the HyperTransport input structure. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AmdHtResetConstructor ( | ||||
|   IN       AMD_CONFIG_PARAMS         *StdHeader, | ||||
|   IN       AMD_HT_RESET_INTERFACE    *AmdHtResetInterface | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * Initialize HT at Reset for both Normal and Recovery. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AmdHtInitReset ( | ||||
|   IN       AMD_CONFIG_PARAMS        *StdHeader, | ||||
|   IN       AMD_HT_RESET_INTERFACE   *AmdHtResetInterface | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * Initialize the Node and Socket maps for an AP Core. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AmdHtInitRecovery ( | ||||
|   IN       AMD_CONFIG_PARAMS           *StdHeader | ||||
|   ); | ||||
|  | ||||
| ///---------------------------------------------------------------------------- | ||||
| ///                          MEMORY FUNCTIONS PROTOTYPE | ||||
| /// | ||||
| ///---------------------------------------------------------------------------- | ||||
|  | ||||
| AGESA_STATUS | ||||
| AmdMemRecovery ( | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| AmdMemAuto ( | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| AmdMemInitDataStructDef ( | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN OUT  PLATFORM_CONFIGURATION   *PlatFormConfig | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| memDefRet ( VOID ); | ||||
|  | ||||
| BOOLEAN | ||||
| memDefTrue ( VOID ); | ||||
|  | ||||
| BOOLEAN | ||||
| memDefFalse ( VOID ); | ||||
|  | ||||
| VOID | ||||
| MemRecDefRet ( VOID ); | ||||
|  | ||||
| BOOLEAN | ||||
| MemRecDefTrue ( VOID ); | ||||
|  | ||||
| #endif // _ADVANCED_API_H_ | ||||
| @@ -1,124 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Common Return routines. | ||||
|  * | ||||
|  * Routines which do nothing, returning a result (preferably some version of zero) which | ||||
|  * is consistent with "do nothing" or "default".  Useful for function pointer tables. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Common | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
| ***************************************************************************** | ||||
| * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| * *************************************************************************** | ||||
| * | ||||
| */ | ||||
|  | ||||
| #ifndef _COMMON_RETURNS_H_ | ||||
| #define _COMMON_RETURNS_H_ | ||||
|  | ||||
|  | ||||
| /** | ||||
| * Return True | ||||
| * | ||||
| * @retval True    Default case, no special action | ||||
| */ | ||||
| BOOLEAN | ||||
| CommonReturnTrue ( VOID ); | ||||
|  | ||||
| /** | ||||
| * Return False. | ||||
| * | ||||
| * @retval FALSE    Default case, no special action | ||||
| */ | ||||
| BOOLEAN | ||||
| CommonReturnFalse ( VOID ); | ||||
|  | ||||
| /** | ||||
|  * Return (UINT8)zero. | ||||
|  * | ||||
|  * | ||||
|  * @retval zero    None, or only case zero. | ||||
|  */ | ||||
| UINT8 | ||||
| CommonReturnZero8 ( VOID ); | ||||
|  | ||||
| /** | ||||
|  * Return (UINT32)zero. | ||||
|  * | ||||
|  * | ||||
|  * @retval zero    None, or only case zero. | ||||
|  */ | ||||
| UINT32 | ||||
| CommonReturnZero32 ( VOID ); | ||||
|  | ||||
| /** | ||||
|  * Return (UINT64)zero. | ||||
|  * | ||||
|  * | ||||
|  * @retval zero    None, or only case zero. | ||||
|  */ | ||||
| UINT64 | ||||
| CommonReturnZero64 ( VOID ); | ||||
|  | ||||
| /** | ||||
|  * Return NULL | ||||
|  * | ||||
|  * @retval NULL    pointer to nothing | ||||
|  */ | ||||
| VOID * | ||||
| CommonReturnNULL ( VOID ); | ||||
|  | ||||
| /** | ||||
| * Return AGESA_SUCCESS. | ||||
| * | ||||
| * @retval AGESA_SUCCESS Success. | ||||
| */ | ||||
| AGESA_STATUS | ||||
| CommonReturnAgesaSuccess ( VOID ); | ||||
|  | ||||
| /** | ||||
|  * Do Nothing. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| CommonVoid ( VOID ); | ||||
|  | ||||
| /** | ||||
|  * ASSERT if this routine is called. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| CommonAssert ( VOID ); | ||||
|  | ||||
| #endif // _COMMON_RETURNS_H_ | ||||
| @@ -1,852 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Collectively assign unique filecodes for assert and debug to each source file. | ||||
|  * | ||||
|  * Publish values for decorated filenames, which can be used for | ||||
|  * ASSERT and debug support using a preprocessor define like: | ||||
|  * @n <tt> \#define FILECODE MY_C_FILENAME_FILECODE </tt> @n | ||||
|  * This file serves as a reference for debugging to associate the code and filename. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Include | ||||
|  * @e \$Revision: 46485 $   @e \$Date: 2011-02-03 09:03:14 -0700 (Thu, 03 Feb 2011) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _FILECODE_H_ | ||||
| #define _FILECODE_H_ | ||||
|  | ||||
| #define UNASSIGNED_FILE_FILECODE                                         (0xFFFF) | ||||
|  | ||||
| /// For debug use in any Platform's options C file. | ||||
| /// Can be reused for platforms and image builds, since only one options file can be built. | ||||
| #define PLATFORM_SPECIFIC_OPTIONS_FILECODE                               (0xBBBB) | ||||
|  | ||||
|  | ||||
| #define PROC_GNB_COMMON_GNBLIBFEATURES_FILECODE                          (0xA001) | ||||
| #define PROC_GNB_GFX_FAMILY_0X12_F12GFXSERVICES_FILECODE                 (0xA002) | ||||
| #define PROC_GNB_GFX_FAMILY_0X14_F14GFXSERVICES_FILECODE                 (0xA003) | ||||
| #define PROC_GNB_GFX_GFXCONFIGDATA_FILECODE                              (0xA004) | ||||
| #define PROC_GNB_GFX_GFXDEBUGBAR_FILECODE                                (0xA005) | ||||
| #define PROC_GNB_GFX_GFXGMCINIT_FILECODE                                 (0xA006) | ||||
| #define PROC_GNB_GFX_GFXINITATENVPOST_FILECODE                           (0xA010) | ||||
| #define PROC_GNB_GFX_GFXINITATMIDPOST_FILECODE                           (0xA011) | ||||
| #define PROC_GNB_GFX_GFXINITATPOST_FILECODE                              (0xA012) | ||||
| #define PROC_GNB_GFX_GFXINTEGRATEDINFOTABLEINIT_FILECODE                 (0xA013) | ||||
| #define PROC_GNB_GFX_GFXLIB_FILECODE                                     (0xA014) | ||||
| #define PROC_GNB_GFX_GFXREGISTERACC_FILECODE                             (0xA015) | ||||
| #define PROC_GNB_GFX_GFXSTRAPSINIT_FILECODE                              (0xA016) | ||||
| #define PROC_GNB_GNBINITATEARLY_FILECODE                                 (0xA017) | ||||
| #define PROC_GNB_GNBINITATENV_FILECODE                                   (0xA020) | ||||
| #define PROC_GNB_GNBINITATLATE_FILECODE                                  (0xA021) | ||||
| #define PROC_GNB_GNBINITATMID_FILECODE                                   (0xA022) | ||||
| #define PROC_GNB_GNBINITATPOST_FILECODE                                  (0xA023) | ||||
| #define PROC_GNB_GNBINITATRESET_FILECODE                                 (0xA024) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIB_FILECODE                    (0xA025) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIBCPUACC_FILECODE              (0xA026) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIBHEAP_FILECODE                (0xA027) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIBIOACC_FILECODE               (0xA028) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIBMEMACC_FILECODE              (0xA029) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIBPCI_FILECODE                 (0xA02A) | ||||
| #define PROC_GNB_MODULES_GNBCOMMONLIB_GNBLIBPCIACC_FILECODE              (0xA030) | ||||
| #define PROC_GNB_MODULES_GNBGFXINITLIBV1_GFXCARDINFO_FILECODE            (0xA031) | ||||
| #define PROC_GNB_MODULES_GNBGFXINITLIBV1_GFXENUMCONNECTORS_FILECODE      (0xA032) | ||||
| #define PROC_GNB_MODULES_GNBGFXINITLIBV1_GFXPOWERPLAYTABLE_FILECODE      (0xA033) | ||||
| #define PROC_GNB_MODULES_GNBNBINITLIBV1_GNBNBINITLIBV1_FILECODE          (0xA034) | ||||
| #define PROC_GNB_MODULES_GNBPCIEALIBV1_PCIEALIB_FILECODE                 (0xA035) | ||||
| #define PROC_GNB_MODULES_GNBPCIECONFIG_PCIECONFIGDATA_FILECODE           (0xA036) | ||||
| #define PROC_GNB_MODULES_GNBPCIECONFIG_PCIECONFIGLIB_FILECODE            (0xA037) | ||||
| #define PROC_GNB_MODULES_GNBPCIECONFIG_PCIEINPUTPARSER_FILECODE          (0xA038) | ||||
| #define PROC_GNB_MODULES_GNBPCIECONFIG_PCIEMAPTOPOLOGY_FILECODE          (0xA039) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEASPM_FILECODE              (0xA03A) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEASPMBLACKLIST_FILECODE     (0xA03B) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEASPMEXITLATENCY_FILECODE   (0xA03C) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEPHYSERVICES_FILECODE       (0xA03D) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEPIFSERVICES_FILECODE       (0xA03E) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEPORTREGACC_FILECODE        (0xA03F) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEPORTSERVICES_FILECODE      (0xA041) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEPOWERMGMT_FILECODE         (0xA043) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIESBLINK_FILECODE            (0xA044) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIESILICONSERVICES_FILECODE   (0xA045) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIETIMER_FILECODE             (0xA046) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIETOPOLOGYSERVICES_FILECODE  (0xA047) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEUTILITYLIB_FILECODE        (0xA048) | ||||
| #define PROC_GNB_MODULES_GNBPCIEINITLIBV1_PCIEWRAPPERREGACC_FILECODE     (0xA049) | ||||
| #define PROC_GNB_MODULES_GNBPCIETRAININGV1_PCIETRAINING_FILECODE         (0xA04A) | ||||
| #define PROC_GNB_MODULES_GNBPCIETRAININGV1_PCIEWORKAROUNDS_FILECODE      (0xA04B) | ||||
| #define PROC_GNB_NB_FAMILY_0X12_F12NBPOWERGATE_FILECODE                  (0xA04C) | ||||
| #define PROC_GNB_NB_FAMILY_0X12_F12NBSERVICES_FILECODE                   (0xA04D) | ||||
| #define PROC_GNB_NB_FAMILY_0X12_F12NBSMU_FILECODE                        (0xA04E) | ||||
| #define PROC_GNB_NB_FAMILY_0X14_F14NBLCLKNCLKRATIO_FILECODE              (0xA04F) | ||||
| #define PROC_GNB_NB_FAMILY_0X14_F14NBPOWERGATE_FILECODE                  (0xA050) | ||||
| #define PROC_GNB_NB_FAMILY_0X14_F14NBSERVICES_FILECODE                   (0xA051) | ||||
| #define PROC_GNB_NB_FAMILY_0X14_F14NBSMU_FILECODE                        (0xA052) | ||||
| #define PROC_GNB_NB_FEATURE_NBFUSETABLE_FILECODE                         (0xA053) | ||||
| #define PROC_GNB_NB_FEATURE_NBLCLKDPM_FILECODE                           (0xA054) | ||||
| #define PROC_GNB_NB_FAMILY_0X12_F12NBLCLKDPM_FILECODE                    (0xA055) | ||||
| #define PROC_GNB_NB_FAMILY_0X14_F14NBLCLKDPM_FILECODE                    (0xA056) | ||||
| #define PROC_GNB_NB_NBCONFIGDATA_FILECODE                                (0xA060) | ||||
| #define PROC_GNB_NB_NBINIT_FILECODE                                      (0xA061) | ||||
| #define PROC_GNB_NB_NBINITATEARLY_FILECODE                               (0xA062) | ||||
| #define PROC_GNB_NB_NBINITATENV_FILECODE                                 (0xA063) | ||||
| #define PROC_GNB_NB_NBINITATLATEPOST_FILECODE                            (0xA070) | ||||
| #define PROC_GNB_NB_NBINITATPOST_FILECODE                                (0xA071) | ||||
| #define PROC_GNB_NB_NBINITATRESET_FILECODE                               (0xA072) | ||||
| #define PROC_GNB_NB_NBPOWERMGMT_FILECODE                                 (0xA073) | ||||
| #define PROC_GNB_NB_NBSMULIB_FILECODE                                    (0xA074) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X12_F12PCIEALIB_FILECODE                   (0xA075) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X12_F12PCIECOMPLEXCONFIG_FILECODE          (0xA076) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X12_F12PCIECOMPLEXSERVICES_FILECODE        (0xA077) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X12_F12PCIEPHYSERVICES_FILECODE            (0xA078) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X12_F12PCIEPIFSERVICES_FILECODE            (0xA079) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X12_F12PCIEWRAPPERSERVICES_FILECODE        (0xA07A) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X14_F14PCIEALIB_FILECODE                   (0xA07D) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X14_F14PCIECOMPLEXCONFIG_FILECODE          (0xA07E) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X14_F14PCIECOMPLEXSERVICES_FILECODE        (0xA07F) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X14_F14PCIEPHYSERVICES_FILECODE            (0xA080) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X14_F14PCIEPIFSERVICES_FILECODE            (0xA081) | ||||
| #define PROC_GNB_PCIE_FAMILY_0X14_F14PCIEWRAPPERSERVICES_FILECODE        (0xA082) | ||||
| #define PROC_GNB_PCIE_FEATURE_PCIEPOWERGATE_FILECODE                     (0xA083) | ||||
| #define PROC_GNB_PCIE_PCIEINIT_FILECODE                                  (0xA084) | ||||
| #define PROC_GNB_PCIE_PCIEINITATEARLYPOST_FILECODE                       (0xA085) | ||||
| #define PROC_GNB_PCIE_PCIEINITATENV_FILECODE                             (0xA086) | ||||
| #define PROC_GNB_PCIE_PCIEINITATLATEPOST_FILECODE                        (0xA087) | ||||
| #define PROC_GNB_PCIE_PCIEINITATPOST_FILECODE                            (0xA088) | ||||
| #define PROC_GNB_PCIE_PCIELATEINIT_FILECODE                              (0xA089) | ||||
| #define PROC_GNB_PCIE_PCIEMISCLIB_FILECODE                               (0xA08A) | ||||
| #define PROC_GNB_PCIE_PCIEPORTINIT_FILECODE                              (0xA08B) | ||||
| #define PROC_GNB_PCIE_PCIEPORTLATEINIT_FILECODE                          (0xA08C) | ||||
| #define PROC_GNB_MODULES_GNBCABLESAFE_GNBCABLESAFE_FILECODE              (0xA08D) | ||||
| #define PROC_GNB_MODULES_GNBGFXCONFIG_GFXCONFIGENV_FILECODE              (0xA08E) | ||||
| #define PROC_GNB_MODULES_GNBGFXCONFIG_GFXCONFIGPOST_FILECODE             (0xA08F) | ||||
|  | ||||
| #define PROC_RECOVERY_GNB_GNBRECOVERY_FILECODE                           (0xAE01) | ||||
| #define PROC_RECOVERY_GNB_NBINITRECOVERY_FILECODE                        (0xAE02) | ||||
|  | ||||
| // FCH | ||||
| #define PROC_COMMON_AMDFCH_FILECODE                                      (0xB000) | ||||
| #define PROC_FCH_AZALIA_AZALIA_FILECODE                                  (0xB001) | ||||
| #define PROC_FCH_AZALIA_AZALIARESET_FILECODE                             (0xB002) | ||||
| #define PROC_FCH_COMMON_ACPILIB_FILECODE                                 (0xB010) | ||||
| #define PROC_FCH_COMMON_AMDSBLIB_FILECODE                                (0xB011) | ||||
| #define PROC_FCH_COMMON_FCHCOMMON_FILECODE                               (0xB012) | ||||
| #define PROC_FCH_COMMON_FCHCOMMONSMM_FILECODE                            (0xB013) | ||||
| #define PROC_FCH_COMMON_MEMLIB_FILECODE                                  (0xB014) | ||||
| #define PROC_FCH_COMMON_PCILIB_FILECODE                                  (0xB015) | ||||
| #define PROC_FCH_COMMON_SBPELIB_FILECODE                                 (0xB016) | ||||
| #define PROC_FCH_GEC_FAMILY_HUDSON2_GEC_FILECODE                        (0xB020) | ||||
| #define PROC_FCH_GEC_FAMILY_HUDSON2_GECRESET_FILECODE                   (0xB021) | ||||
| #define PROC_FCH_HWACPI_FAMILY_HUDSON2_HWACPI_FILECODE                  (0xB030) | ||||
| #define PROC_FCH_HWACPI_FAMILY_HUDSON2_HWACPIRESET_FILECODE             (0xB031) | ||||
| #define PROC_FCH_HWM_FAMILY_HUDSON2_HWM_FILECODE                        (0xB032) | ||||
| #define PROC_FCH_HWM_FAMILY_HUDSON2_HWMRESET_FILECODE                   (0xB033) | ||||
| #define PROC_FCH_IDE_IDE_FILECODE                                        (0xB040) | ||||
| #define PROC_FCH_IMC_FAMILY_HUDSON2_IMC_FILECODE                        (0xB050) | ||||
| #define PROC_FCH_IMC_FAMILY_HUDSON2_IMCLIB_FILECODE                     (0xB051) | ||||
| #define PROC_FCH_IMC_FAMILY_HUDSON2_IMCRESET_FILECODE                   (0xB052) | ||||
| #define PROC_FCH_IMC_FAMILY_HUDSON2_SBEC_FILECODE                       (0xB053) | ||||
| #define PROC_FCH_IMC_FAMILY_HUDSON2_SBECRESET_FILECODE                  (0xB054) | ||||
| #define PROC_FCH_INTERFACE_INITRESETDEF_FILECODE                         (0xB060) | ||||
| #define PROC_FCH_INTERFACE_INITENVDEF_FILECODE                           (0xB061) | ||||
| #define PROC_FCH_INTERFACE_FCHINITRESET_FILECODE                         (0xB062) | ||||
| #define PROC_FCH_INTERFACE_FCHINITENV_FILECODE                           (0xB063) | ||||
| #define PROC_FCH_INTERFACE_FCHINITLATE_FILECODE                          (0xB064) | ||||
| #define PROC_FCH_INTERFACE_FCHINITMID_FILECODE                           (0xB065) | ||||
| #define PROC_FCH_INTERFACE_FCHINITS3_FILECODE                            (0xB066) | ||||
| #define PROC_FCH_INTERFACE_FCHTASKLAUNCHER_FILECODE                      (0xB067) | ||||
| #define PROC_FCH_IR_IR_FILECODE                                          (0xB070) | ||||
| #define PROC_FCH_PCIB_PCIB_FILECODE                                      (0xB080) | ||||
| #define PROC_FCH_PCIB_PCIBRESET_FILECODE                                 (0xB081) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_AB_FILECODE                        (0xB090) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_ABRESET_FILECODE                   (0xB091) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_GPP_FILECODE                       (0xB092) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_GPPHP_FILECODE                     (0xB093) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_GPPLIB_FILECODE                    (0xB094) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_GPPRESET_FILECODE                  (0xB095) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_PCIE_FILECODE                      (0xB096) | ||||
| #define PROC_FCH_PCIE_FAMILY_HUDSON2_PCIERESET_FILECODE                 (0xB097) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_AHCI_FILECODE                      (0xB0A0) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_AHCILIB_FILECODE                   (0xB0A1) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_IDE2AHCI_FILECODE                  (0xB0A2) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_IDE2AHCILIB_FILECODE               (0xB0A3) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_RAID_FILECODE                      (0xB0A4) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_RAIDLIB_FILECODE                   (0xB0A5) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_SATA_FILECODE                      (0xB0A6) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_SATAIDE_FILECODE                   (0xB0A7) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_SATAIDELIB_FILECODE                (0xB0A8) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_SATALIB_FILECODE                   (0xB0A9) | ||||
| #define PROC_FCH_SATA_FAMILY_HUDSON2_SATARESET_FILECODE                 (0xB0AA) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_EHCI_FILECODE                     (0xB0B0) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_EHCIRESET_FILECODE                (0xB0B1) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_OHCI_FILECODE                     (0xB0B2) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_OHCIRESET_FILECODE                (0xB0B3) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_USB_FILECODE                      (0xB0B4) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_USBRESET_FILECODE                 (0xB0B5) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_XHCI_FILECODE                     (0xB0B6) | ||||
| #define PROC_FCH_SBUSB_FAMILY_HUDSON2_XHCIRESET_FILECODE                (0xB0B7) | ||||
| #define PROC_FCH_SD_SD_FILECODE                                          (0xB0C0) | ||||
| #define PROC_FCH_SPI_LPC_FILECODE                                        (0xB0D0) | ||||
| #define PROC_FCH_SPI_LPCRESET_FILECODE                                   (0xB0D1) | ||||
| #define PROC_FCH_SPI_SPI_FILECODE                                        (0xB0D2) | ||||
| #define PROC_FCH_SPI_SPIRESET_FILECODE                                   (0xB0D3) | ||||
|  | ||||
| #define UEFI_DXE_AMDSBDXE_AMDSBDXE_FILECODE                              (0xB200) | ||||
| #define UEFI_DXE_AMDSBWHEA_AMDSBWHEA_FILECODE                            (0xB210) | ||||
| #define UEFI_DXE_AMDSBWHEA_BERTTABLE_FILECODE                            (0xB211) | ||||
| #define UEFI_DXE_AMDSBWHEA_EINJTABLE_FILECODE                            (0xB212) | ||||
| #define UEFI_DXE_AMDSBWHEA_ERSTTABLE_FILECODE                            (0xB213) | ||||
| #define UEFI_DXE_AMDSBWHEA_HESTTABLE_FILECODE                            (0xB214) | ||||
| #define UEFI_DXE_CF9RESET_CF9RESET_FILECODE                              (0xB220) | ||||
| #define UEFI_DXE_CF9RESET_IA32_IA32CF9RESET_FILECODE                     (0xB221) | ||||
| #define UEFI_DXE_CF9RESET_X64_X64CF9RESET_FILECODE                       (0xB222) | ||||
| #define UEFI_DXE_LEGACYINTERRUPT_LEGACYINTERRUPT_FILECODE                (0xB230) | ||||
| #define UEFI_DXE_SMMCONTROL_SMMCONTROL_FILECODE                          (0xB240) | ||||
| #define UEFI_LIBRARY_DECCAN_FCHSMMLIB_FCHDXECOMMON_FILECODE              (0xB250) | ||||
| #define UEFI_LIBRARY_DECCAN_FCHSMMLIB_FCHSMMLIB_FILECODE                 (0xB251) | ||||
| #define UEFI_LIBRARY_DECCAN_FCHDXELIB_FCHDXELIB_FILECODE                 (0xB252) | ||||
| #define UEFI_PEI_AMDSBPEI_AMDSBPEI_FILECODE                              (0xB260) | ||||
| #define UEFI_PEI_AMDSBPEI_SBRESET_FILECODE                               (0xB261) | ||||
| #define UEFI_PEI_AMDSBPEI_SBSTALL_FILECODE                               (0xB262) | ||||
| #define UEFI_PEI_SMBUS_SMBUS_FILECODE                                    (0xB270) | ||||
| #define UEFI_SMM_AMDSBSMM_AMDSBSMM_FILECODE                              (0xB280) | ||||
| #define UEFI_SMM_AMDSBSMM_GECSMI_FILECODE                                (0xB281) | ||||
| #define UEFI_SMM_AMDSBSMM_GPESMI_FILECODE                                (0xB282) | ||||
| #define UEFI_SMM_AMDSBSMM_IOTRAPSMI_FILECODE                             (0xB283) | ||||
| #define UEFI_SMM_AMDSBSMM_MISCSMI_FILECODE                               (0xB284) | ||||
| #define UEFI_SMM_AMDSBSMM_PERIODICTIMERSMI_FILECODE                      (0xB285) | ||||
| #define UEFI_SMM_AMDSBSMM_POWERBUTTONSMI_FILECODE                        (0xB286) | ||||
| #define UEFI_SMM_AMDSBSMM_SWSMI_FILECODE                                 (0xB287) | ||||
| #define UEFI_SMM_AMDSBSMM_SXSMI_FILECODE                                 (0xB288) | ||||
| #define UEFI_DXE_SMBUS_SMBUSLIGHT_FILECODE                               (0xB2A0) | ||||
| #define UEFI_SMM_AMDSBSMMDISPATCHER_AMDSBSMMDISPATCHER_FILECODE                     (0xB290) | ||||
| #define UEFI_SMM_AMDSBSMMGECROMDISPATCHER_AMDSBSMMGECROMDISPATCHER_FILECODE         (0xB291) | ||||
| #define UEFI_SMM_AMDSBSMMGPEDISPATCHER_AMDSBSMMGPEDISPATCHER_FILECODE               (0xB292) | ||||
| #define UEFI_SMM_AMDSBSMMIOTRAPDISPATCHER_AMDSBSMMIOTRAPDISPATCHER_FILECODE         (0xB293) | ||||
| #define UEFI_SMM_AMDSBSMMMISCDISPATCHER_AMDSBSMMMISCDISPATCHER_FILECODE             (0xB294) | ||||
| #define UEFI_SMM_AMDSBSMMPERIODICALDISPATCHER_AMDSBSMMPERIODICALDISPATCHER_FILECODE (0xB295) | ||||
| #define UEFI_SMM_AMDSBSMMPWRBTNDISPATCHER_AMDSBSMMPWRBTNDISPATCHER_FILECODE         (0xB296) | ||||
| #define UEFI_SMM_AMDSBSMMSWDISPATCHER_AMDSBSMMSWDISPATCHER_FILECODE                 (0xB297) | ||||
| #define UEFI_SMM_AMDSBSMMSXDISPATCHER_AMDSBSMMSXDISPATCHER_FILECODE                 (0xB298) | ||||
| #define UEFI_SMM_AMDSBSMMUSBDISPATCHER_AMDSBSMMUSBDISPATCHER_FILECODE               (0xB299) | ||||
|  | ||||
| #define LIB_AMDLIB_FILECODE                                              (0xC001) | ||||
|  | ||||
| #define LEGACY_PROC_AGESACALLOUTS_FILECODE                               (0xC010) | ||||
| #define LEGACY_PROC_HOBTRANSFER_FILECODE                                 (0xC011) | ||||
| #define LEGACY_PROC_DISPATCHER_FILECODE                                  (0xC012) | ||||
|  | ||||
| #define UEFI_DXE_AMDAGESADXEDRIVER_AMDAGESADXEDRIVER_FILECODE            (0xC120) | ||||
|  | ||||
| #define UEFI_PEI_AMDINITPOSTPEIM_AMDINITPOSTPEIM_FILECODE                (0xC140) | ||||
| #define UEFI_PEI_AMDPROCESSORINITPEIM_AMDPROCESSORINITPEIM_FILECODE      (0xC141) | ||||
| #define UEFI_PEI_AMDRESETMANAGER_AMDRESETMANAGER_FILECODE                (0xC142) | ||||
| #define UEFI_PROC_HOBTRANSFERUEFI_FILECODE                               (0xC162) | ||||
|  | ||||
| #define PROC_COMMON_AMDINITEARLY_FILECODE                                (0xC020) | ||||
| #define PROC_COMMON_AMDINITENV_FILECODE                                  (0xC021) | ||||
| #define PROC_COMMON_AMDINITLATE_FILECODE                                 (0xC022) | ||||
| #define PROC_COMMON_AMDINITMID_FILECODE                                  (0xC023) | ||||
| #define PROC_COMMON_AMDINITPOST_FILECODE                                 (0xC024) | ||||
| #define PROC_COMMON_AMDINITRECOVERY_FILECODE                             (0xC025) | ||||
| #define PROC_COMMON_AMDINITRESET_FILECODE                                (0xC026) | ||||
| #define PROC_COMMON_AMDINITRESUME_FILECODE                               (0xC027) | ||||
| #define PROC_COMMON_AMDS3LATERESTORE_FILECODE                            (0xC028) | ||||
| #define PROC_COMMON_AMDS3SAVE_FILECODE                                   (0xC029) | ||||
| #define PROC_COMMON_AMDLATERUNAPTASK_FILECODE                            (0xC02A) | ||||
|  | ||||
| #define PROC_COMMON_COMMONRETURNS_FILECODE                               (0xC0C0) | ||||
| #define PROC_COMMON_CREATESTRUCT_FILECODE                                (0xC0D0) | ||||
| #define PROC_COMMON_COMMONINITS_FILECODE                                 (0xC0F0) | ||||
| #define PROC_COMMON_S3RESTORESTATE_FILECODE                              (0xC0F8) | ||||
| #define PROC_COMMON_S3SAVESTATE_FILECODE                                 (0xC0F9) | ||||
|  | ||||
| #define PROC_CPU_CPUAPICUTILITIES_FILECODE                               (0xC401) | ||||
| #define PROC_CPU_CPUBRANDID_FILECODE                                     (0xC402) | ||||
| #define PROC_CPU_TABLE_FILECODE                                          (0xC403) | ||||
| #define PROC_CPU_CPUEARLYINIT_FILECODE                                   (0xC405) | ||||
| #define PROC_CPU_CPUEVENTLOG_FILECODE                                    (0xC406) | ||||
| #define PROC_CPU_CPUFAMILYTRANSLATION_FILECODE                           (0xC407) | ||||
| #define PROC_CPU_CPUGENERALSERVICES_FILECODE                             (0xC408) | ||||
| #define PROC_CPU_CPUINITEARLYTABLE_FILECODE                              (0xC409) | ||||
| #define PROC_CPU_CPULATEINIT_FILECODE                                    (0xC40A) | ||||
| #define PROC_CPU_CPUMICROCODEPATCH_FILECODE                              (0xC40B) | ||||
| #define PROC_CPU_CPUWARMRESET_FILECODE                                   (0xC40C) | ||||
| #define PROC_CPU_HEAPMANAGER_FILECODE                                    (0xC40D) | ||||
| #define PROC_CPU_CPUBIST_FILECODE                                        (0xC40E) | ||||
|  | ||||
| #define PROC_CPU_CPUPOSTINIT_FILECODE                                    (0xC420) | ||||
| #define PROC_CPU_CPUPOWERMGMT_FILECODE                                   (0xC430) | ||||
| #define PROC_CPU_CPUPOWERMGMTMULTISOCKET_FILECODE                        (0xC431) | ||||
| #define PROC_CPU_CPUPOWERMGMTSINGLESOCKET_FILECODE                       (0xC432) | ||||
| #define PROC_CPU_S3_FILECODE                                             (0xC460) | ||||
|  | ||||
| // Family 10h | ||||
| #define PROC_CPU_FAMILY_0X10_CPUCOMMONF10UTILITIES_FILECODE              (0xC801) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10BRANDID_FILECODE                      (0xC802) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10CACHEDEFAULTS_FILECODE                (0xC803) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10CACHEFLUSHONHALT_FILECODE             (0xC804) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10DMI_FILECODE                          (0xC805) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10EARLYINIT_FILECODE                    (0xC806) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10FEATURELEVELING_FILECODE              (0xC807) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10HTPHYTABLES_FILECODE                  (0xC808) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10MSRTABLES_FILECODE                    (0xC809) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10PCITABLES_FILECODE                    (0xC80A) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10POWERCHECK_FILECODE                   (0xC80B) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10POWERMGMTSYSTEMTABLES_FILECODE        (0xC80C) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10POWERPLANE_FILECODE                   (0xC80D) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10SOFTWARETHERMAL_FILECODE              (0xC80E) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10UTILITIES_FILECODE                    (0xC80F) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10WHEAINITDATATABLES_FILECODE           (0xC810) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10PSTATE_FILECODE                       (0xC811) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10CPB_FILECODE                          (0xC812) | ||||
| #define PROC_CPU_FAMILY_0X10_CPUF10WORKAROUNDSTABLE_FILECODE             (0xC813) | ||||
| #define PROC_CPU_FAMILY_0X10_F10PMNBCOFVIDINIT_FILECODE                  (0xC820) | ||||
| #define PROC_CPU_FAMILY_0X10_F10SINGLELINKPCITABLES_FILECODE             (0xC821) | ||||
| #define PROC_CPU_FAMILY_0X10_F10MULTILINKPCITABLES_FILECODE              (0xC822) | ||||
| #define PROC_CPU_FAMILY_0X10_F10PMNBPSTATEINIT_FILECODE                  (0xC823) | ||||
| #define PROC_CPU_FAMILY_0X10_F10PMASYMBOOSTINIT_FILECODE                 (0xC824) | ||||
| #define PROC_CPU_FAMILY_0X10_F10INITEARLYTABLE_FILECODE                  (0xC825) | ||||
| #define PROC_CPU_FAMILY_0X10_F10PMDUALPLANEONLYSUPPORT_FILECODE          (0xC826) | ||||
| #define PROC_CPU_FAMILY_0X10_F10IOCSTATE_FILECODE                        (0xC827) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_F10REVCUTILITIES_FILECODE              (0xC830) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_F10REVCHWC1E_FILECODE                  (0xC831) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_F10REVCSWC1E_FILECODE                  (0xC832) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_F10REVCPCITABLES_FILECODE              (0xC833) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_F10REVCMSRTABLES_FILECODE              (0xC834) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_F10REVCHTPHYTABLES_FILECODE            (0xC835) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLHTPHYTABLES_FILECODE           (0xC836) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLLOGICALIDTABLES_FILECODE       (0xC837) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLMICROCODEPATCHTABLES_FILECODE  (0xC838) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLMSRTABLES_FILECODE             (0xC839) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLEQUIVALENCETABLE_FILECODE      (0xC83A) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLPCITABLES_FILECODE             (0xC83B) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_BL_F10BLCACHEFLUSHONHALT_FILECODE      (0xC83C) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DAHTPHYTABLES_FILECODE           (0xC83D) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DALOGICALIDTABLES_FILECODE       (0xC83E) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DAMICROCODEPATCHTABLES_FILECODE  (0xC83F) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DAMSRTABLES_FILECODE             (0xC840) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DAEQUIVALENCETABLE_FILECODE      (0xC841) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DAPCITABLES_FILECODE             (0xC842) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_DA_F10DACACHEFLUSHONHALT_FILECODE      (0xC843) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_RB_F10RBHTPHYTABLES_FILECODE           (0xC844) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_RB_F10RBLOGICALIDTABLES_FILECODE       (0xC845) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_RB_F10RBMICROCODEPATCHTABLES_FILECODE  (0xC846) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_RB_F10RBMSRTABLES_FILECODE             (0xC847) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_RB_F10RBEQUIVALENCETABLE_FILECODE      (0xC848) | ||||
| #define PROC_CPU_FAMILY_0X10_REVC_RB_F10RBPCITABLES_FILECODE             (0xC849) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_F10REVDUTILITIES_FILECODE              (0xC850) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_F10REVDMSGBASEDC1E_FILECODE            (0xC851) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_F10REVDHTASSIST_FILECODE               (0xC852) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYHTPHYTABLES_FILECODE           (0xC853) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYINITEARLYTABLE_FILECODE        (0xC854) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYLOGICALIDTABLES_FILECODE       (0xC855) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYMICROCODEPATCHTABLES_FILECODE  (0xC856) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYMSRTABLES_FILECODE             (0xC857) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYEQUIVALENCETABLE_FILECODE      (0xC858) | ||||
| #define PROC_CPU_FAMILY_0X10_REVD_HY_F10HYPCITABLES_FILECODE             (0xC859) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_F10REVEUTILITIES_FILECODE              (0xC860) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_F10REVEMSRTABLES_FILECODE              (0xC861) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_F10REVEPCITABLES_FILECODE              (0xC862) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_F10REVEHTPHYTABLES_FILECODE            (0xC863) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_PH_F10PHEQUIVALENCETABLE_FILECODE      (0xC864) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_PH_F10PHHTPHYTABLES_FILECODE           (0xC865) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_PH_F10PHLOGICALIDTABLES_FILECODE       (0xC866) | ||||
| #define PROC_CPU_FAMILY_0X10_REVE_PH_F10PHMICROCODEPATCHTABLES_FILECODE  (0xC867) | ||||
|  | ||||
| // Family 12h | ||||
| #define PROC_CPU_FAMILY_0X12_CPUCOMMONF12UTILITIES_FILECODE              (0xC901) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12BRANDID_FILECODE                      (0xC902) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12CACHEDEFAULTS_FILECODE                (0xC903) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12DMI_FILECODE                          (0xC904) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12MSRTABLES_FILECODE                    (0xC905) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12EARLYNBPSTATEINIT_FILECODE            (0xC906) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12PCITABLES_FILECODE                    (0xC907) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12POWERCHECK_FILECODE                   (0xC908) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12POWERMGMTSYSTEMTABLES_FILECODE        (0xC909) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12POWERPLANE_FILECODE                   (0xC90A) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12SOFTWARETHERMAL_FILECODE              (0xC90B) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12UTILITIES_FILECODE                    (0xC90C) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12WHEAINITDATATABLES_FILECODE           (0xC90D) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12PSTATE_FILECODE                       (0xC90E) | ||||
| #define PROC_CPU_FAMILY_0X12_F12C6STATE_FILECODE                         (0xC90F) | ||||
| #define PROC_CPU_FAMILY_0X12_F12CPB_FILECODE                             (0xC910) | ||||
| #define PROC_CPU_FAMILY_0X12_F12IOCSTATE_FILECODE                        (0xC911) | ||||
| #define PROC_CPU_FAMILY_0X12_LN_F12LNLOGICALIDTABLES_FILECODE            (0xC921) | ||||
| #define PROC_CPU_FAMILY_0X12_LN_F12LNMICROCODEPATCHTABLES_FILECODE       (0xC922) | ||||
| #define PROC_CPU_FAMILY_0X12_LN_F12LNEQUIVALENCETABLE_FILECODE           (0xC923) | ||||
| #define PROC_CPU_FAMILY_0X12_CPUF12PERCOREPCITABLES_FILECODE             (0xC924) | ||||
| #define PROC_CPU_FAMILY_0X12_LN_F12LNEARLYSAMPLES_FILECODE               (0xC925) | ||||
|  | ||||
| // Family 14h | ||||
| #define PROC_CPU_FAMILY_0X14_CPUCOMMONF14UTILITIES_FILECODE              (0xCA01) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14BRANDID_FILECODE                      (0xCA02) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14CACHEDEFAULTS_FILECODE                (0xCA03) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14DMI_FILECODE                          (0xCA04) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14MSRTABLES_FILECODE                    (0xCA05) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14PCITABLES_FILECODE                    (0xCA06) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14POWERCHECK_FILECODE                   (0xCA07) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14POWERMGMTSYSTEMTABLES_FILECODE        (0xCA08) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14POWERPLANE_FILECODE                   (0xCA09) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14SOFTWARETHERMAL_FILECODE              (0xCA0A) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14UTILITIES_FILECODE                    (0xCA0B) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14WHEAINITDATATABLES_FILECODE           (0xCA0C) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14PSTATE_FILECODE                       (0xCA0D) | ||||
| #define PROC_CPU_FAMILY_0X14_F14C6STATE_FILECODE                         (0xCA0E) | ||||
| #define PROC_CPU_FAMILY_0X14_F14IOCSTATE_FILECODE                        (0xCA0F) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14PERCOREPCITABLES_FILECODE             (0xCA10) | ||||
| #define PROC_CPU_FAMILY_0X14_CPUF14LOWPOWERINIT_FILECODE                 (0xCA11) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONLOGICALIDTABLES_FILECODE            (0xCA21) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONMICROCODEPATCHTABLES_FILECODE       (0xCA22) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONEQUIVALENCETABLE_FILECODE           (0xCA23) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONINITEARLYTABLE_FILECODE             (0xCA24) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONEARLYSAMPLES_FILECODE               (0xCA26) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONCPB_FILECODE                        (0xCA2C) | ||||
| #define PROC_CPU_FAMILY_0X14_ON_F14ONPCITABLES_FILECODE                  (0xCA2D) | ||||
|  | ||||
| // Family 15h | ||||
| #define PROC_CPU_FAMILY_0X15_CPUCOMMONF15UTILITIES_FILECODE              (0xCB01) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15BRANDID_FILECODE                      (0xCB02) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15CACHEDEFAULTS_FILECODE                (0xCB03) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15CACHEFLUSHONHALT_FILECODE             (0xCB04) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15COREAFTERRESET_FILECODE               (0xCB05) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15DMI_FILECODE                          (0xCB06) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15FEATURELEVELING_FILECODE              (0xCB07) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15HTPHYTABLES_FILECODE                  (0xCB08) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15MSRTABLES_FILECODE                    (0xCB09) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15NBAFTERRESET_FILECODE                 (0xCB0A) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15PCITABLES_FILECODE                    (0xCB0B) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15POWERCHECK_FILECODE                   (0xCB0C) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15POWERMGMTSYSTEMTABLES_FILECODE        (0xCB0D) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15POWERPLANE_FILECODE                   (0xCB0E) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15SOFTWARETHERMAL_FILECODE              (0xCB0F) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15UTILITIES_FILECODE                    (0xCB10) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15WHEAINITDATATABLES_FILECODE           (0xCB11) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15PSTATE_FILECODE                       (0xCB12) | ||||
| #define PROC_CPU_FAMILY_0X15_F15PMNBCOFVIDINIT_FILECODE                  (0xCB13) | ||||
| #define PROC_CPU_FAMILY_0X15_F15SINGLELINKPCITABLES_FILECODE             (0xCB14) | ||||
| #define PROC_CPU_FAMILY_0X15_F15MULTILINKPCITABLES_FILECODE              (0xCB15) | ||||
| #define PROC_CPU_FAMILY_0X15_F15C6STATE_FILECODE                         (0xCB16) | ||||
| #define PROC_CPU_FAMILY_0X15_F15CPB_FILECODE                             (0xCB17) | ||||
| #define PROC_CPU_FAMILY_0X15_F15INITEARLYTABLE_FILECODE                  (0xCB18) | ||||
| #define PROC_CPU_FAMILY_0X15_F15LOWPWRPSTATE_FILECODE                    (0xCB19) | ||||
| #define PROC_CPU_FAMILY_0X15_CPUF15WORKAROUNDSTABLE_FILECODE             (0xCB1A) | ||||
| #define PROC_CPU_FAMILY_0X15_F15IOCSTATE_FILECODE                        (0xCB1B) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORHTASSIST_FILECODE                   (0xCB30) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORMSGBASEDC1E_FILECODE                (0xCB31) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORLOGICALIDTABLES_FILECODE            (0xCB32) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORMICROCODEPATCHTABLES_FILECODE       (0xCB33) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORMSRTABLES_FILECODE                  (0xCB34) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORSHAREDMSRTABLE_FILECODE             (0xCB35) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15OREQUIVALENCETABLE_FILECODE           (0xCB36) | ||||
| #define PROC_CPU_FAMILY_0X15_OR_F15ORPCITABLES_FILECODE                  (0xCB37) | ||||
|  | ||||
|  | ||||
|  | ||||
| #define PROC_CPU_FEATURE_CPUCACHEFLUSHONHALT_FILECODE                    (0xDC01) | ||||
| #define PROC_CPU_FEATURE_CPUCACHEINIT_FILECODE                           (0xDC02) | ||||
| #define PROC_CPU_FEATURE_CPUDMI_FILECODE                                 (0xDC10) | ||||
| #define PROC_CPU_FEATURE_CPUFEATURELEVELING_FILECODE                     (0xDC20) | ||||
| #define PROC_CPU_FEATURE_CPUHTASSIST_FILECODE                            (0xDC30) | ||||
| #define PROC_CPU_FEATURE_CPUPSTATEGATHER_FILECODE                        (0xDC41) | ||||
| #define PROC_CPU_FEATURE_CPUPSTATELEVELING_FILECODE                      (0xDC42) | ||||
| #define PROC_CPU_FEATURE_CPUPSTATETABLES_FILECODE                        (0xDC43) | ||||
| #define PROC_CPU_FEATURE_CPUSLIT_FILECODE                                (0xDC50) | ||||
| #define PROC_CPU_FEATURE_CPUSRAT_FILECODE                                (0xDC60) | ||||
| #define PROC_CPU_FEATURE_CPUWHEA_FILECODE                                (0xDC70) | ||||
| #define PROC_CPU_FEATURE_CPUHWC1E_FILECODE                               (0xDC80) | ||||
| #define PROC_CPU_FEATURE_CPUSWC1E_FILECODE                               (0xDC81) | ||||
| #define PROC_CPU_FEATURE_CPUC6STATE_FILECODE                             (0xDC82) | ||||
| #define PROC_CPU_FEATURE_CPUCPB_FILECODE                                 (0xDC83) | ||||
| #define PROC_CPU_FEATURE_CPULOWPWRPSTATE_FILECODE                        (0xDC84) | ||||
| #define PROC_CPU_FEATURE_CPUIOCSTATE_FILECODE                            (0xDC85) | ||||
| #define PROC_CPU_FEATURE_CPUFEATURES_FILECODE                            (0xDC90) | ||||
| #define PROC_CPU_FEATURE_CPUMSGBASEDC1E_FILECODE                         (0xDCA0) | ||||
| #define PROC_CPU_FEATURE_CPUCORELEVELING_FILECODE                        (0xDCB0) | ||||
| #define PROC_CPU_FEATURE_PRESERVEMAILBOX_FILECODE                        (0xDCC0) | ||||
|  | ||||
| #define PROC_RECOVERY_CPU_CPURECOVERY_FILECODE                           (0xDE01) | ||||
|  | ||||
| #define PROC_HT_FEATURES_HTFEATSETS_FILECODE                             (0xE001) | ||||
| #define PROC_HT_FEATURES_HTFEATDYNAMICDISCOVERY_FILECODE                 (0xE002) | ||||
| #define PROC_HT_FEATURES_HTFEATGANGING_FILECODE                          (0xE003) | ||||
| #define PROC_HT_FEATURES_HTFEATNONCOHERENT_FILECODE                      (0xE004) | ||||
| #define PROC_HT_FEATURES_HTFEATOPTIMIZATION_FILECODE                     (0xE005) | ||||
| #define PROC_HT_FEATURES_HTFEATROUTING_FILECODE                          (0xE006) | ||||
| #define PROC_HT_FEATURES_HTFEATSUBLINKS_FILECODE                         (0xE007) | ||||
| #define PROC_HT_FEATURES_HTFEATTRAFFICDISTRIBUTION_FILECODE              (0xE008) | ||||
| #define PROC_HT_FEATURES_HTIDS_FILECODE                                  (0xE009) | ||||
| #define PROC_HT_HTFEAT_FILECODE                                          (0xE021) | ||||
| #define PROC_HT_HTINTERFACE_FILECODE                                     (0xE022) | ||||
| #define PROC_HT_HTINTERFACECOHERENT_FILECODE                             (0xE023) | ||||
| #define PROC_HT_HTINTERFACEGENERAL_FILECODE                              (0xE024) | ||||
| #define PROC_HT_HTINTERFACENONCOHERENT_FILECODE                          (0xE025) | ||||
| #define PROC_HT_HTMAIN_FILECODE                                          (0xE026) | ||||
| #define PROC_HT_HTNOTIFY_FILECODE                                        (0xE027) | ||||
| #define PROC_HT_HTGRAPH_HTGRAPH_FILECODE                                 (0xE028) | ||||
| #define PROC_HT_HTNB_FILECODE                                            (0xE081) | ||||
| #define PROC_HT_NBCOMMON_HTNBCOHERENT_FILECODE                           (0xE082) | ||||
| #define PROC_HT_NBCOMMON_HTNBNONCOHERENT_FILECODE                        (0xE083) | ||||
| #define PROC_HT_NBCOMMON_HTNBOPTIMIZATION_FILECODE                       (0xE084) | ||||
| #define PROC_HT_NBCOMMON_HTNBUTILITIES_FILECODE                          (0xE085) | ||||
| #define PROC_HT_FAM10_HTNBFAM10_FILECODE                                 (0xE0C1) | ||||
| #define PROC_HT_FAM10_HTNBCOHERENTFAM10_FILECODE                         (0xE0C2) | ||||
| #define PROC_HT_FAM10_HTNBNONCOHERENTFAM10_FILECODE                      (0xE0C3) | ||||
| #define PROC_HT_FAM10_HTNBOPTIMIZATIONFAM10_FILECODE                     (0xE0C4) | ||||
| #define PROC_HT_FAM10_HTNBSYSTEMFAM10_FILECODE                           (0xE0C5) | ||||
| #define PROC_HT_FAM10_HTNBUTILITIESFAM10_FILECODE                        (0xE0C6) | ||||
| #define PROC_HT_FAM12_HTNBFAM12_FILECODE                                 (0xE101) | ||||
| #define PROC_HT_FAM12_HTNBUTILITIESFAM12_FILECODE                        (0xE102) | ||||
| #define PROC_HT_FAM14_HTNBFAM14_FILECODE                                 (0xE141) | ||||
| #define PROC_HT_FAM14_HTNBUTILITIESFAM14_FILECODE                        (0xE142) | ||||
| #define PROC_HT_FAM15_HTNBFAM15_FILECODE                                 (0xE181) | ||||
| #define PROC_HT_FAM15_HTNBCOHERENTFAM15_FILECODE                         (0xE182) | ||||
| #define PROC_HT_FAM15_HTNBNONCOHERENTFAM15_FILECODE                      (0xE183) | ||||
| #define PROC_HT_FAM15_HTNBOPTIMIZATIONFAM15_FILECODE                     (0xE184) | ||||
| #define PROC_HT_FAM15_HTNBSYSTEMFAM15_FILECODE                           (0xE185) | ||||
| #define PROC_HT_FAM15_HTNBUTILITIESFAM15_FILECODE                        (0xE186) | ||||
|  | ||||
| #define PROC_RECOVERY_HT_HTINITRECOVERY_FILECODE                         (0xE302) | ||||
| #define PROC_RECOVERY_HT_HTINITRESET_FILECODE                            (0xE301) | ||||
|  | ||||
| #define PROC_IDS_CONTROL_IDSCTRL_FILECODE                                (0xE801) | ||||
| #define PROC_IDS_CONTROL_IDSLIB_FILECODE                                 (0xE802) | ||||
| #define PROC_IDS_DEBUG_IDSDEBUG_FILECODE                                 (0xE803) | ||||
| #define PROC_IDS_PERF_IDSPERF_FILECODE                                   (0xE804) | ||||
| #define PROC_IDS_FAMILY_0X10_IDSF10ALLSERVICE_FILECODE                   (0xE805) | ||||
| #define PROC_IDS_FAMILY_0X10_BL_IDSF10BLSERVICE_FILECODE                 (0xE806) | ||||
| #define PROC_IDS_FAMILY_0X10_DA_IDSF10DASERVICE_FILECODE                 (0xE807) | ||||
| #define PROC_IDS_FAMILY_0X10_HY_IDSF10HYSERVICE_FILECODE                 (0xE808) | ||||
| #define PROC_IDS_FAMILY_0X10_RB_IDSF10RBSERVICE_FILECODE                 (0xE809) | ||||
| #define PROC_IDS_FAMILY_0X12_IDSF12ALLSERVICE_FILECODE                   (0xE80A) | ||||
| #define PROC_IDS_FAMILY_0X14_IDSF14ALLSERVICE_FILECODE                   (0xE80B) | ||||
| #define PROC_IDS_FAMILY_0X15_IDSF15ALLSERVICE_FILECODE                   (0xE80C) | ||||
|  | ||||
| #define PROC_IDS_DEBUG_IDSIDTTABLE_FILECODE                              (0xE80D) | ||||
| #define PROC_IDS_CONTROL_IDSNVTOCMOS_FILECODE                            (0xE80E) | ||||
|  | ||||
| ///0xE820 ~ 0xE840 is reserved for ids extend module | ||||
|  | ||||
| #define PROC_MEM_ARDK_MA_FILECODE                                    (0xF001) | ||||
| #define PROC_MEM_ARDK_DR_MARDR2_FILECODE                             (0xF002) | ||||
| #define PROC_MEM_ARDK_DR_MARDR3_FILECODE                             (0xF003) | ||||
| #define PROC_MEM_ARDK_HY_MARHY3_FILECODE                             (0xF004) | ||||
| #define PROC_MEM_ARDK_LN_MASLN3_FILECODE                             (0xF005) | ||||
| #define PROC_MEM_ARDK_DR_MAUDR3_FILECODE                             (0xF006) | ||||
| #define PROC_MEM_ARDK_HY_MAUHY3_FILECODE                             (0xF007) | ||||
| #define PROC_MEM_ARDK_LN_MAULN3_FILECODE                             (0xF008) | ||||
| #define PROC_MEM_ARDK_DA_MAUDA3_FILECODE                             (0xF009) | ||||
| #define PROC_MEM_ARDK_DA_MASDA2_FILECODE                             (0xF00A) | ||||
| #define PROC_MEM_ARDK_DA_MASDA3_FILECODE                             (0xF00B) | ||||
| #define PROC_MEM_ARDK_NI_MASNI3_FILECODE                             (0xF00C) | ||||
| #define PROC_MEM_ARDK_C32_MARC32_3_FILECODE                          (0xF00D) | ||||
| #define PROC_MEM_ARDK_C32_MAUC32_3_FILECODE                          (0xF00E) | ||||
| #define PROC_MEM_ARDK_NI_MAUNI3_FILECODE                             (0xF00F) | ||||
| #define PROC_MEM_ARDK_ON_MASON3_FILECODE                             (0xF010) | ||||
| #define PROC_MEM_ARDK_ON_MAUON3_FILECODE                             (0xF011) | ||||
| #define PROC_MEM_ARDK_PH_MASPH3_FILECODE                             (0xF012) | ||||
| #define PROC_MEM_ARDK_PH_MAUPH3_FILECODE                             (0xF013) | ||||
| #define PROC_MEM_ARDK_OR_MAROR3_FILECODE                             (0xF014) | ||||
| #define PROC_MEM_ARDK_OR_MAUOR3_FILECODE                             (0xF017) | ||||
| #define PROC_MEM_ARDK_RB_MASRB3_FILECODE                             (0xF018) | ||||
| #define PROC_MEM_ARDK_RB_MAURB3_FILECODE                             (0xF019) | ||||
|  | ||||
| #define PROC_MEM_FEAT_CHINTLV_MFCHI_FILECODE                         (0xF081) | ||||
| #define PROC_MEM_FEAT_CSINTLV_MFCSI_FILECODE                         (0xF082) | ||||
| #define PROC_MEM_FEAT_ECC_MFECC_FILECODE                             (0xF083) | ||||
| #define PROC_MEM_FEAT_ECC_MFEMP_FILECODE                             (0xF085) | ||||
| #define PROC_MEM_FEAT_EXCLUDIMM_MFDIMMEXCLUD_FILECODE                (0xF086) | ||||
| #define PROC_MEM_FEAT_IDENDIMM_MFIDENDIMM_FILECODE                   (0xF088) | ||||
| #define PROC_MEM_FEAT_INTLVRN_MFINTLVRN_FILECODE                     (0xF089) | ||||
| #define PROC_MEM_FEAT_LVDDR3_MFLVDDR3_FILECODE                       (0xF08A) | ||||
| #define PROC_MEM_FEAT_MEMCLR_MFMEMCLR_FILECODE                       (0xF08B) | ||||
| #define PROC_MEM_FEAT_NDINTLV_MFNDI_FILECODE                         (0xF08C) | ||||
| #define PROC_MEM_FEAT_ODTHERMAL_MFODTHERMAL_FILECODE                 (0xF08D) | ||||
| #define PROC_MEM_FEAT_OLSPARE_MFSPR_FILECODE                         (0xF08E) | ||||
| #define PROC_MEM_FEAT_PARTRN_MFPARALLELTRAINING_FILECODE             (0xF08F) | ||||
| #define PROC_MEM_FEAT_PARTRN_MFSTANDARDTRAINING_FILECODE             (0xF091) | ||||
| #define PROC_MEM_FEAT_S3_MFS3_FILECODE                               (0xF092) | ||||
| #define PROC_MEM_FEAT_TABLE_MFTDS_FILECODE                           (0xF093) | ||||
|  | ||||
| #define PROC_MEM_MAIN_MDEF_FILECODE                                  (0xF101) | ||||
| #define PROC_MEM_MAIN_MINIT_FILECODE                                 (0xF102) | ||||
| #define PROC_MEM_MAIN_MM_FILECODE                                    (0xF103) | ||||
| #define PROC_MEM_FEAT_DMI_MFDMI_FILECODE                             (0xF104) | ||||
| #define PROC_MEM_MAIN_MMECC_FILECODE                                 (0xF105) | ||||
| #define PROC_MEM_MAIN_MMEXCLUDEDIMM_FILECODE                         (0xF106) | ||||
| #define PROC_MEM_MAIN_DR_MMFLOWDR_FILECODE                           (0xF107) | ||||
| #define PROC_MEM_MAIN_HY_MMFLOWHY_FILECODE                           (0xF108) | ||||
| #define PROC_MEM_MAIN_LN_MMFLOWLN_FILECODE                           (0xF109) | ||||
| #define PROC_MEM_MAIN_ON_MMFLOWON_FILECODE                           (0xF10A) | ||||
| #define PROC_MEM_MAIN_MMNODEINTERLEAVE_FILECODE                      (0xF10B) | ||||
| #define PROC_MEM_MAIN_MMONLINESPARE_FILECODE                         (0xF10C) | ||||
| #define PROC_MEM_MAIN_MMPARALLELTRAINING_FILECODE                    (0xF10D) | ||||
| #define PROC_MEM_MAIN_MMSTANDARDTRAINING_FILECODE                    (0xF10E) | ||||
| #define PROC_MEM_MAIN_MUC_FILECODE                                   (0xF10F) | ||||
| #define PROC_MEM_MAIN_MMMEMCLR_FILECODE                              (0xF110) | ||||
| #define PROC_MEM_MAIN_DA_MMFLOWDA_FILECODE                           (0xF111) | ||||
| #define PROC_MEM_MAIN_MMFLOW_FILECODE                                (0xF112) | ||||
| #define PROC_MEM_MAIN_MERRHDL_FILECODE                               (0xF113) | ||||
| #define PROC_MEM_MAIN_C32_MMFLOWC32_FILECODE                         (0xF114) | ||||
| #define PROC_MEM_MAIN_MMLVDDR3_FILECODE                              (0xF115) | ||||
| #define PROC_MEM_MAIN_MMUMAALLOC_FILECODE                            (0xF116) | ||||
| #define PROC_MEM_MAIN_MMMEMRESTORE_FILECODE                          (0xF117) | ||||
| #define PROC_MEM_MAIN_MMCONDITIONALPSO_FILECODE                      (0xF118) | ||||
| #define PROC_MEM_MAIN_OR_MMFLOWOR_FILECODE                           (0xF119) | ||||
| #define PROC_MEM_MAIN_RB_MMFLOWRB_FILECODE                           (0xF11A) | ||||
| #define PROC_MEM_MAIN_PH_MMFLOWPH_FILECODE                           (0xF11B) | ||||
|  | ||||
| #define PROC_MEM_NB_DR_MNDR_FILECODE                                 (0xF213) | ||||
| #define PROC_MEM_NB_DR_MNFLOWDR_FILECODE                             (0xF214) | ||||
| #define PROC_MEM_NB_DR_MNIDENDIMMDR_FILECODE                         (0xF216) | ||||
| #define PROC_MEM_NB_DR_MNMCTDR_FILECODE                              (0xF217) | ||||
| #define PROC_MEM_NB_DR_MNDCTDR_FILECODE                              (0xF218) | ||||
| #define PROC_MEM_NB_DR_MNOTDR_FILECODE                               (0xF219) | ||||
| #define PROC_MEM_NB_DR_MNPARTRAINDR_FILECODE                         (0xF21A) | ||||
| #define PROC_MEM_NB_DR_MNPROTODR_FILECODE                            (0xF21C) | ||||
| #define PROC_MEM_NB_DR_MNS3DR_FILECODE                               (0xF21D) | ||||
| #define PROC_MEM_NB_DR_MNREGDR_FILECODE                              (0xF21E) | ||||
| #define PROC_MEM_NB_RB_MNRB_FILECODE                                 (0xF220) | ||||
| #define PROC_MEM_NB_RB_MNFLOWRB_FILECODE                             (0xF221) | ||||
| #define PROC_MEM_NB_RB_MNS3RB_FILECODE                               (0xF222) | ||||
| #define PROC_MEM_NB_RB_MNIDENDIMMRB_FILECODE                         (0xF223) | ||||
| #define PROC_MEM_NB_HY_MNFLOWHY_FILECODE                             (0xF233) | ||||
| #define PROC_MEM_NB_HY_MNHY_FILECODE                                 (0xF235) | ||||
| #define PROC_MEM_NB_HY_MNIDENDIMMHY_FILECODE                         (0xF236) | ||||
| #define PROC_MEM_NB_HY_MNMCTHY_FILECODE                              (0xF237) | ||||
| #define PROC_MEM_NB_HY_MNDCTHY_FILECODE                              (0xF238) | ||||
| #define PROC_MEM_NB_HY_MNOTHY_FILECODE                               (0xF239) | ||||
| #define PROC_MEM_NB_HY_MNPARTRAINHY_FILECODE                         (0xF23A) | ||||
| #define PROC_MEM_NB_HY_MNPHYHY_FILECODE                              (0xF23B) | ||||
| #define PROC_MEM_NB_HY_MNPROTOHY_FILECODE                            (0xF23C) | ||||
| #define PROC_MEM_NB_HY_MNS3HY_FILECODE                               (0xF23D) | ||||
| #define PROC_MEM_NB_HY_MNREGHY_FILECODE                              (0xF23E) | ||||
| #define PROC_MEM_NB_ON_MNON_FILECODE                                 (0xF240) | ||||
| #define PROC_MEM_NB_ON_MNREGON_FILECODE                              (0xF241) | ||||
| #define PROC_MEM_NB_ON_MNDCTON_FILECODE                              (0xF242) | ||||
| #define PROC_MEM_NB_ON_MNIDENDIMMON_FILECODE                         (0xF244) | ||||
| #define PROC_MEM_NB_ON_MNMCTON_FILECODE                              (0xF245) | ||||
| #define PROC_MEM_NB_ON_MNOTON_FILECODE                               (0xF246) | ||||
| #define PROC_MEM_NB_ON_MNPHYON_FILECODE                              (0xF247) | ||||
| #define PROC_MEM_NB_ON_MNS3ON_FILECODE                               (0xF248) | ||||
| #define PROC_MEM_NB_ON_MNFLOWON_FILECODE                             (0xF249) | ||||
| #define PROC_MEM_NB_ON_MNPROTOON_FILECODE                            (0xF24A) | ||||
| #define PROC_MEM_NB_LN_MNDCTLN_FILECODE                              (0xF252) | ||||
| #define PROC_MEM_NB_LN_MNFLOWLN_FILECODE                             (0xF253) | ||||
| #define PROC_MEM_NB_LN_MNIDENDIMMLN_FILECODE                         (0xF254) | ||||
| #define PROC_MEM_NB_LN_MNMCTLN_FILECODE                              (0xF255) | ||||
| #define PROC_MEM_NB_LN_MNOTLN_FILECODE                               (0xF256) | ||||
| #define PROC_MEM_NB_LN_MNPHYLN_FILECODE                              (0xF257) | ||||
| #define PROC_MEM_NB_LN_MNPROTOLN_FILECODE                            (0xF258) | ||||
| #define PROC_MEM_NB_LN_MNLN_FILECODE                                 (0xF259) | ||||
| #define PROC_MEM_NB_LN_MNS3LN_FILECODE                               (0xF25A) | ||||
| #define PROC_MEM_NB_LN_MNREGLN_FILECODE                              (0xF25B) | ||||
| #define PROC_MEM_NB_DA_MNDA_FILECODE                                 (0xF260) | ||||
| #define PROC_MEM_NB_DA_MNFLOWDA_FILECODE                             (0xF261) | ||||
| #define PROC_MEM_NB_DA_MNIDENDIMMDA_FILECODE                         (0xF263) | ||||
| #define PROC_MEM_NB_DA_MNMCTDA_FILECODE                              (0xF264) | ||||
| #define PROC_MEM_NB_DA_MNDCTDA_FILECODE                              (0xF265) | ||||
| #define PROC_MEM_NB_DA_MNOTDA_FILECODE                               (0xF266) | ||||
| #define PROC_MEM_NB_DA_MNPARTRAINDA_FILECODE                         (0xF267) | ||||
| #define PROC_MEM_NB_DA_MNPROTODA_FILECODE                            (0xF269) | ||||
| #define PROC_MEM_NB_DA_MNS3DA_FILECODE                               (0xF26A) | ||||
| #define PROC_MEM_NB_DA_MNREGDA_FILECODE                              (0xF26B) | ||||
| #define PROC_MEM_NB_C32_MNC32_FILECODE                               (0xF26C) | ||||
| #define PROC_MEM_NB_C32_MNDCTC32_FILECODE                            (0xF26D) | ||||
| #define PROC_MEM_NB_C32_MNFLOWC32_FILECODE                           (0xF26E) | ||||
| #define PROC_MEM_NB_C32_MNIDENDIMMC32_FILECODE                       (0xF26F) | ||||
| #define PROC_MEM_NB_C32_MNMCTC32_FILECODE                            (0xF270) | ||||
| #define PROC_MEM_NB_C32_MNOTC32_FILECODE                             (0xF271) | ||||
| #define PROC_MEM_NB_C32_MNPARTRAINC32_FILECODE                       (0xF272) | ||||
| #define PROC_MEM_NB_C32_MNPHYC32_FILECODE                            (0xF273) | ||||
| #define PROC_MEM_NB_C32_MNPROTOC32_FILECODE                          (0xF274) | ||||
| #define PROC_MEM_NB_C32_MNS3C32_FILECODE                             (0xF275) | ||||
| #define PROC_MEM_NB_C32_MNREGC32_FILECODE                            (0xF277) | ||||
| #define PROC_MEM_NB_MN_FILECODE                                      (0xF27C) | ||||
| #define PROC_MEM_NB_MNDCT_FILECODE                                   (0xF27D) | ||||
| #define PROC_MEM_NB_MNPHY_FILECODE                                   (0xF27E) | ||||
| #define PROC_MEM_NB_MNMCT_FILECODE                                   (0xF27F) | ||||
| #define PROC_MEM_NB_MNS3_FILECODE                                    (0xF280) | ||||
| #define PROC_MEM_NB_MNFLOW_FILECODE                                  (0xF281) | ||||
| #define PROC_MEM_NB_MNFEAT_FILECODE                                  (0xF282) | ||||
| #define PROC_MEM_NB_MNTRAIN2_FILECODE                                (0xF283) | ||||
| #define PROC_MEM_NB_MNTRAIN3_FILECODE                                (0xF284) | ||||
| #define PROC_MEM_NB_MNREG_FILECODE                                   (0xF285) | ||||
| #define PROC_MEM_NB_NI_MNNI_FILECODE                                 (0xF286) | ||||
| #define PROC_MEM_NB_NI_MNS3NI_FILECODE                               (0xF287) | ||||
| #define PROC_MEM_NB_NI_MNFLOWNI_FILECODE                             (0xF288) | ||||
| #define PROC_MEM_NB_PH_MNFLOWPH_FILECODE                             (0xF289) | ||||
| #define PROC_MEM_NB_PH_MNPH_FILECODE                                 (0xF28A) | ||||
| #define PROC_MEM_NB_PH_MNS3PH_FILECODE                               (0xF28B) | ||||
| #define PROC_MEM_NB_PH_MNIDENDIMMPH_FILECODE                         (0xF28C) | ||||
| #define PROC_MEM_NB_OR_MNFLOWOR_FILECODE                             (0xF290) | ||||
| #define PROC_MEM_NB_OR_MNOR_FILECODE                                 (0xF291) | ||||
| #define PROC_MEM_NB_OR_MNIDENDIMMOR_FILECODE                         (0xF292) | ||||
| #define PROC_MEM_NB_OR_MNMCTOR_FILECODE                              (0xF293) | ||||
| #define PROC_MEM_NB_OR_MNDCTOR_FILECODE                              (0xF294) | ||||
| #define PROC_MEM_NB_OR_MNOTOR_FILECODE                               (0xF295) | ||||
| #define PROC_MEM_NB_OR_MNPARTRAINOR_FILECODE                         (0xF296) | ||||
| #define PROC_MEM_NB_OR_MNPHYOR_FILECODE                              (0xF297) | ||||
| #define PROC_MEM_NB_OR_MNPROTOOR_FILECODE                            (0xF298) | ||||
| #define PROC_MEM_NB_OR_MNS3OR_FILECODE                               (0xF299) | ||||
| #define PROC_MEM_NB_OR_MNREGOR_FILECODE                              (0xF29A) | ||||
|  | ||||
| #define PROC_MEM_PS_MP_FILECODE                                      (0xF401) | ||||
| #define PROC_MEM_PS_DR_MPRDR3_FILECODE                               (0xF402) | ||||
| #define PROC_MEM_PS_HY_MPRHY3_FILECODE                               (0xF403) | ||||
| #define PROC_MEM_PS_LN_MPRLN3_FILECODE                               (0xF404) | ||||
| #define PROC_MEM_PS_DR_MPSDR3_FILECODE                               (0xF405) | ||||
| #define PROC_MEM_PS_HY_MPSHY3_FILECODE                               (0xF406) | ||||
| #define PROC_MEM_PS_LN_MPSLN3_FILECODE                               (0xF407) | ||||
| #define PROC_MEM_PS_DR_MPUDR3_FILECODE                               (0xF408) | ||||
| #define PROC_MEM_PS_HY_MPUHY3_FILECODE                               (0xF409) | ||||
| #define PROC_MEM_PS_LN_MPULN3_FILECODE                               (0xF40A) | ||||
| #define PROC_MEM_PS_DA_MPUDA3_FILECODE                               (0xF40B) | ||||
| #define PROC_MEM_PS_DA_MPSDA2_FILECODE                               (0xF40C) | ||||
| #define PROC_MEM_PS_DA_MPSDA3_FILECODE                               (0xF40D) | ||||
| #define PROC_MEM_PS_DR_MPRDR2_FILECODE                               (0xF40E) | ||||
| #define PROC_MEM_PS_DR_MPUDR2_FILECODE                               (0xF40F) | ||||
| #define PROC_MEM_PS_C32_MPRC32_3_FILECODE                            (0xF410) | ||||
| #define PROC_MEM_PS_C32_MPUC32_3_FILECODE                            (0xF411) | ||||
| #define PROC_MEM_PS_NI_MPSNI3_FILECODE                               (0xF412) | ||||
| #define PROC_MEM_PS_NI_MPUNI3_FILECODE                               (0xF413) | ||||
| #define PROC_MEM_PS_ON_MPSON3_FILECODE                               (0xF414) | ||||
| #define PROC_MEM_PS_ON_MPUON3_FILECODE                               (0xF415) | ||||
| #define PROC_MEM_PS_PH_MPSPH3_FILECODE                               (0xF416) | ||||
| #define PROC_MEM_PS_PH_MPUPH3_FILECODE                               (0xF417) | ||||
| #define PROC_MEM_PS_RB_MPSRB3_FILECODE                               (0xF418) | ||||
| #define PROC_MEM_PS_RB_MPURB3_FILECODE                               (0xF419) | ||||
| #define PROC_MEM_PS_OR_AM3_MPUORA3_FILECODE                          (0xF41A) | ||||
| #define PROC_MEM_PS_OR_AM3_MPSORA3_FILECODE                          (0xF41B) | ||||
| #define PROC_MEM_PS_OR_C32_MPRORC3_FILECODE                          (0xF41C) | ||||
| #define PROC_MEM_PS_OR_C32_MPUORC3_FILECODE                          (0xF41D) | ||||
| #define PROC_MEM_PS_OR_C32_MPLORC3_FILECODE                          (0xF41E) | ||||
| #define PROC_MEM_PS_OR_G34_MPRORG3_FILECODE                          (0xF41F) | ||||
| #define PROC_MEM_PS_OR_G34_MPUORG3_FILECODE                          (0xF420) | ||||
| #define PROC_MEM_PS_OR_G34_MPLORG3_FILECODE                          (0xF421) | ||||
| #define PROC_MEM_PS_MPRTT_FILECODE                                   (0xF422) | ||||
| #define PROC_MEM_PS_MPMAXFREQ_FILECODE                               (0xF423) | ||||
| #define PROC_MEM_PS_MPODTPAT_FILECODE                                (0xF424) | ||||
| #define PROC_MEM_PS_MPSAO_FILECODE                                   (0xF425) | ||||
| #define PROC_MEM_PS_MPMR0_FILECODE                                   (0xF426) | ||||
| #define PROC_MEM_PS_MPRC2IBT_FILECODE                                (0xF427) | ||||
| #define PROC_MEM_PS_MPRC10OPSPD_FILECODE                             (0xF428) | ||||
| #define PROC_MEM_PS_MPLRIBT_FILECODE                                 (0xF429) | ||||
| #define PROC_MEM_PS_MPLRNPR_FILECODE                                 (0xF42A) | ||||
| #define PROC_MEM_PS_MPLRNLR_FILECODE                                 (0xF42B) | ||||
| #define PROC_MEM_PS_OR_MPOR3_FILECODE                                (0xF42C) | ||||
|  | ||||
| #define PROC_MEM_TECH_MT_FILECODE                                    (0xF501) | ||||
| #define PROC_MEM_TECH_MTHDI_FILECODE                                 (0xF502) | ||||
| #define PROC_MEM_TECH_MTTDIMBT_FILECODE                              (0xF504) | ||||
| #define PROC_MEM_TECH_MTTECC_FILECODE                                (0xF505) | ||||
| #define PROC_MEM_TECH_MTTHRC_FILECODE                                (0xF506) | ||||
| #define PROC_MEM_TECH_MTTML_FILECODE                                 (0xF507) | ||||
| #define PROC_MEM_TECH_MTTOPTSRC_FILECODE                             (0xF509) | ||||
| #define PROC_MEM_TECH_MTTSRC_FILECODE                                (0xF50B) | ||||
| #define PROC_MEM_TECH_MTTEDGEDETECT_FILECODE                         (0xF50C) | ||||
| #define PROC_MEM_TECH_DDR2_MT2_FILECODE                              (0xF541) | ||||
| #define PROC_MEM_TECH_DDR2_MTOT2_FILECODE                            (0xF543) | ||||
| #define PROC_MEM_TECH_DDR2_MTSPD2_FILECODE                           (0xF544) | ||||
| #define PROC_MEM_TECH_DDR3_MT3_FILECODE                              (0xF581) | ||||
| #define PROC_MEM_TECH_DDR3_MTOT3_FILECODE                            (0xF583) | ||||
| #define PROC_MEM_TECH_DDR3_MTRCI3_FILECODE                           (0xF584) | ||||
| #define PROC_MEM_TECH_DDR3_MTSDI3_FILECODE                           (0xF585) | ||||
| #define PROC_MEM_TECH_DDR3_MTSPD3_FILECODE                           (0xF586) | ||||
| #define PROC_MEM_TECH_DDR3_MTTWL3_FILECODE                           (0xF587) | ||||
| #define PROC_MEM_TECH_DDR3_MTTECC3_FILECODE                          (0xF588) | ||||
| #define PROC_MEM_TECH_DDR3_MTLRDIMM3_FILECODE                        (0xF589) | ||||
|  | ||||
| #define PROC_RECOVERY_MEM_MRDEF_FILECODE                             (0xF801) | ||||
| #define PROC_RECOVERY_MEM_MRINIT_FILECODE                            (0xF802) | ||||
| #define PROC_RECOVERY_MEM_MRM_FILECODE                               (0xF803) | ||||
| #define PROC_RECOVERY_MEM_MRUC_FILECODE                              (0xF804) | ||||
| #define PROC_RECOVERY_MEM_NB_DR_MRNDR_FILECODE                       (0xF812) | ||||
| #define PROC_RECOVERY_MEM_NB_DR_MRNMCTDR_FILECODE                    (0xF813) | ||||
| #define PROC_RECOVERY_MEM_NB_HY_MRNDCTHY_FILECODE                    (0xF821) | ||||
| #define PROC_RECOVERY_MEM_NB_HY_MRNHY_FILECODE                       (0xF822) | ||||
| #define PROC_RECOVERY_MEM_NB_HY_MRNMCTHY_FILECODE                    (0xF823) | ||||
| #define PROC_RECOVERY_MEM_NB_HY_MRNPROTOHY_FILECODE                  (0xF825) | ||||
| #define PROC_RECOVERY_MEM_NB_LN_MRNDCTLN_FILECODE                    (0xF831) | ||||
| #define PROC_RECOVERY_MEM_NB_LN_MRNMCTLN_FILECODE                    (0xF832) | ||||
| #define PROC_RECOVERY_MEM_NB_LN_MRNLN_FILECODE                       (0xF833) | ||||
| #define PROC_RECOVERY_MEM_NB_DA_MRNDA_FILECODE                       (0xF842) | ||||
| #define PROC_RECOVERY_MEM_NB_DA_MRNMCTDA_FILECODE                    (0xF843) | ||||
| #define PROC_RECOVERY_MEM_NB_NI_MRNNI_FILECODE                       (0xF845) | ||||
| #define PROC_RECOVERY_MEM_NB_C32_MRNC32_FILECODE                     (0xF851) | ||||
| #define PROC_RECOVERY_MEM_NB_C32_MRNMCTC32_FILECODE                  (0xF852) | ||||
| #define PROC_RECOVERY_MEM_NB_C32_MRNPROTOC32_FILECODE                (0xF853) | ||||
| #define PROC_RECOVERY_MEM_NB_ON_MRNDCTON_FILECODE                    (0xF861) | ||||
| #define PROC_RECOVERY_MEM_NB_ON_MRNMCTON_FILECODE                    (0xF862) | ||||
| #define PROC_RECOVERY_MEM_NB_ON_MRNON_FILECODE                       (0xF863) | ||||
| #define PROC_RECOVERY_MEM_NB_PH_MRNPH_FILECODE                       (0xF871) | ||||
| #define PROC_RECOVERY_MEM_NB_RB_MRNRB_FILECODE                       (0xF881) | ||||
| #define PROC_RECOVERY_MEM_TECH_MRTTPOS_FILECODE                      (0xF8C1) | ||||
| #define PROC_RECOVERY_MEM_TECH_MRTTSRC_FILECODE                      (0xF8C2) | ||||
| #define PROC_RECOVERY_MEM_TECH_DDR3_MRT3_FILECODE                    (0xF8C3) | ||||
| #define PROC_RECOVERY_MEM_TECH_DDR3_MRTRCI3_FILECODE                 (0xF8C4) | ||||
| #define PROC_RECOVERY_MEM_TECH_DDR3_MRTSDI3_FILECODE                 (0xF8C5) | ||||
| #define PROC_RECOVERY_MEM_TECH_DDR3_MRTSPD3_FILECODE                 (0xF8C6) | ||||
| #define PROC_RECOVERY_MEM_TECH_DDR3_MRTTWL3_FILECODE                 (0xF8C7) | ||||
| #define PROC_RECOVERY_MEM_NB_MRN_FILECODE                            (0xF8C8) | ||||
| #define PROC_RECOVERY_MEM_NB_MRNDCT_FILECODE                         (0xF8C9) | ||||
| #define PROC_RECOVERY_MEM_NB_MRNMCT_FILECODE                         (0xF8CA) | ||||
| #define PROC_RECOVERY_MEM_NB_MRNTRAIN3_FILECODE                      (0xF8CB) | ||||
| #define PROC_RECOVERY_MEM_TECH_MRTTHRC_FILECODE                      (0xF8CC) | ||||
| #define PROC_RECOVERY_MEM_NB_OR_MRNDCTOR_FILECODE                    (0xF8CD) | ||||
| #define PROC_RECOVERY_MEM_NB_OR_MRNOR_FILECODE                       (0xF8CE) | ||||
| #define PROC_RECOVERY_MEM_NB_OR_MRNMCTOR_FILECODE                    (0xF8CF) | ||||
| #define PROC_RECOVERY_MEM_NB_OR_MRNPROTOOR_FILECODE                  (0xF8D0) | ||||
| #define PROC_RECOVERY_MEM_PS_MRP_FILECODE                            (0xF8E0) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPRTT_FILECODE                         (0xF8E1) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPODTPAT_FILECODE                      (0xF8E2) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPSAO_FILECODE                         (0xF8E3) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPMR0_FILECODE                         (0xF8E4) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPRC2IBT_FILECODE                      (0xF8E5) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPRC10OPSPD_FILECODE                   (0xF8E6) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPLRIBT_FILECODE                       (0xF8E7) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPLRNPR_FILECODE                       (0xF8E8) | ||||
| #define PROC_RECOVERY_MEM_PS_MRPLRNLR_FILECODE                       (0xF8E9) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_MRPOR3_FILECODE                      (0xF8EA) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_AM3_MRPSORA3_FILECODE                (0xF8EB) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_AM3_MRPUORA3_FILECODE                (0xF8EC) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_C32_MRPUORC3_FILECODE                (0xF8ED) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_C32_MRPRORC3_FILECODE                (0xF8EE) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_C32_MRPLORC3_FILECODE                (0xF8EF) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_G34_MRPUORG3_FILECODE                (0xF8F0) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_G34_MRPRORG3_FILECODE                (0xF8F1) | ||||
| #define PROC_RECOVERY_MEM_PS_OR_G34_MRPLORG3_FILECODE                (0xF8F2) | ||||
|  | ||||
| #endif // _FILECODE_H_ | ||||
| @@ -1,203 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * General Services | ||||
|  * | ||||
|  * Provides Services similar to the external General Services API, except | ||||
|  * suited to use within AGESA components.  Socket, Core and PCI identification. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Common | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _GENERAL_SERVICES_H_ | ||||
| #define _GENERAL_SERVICES_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #define NUMBER_OF_EVENT_DATA_PARAMS 4 | ||||
|  | ||||
| /** | ||||
|  * AMD Device id for MMIO check. | ||||
|  */ | ||||
| #define AMD_DEV_VEN_ID 0x1022 | ||||
| #define AMD_DEV_VEN_ID_ADDRESS 0 | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * An AGESA Event Log entry. | ||||
|  */ | ||||
| typedef struct { | ||||
|   AGESA_STATUS EventClass;   ///< The severity of the event, its associated AGESA_STATUS. | ||||
|   UINT32   EventInfo;        ///< Uniquely identifies the event. | ||||
|   UINT32   DataParam1;       ///< Event specific additional data | ||||
|   UINT32   DataParam2;       ///< Event specific additional data | ||||
|   UINT32   DataParam3;       ///< Event specific additional data | ||||
|   UINT32   DataParam4;       ///< Event specific additional data | ||||
| } AGESA_EVENT; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Get a specified Core's APIC ID. | ||||
|  * | ||||
|  * @param[in]    StdHeader    Header for library and services. | ||||
|  * @param[in]    Socket       The Core's Socket. | ||||
|  * @param[in]    Core         The Core id. | ||||
|  * @param[out]   ApicAddress  The Core's APIC ID. | ||||
|  * @param[out]   AgesaStatus  Aggregates AGESA_STATUS for external interface, Always Succeeds. | ||||
|  * | ||||
|  * @retval       TRUE         The core is present, APIC Id valid | ||||
|  * @retval       FALSE        The core is not present, APIC Id not valid. | ||||
|  */ | ||||
| BOOLEAN | ||||
| GetApicId ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN       UINT32            Socket, | ||||
|   IN       UINT32            Core, | ||||
|      OUT   UINT8             *ApicAddress, | ||||
|      OUT   AGESA_STATUS      *AgesaStatus | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * Get Processor Module's PCI Config Space address. | ||||
|  * | ||||
|  * @param[in]    StdHeader    Header for library and services. | ||||
|  * @param[in]    Socket       The Core's Socket. | ||||
|  * @param[in]    Module       The Module in that Processor | ||||
|  * @param[out]   PciAddress   The Processor's PCI Config Space address (Function 0, Register 0) | ||||
|  * @param[out]   AgesaStatus  Aggregates AGESA_STATUS for external interface, Always Succeeds. | ||||
|  * | ||||
|  * @retval       TRUE         The core is present, PCI Address valid | ||||
|  * @retval       FALSE        The core is not present, PCI Address not valid. | ||||
|  */ | ||||
| BOOLEAN | ||||
| GetPciAddress ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN       UINT32            Socket, | ||||
|   IN       UINT32            Module, | ||||
|      OUT   PCI_ADDR          *PciAddress, | ||||
|      OUT   AGESA_STATUS      *AgesaStatus | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * "Who am I" for the current running core. | ||||
|  * | ||||
|  * @param[in]    StdHeader    Header for library and services. | ||||
|  * @param[out]   Socket       The current Core's Socket | ||||
|  * @param[out]   Module       The current Core's Processor Module | ||||
|  * @param[out]   Core         The current Core's core id. | ||||
|  * @param[out]   AgesaStatus  Aggregates AGESA_STATUS for external interface, Always Succeeds. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| IdentifyCore ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|      OUT   UINT32            *Socket, | ||||
|      OUT   UINT32            *Module, | ||||
|      OUT   UINT32            *Core, | ||||
|      OUT   AGESA_STATUS      *AgesaStatus | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  *  A boolean function determine executed CPU is BSP core. | ||||
|  */ | ||||
| BOOLEAN | ||||
| IsBsp ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader, | ||||
|      OUT   AGESA_STATUS      *AgesaStatus | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function logs AGESA events into the event log. | ||||
|  */ | ||||
| VOID | ||||
| PutEventLog ( | ||||
|   IN       AGESA_STATUS EventClass, | ||||
|   IN       UINT32 EventInfo, | ||||
|   IN       UINT32 DataParam1, | ||||
|   IN       UINT32 DataParam2, | ||||
|   IN       UINT32 DataParam3, | ||||
|   IN       UINT32 DataParam4, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function gets event logs from the circular buffer. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| GetEventLog ( | ||||
|      OUT   AGESA_EVENT *EventRecord, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function gets event logs from the circular buffer without flushing the entry. | ||||
|  */ | ||||
| BOOLEAN | ||||
| PeekEventLog ( | ||||
|      OUT   AGESA_EVENT *EventRecord, | ||||
|   IN       UINT16 Index, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * This routine programs the registers necessary to get the PCI MMIO mechanism | ||||
|  * up and functioning. | ||||
|  */ | ||||
| VOID | ||||
| InitializePciMmio ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif  // _GENERAL_SERVICES_H_ | ||||
| @@ -1,96 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * GNB API definition. | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:     AGESA | ||||
|  * @e sub-project: GNB | ||||
|  * @e \$Revision: 44325 $   @e \$Date: 2010-12-22 03:29:53 -0700 (Wed, 22 Dec 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  **************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _GNBINTERFACE_H_ | ||||
| #define _GNBINTERFACE_H_ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtReset ( | ||||
|   IN      AMD_CONFIG_PARAMS       *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtEarly ( | ||||
|   IN OUT  AMD_EARLY_PARAMS        *EarlyParamsPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtPost ( | ||||
|   IN OUT  AMD_POST_PARAMS         *PostParamsPtr | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| GnbInitDataStructAtEnvDef ( | ||||
|   IN OUT  GNB_ENV_CONFIGURATION   *GnbEnvConfigPtr, | ||||
|   IN      AMD_ENV_PARAMS          *EnvParamsPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtEnv ( | ||||
|   IN       AMD_ENV_PARAMS          *EnvParamsPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtMid ( | ||||
|   IN OUT   AMD_MID_PARAMS          *MidParamsPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtLate ( | ||||
|   IN OUT   AMD_LATE_PARAMS         *LateParamsPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtPostAfterDram ( | ||||
|   IN OUT   AMD_POST_PARAMS         *PostParamsPtr | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| AmdGnbRecovery ( | ||||
|   IN       AMD_CONFIG_PARAMS        *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif | ||||
| @@ -1,232 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  GNB | ||||
|  * @e \$Revision: 44325 $   @e \$Date: 2010-12-22 03:29:53 -0700 (Wed, 22 Dec 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
| ***************************************************************************** | ||||
| * | ||||
| * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
| * All rights reserved. | ||||
| * | ||||
| * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions are met: | ||||
| *     * Redistributions of source code must retain the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer. | ||||
| *     * Redistributions in binary form must reproduce the above copyright | ||||
| *       notice, this list of conditions and the following disclaimer in the | ||||
| *       documentation and/or other materials provided with the distribution. | ||||
| *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
| *       its contributors may be used to endorse or promote products derived | ||||
| *       from this software without specific prior written permission. | ||||
| * | ||||
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
| * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| * | ||||
| * *************************************************************************** | ||||
| * | ||||
| */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U  R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Reset Stub | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in] StdHeader     Standard configuration header | ||||
|  * @retval    AGESA_STATUS  Always succeeds | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtReset ( | ||||
|   IN      AMD_CONFIG_PARAMS       *StdHeader | ||||
|   ) | ||||
| { | ||||
|  | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Early Stub | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in,out] EarlyParamsPtr    Pointer to early configuration params. | ||||
|  * @retval        AGESA_STATUS      Always succeeds | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtEarly ( | ||||
|   IN OUT   AMD_EARLY_PARAMS        *EarlyParamsPtr | ||||
|   ) | ||||
| { | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Default constructor of GNB configuration at Env | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in] GnbEnvConfigPtr     Pointer to gnb env configuration params. | ||||
|  * @param[in] EnvParamsPtr        Pointer to env configuration params. | ||||
|  */ | ||||
| VOID | ||||
| GnbInitDataStructAtEnvDef ( | ||||
|   IN OUT  GNB_ENV_CONFIGURATION   *GnbEnvConfigPtr, | ||||
|   IN      AMD_ENV_PARAMS          *EnvParamsPtr | ||||
|   ) | ||||
| { | ||||
|  | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Env | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in] EnvParamsPtr        Pointer to env configuration params. | ||||
| * @retval     AGESA_STATUS        Always succeeds | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtEnv ( | ||||
|   IN       AMD_ENV_PARAMS          *EnvParamsPtr | ||||
|   ) | ||||
| { | ||||
|  | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Post | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in,out] PostParamsPtr    Pointer to Post configuration params. | ||||
|  * @retval        AGESA_STATUS     Always succeeds | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtPost ( | ||||
|   IN OUT  AMD_POST_PARAMS         *PostParamsPtr | ||||
|   ) | ||||
| { | ||||
|  | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Mid post | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in,out] MidParamsPtr    Pointer to mid configuration params. | ||||
|  * @retval        AGESA_STATUS    Always succeeds | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtMid ( | ||||
|   IN OUT   AMD_MID_PARAMS          *MidParamsPtr | ||||
|   ) | ||||
| { | ||||
|  | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Late post | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in,out] LateParamsPtr    Pointer to late configuration params. | ||||
|  * @retval        AGESA_STATUS     Always succeeds | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtLate ( | ||||
|   IN OUT   AMD_LATE_PARAMS         *LateParamsPtr | ||||
|   ) | ||||
| { | ||||
|  | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * AmdGnbRecovery | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in] StdHeader     Standard configuration header | ||||
|  * @retval    AGESA_STATUS  Always succeeds | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AmdGnbRecovery ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Init GNB at Post after DRAM init | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in]     PostParamsPtr Pointer to post configuration parameters | ||||
|  * @retval                      Initialization status. | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| GnbInitAtPostAfterDram ( | ||||
|   IN OUT   AMD_POST_PARAMS         *PostParamsPtr | ||||
|   ) | ||||
| { | ||||
|   return  AGESA_SUCCESS; | ||||
| } | ||||
| @@ -1,919 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD IDS Routines | ||||
|  * | ||||
|  * Contains AMD AGESA Integrated Debug Macros | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  IDS | ||||
|  * @e \$Revision: 44325 $   @e \$Date: 2010-12-22 03:29:53 -0700 (Wed, 22 Dec 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|   /* Macros to aid debugging */ | ||||
|   /* These definitions expand to zero (0) bytes of code when disabled */ | ||||
|  | ||||
| #ifndef _IDS_H_ | ||||
| #define _IDS_H_ | ||||
|  | ||||
| #undef FALSE | ||||
| #undef TRUE | ||||
| #define FALSE 0 | ||||
| #define TRUE  1 | ||||
| // Proto type for optionsids.h | ||||
| typedef UINT32 IDS_STATUS;  ///< Status of IDS function. | ||||
| #define IDS_SUCCESS         ((IDS_STATUS) 0x00000000) ///< IDS Function is Successful. | ||||
| #define IDS_UNSUPPORTED     ((IDS_STATUS) 0xFFFFFFFF) ///< IDS Function is not existed. | ||||
|  | ||||
| #define IDS_STRINGIZE(a) #a ///< for define stringize macro | ||||
| /** | ||||
|  *  IDS Option Hook Points | ||||
|  * | ||||
|  *  These are the values to indicate hook point in AGESA for IDS Options. | ||||
|  * | ||||
|  */ | ||||
| typedef enum {                        //vv- for debug reference only | ||||
|   IDS_INIT_EARLY_BEFORE,              ///< 00 Option Hook Point before AGESA function AMD_INIT_EARLY. | ||||
|                                           ///<   IDS Object is initialized. | ||||
|                                           ///<   Override CPU Core Leveling Mode. | ||||
|                                           ///<   Set P-State in Post | ||||
|   IDS_INIT_EARLY_AFTER,               ///< 01 Option Hook Point after AGESA function AMD_INIT_EARLY. | ||||
|   IDS_INIT_LATE_BEFORE,               ///< 02 Option Hook Point before AGESA function AMD_INIT_LATE. | ||||
|                                           ///< It will be used to control the following tables. | ||||
|                                           ///<   ACPI P-State Table (_PSS, XPSS, _PCT, _PSD, _PPC) | ||||
|                                           ///<   ACPI SRAT Table | ||||
|                                           ///<   ACPI SLIT Table | ||||
|                                           ///<   ACPI WHEA Table | ||||
|                                           ///<   DMI Table | ||||
|   IDS_INIT_LATE_AFTER,                ///< 03 Option Hook Point after AGESA function AMD_INIT_LATE. | ||||
|   IDS_INIT_MID_BEFORE,                ///< 04 Option Hook Point before AGESA function AMD_INIT_MID. | ||||
|   IDS_INIT_MID_AFTER,                 ///< 05 Option Hook Point after AGESA function AMD_INIT_MID. | ||||
|   IDS_INIT_POST_BEFORE,               ///< 06 Option Hook Point before AGESA function AMD_INIT_POST. | ||||
|                                           ///<   Control Interleaving and DRAM memory hole | ||||
|                                           ///<   Override the setting of ECC Control | ||||
|                                           ///<   Override the setting of Online Spare Rank | ||||
|   IDS_INIT_POST_AFTER,                ///< 07 Option Hook Point after AGESA function AMD_INIT_POST. | ||||
|   IDS_INIT_RESET_BEFORE,              ///< 08 Option Hook Point before AGESA function AMD_INIT_RESET. | ||||
|   IDS_INIT_RESET_AFTER,               ///< 09 Option Hook Point after AGESA function AMD_INIT_RESET. | ||||
|   IDS_INIT_POST_MID,                  ///< 0a Option Hook Point after AGESA function AMD_INIT_POST. | ||||
|   IDS_BEFORE_S3_SAVE,                 ///< 0b override any settings before S3 save. | ||||
|   IDS_BEFORE_S3_RESTORE,              ///< 0c  override any settings before S3 restore | ||||
|   IDS_AFTER_S3_SAVE,                  ///< 0d Override any settings after S3 save | ||||
|   IDS_AFTER_S3_RESTORE,               ///< 0e Override any settings after S3 restore | ||||
|   IDS_BEFORE_DQS_TRAINING,            ///< 0f override any settings before DQS training | ||||
|   IDS_BEFORE_DRAM_INIT,               ///< 10 override any settings before Dram initialization | ||||
|   IDS_BEFORE_MEM_FREQ_CHG,            ///< 11 override settings before MemClk frequency change | ||||
|   IDS_BEFORE_WARM_RESET ,             ///< 12 Override PCI or MSR Registers Before Warm Reset | ||||
|   IDS_BEFORE_MEM_INIT,                ///< 13 Override PCI or MSR Registers Before Memory Init | ||||
|   IDS_BEFORE_PCI_INIT,                ///< 14 Override PCI or MSR Registers Before PCI Init | ||||
|   IDS_BEFORE_OS,                      ///< 15 Override PCI or MSR Registers Before booting to OS | ||||
|   IDS_UCODE,                          ///< 16 Enable or Disable microcode patching | ||||
|   IDS_BEFORE_AP_EARLY_HALT,           ///< 17 Option Hook Point before AP early halt | ||||
|  | ||||
|   IDS_PLATFORM_RSVD1 = 0x38,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD2 = 0x39,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD3 = 0x3a,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD4 = 0x3b,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD5 = 0x3c,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD6 = 0x3d,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD7 = 0x3e,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|   IDS_PLATFORM_RSVD8 = 0x3f,          ///< from 0x38 to 0x3f will reserved for platform used | ||||
|  | ||||
|   // All the above timing point is used by BVM, their value should never be changed | ||||
|   IDS_HT_CONTROL,                     ///< 40 Override the setting of HT Link Control | ||||
|   IDS_HT_TRISTATE,                    ///< 41 Enable or Disable HT Tri-state during an LDTSTP# | ||||
|   IDS_INIT_DRAM_TABLE,                ///< 42 Generate override table for Dram Timing | ||||
|                                           ///< Dram Controller, Drive Strength and DQS Timing | ||||
|   IDS_GET_DRAM_TABLE,                 ///< 43 Generate override table for Dram Timing | ||||
|   IDS_GANGING_MODE,                   ///< 44 override Memory Mode Unganged | ||||
|   IDS_POWERDOWN_MODE,                 ///< 45 override Power Down Mode | ||||
|   IDS_BURST_LENGTH32,                 ///< 46 override Burst Length32 | ||||
|   IDS_ALL_MEMORY_CLOCK,               ///< 47 override All Memory Clks Enable | ||||
|   IDS_ECC,                            ///< 48 override ECC parameter | ||||
|   IDS_ECCSYMBOLSIZE,                  ///< 49 override ECC symbol size | ||||
|   IDS_CPU_Early_Override,             ///< 4a override CPU early parameter | ||||
|   IDS_CACHE_FLUSH_HLT,                ///< 4b override Cache Flush Hlt | ||||
|   IDS_CHANNEL_INTERLEAVE,             ///< 4c override Channel Interleave | ||||
|   IDS_MEM_ERROR_RECOVERY,             ///< 4d override memory error recovery | ||||
|   IDS_MEM_RETRAIN_TIMES,              ///< 4e override memory retrain times | ||||
|   IDS_MEM_SIZE_OVERLAY,               ///< 4f Override the syslimit | ||||
|   IDS_HT_ASSIST,                      ///< 50 Override Probe Filter | ||||
|   IDS_CHECK_NEGATIVE_WL,              ///< 51 Check for negative write leveling result | ||||
|   IDS_DLL_SHUT_DOWN,                  ///< 52 Check for Dll Shut Down | ||||
|   IDS_POR_MEM_FREQ,                   ///< 53 Entry to enable/disable MemClk frequency enforcement | ||||
|   IDS_PHY_DLL_STANDBY_CTRL,           ///< 54 Enable/Disable Phy DLL standby feature | ||||
|   IDS_PLATFORMCFG_OVERRIDE,           ///< 55 Hook for Override PlatformConfig structure | ||||
|   IDS_LOADCARD_ERROR_RECOVERY,        ///< 56 Special error handling for load card support | ||||
|   IDS_MEM_IGNORE_ERROR,               ///< 57 Ignore error and do not do fatal exit in memory | ||||
|   IDS_GNB_SMU_SERVICE_CONFIG,         ///< 58 Config GNB SMU service | ||||
|   IDS_GNB_ORBDYNAMIC_WAKE,            ///< 59 config GNB dynamic wake | ||||
|   IDS_GNB_PLATFORMCFG_OVERRIDE,       ///< 5a override ids gnb platform config | ||||
|   IDS_GNB_LCLK_DPM_EN,                ///< 5b override GNB LCLK DPM configuration | ||||
|   IDS_GNB_LCLK_DEEP_SLEEP,            ///< 5c override GNB LCLK DPM deep sleep | ||||
|   IDS_GNB_CLOCK_GATING,               ///< 5d Override GNB Clock gating config | ||||
|   IDS_NB_PSTATE_DIDVID,               ///< 5e Override NB P-state settings | ||||
|   IDS_CPB_CTRL,                       ///< 5f Config the Core peformance boost feature | ||||
|   IDS_HTC_CTRL,                       ///< 60 Hook for Hardware Thermal Control | ||||
|   IDS_CC6_WORKAROUND,                 ///< 61 Hook for skip CC6 work around | ||||
|   IDS_MEM_MR0,                        ///< 62 Hook for override Memory Mr0 register | ||||
|   IDS_REG_TABLE,                      ///< 63 Hook for add IDS register table to the loop | ||||
|   IDS_NBBUFFERALLOCATIONATEARLY,      ///< 64 Hook for override North bridge bufer allocation | ||||
|   IDS_BEFORE_S3_SPECIAL,              ///< 65 Hook to bypass S3 special functions | ||||
|   IDS_SET_PCI_REGISTER_ENTRY,         ///< 66 Hook to SetRegisterForPciEntry | ||||
|   IDS_ERRATUM463_WORKAROUND,          ///< 67 Hook to Erratum 463 workaround | ||||
|   IDS_BEFORE_MEMCLR,                  ///< 68 Hook before set Memclr bit | ||||
|   IDS_OVERRIDE_IO_CSTATE,             ///< 69 Hook for override io C-state setting | ||||
|   IDS_NBPSDIS_OVERRIDE,               ///< 6a Hook for override NB pstate disable setting | ||||
|   IDS_NBPS_REG_OVERRIDE,              ///< 6b Hook for override Memory NBps reg | ||||
|   IDS_LOW_POWER_PSTATE,               ///< 6c Hook for disalbe Low power_Pstates feature | ||||
|   IDS_CST_CREATE,                     ///< 6d Hook for create _CST | ||||
|   IDS_CST_SIZE,                       ///< 6e Hook for get _CST size | ||||
|   IDS_ENFORCE_VDDIO,                  ///< 6f Hook to override VDDIO | ||||
|   IDS_SKIP_PERFORMANCE_OPT,           ///< 70 Hook to skip performance optimization | ||||
|   IDS_INIT_MEM_REG_TABLE,             ///< 71 Hook for init memory register table | ||||
|   IDS_SKIP_FUSED_MAX_RATE             ///< 72 Hook to skip fused max rate cap | ||||
| } AGESA_IDS_OPTION; | ||||
|  | ||||
| #include "OptionsIds.h" | ||||
| #include "Filecode.h" | ||||
|  | ||||
| /* Initialize IDS controls */ | ||||
| #ifndef IDSOPT_IDS_ENABLED | ||||
|   #define IDSOPT_IDS_ENABLED        FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_CONTROL_ENABLED | ||||
|   #define IDSOPT_CONTROL_ENABLED    FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_TRACING_ENABLED | ||||
|   #define IDSOPT_TRACING_ENABLED    FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_TRACE_USER_OPTIONS | ||||
|   #define IDSOPT_TRACE_USER_OPTIONS TRUE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_PERF_ANALYSIS | ||||
|   #define IDSOPT_PERF_ANALYSIS      FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_HEAP_CHECKING | ||||
|   #define IDSOPT_HEAP_CHECKING           FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_ASSERT_ENABLED | ||||
|   #define IDSOPT_ASSERT_ENABLED         FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_ERROR_TRAP_ENABLED | ||||
|   #define IDSOPT_ERROR_TRAP_ENABLED   FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_CAR_CORRUPTION_CHECK_ENABLED | ||||
|   #define IDSOPT_CAR_CORRUPTION_CHECK_ENABLED   FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_DEBUG_CODE_ENABLED | ||||
|   #define IDSOPT_DEBUG_CODE_ENABLED   FALSE | ||||
| #endif | ||||
|  | ||||
| #ifndef IDSOPT_C_OPTIMIZATION_DISABLED | ||||
|   #define IDSOPT_C_OPTIMIZATION_DISABLED   FALSE | ||||
| #endif | ||||
|  | ||||
| #if IDSOPT_IDS_ENABLED == FALSE | ||||
|   #undef  IDSOPT_CONTROL_ENABLED | ||||
|   #undef  IDSOPT_TRACING_ENABLED | ||||
|   #undef  IDSOPT_PERF_ANALYSIS | ||||
|   #undef  IDSOPT_HEAP_CHECKING | ||||
|   #undef  IDSOPT_ASSERT_ENABLED | ||||
|   #undef  IDSOPT_ERROR_TRAP_ENABLED | ||||
|   #undef  IDSOPT_CAR_CORRUPTION_CHECK_ENABLED | ||||
|   #undef  IDSOPT_DEBUG_CODE_ENABLED | ||||
|   #undef  IDSOPT_TRACE_USER_OPTIONS | ||||
|  | ||||
|   #define IDSOPT_CONTROL_ENABLED    FALSE | ||||
|   #define IDSOPT_TRACING_ENABLED    FALSE | ||||
|   #define IDSOPT_PERF_ANALYSIS      FALSE | ||||
|   #define IDSOPT_HEAP_CHECKING      FALSE | ||||
|   #define IDSOPT_ASSERT_ENABLED     FALSE | ||||
|   #define IDSOPT_ERROR_TRAP_ENABLED FALSE | ||||
|   #define IDSOPT_CAR_CORRUPTION_CHECK_ENABLED FALSE | ||||
|   #define IDSOPT_DEBUG_CODE_ENABLED FALSE | ||||
|   #define IDSOPT_TRACE_USER_OPTIONS FALSE | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  *  Make a Progress Report to the User. | ||||
|  * | ||||
|  *  This Macro is always enabled. The default action is to write the TestPoint value | ||||
|  *  to an I/O port. The I/O port is 8 bits in size and the default address is 0x80. | ||||
|  *  IBVs can change AGESA's default port by defining IDS_DEBUG_PORT to desired port | ||||
|  *  in OptionsIds.h in their build tip. | ||||
|  * | ||||
|  *  @param[in]      TestPoint       The value for display indicating progress | ||||
|  *  @param[in,out]  StdHeader       Pointer of AMD_CONFIG_PARAMS | ||||
|  * | ||||
|  **/ | ||||
|  | ||||
| #define AGESA_TESTPOINT(TestPoint, StdHeader) | ||||
|  | ||||
| #ifndef IDS_DEBUG_PORT | ||||
|   #define IDS_DEBUG_PORT  0x80 | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * @def STOP_HERE | ||||
|  *  (macro) - Causes program to halt. This is @b only for use during active debugging . | ||||
|  * | ||||
|  *  Causes the program to halt and display the file number of the source of the | ||||
|  *  halt (displayed in decimal). | ||||
|  * | ||||
|  **/ | ||||
| #if IDSOPT_IDS_ENABLED == TRUE | ||||
|   #ifdef STOP_CODE | ||||
|     #undef STOP_CODE | ||||
|   #endif | ||||
|   #define STOP_CODE (((UINT32)FILECODE)*0x10000 + \ | ||||
|                       ((__LINE__) % 10) + (((__LINE__ / 10) % 10)*0x10) + \ | ||||
|                       (((__LINE__ / 100) % 10)*0x100) + (((__LINE__ / 1000) % 10)*0x1000)) | ||||
|   #define STOP_HERE | ||||
| #else | ||||
|   #define STOP_HERE | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * @def ASSERT | ||||
|  *  Test an assertion that the given statement is True. | ||||
|  * | ||||
|  *  The statement is evaluated to a boolean value. If the statement is True, | ||||
|  *  then no action is taken (no error). If the statement is False, a error stop | ||||
|  *  is generated to halt the program. Used for testing for fatal errors that | ||||
|  *  must be resolved before production. This is used to do parameter checks, | ||||
|  *  bounds checking, range checks and 'sanity' checks. | ||||
|  * | ||||
|  * @param[in]   conditional    Assert that evaluating this conditional results in TRUE. | ||||
|  * | ||||
|  **/ | ||||
| #ifndef ASSERT | ||||
|   #if IDSOPT_ASSERT_ENABLED == TRUE | ||||
|     #ifdef STOP_CODE | ||||
|       #undef STOP_CODE | ||||
|     #endif | ||||
|     #define STOP_CODE (((UINT32)FILECODE)*0x10000 + \ | ||||
|                         ((__LINE__) % 10) + (((__LINE__ / 10) % 10)*0x10) + \ | ||||
|                         (((__LINE__ / 100) % 10)*0x100) + (((__LINE__ / 1000) % 10)*0x1000)) | ||||
|  | ||||
|     #define ASSERT(conditional) | ||||
|   #else | ||||
|     #define ASSERT(conditional) | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| #if IDSOPT_CAR_CORRUPTION_CHECK_ENABLED == TRUE | ||||
|   #undef  IDSOPT_ERROR_TRAP_ENABLED | ||||
|   #define IDSOPT_ERROR_TRAP_ENABLED TRUE | ||||
|   #define IDS_CAR_CORRUPTION_CHECK(StdHeader) | ||||
| #else | ||||
|   #define IDS_CAR_CORRUPTION_CHECK(StdHeader) | ||||
| #endif | ||||
| /** | ||||
|  * @def DEBUG_CODE | ||||
|  * Make the code active when IDSOPT_DEBUG_CODE_ENABLED enable | ||||
|  * | ||||
|  */ | ||||
| #ifndef DEBUG_CODE | ||||
|   #if IDSOPT_DEBUG_CODE_ENABLED == TRUE | ||||
|     #define  DEBUG_CODE(Code) | ||||
|   #else | ||||
|     #define  DEBUG_CODE(Code) | ||||
|   #endif | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * @def IDS_ERROR_TRAP | ||||
|  * Trap AGESA Error events with stop code display. | ||||
|  * | ||||
|  * Works similarly to use of "ASSERT (FALSE);" | ||||
|  * | ||||
|  */ | ||||
| #if IDSOPT_ERROR_TRAP_ENABLED == TRUE | ||||
|   #ifdef STOP_CODE | ||||
|     #undef STOP_CODE | ||||
|   #endif | ||||
|   #define STOP_CODE (((UINT32)FILECODE)*0x10000 + \ | ||||
|                       ((__LINE__) % 10) + (((__LINE__ / 10) % 10)*0x10) + \ | ||||
|                       (((__LINE__ / 100) % 10)*0x100) + (((__LINE__ / 1000) % 10)*0x1000)) | ||||
|  | ||||
|   #define IDS_ERROR_TRAP | ||||
| #else | ||||
|   #define IDS_ERROR_TRAP | ||||
| #endif | ||||
|  | ||||
| ///give the extended Macro default value | ||||
| #ifndef __IDS_EXTENDED__ | ||||
|   #define IDS_EXTENDED_HOOK(idsoption, dataptr, idsnvptr, stdheader) IDS_SUCCESS | ||||
|   #define IDS_INITIAL_F10_PM_STEP | ||||
|   #define IDS_INITIAL_F12_PM_STEP | ||||
|   #define IDS_INITIAL_F14_PM_STEP | ||||
|   #define IDS_INITIAL_F15_PM_STEP | ||||
|   #define IDS_EXTENDED_GET_DATA_EARLY(data, StdHeader) | ||||
|   #define IDS_EXTENDED_GET_DATA_LATE(data, StdHeader) | ||||
|   #define IDS_EXTENDED_HEAP_SIZE 0 | ||||
|   #define IDS_EXT_INCLUDE_F10(file) | ||||
|   #define IDS_EXT_INCLUDE_F12(file) | ||||
|   #define IDS_EXT_INCLUDE_F14(file) | ||||
|   #define IDS_EXT_INCLUDE_F15(file) | ||||
|   #define IDS_EXT_INCLUDE(file) | ||||
| #endif | ||||
|  | ||||
| #ifndef IDS_NUM_NV_ITEM | ||||
|   #define IDS_NUM_NV_ITEM (IDS_NUM_EXT_NV_ITEM) | ||||
| #endif | ||||
|  | ||||
| #if IDSOPT_CONTROL_ENABLED == TRUE | ||||
|   #define IDS_OPTION_HOOK(IdsOption, DataPtr, StdHeader) | ||||
|  | ||||
|   #define IDS_OPTION_CALLOUT(CallOutId, DataPtr, StdHeader) | ||||
| #else | ||||
|   #define IDS_OPTION_HOOK(IdsOption, DataPtr, StdHeader) | ||||
|  | ||||
|   #define IDS_OPTION_CALLOUT(CallOutId, DataPtr, StdHeader) | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  *  Macro to add a *skip* hook for IDS options | ||||
|  * | ||||
|  *  The default minimal action is to do nothing and there is no any code to increase. | ||||
|  *  For debug environments, IDS dispatcher function will be called to perform | ||||
|  *  the detailed action and to skip AGESA code if necessary. | ||||
|  * | ||||
|  * @param[in]       IdsOption       IDS Option ID for this hook point | ||||
|  * @param[in, out]  DataPtr         Data Pointer to override | ||||
|  * @param[in, out]  StdHeader       Pointer of AMD_CONFIG_PARAMS | ||||
|  * | ||||
|  * | ||||
|  **/ | ||||
|  | ||||
| #if IDSOPT_CONTROL_ENABLED == TRUE | ||||
|   #define IDS_SKIP_HOOK(IdsOption, DataPtr, StdHeader) | ||||
| #else | ||||
|   #define IDS_SKIP_HOOK(IdsOption, DataPtr, StdHeader) | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  *  Macro to add a heap manager routine | ||||
|  * | ||||
|  *  when memory is allocated the heap manager actually allocates two extra dwords of data, | ||||
|  *  one dword buffer before the actual memory, and one dword afterwards. | ||||
|  *  a complete heap walk and check to be performed at any time. | ||||
|  *  it would ASSERT if the heap is corrupt | ||||
|  * | ||||
|  * @param[in]  StdHeader       Pointer of AMD_CONFIG_PARAMS | ||||
|  * | ||||
|  * | ||||
|  **/ | ||||
|  | ||||
| // Heap debug feature | ||||
| #define SENTINEL_BEFORE_VALUE 0x64616548    // "Head" | ||||
| #define SENTINEL_AFTER_VALUE  0x6C696154    // "Tail" | ||||
| #if IDSOPT_IDS_ENABLED == TRUE | ||||
|   #if IDSOPT_HEAP_CHECKING == TRUE | ||||
|     #define SIZE_OF_SENTINEL  0 | ||||
|     #define NUM_OF_SENTINEL   0 | ||||
|     #define SET_SENTINEL_BEFORE(NodePtr, AlignTo16Byte) | ||||
|     #define SET_SENTINEL_AFTER(NodePtr) | ||||
|     #define Heap_Check(stdheader) | ||||
|   #else | ||||
|     #define SIZE_OF_SENTINEL  0 | ||||
|     #define NUM_OF_SENTINEL   0 | ||||
|     #define SET_SENTINEL_BEFORE(NodePtr, AlignTo16Byte) | ||||
|     #define SET_SENTINEL_AFTER(NodePtr) | ||||
|     #define Heap_Check(stdheader) | ||||
|   #endif | ||||
| #else | ||||
|   #define SIZE_OF_SENTINEL    0 | ||||
|   #define NUM_OF_SENTINEL     0 | ||||
|   #define SET_SENTINEL_BEFORE(NodePtr, AlignTo16Byte) | ||||
|   #define SET_SENTINEL_AFTER(NodePtr) | ||||
|   #define Heap_Check(stdheader) | ||||
| #endif | ||||
|  | ||||
|  | ||||
|  //Note a is from 0 to 63 | ||||
| #define DEBUG_PRINT_SHIFT(a)   ((UINT64)1 << a) | ||||
| //If you change the Bitmap definition below, please change the Hash in ParseFilter of hdtout2008.pl accordingly | ||||
| //Memory Masks | ||||
| #define MEM_SETREG                                  DEBUG_PRINT_SHIFT (0) | ||||
| #define MEM_GETREG                                  DEBUG_PRINT_SHIFT (1) | ||||
| #define MEM_FLOW                                    DEBUG_PRINT_SHIFT (2) | ||||
| #define MEM_STATUS                                  DEBUG_PRINT_SHIFT (3) | ||||
| #define MEMORY_TRACE_RSV1                           DEBUG_PRINT_SHIFT (4) | ||||
| #define MEMORY_TRACE_RSV2                           DEBUG_PRINT_SHIFT (5) | ||||
| #define MEMORY_TRACE_RSV3                           DEBUG_PRINT_SHIFT (6) | ||||
| #define MEMORY_TRACE_RSV4                           DEBUG_PRINT_SHIFT (7) | ||||
| #define MEMORY_TRACE_RSV5                           DEBUG_PRINT_SHIFT (8) | ||||
| #define MEMORY_TRACE_RSV6                           DEBUG_PRINT_SHIFT (9) | ||||
|  | ||||
|  | ||||
|  | ||||
| //CPU Masks | ||||
| #define CPU_TRACE                                   DEBUG_PRINT_SHIFT (10) | ||||
| #define CPU_TRACE_RSV1                              DEBUG_PRINT_SHIFT (11) | ||||
| #define CPU_TRACE_RSV2                              DEBUG_PRINT_SHIFT (12) | ||||
| #define CPU_TRACE_RSV3                              DEBUG_PRINT_SHIFT (13) | ||||
| #define CPU_TRACE_RSV4                              DEBUG_PRINT_SHIFT (14) | ||||
| #define CPU_TRACE_RSV5                              DEBUG_PRINT_SHIFT (15) | ||||
| #define CPU_TRACE_RSV6                              DEBUG_PRINT_SHIFT (16) | ||||
| #define CPU_TRACE_RSV7                              DEBUG_PRINT_SHIFT (17) | ||||
| #define CPU_TRACE_RSV8                              DEBUG_PRINT_SHIFT (18) | ||||
| #define CPU_TRACE_RSV9                              DEBUG_PRINT_SHIFT (19) | ||||
|  | ||||
| //GNB Masks | ||||
| #define GNB_TRACE                                   DEBUG_PRINT_SHIFT (20) | ||||
| #define PCIE_MISC                                   DEBUG_PRINT_SHIFT (21) | ||||
| #define PCIE_PORTREG_TRACE                          DEBUG_PRINT_SHIFT (22) | ||||
| #define PCIE_HOSTREG_TRACE                          DEBUG_PRINT_SHIFT (23) | ||||
| #define GNB_TRACE_RSV2                              DEBUG_PRINT_SHIFT (24) | ||||
| #define NB_MISC                                     DEBUG_PRINT_SHIFT (25) | ||||
| #define GNB_TRACE_RSV3                              DEBUG_PRINT_SHIFT (26) | ||||
| #define GFX_MISC                                    DEBUG_PRINT_SHIFT (27) | ||||
| #define NB_SMUREG_TRACE                             DEBUG_PRINT_SHIFT (28) | ||||
| #define GNB_TRACE_RSV1                              DEBUG_PRINT_SHIFT (29) | ||||
|  | ||||
| //HT Masks | ||||
| #define HT_TRACE                                    DEBUG_PRINT_SHIFT (30) | ||||
| #define HT_TRACE_RSV1                               DEBUG_PRINT_SHIFT (31) | ||||
| #define HT_TRACE_RSV2                               DEBUG_PRINT_SHIFT (32) | ||||
| #define HT_TRACE_RSV3                               DEBUG_PRINT_SHIFT (33) | ||||
| #define HT_TRACE_RSV4                               DEBUG_PRINT_SHIFT (34) | ||||
| #define HT_TRACE_RSV5                               DEBUG_PRINT_SHIFT (35) | ||||
| #define HT_TRACE_RSV6                               DEBUG_PRINT_SHIFT (36) | ||||
| #define HT_TRACE_RSV7                               DEBUG_PRINT_SHIFT (37) | ||||
| #define HT_TRACE_RSV8                               DEBUG_PRINT_SHIFT (38) | ||||
| #define HT_TRACE_RSV9                               DEBUG_PRINT_SHIFT (39) | ||||
|  | ||||
| //FCH Masks | ||||
| #define FCH_TRACE                                    DEBUG_PRINT_SHIFT (40) | ||||
| #define FCH_TRACE_RSV1                               DEBUG_PRINT_SHIFT (41) | ||||
| #define FCH_TRACE_RSV2                               DEBUG_PRINT_SHIFT (42) | ||||
| #define FCH_TRACE_RSV3                               DEBUG_PRINT_SHIFT (43) | ||||
| #define FCH_TRACE_RSV4                               DEBUG_PRINT_SHIFT (44) | ||||
| #define FCH_TRACE_RSV5                               DEBUG_PRINT_SHIFT (45) | ||||
| #define FCH_TRACE_RSV6                               DEBUG_PRINT_SHIFT (46) | ||||
| #define FCH_TRACE_RSV7                               DEBUG_PRINT_SHIFT (47) | ||||
| #define FCH_TRACE_RSV8                               DEBUG_PRINT_SHIFT (48) | ||||
| #define FCH_TRACE_RSV9                               DEBUG_PRINT_SHIFT (49) | ||||
|  | ||||
| //Other Masks | ||||
| #define MAIN_FLOW                                    DEBUG_PRINT_SHIFT (50) | ||||
| #define EVENT_LOG                                    DEBUG_PRINT_SHIFT (51) | ||||
| #define PERFORMANCE_ANALYSE                          DEBUG_PRINT_SHIFT (52) | ||||
|  | ||||
| //Ids Masks | ||||
| #define IDS_TRACE                                    DEBUG_PRINT_SHIFT (53) | ||||
| #define IDS_REG                                      DEBUG_PRINT_SHIFT (54) | ||||
| #define IDS_TRACE_RSV2                               DEBUG_PRINT_SHIFT (55) | ||||
| #define IDS_TRACE_RSV3                               DEBUG_PRINT_SHIFT (56) | ||||
|  | ||||
| //S3 | ||||
| #define S3_TRACE                                     DEBUG_PRINT_SHIFT (57) | ||||
|  | ||||
|  | ||||
| //Reserved | ||||
| #define TRACE_RSV1                                   DEBUG_PRINT_SHIFT (58) | ||||
| #define TRACE_RSV2                                   DEBUG_PRINT_SHIFT (59) | ||||
| #define TRACE_RSV3                                   DEBUG_PRINT_SHIFT (60) | ||||
| #define TRACE_RSV4                                   DEBUG_PRINT_SHIFT (61) | ||||
| #define TRACE_RSV5                                   DEBUG_PRINT_SHIFT (62) | ||||
| #define TRACE_RSV6                                   DEBUG_PRINT_SHIFT (63) | ||||
|  | ||||
| #define GNB_TRACE_DEFAULT   0 | ||||
|  | ||||
| #define GNB_TRACE_REG       0 | ||||
|  | ||||
| #define GNB_TRACE_ALL       0 | ||||
|  | ||||
| #define CPU_TRACE_ALL       0 | ||||
|  | ||||
| #define MEMORY_TRACE_ALL    0 | ||||
|  | ||||
| #define HT_TRACE_ALL        0 | ||||
|  | ||||
| #define FCH_TRACE_ALL       0 | ||||
|  | ||||
| #define IDS_TRACE_ALL       0 | ||||
|  | ||||
| #define OTHER_TRACE_ALL     0 | ||||
|  | ||||
| #define TRACE_MASK_ALL (0ull) | ||||
| #ifndef IDS_DEBUG_PRINT_MASK | ||||
|   #define IDS_DEBUG_PRINT_MASK 0 | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /** | ||||
|  *  Macro to add HDT OUT | ||||
|  * | ||||
|  *  The default minimal action is to do nothing and there is no any code to increase. | ||||
|  *  For debug environments, the debug information can be displayed in HDT or other | ||||
|  *  devices. | ||||
|  * | ||||
|  **/ | ||||
| #if IDSOPT_IDS_ENABLED == TRUE | ||||
|   #if IDSOPT_TRACING_ENABLED == TRUE | ||||
|     #define IDS_HDT_CONSOLE_INIT(x) | ||||
|     #define IDS_HDT_CONSOLE_EXIT(x) | ||||
|     #define IDS_HDT_CONSOLE_S3_EXIT(x) | ||||
|     #define IDS_HDT_CONSOLE_S3_AP_EXIT(x) | ||||
|  | ||||
|     #ifndef __GNUC__ | ||||
|       #pragma warning(disable: 4127) | ||||
|       #define IDS_HDT_CONSOLE(f, s, ...) | ||||
|     #else | ||||
|       #define IDS_HDT_CONSOLE(f, s, ...) printk (BIOS_DEBUG, s, ##__VA_ARGS__); | ||||
|     #endif | ||||
|  | ||||
|     #define IDS_HDT_CONSOLE_FLUSH_BUFFER(x) | ||||
|     #define IDS_HDT_CONSOLE_ASSERT(x) | ||||
|     #define IDS_FUNCLIST_ADDR                   NULL | ||||
|     #define IDS_FUNCLIST_EXTERN() | ||||
|     #define IDS_TIMEOUT_CTL(t) | ||||
|     #define IDS_HDT_CONSOLE_DEBUG_CODE(Code) | ||||
|     #define CONSOLE(s, ...) | ||||
|   #else | ||||
|     #define IDS_HDT_CONSOLE_INIT(x) | ||||
|     #define IDS_HDT_CONSOLE_EXIT(x) | ||||
|     #define IDS_HDT_CONSOLE_S3_EXIT(x) | ||||
|     #define IDS_HDT_CONSOLE_S3_AP_EXIT(x) | ||||
|     #define IDS_HDT_CONSOLE(f, s, ...) | ||||
|     #define IDS_HDT_CONSOLE_FLUSH_BUFFER(x) | ||||
|     #define IDS_HDT_CONSOLE_ASSERT(x) | ||||
|     #define IDS_FUNCLIST_ADDR                 NULL | ||||
|     #define IDS_FUNCLIST_EXTERN() | ||||
|     #define IDS_TIMEOUT_CTL(t) | ||||
|     #define IDS_HDT_CONSOLE_DEBUG_CODE(Code) | ||||
|     #define CONSOLE(s, ...) | ||||
|   #endif | ||||
| #else | ||||
|   #define IDS_HDT_CONSOLE_INIT(x) | ||||
|   #define IDS_HDT_CONSOLE_EXIT(x) | ||||
|   #define IDS_HDT_CONSOLE_S3_EXIT(x) | ||||
|   #define IDS_HDT_CONSOLE_S3_AP_EXIT(x) | ||||
|   #define IDS_HDT_CONSOLE(f, s, ...) | ||||
|   #define IDS_HDT_CONSOLE_FLUSH_BUFFER(x) | ||||
|   #define IDS_HDT_CONSOLE_ASSERT(x) | ||||
|   #define IDS_FUNCLIST_ADDR                   NULL | ||||
|   #define IDS_FUNCLIST_EXTERN() | ||||
|   #define IDS_TIMEOUT_CTL(t) | ||||
|   #define IDS_HDT_CONSOLE_DEBUG_CODE(Code) | ||||
|   #define CONSOLE(s, ...) | ||||
| #endif | ||||
|  | ||||
| #define IDS_TRACE_SHOW_BLD_OPT_CFG  IDSOPT_TRACE_USER_OPTIONS | ||||
|  | ||||
| #if IDSOPT_PERF_ANALYSIS == TRUE | ||||
|   #define IDS_PERF_TIMESTAMP(StdHeader, TestPoint) | ||||
|   #define IDS_PERF_ANALYSE(StdHeader) | ||||
|   #define IDS_PERF_TIME_MEASURE(StdHeader) | ||||
| #else | ||||
|   #define IDS_PERF_TIMESTAMP(StdHeader, TestPoint) | ||||
|   #define IDS_PERF_ANALYSE(StdHeader) | ||||
|   #define IDS_PERF_TIME_MEASURE(StdHeader) | ||||
| #endif | ||||
|  | ||||
| ///For IDS feat use | ||||
| #define IDS_FAMILY_ALL  0xFFFFFFFFFFFFFFFFull | ||||
| #define IDS_BSP_ONLY    TRUE | ||||
| #define IDS_ALL_CORES   FALSE | ||||
|  | ||||
| #define IDS_LATE_RUN_AP_TASK_ID     PROC_IDS_CONTROL_IDSLIB_FILECODE | ||||
|  | ||||
| #define IDS_CALLOUT_INIT      0x00       ///< The function data of IDS callout function of initialization. | ||||
|  | ||||
| #define IDS_CALLOUT_GNB_PPFUSE_OVERRIDE      0x00       ///< The function data of IDS callout function of GNB pp fuse table. | ||||
| #define IDS_CALLOUT_GNB_INTEGRATED_TABLE_CONFIG      0x00       ///< The function data of IDS callout function of GNB integrated table. | ||||
| #define IDS_CALLOUT_GNB_NB_POWERGATE_CONFIG      0x00       ///< The function data of IDS callout function of GNB NB power gate config. | ||||
| #define IDS_CALLOUT_GNB_PCIE_POWERGATE_CONFIG      0x00       ///< The function data of IDS callout function of GNB PCIE power gateconfig. | ||||
| #define IDS_CALLOUT_GNB_PCIE_PLATFORM_CONFIG      0x00       ///< The function data of IDS callout function of GNB pcie platform config. | ||||
| #define IDS_CALLOUT_GNB_PCIE_PHY_CONFIG           0x00       ///< The function data of IDS callout function of GNB pcie PHY config. | ||||
| #define IDS_CALLOUT_GNB_GMM_REGISTER_OVERRIDE           0x00       ///< The function data of IDS callout function of GNB GMM register override | ||||
|  | ||||
| /// Function entry for HDT script to call | ||||
| typedef struct _SCRIPT_FUNCTION { | ||||
|   UINTN   FuncAddr;       ///< Function address in ROM | ||||
|   CHAR8   FuncName[40];   ///< Function name | ||||
| } SCRIPT_FUNCTION; | ||||
|  | ||||
| /// Data Structure for Mem ECC parameter override | ||||
| typedef struct { | ||||
|   IN BOOLEAN CfgEccRedirection;                   ///< ECC Redirection | ||||
|   IN UINT16  CfgScrubDramRate;                    ///< Scrub Dram Rate | ||||
|   IN UINT16  CfgScrubL2Rate;                      ///< Scrub L2Rate | ||||
|   IN UINT16  CfgScrubL3Rate;                      ///< Scrub L3Rate | ||||
|   IN UINT16  CfgScrubIcRate;                      ///< Scrub Ic Rate | ||||
|   IN UINT16  CfgScrubDcRate;                      ///< Scrub Dc Rate | ||||
|   IN BOOLEAN CfgEccSyncFlood;                     ///< ECC Sync Flood | ||||
| } ECC_OVERRIDE_STRUCT; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  *  AGESA Test Points | ||||
|  * | ||||
|  *  These are the values displayed to the user to indicate progress through boot. | ||||
|  *  These can be used in a debug environment to stop the debugger at a specific | ||||
|  *  test point: | ||||
|  *  For SimNow!, this command | ||||
|  *      bi 81 w vb 49 | ||||
|  *  will stop the debugger on one of the TracePoints (49 is the TP value in this example). | ||||
|  * | ||||
|  */ | ||||
| typedef enum { | ||||
|   StartProcessorTestPoints,           ///< 00 Entry used for range testing for @b Processor related TPs | ||||
|  | ||||
|   // Memory test points | ||||
|   TpProcMemBeforeMemDataInit,         ///< 01 .. Memory structure initialization (Public interface) | ||||
|   TpProcMemBeforeSpdProcessing,       ///< 02 .. SPD Data processing  (Public interface) | ||||
|   TpProcMemAmdMemAuto,                ///< 03 .. Memory configuration  (Public interface) | ||||
|   TpProcMemDramInit,                  ///< 04 .. DRAM initialization | ||||
|   TpProcMemSPDChecking,               ///< 05 .. | ||||
|   TpProcMemModeChecking,              ///< 06 .. | ||||
|   TpProcMemSpeedTclConfig,            ///< 07 .. Speed and TCL configuration | ||||
|   TpProcMemSpdTiming,                 ///< 08 .. | ||||
|   TpProcMemDramMapping,               ///< 09 .. | ||||
|   TpProcMemPlatformSpecificConfig,    ///< 0A .. | ||||
|   TPProcMemPhyCompensation,           ///< 0B .. | ||||
|   TpProcMemStartDcts,                 ///< 0C .. | ||||
|   TpProcMemBeforeDramInit,            ///< 0D .. (Public interface) | ||||
|   TpProcMemPhyFenceTraining,          ///< 0E .. | ||||
|   TpProcMemSynchronizeDcts,           ///< 0F .. | ||||
|   TpProcMemSystemMemoryMapping,       ///< 10 .. | ||||
|   TpProcMemMtrrConfiguration,         ///< 11 .. | ||||
|   TpProcMemDramTraining,              ///< 12 .. | ||||
|   TpProcMemBeforeAnyTraining,         ///< 13 .. (Public interface) | ||||
|   TpProcMemWriteLevelizationTraining, ///< 14 .. | ||||
|   TpProcMemWlFirstPass,               ///< 15 .. Below 800Mhz first pass start | ||||
|   TpProcMemWlSecondPass,              ///< 16 .. Above 800Mhz second pass start | ||||
|   TpProcMemWlDimmConfig,              ///< 17 .. Target DIMM configured | ||||
|   TpProcMemWlPrepDimms,               ///< 18 ..  Prepare DIMMS for WL | ||||
|   TpProcMemWlConfigDimms,             ///< 19 ..  Configure DIMMS for WL | ||||
|   TpProcMemReceiverEnableTraining,    ///< 1A .. | ||||
|   TpProcMemRcvrStartSweep,            ///< 1B .. Start sweep loop | ||||
|   TpProcMemRcvrSetDelay,              ///< 1C .. Set receiver Delay | ||||
|   TpProcMemRcvrWritePattern,          ///< 1D .. Write test pattern | ||||
|   TpProcMemRcvrReadPattern,           ///< 1E .. Read test pattern | ||||
|   TpProcMemRcvrTestPattern,           ///< 1F .. Compare test pattern | ||||
|   TpProcMemRcvrCalcLatency,           ///< 20 .. Calculate MaxRdLatency per channel | ||||
|   TpProcMemReceiveDqsTraining,        ///< 21 .. | ||||
|   TpProcMemRcvDqsSetDelay,            ///< 22 .. Set Write Data delay | ||||
|   TpProcMemRcvDqsWritePattern,        ///< 23 .. Write test pattern | ||||
|   TpProcMemRcvDqsStartSweep,          ///< 24 .. Start read sweep | ||||
|   TpProcMemRcvDqsSetRcvDelay,         ///< 25 .. Set Receive DQS delay | ||||
|   TpProcMemRcvDqsReadPattern,         ///< 26 .. Read Test pattern | ||||
|   TpProcMemRcvDqsTstPattern,          ///< 27 .. Compare Test pattern | ||||
|   TpProcMemRcvDqsResults,             ///< 28 .. Update results | ||||
|   TpProcMemRcvDqsFindWindow,          ///< 29 .. Start Find passing window | ||||
|   TpProcMemTransmitDqsTraining,       ///< 2A .. | ||||
|   TpProcMemTxDqStartSweep,            ///< 2B .. Start write sweep | ||||
|   TpProcMemTxDqSetDelay,              ///< 2C .. Set Transmit DQ delay | ||||
|   TpProcMemTxDqWritePattern,          ///< 2D .. Write test pattern | ||||
|   TpProcMemTxDqReadPattern,           ///< 2E .. Read Test pattern | ||||
|   TpProcMemTxDqTestPattern,           ///< 2F .. Compare Test pattern | ||||
|   TpProcMemTxDqResults,               ///< 30 .. Update results | ||||
|   TpProcMemTxDqFindWindow,            ///< 31 .. Start Find passing window | ||||
|   TpProcMemMaxRdLatencyTraining,      ///< 32 .. | ||||
|   TpProcMemMaxRdLatStartSweep,        ///< 33 .. Start sweep | ||||
|   TpProcMemMaxRdLatSetDelay,          ///< 34 .. Set delay | ||||
|   TpProcMemMaxRdLatWritePattern,      ///< 35 .. Write test pattern | ||||
|   TpProcMemMaxRdLatReadPattern,       ///< 36 .. Read Test pattern | ||||
|   TpProcMemMaxRdLatTestPattern,       ///< 37 .. Compare Test pattern | ||||
|   TpProcMemOnlineSpareInit,           ///< 38 .. Online Spare init | ||||
|   TpProcMemBankInterleaveInit,        ///< 39 .. Bank Interleave Init | ||||
|   TpProcMemNodeInterleaveInit,        ///< 3A .. Node Interleave Init | ||||
|   TpProcMemChannelInterleaveInit,     ///< 3B .. Channel Interleave Init | ||||
|   TpProcMemEccInitialization,         ///< 3C .. ECC initialization | ||||
|   TpProcMemPlatformSpecificInit,      ///< 3D .. Platform Specific Init | ||||
|   TpProcMemBeforeAgesaReadSpd,        ///< 3E .. Before callout for "AgesaReadSpd" | ||||
|   TpProcMemAfterAgesaReadSpd,         ///< 3F .. After callout for "AgesaReadSpd" | ||||
|   TpProcMemBeforeAgesaHookBeforeDramInit,     ///< 40 .. Before optional callout "AgesaHookBeforeDramInit" | ||||
|   TpProcMemAfterAgesaHookBeforeDramInit,      ///< 41 .. After optional callout "AgesaHookBeforeDramInit" | ||||
|   TpProcMemBeforeAgesaHookBeforeDQSTraining, ///< 42 .. Before optional callout "AgesaHookBeforeDQSTraining" | ||||
|   TpProcMemAfterAgesaHookBeforeDQSTraining,  ///< 43 .. After optional callout "AgesaHookBeforeDQSTraining" | ||||
|   TpProcMemBeforeAgesaHookBeforeExitSelfRef,     ///< 44 .. Before optional callout "AgesaHookBeforeDramInit" | ||||
|   TpProcMemAfterAgesaHookBeforeExitSelfRef,      ///< 45 .. After optional callout "AgesaHookBeforeDramInit" | ||||
|   TpProcMemAfterMemDataInit,          ///< 46 .. After MemDataInit | ||||
|   TpProcMemInitializeMCT,             ///< 47 .. Before InitializeMCT | ||||
|   TpProcMemLvDdr3,                    ///< 48 .. Before LV DDR3 | ||||
|   TpProcMemInitMCT,                   ///< 49 .. Before InitMCT | ||||
|   TpProcMemOtherTiming,               ///< 4A.. Before OtherTiming | ||||
|   TpProcMemUMAMemTyping,              ///< 4B .. Before UMAMemTyping | ||||
|   TpProcMemSetDqsEccTmgs,             ///< 4C .. Before SetDqsEccTmgs | ||||
|   TpProcMemMemClr,                    ///< 4D .. Before MemClr | ||||
|   TpProcMemOnDimmThermal,             ///< 4E .. Before On DIMM Thermal | ||||
|   TpProcMemDmi,                       ///< 4F .. Before DMI | ||||
|   TpProcMemEnd,                       ///< 50 .. End of memory code | ||||
|  | ||||
|   // CPU test points | ||||
|   TpProcCpuEntryDmi,                  ///< 51 .. Entry point CreateDmiRecords | ||||
|   TpProcCpuEntryPstate,               ///< 52 .. Entry point GenerateSsdt | ||||
|   TpProcCpuEntryPstateLeveling,       ///< 53 .. Entry point PStateLeveling | ||||
|   TpProcCpuEntryPstateGather,         ///< 54 .. Entry point PStateGatherData | ||||
|   TpProcCpuEntryWhea,                 ///< 55 .. Entry point CreateAcpiWhea | ||||
|   TpProcCpuEntrySrat,                 ///< 56 .. Entry point CreateAcpiSrat | ||||
|   TpProcCpuEntrySlit,                 ///< 57 .. Entry point CreateAcpiSlit | ||||
|   TpProcCpuProcessRegisterTables,     ///< 58 .. Register table processing | ||||
|   TpProcCpuSetBrandID,                ///< 59 .. Set brand ID | ||||
|   TpProcCpuLocalApicInit,             ///< 5A .. Initialize local APIC | ||||
|   TpProcCpuLoadUcode,                 ///< 5B .. Load microcode patch | ||||
|   TpProcCpuBeforePMFeatureInit,       ///< 5C .. BeforePM feature dispatch point | ||||
|   TpProcCpuPowerMgmtInit,             ///< 5D .. Power Management table processing | ||||
|   TpProcCpuEarlyFeatureInit,          ///< 5E .. Early feature dispatch point | ||||
|   TpProcCpuCoreLeveling,              ///< 5F .. Core Leveling | ||||
|   TpProcCpuApMtrrSync,                ///< 60 .. AP MTRR sync up | ||||
|   TpProcCpuPostFeatureInit,           ///< 61 .. POST feature dispatch point | ||||
|   TpProcCpuFeatureLeveling,           ///< 62 .. CPU Feature Leveling | ||||
|   TpProcCpuBeforeAllocateWheaBuffer,  ///< 63 .. Before the WHEA init code calls out to allocate a buffer | ||||
|   TpProcCpuAfterAllocateWheaBuffer,   ///< 64 .. After the WHEA init code calls out to allocate a buffer | ||||
|   TpProcCpuBeforeAllocateSratBuffer,  ///< 65 .. Before the SRAT init code calls out to allocate a buffer | ||||
|   TpProcCpuAfterAllocateSratBuffer,   ///< 66 .. After the SRAT init code calls out to allocate a buffer | ||||
|   TpProcCpuBeforeLocateSsdtBuffer,    ///< 67 .. Before the P-state init code calls out to locate a buffer | ||||
|   TpProcCpuAfterLocateSsdtBuffer,     ///< 68 .. After the P-state init code calls out to locate a buffer | ||||
|   TpProcCpuBeforeAllocateSsdtBuffer,  ///< 69 .. Before the P-state init code calls out to allocate a buffer | ||||
|   TpProcCpuAfterAllocateSsdtBuffer,   ///< 6A .. After the P-state init code calls out to allocate a buffer | ||||
|  | ||||
|   // HT test points | ||||
|   TpProcHtEntry = 0x71,               ///< 71 .. Coherent Discovery begin (Public interface) | ||||
|   TpProcHtTopology,                   ///< 72 .. Topology match, routing, begin | ||||
|   TpProcHtManualNc,                   ///< 73 .. Manual Non-coherent Init begin | ||||
|   TpProcHtAutoNc,                     ///< 74 .. Automatic Non-coherent init begin | ||||
|   TpProcHtOptGather,                  ///< 75 .. Optimization: Gather begin | ||||
|   TpProcHtOptRegang,                  ///< 76 .. Optimization: Regang begin | ||||
|   TpProcHtOptLinks,                   ///< 77 .. Optimization: Link Begin | ||||
|   TpProcHtOptSubLinks,                ///< 78 .. Optimization: Sublinks begin | ||||
|   TpProcHtOptFinish,                  ///< 79 .. Optimization: Set begin | ||||
|   TpProcHtTrafficDist,                ///< 7A .. Traffic Distribution begin | ||||
|   TpProcHtTuning,                     ///< 7B .. Misc Tuning Begin | ||||
|   TpProcHtDone,                       ///< 7C .. HT Init complete | ||||
|   TpProcHtApMapEntry,                 ///< 7D .. AP HT: Init Maps begin | ||||
|   TpProcHtApMapDone,                  ///< 7E .. AP HT: Complete | ||||
|  | ||||
|   StartNbTestPoints = 0x90,           ///< 90 Entry used for range testing for @b NorthBridge related TPs | ||||
|   TpNbxxx,                            ///< 91 . | ||||
|   EndNbTestPoints,                    ///< 92 End of TP range for NB | ||||
|  | ||||
|   StartSbTestPoints = 0xB0,           ///< B0 Entry used for range testing for @b SouthBridge related TPs | ||||
|   TpSbxxx,                            ///< B1 . | ||||
|   EndSbTestPoints,                    ///< B2 End of TP range for SB | ||||
|  | ||||
|   // Interface test points | ||||
|   TpIfAmdInitResetEntry = 0xC0,       ///< C0 .. Entry to AmdInitReset | ||||
|   TpIfAmdInitResetExit,               ///< C1 .. Exiting from AmdInitReset | ||||
|   TpIfAmdInitRecoveryEntry,           ///< C2 .. Entry to AmdInitRecovery | ||||
|   TpIfAmdInitRecoveryExit,            ///< C3 .. Exiting from AmdInitRecovery | ||||
|   TpIfAmdInitEarlyEntry,              ///< C4 .. Entry to AmdInitEarly | ||||
|   TpIfAmdInitEarlyExit,               ///< C5 .. Exiting from AmdInitEarly | ||||
|   TpIfAmdInitPostEntry,               ///< C6 .. Entry to AmdInitPost | ||||
|   TpIfAmdInitPostExit,                ///< C7 .. Exiting from AmdInitPost | ||||
|   TpIfAmdInitEnvEntry,                ///< C8 .. Entry to AmdInitEnv | ||||
|   TpIfAmdInitEnvExit,                 ///< C9 .. Exiting from AmdInitEnv | ||||
|   TpIfAmdInitMidEntry,                ///< CA .. Entry to AmdInitMid | ||||
|   TpIfAmdInitMidExit,                 ///< CB .. Exiting from AmdInitMid | ||||
|   TpIfAmdInitLateEntry,               ///< CC .. Entry to AmdInitLate | ||||
|   TpIfAmdInitLateExit,                ///< CD .. Exiting from AmdInitLate | ||||
|   TpIfAmdS3SaveEntry,                 ///< CE .. Entry to AmdS3Save | ||||
|   TpIfAmdS3SaveExit,                  ///< CF .. Exiting from AmdS3Save | ||||
|   TpIfAmdInitResumeEntry,             ///< D0 .. Entry to AmdInitResume | ||||
|   TpIfAmdInitResumeExit,              ///< D1 .. Exiting from AmdInitResume | ||||
|   TpIfAmdS3LateRestoreEntry,          ///< D2 .. Entry to AmdS3LateRestore | ||||
|   TpIfAmdS3LateRestoreExit,           ///< D3 .. Exiting from AmdS3LateRestore | ||||
|   TpIfAmdLateRunApTaskEntry,          ///< D4 .. Entry to AmdS3LateRestore | ||||
|   TpIfAmdLateRunApTaskExit,           ///< D5 .. Exiting from AmdS3LateRestore | ||||
|   TpIfAmdReadEventLogEntry,           ///< D6 .. Entry to AmdReadEventLog | ||||
|   TpIfAmdReadEventLogExit,            ///< D7 .. Exiting from AmdReadEventLog | ||||
|   TpIfAmdGetApicIdEntry,              ///< D8 .. Entry to AmdGetApicId | ||||
|   TpIfAmdGetApicIdExit,               ///< D9 .. Exiting from AmdGetApicId | ||||
|   TpIfAmdGetPciAddressEntry,          ///< DA .. Entry to AmdGetPciAddress | ||||
|   TpIfAmdGetPciAddressExit,           ///< DB .. Exiting from AmdGetPciAddress | ||||
|   TpIfAmdIdentifyCoreEntry,           ///< DC .. Entry to AmdIdentifyCore | ||||
|   TpIfAmdIdentifyCoreExit,            ///< DD .. Exiting from AmdIdentifyCore | ||||
|   TpIfBeforeRunApFromIds,             ///< DE .. After IDS calls out to run code on an AP | ||||
|   TpIfAfterRunApFromIds,              ///< DF .. After IDS calls out to run code on an AP | ||||
|   TpIfBeforeGetIdsData,               ///< E0 .. Before IDS calls out to get IDS data | ||||
|   TpIfAfterGetIdsData,                ///< E1 .. After IDS calls out to get IDS data | ||||
|   TpIfBeforeAllocateHeapBuffer,       ///< E2 .. Before the heap manager calls out to allocate a buffer | ||||
|   TpIfAfterAllocateHeapBuffer,        ///< E3 .. After the heap manager calls out to allocate a buffer | ||||
|   TpIfBeforeDeallocateHeapBuffer,     ///< E4 .. Before the heap manager calls out to deallocate a buffer | ||||
|   TpIfAfterDeallocateHeapBuffer,      ///< E5 .. After the heap manager calls out to deallocate a buffer | ||||
|   TpIfBeforeLocateHeapBuffer,         ///< E6 .. Before the heap manager calls out to locate a buffer | ||||
|   TpIfAfterLocateHeapBuffer,          ///< E7 .. After the heap manager calls out to locate a buffer | ||||
|   TpIfBeforeRunApFromAllAps,          ///< E8 .. Before the BSP calls out to run code on an AP | ||||
|   TpIfAfterRunApFromAllAps,           ///< E9 .. After the BSP calls out to run code on an AP | ||||
|   TpIfBeforeRunApFromAllCore0s,       ///< EA .. Before the BSP calls out to run code on an AP | ||||
|   TpIfAfterRunApFromAllCore0s,        ///< EB .. After the BSP calls out to run code on an AP | ||||
|   TpIfBeforeAllocateS3SaveBuffer,     ///< EC .. Before the S3 save code calls out to allocate a buffer | ||||
|   TpIfAfterAllocateS3SaveBuffer,      ///< ED .. After the S3 save code calls out to allocate a buffer | ||||
|   TpIfBeforeAllocateMemoryS3SaveBuffer,  ///< EE .. Before the memory S3 save code calls out to allocate a buffer | ||||
|   TpIfAfterAllocateMemoryS3SaveBuffer,   ///< EF .. After the memory S3 save code calls out to allocate a buffer | ||||
|   TpIfBeforeLocateS3PciBuffer,        ///< F0 .. Before the memory code calls out to locate a buffer | ||||
|   TpIfAfterLocateS3PciBuffer,         ///< F1 .. After the memory code calls out to locate a buffer | ||||
|   TpIfBeforeLocateS3CPciBuffer,       ///< F2 .. Before the memory code calls out to locate a buffer | ||||
|   TpIfAfterLocateS3CPciBuffer,        ///< F3 .. After the memory code calls out to locate a buffer | ||||
|   TpIfBeforeLocateS3MsrBuffer,        ///< F4 .. Before the memory code calls out to locate a buffer | ||||
|   TpIfAfterLocateS3MsrBuffer,         ///< F5 .. After the memory code calls out to locate a buffer | ||||
|   TpIfBeforeLocateS3CMsrBuffer,       ///< F6 .. Before the memory code calls out to locate a buffer | ||||
|   TpIfAfterLocateS3CMsrBuffer,        ///< F7 .. After the memory code calls out to locate a buffer | ||||
|   TpPerfUnit,                              ///< F8 .. The Unit of performance measure. | ||||
|   EndAgesaTps = 0xFF,                 ///< Last defined AGESA TP | ||||
| } AGESA_TP; | ||||
|  | ||||
| ///Ids Feat description | ||||
| typedef enum { | ||||
|   IDS_FEAT_UCODE_UPDATE = 0x0000,   ///< Feat for Ucode Update | ||||
|   IDS_FEAT_TARGET_PSTATE,           ///< Feat for Target Pstate | ||||
|   IDS_FEAT_POSTPSTATE,              ///< Feat for Post Pstate | ||||
|   IDS_FEAT_ECC_CTRL,                ///< Feat for Ecc Control | ||||
|   IDS_FEAT_ECC_SYMBOL_SIZE,         ///< Feat for Ecc symbol size | ||||
|   IDS_FEAT_DCT_ALLMEMCLK,           ///< Feat for all memory clock | ||||
|   IDS_FEAT_DCT_GANGMODE,            ///< Feat for Dct gang mode | ||||
|   IDS_FEAT_DCT_BURSTLENGTH,         ///< Feat for dct burst length | ||||
|   IDS_FEAT_DCT_POWERDOWN,           ///< Feat for dct power down | ||||
|   IDS_FEAT_DCT_DLLSHUTDOWN,         ///< Feat for dct dll shut down | ||||
|   IDS_FEAT_PROBE_FILTER,            ///< Feat for probe filter | ||||
|   IDS_FEAT_HDTOUT,                  ///< Feat for hdt out | ||||
|   IDS_FEAT_HT_SETTING,              ///< Feat for Ht setting | ||||
|   IDS_FEAT_GNB_PLATFORMCFG,                 ///< Feat for override GNB platform config | ||||
|   IDS_FEAT_CPB_CTRL,             ///< Feat for Config the Core peformance boost feature | ||||
|   IDS_FEAT_HTC_CTRL,            ///< Feat for Hardware Thermal Control | ||||
|   IDS_FEAT_MEMORY_MAPPING,              ///< Feat for Memory Mapping | ||||
|   IDS_FEAT_POWER_POLICY,              ///< Feat for Power Policy | ||||
|   IDS_FEAT_END = 0xFF                      ///< End of Common feat | ||||
| } IDS_FEAT; | ||||
|  | ||||
| typedef IDS_STATUS IDS_COMMON_FUNC ( | ||||
|   IN OUT   VOID *DataPtr, | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN       IDS_NV_ITEM *IdsNvPtr | ||||
|   ); | ||||
|  | ||||
| typedef IDS_COMMON_FUNC *PIDS_COMMON_FUNC; | ||||
|  | ||||
| /// Data Structure of IDS Feature block | ||||
| typedef  struct _IDS_FEAT_STRUCT { | ||||
|   IDS_FEAT  IdsFeat;      ///< Ids Feat ID | ||||
|   BOOLEAN IsBsp;          ///< swith for Bsp check | ||||
|   AGESA_IDS_OPTION IdsOption;   ///< IDS option | ||||
|   UINT64 CpuFamily;      ///< | ||||
|   PIDS_COMMON_FUNC  pf_idsoption;     ///<pointer to function | ||||
| } IDS_FEAT_STRUCT; | ||||
|  | ||||
|  | ||||
| /// Data Structure of IDS option | ||||
| typedef  struct _IDS_OPTION_STRUCT { | ||||
|   AGESA_IDS_OPTION idsoption;   ///< IDS option | ||||
|   PIDS_COMMON_FUNC  pf_idsoption;     ///<pointer to function | ||||
| } IDS_OPTION_STRUCT; | ||||
|  | ||||
| /// Data Structure of IDS option table | ||||
| typedef struct _IDS_OPTION_STRUCT_TBL { | ||||
|   UINT8 version;      ///<Version of IDS option table | ||||
|   UINT16 size;        ///<Size of IDS option table | ||||
|   CONST IDS_OPTION_STRUCT  *pIdsOptionStruct; ///<pointer to array of  structure | ||||
| } IDS_OPTION_STRUCT_TBL; | ||||
|  | ||||
| #endif // _IDS_H_ | ||||
| @@ -1,123 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD IDS HyperTransport Definitions | ||||
|  * | ||||
|  * Contains AMD AGESA Integrated Debug HT related items. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  IDS | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _IDS_HT_H_ | ||||
| #define _IDS_HT_H_ | ||||
|  | ||||
| // Frequency equates for call backs which take an actual frequency setting | ||||
| #define HT_FREQUENCY_200M            0 | ||||
| #define HT_FREQUENCY_400M            2 | ||||
| #define HT_FREQUENCY_600M            4 | ||||
| #define HT_FREQUENCY_800M            5 | ||||
| #define HT_FREQUENCY_1000M           6 | ||||
| #define HT_FREQUENCY_1200M           7 | ||||
| #define HT_FREQUENCY_1400M           8 | ||||
| #define HT_FREQUENCY_1600M           9 | ||||
| #define HT_FREQUENCY_1800M           10 | ||||
| #define HT_FREQUENCY_2000M           11 | ||||
| #define HT_FREQUENCY_2200M           12 | ||||
| #define HT_FREQUENCY_2400M           13 | ||||
| #define HT_FREQUENCY_2600M           14 | ||||
| #define HT_FREQUENCY_2800M           17 | ||||
| #define HT_FREQUENCY_3000M           18 | ||||
| #define HT_FREQUENCY_3200M           19 | ||||
| #define HT_FREQUENCY_3600M           20 | ||||
|  | ||||
| /** | ||||
|  * HT IDS: HT Link Port Override params. | ||||
|  * | ||||
|  * Provide an absolute override of HT Link Port settings.  No checking is done that | ||||
|  * the settings obey limits or capabilities, this responsibility rests with the user. | ||||
|  * | ||||
|  * Rules for values of structure items: | ||||
|  * - Socket | ||||
|  *   - HT_LIST_TERMINAL == end of port override list, rest of item is not accessed | ||||
|  *   - HT_LIST_MATCH_ANY == Match Any Socket | ||||
|  *   - 0 .. 7 == The matching socket | ||||
|  * - Link | ||||
|  *   - HT_LIST_MATCH_ANY == Match Any package link (that is not the internal links) | ||||
|  *   - HT_LIST_MATCH_INTERNAL_LINK == Match the internal links | ||||
|  *   - 0 .. 7 == The matching package link.  0 .. 3 are the ganged links or sublink 0's, 4 .. 7 are the sublink1's. | ||||
|  * - Frequency | ||||
|  *   - HT_LIST_TERMINAL == Do not override the frequency, AUTO setting | ||||
|  *   - HT_FREQUENCY_200M .. HT_FREQUENCY_3600M = The frequency value to use | ||||
|  * - Widthin | ||||
|  *   - HT_LIST_TERMINAL == Do not override the width, AUTO setting | ||||
|  *   - 2, 4, 8, 16, 32 == The width value to use | ||||
|  * - Widthout | ||||
|  *   - HT_LIST_TERMINAL == Do not override the width, AUTO setting | ||||
|  *   - 2, 4, 8, 16, 32 == The width value to use | ||||
|  */ | ||||
| typedef struct { | ||||
|   // Match Fields | ||||
|   UINT8       Socket;      ///< The Socket which this port is on. | ||||
|   UINT8       Link;        ///< The port for this package link on that socket. | ||||
|   // Override fields | ||||
|   UINT8       Frequency;   ///< Absolutely override the port's frequency. | ||||
|   UINT8       WidthIn;     ///< Absolutely override the port's width. | ||||
|   UINT8       WidthOut;    ///< Absolutely override the port's width. | ||||
| } HTIDS_PORT_OVERRIDE; | ||||
|  | ||||
| /** | ||||
|  * A list of port overrides to search. | ||||
|  */ | ||||
| typedef HTIDS_PORT_OVERRIDE *HTIDS_PORT_OVERRIDE_LIST; | ||||
| VOID | ||||
| HtIdsGetPortOverride ( | ||||
|   IN       BOOLEAN                    IsSourcePort, | ||||
|   IN OUT   PORT_DESCRIPTOR            *Port0, | ||||
|   IN OUT   PORT_DESCRIPTOR            *Port1, | ||||
|   IN OUT   HTIDS_PORT_OVERRIDE_LIST   *PortOverrideList, | ||||
|   IN       STATE_DATA                 *State | ||||
|   ); | ||||
|  | ||||
| typedef | ||||
| VOID | ||||
| F_HtIdsGetPortOverride ( | ||||
|   IN       BOOLEAN                    IsSourcePort, | ||||
|   IN OUT   PORT_DESCRIPTOR            *Port0, | ||||
|   IN OUT   PORT_DESCRIPTOR            *Port1, | ||||
|   IN OUT   HTIDS_PORT_OVERRIDE_LIST   *PortOverrideList, | ||||
|   IN       STATE_DATA                 *State | ||||
|   ); | ||||
| typedef F_HtIdsGetPortOverride* PF_HtIdsGetPortOverride; | ||||
| #endif // _IDS_HT_H | ||||
| @@ -1,89 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD DMI option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the DMI option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_DMI_H_ | ||||
| #define _OPTION_DMI_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_DMI_FEATURE ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS    *StdHeader, | ||||
|   IN OUT   DMI_INFO             **DmiPtr | ||||
|   ); | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_DMI_RELEASE_BUFFER ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS    *StdHeader | ||||
|   ); | ||||
|  | ||||
| #define DMI_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /// DMI option configuration. Determine the item of structure when compiling. | ||||
| typedef struct  { | ||||
|   UINT16              OptDmiVersion;      ///< Dmi version. | ||||
|   OPTION_DMI_FEATURE  *DmiFeature;        ///< Feature main routine, otherwise dummy. | ||||
|   OPTION_DMI_RELEASE_BUFFER *DmiReleaseBuffer; ///< Release buffer | ||||
|   UINT16              NumEntries;         ///< Number of entry. | ||||
|   VOID                *((*FamilyList)[]); ///< Family service. | ||||
| } OPTION_DMI_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_DMI_H_ | ||||
| @@ -1,138 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Family 12h 'early sample' support | ||||
|  * | ||||
|  * This file defines the required structures for family 12h pre-production processors. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 37456 $   @e \$Date: 2010-09-04 04:17:05 +0800 (Sat, 04 Sep 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_FAMILY_12H_EARLY_SAMPLE_H_ | ||||
| #define _OPTION_FAMILY_12H_EARLY_SAMPLE_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /** | ||||
|  *  Return the appropriate values of certain NB P-state related registers. | ||||
|  * | ||||
|  *  @param[in,out] FCRxFE00_6000           The value of FCRxFE006000. | ||||
|  *  @param[in,out] FCRxFE00_6002           The value of FCRxFE006002. | ||||
|  *  @param[in,out] FCRxFE00_7006           The value of FCRxFE007006. | ||||
|  *  @param[in,out] FCRxFE00_7009           The value of FCRxFE007009. | ||||
|  *  @param[in]     MainPll                 The main PLL frequency. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F12_ES_NB_PSTATE_INIT ( | ||||
|   IN OUT   VOID *FCRxFE00_6000, | ||||
|   IN OUT   VOID *FCRxFE00_6002, | ||||
|   IN OUT   VOID *FCRxFE00_7006, | ||||
|   IN OUT   VOID *FCRxFE00_7009, | ||||
|   IN       UINT32 MainPll, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F12_ES_NB_PSTATE_INIT *PF_F12_ES_NB_PSTATE_INIT; | ||||
|  | ||||
| /** | ||||
|  *  Return the appropriate value of a certain NB P-state related register. | ||||
|  * | ||||
|  *  @param[in,out] FCRxFE00_6000           The value of FCRxFE006000. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F12_ES_POWER_PLANE_INIT ( | ||||
|   IN OUT   VOID *FCRxFE00_6000, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F12_ES_POWER_PLANE_INIT *PF_F12_ES_POWER_PLANE_INIT; | ||||
|  | ||||
| /** | ||||
|  *  Implements an early sample workaround required for C6 | ||||
|  * | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F12_ES_C6_INIT ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F12_ES_C6_INIT *PF_F12_ES_C6_INIT; | ||||
|  | ||||
|  | ||||
| /// Hook points in the core functionality necessary for | ||||
| /// providing support for pre-production CPUs. | ||||
| typedef struct { | ||||
|   PF_F12_ES_POWER_PLANE_INIT     F12PowerPlaneInitHook;     ///< Allows for override of a certain processor register value during power plane init | ||||
|   PF_F12_ES_NB_PSTATE_INIT       F12NbPstateInitHook;       ///< Allows for override of certain processor register values for proper NB P-state init | ||||
| } F12_ES_CORE_SUPPORT; | ||||
|  | ||||
| /// Hook points in the C6 feature necessary for | ||||
| /// providing support for pre-production CPUs. | ||||
| typedef struct { | ||||
|   PF_F12_ES_C6_INIT            F12InitializeC6;        ///< Hook for erratum 453 workaround | ||||
| } F12_ES_C6_SUPPORT; | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_FAMILY_12H_EARLY_SAMPLE_H_ | ||||
| @@ -1,170 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Family 14h 'early sample' support | ||||
|  * | ||||
|  * This file defines the required structures for family 14h pre-production processors. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 37018 $   @e \$Date: 2010-08-28 05:46:16 +0800 (Sat, 28 Aug 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_FAMILY_14H_EARLY_SAMPLE_H_ | ||||
| #define _OPTION_FAMILY_14H_EARLY_SAMPLE_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /** | ||||
|  *  Return the correct early init table pointer. | ||||
|  * | ||||
|  *  @param[in,out] Table                   The early init table pointer. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F14_ES_GET_EARLY_INIT_TABLE ( | ||||
|   IN OUT   CONST VOID **Table, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F14_ES_GET_EARLY_INIT_TABLE *PF_F14_ES_GET_EARLY_INIT_TABLE; | ||||
|  | ||||
| /** | ||||
|  *  Return the appropriate values of certain NB P-state related registers. | ||||
|  * | ||||
|  *  @param[in,out] FCRxFE00_6000           The value of FCRxFE006000. | ||||
|  *  @param[in,out] FCRxFE00_6002           The value of FCRxFE006002. | ||||
|  *  @param[in,out] FCRxFE00_7006           The value of FCRxFE007006. | ||||
|  *  @param[in,out] FCRxFE00_7009           The value of FCRxFE007009. | ||||
|  *  @param[in]     MainPll                 The main PLL frequency. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F14_ES_NB_PSTATE_INIT ( | ||||
|   IN OUT   VOID *FCRxFE00_6000, | ||||
|   IN OUT   VOID *FCRxFE00_6002, | ||||
|   IN OUT   VOID *FCRxFE00_7006, | ||||
|   IN OUT   VOID *FCRxFE00_7009, | ||||
|   IN       UINT32 MainPll, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F14_ES_NB_PSTATE_INIT *PF_F14_ES_NB_PSTATE_INIT; | ||||
|  | ||||
| /** | ||||
|  *  Return the appropriate value of a certain NB P-state related register. | ||||
|  * | ||||
|  *  @param[in,out] FCRxFE00_6000           The value of FCRxFE006000. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F14_ES_POWER_PLANE_INIT ( | ||||
|   IN OUT   VOID *FCRxFE00_6000, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F14_ES_POWER_PLANE_INIT *PF_F14_ES_POWER_PLANE_INIT; | ||||
|  | ||||
| /** | ||||
|  *  Returns whether or not the processor should enable the C6 feature. | ||||
|  * | ||||
|  *  @param[in,out] IsEnabled               Whether or not to enable C6 | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F14_ES_IS_C6_SUPPORTED ( | ||||
|   IN OUT   BOOLEAN *IsEnabled, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F14_ES_IS_C6_SUPPORTED *PF_F14_ES_IS_C6_SUPPORTED; | ||||
|  | ||||
| /** | ||||
|  *  Implements an early sample workaround required for C6 | ||||
|  * | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| typedef VOID F_F14_ES_C6_INIT ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// Reference to a Method. | ||||
| typedef F_F14_ES_C6_INIT *PF_F14_ES_C6_INIT; | ||||
|  | ||||
|  | ||||
| /// Hook points in the core functionality necessary for | ||||
| /// providing support for pre-production CPUs. | ||||
| typedef struct { | ||||
|   PF_F14_ES_GET_EARLY_INIT_TABLE F14GetEarlyInitTableHook;  ///< Early init table pointer override | ||||
|   PF_F14_ES_POWER_PLANE_INIT     F14PowerPlaneInitHook;     ///< Allows for override of a certain processor register value during power plane init | ||||
|   PF_F14_ES_NB_PSTATE_INIT       F14NbPstateInitHook;       ///< Allows for override of certain processor register values for proper NB P-state init | ||||
| } F14_ES_CORE_SUPPORT; | ||||
|  | ||||
| /// Hook points in the C6 feature necessary for | ||||
| /// providing support for pre-production CPUs. | ||||
| typedef struct { | ||||
|   PF_F14_ES_IS_C6_SUPPORTED    F14IsC6SupportedHook;   ///< C6 enablement override | ||||
|   PF_F14_ES_C6_INIT            F14InitializeC6;        ///< Hook for erratum 453 workaround | ||||
| } F14_ES_C6_SUPPORT; | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_FAMILY_14H_EARLY_SAMPLE_H_ | ||||
| @@ -1,81 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD GFX Recovery option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the GfxRecovery option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_GFX_RECOVERY_H_ | ||||
| #define _OPTION_GFX_RECOVERY_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_GFX_RECOVERY_FEATURE ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ); | ||||
|  | ||||
| #define GFX_RECOVERY_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /// The Option Configuration of GFX Recovery | ||||
| typedef struct  { | ||||
|   UINT16              OptGfxRecoveryVersion;       ///< The version number of GFX Recovery | ||||
|   OPTION_GFX_RECOVERY_FEATURE  *GfxRecoveryFeature;        ///< The Option Feature of GFX Recovery | ||||
| } OPTION_GFX_RECOVERY_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_GFX_RECOVERY_H_ | ||||
| @@ -1,97 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD ALIB option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the ALIB option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 40151 $   @e \$Date: 2010-10-20 06:38:17 +0800 (Wed, 20 Oct 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_GNB_H_ | ||||
| #define _OPTION_GNB_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_GNB_FEATURE ( | ||||
|   IN       AMD_CONFIG_PARAMS    *StdHeader | ||||
|   ); | ||||
|  | ||||
| /// The Option Configuration of ALIB | ||||
| typedef struct { | ||||
|   UINT64                Type;                   ///< Type | ||||
|   OPTION_GNB_FEATURE    *GnbFeature;            ///< The GNB Feature | ||||
| } OPTION_GNB_CONFIGURATION; | ||||
|  | ||||
| /// The Build time options configuration | ||||
| typedef struct { | ||||
|   BOOLEAN              IgfxModeAsPcieEp;        ///< Itegrated Gfx mode Pcie EP or Legacy | ||||
|   BOOLEAN              LclkDeepSleepEn;         ///< Default for LCLK deep sleep | ||||
|   BOOLEAN              LclkDpmEn;               ///< Default for LCLK DPM | ||||
|   BOOLEAN              GmcPowerGateStutterOnly; ///< Force GMC power gate to stutter only | ||||
|   BOOLEAN              SmuSclkClockGatingEnable;///< Control SMU SCLK gating | ||||
|   BOOLEAN              PcieAspmBlackListEnable;      ///< Control Pcie Aspm Black List | ||||
|   UINT32               LinkReceiverDetectionPooling; ///< Receiver pooling detection time in us. | ||||
|   UINT32               LinkL0Pooling;                ///< Pooling for link to get to L0 in us | ||||
|   UINT32               LinkGpioResetAssertionTime;   ///< Gpio reset assertion time in us | ||||
|   UINT32               LinkResetToTrainingTime;      ///< Time duration between deassert GPIO reset and release training in us                                                      /// | ||||
|   UINT8                TrainingAlgorithm;            ///< Training algorithm (see PCIE_TRAINING_ALGORITHM) | ||||
| } GNB_BUILD_OPTIONS; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #endif  // _OPTION_GNB_H_ | ||||
| @@ -1,354 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Memory option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the Memory option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_MEMORY_H_ | ||||
| #define _OPTION_MEMORY_H_ | ||||
|  | ||||
| /* Memory Includes */ | ||||
| #include "mm.h" | ||||
| #include "mn.h" | ||||
| #include "mt.h" | ||||
| #include "ma.h" | ||||
| #include "mp.h" | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #define MAX_FF_TYPES      6   ///< Maximum number of DDR Form factors (UDIMMs, RDIMMMs, SODIMMS) supported | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /* | ||||
| * STANDARD MEMORY FEATURE FUNCTION POINTER | ||||
| */ | ||||
|  | ||||
| typedef BOOLEAN OPTION_MEM_FEATURE_NB ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr | ||||
|   ); | ||||
|  | ||||
| typedef BOOLEAN MEM_TECH_FEAT ( | ||||
|   IN OUT   MEM_TECH_BLOCK *TechPtr | ||||
|   ); | ||||
|  | ||||
| typedef UINT8 MEM_TABLE_FEAT ( | ||||
|   IN OUT   MEM_TABLE_ALIAS **MTPtr | ||||
|   ); | ||||
|  | ||||
| #define MEM_FEAT_BLOCK_NB_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /** | ||||
|  *  MEMORY FEATURE BLOCK - This structure serves as a vector table for standard | ||||
|  *  memory feature implementation functions.  It contains vectors for all of the | ||||
|  *  features that are supported by the various Northbridge devices supported by | ||||
|  *  AGESA. | ||||
|  */ | ||||
| typedef struct _MEM_FEAT_BLOCK_NB { | ||||
|   UINT16              OptMemFeatVersion; ///< Version of memory feature block. | ||||
|   OPTION_MEM_FEATURE_NB  *OnlineSpare; ///< Online spare support. | ||||
|   OPTION_MEM_FEATURE_NB  *InterleaveBanks; ///< Bank (Chip select) interleaving support. | ||||
|   OPTION_MEM_FEATURE_NB  *UndoInterleaveBanks; ///< Undo Bank (Chip Select) interleaving. | ||||
|   OPTION_MEM_FEATURE_NB  *CheckInterleaveNodes; ///< Check for Node interleaving support. | ||||
|   OPTION_MEM_FEATURE_NB  *InterleaveNodes; ///< Node interleaving support. | ||||
|   OPTION_MEM_FEATURE_NB  *InterleaveChannels; ///< Channel interleaving support. | ||||
|   OPTION_MEM_FEATURE_NB  *InterleaveRegion;  ///< Interleave Region support. | ||||
|   OPTION_MEM_FEATURE_NB  *CheckEcc; ///< Check for ECC support. | ||||
|   OPTION_MEM_FEATURE_NB  *InitEcc; ///< ECC support. | ||||
|   OPTION_MEM_FEATURE_NB  *Training; ///< Choose the type of training (Parallel, standard or hardcoded). | ||||
|   OPTION_MEM_FEATURE_NB  *LvDdr3; ///< Low voltage DDR3 dimm support | ||||
|   OPTION_MEM_FEATURE_NB  *OnDimmThermal; ///< On-Dimm thermal management | ||||
|   MEM_TECH_FEAT  *DramInit; ///< Choose the type of Dram init (hardware based or software based). | ||||
|   OPTION_MEM_FEATURE_NB  *ExcludeDIMM; ///< Exclude a dimm. | ||||
|   OPTION_MEM_FEATURE_NB  *InitEarlySampleSupport; ///< Initialize early sample support. | ||||
|   OPTION_MEM_FEATURE_NB  *InitCPG; ///< Continuous pattern generation. | ||||
|   OPTION_MEM_FEATURE_NB  *InitHwRxEn; ///< Hardware Receiver Enable Training Initilization. | ||||
| } MEM_FEAT_BLOCK_NB; | ||||
|  | ||||
| typedef AGESA_STATUS MEM_MAIN_FLOW_CONTROL ( | ||||
|   IN OUT   MEM_MAIN_DATA_BLOCK *MemMainPtr | ||||
|   ); | ||||
|  | ||||
| typedef BOOLEAN OPTION_MEM_FEATURE_MAIN ( | ||||
|   IN MEM_MAIN_DATA_BLOCK *MMPtr | ||||
|   ); | ||||
|  | ||||
| typedef BOOLEAN MEM_NB_CONSTRUCTOR ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   CONST IN       MEM_FEAT_BLOCK_NB *FeatPtr, | ||||
|   IN       MEM_SHARED_DATA *mmSharedPtr,     ///< Pointer to Memory scratchpad | ||||
|   IN       UINT8 NodeID | ||||
|   ); | ||||
|  | ||||
| typedef BOOLEAN MEM_TECH_CONSTRUCTOR ( | ||||
|   IN OUT   MEM_TECH_BLOCK *TechPtr, | ||||
|   IN OUT   MEM_NB_BLOCK   *NBPtr | ||||
|   ); | ||||
|  | ||||
| typedef VOID MEM_INITIALIZER ( | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr | ||||
|  ); | ||||
|  | ||||
| typedef AGESA_STATUS MEM_PLATFORM_CFG ( | ||||
|   IN struct _MEM_DATA_STRUCT *MemData, | ||||
|   IN UINT8 SocketID, | ||||
|   IN CH_DEF_STRUCT *CurrentChannel | ||||
|   ); | ||||
|  | ||||
| typedef BOOLEAN MEM_IDENDIMM_CONSTRUCTOR ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN       UINT8 NodeID | ||||
|   ); | ||||
|  | ||||
| typedef VOID MEM_TECH_TRAINING_FEAT ( | ||||
|   IN OUT   MEM_TECH_BLOCK *TechPtr, | ||||
|   IN       UINT8 Pass | ||||
|   ); | ||||
|  | ||||
| typedef BOOLEAN MEM_RESUME_CONSTRUCTOR ( | ||||
|   IN OUT   VOID *S3NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN       UINT8 NodeID | ||||
|   ); | ||||
|  | ||||
| typedef AGESA_STATUS MEM_PLAT_SPEC_CFG ( | ||||
|   IN struct _MEM_DATA_STRUCT *MemData, | ||||
|   IN OUT   CH_DEF_STRUCT *CurrentChannel, | ||||
|   IN OUT   MEM_PS_BLOCK *PsPtr | ||||
|   ); | ||||
|  | ||||
| typedef AGESA_STATUS MEM_FLOW_CFG ( | ||||
|   IN OUT   MEM_MAIN_DATA_BLOCK *MemData | ||||
|   ); | ||||
|  | ||||
| #define MEM_FEAT_BLOCK_MAIN_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /** | ||||
|  * MAIN FEATURE BLOCK - This structure serves as vector table for memory features | ||||
|  * that shared between all northbridge devices. | ||||
|  */ | ||||
| typedef struct _MEM_FEAT_BLOCK_MAIN { | ||||
|   UINT16              OptMemFeatVersion; ///< Version of main feature block. | ||||
|   OPTION_MEM_FEATURE_MAIN *Training; ///< Training features. | ||||
|   OPTION_MEM_FEATURE_MAIN *ExcludeDIMM; ///< Exclude a dimm. | ||||
|   OPTION_MEM_FEATURE_MAIN *OnlineSpare; ///< On-line spare. | ||||
|   OPTION_MEM_FEATURE_MAIN *InterleaveNodes; ///< Node interleave. | ||||
|   OPTION_MEM_FEATURE_MAIN *InitEcc; ///< Initialize ECC on all nodes if they all support it. | ||||
|   OPTION_MEM_FEATURE_MAIN *MemClr; ///< Memory Clear. | ||||
|   OPTION_MEM_FEATURE_MAIN *MemDmi; ///< Memory DMI Support. | ||||
|   OPTION_MEM_FEATURE_MAIN *LvDDR3; ///< Low voltage DDR3 support. | ||||
|   OPTION_MEM_FEATURE_MAIN *UmaAllocation; ///< Uma Allocation. | ||||
|   OPTION_MEM_FEATURE_MAIN *MemSave; ///< Memory Context Save | ||||
|   OPTION_MEM_FEATURE_MAIN *MemRestore; ///< Memory Context Restore | ||||
| } MEM_FEAT_BLOCK_MAIN; | ||||
|  | ||||
| #define MEM_NB_SUPPORT_STRUCT_VERSION  0x01 | ||||
| #define MEM_TECH_FEAT_BLOCK_STRUCT_VERSION  0x01 | ||||
| #define MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION  0x01 | ||||
| #define MEM_TECH_LRDIMM_STRUCT_VERSION 0x01 | ||||
| /** | ||||
|  *  MEMORY TECHNOLOGY FEATURE BLOCK - This structure serves as a vector table for standard | ||||
|  *  memory feature implementation functions.  It contains vectors for all of the | ||||
|  *  features that are supported by the various Technology features supported by | ||||
|  *  AGESA. | ||||
|  */ | ||||
| typedef struct _MEM_TECH_FEAT_BLOCK { | ||||
|   UINT16  OptMemTechFeatVersion; ///< Version of memory Tech feature block. | ||||
|   MEM_TECH_FEAT *EnterHardwareTraining; ///<Enter HW WL Training | ||||
|   MEM_TECH_FEAT *SwWLTraining; ///<SW Write Levelization training | ||||
|   MEM_TECH_FEAT *HwBasedWLTrainingPart1; ///<HW based write levelization Training Part 1 | ||||
|   MEM_TECH_FEAT *HwBasedDQSReceiverEnableTrainingPart1; ///<HW based DQS receiver Enabled Training Part 1 | ||||
|   MEM_TECH_FEAT *HwBasedWLTrainingPart2; ///<HW based write levelization Training Part 2 | ||||
|   MEM_TECH_FEAT *HwBasedDQSReceiverEnableTrainingPart2; ///<HW based DQS receiver Enabled Training Part 2 | ||||
|   MEM_TECH_FEAT *TrainExitHwTrn; ///<Exit HW WL Training | ||||
|   MEM_TECH_FEAT *NonOptimizedSWDQSRecEnTrainingPart1; ///< Non-Optimized Software based receiver Enable Training part 1 | ||||
|   MEM_TECH_FEAT *OptimizedSwDqsRecEnTrainingPart1; ///< Optimized Software based receiver Enable Training part 1 | ||||
|   MEM_TECH_FEAT *NonOptimizedSRdWrPosTraining; ///< Non-Optimized Rd Wr Position training | ||||
|   MEM_TECH_FEAT *OptimizedSRdWrPosTraining; ///< Optimized Rd Wr Position training | ||||
|   MEM_TECH_FEAT *MaxRdLatencyTraining; ///< MaxReadLatency Training | ||||
| } MEM_TECH_FEAT_BLOCK; | ||||
|  | ||||
| /** | ||||
|  *  MEMORY TECHNOLOGY LRDIMM BLOCK - This structure serves as a vector table for standard | ||||
|  *  memory feature implementation functions.  It contains vectors for all of the | ||||
|  *  features that are supported by the various LRDIMM features supported by | ||||
|  *  AGESA. | ||||
|  */ | ||||
| typedef struct _MEM_TECH_LRDIMM { | ||||
|   UINT16  OptMemTechLrdimmVersion; ///< Version of memory Tech feature block. | ||||
|   MEM_TECH_FEAT *MemTInitializeLrdimm; ///< LRDIMM initialization | ||||
| } MEM_TECH_LRDIMM; | ||||
| /** | ||||
|  * MEMORY NORTHBRIDGE SUPPORT STRUCT - This structure groups the Northbridge dependent | ||||
|  * options together in a list to provide a single access point for all code to use | ||||
|  * and to ensure that everything corresponding to the same NB type is grouped together. | ||||
|  * | ||||
|  * The Technology Block pointers are not included in this structure because DRAM technology | ||||
|  * needs to be decoupled from the northbridge type. | ||||
|  * | ||||
|  */ | ||||
| typedef struct _MEM_NB_SUPPORT { | ||||
|   UINT16              MemNBSupportVersion; ///< Version of northbridge support. | ||||
|   MEM_NB_CONSTRUCTOR  *MemConstructNBBlock; ///< NorthBridge block constructor. | ||||
|   MEM_INITIALIZER     *MemNInitDefaults; ///< Default value initialization for MEM_DATA_STRUCT. | ||||
|   CONST MEM_FEAT_BLOCK_NB      *MemFeatBlock; ///< Memory feature block. | ||||
|   MEM_RESUME_CONSTRUCTOR *MemS3ResumeConstructNBBlock; ///< S3 memory initialization northbridge block constructor. | ||||
|   MEM_IDENDIMM_CONSTRUCTOR *MemIdentifyDimmConstruct; ///< Constructor for address to dimm identification. | ||||
| } MEM_NB_SUPPORT; | ||||
|  | ||||
| /* | ||||
|  *  MEMORY Non-Training FEATURES - This structure serves as a vector table for standard | ||||
|  *  memory non-training feature implementation functions.  It contains vectors for all of the | ||||
|  *  features that are supported by the various Technology devices supported by | ||||
|  *  AGESA. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * MAIN TRAINING SEQUENCE LIST - This structure serves as vector table for memory features | ||||
|  * that shared between all northbridge devices. | ||||
|  */ | ||||
| typedef struct _MEM_FEAT_TRAIN_SEQ { | ||||
|   UINT16              OptMemTrainingSequenceListVersion; ///< Version of main feature block. | ||||
|   OPTION_MEM_FEATURE_NB *TrainingSequence; ///< Training Sequence function. | ||||
|   OPTION_MEM_FEATURE_NB *TrainingSequenceEnabled; ///< Enable function. | ||||
|   CONST MEM_TECH_FEAT_BLOCK      *MemTechFeatBlock; ///< Memory feature block. | ||||
| } MEM_FEAT_TRAIN_SEQ; | ||||
|  | ||||
| /** | ||||
|  * PLATFORM SPECIFIC CONFIGURATION BLOCK - This structure groups various PSC table | ||||
|  * entries which are used by PSC engine | ||||
|  */ | ||||
| typedef struct _MEM_PSC_TABLE_BLOCK { | ||||
|   PSC_TBL_ENTRY **TblEntryOfMaxFreq; ///< Table entry of MaxFreq. | ||||
|   PSC_TBL_ENTRY **TblEntryOfDramTerm; ///< Table entry of Dram Term. | ||||
|   PSC_TBL_ENTRY **TblEntryOfODTPattern; ///< Table entry of ODT Pattern. | ||||
|   PSC_TBL_ENTRY **TblEntryOfSAO; ///< Table entry of Slow access mode, AddrTmg and ODC.. | ||||
|   PSC_TBL_ENTRY **TblEntryOfMR0WR; ///< Table entry of MR0[WR]. | ||||
|   PSC_TBL_ENTRY **TblEntryOfMR0CL; ///< Table entry of MR0[CL]. | ||||
|   PSC_TBL_ENTRY **TblEntryOfRC2IBT; ///< Table entry of RC2 IBT. | ||||
|   PSC_TBL_ENTRY **TblEntryOfRC10OpSpeed; ///< Table entry of RC10[operating speed]. | ||||
|   PSC_TBL_ENTRY **TblEntryOfLRIBT;///< Table entry of LRDIMM IBT | ||||
|   PSC_TBL_ENTRY **TblEntryOfLRNPR; ///< Table entry of LRDIMM F0RC13[NumPhysicalRanks]. | ||||
|   PSC_TBL_ENTRY **TblEntryOfLRNLR; ///< Table entry of LRDIMM F0RC13[NumLogicalRanks]. | ||||
|   PSC_TBL_ENTRY **TblEntryOfGen; ///< Table entry of CLKDis map and CKE, ODT as well as ChipSel tri-state map. | ||||
| } MEM_PSC_TABLE_BLOCK; | ||||
|  | ||||
| typedef BOOLEAN MEM_PSC_FLOW ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr, | ||||
|   IN       MEM_PSC_TABLE_BLOCK *EntryOfTables | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * PLATFORM SPECIFIC CONFIGURATION FLOW BLOCK - Pointers to the sub-engines of platform | ||||
|  * specific configuration. | ||||
|  */ | ||||
| typedef struct _MEM_PSC_FLOW_BLOCK { | ||||
|   MEM_PSC_TABLE_BLOCK *EntryOfTables; ///<Entry of NB specific MEM_PSC_TABLE_BLOCK | ||||
|   MEM_PSC_FLOW *MaxFrequency; ///< Sub-engine which performs "Max Frequency" value extraction. | ||||
|   MEM_PSC_FLOW *DramTerm; ///< Sub-engine which performs "Dram Term" value extraction. | ||||
|   MEM_PSC_FLOW *ODTPattern; ///< Sub-engine which performs "ODT Pattern" value extraction. | ||||
|   MEM_PSC_FLOW *SAO; ///< Sub-engine which performs "Slow access mode, AddrTmg and ODC" value extraction. | ||||
|   MEM_PSC_FLOW *MR0WrCL; ///< Sub-engine which performs "MR0[WR] and MR0[CL]" value extraction. | ||||
|   MEM_PSC_FLOW *RC2IBT; ///< Sub-engine "RC2 IBT" value extraction. | ||||
|   MEM_PSC_FLOW *RC10OpSpeed; ///< Sub-engine "RC10[operating speed]" value extraction. | ||||
|   MEM_PSC_FLOW *LRIBT; ///< Sub-engine "LRDIMM IBT" value extraction. | ||||
|   MEM_PSC_FLOW *LRNPR; ///< Sub-engine "LRDIMM F0RC13[NumPhysicalRanks]" value extraction. | ||||
|   MEM_PSC_FLOW *LRNLR; ///< Sub-engine "LRDIMM F0RC13[NumLogicalRanks]" value extraction. | ||||
| } MEM_PSC_FLOW_BLOCK; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /* Feature Default Return */ | ||||
| BOOLEAN MemFDefRet ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr | ||||
|   ); | ||||
|  | ||||
| BOOLEAN MemMDefRet ( | ||||
|   IN MEM_MAIN_DATA_BLOCK *MMPtr | ||||
|   ); | ||||
|  | ||||
| BOOLEAN MemMDefRetFalse ( | ||||
|   IN   MEM_MAIN_DATA_BLOCK *MMPtr | ||||
|   ); | ||||
|  | ||||
| /* Table Feature Default Return */ | ||||
| UINT8 MemFTableDefRet ( | ||||
|   IN OUT   MEM_TABLE_ALIAS **MTPtr | ||||
|   ); | ||||
|  | ||||
| BOOLEAN MemNIdentifyDimmConstructorRetDef ( | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN       UINT8 NodeID | ||||
|   ); | ||||
|  | ||||
| /* S3 Feature Default Return */ | ||||
| BOOLEAN MemFS3DefConstructorRet ( | ||||
|   IN OUT   VOID *S3NBPtr, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemPtr, | ||||
|   IN       UINT8 NodeID | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| MemProcessConditionalOverrides ( | ||||
|   IN       PSO_TABLE *PlatformMemoryConfiguration, | ||||
|   IN OUT   MEM_NB_BLOCK *NBPtr, | ||||
|   IN       UINT8 PsoAction, | ||||
|   IN       UINT8 Dimm | ||||
|    ); | ||||
|  | ||||
| #endif  // _OPTION_MEMORY_H_ | ||||
| @@ -1,169 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Multi-socket option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the multi-socket option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_MULTISOCKET_H_ | ||||
| #define _OPTION_MULTISOCKET_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * This function loops through all possible socket locations, gathering the number | ||||
|  * of power management steps each populated socket requires, and returns the | ||||
|  * highest number. | ||||
|  * | ||||
|  * @param[out] NumSystemSteps    Maximum number of system steps required | ||||
|  * @param[in]  StdHeader         Config handle for library and services | ||||
|  * | ||||
|  */ | ||||
| typedef VOID OPTION_MULTISOCKET_PM_STEPS ( | ||||
|      OUT   UINT8 *NumSystemSteps, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function loops through all possible socket locations, starting core 0 of | ||||
|  * each populated socket to perform the passed in AP_TASK.  After starting all | ||||
|  * other core 0s, the BSC will perform the AP_TASK as well.  This must be run by | ||||
|  * the system BSC only. | ||||
|  * | ||||
|  * @param[in]  TaskPtr           Function descriptor | ||||
|  * @param[in]  StdHeader         Config handle for library and services | ||||
|  * @param[in]  ConfigParams      AMD entry point's CPU parameter structure | ||||
|  * | ||||
|  */ | ||||
| typedef VOID OPTION_MULTISOCKET_PM_CORE0_TASK ( | ||||
|   IN       VOID *TaskPtr, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN       VOID *ConfigParams | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function loops through all possible socket locations, comparing the | ||||
|  * maximum NB frequencies to determine the slowest.  This function also | ||||
|  * determines if all coherent NB frequencies are equivalent. | ||||
|  * | ||||
|  * @param[in]  NbPstate                    NB P-state number to check (0 = fastest) | ||||
|  * @param[in]  PlatformConfig              Platform profile/build option config structure. | ||||
|  * @param[out] SystemNbCofNumerator        NB frequency numerator for the system in MHz | ||||
|  * @param[out] SystemNbCofDenominator      NB frequency denominator for the system | ||||
|  * @param[out] SystemNbCofsMatch           Whether or not all NB frequencies are equivalent | ||||
|  * @param[out] NbPstateIsEnabledOnAllCPUs  Whether or not NbPstate is valid on all CPUs | ||||
|  * @param[in]  StdHeader                   Config handle for library and services | ||||
|  * | ||||
|  * @retval     TRUE                        At least one processor has NbPstate enabled. | ||||
|  * @retval     FALSE                       NbPstate is disabled on all CPUs | ||||
|  */ | ||||
| typedef BOOLEAN OPTION_MULTISOCKET_PM_NB_COF ( | ||||
|   IN       UINT32 NbPstate, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|      OUT   UINT32 *SystemNbCofNumerator, | ||||
|      OUT   UINT32 *SystemNbCofDenominator, | ||||
|      OUT   BOOLEAN *SystemNbCofsMatch, | ||||
|      OUT   BOOLEAN *NbPstateIsEnabledOnAllCPUs, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function loops through all possible socket locations, checking whether | ||||
|  * any populated sockets require NB COF VID programming. | ||||
|  * | ||||
|  * @param[in]  StdHeader         Config handle for library and services | ||||
|  * | ||||
|  */ | ||||
| typedef BOOLEAN OPTION_MULTISOCKET_PM_NB_COF_UPDATE ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * This function loops through all possible socket locations, collecting any | ||||
|  * power management initialization errors that may have occurred.  These errors | ||||
|  * are transferred from the core 0s of the socket in which the errors occurred | ||||
|  * to the BSC's heap.  The BSC's heap is then searched for the most severe error | ||||
|  * that occurred, and returns it.  This function must be called by the BSC only. | ||||
|  * | ||||
|  * @param[in]  StdHeader         Config handle for library and services | ||||
|  * | ||||
|  */ | ||||
| typedef AGESA_STATUS OPTION_MULTISOCKET_PM_GET_EVENTS ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| #define MULTISOCKET_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /** | ||||
|  * Provide build configuration of cpu multi-socket or single socket support. | ||||
|  * | ||||
|  */ | ||||
| typedef struct  { | ||||
|   UINT16              OptMultiSocketVersion;                       ///< Table version | ||||
|   OPTION_MULTISOCKET_PM_STEPS *GetNumberOfSystemPmSteps;           ///< Method: Get number of power mgt tasks | ||||
|   OPTION_MULTISOCKET_PM_CORE0_TASK *BscRunCodeOnAllSystemCore0s;   ///< Method: Perform tasks on Core 0 of each processor | ||||
|   OPTION_MULTISOCKET_PM_NB_COF *GetSystemNbPstateSettings;         ///< Method: Find the limiting Northbridge frequency in the system. | ||||
|   OPTION_MULTISOCKET_PM_NB_COF_UPDATE *GetSystemNbCofVidUpdate;    ///< Method: Determine if any Northbridges in the system need to update their COF/VID. | ||||
|   OPTION_MULTISOCKET_PM_GET_EVENTS *BscRetrievePmEarlyInitErrors;  ///< Method: Gathers error information from all Core 0s. | ||||
| } OPTION_MULTISOCKET_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_MULTISOCKET_H_ | ||||
| @@ -1,115 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD ACPI PState option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the PStates option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_PSTATE_H_ | ||||
| #define _OPTION_PSTATE_H_ | ||||
|  | ||||
| #include "cpuPstateTables.h" | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_SSDT_FEATURE ( | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN OUT   VOID                   **AcpiPstatePtr | ||||
|   ); | ||||
|  | ||||
| typedef UINT32 OPTION_ACPI_FEATURE ( | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       PSTATE_LEVELING        *PStateLevelingBuffer, | ||||
|   IN OUT   VOID                   **AcpiPStatePtr, | ||||
|   IN       UINT8                  LocalApicId, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_PSTATE_GATHER ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN OUT   S_CPU_AMD_PSTATE  *PStateStrucPtr | ||||
|   ); | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_PSTATE_LEVELING ( | ||||
|   IN OUT   S_CPU_AMD_PSTATE   *PStateStrucPtr, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| #define PSTATE_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /// Indirection vectors for POST/PEI PState code | ||||
| typedef struct  { | ||||
|   UINT16                  OptPstateVersion;     ///< revision of this structure | ||||
|   OPTION_PSTATE_GATHER    *PstateGather;        ///< vector for data gathering routine | ||||
|   OPTION_PSTATE_LEVELING  *PstateLeveling;      ///< vector for leveling routine | ||||
| } OPTION_PSTATE_POST_CONFIGURATION; | ||||
|  | ||||
| /// Indirection vectors for LATE/DXE PState code | ||||
| typedef struct  { | ||||
|   UINT16                  OptPstateVersion;     ///< revision of this structure | ||||
|   OPTION_SSDT_FEATURE     *SsdtFeature;         ///< vector for routine to generate SSDT | ||||
|   OPTION_ACPI_FEATURE     *PstateFeature;       ///< vector for routine to generate ACPI PState Objects | ||||
|   OPTION_ACPI_FEATURE     *CstateFeature;       ///< vector for routine to generate ACPI CState Objects | ||||
|   BOOLEAN                 CfgPstatePpc;         ///< boolean for creating _PPC method | ||||
|   BOOLEAN                 CfgPstatePct;         ///< boolean for creating _PCT method | ||||
|   BOOLEAN                 CfgPstatePsd;         ///< boolean for creating _PSD method | ||||
|   BOOLEAN                 CfgPstatePss;         ///< boolean for creating _PSS method | ||||
|   BOOLEAN                 CfgPstateXpss;        ///< boolean for creating _XPSS method | ||||
| } OPTION_PSTATE_LATE_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #endif  // _OPTION_PSTATE_H_ | ||||
| @@ -1,96 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD SLIT option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the SLIT option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_SLIT_H_ | ||||
| #define _OPTION_SLIT_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Create the ACPI System Locality Distance Information Table. | ||||
|  * | ||||
|  */ | ||||
| typedef AGESA_STATUS OPTION_SLIT_FEATURE ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS      *StdHeader, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN OUT   VOID                   **SlitPtr | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|  * Clean up DRAM used during SLIT creation. | ||||
|  * | ||||
|  */ | ||||
| typedef AGESA_STATUS OPTION_SLIT_RELEASE_BUFFER ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS    *StdHeader | ||||
|   ); | ||||
|  | ||||
| #define SLIT_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /// The Option Configuration of SLIT | ||||
| typedef struct  { | ||||
|   UINT16              OptSlitVersion;       ///< The version number of SLIT | ||||
|   OPTION_SLIT_FEATURE  *SlitFeature;        ///< The Option Feature of SLIT | ||||
|   OPTION_SLIT_RELEASE_BUFFER *SlitReleaseBuffer; ///< Release buffer | ||||
| } OPTION_SLIT_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_SLIT_H_ | ||||
| @@ -1,82 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD SRAT option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the SRAT option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_SRAT_H_ | ||||
| #define _OPTION_SRAT_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_SRAT_FEATURE ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS     *StdHeader, | ||||
|   IN OUT   VOID                  **SratPtr | ||||
|   ); | ||||
|  | ||||
| #define SRAT_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /// The Option Configuration of SRAT | ||||
| typedef struct  { | ||||
|   UINT16              OptSratVersion;       ///< The version number of SRAT | ||||
|   OPTION_SRAT_FEATURE  *SratFeature;        ///< The Option Feature of SRAT | ||||
| } OPTION_SRAT_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_SRAT_H_ | ||||
| @@ -1,83 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD WHEA option API. | ||||
|  * | ||||
|  * Contains structures and values used to control the WHEA option code. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_WHEA_H_ | ||||
| #define _OPTION_WHEA_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| typedef AGESA_STATUS OPTION_WHEA_FEATURE ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS    *StdHeader, | ||||
|   IN OUT   VOID                 **WheaMcePtr, | ||||
|   IN OUT   VOID                 **WheaCmcPtr | ||||
|   ); | ||||
|  | ||||
| #define WHEA_STRUCT_VERSION  0x01 | ||||
|  | ||||
| /// The Option Configuration of WHEA | ||||
| typedef struct  { | ||||
|   UINT16              OptWheaVersion;       ///< The version number of WHEA | ||||
|   OPTION_WHEA_FEATURE  *WheaFeature;        ///< The Option Feature of WHEA | ||||
| } OPTION_WHEA_CONFIGURATION; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #endif  // _OPTION_WHEA_H_ | ||||
| @@ -1,71 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AGESA options structures | ||||
|  * | ||||
|  * Contains options control structures for the AGESA build options | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef _OPTIONS_H_ | ||||
| #define _OPTIONS_H_ | ||||
|  | ||||
| /** | ||||
|  * Provide topology limits for loops and runtime, based on supported families. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT32              PlatformNumberOfSockets;                  ///< The limit to the number of processors based on | ||||
|                                                                 ///< supported families and other build options. | ||||
|   UINT32              PlatformNumberOfModules;                  ///< The limit to the number of modules in a processor, based | ||||
|                                                                 ///< on supported families. | ||||
| } OPTIONS_CONFIG_TOPOLOGY; | ||||
|  | ||||
| /** | ||||
|  * Dispatch Table. | ||||
|  * | ||||
|  * The push high dispatcher uses this table to find what entries are currently in the build image. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT32              FunctionId;                   ///< The function id specified. | ||||
|   IMAGE_ENTRY         EntryPoint;                   ///< The corresponding entry point to call. | ||||
| } DISPATCH_TABLE; | ||||
|  | ||||
|  | ||||
| #endif // _OPTIONS_H_ | ||||
| @@ -1,112 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD HyperTransport option API. | ||||
|  * | ||||
|  * Contains option pre-compile logic.  This file is used by the options | ||||
|  * installer and internally by the HT code initializers. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _OPTION_HT_H_ | ||||
| #define _OPTION_HT_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Provide HT build option results | ||||
|  */ | ||||
| typedef struct { | ||||
|   CONST BOOLEAN IsUsingRecoveryHt;                   ///< Manual BUID Swap List processing should assume that HT Recovery was used. | ||||
|   CONST BOOLEAN IsSetHtCrcFlood;                     ///< Enable setting of HT CRC Flood. | ||||
|                                                      ///< Build-time only customizable - @BldCfgItem{BLDCFG_SET_HTCRC_SYNC_FLOOD} | ||||
|   CONST BOOLEAN IsUsingUnitIdClumping;               ///< Enable automatically HT Spec compliant Unit Id Clumping. | ||||
|                                                      ///< Build-time only customizable - @BldCfgItem{BLDCFG_USE_UNIT_ID_CLUMPING} | ||||
|   CONST AMD_HT_INTERFACE *HtOptionPlatformDefaults;  ///< A set of build time options for HT constructor. | ||||
|   CONST VOID *HtOptionInternalInterface;             ///< Use this internal interface initializer. | ||||
|   CONST VOID *HtOptionInternalFeatures;              ///< Use this internal feature set initializer. | ||||
|   CONST VOID *HtOptionFamilyNorthbridgeList;         ///< Use this list of northbridge initializers. | ||||
|   CONST UINT8 *CONST *HtOptionBuiltinTopologies;     ///< Use this list of built-in topologies. | ||||
| } OPTION_HT_CONFIGURATION; | ||||
|  | ||||
| typedef AGESA_STATUS | ||||
| F_OPTION_HT_INIT_RESET ( | ||||
|   IN       AMD_CONFIG_PARAMS        *StdHeader, | ||||
|   IN       AMD_HT_RESET_INTERFACE   *AmdHtResetInterface | ||||
|   ); | ||||
|  | ||||
| typedef F_OPTION_HT_INIT_RESET *PF_OPTION_HT_INIT_RESET; | ||||
|  | ||||
| typedef AGESA_STATUS | ||||
| F_OPTION_HT_RESET_CONSTRUCTOR ( | ||||
|   IN       AMD_CONFIG_PARAMS         *StdHeader, | ||||
|   IN       AMD_HT_RESET_INTERFACE    *AmdHtResetInterface | ||||
|   ); | ||||
|  | ||||
| typedef F_OPTION_HT_RESET_CONSTRUCTOR *PF_OPTION_HT_RESET_CONSTRUCTOR; | ||||
|  | ||||
| /** | ||||
|  * Provide HT reset initialization build option results | ||||
|  */ | ||||
| typedef struct { | ||||
|   PF_OPTION_HT_INIT_RESET HtInitReset;               ///< Method: HT reset initialization. | ||||
|   PF_OPTION_HT_RESET_CONSTRUCTOR HtResetConstructor; ///< Method: HT reset initialization. | ||||
| } OPTION_HT_INIT_RESET; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #endif  // _OPTION_HT_H_ | ||||
| @@ -1,375 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Create outline and references for Build Configuration and Options Component mainpage documentation. | ||||
|  * | ||||
|  * Design guides, maintenance guides, and general documentation, are | ||||
|  * collected using this file onto the documentation mainpage. | ||||
|  * This file contains doxygen comment blocks, only. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Documentation | ||||
|  * @e \$Revision: 35380 $   @e \$Date: 2010-07-22 00:37:18 +0800 (Thu, 22 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @page optionmain Build Configuration and Options Documentation | ||||
|  * | ||||
|  * Additional documentation for the Build Configuration and Options component consists of | ||||
|  * | ||||
|  * - Introduction and Overview to Build Options | ||||
|  *   - @subpage platforminstall "Platform Build Options" | ||||
|  *   - @subpage bldcfg "Build Configuration Item Cross Reference" | ||||
|  *   - @subpage examplecustomizations "Customization Examples" | ||||
|  * - Maintenance Guides: | ||||
|  *   -  For debug of the Options system, use compiler options | ||||
|  *      @n <tt>      /P /EP /C /FAs      </tt> @n | ||||
|  *      PreProcessor output is produced in an .i file in the directory where the project | ||||
|  *      file is located. | ||||
|  * - Design Guides: | ||||
|  *   - add here >>> | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @page platforminstall Platform Build Options. | ||||
|  * | ||||
|  * Build options are boolean constants. The purpose of build options is to remove code | ||||
|  * from the build to reduce the overall code size present in the ROM image. Unless | ||||
|  * otherwise specified, the default action is to include all options. If a build option is | ||||
|  * not specifically listed as disabled, then it is included into the build. | ||||
|  * | ||||
|  * The documented build options are imported from a user controlled file for | ||||
|  * processing. The build options for all platform solutions are listed below: | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_UDIMMS_SUPPORT | ||||
|  * @li @e BLDOPT_REMOVE_UDIMMS_SUPPORT @n | ||||
|  *        If unbuffered DIMMs are NOT expected to be required in the system, the code that | ||||
|  *        handles unbuffered DIMMs can be removed from the build. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_RDIMMS_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_RDIMMS_SUPPORT @n | ||||
|  *         If registered DIMMs are NOT expected to be required in the system, the code | ||||
|  *         that handles registered DIMMs can be removed from the build. | ||||
|  * | ||||
|   * @anchor BLDOPT_REMOVE_LRDIMMS_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_LRDIMMS_SUPPORT @n | ||||
|  *         If Load Reduced DIMMs are NOT expected to be required in the system, the code | ||||
|  *         that handles Load Reduced DIMMs can be removed from the build. | ||||
|  * | ||||
|  *     @note The above three options operate independently from each other; however, at | ||||
|  *     least one of the unbuffered , registered or load reduced DIMM options must be present in the build. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_ECC_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_ECC_SUPPORT @n | ||||
|  *         Use this option to remove the code for Error Checking & Correction. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_BANK_INTERLEAVE | ||||
|  * @li @e  BLDOPT_REMOVE_BANK_INTERLEAVE @n | ||||
|  *         Interleaving is a mechanism to do performance fine tuning. This option | ||||
|  *         interleaves memory between banks on a DIMM. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_DCT_INTERLEAVE | ||||
|  * @li @e  BLDOPT_REMOVE_DCT_INTERLEAVE @n | ||||
|  *         Interleaving is a mechanism to do performance fine tuning. This option | ||||
|  *         interleaves memory from two DRAM controllers. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_NODE_INTERLEAVE | ||||
|  * @li @e  BLDOPT_REMOVE_NODE_INTERLEAVE @n | ||||
|  *         Interleaving is a mechanism to do performance fine tuning. This option | ||||
|  *         interleaves memory from two HyperTransport nodes. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_PARALLEL_TRAINING | ||||
|  * @li @e  BLDOPT_REMOVE_PARALLEL_TRAINING @n | ||||
|  *         For multi-socket systems, training memory in parallel can reduce the time | ||||
|  *         needed to boot. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_ONLINE_SPARE_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_ONLINE_SPARE_SUPPORT @n | ||||
|  *         Online Spare support is removed by this option. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_MULTISOCKET_SUPPORT | ||||
|  * @li @e BLDOPT_REMOVE_MULTISOCKET_SUPPORT @n | ||||
|  *        Many systems use only a single socket and may benefit in code space to remove | ||||
|  *        this code. However, certain processors have multiple HyperTransport nodes | ||||
|  *        within a single socket. For these processors, the multi-node support is | ||||
|  *        required and this option has no effect. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_ACPI_PSTATES | ||||
|  * @li @e  BLDOPT_REMOVE_ACPI_PSTATES @n | ||||
|  *         This option removes the code that generates the ACPI tables used in power | ||||
|  *         management. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_SRAT | ||||
|  * @li @e  BLDOPT_REMOVE_SRAT @n | ||||
|  *         This option removes the code that generates the SRAT tables used in performance | ||||
|  *         tuning. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_SLIT | ||||
|  * @li @e  BLDOPT_REMOVE_SLIT @n | ||||
|  *         This option removes the code that generates the SLIT tables used in performance | ||||
|  *         tuning. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_WHEA | ||||
|  * @li @e  BLDOPT_REMOVE_WHEA @n | ||||
|  *         This option removes the code that generates the WHEA tables used in error | ||||
|  *         handling and reporting. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_DMI | ||||
|  * @li @e  BLDOPT_REMOVE_DMI @n | ||||
|  *         This option removes the code that generates the DMI tables used in system | ||||
|  *         management. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_DQS_TRAINING | ||||
|  * @li @e  BLDOPT_REMOVE_DQS_TRAINING @n | ||||
|  *         This option removes the code used in memory performance tuning. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_EARLY_SAMPLES | ||||
|  * @li @e  BLDOPT_REMOVE_EARLY_SAMPLES @n | ||||
|  *         Special support for Early Samples is included. Default setting is FALSE. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_HT_ASSIST | ||||
|  * @li @e  BLDOPT_REMOVE_HT_ASSIST @n | ||||
|  *         This option removes the code which implements the HT Assist feature. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_ATM_MODE | ||||
|  * @li @e  BLDOPT_REMOVE_ATM_MODE @n | ||||
|  *         This option removes the code which implements the ATM feature. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_MSG_BASED_C1E | ||||
|  * @li @e  BLDOPT_REMOVE_MSG_BASED_C1E @n | ||||
|  *         This option removes the code which implements the Message Based C1e feature. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_C6_STATE | ||||
|  * @li @e  BLDOPT_REMOVE_C6_STATE @n | ||||
|  *         This option removes the code which implements the C6 C-state feature. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_MEM_RESTORE_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_MEM_RESTORE_SUPPORT @n | ||||
|  *         This option removes the memory context restore feature. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FAMILY_10_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FAMILY_10_SUPPORT @n | ||||
|  *         If the package contains support for family 10h processors, remove that support. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FAMILY_12_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FAMILY_12_SUPPORT @n | ||||
|  *         If the package contains support for family 10h processors, remove that support. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FAMILY_14_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FAMILY_14_SUPPORT @n | ||||
|  *         If the package contains support for family 14h processors, remove that support. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FAMILY_15_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FAMILY_15_SUPPORT @n | ||||
|  *         If the package contains support for family 15h processors, remove that support. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_AM3_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_AM3_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for AM3 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_ASB2_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_ASB2_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for ASB2 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_C32_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_C32_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for C32 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FM1_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FM1_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for FM1 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FP1_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FP1_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for FP1 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FS1_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FS1_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for FS1 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_FT1_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_FT1_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for FT1 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_G34_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_G34_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for G34 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_S1G3_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_S1G3_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for S1G3 sockets. | ||||
|  * | ||||
|  * @anchor BLDOPT_REMOVE_S1G4_SOCKET_SUPPORT | ||||
|  * @li @e  BLDOPT_REMOVE_S1G4_SOCKET_SUPPORT @n | ||||
|  *         This option removes the code which implements support for processors packaged for S1G4 sockets. | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @page examplecustomizations Customization Examples | ||||
|  * | ||||
|  * The Addendum \<plat\>Options.c file for each platform contains the minimum required | ||||
|  * customizations for that platform.  That is, it contains settings which would be needed | ||||
|  * to boot a SimNow! bsd for that platform. | ||||
|  * However, each individual product based on that platform will have customizations necessary for | ||||
|  * that hardware.  Since the actual customizations needed vary so much, they are not included in | ||||
|  * the \<plat\>Options.c.  This section provides examples of useful customizations that you can use or | ||||
|  * modify to suit your needs. | ||||
|  * | ||||
|  * @par | ||||
|  * | ||||
|  * Source for the examples shown can be found at Addendum\\Examples. @n | ||||
|  * | ||||
|  * - @ref DeemphasisExamples "Deemphasis List Examples" | ||||
|  * - @ref FrequencyLimitExamples "Frequency Limit Examples" | ||||
|  * - @ref PerfPerWattHt "A performance-per-watt optimization Example" | ||||
|  * | ||||
|  * @anchor DeemphasisExamples | ||||
|  * @par Deemphasis List Examples | ||||
|  * | ||||
|  * These examples customize PLATFORM_CONFIGURATION.PlatformDeemphasisList. | ||||
|  * Source for the deemphasis list examples can be found in DeemphasisExamples.c. @n | ||||
|  * @dontinclude DeemphasisExamples.c | ||||
|  * <ul> | ||||
|  * <li> | ||||
|  *  The following deemphasis list provides an example for a 2P MCM Max Performance configuration. | ||||
|  *  High Speed HT frequencies are supported.  There is only one non-coherent chain.  Note the technique of | ||||
|  *  putting specified link matches before all uses of match any.  It often works well to specify the non-coherent links | ||||
|  *  and use match any for the coherent links. | ||||
|  *  @skip DinarDeemphasisList | ||||
|  *  @until { | ||||
|  *  The non-coherent chain can run up to 2600 MHz.  The chain is located on Socket 0, package Link 2. | ||||
|  *  @until { | ||||
|  *  @line } | ||||
|  *  @line { | ||||
|  *  @line } | ||||
|  *  The coherent links can run up to 3200 MHz. | ||||
|  *  @until HT_FREQUENCY_MAX | ||||
|  *  @line } | ||||
|  *  end of list: | ||||
|  *  @until } | ||||
|  *  Make this list the build time customized deemphasis list. | ||||
|  *  @line define | ||||
|  * | ||||
|  * </li><li> | ||||
|  * | ||||
|  * The following deemphasis list provides an example for a 4P MCM Max Performance configuration. | ||||
|  * This system has a backplane with connectors for CPU cards and an IO board. So trace lengths are long. | ||||
|  * There can be one to four IO Chains, depending on the IO board. | ||||
|  * @skipline DoubloonDeemphasisList | ||||
|  * @until DoubloonDeemphasisList | ||||
|  * | ||||
|  * </li><li> | ||||
|  * | ||||
|  * The following deemphasis list further illustrates complex coherent system deemphasis.  This is the same | ||||
|  * Dinar system as in an earlier example, but this time all the coherent links are explicitly customized (as | ||||
|  * might be needed if each link has unique characterization).  For this example, we skip the non-coherent chains. | ||||
|  * (A real system would have to include them, see example above.) | ||||
|  *  @skip DinarPerLinkDeemphasisList | ||||
|  *  @until { | ||||
|  *  Provide deemphasis settings for the 16 bit, ganged, links, Socket 0 links 0, 1 and Socket 1 links 1 and 2. | ||||
|  *  Provide entries to customize all HT3 frequencies at which the links may run.  This example covers all HT3 speeds. | ||||
|  *  @until { | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  Link 3 on both sockets connects different internal die:  sublink 0 connects the internal node zeroes, and | ||||
|  *  sublink 1 connects the internal node ones.  So the link is unganged and both sublinks must be specifically | ||||
|  *  customized. | ||||
|  *  @until { | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  @until DcvLevelMinus6 | ||||
|  *  end of list: | ||||
|  *  @until define | ||||
|  * | ||||
|  * </ul> | ||||
|  * | ||||
|  * @anchor FrequencyLimitExamples | ||||
|  * @par Frequency Limit Examples | ||||
|  * | ||||
|  * These examples customize AMD_HT_INTERFACE.CpuToCpuPcbLimitsList and AMD_HT_INTERFACE.IoPcbLimitsList. | ||||
|  * Source for the frequency limit examples can be found in FrequencyLimitExamples.c. @n | ||||
|  * @dontinclude FrequencyLimitExamples.c | ||||
|  * <ul> | ||||
|  * <li> | ||||
|  *    The following list provides an example for limiting all coherent links to non-extended frequencies, | ||||
|  * that is, to 2600 MHz or less. | ||||
|  * @skipline NonExtendedCpuToCpuLimitList | ||||
|  * @until { | ||||
|  *   Provide the limit customization.  Match links from any socket, any package link, to any socket, any package link. Width is not limited. | ||||
|  * @until HT_FREQUENCY_LIMIT_2600M | ||||
|  * End of list: | ||||
|  * @until ; | ||||
|  * Customize the build to use this cpu to cpu frequency limit. | ||||
|  * @until NonExtendedCpuToCpuLimitList | ||||
|  * @n </li> | ||||
|  * <li> | ||||
|  *    The following list provides an example for limiting all coherent links to HT 1 frequencies, | ||||
|  * that is, to 1000 MHz or less.  This is sometimes useful for test and debug. | ||||
|  * @skipline Ht1CpuToCpuLimitList | ||||
|  * @until Ht1CpuToCpuLimitList | ||||
|  * @n </li> | ||||
|  * <li> | ||||
|  *    The following list provides an example for limiting all non-coherent links to 2400 MHz or less. | ||||
|  *    The chain is matched by host processor Socket and package Link.  The depth can be used to select a particular device | ||||
|  *    to device link on the chain. In this example, the chain consists of a single cave device and depth can be set to match any. | ||||
|  * @skipline No2600MhzIoLimitList | ||||
|  * @until No2600MhzIoLimitList | ||||
|  * @n </li> | ||||
|  * <li> | ||||
|  *    The following list provides an example for limiting all non-coherent links to the minimum HT 3 frequency, | ||||
|  * that is, to 1200 MHz or less.  This can be useful for test and debug. | ||||
|  * @skipline MinHt3IoLimitList | ||||
|  * @until MinHt3IoLimitList | ||||
|  * @n </li> | ||||
|  * | ||||
|  * </ul> | ||||
|  * | ||||
|  * @anchor PerfPerWattHt | ||||
|  * @par Performance-per-Watt Optimization Example | ||||
|  * | ||||
|  * This example customizes AMD_HT_INTERFACE.SkipRegangList. | ||||
|  * Source for the Performance-per-watt Optimization example can be found in PerfPerWatt.c. @n | ||||
|  * @dontinclude PerfPerWatt.c | ||||
|  * To implement a performance-per-watt optimization for MCM processors, use the skip regang structure shown. @n | ||||
|  * @skipline PerfPerWatt | ||||
|  * @until PerfPerWatt | ||||
|  * | ||||
|  */ | ||||
| @@ -1,314 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Platform Specific Memory Configuration | ||||
|  * | ||||
|  * Contains Definitions and Macros for control of AGESA Memory code on a per platform basis | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  OPTION | ||||
|  * @e \$Revision: 35415 $   @e \$Date: 2010-07-22 06:10:32 +0800 (Thu, 22 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _PLATFORM_MEMORY_CONFIGURATION_H_ | ||||
| #define _PLATFORM_MEMORY_CONFIGURATION_H_ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #ifndef PSO_ENTRY | ||||
|   #define PSO_ENTRY UINT8 | ||||
| #endif | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 PLATFORM SPECIFIC MEMORY DEFINITIONS | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /// | ||||
| ///  Memory Speed and DIMM Population Masks | ||||
| /// | ||||
| ///<  DDR Speed Masks | ||||
| ///<    Specifies the DDR Speed on a memory channel | ||||
| /// | ||||
| #define ANY_SPEED 0xFFFFFFFF | ||||
| #define DDR400  ((UINT32) 1 << (DDR400_FREQUENCY  / 66)) | ||||
| #define DDR533  ((UINT32) 1 << (DDR533_FREQUENCY  / 66)) | ||||
| #define DDR667  ((UINT32) 1 << (DDR667_FREQUENCY  / 66)) | ||||
| #define DDR800  ((UINT32) 1 << (DDR800_FREQUENCY  / 66)) | ||||
| #define DDR1066 ((UINT32) 1 << (DDR1066_FREQUENCY / 66)) | ||||
| #define DDR1333 ((UINT32) 1 << (DDR1333_FREQUENCY / 66)) | ||||
| #define DDR1600 ((UINT32) 1 << (DDR1600_FREQUENCY / 66)) | ||||
| #define DDR1866 ((UINT32) 1 << (DDR1866_FREQUENCY / 66)) | ||||
| /// | ||||
| ///<  DIMM POPULATION MASKS | ||||
| ///<    Specifies the DIMM Population on a channel (can be added together to specify configuration). | ||||
| ///<    ex. SR_DIMM0 + SR_DIMM1                       : Single Rank Dimm in slot 0 AND Slot 1 | ||||
| ///<        SR_DIMM0 + DR_DIMM0 + SR_DIMM1 +DR_DIMM1  : Single OR Dual rank in Slot 0 AND Single OR Dual rank in Slot 1 | ||||
| /// | ||||
| #define ANY_       0xFF       ///< Any dimm configuration the current channel | ||||
| #define SR_DIMM0   0x0001     ///< Single rank dimm in slot 0 on the current channel | ||||
| #define SR_DIMM1   0x0010     ///< Single rank dimm in slot 1 on the current channel | ||||
| #define SR_DIMM2   0x0100     ///< Single rank dimm in slot 2 on the current channel | ||||
| #define SR_DIMM3   0x1000     ///< Single rank dimm in slot 3 on the current channel | ||||
| #define DR_DIMM0   0x0002     ///< Dual rank dimm in slot 0 on the current channel | ||||
| #define DR_DIMM1   0x0020     ///< Dual rank dimm in slot 1 on the current channel | ||||
| #define DR_DIMM2   0x0200     ///< Dual rank dimm in slot 2 on the current channel | ||||
| #define DR_DIMM3   0x2000     ///< Dual rank dimm in slot 3 on the current channel | ||||
| #define QR_DIMM0   0x0004     ///< Quad rank dimm in slot 0 on the current channel | ||||
| #define QR_DIMM1   0x0040     ///< Quad rank dimm in slot 1 on the current channel | ||||
| #define QR_DIMM2   0x0400     ///< Quad rank dimm in slot 2 on the current channel | ||||
| #define QR_DIMM3   0x4000     ///< Quad rank dimm in slot 3 on the current channel | ||||
| #define ANY_DIMM0   0x000F    ///< Any Dimm combination in slot 0 on the current channel | ||||
| #define ANY_DIMM1   0x00F0    ///< Any Dimm combination in slot 1 on the current channel | ||||
| #define ANY_DIMM2   0x0F00    ///< Any Dimm combination in slot 2 on the current channel | ||||
| #define ANY_DIMM3   0xF000    ///< Any Dimm combination in slot 3 on the current channel | ||||
| /// | ||||
| ///< Number of Dimms on the current channel | ||||
| ///<   This is a mask used to indicate the number of dimms in a channel | ||||
| ///<   They can be added to indicate multiple conditions (i.e 1 OR 2 Dimms) | ||||
| /// | ||||
| #define ANY_NUM     0xFF      ///< Any number of Dimms | ||||
| #define NO_DIMM     0x00      ///< No Dimms present | ||||
| #define ONE_DIMM    0x01      ///< One dimm Poulated on the current channel | ||||
| #define TWO_DIMM    0x02      ///< Two dimms Poulated on the current channel | ||||
| #define THREE_DIMM  0x04      ///< Three dimms Poulated on the current channel | ||||
| #define FOUR_DIMM   0x08      ///< Four dimms Poulated on the current channel | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Platform Specific Override Definitions for Socket, Channel and Dimm | ||||
|  * This indicates where a platform override will be applied. | ||||
|  * | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /// | ||||
| ///< SOCKET MASKS | ||||
| ///<   Indicates associated processor sockets to apply override settings | ||||
| /// | ||||
| #define ANY_SOCKET     0xFF    ///<  Apply to all sockets | ||||
| #define SOCKET0        0x01    ///<  Apply to socket 0 | ||||
| #define SOCKET1        0x02    ///<  Apply to socket 1 | ||||
| #define SOCKET2        0x04    ///<  Apply to socket 2 | ||||
| #define SOCKET3        0x08    ///<  Apply to socket 3 | ||||
| #define SOCKET4        0x10    ///<  Apply to socket 4 | ||||
| #define SOCKET5        0x20    ///<  Apply to socket 5 | ||||
| #define SOCKET6        0x40    ///<  Apply to socket 6 | ||||
| #define SOCKET7        0x80    ///<  Apply to socket 7 | ||||
| /// | ||||
| ///< CHANNEL MASKS | ||||
| ///<   Indicates Memory channels where override should be applied | ||||
| /// | ||||
| #define ANY_CHANNEL    0xFF    ///<  Apply to all Memory channels | ||||
| #define CHANNEL_A      0x01    ///<  Apply to Channel A | ||||
| #define CHANNEL_B      0x02    ///<  Apply to Channel B | ||||
| #define CHANNEL_C      0x04    ///<  Apply to Channel C | ||||
| #define CHANNEL_D      0x08    ///<  Apply to Channel D | ||||
| /// | ||||
| /// DIMM MASKS | ||||
| ///   Indicates Dimm Slots where override should be applied | ||||
| /// | ||||
| #define ALL_DIMMS      0xFF    ///<  Apply to all dimm slots | ||||
| #define DIMM0          0x01    ///<  Apply to Dimm Slot 0 | ||||
| #define DIMM1          0x02    ///<  Apply to Dimm Slot 1 | ||||
| #define DIMM2          0x04    ///<  Apply to Dimm Slot 2 | ||||
| #define DIMM3          0x08    ///<  Apply to Dimm Slot 3 | ||||
| /// | ||||
| /// REGISTER ACCESS MASKS | ||||
| ///   Not supported as an at this time | ||||
| /// | ||||
| #define ACCESS_NB0     0x0 | ||||
| #define ACCESS_NB1     0x1 | ||||
| #define ACCESS_NB2     0x2 | ||||
| #define ACCESS_NB3     0x3 | ||||
| #define ACCESS_NB4     0x4 | ||||
| #define ACCESS_PHY     0x5 | ||||
| #define ACCESS_DCT_XT  0x6 | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Platform Specific Overriding Table Definitions | ||||
|  * | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #define PSO_END           0     ///< Table End | ||||
| #define PSO_CKE_TRI       1     ///< CKE Tristate Map | ||||
| #define PSO_ODT_TRI       2     ///< ODT Tristate Map | ||||
| #define PSO_CS_TRI        3     ///< CS Tristate Map | ||||
| #define PSO_MAX_DIMMS     4     ///< Max Dimms per channel | ||||
| #define PSO_CLK_SPEED     5     ///< Clock Speed | ||||
| #define PSO_DIMM_TYPE     6     ///< Dimm Type | ||||
| #define PSO_MEMCLK_DIS    7     ///< MEMCLK Disable Map | ||||
| #define PSO_MAX_CHNLS     8     ///< Max Channels per Socket | ||||
| #define PSO_BUS_SPEED     9     ///< Max Memory Bus Speed | ||||
| #define PSO_MAX_CHIPSELS 10     ///< Max Chipsel per Channel | ||||
| #define PSO_MEM_TECH     11     ///< Channel Memory Type | ||||
| #define PSO_WL_SEED      12     ///< DDR3 Write Levelization Seed delay | ||||
| #define PSO_RXEN_SEED    13     ///< Hardwared based RxEn seed | ||||
| #define PSO_NO_LRDIMM_CS67_ROUTING 14     ///< CS6 and CS7 are not Routed to all Memoy slots on a channel for LRDIMMs | ||||
|  | ||||
| /*---------------------------------- | ||||
|  * CONDITIONAL PSO SPECIFIC ENTRIES | ||||
|  *---------------------------------*/ | ||||
| // Condition Types | ||||
| #define CONDITIONAL_PSO_MIN   100     ///< Start of Conditional Entry Types | ||||
| #define PSO_CONDITION_AND     100     ///< And Block - Start of Conditional block | ||||
| #define PSO_CONDITION_LOC     101     ///< Location - Specify Socket, Channel, Dimms to be affected | ||||
| #define PSO_CONDITION_SPD     102     ///< SPD - Specify a specific SPD value on a Dimm on the channel | ||||
| #define PSO_CONDITION_REG     103     //   Reserved | ||||
| #define PSO_CONDITION_MAX     103     ///< End Of Condition Entry Types | ||||
| // Action Types | ||||
| #define PSO_ACTION_MIN        120     ///< Start of Action Entry Types | ||||
| #define PSO_ACTION_ODT        120     ///< ODT values to override | ||||
| #define PSO_ACTION_ADDRTMG    121     ///< Address/Timing values to override | ||||
| #define PSO_ACTION_ODCCONTROL 122     ///< ODC Control values to override | ||||
| #define PSO_ACTION_SLEWRATE   123     ///< Slew Rate value to override | ||||
| #define PSO_ACTION_REG        124     //   Reserved | ||||
| #define PSO_ACTION_SPEEDLIMIT 125     ///< Memory Bus speed Limit based on configuration | ||||
| #define PSO_ACTION_MAX        125     ///< End of Action Entry Types | ||||
| #define CONDITIONAL_PSO_MAX   139     ///< End of Conditional Entry Types | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 CONDITIONAL OVERRIDE TABLE MACROS | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #define MEMCLK_DIS_MAP(SocketID, ChannelID, Bit0Map, Bit1Map, Bit2Map, Bit3Map, Bit4Map, Bit5Map, Bit6Map, Bit7Map) \ | ||||
|   PSO_MEMCLK_DIS, 10, SocketID, ChannelID, Bit0Map, Bit1Map, Bit2Map, Bit3Map, Bit4Map, Bit5Map, Bit6Map, Bit7Map | ||||
|  | ||||
| #define CKE_TRI_MAP(SocketID, ChannelID, Bit0Map, Bit1Map) \ | ||||
|   PSO_CKE_TRI, 4, SocketID, ChannelID, Bit0Map, Bit1Map | ||||
|  | ||||
| #define ODT_TRI_MAP(SocketID, ChannelID, Bit0Map, Bit1Map, Bit2Map, Bit3Map) \ | ||||
|   PSO_ODT_TRI, 6, SocketID, ChannelID, Bit0Map, Bit1Map, Bit2Map, Bit3Map | ||||
|  | ||||
| #define CS_TRI_MAP(SocketID, ChannelID, Bit0Map, Bit1Map, Bit2Map, Bit3Map, Bit4Map, Bit5Map, Bit6Map, Bit7Map) \ | ||||
|   PSO_CS_TRI, 10, SocketID, ChannelID, Bit0Map, Bit1Map, Bit2Map, Bit3Map, Bit4Map, Bit5Map, Bit6Map, Bit7Map | ||||
|  | ||||
| #define NUMBER_OF_DIMMS_SUPPORTED(SocketID, ChannelID, NumberOfDimmSlotsPerChannel) \ | ||||
|   PSO_MAX_DIMMS, 3, SocketID, ChannelID, NumberOfDimmSlotsPerChannel | ||||
|  | ||||
| #define NUMBER_OF_CHIP_SELECTS_SUPPORTED(SocketID, ChannelID, NumberOfChipSelectsPerChannel) \ | ||||
|   PSO_MAX_CHIPSELS, 3, SocketID, ChannelID, NumberOfChipSelectsPerChannel | ||||
|  | ||||
| #define NUMBER_OF_CHANNELS_SUPPORTED(SocketID, NumberOfChannelsPerSocket) \ | ||||
|   PSO_MAX_CHNLS, 3, SocketID, ANY_CHANNEL, NumberOfChannelsPerSocket | ||||
|  | ||||
| #define OVERRIDE_DDR_BUS_SPEED(SocketID, ChannelID, TimingMode, BusSpeed) \ | ||||
|   PSO_BUS_SPEED, 10, SocketID, ChannelID, TimingMode, (TimingMode >> 8), (TimingMode >> 16), (TimingMode >> 24), \ | ||||
|   BusSpeed, (BusSpeed >> 8), (BusSpeed >> 16), (BusSpeed >> 24) | ||||
|  | ||||
| #define DRAM_TECHNOLOGY(SocketID, MemTechType) \ | ||||
|   PSO_MEM_TECH, 6, SocketID, ANY_CHANNEL, MemTechType, (MemTechType >> 8), (MemTechType >> 16), (MemTechType >> 24) | ||||
|  | ||||
| #define WRITE_LEVELING_SEED(SocketID, ChannelID, Byte0Seed, Byte1Seed, Byte2Seed, Byte3Seed, Byte4Seed, Byte5Seed, \ | ||||
|   Byte6Seed, Byte7Seed, ByteEccSeed) \ | ||||
|   PSO_WL_SEED, 11, SocketID, ChannelID, Byte0Seed, Byte1Seed, Byte2Seed, Byte3Seed, Byte4Seed, Byte5Seed, \ | ||||
|   Byte6Seed, Byte7Seed, ByteEccSeed | ||||
|  | ||||
| #define HW_RXEN_SEED(SocketID, ChannelID, Byte0Seed, Byte1Seed, Byte2Seed, Byte3Seed, Byte4Seed, Byte5Seed, \ | ||||
|   Byte6Seed, Byte7Seed, ByteEccSeed) \ | ||||
|   PSO_RXEN_SEED, 20, SocketID, ChannelID, Byte0Seed, (Byte0Seed >> 8), Byte1Seed, (Byte1Seed >> 8), Byte2Seed, (Byte2Seed >> 8), \ | ||||
|   Byte3Seed, (Byte3Seed >> 8), Byte4Seed, (Byte4Seed >> 8), Byte5Seed, (Byte5Seed >> 8), Byte6Seed, (Byte6Seed >> 8), \ | ||||
|   Byte7Seed, (Byte7Seed >> 8), ByteEccSeed, (ByteEccSeed >> 8) | ||||
|  | ||||
| #define NO_LRDIMM_CS67_ROUTING(SocketID, ChannelID) \ | ||||
|   PSO_NO_LRDIMM_CS67_ROUTING, 3, SocketID, ChannelID, TRUE | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 CONDITIONAL OVERRIDE TABLE MACROS | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #define CONDITION_AND \ | ||||
|   PSO_CONDITION_AND, 0 | ||||
|  | ||||
| #define COND_LOC(SocketMsk, ChannelMsk, DimmMsk) \ | ||||
|   PSO_CONDITION_LOC, 3, SocketMsk, ChannelMsk, DimmMsk | ||||
|  | ||||
| #define COND_SPD(Byte, Mask, Value) \ | ||||
|   PSO_CONDITION_SPD, 3, Byte, Mask, Value | ||||
|  | ||||
| #define COND_REG(Access, Offset, Mask, Value) \ | ||||
|  PSO_CONDITION_REG, 11, Access, (Offset & 0x0FF), (Offset >> 8), \ | ||||
|    ((Mask) & 0x0FF), (((Mask) >> 8) & 0x0FF), (((Mask) >> 16) & 0x0FF), (((Mask) >> 24) & 0x0FF), \ | ||||
|    ((Value) & 0x0FF), (((Value) >> 8) & 0x0FF), (((Value) >> 16) & 0x0FF), (((Value) >> 24) & 0x0FF) | ||||
|  | ||||
| #define ACTION_ODT(Frequency, Dimms, QrDimms, DramOdt, QrDramOdt, DramDynOdt) \ | ||||
|   PSO_ACTION_ODT, 9, \ | ||||
|   ((Frequency) & 0x0FF), (((Frequency) >> 8)& 0x0FF), (((Frequency) >> 16)& 0x0FF), ((Frequency >> 24)& 0x0FF), \ | ||||
|   Dimms, QrDimms, DramOdt, QrDramOdt, DramDynOdt | ||||
|  | ||||
| #define ACTION_ADDRTMG(Frequency, DimmConfig, AddrTmg) \ | ||||
|   PSO_ACTION_ADDRTMG, 10, \ | ||||
|   ((Frequency) & 0x0FF), (((Frequency) >> 8)& 0x0FF), (((Frequency) >> 16)& 0x0FF), (((Frequency) >> 24)& 0x0FF), \ | ||||
|   ((DimmConfig) & 0x0FF), (((DimmConfig) >> 8) & 0x0FF), \ | ||||
|   (AddrTmg & 0x0FF), ((AddrTmg >> 8)& 0x0FF), ((AddrTmg >> 16)& 0x0FF), ((AddrTmg >> 24)& 0x0FF) | ||||
|  | ||||
| #define ACTION_ODCCTRL(Frequency, DimmConfig, OdcCtrl) \ | ||||
|   PSO_ACTION_ODCCONTROL, 10, \ | ||||
|   ((Frequency) & 0x0FF), (((Frequency) >> 8)& 0x0FF), (((Frequency) >> 16)& 0x0FF), (((Frequency) >> 24)& 0x0FF), \ | ||||
|   ((DimmConfig) & 0x0FF), (((DimmConfig) >> 8) & 0x0FF), \ | ||||
|   (OdcCtrl & 0x0FF), ((OdcCtrl >> 8)& 0x0FF), ((OdcCtrl >> 16)& 0x0FF), ((OdcCtrl >> 24)& 0x0FF) | ||||
|  | ||||
| #define ACTION_SLEWRATE(Frequency, DimmConfig, SlewRate) \ | ||||
|   PSO_ACTION_SLEWRATE, 10, \ | ||||
|   ((Frequency) & 0x0FF), (((Frequency) >> 8)& 0x0FF), (((Frequency) >> 16)& 0x0FF), (((Frequency) >> 24)& 0x0FF), \ | ||||
|   ((DimmConfig) & 0x0FF), (((DimmConfig) >> 8) & 0x0FF), \ | ||||
|   (SlewRate & 0x0FF), ((SlewRate >> 8)& 0x0FF), ((SlewRate >> 16)& 0x0FF), ((SlewRate >> 24)& 0x0FF) | ||||
|  | ||||
| #define ACTION_SPEEDLIMIT(DimmConfig, Dimms, SpeedLimit15, SpeedLimit135, SpeedLimit125) \ | ||||
|   PSO_ACTION_SPEEDLIMIT, 9, \ | ||||
|   ((DimmConfig) & 0x0FF), (((DimmConfig) >> 8) & 0x0FF), Dimms, \ | ||||
|   (SpeedLimit15 & 0x0FF), ((SpeedLimit15 >> 8)& 0x0FF), \ | ||||
|   (SpeedLimit135 & 0x0FF), ((SpeedLimit135 >> 8)& 0x0FF), \ | ||||
|   (SpeedLimit125 & 0x0FF), ((SpeedLimit125 >> 8)& 0x0FF) | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                 END OF CONDITIONAL OVERRIDE TABLE MACROS | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #endif  // _PLATFORM_MEMORY_CONFIGURATION_H_ | ||||
| @@ -1,162 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Topology interface definitions. | ||||
|  * | ||||
|  * Contains AMD AGESA internal interface for topology related data which | ||||
|  * is consumed by code other than HyperTransport init (and produced by | ||||
|  * HyperTransport init.) | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Core | ||||
|  * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $ | ||||
|  */ | ||||
| /***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2008 - 2012, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifndef _TOPOLOGY_H_ | ||||
| #define _TOPOLOGY_H_ | ||||
|  | ||||
| // Defines for limiting data structure maximum allocation and limit checking. | ||||
| #define MAX_NODES 8 | ||||
| #define MAX_SOCKETS MAX_NODES | ||||
| #define MAX_DIES 2 | ||||
|  | ||||
| // Defines useful with package link | ||||
| #define HT_LIST_MATCH_INTERNAL_LINK_0 0xFA | ||||
| #define HT_LIST_MATCH_INTERNAL_LINK_1 0xFB | ||||
| #define HT_LIST_MATCH_INTERNAL_LINK_2 0xFC | ||||
|  | ||||
| /** | ||||
|  * Hop Count Table. | ||||
|  * This is a heap data structure.  The Hops array is filled as a size x size matrix. | ||||
|  * The unused space, if any, is all at the end. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT8 Size;                         ///< The row and column size of actual hop count data */ | ||||
|   UINT8 Hops[MAX_NODES * MAX_NODES];  ///< Room for a dynamic two dimensional array of [size][size] */ | ||||
| } HOP_COUNT_TABLE; | ||||
|  | ||||
| /** | ||||
|  * Socket and Module to Node Map Item. | ||||
|  * Provide the Node Id and core id range for each module in each processor. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT8 Node;                 ///< The module's Node id. | ||||
|   UINT8 LowCore;              ///< The lowest processor core id for this module. | ||||
|   UINT8 HighCore;             ///< The highest processor core id for this module. | ||||
|   UINT8 EnabledComputeUnits;  ///< The value of Enabled for this processor module. | ||||
|   UINT8 DualCoreComputeUnits; ///< The value of DualCore for this processor module. | ||||
| } SOCKET_DIE_TO_NODE_ITEM; | ||||
|  | ||||
| /** | ||||
|  * Socket and Module to Node Map. | ||||
|  * This type is a pointer to the actual map, it can be used for a struct item or | ||||
|  * for typecasting a heap buffer pointer. | ||||
|  */ | ||||
| typedef SOCKET_DIE_TO_NODE_ITEM (*SOCKET_DIE_TO_NODE_MAP)[MAX_SOCKETS][MAX_DIES]; | ||||
|  | ||||
| /** | ||||
|  * Node id to Socket Die Map Item. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT8 Socket;             ///< socket of the processor containing the Node. | ||||
|   UINT8 Die;                ///< the module in the processor which is Node. | ||||
| } NODE_TO_SOCKET_DIE_ITEM; | ||||
|  | ||||
| /** | ||||
|  * Node id to Socket Die Map. | ||||
|  */ | ||||
| typedef NODE_TO_SOCKET_DIE_ITEM (*NODE_TO_SOCKET_DIE_MAP)[MAX_NODES]; | ||||
|  | ||||
| /** | ||||
|  * Provide AP core with socket and node context at start up. | ||||
|  * This information is posted to the AP cores using a register as a mailbox. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT32 Node:4;          ///< The node id of Core's node. | ||||
|   UINT32 Socket:4;        ///< The socket of this Core's node. | ||||
|   UINT32 Module:2;        ///< The internal module number for Core's node. | ||||
|   UINT32 ModuleType:2;    ///< Single Module = 0, Multi-module = 1. | ||||
|   UINT32 :20;             ///< Reserved | ||||
| } AP_MAIL_INFO_FIELDS; | ||||
|  | ||||
| /** | ||||
|  * AP info fields can be written and read to a register. | ||||
|  */ | ||||
| typedef union { | ||||
|   UINT32              Info;        ///< Just a number for register access, or opaque passing. | ||||
|   AP_MAIL_INFO_FIELDS Fields;      ///< access to the info fields. | ||||
| } AP_MAIL_INFO; | ||||
|  | ||||
| /** | ||||
|  * Provide AP core with system degree and system core number at start up. | ||||
|  * This information is posted to the AP cores using a register as a mailbox. | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT32 SystemDegree:3;  ///< The number of connected links | ||||
|   UINT32 :3;              ///< Reserved | ||||
|   UINT32 HeapIndex:6;     ///< The zero-based system core number | ||||
|   UINT32 :20;             ///< Reserved | ||||
| } AP_MAIL_EXT_INFO_FIELDS; | ||||
|  | ||||
| /** | ||||
|  * AP info fields can be written and read to a register. | ||||
|  */ | ||||
| typedef union { | ||||
|   UINT32              Info;        ///< Just a number for register access, or opaque passing. | ||||
|   AP_MAIL_EXT_INFO_FIELDS Fields;  ///< access to the info fields. | ||||
| } AP_MAIL_EXT_INFO; | ||||
|  | ||||
| /** | ||||
|  * AP Info mailbox set. | ||||
|  */ | ||||
| typedef struct { | ||||
|   AP_MAIL_INFO      ApMailInfo;    ///< The AP mail info | ||||
|   AP_MAIL_EXT_INFO  ApMailExtInfo; ///< The extended AP mail info | ||||
| } AP_MAILBOXES; | ||||
|  | ||||
| /** | ||||
|  * Provide a northbridge to package mapping for link assignments. | ||||
|  * | ||||
|  */ | ||||
| typedef struct { | ||||
|   UINT8  Link;             ///< The Node's link | ||||
|   UINT8  Module;           ///< The internal module position of Node | ||||
|   UINT8  PackageLink;      ///< The corresponding package link | ||||
| } PACKAGE_HTLINK_MAP_ITEM; | ||||
|  | ||||
| /** | ||||
|  * A Processor's complete set of link assignments | ||||
|  */ | ||||
| typedef PACKAGE_HTLINK_MAP_ITEM (*PACKAGE_HTLINK_MAP)[]; | ||||
|  | ||||
| #endif  // _TOPOLOGY_H_ | ||||
| @@ -1,138 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD binary block interface | ||||
|  * | ||||
|  * Contains the block entry function dispatcher | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Legacy | ||||
|  * @e \$Revision: 35136 $   @e \$Date: 2010-07-16 11:29:48 +0800 (Fri, 16 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                            M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Dispatcher.h" | ||||
| #include "Options.h" | ||||
| #include "Filecode.h" | ||||
| CODE_GROUP (G1_PEICC) | ||||
| RDATA_GROUP (G1_PEICC) | ||||
|  | ||||
| #define FILECODE LEGACY_PROC_DISPATCHER_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern CONST DISPATCH_TABLE DispatchTable[]; | ||||
| extern AMD_MODULE_HEADER mCpuModuleID; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * The Dispatcher is the entry point into the AGESA software. It takes a function | ||||
|  * number as entry parameter in order to invoke the published function | ||||
|  * | ||||
|  * @param[in,out]  ConfigPtr | ||||
|  * | ||||
|  * @return   AGESA Status. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| CALLCONV | ||||
| AmdAgesaDispatcher ( | ||||
|   IN OUT   VOID *ConfigPtr | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|   MODULE_ENTRY  ModuleEntry; | ||||
|   DISPATCH_TABLE *Entry; | ||||
|  | ||||
|   Status = AGESA_UNSUPPORTED; | ||||
|   ModuleEntry = NULL; | ||||
|  | ||||
|   Entry = (DISPATCH_TABLE *) DispatchTable; | ||||
|   while (Entry->FunctionId != 0) { | ||||
|     if ((((AMD_CONFIG_PARAMS *) ConfigPtr)->Func) == Entry->FunctionId) { | ||||
|       Status = Entry->EntryPoint (ConfigPtr); | ||||
|       break; | ||||
|     } | ||||
|     Entry++; | ||||
|   } | ||||
|  | ||||
|   // 2. Try next dispatcher if possible, and we have not already got status back | ||||
|   if ((mCpuModuleID.NextBlock != NULL) && (Status == AGESA_UNSUPPORTED)) { | ||||
|     ModuleEntry = (MODULE_ENTRY) mCpuModuleID.NextBlock->ModuleDispatcher; | ||||
|     if (ModuleEntry != NULL) { | ||||
|       Status = (*ModuleEntry) (ConfigPtr); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return (Status); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * The host environment interface of callout. | ||||
|  * | ||||
|  * @param[in]      Func | ||||
|  * @param[in]      Data | ||||
|  * @param[in,out]  ConfigPtr | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| CALLCONV | ||||
| AmdAgesaCallout ( | ||||
|   IN       UINT32  Func, | ||||
|   IN       UINTN   Data, | ||||
|   IN OUT   VOID    *ConfigPtr | ||||
|   ) | ||||
| { | ||||
|   UINT32 Result; | ||||
|   Result = AGESA_UNSUPPORTED; | ||||
|   if (((AMD_CONFIG_PARAMS *) ConfigPtr)->CalloutPtr == NULL) { | ||||
|     return Result; | ||||
|   } | ||||
|  | ||||
|   Result = (((AMD_CONFIG_PARAMS *) ConfigPtr)->CalloutPtr) (Func, Data, ConfigPtr); | ||||
|   return (Result); | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| libagesa-y += Dispatcher.c | ||||
| libagesa-y += agesaCallouts.c | ||||
| libagesa-y += hobTransfer.c | ||||
| @@ -1,403 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD CPU AGESA Callout Functions | ||||
|  * | ||||
|  * Contains code to set / get useful platform information. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Common | ||||
|  * @e \$Revision: 35136 $   @e \$Date: 2010-07-16 11:29:48 +0800 (Fri, 16 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                            M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "Dispatcher.h" | ||||
| #include "cpuServices.h" | ||||
| #include "Ids.h" | ||||
| #include "Filecode.h" | ||||
|  | ||||
| #define FILECODE LEGACY_PROC_AGESACALLOUTS_FILECODE | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U  R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| AgesaGetIdsData  ( | ||||
|   IN       UINTN              Data, | ||||
|   IN OUT   IDS_CALLOUT_STRUCT *IdsCalloutData | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S - (AGESA ONLY) | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  Call the host environment interface to do the warm or cold reset. | ||||
|  * | ||||
|  *  @param[in]      ResetType       Warm or Cold Reset is requested | ||||
|  *  @param[in,out]  StdHeader       Config header | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| AgesaDoReset ( | ||||
|   IN       UINTN             ResetType, | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|   WARM_RESET_REQUEST Request; | ||||
|  | ||||
|   // Clear warm request bit and set state bits to the current post stage | ||||
|   GetWarmResetFlag (StdHeader, &Request); | ||||
|   Request.RequestBit = FALSE; | ||||
|   Request.StateBits = Request.PostStage; | ||||
|   SetWarmResetFlag (StdHeader, &Request); | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_DO_RESET, (UINT32)ResetType, (VOID *) StdHeader); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  * Call the host environment interface to allocate buffer in main system memory. | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  AllocParams  Heap manager parameters | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaAllocateBuffer ( | ||||
|   IN       UINTN               FcnData, | ||||
|   IN OUT   AGESA_BUFFER_PARAMS *AllocParams | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_ALLOCATE_BUFFER, (UINT32)FcnData, (VOID *) AllocParams); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to deallocate buffer in main system memory. | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  DeallocParams   Heap Manager parameters | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaDeallocateBuffer ( | ||||
|   IN       UINTN                 FcnData, | ||||
|   IN OUT   AGESA_BUFFER_PARAMS  *DeallocParams | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_DEALLOCATE_BUFFER, (UINT32)FcnData, (VOID *) DeallocParams); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  * Call the host environment interface to Locate buffer Pointer in main system memory | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  LocateParams   Heap manager parameters | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaLocateBuffer ( | ||||
|   IN       UINTN                 FcnData, | ||||
|   IN OUT   AGESA_BUFFER_PARAMS  *LocateParams | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_LOCATE_BUFFER, (UINT32)FcnData, (VOID *) LocateParams); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to launch APs | ||||
|  * | ||||
|  * @param[in]      ApicIdOfCore | ||||
|  * @param[in,out]  LaunchApParams | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaRunFcnOnAp ( | ||||
|   IN        UINTN         ApicIdOfCore, | ||||
|   IN        AP_EXE_PARAMS *LaunchApParams | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_RUNFUNC_ONAP, (UINT32)ApicIdOfCore, (VOID *) LaunchApParams); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to read an SPD's content. | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  ReadSpd | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaReadSpd ( | ||||
|   IN       UINTN                 FcnData, | ||||
|   IN OUT   AGESA_READ_SPD_PARAMS *ReadSpd | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_READ_SPD, (UINT32)FcnData, ReadSpd); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to read an SPD's content. | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  ReadSpd | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaReadSpdRecovery ( | ||||
|   IN       UINTN                 FcnData, | ||||
|   IN OUT   AGESA_READ_SPD_PARAMS *ReadSpd | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_READ_SPD_RECOVERY, (UINT32)FcnData, ReadSpd); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to provide a user hook opportunity. | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  MemData | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaHookBeforeDramInitRecovery ( | ||||
|   IN       UINTN           FcnData, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemData | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY, (UINT32)FcnData, MemData); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to provide a user hook opportunity. | ||||
|  * | ||||
|  * @param[in]      FcnData | ||||
|  * @param[in,out]  MemData | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaHookBeforeDramInit ( | ||||
|   IN       UINTN           FcnData, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemData | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_HOOKBEFORE_DRAM_INIT, (UINT32)FcnData, MemData); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Call the host environment interface to provide a user hook opportunity. | ||||
|  * | ||||
|  *  @param[in]      FcnData | ||||
|  *  @param[in,out]  MemData | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaHookBeforeDQSTraining ( | ||||
|   IN       UINTN           FcnData, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemData | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_HOOKBEFORE_DQS_TRAINING, (UINT32)FcnData, MemData); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Call the host environment interface to provide a user hook opportunity. | ||||
|  * | ||||
|  *  @param[in]      FcnData | ||||
|  *  @param[in,out]  MemData | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| AgesaHookBeforeExitSelfRefresh ( | ||||
|   IN       UINTN           FcnData, | ||||
|   IN OUT   MEM_DATA_STRUCT *MemData | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_HOOKBEFORE_EXIT_SELF_REF, (UINT32)FcnData, MemData); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Call the host environment interface to provide a user hook opportunity. | ||||
|  * | ||||
|  * @param[in]      Data | ||||
|  * @param[in,out]  IdsCalloutData | ||||
|  * | ||||
|  * @return   The AGESA Status returned from the callout. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| AGESA_STATUS | ||||
| AgesaGetIdsData  ( | ||||
|   IN       UINTN              Data, | ||||
|   IN OUT   IDS_CALLOUT_STRUCT *IdsCalloutData | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|  | ||||
|   Status =  AmdAgesaCallout (AGESA_GET_IDS_INIT_DATA, (UINT32)Data, IdsCalloutData); | ||||
|  | ||||
|   return Status; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * PCIE slot reset control | ||||
|  * | ||||
|  * | ||||
|  * | ||||
|  * @param[in]  FcnData              Function data | ||||
|  * @param[in]  ResetInfo            Reset information | ||||
|  * @retval     Status               Agesa status | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| AgesaPcieSlotResetControl ( | ||||
|   IN      UINTN                 FcnData, | ||||
|   IN      PCIe_SLOT_RESET_INFO  *ResetInfo | ||||
|   ) | ||||
| { | ||||
|   AGESA_STATUS Status; | ||||
|   Status = AmdAgesaCallout (AGESA_GNB_PCIE_SLOT_RESET, (UINT32) FcnData, ResetInfo); | ||||
|   return  Status; | ||||
| } | ||||
| @@ -1,395 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Hob Transfer functions. | ||||
|  * | ||||
|  * Contains code that copy Heap to temp memory or main memory. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 35136 $   @e \$Date: 2010-07-16 11:29:48 +0800 (Fri, 16 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "GeneralServices.h" | ||||
| #include "cpuServices.h" | ||||
| #include "cpuCacheInit.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "heapManager.h" | ||||
| //#include "cpuLateInit.h" | ||||
| #include "cpuEnvInit.h" | ||||
| #include "Filecode.h" | ||||
| CODE_GROUP (G1_PEICC) | ||||
| RDATA_GROUP (G1_PEICC) | ||||
|  | ||||
| #define FILECODE LEGACY_PROC_HOBTRANSFER_FILECODE | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U  R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          P U B L I C     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern BUILD_OPT_CFG UserOptions; | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  CopyHeapToTempRamAtPost | ||||
|  * | ||||
|  *     This function copies BSP heap content to RAM | ||||
|  * | ||||
|  *    @param[in,out]   StdHeader   - Pointer to AMD_CONFIG_PARAMS struct. | ||||
|  * | ||||
|  *    @retval          AGESA_STATUS | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| CopyHeapToTempRamAtPost ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8 *BaseAddressInCache; | ||||
|   UINT8 *BaseAddressInTempMem; | ||||
|   UINT8 *Source; | ||||
|   UINT8 *Destination; | ||||
|   UINT8  AlignTo16ByteInCache; | ||||
|   UINT8  AlignTo16ByteInTempMem; | ||||
|   UINT8  Ignored; | ||||
|   UINT32 SizeOfNodeData; | ||||
|   UINT32 TotalSize; | ||||
|   UINT32 HeapRamFixMtrr; | ||||
|   UINT32 HeapRamVariableMtrr; | ||||
|   UINT32 HeapInCacheOffset; | ||||
|   UINT64 MsrData; | ||||
|   UINT64 VariableMtrrBase; | ||||
|   UINT64 VariableMtrrMask; | ||||
|   UINTN  AmdHeapRamAddress; | ||||
|   AGESA_STATUS IgnoredStatus; | ||||
|   BUFFER_NODE *HeapInCache; | ||||
|   BUFFER_NODE *HeapInTempMem; | ||||
|   HEAP_MANAGER *HeapManagerInCache; | ||||
|   HEAP_MANAGER *HeapManagerInTempMem; | ||||
|   CACHE_INFO *CacheInfoPtr; | ||||
|   CPU_SPECIFIC_SERVICES *FamilySpecificServices; | ||||
|  | ||||
|   AmdHeapRamAddress = (UINTN) UserOptions.CfgHeapDramAddress; | ||||
|   // | ||||
|   //If the user define address above 1M, Mem Init has already set | ||||
|   //whole available memory as WB cacheable. | ||||
|   // | ||||
|   if (AmdHeapRamAddress < 0x100000) { | ||||
|     // Region below 1MB | ||||
|     // Fixed MTRR region | ||||
|     // turn on modification bit | ||||
|     LibAmdMsrRead (MSR_SYS_CFG, &MsrData, StdHeader); | ||||
|     MsrData |= 0x80000; | ||||
|     LibAmdMsrWrite (MSR_SYS_CFG, &MsrData, StdHeader); | ||||
|  | ||||
|     if (AmdHeapRamAddress >= 0xC0000) { | ||||
|       // | ||||
|       // 0xC0000 ~ 0xFFFFF | ||||
|       // | ||||
|       HeapRamFixMtrr = (UINT32) (AMD_MTRR_FIX4k_C0000 + (((AmdHeapRamAddress >> 16) & 0x3) * 2)); | ||||
|       MsrData = AMD_MTRR_FIX4K_UC_DRAM; | ||||
|       LibAmdMsrWrite (HeapRamFixMtrr, &MsrData, StdHeader); | ||||
|       LibAmdMsrWrite ((HeapRamFixMtrr + 1), &MsrData, StdHeader); | ||||
|     } else if (AmdHeapRamAddress >= 0x80000) { | ||||
|       // | ||||
|       // 0x80000~0xBFFFF | ||||
|       // | ||||
|       HeapRamFixMtrr = (UINT32) (AMD_MTRR_FIX16k_80000 + ((AmdHeapRamAddress >> 17) & 0x1)); | ||||
|       MsrData = AMD_MTRR_FIX16K_UC_DRAM; | ||||
|       LibAmdMsrWrite (HeapRamFixMtrr, &MsrData, StdHeader); | ||||
|     } else { | ||||
|       // | ||||
|       // 0x0 ~ 0x7FFFF | ||||
|       // | ||||
|       LibAmdMsrRead (AMD_MTRR_FIX64k_00000, &MsrData, StdHeader); | ||||
|       MsrData = MsrData & (~(0xFF << (8 * ((AmdHeapRamAddress >> 16) & 0x7)))); | ||||
|       MsrData = MsrData | (AMD_MTRR_FIX64K_UC_DRAM << (8 * ((AmdHeapRamAddress >> 16) & 0x7))); | ||||
|       LibAmdMsrWrite (AMD_MTRR_FIX64k_00000, &MsrData, StdHeader); | ||||
|     } | ||||
|  | ||||
|     // Turn on MTRR enable bit and turn off modification bit | ||||
|     LibAmdMsrRead (MSR_SYS_CFG, &MsrData, StdHeader); | ||||
|     MsrData |= 0x40000; | ||||
|     MsrData &= 0xFFFFFFFFFFF7FFFF; | ||||
|     LibAmdMsrWrite (MSR_SYS_CFG, &MsrData, StdHeader); | ||||
|   } else { | ||||
|     // Region above 1MB | ||||
|     // Variable MTRR region | ||||
|     // Get family specific cache Info | ||||
|     GetCpuServicesOfCurrentCore ((const CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, StdHeader); | ||||
|     FamilySpecificServices->GetCacheInfo (FamilySpecificServices, (const VOID **)&CacheInfoPtr, &Ignored, StdHeader); | ||||
|  | ||||
|     // Find an empty MTRRphysBase/MTRRphysMask | ||||
|     for (HeapRamVariableMtrr = AMD_MTRR_VARIABLE_HEAP_BASE; | ||||
|          HeapRamVariableMtrr >= AMD_MTRR_VARIABLE_BASE0; | ||||
|          HeapRamVariableMtrr--) { | ||||
|       LibAmdMsrRead (HeapRamVariableMtrr, &VariableMtrrBase, StdHeader); | ||||
|       LibAmdMsrRead ((HeapRamVariableMtrr + 1), &VariableMtrrMask, StdHeader); | ||||
|       if ((VariableMtrrBase == 0) && (VariableMtrrMask == 0)) { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     if (HeapRamVariableMtrr < AMD_MTRR_VARIABLE_BASE0) { | ||||
|       // All variable MTRR is used. | ||||
|       ASSERT (FALSE); | ||||
|     } | ||||
|  | ||||
|     // Set variable MTRR base and mask | ||||
|     // If the address ranges of two or more MTRRs overlap | ||||
|     // and if at least one of the memory types is UC, the UC memory type is used. | ||||
|     VariableMtrrBase = (UINT64) (AmdHeapRamAddress & CacheInfoPtr->HeapBaseMask); | ||||
|     VariableMtrrMask = CacheInfoPtr->VariableMtrrHeapMask & AMD_HEAP_MTRR_MASK; | ||||
|     LibAmdMsrWrite (HeapRamVariableMtrr, &VariableMtrrBase, StdHeader); | ||||
|     LibAmdMsrWrite ((HeapRamVariableMtrr + 1), &VariableMtrrMask, StdHeader); | ||||
|   } | ||||
|   // Copying Heap content | ||||
|   if (IsBsp (StdHeader, &IgnoredStatus)) { | ||||
|     TotalSize = sizeof (HEAP_MANAGER); | ||||
|     SizeOfNodeData = 0; | ||||
|     AlignTo16ByteInTempMem = 0; | ||||
|     BaseAddressInCache = (UINT8 *) StdHeader->HeapBasePtr; | ||||
|     HeapManagerInCache = (HEAP_MANAGER *) BaseAddressInCache; | ||||
|     HeapInCacheOffset = HeapManagerInCache->FirstActiveBufferOffset; | ||||
|     HeapInCache = (BUFFER_NODE *) (BaseAddressInCache + HeapInCacheOffset); | ||||
|  | ||||
|     BaseAddressInTempMem = (UINT8 *) (intptr_t) (UserOptions.CfgHeapDramAddress); | ||||
|     HeapManagerInTempMem = (HEAP_MANAGER *) BaseAddressInTempMem; | ||||
|     HeapInTempMem = (BUFFER_NODE *) (BaseAddressInTempMem + TotalSize); | ||||
|  | ||||
|     // copy heap from cache to temp memory. | ||||
|     // only heap with persist great than HEAP_LOCAL_CACHE will be copied. | ||||
|     // Note: Only copy heap with persist greater than HEAP_LOCAL_CACHE. | ||||
|     while (HeapInCacheOffset != AMD_HEAP_INVALID_HEAP_OFFSET) { | ||||
|       if (HeapInCache->Persist > HEAP_LOCAL_CACHE) { | ||||
|         AlignTo16ByteInCache = HeapInCache->PadSize; | ||||
|         AlignTo16ByteInTempMem = (UINT8) ((0x10 - (((UINTN) (VOID *) HeapInTempMem + sizeof (BUFFER_NODE) + SIZE_OF_SENTINEL) & 0xF)) & 0xF); | ||||
|         SizeOfNodeData = HeapInCache->BufferSize - AlignTo16ByteInCache; | ||||
|         TotalSize = (UINT32) (TotalSize  + sizeof (BUFFER_NODE) + SizeOfNodeData + AlignTo16ByteInTempMem); | ||||
|         Source = (UINT8 *) HeapInCache + sizeof (BUFFER_NODE) + AlignTo16ByteInCache; | ||||
|         Destination = (UINT8 *) HeapInTempMem + sizeof (BUFFER_NODE) + AlignTo16ByteInTempMem; | ||||
|         LibAmdMemCopy  (HeapInTempMem, HeapInCache, sizeof (BUFFER_NODE), StdHeader); | ||||
|         LibAmdMemCopy  (Destination, Source, SizeOfNodeData, StdHeader); | ||||
|         HeapInTempMem->OffsetOfNextNode = TotalSize; | ||||
|         HeapInTempMem->BufferSize = SizeOfNodeData + AlignTo16ByteInTempMem; | ||||
|         HeapInTempMem->PadSize = AlignTo16ByteInTempMem; | ||||
|         HeapInTempMem = (BUFFER_NODE *) (BaseAddressInTempMem + TotalSize); | ||||
|       } | ||||
|       HeapInCacheOffset = HeapInCache->OffsetOfNextNode; | ||||
|       HeapInCache = (BUFFER_NODE *) (BaseAddressInCache + HeapInCacheOffset); | ||||
|     } | ||||
|     // initialize heap manager | ||||
|     if (TotalSize == sizeof (HEAP_MANAGER)) { | ||||
|       // heap is empty | ||||
|       HeapManagerInTempMem->UsedSize = sizeof (HEAP_MANAGER); | ||||
|       HeapManagerInTempMem->FirstActiveBufferOffset = AMD_HEAP_INVALID_HEAP_OFFSET; | ||||
|       HeapManagerInTempMem->FirstFreeSpaceOffset = sizeof (HEAP_MANAGER); | ||||
|     } else { | ||||
|       // heap is NOT empty | ||||
|       HeapManagerInTempMem->UsedSize = TotalSize; | ||||
|       HeapManagerInTempMem->FirstActiveBufferOffset = sizeof (HEAP_MANAGER); | ||||
|       HeapManagerInTempMem->FirstFreeSpaceOffset = TotalSize; | ||||
|       HeapInTempMem = (BUFFER_NODE *) (BaseAddressInTempMem + TotalSize - SizeOfNodeData - AlignTo16ByteInTempMem - sizeof (BUFFER_NODE)); | ||||
|       HeapInTempMem->OffsetOfNextNode = AMD_HEAP_INVALID_HEAP_OFFSET; | ||||
|       HeapInTempMem = (BUFFER_NODE *) (BaseAddressInTempMem + TotalSize); | ||||
|     } | ||||
|     // heap signature | ||||
|     HeapManagerInCache->Signature = 0x00000000; | ||||
|     HeapManagerInTempMem->Signature = HEAP_SIGNATURE_VALID; | ||||
|     // Free space node | ||||
|     HeapInTempMem->BufferSize = (UINT32) (AMD_HEAP_SIZE_PER_CORE - TotalSize); | ||||
|     HeapInTempMem->OffsetOfNextNode = AMD_HEAP_INVALID_HEAP_OFFSET; | ||||
|   } | ||||
|   return AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  CopyHeapToMainRamAtPost | ||||
|  * | ||||
|  *    This function copies Temp Ram heap content to Main Ram | ||||
|  * | ||||
|  *    @param[in,out]   StdHeader   - Pointer to AMD_CONFIG_PARAMS struct. | ||||
|  * | ||||
|  *    @retval          AGESA_STATUS | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| CopyHeapToMainRamAtPost ( | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8 *BaseAddressInTempMem; | ||||
|   UINT8 *BaseAddressInMainMem; | ||||
|   UINT8 *Source; | ||||
|   UINT8 *Destination; | ||||
|   UINT8  AlignTo16ByteInTempMem; | ||||
|   UINT8  AlignTo16ByteInMainMem; | ||||
|   UINT8  Ignored; | ||||
|   UINT32 SizeOfNodeData; | ||||
|   UINT32 TotalSize; | ||||
|   UINT32 HeapInTempMemOffset; | ||||
|   UINT32 HeapRamVariableMtrr; | ||||
|   UINT64 VariableMtrrBase; | ||||
|   UINT64 VariableMtrrMask; | ||||
|   AGESA_STATUS IgnoredStatus; | ||||
|   BUFFER_NODE *HeapInTempMem; | ||||
|   BUFFER_NODE *HeapInMainMem; | ||||
|   HEAP_MANAGER *HeapManagerInTempMem; | ||||
|   HEAP_MANAGER *HeapManagerInMainMem; | ||||
|   AGESA_BUFFER_PARAMS AgesaBuffer; | ||||
|   CACHE_INFO *CacheInfoPtr; | ||||
|   CPU_SPECIFIC_SERVICES *FamilySpecificServices; | ||||
|  | ||||
|   if (IsBsp (StdHeader, &IgnoredStatus)) { | ||||
|     TotalSize = sizeof (HEAP_MANAGER); | ||||
|     SizeOfNodeData = 0; | ||||
|     AlignTo16ByteInMainMem = 0; | ||||
|     BaseAddressInTempMem = (UINT8 *) StdHeader->HeapBasePtr; | ||||
|     HeapManagerInTempMem = (HEAP_MANAGER *) StdHeader->HeapBasePtr; | ||||
|     HeapInTempMemOffset = HeapManagerInTempMem->FirstActiveBufferOffset; | ||||
|     HeapInTempMem = (BUFFER_NODE *) (BaseAddressInTempMem + HeapInTempMemOffset); | ||||
|  | ||||
|     AgesaBuffer.StdHeader = *StdHeader; | ||||
|     AgesaBuffer.BufferHandle = AMD_HEAP_IN_MAIN_MEMORY_HANDLE; | ||||
|     AgesaBuffer.BufferLength = AMD_HEAP_SIZE_PER_CORE; | ||||
|     if (AgesaAllocateBuffer (0, &AgesaBuffer) != AGESA_SUCCESS) { | ||||
|       return AGESA_ERROR; | ||||
|     } | ||||
|     BaseAddressInMainMem = (UINT8 *) AgesaBuffer.BufferPointer; | ||||
|     HeapManagerInMainMem = (HEAP_MANAGER *) BaseAddressInMainMem; | ||||
|     HeapInMainMem = (BUFFER_NODE *) (BaseAddressInMainMem + TotalSize); | ||||
|     LibAmdMemFill (BaseAddressInMainMem, 0x00, AMD_HEAP_SIZE_PER_CORE, StdHeader); | ||||
|     // copy heap from temp memory to main memory. | ||||
|     // only heap with persist great than HEAP_TEMP_MEM will be copied. | ||||
|     // Note: Only copy heap buffers with persist greater than HEAP_TEMP_MEM. | ||||
|     while (HeapInTempMemOffset != AMD_HEAP_INVALID_HEAP_OFFSET) { | ||||
|       if (HeapInTempMem->Persist > HEAP_TEMP_MEM) { | ||||
|         AlignTo16ByteInTempMem = HeapInTempMem->PadSize; | ||||
|         AlignTo16ByteInMainMem = (UINT8) ((0x10 - (((UINTN) (VOID *) HeapInMainMem  + sizeof (BUFFER_NODE) + SIZE_OF_SENTINEL) & 0xF)) & 0xF); | ||||
|         SizeOfNodeData = HeapInTempMem->BufferSize - AlignTo16ByteInTempMem; | ||||
|         TotalSize = (UINT32) (TotalSize  + sizeof (BUFFER_NODE) + SizeOfNodeData + AlignTo16ByteInMainMem); | ||||
|         Source = (UINT8 *) HeapInTempMem + sizeof (BUFFER_NODE) + AlignTo16ByteInTempMem; | ||||
|         Destination = (UINT8 *) HeapInMainMem + sizeof (BUFFER_NODE) + AlignTo16ByteInMainMem; | ||||
|         LibAmdMemCopy  (HeapInMainMem, HeapInTempMem, sizeof (BUFFER_NODE), StdHeader); | ||||
|         LibAmdMemCopy  (Destination, Source, SizeOfNodeData, StdHeader); | ||||
|         HeapInMainMem->OffsetOfNextNode = TotalSize; | ||||
|         HeapInMainMem->BufferSize = SizeOfNodeData + AlignTo16ByteInMainMem; | ||||
|         HeapInMainMem->PadSize = AlignTo16ByteInMainMem; | ||||
|         HeapInMainMem = (BUFFER_NODE *) (BaseAddressInMainMem + TotalSize); | ||||
|       } | ||||
|       HeapInTempMemOffset = HeapInTempMem->OffsetOfNextNode; | ||||
|       HeapInTempMem = (BUFFER_NODE *) (BaseAddressInTempMem + HeapInTempMemOffset); | ||||
|     } | ||||
|     // initialize heap manager | ||||
|     if (TotalSize == sizeof (HEAP_MANAGER)) { | ||||
|       // heap is empty | ||||
|       HeapManagerInMainMem->UsedSize = sizeof (HEAP_MANAGER); | ||||
|       HeapManagerInMainMem->FirstActiveBufferOffset = AMD_HEAP_INVALID_HEAP_OFFSET; | ||||
|       HeapManagerInMainMem->FirstFreeSpaceOffset = sizeof (HEAP_MANAGER); | ||||
|     } else { | ||||
|       // heap is NOT empty | ||||
|       HeapManagerInMainMem->UsedSize = TotalSize; | ||||
|       HeapManagerInMainMem->FirstActiveBufferOffset = sizeof (HEAP_MANAGER); | ||||
|       HeapManagerInMainMem->FirstFreeSpaceOffset = TotalSize; | ||||
|       HeapInMainMem = (BUFFER_NODE *) (BaseAddressInMainMem + TotalSize - SizeOfNodeData - AlignTo16ByteInMainMem - sizeof (BUFFER_NODE)); | ||||
|       HeapInMainMem->OffsetOfNextNode = AMD_HEAP_INVALID_HEAP_OFFSET; | ||||
|       HeapInMainMem = (BUFFER_NODE *) (BaseAddressInMainMem + TotalSize); | ||||
|     } | ||||
|     // heap signature | ||||
|     HeapManagerInTempMem->Signature = 0x00000000; | ||||
|     HeapManagerInMainMem->Signature = HEAP_SIGNATURE_VALID; | ||||
|     // Free space node | ||||
|     HeapInMainMem->BufferSize = AMD_HEAP_SIZE_PER_CORE - TotalSize; | ||||
|     HeapInMainMem->OffsetOfNextNode = AMD_HEAP_INVALID_HEAP_OFFSET; | ||||
|   } | ||||
|   // if address of heap in temp memory is above 1M, then we must used one variable MTRR. | ||||
|   if (StdHeader->HeapBasePtr >= (void *) 0x100000) { | ||||
|     // Find out which variable MTRR was used in CopyHeapToTempRamAtPost. | ||||
|     GetCpuServicesOfCurrentCore ((const CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, StdHeader); | ||||
|     FamilySpecificServices->GetCacheInfo (FamilySpecificServices, (const VOID **)&CacheInfoPtr, &Ignored, StdHeader); | ||||
|     for (HeapRamVariableMtrr = AMD_MTRR_VARIABLE_HEAP_BASE; | ||||
|          HeapRamVariableMtrr >= AMD_MTRR_VARIABLE_BASE0; | ||||
|          HeapRamVariableMtrr--) { | ||||
|       LibAmdMsrRead (HeapRamVariableMtrr, &VariableMtrrBase, StdHeader); | ||||
|       LibAmdMsrRead ((HeapRamVariableMtrr + 1), &VariableMtrrMask, StdHeader); | ||||
|       if ((VariableMtrrBase == ((UINT64) (intptr_t) (StdHeader->HeapBasePtr) & CacheInfoPtr->HeapBaseMask)) && | ||||
|           (VariableMtrrMask == (CacheInfoPtr->VariableMtrrHeapMask & AMD_HEAP_MTRR_MASK))) { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     if (HeapRamVariableMtrr >= AMD_MTRR_VARIABLE_BASE0) { | ||||
|       // Clear variable MTRR which set in CopyHeapToTempRamAtPost. | ||||
|       VariableMtrrBase = 0; | ||||
|       VariableMtrrMask = 0; | ||||
|       LibAmdMsrWrite (HeapRamVariableMtrr, &VariableMtrrBase, StdHeader); | ||||
|       LibAmdMsrWrite ((HeapRamVariableMtrr + 1), &VariableMtrrMask, StdHeader); | ||||
|     } | ||||
|   } | ||||
|   return AGESA_SUCCESS; | ||||
| } | ||||
| @@ -1,121 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Create outline and references for mainpage documentation. | ||||
|  * | ||||
|  * Design guides, maintenance guides, and general documentation, are | ||||
|  * collected using this file onto the documentation mainpage. | ||||
|  * This file contains doxygen comment blocks, only. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  Documentation | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @mainpage | ||||
|  * | ||||
|  * The design and maintenance documentation for AGESA Sample Code is organized as | ||||
|  * follows.  On this page, you can reference design guides, maintenance guides, and | ||||
|  * general documentation.  Detailed Data Structure, Function, and Interface documentation | ||||
|  * may be found using the Data Structures or Files tabs.  See Related Pages for a | ||||
|  * Release content summary, and, if this is not a production release, lists of To Do's, | ||||
|  * Deprecated items, etc. | ||||
|  * | ||||
|  * @subpage starthere "Start Here - Initial Porting and Integration." | ||||
|  * | ||||
|  * @subpage optionmain "Build Configuration and Options Guides and Documentation." | ||||
|  * | ||||
|  * @subpage commonmain "Processor Common Component Guides and Documentation." | ||||
|  * | ||||
|  * @subpage cpumain "CPU Component Guides and Documentation." | ||||
|  * | ||||
|  * @subpage htmain "HT Component Guides and Documentation." | ||||
|  * | ||||
|  * @subpage memmain "MEM Component Guides and Documentation." | ||||
|  * | ||||
|  * @subpage gnbmain "GNB Component Documentation." | ||||
|  * | ||||
|  * @subpage idsmain "IDS Component Guides and Documentation." | ||||
|  * | ||||
|  * @subpage recoverymain "Recovery Component Guides and Documentation." | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @page starthere Initial Porting and Integration | ||||
|  * | ||||
|  * @par Basic Check List | ||||
|  * | ||||
|  * <ul> | ||||
|  * <li> Copy the \<plat\>Options.c file from the Addendum directory to the platform tip build directory. | ||||
|  * AMD recommends the use of a sub-directory named AGESA to contain these files and the build output files. | ||||
|  * <li> Copy the OptionsIds.h content in the spec to OptionsIds.h in the platform build tip directory | ||||
|  * and make changes to enable the IDS support desired. It is highly recommended to set the following for | ||||
|  * initial integration and development:@n | ||||
|  * @code | ||||
|  * #define IDSOPT_IDS_ENABLED TRUE | ||||
|  * #define IDSOPT_ERROR_TRAP_ENABLED TRUE | ||||
|  * #define IDSOPT_ASSERT_ENABLED TRUE | ||||
|  * @endcode | ||||
|  * <li> Edit and modify the option selections in those two files to meet the needs of the specific platform. | ||||
|  * <li> Set the environment variable AGESA_ROOT to the root folder of the AGESA code. | ||||
|  * <li> Set the environment variable AGESA_OptsDir the platform build tip AGESA directory. | ||||
|  * <li> Generate the doxygen documentation or locate the file arch2008.chm within your AGESA release package. | ||||
|  * </ul> | ||||
|  * | ||||
|  * @par Debugging Using ASSERT and IDS_ERROR_TRAP | ||||
|  * | ||||
|  * While AGESA code uses ::ASSERT and ::IDS_ERROR_TRAP to check for internal errors, these macros can also | ||||
|  * catch and assist debug of wrapper and platform BIOS issues. | ||||
|  * | ||||
|  * When an ::ASSERT fails or an ::IDS_ERROR_TRAP is executed, the AGESA code will enter a halt loop and display a | ||||
|  * Stop Code.  A Stop Code is eight hex digits.  The first (most significant) four are the FILECODE. | ||||
|  * FILECODEs can be looked up in Filecode.h to determine which file contains the stop macro.  Each file has a | ||||
|  * unique code value. | ||||
|  * The least significant digits are the line number in that file. | ||||
|  * For example, 0210 means the macro is on line two hundred ten. | ||||
|  * (see ::IdsErrorStop for more details on stop code display.) | ||||
|  * | ||||
|  * Enabling ::ASSERT and ::IDS_ERROR_TRAP ensure errors are caught and also provide a useful debug assist. | ||||
|  * Comments near each macro use will describe the nature of the error and typical wrapper errors or other | ||||
|  * root causes. | ||||
|  * | ||||
|  * After your wrapper consistently executes ::ASSERT and ::IDS_ERROR_TRAP stop free, you can disable them in | ||||
|  * OptionsIds.h, except for regression testing.  IDS is not expected to be enabled in production BIOS builds. | ||||
|  * | ||||
|  */ | ||||
| @@ -1,46 +0,0 @@ | ||||
| #***************************************************************************** | ||||
| # | ||||
| # Redistribution and use in source and binary forms, with or without | ||||
| # modification, are permitted provided that the following conditions are met: | ||||
| #     * Redistributions of source code must retain the above copyright | ||||
| #       notice, this list of conditions and the following disclaimer. | ||||
| #     * Redistributions in binary form must reproduce the above copyright | ||||
| #       notice, this list of conditions and the following disclaimer in the | ||||
| #       documentation and/or other materials provided with the distribution. | ||||
| #     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
| #       its contributors may be used to endorse or promote products derived | ||||
| #       from this software without specific prior written permission. | ||||
| # | ||||
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
| # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
| # DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
| # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
| # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
| # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| # | ||||
| #***************************************************************************** | ||||
|  | ||||
| # AGESA V5 Files | ||||
| AGESA_ROOT = src/vendorcode/amd/agesa/f14 | ||||
|  | ||||
| AGESA_AUTOINCLUDES := $(shell find $(AGESA_ROOT)/Proc -type d -exec echo -n "-I"{}" " \;) | ||||
|  | ||||
| AGESA_INC  = -I$(src)/vendorcode/amd/include | ||||
| AGESA_INC += -I$(AGESA_ROOT) | ||||
| AGESA_INC += -I$(AGESA_ROOT)/../common | ||||
| AGESA_INC += -I$(AGESA_ROOT)/Include | ||||
| AGESA_INC += -I$(src)/mainboard/$(MAINBOARDDIR)	# OptionsIds.h | ||||
|  | ||||
| BUILDOPTS_INCLUDES = -I$(AGESA_ROOT)/Config $(AGESA_INC) $(AGESA_AUTOINCLUDES) | ||||
|  | ||||
| CPPFLAGS_x86_32 += $(AGESA_INC) | ||||
| CPPFLAGS_x86_64 += $(AGESA_INC) | ||||
|  | ||||
| ####################################################################### | ||||
|  | ||||
| subdirs-y += Legacy/Proc | ||||
| subdirs-y += $(dir $(shell cd $(dir); find Proc -name Makefile.inc)) | ||||
| @@ -1,238 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 C6 C-state feature support functions. | ||||
|  * | ||||
|  * Provides the functions necessary to initialize the C6 feature. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 37004 $   @e \$Date: 2010-08-28 02:23:00 +0800 (Sat, 28 Aug 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
| #include "cpuFeatures.h" | ||||
| #include "cpuC6State.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "OptionFamily14hEarlySample.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_F14C6STATE_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern F14_ES_C6_SUPPORT F14EarlySampleC6Support; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Is C6 supported on this CPU | ||||
|  * | ||||
|  * @param[in]    C6Services         Pointer to this CPU's C6 family services. | ||||
|  * @param[in]    Socket             This core's zero-based socket number. | ||||
|  * @param[in]    StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  * @retval       TRUE               C6 state is supported. | ||||
|  * @retval       FALSE              C6 state is not supported. | ||||
|  * | ||||
|  */ | ||||
| BOOLEAN | ||||
| STATIC | ||||
| F14IsC6Supported ( | ||||
|   IN       C6_FAMILY_SERVICES *C6Services, | ||||
|   IN       UINT32             Socket, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32   PciRegister; | ||||
|   BOOLEAN  IsEnabled; | ||||
|   PCI_ADDR PciAddress; | ||||
|  | ||||
|   IsEnabled = TRUE; | ||||
|  | ||||
|   PciAddress.AddressValue = CPU_STATE_PM_CTRL1_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|   if ((((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->CoreC6Cap == 0) && | ||||
|       (((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->PkgC6Cap == 0)) { | ||||
|     IsEnabled = FALSE; | ||||
|   } | ||||
|  | ||||
|   F14EarlySampleC6Support.F14IsC6SupportedHook (&IsEnabled, StdHeader); | ||||
|  | ||||
|   return IsEnabled; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Enable C6 on a family 14h CPU. | ||||
|  * | ||||
|  * @param[in]    C6Services         Pointer to this CPU's C6 family services. | ||||
|  * @param[in]    EntryPoint         Timepoint designator. | ||||
|  * @param[in]    PlatformConfig     Contains the runtime modifiable feature input data. | ||||
|  * @param[in]    StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  * @return       AGESA_SUCCESS      Always succeeds. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| STATIC | ||||
| F14InitializeC6 ( | ||||
|   IN       C6_FAMILY_SERVICES *C6Services, | ||||
|   IN       UINT64 EntryPoint, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32   i; | ||||
|   UINT32   MaxEnabledPstate; | ||||
|   UINT32   PciRegister; | ||||
|   UINT64   MsrReg; | ||||
|   PCI_ADDR PciAddress; | ||||
|  | ||||
|   for (i = MSR_PSTATE_7; i > MSR_PSTATE_0; i--) { | ||||
|     LibAmdMsrRead (i, &MsrReg, StdHeader); | ||||
|     if (((PSTATE_MSR *) &MsrReg)->PsEnable == 1) { | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|   MaxEnabledPstate = i - MSR_PSTATE_0; | ||||
|  | ||||
|   if ((EntryPoint & CPU_FEAT_AFTER_PM_INIT) != 0) { | ||||
|     // Program D18F4x1AC[CoreC6Dis] to 0. | ||||
|     // Program D18F4x1AC[PkgC6Dis] to 0. | ||||
|     PciAddress.AddressValue = CPU_STATE_PM_CTRL1_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     ((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->CoreC6Dis = 0; | ||||
|     ((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->PkgC6Dis = 0; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|  | ||||
|     F14EarlySampleC6Support.F14InitializeC6 (StdHeader); | ||||
|  | ||||
|   } else { | ||||
|     // Ensure D18F2x118[C6DramLock] and D18F4x12C[C6Base] are programmed. | ||||
|     PciAddress.AddressValue = MEM_CFG_LOW_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     ASSERT (((MEM_CFG_LOW_REGISTER *) &PciRegister)->C6DramLock == 1); | ||||
|  | ||||
|     PciAddress.AddressValue = C6_BASE_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     ASSERT (((C6_BASE_REGISTER *) &PciRegister)->C6Base != 0); | ||||
|  | ||||
|     // If PC6 is supported, program D18F4x1AC[PstateIdCoreOffExit] to | ||||
|     // the index of lowest-performance Pstate with MSRC001_00[6B:64] | ||||
|     // [PstateEn] == 1 on core 0. | ||||
|     PciAddress.AddressValue = CPU_STATE_PM_CTRL1_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     if (((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->PkgC6Cap == 1) { | ||||
|       ((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->PstateIdCoreOffExit = MaxEnabledPstate; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     } | ||||
|  | ||||
|     // Program D18F4x118 to 0000_0101h. | ||||
|     PciAddress.AddressValue = CSTATE_CTRL1_PCI_ADDR; | ||||
|     PciRegister = 0x00000101; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|   } | ||||
|  | ||||
|   return AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Reload microcode patch for a family 14h CPU after memory is initialized. | ||||
|  * | ||||
|  * @param[in]    StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14ReloadMicrocodePatchAfterMemInit ( | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 MsrValue; | ||||
|  | ||||
|   // To load a microcode patch while using the cache as general storage, | ||||
|   // the following steps are followed: | ||||
|   // 1. Program MSRC001_102B[L2AllocDcFlushVictim]=1. | ||||
|   // 2. Load the microcode patch. | ||||
|   // 3. Program MSRC001_102B[L2AllocDcFlushVictim]=0. | ||||
|   LibAmdMsrRead (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
|   MsrValue = MsrValue | BIT7; | ||||
|   LibAmdMsrWrite (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
|  | ||||
|   // Reload microcode patches. | ||||
|   LoadMicrocodePatch (StdHeader); | ||||
|  | ||||
|   LibAmdMsrRead (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
|   MsrValue = MsrValue & ~((UINT64)BIT7); | ||||
|   LibAmdMsrWrite (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| CONST C6_FAMILY_SERVICES ROMDATA F14C6Support = | ||||
| { | ||||
|   0, | ||||
|   F14IsC6Supported, | ||||
|   F14InitializeC6, | ||||
|   F14ReloadMicrocodePatchAfterMemInit | ||||
| }; | ||||
| @@ -1,285 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 IO C-state feature support functions. | ||||
|  * | ||||
|  * Provides the functions necessary to initialize the IO C-state feature. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuServices.h" | ||||
| #include "cpuFeatures.h" | ||||
| #include "cpuIoCstate.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuLateInit.h" | ||||
| #include "cpuApicUtilities.h" | ||||
| #include "CommonReturns.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_F14IOCSTATE_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14InitializeIoCstateOnCore ( | ||||
|   IN       VOID *CstateBaseMsr, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Enable IO Cstate on a family 14h CPU. | ||||
|  *  Implement steps 1 to 3 of BKDG section 2.5.4.2.9 BIOS Requirements for Initialization | ||||
|  * | ||||
|  * @param[in]    IoCstateServices   Pointer to this CPU's IO Cstate family services. | ||||
|  * @param[in]    EntryPoint         Timepoint designator. | ||||
|  * @param[in]    PlatformConfig     Contains the runtime modifiable feature input data. | ||||
|  * @param[in]    StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  * @return       AGESA_SUCCESS      Always succeeds. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| STATIC | ||||
| F14InitializeIoCstate ( | ||||
|   IN       IO_CSTATE_FAMILY_SERVICES *IoCstateServices, | ||||
|   IN       UINT64                    EntryPoint, | ||||
|   IN       PLATFORM_CONFIGURATION    *PlatformConfig, | ||||
|   IN       AMD_CONFIG_PARAMS         *StdHeader | ||||
|   ) | ||||
| { | ||||
|  | ||||
|   UINT32   i; | ||||
|   UINT32   MaxEnabledPstate; | ||||
|   UINT32   PciRegister; | ||||
|   UINT64   MsrReg; | ||||
|   AP_TASK  TaskPtr; | ||||
|   PCI_ADDR PciAddress; | ||||
|  | ||||
|   if ((EntryPoint & CPU_FEAT_AFTER_PM_INIT) != 0) { | ||||
|     for (i = MSR_PSTATE_7; i > MSR_PSTATE_0; i--) { | ||||
|       LibAmdMsrRead (i, &MsrReg, StdHeader); | ||||
|       if (((PSTATE_MSR *) &MsrReg)->PsEnable == 1) { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     MaxEnabledPstate = i - MSR_PSTATE_0; | ||||
|     // Initialize MSRC001_0073[CstateAddr] on each core to a region of | ||||
|     // the IO address map with 8 consecutive available addresses. | ||||
|     MsrReg = 0; | ||||
|     ((CSTATE_ADDRESS_MSR *) &MsrReg)->CstateAddr = PlatformConfig->CStateIoBaseAddress; | ||||
|     ASSERT ((((CSTATE_ADDRESS_MSR *) &MsrReg)->CstateAddr != 0) && | ||||
|             (((CSTATE_ADDRESS_MSR *) &MsrReg)->CstateAddr <= 0xFFF8)); | ||||
|  | ||||
|     TaskPtr.FuncAddress.PfApTaskI = F14InitializeIoCstateOnCore; | ||||
|     TaskPtr.DataTransfer.DataSizeInDwords = 2; | ||||
|     TaskPtr.DataTransfer.DataPtr = &MsrReg; | ||||
|     TaskPtr.DataTransfer.DataTransferFlags = 0; | ||||
|     TaskPtr.ExeFlags = WAIT_FOR_CORE; | ||||
|     ApUtilRunCodeOnAllLocalCoresAtEarly (&TaskPtr, StdHeader, NULL); | ||||
|  | ||||
|     // Program D18F4x1A8[PService] to the index of lowest-performance | ||||
|     // P-state with MSRC001_00[6B:64][PstateEn]==1 on core 0. | ||||
|     PciAddress.AddressValue = CPU_STATE_PM_CTRL0_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     ((CPU_STATE_PM_CTRL0_REGISTER *) &PciRegister)->PService = MaxEnabledPstate; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|  | ||||
|     // Program D18F4x1AC[CstPminEn] to 1. | ||||
|     PciAddress.AddressValue = CPU_STATE_PM_CTRL1_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|     ((CPU_STATE_PM_CTRL1_REGISTER *) &PciRegister)->CstPminEn = 1; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &PciRegister, StdHeader); | ||||
|   } | ||||
|   return AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Enable C-State on a family 14h core. | ||||
|  * | ||||
|  * @param[in]    CstateBaseMsr      MSR value to write to C001_0073 as determined by core 0. | ||||
|  * @param[in]    StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14InitializeIoCstateOnCore ( | ||||
|   IN       VOID *CstateBaseMsr, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   // Initialize MSRC001_0073[CstateAddr] on each core | ||||
|   LibAmdMsrWrite (MSR_CSTATE_ADDRESS, (UINT64 *) CstateBaseMsr, StdHeader); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns the size of CST object | ||||
|  * | ||||
|  * @param[in]    IoCstateServices   IO Cstate services. | ||||
|  * @param[in]    PlatformConfig     Contains the runtime modifiable feature input data | ||||
|  * @param[in]    StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  * @retval       CstObjSize         Size of CST Object | ||||
|  * | ||||
|  */ | ||||
| UINT32 | ||||
| STATIC | ||||
| F14GetAcpiCstObj ( | ||||
|   IN       IO_CSTATE_FAMILY_SERVICES *IoCstateServices, | ||||
|   IN       PLATFORM_CONFIGURATION    *PlatformConfig, | ||||
|   IN       AMD_CONFIG_PARAMS         *StdHeader | ||||
|   ) | ||||
| { | ||||
|   return (CST_HEADER_SIZE + CST_BODY_SIZE); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Routine to generate the C-State ACPI objects | ||||
|  * | ||||
|  * @param[in]    IoCstateServices       IO Cstate services. | ||||
|  * @param[in]    LocalApicId            Local Apic Id for each core. | ||||
|  * @param[in]    **PstateAcpiBufferPtr  Pointer to the Acpi Buffer Pointer. | ||||
|  * @param[in]    StdHeader              Config Handle for library, services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14CreateAcpiCstObj ( | ||||
|   IN       IO_CSTATE_FAMILY_SERVICES *IoCstateServices, | ||||
|   IN       UINT8                     LocalApicId, | ||||
|   IN OUT   VOID                      **PstateAcpiBufferPtr, | ||||
|   IN       AMD_CONFIG_PARAMS         *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64            MsrData; | ||||
|   CST_HEADER_STRUCT *CstHeaderPtr; | ||||
|   CST_BODY_STRUCT   *CstBodyPtr; | ||||
|  | ||||
|   // Read from MSR C0010073 to obtain CstateAddr | ||||
|   LibAmdMsrRead (MSR_CSTATE_ADDRESS, &MsrData, StdHeader); | ||||
|   ASSERT ((((CSTATE_ADDRESS_MSR *) &MsrData)->CstateAddr != 0) && | ||||
|           (((CSTATE_ADDRESS_MSR *) &MsrData)->CstateAddr <= 0xFFF8)); | ||||
|  | ||||
|   // Typecast the pointer | ||||
|   CstHeaderPtr = (CST_HEADER_STRUCT *) *PstateAcpiBufferPtr; | ||||
|  | ||||
|   // Set CST Header | ||||
|   CstHeaderPtr->NameOpcode  = NAME_OPCODE; | ||||
|   CstHeaderPtr->CstName_a__ = CST_NAME__; | ||||
|   CstHeaderPtr->CstName_a_C = CST_NAME_C; | ||||
|   CstHeaderPtr->CstName_a_S = CST_NAME_S; | ||||
|   CstHeaderPtr->CstName_a_T = CST_NAME_T; | ||||
|  | ||||
|   // Typecast the pointer | ||||
|   CstHeaderPtr++; | ||||
|   CstBodyPtr = (CST_BODY_STRUCT *) CstHeaderPtr; | ||||
|  | ||||
|   // Set CST Body | ||||
|   CstBodyPtr->PkgOpcode      = PACKAGE_OPCODE; | ||||
|   CstBodyPtr->PkgLength      = CST_LENGTH; | ||||
|   CstBodyPtr->PkgElements    = CST_NUM_OF_ELEMENTS; | ||||
|   CstBodyPtr->BytePrefix     = BYTE_PREFIX_OPCODE; | ||||
|   CstBodyPtr->Count          = CST_COUNT; | ||||
|   CstBodyPtr->PkgOpcode2     = PACKAGE_OPCODE; | ||||
|   CstBodyPtr->PkgLength2     = CST_PKG_LENGTH; | ||||
|   CstBodyPtr->PkgElements2   = CST_PKG_ELEMENTS; | ||||
|   CstBodyPtr->BufferOpcode   = BUFFER_OPCODE; | ||||
|   CstBodyPtr->BufferLength   = CST_SUBPKG_LENGTH; | ||||
|   CstBodyPtr->BufferElements = CST_SUBPKG_ELEMENTS; | ||||
|   CstBodyPtr->BufferOpcode2  = BUFFER_OPCODE; | ||||
|   CstBodyPtr->GdrOpcode      = GENERIC_REG_DESCRIPTION; | ||||
|   CstBodyPtr->GdrLength      = CST_GDR_LENGTH; | ||||
|   CstBodyPtr->AddrSpaceId    = GDR_ASI_SYSTEM_IO; | ||||
|   CstBodyPtr->RegBitWidth    = 0x08; | ||||
|   CstBodyPtr->RegBitOffset   = 0x00; | ||||
|   CstBodyPtr->AddressSize    = GDR_ASZ_BYTE_ACCESS; | ||||
|   CstBodyPtr->RegisterAddr   = ((CSTATE_ADDRESS_MSR *) &MsrData)->CstateAddr + 1; | ||||
|   CstBodyPtr->EndTag         = 0x0079; | ||||
|   CstBodyPtr->BytePrefix2    = BYTE_PREFIX_OPCODE; | ||||
|   CstBodyPtr->Type           = CST_C2_TYPE; | ||||
|   CstBodyPtr->WordPrefix     = WORD_PREFIX_OPCODE; | ||||
|   CstBodyPtr->Latency        = 0x64; | ||||
|   CstBodyPtr->DWordPrefix    = DWORD_PREFIX_OPCODE; | ||||
|   CstBodyPtr->Power          = 0; | ||||
|  | ||||
|   CstBodyPtr++; | ||||
|  | ||||
|   //Update the pointer | ||||
|   *PstateAcpiBufferPtr = CstBodyPtr; | ||||
| } | ||||
|  | ||||
| CONST IO_CSTATE_FAMILY_SERVICES ROMDATA F14IoCstateSupport = | ||||
| { | ||||
|   0, | ||||
|   (PF_IO_CSTATE_IS_SUPPORTED) CommonReturnTrue, | ||||
|   F14InitializeIoCstate, | ||||
|   F14GetAcpiCstObj, | ||||
|   F14CreateAcpiCstObj, | ||||
|   (PF_IO_CSTATE_IS_CSD_GENERATED) CommonReturnFalse | ||||
| }; | ||||
| @@ -1,273 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Microcode patch. | ||||
|  * | ||||
|  * Fam14 Microcode Patch rev 0500000B for 5000 or equivalent. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| // Patch code 0500000B for 5000 and equivalent | ||||
| CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch0500000B = | ||||
| {{ | ||||
|   0x10, 0x20, 0x01, 0x06, 0x0b, 0x00, 0x00, 0x05, | ||||
|   0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x00, 0x50, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, | ||||
|   0x67, 0xe5, 0x52, 0x3e, 0x6b, 0x1c, 0x70, 0x69, | ||||
|   0xd9, 0x1c, 0x8d, 0xab, 0xab, 0xc4, 0xce, 0xc5, | ||||
|   0x4f, 0xc9, 0x2d, 0x81, 0xeb, 0x2b, 0x49, 0x14, | ||||
|   0x39, 0xc9, 0xea, 0xd1, 0x6e, 0x83, 0x4c, 0x14, | ||||
|   0x6c, 0x57, 0x06, 0xf8, 0xcf, 0xa5, 0xb4, 0x4a, | ||||
|   0xab, 0x40, 0x63, 0x38, 0x0c, 0x32, 0x56, 0x28, | ||||
|   0x46, 0xe5, 0x2c, 0x62, 0x26, 0x54, 0xf7, 0xa2, | ||||
|   0x45, 0xfe, 0xcb, 0x20, 0x01, 0xb1, 0x6d, 0x5d, | ||||
|   0xbc, 0xe8, 0xf9, 0xe0, 0x4e, 0x11, 0x94, 0x1f, | ||||
|   0x20, 0x90, 0x31, 0x33, 0x23, 0x09, 0xb4, 0xa4, | ||||
|   0xc8, 0x88, 0xa4, 0x93, 0xee, 0x36, 0xe4, 0x18, | ||||
|   0xb8, 0xbd, 0x66, 0x5a, 0x69, 0x03, 0x9c, 0xc0, | ||||
|   0xc9, 0x44, 0x38, 0x29, 0xbe, 0xba, 0x4d, 0xa7, | ||||
|   0x42, 0xac, 0xe3, 0x6a, 0xf9, 0xfa, 0xa9, 0x04, | ||||
|   0xec, 0x93, 0x47, 0xf0, 0x1f, 0x49, 0xf1, 0xe7, | ||||
|   0x69, 0x24, 0x4c, 0x88, 0x1e, 0xad, 0xc3, 0x57, | ||||
|   0xec, 0x45, 0xd4, 0xeb, 0xd1, 0xdf, 0xdc, 0x04, | ||||
|   0x3b, 0xc1, 0xb0, 0x8d, 0xa1, 0x3a, 0x4d, 0x79, | ||||
|   0x4b, 0xad, 0x70, 0x9b, 0x3d, 0xcf, 0x7a, 0x8d, | ||||
|   0xe1, 0xc2, 0xdb, 0x53, 0x0b, 0xbd, 0xf8, 0x94, | ||||
|   0x7c, 0x2c, 0x4d, 0x50, 0xdf, 0x90, 0x31, 0x52, | ||||
|   0x8f, 0xb4, 0xd6, 0x1e, 0x37, 0x3c, 0x98, 0x2b, | ||||
|   0x26, 0x8f, 0x0a, 0x9c, 0x15, 0x8f, 0x62, 0x83, | ||||
|   0x11, 0xbf, 0xc1, 0x74, 0xd7, 0x35, 0xa4, 0x82, | ||||
|   0xba, 0xd3, 0xcb, 0xb6, 0xa0, 0xca, 0x7e, 0x23, | ||||
|   0xaa, 0x12, 0x77, 0x24, 0xdb, 0xfb, 0x82, 0x4f, | ||||
|   0x94, 0xee, 0xbe, 0xcd, 0x7a, 0x69, 0x63, 0xf6, | ||||
|   0x7d, 0x31, 0xb7, 0x9a, 0xfa, 0xe5, 0xb3, 0x1d, | ||||
|   0x39, 0xdb, 0x40, 0xba, 0x1b, 0xaf, 0xa9, 0xc9, | ||||
|   0x24, 0xea, 0x78, 0x47, 0xf2, 0x19, 0x2b, 0x63, | ||||
|   0x07, 0xe1, 0x4c, 0xa8, 0xdb, 0xff, 0x34, 0x07, | ||||
|   0xe8, 0x1d, 0x75, 0xcc, 0x99, 0x41, 0xd1, 0x03, | ||||
|   0xa4, 0xb9, 0x58, 0x53, 0xba, 0x80, 0x5c, 0xac, | ||||
|   0x44, 0x26, 0xe2, 0xa7, 0xbf, 0x4f, 0xd9, 0x52, | ||||
|   0xed, 0x36, 0xbc, 0xc3, 0xed, 0x39, 0x60, 0xc6, | ||||
|   0x5d, 0x19, 0x4a, 0x4f, 0xea, 0x5b, 0x94, 0xee, | ||||
|   0x8c, 0x63, 0x96, 0x61, 0x0e, 0xfd, 0x09, 0x7a, | ||||
|   0xdb, 0xc1, 0x9c, 0x31, 0xc2, 0x64, 0xac, 0xbe, | ||||
|   0xc6, 0x5a, 0x6b, 0x14, 0x60, 0x99, 0xd1, 0x39, | ||||
|   0xda, 0xfc, 0x70, 0x2c, 0x96, 0x49, 0x5d, 0xb9, | ||||
|   0xf1, 0xa4, 0x72, 0xcf, 0x4c, 0xa7, 0x7b, 0x4a, | ||||
|   0xaa, 0x09, 0xf0, 0x36, 0xef, 0x6b, 0x7a, 0x76, | ||||
|   0xe5, 0x8a, 0x69, 0x33, 0xb0, 0x34, 0x67, 0x61, | ||||
|   0x85, 0xc9, 0xf9, 0x6e, 0x71, 0x84, 0xc5, 0x9b, | ||||
|   0x1a, 0xdf, 0x56, 0x6d, 0x8a, 0xde, 0x25, 0x2c, | ||||
|   0x6e, 0xcb, 0x94, 0x47, 0x86, 0x7c, 0x9d, 0x1e, | ||||
|   0x40, 0xf3, 0xa1, 0x6b, 0xbc, 0x61, 0x68, 0x39, | ||||
|   0x2e, 0x70, 0x4f, 0x65, 0x62, 0xe4, 0xba, 0xb6, | ||||
|   0xf8, 0x69, 0x9b, 0x12, 0xd9, 0x88, 0xea, 0x02, | ||||
|   0x42, 0x32, 0xa5, 0x51, 0x1e, 0x7c, 0x75, 0xe9, | ||||
|   0xf2, 0xa6, 0x10, 0x87, 0x4e, 0xa3, 0x9a, 0xba, | ||||
|   0x8f, 0xc7, 0x9f, 0x30, 0xd8, 0x8c, 0x22, 0x14, | ||||
|   0xac, 0x15, 0x02, 0xd1, 0xf5, 0x28, 0xf1, 0xf7, | ||||
|   0x34, 0x76, 0x89, 0x02, 0xd5, 0x71, 0x41, 0xbf, | ||||
|   0x22, 0x13, 0xb6, 0x2d, 0xa9, 0x55, 0xf8, 0x5d, | ||||
|   0x86, 0xf1, 0x80, 0xae, 0xa1, 0xa0, 0x82, 0xaf, | ||||
|   0x89, 0x67, 0xcc, 0xf7, 0xc3, 0x5b, 0x67, 0x7c, | ||||
|   0x7a, 0x53, 0xa7, 0x8a, 0xcd, 0x21, 0x75, 0x07, | ||||
|   0x1f, 0xa5, 0xbd, 0x0a, 0x0a, 0xcc, 0xc0, 0x6b, | ||||
|   0x22, 0xc7, 0x53, 0xbc, 0xbf, 0x7e, 0xaf, 0x89, | ||||
|   0x52, 0x72, 0x11, 0xd1, 0x59, 0x8b, 0x6d, 0xbd, | ||||
|   0xd5, 0x01, 0xeb, 0x75, 0x5b, 0x37, 0x03, 0x43, | ||||
|   0x3f, 0x84, 0x8d, 0x54, 0x18, 0x53, 0x22, 0x4c, | ||||
|   0x85, 0xfc, 0x2b, 0x70, 0x4e, 0xd9, 0x78, 0xcd, | ||||
|   0xb0, 0xa1, 0x16, 0x0f, 0x08, 0xbd, 0x65, 0xd0, | ||||
|   0x92, 0x61, 0x62, 0x69, 0x1e, 0xbb, 0xf0, 0xa5, | ||||
|   0x7a, 0x9c, 0x1b, 0x7a, 0x68, 0xa9, 0xe8, 0x0a, | ||||
|   0x17, 0x9d, 0x89, 0x3f, 0x48, 0x25, 0xd6, 0xe7, | ||||
|   0xb8, 0xb9, 0x79, 0x2f, 0x53, 0x42, 0x12, 0xf4, | ||||
|   0xc6, 0x83, 0x8d, 0x25, 0xf1, 0x43, 0x9d, 0x33, | ||||
|   0x94, 0x99, 0xde, 0x49, 0x21, 0x93, 0xfc, 0x21, | ||||
|   0xf0, 0x49, 0x5d, 0x0e, 0x2f, 0x76, 0xaf, 0x18, | ||||
|   0xa3, 0xd1, 0x70, 0xdb, 0x9c, 0x35, 0x5c, 0x87, | ||||
|   0x42, 0x76, 0x80, 0x4e, 0xd2, 0x8d, 0x71, 0x98, | ||||
|   0x78, 0xeb, 0x7d, 0xfa, 0x39, 0x83, 0xd2, 0x4e, | ||||
|   0xfe, 0xde, 0xc4, 0x8b, 0xef, 0x5f, 0xce, 0xf0, | ||||
|   0x80, 0xdf, 0x18, 0x3c, 0xe2, 0xb7, 0xdc, 0xb0, | ||||
|   0xf1, 0xc5, 0x42, 0xa7, 0x2c, 0x84, 0x9e, 0x4c, | ||||
|   0xdd, 0x8c, 0x9c, 0x4a, 0xda, 0xf1, 0xcf, 0x18, | ||||
|   0xc1, 0xb6, 0x6d, 0x40, 0x57, 0x3e, 0x26, 0x44, | ||||
|   0xc7, 0xe7, 0xda, 0x9c, 0x0e, 0x3d, 0x80, 0x05, | ||||
|   0xf8, 0x07, 0x5f, 0xfc, 0x72, 0x9b, 0x50, 0xe5, | ||||
|   0x79, 0xaa, 0xf3, 0xd0, 0x7a, 0x0e, 0xb2, 0xd8, | ||||
|   0xb5, 0x82, 0x5a, 0x04, 0x00, 0x8c, 0xd4, 0xb2, | ||||
|   0x51, 0xc0, 0xb8, 0xec, 0xa5, 0x90, 0x21, 0xc3, | ||||
|   0x1e, 0x17, 0x9b, 0x19, 0x26, 0xe9, 0x2a, 0x21, | ||||
|   0x75, 0xe3, 0xa6, 0xd7, 0xd0, 0x5c, 0xb6, 0x36, | ||||
|   0x8f, 0x51, 0x45, 0xe4, 0x85, 0x5f, 0xbf, 0xee, | ||||
|   0xc4, 0x13, 0x38, 0xf0, 0x89, 0x1d, 0x61, 0xfa, | ||||
|   0x01, 0x9e, 0xa6, 0xda, 0xd4, 0x7b, 0xa5, 0xa3, | ||||
|   0x1a, 0x44, 0x1e, 0xa7, 0xca, 0x14, 0xb1, 0xc2, | ||||
|   0xd0, 0x35, 0x03, 0xca, 0xf8, 0x18, 0x04, 0x24, | ||||
|   0xae, 0xb1, 0xc2, 0xc2, 0x98, 0x3a, 0xd6, 0xdf, | ||||
|   0xfb, 0x3c, 0x0d, 0x72, 0xdb, 0x85, 0x81, 0x4c, | ||||
|   0x6f, 0xe5, 0x91, 0x20, 0xa1, 0x99, 0xb7, 0x07, | ||||
|   0xde, 0x7c, 0x37, 0x0a, 0x18, 0x1d, 0x90, 0xa7, | ||||
|   0x88, 0x7b, 0x15, 0xdc, 0x77, 0x86, 0xb2, 0xd9, | ||||
|   0x90, 0xe9, 0x5c, 0x58, 0x51, 0x33, 0x06, 0x95, | ||||
|   0xad, 0xbf, 0xdf, 0xc7, 0x4d, 0xcb, 0xec, 0x9f, | ||||
|   0x6d, 0x00, 0xfa, 0x8f, 0x38, 0x4c, 0x56, 0x7e, | ||||
|   0x1a, 0x09, 0x16, 0xd6, 0x2d, 0x4d, 0x50, 0xf5, | ||||
|   0x54, 0x12, 0x8c, 0x64, 0x25, 0x07, 0xa7, 0xe2, | ||||
|   0xeb, 0x48, 0xbd, 0x50, 0x84, 0x8e, 0x90, 0xb6, | ||||
|   0x43, 0x00, 0x87, 0x63, 0x78, 0x73, 0xd1, 0xd5, | ||||
|   0xf1, 0x80, 0xd8, 0x44, 0xbe, 0x8e, 0x45, 0xd6, | ||||
|   0xec, 0xbc, 0xc5, 0xab, 0x97, 0x69, 0x38, 0xaa, | ||||
|   0x23, 0x63, 0x76, 0xaa, 0x13, 0x7d, 0xa3, 0x82, | ||||
|   0x83, 0x81, 0xdf, 0x53, 0x2e, 0x04, 0x69, 0x0f, | ||||
|   0x6f, 0x41, 0x1d, 0x46, 0x96, 0x4d, 0x5b, 0x27, | ||||
|   0xc9, 0x7b, 0x56, 0x8d, 0x86, 0x46, 0xd5, 0x74, | ||||
|   0xaa, 0x16, 0x2d, 0x6d, 0x1a, 0xf6, 0xcf, 0x57, | ||||
|   0x7c, 0xca, 0x3a, 0x98, 0x70, 0x61, 0xa5, 0x74, | ||||
|   0x6b, 0x06, 0x44, 0x96, 0xcf, 0x46, 0x20, 0x9a, | ||||
|   0x39, 0xcb, 0xf0, 0x84, 0x50, 0x93, 0xf0, 0xce, | ||||
|   0x64, 0xe3, 0xaf, 0xdc, 0x1b, 0x21, 0x5f, 0xce, | ||||
|   0xed, 0xb6, 0x85, 0xd4, 0x5c, 0x52, 0x71, 0x8c, | ||||
|   0x05, 0xe0, 0x14, 0x76, 0xa1, 0x6e, 0xdc, 0x63, | ||||
|   0x1c, 0xf7, 0xc1, 0x38, 0x29, 0xf3, 0x3e, 0xd2, | ||||
|   0xb1, 0xb4, 0xc7, 0xd5, 0x8f, 0x63, 0xbc, 0x25, | ||||
|   0xe2, 0x59, 0xb8, 0xf1, 0x51, 0x10, 0x3b, 0xec, | ||||
|   0x49, 0x3a, 0xfc, 0x4a, 0x29, 0x7e, 0x1d, 0xa4, | ||||
|   0xc4, 0xa3, 0xc1, 0x51, 0x90, 0x0e, 0x10, 0x94, | ||||
|   0x1b, 0x60, 0xdd, 0xd0, 0x89, 0xf9, 0x76, 0xa6, | ||||
|   0x1a, 0x7b, 0xba, 0x90, 0x85, 0x35, 0xea, 0xf9, | ||||
|   0xca, 0x53, 0xd5, 0xa1, 0x87, 0x95, 0x52, 0xc2, | ||||
|   0xc2, 0xa8, 0xc8, 0xb8, 0xe7, 0x05, 0xbf, 0x19, | ||||
|   0xb0, 0x46, 0xe8, 0x44, 0x77, 0x80, 0x8f, 0xe0, | ||||
|   0xee, 0xfd, 0x5b, 0xe2, 0x74, 0xed, 0x32, 0xab, | ||||
|   0x0b, 0x54, 0xa7, 0x48, 0x8e, 0xc6, 0xa0, 0x09, | ||||
|   0xf1, 0x62, 0x1b, 0xd1, 0x30, 0xa1, 0x9b, 0x3e, | ||||
|   0x3d, 0x4b, 0xd0, 0x34, 0xb7, 0x7f, 0x51, 0x83, | ||||
|   0x14, 0xa7, 0x36, 0xdd, 0xbc, 0x24, 0x74, 0x8d, | ||||
|   0x92, 0xd6, 0x3b, 0x99, 0xec, 0x71, 0x59, 0xa5, | ||||
|   0xa7, 0x72, 0x05, 0x83, 0x83, 0xb8, 0x88, 0x33, | ||||
|   0xba, 0x7c, 0x51, 0x2c, 0x4f, 0x20, 0x33, 0xff, | ||||
|   0x6a, 0x5e, 0x24, 0x9d, 0x93, 0x66, 0xc2, 0x0e, | ||||
|   0x72, 0x5f, 0xdb, 0x50, 0x32, 0x00, 0x84, 0x9f, | ||||
|   0x96, 0x86, 0xa7, 0x71, 0x62, 0x55, 0x78, 0x36, | ||||
|   0x56, 0x2d, 0x94, 0x48, 0x46, 0xc2, 0x76, 0xaf, | ||||
|   0x4b, 0x2a, 0x0a, 0xb6, 0x18, 0x0e, 0xf6, 0xa6, | ||||
|   0xa8, 0xb2, 0x94, 0x9a, 0x39, 0xfd, 0xfa, 0x9a, | ||||
|   0x6a, 0x19, 0x83, 0x1e, 0x78, 0x85, 0x59, 0x6b, | ||||
|   0xdf, 0xf4, 0x93, 0x44, 0x2e, 0x01, 0x61, 0xe9, | ||||
|   0x98, 0xa6, 0x28, 0xc9, 0x66, 0x9e, 0x1d, 0xb2, | ||||
|   0xe2, 0x44, 0x16, 0xdc, 0x86, 0xca, 0xf0, 0x03, | ||||
|   0x2e, 0xd1, 0x5d, 0x06, 0x30, 0xa3, 0x27, 0xc2, | ||||
|   0x84, 0x42, 0x70, 0x25, 0x0f, 0xd2, 0x4e, 0x02, | ||||
|   0x90, 0x88, 0xe6, 0x90, 0x83, 0xac, 0x42, 0x00, | ||||
|   0x61, 0x05, 0x1e, 0x46, 0xfa, 0xae, 0x91, 0xd9, | ||||
|   0xe8, 0xa3, 0x28, 0xfb, 0x7c, 0xd6, 0x38, 0x77, | ||||
|   0x9c, 0xfc, 0xbd, 0xb4, 0x74, 0x07, 0x7c, 0x60, | ||||
|   0xa5, 0xf2, 0xe8, 0xc7, 0x83, 0xfa, 0x0f, 0x47, | ||||
|   0xf8, 0x63, 0xe7, 0x3e, 0x95, 0x34, 0x16, 0xce, | ||||
|   0x24, 0x93, 0x0e, 0xd4, 0x14, 0xe7, 0x01, 0x48, | ||||
|   0xeb, 0x7d, 0xfe, 0x6f, 0x20, 0xcd, 0x42, 0x79, | ||||
|   0xb4, 0x0b, 0xa0, 0x6e, 0xe7, 0x5b, 0x68, 0xba, | ||||
|   0x21, 0x56, 0x65, 0x3a, 0x51, 0xa2, 0xec, 0x3b, | ||||
|   0xb1, 0xec, 0x61, 0xf8, 0x70, 0x65, 0x5c, 0x9b, | ||||
|   0xf6, 0xd4, 0xb1, 0xe0, 0xd4, 0x73, 0x92, 0x54, | ||||
|   0x6f, 0x6f, 0xf8, 0x17, 0x24, 0x10, 0x82, 0xba, | ||||
|   0x2e, 0x95, 0xbd, 0x69, 0x9f, 0xb3, 0xb0, 0xf0, | ||||
|   0x57, 0x15, 0x8c, 0x2f, 0x44, 0x4e, 0x83, 0xc9, | ||||
|   0xf3, 0xa1, 0xc9, 0x39, 0xe8, 0x3c, 0xb0, 0xa7, | ||||
|   0x51, 0x69, 0xce, 0x4b, 0xb2, 0x70, 0x3e, 0x8e, | ||||
|   0xcf, 0x3e, 0x3a, 0x95, 0x5e, 0x18, 0x43, 0xc9, | ||||
|   0xde, 0x4e, 0x47, 0xbb, 0x6e, 0x0c, 0x83, 0x3b, | ||||
|   0xaf, 0x58, 0x67, 0x06, 0xd6, 0x52, 0xd5, 0x89, | ||||
|   0xb7, 0x1c, 0xb9, 0xd9, 0xa3, 0x95, 0x81, 0x92, | ||||
|   0x8b, 0x32, 0x43, 0xb9, 0xf8, 0x99, 0x2e, 0x70, | ||||
|   0xc9, 0x1e, 0x9a, 0x3a, 0xaa, 0x97, 0xd8, 0xcc, | ||||
|   0x2f, 0xd2, 0x69, 0xdc, 0x69, 0xab, 0x63, 0xc0, | ||||
|   0x5f, 0xd5, 0xb6, 0xb8, 0x8b, 0x8d, 0x6c, 0x15, | ||||
|   0x56, 0x0a, 0xe6, 0x92, 0xb5, 0x25, 0x4b, 0x24, | ||||
|   0x1c, 0x63, 0x5f, 0x0c, 0x1d, 0x36, 0x6e, 0x7a, | ||||
|   0xc0, 0x5b, 0xdb, 0xa1, 0xf8, 0x16, 0x29, 0x04, | ||||
|   0x2f, 0x2b, 0xb8, 0x11, 0xf9, 0xef, 0x1a, 0x50, | ||||
|   0x0c, 0x97, 0x19, 0x20, 0xbc, 0xe9, 0x40, 0xd1, | ||||
|   0x0b, 0x74, 0xec, 0xa0, 0xd5, 0x18, 0x6b, 0xc8, | ||||
|   0x6e, 0xb1, 0x65, 0xd7, 0x5f, 0xf3, 0x7c, 0x33, | ||||
|   0x89, 0xca, 0x15, 0xd1, 0xa8, 0x7f, 0x73, 0xe0, | ||||
|   0xa2, 0x72, 0x27, 0x6d, 0x79, 0xa5, 0xec, 0x36, | ||||
|   0x4e, 0x47, 0xd1, 0x52, 0xe4, 0x0f, 0x3b, 0x9a, | ||||
|   0xb5, 0xef, 0x97, 0x0f, 0xc5, 0x9c, 0x7a, 0x51, | ||||
|   0xbe, 0x23, 0x0f, 0x15, 0x87, 0xd0, 0xa5, 0xf6, | ||||
|   0x12, 0x81, 0xdd, 0x44, 0xd9, 0xf4, 0xcc, 0xda, | ||||
|   0x61, 0x5e, 0x66, 0xa4, 0xf1, 0x7c, 0xd7, 0xd3, | ||||
|   0xac, 0xf0, 0x57, 0xd0, 0x53, 0xeb, 0x19, 0xbd, | ||||
|   0x9d, 0xb4, 0xcb, 0x9e, 0x61, 0x1e, 0xe2, 0x0e, | ||||
|   0xdb, 0x6d, 0x40, 0xaa, 0xe8, 0xc8, 0x91, 0xec, | ||||
|   0xca, 0xb0, 0x0f, 0xf1, 0x41, 0x71, 0x43, 0x25, | ||||
|   0x71, 0xf5, 0xab, 0x93, 0x03, 0xa7, 0x64, 0xdb, | ||||
|   0xb4, 0xde, 0x11, 0x4f, 0x08, 0xe9, 0xb2, 0x6d | ||||
| }}; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| @@ -1,273 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Microcode patch. | ||||
|  * | ||||
|  * Fam14 Microcode Patch rev 0500001A for 5001 or equivalent. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14 | ||||
|  * @e \$Revision: 37850 $   @e \$Date: 2010-09-13 18:09:57 -0400 (Mon, 13 Sep 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| // Patch code 0500001A for 5001 and equivalent | ||||
| CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch0500001A = | ||||
| {{ | ||||
|   0x10, 0x20, 0x08, 0x09, 0x1a, 0x00, 0x00, 0x05, | ||||
|   0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x01, 0x50, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, | ||||
|   0x66, 0xb4, 0x7f, 0x31, 0x85, 0x36, 0x47, 0xfa, | ||||
|   0xa2, 0x3e, 0x1c, 0xb4, 0x9d, 0xaa, 0x69, 0x39, | ||||
|   0xc4, 0xc0, 0xc6, 0xa7, 0xaf, 0x4a, 0x48, 0xe1, | ||||
|   0xe4, 0xbe, 0x8a, 0x91, 0x15, 0xfd, 0x1f, 0x89, | ||||
|   0xd9, 0x17, 0x1e, 0xe0, 0xe5, 0x8d, 0xd1, 0x77, | ||||
|   0xe1, 0xd6, 0xbc, 0x7b, 0x85, 0x18, 0x61, 0xc0, | ||||
|   0x94, 0xb7, 0x36, 0x07, 0x19, 0x64, 0x8f, 0x10, | ||||
|   0xda, 0x1e, 0xf1, 0xf3, 0xe4, 0xe9, 0xc6, 0xbd, | ||||
|   0x05, 0xe5, 0xb2, 0x5c, 0x8a, 0xdb, 0x35, 0x84, | ||||
|   0x68, 0x07, 0x15, 0xa1, 0xca, 0xcc, 0x41, 0x3a, | ||||
|   0xef, 0x18, 0x02, 0x72, 0x71, 0xff, 0x65, 0x6e, | ||||
|   0x3c, 0x2d, 0x2a, 0xe8, 0x26, 0x00, 0xe1, 0xf8, | ||||
|   0x8b, 0x4c, 0xe2, 0xbd, 0x1b, 0xc0, 0x83, 0x11, | ||||
|   0xc5, 0x38, 0x65, 0x4d, 0x65, 0xb7, 0x9d, 0x1f, | ||||
|   0x5b, 0x46, 0x96, 0x6c, 0x7b, 0xc1, 0x03, 0x59, | ||||
|   0x1d, 0x0f, 0x6b, 0x0b, 0x2c, 0xfc, 0x96, 0x3f, | ||||
|   0xf8, 0xc5, 0x76, 0xaf, 0x08, 0xb0, 0x60, 0xc8, | ||||
|   0xaa, 0x66, 0x99, 0x1f, 0xb1, 0x67, 0x85, 0x2b, | ||||
|   0x03, 0x06, 0x50, 0x7c, 0x22, 0x7c, 0xa7, 0xb4, | ||||
|   0x04, 0x58, 0xcc, 0xdf, 0xf1, 0xdc, 0x94, 0x84, | ||||
|   0x84, 0x06, 0xf7, 0x17, 0xc9, 0x02, 0x75, 0xd6, | ||||
|   0x03, 0xd3, 0x20, 0x8c, 0x23, 0x5e, 0xfb, 0x76, | ||||
|   0xf3, 0x74, 0x6b, 0x4d, 0x16, 0x1a, 0x66, 0xb6, | ||||
|   0xfa, 0x30, 0x5f, 0xea, 0x82, 0xf1, 0x5b, 0x9d, | ||||
|   0xb0, 0xd2, 0xd6, 0x2c, 0xa7, 0x5f, 0xb0, 0x4b, | ||||
|   0xfa, 0x27, 0xff, 0xd5, 0x7b, 0xfa, 0x8d, 0x18, | ||||
|   0xab, 0x96, 0xfc, 0x42, 0xc4, 0x5b, 0x85, 0xbc, | ||||
|   0x9b, 0xf5, 0x4b, 0x59, 0x0d, 0xc7, 0x88, 0xfc, | ||||
|   0xc0, 0x6e, 0xac, 0xe5, 0xe2, 0xa3, 0x14, 0x44, | ||||
|   0xf8, 0xb2, 0x8a, 0xe9, 0x9d, 0x75, 0xe2, 0xdc, | ||||
|   0xf1, 0x3b, 0x18, 0xe9, 0x17, 0x9a, 0x59, 0x55, | ||||
|   0x28, 0xf3, 0x84, 0xcc, 0xf2, 0x08, 0x6e, 0xe0, | ||||
|   0x94, 0xd9, 0x88, 0x3d, 0x3a, 0xf0, 0xa2, 0xdb, | ||||
|   0xa2, 0x58, 0xbe, 0x7c, 0x6e, 0x26, 0xd6, 0x2d, | ||||
|   0xba, 0x09, 0xba, 0xf8, 0xba, 0x28, 0xf9, 0xff, | ||||
|   0x71, 0xd3, 0xb4, 0xd7, 0x31, 0x31, 0xd4, 0x8d, | ||||
|   0xcc, 0x44, 0xcc, 0xb8, 0xed, 0xc7, 0x83, 0x97, | ||||
|   0x04, 0x88, 0x05, 0xb8, 0x5b, 0x27, 0x6b, 0xef, | ||||
|   0xe4, 0x5d, 0x03, 0xac, 0x95, 0x05, 0x17, 0x79, | ||||
|   0x0b, 0xe9, 0xbe, 0xaf, 0x25, 0x4a, 0x3b, 0xf2, | ||||
|   0x09, 0xd9, 0x83, 0x17, 0x4f, 0x95, 0x11, 0x17, | ||||
|   0xf5, 0xa4, 0xa6, 0x3e, 0xb8, 0x71, 0x9e, 0x38, | ||||
|   0x86, 0xc8, 0x97, 0x7b, 0x19, 0xab, 0xd5, 0xec, | ||||
|   0xc3, 0x99, 0xe2, 0x95, 0x97, 0xbd, 0x93, 0xd0, | ||||
|   0x1b, 0x76, 0xc4, 0x86, 0x14, 0x58, 0xbf, 0x0b, | ||||
|   0x14, 0x9d, 0x04, 0x64, 0xa8, 0xa6, 0xaf, 0x69, | ||||
|   0x3b, 0xe7, 0x37, 0xed, 0x19, 0xaf, 0x28, 0x2b, | ||||
|   0xff, 0x36, 0xbd, 0x72, 0xf1, 0x2b, 0x06, 0x7f, | ||||
|   0xe9, 0xae, 0x5e, 0xa0, 0xe3, 0x0d, 0x1e, 0x64, | ||||
|   0x06, 0xa8, 0x24, 0x99, 0x2e, 0x7a, 0x41, 0x94, | ||||
|   0x77, 0x4a, 0x17, 0x93, 0x04, 0xd6, 0x2e, 0x86, | ||||
|   0x7a, 0x24, 0x05, 0x87, 0x18, 0x17, 0xb6, 0xe8, | ||||
|   0x41, 0xc2, 0x33, 0xec, 0xb6, 0x42, 0xb2, 0x08, | ||||
|   0xe5, 0xf2, 0x12, 0x15, 0x6b, 0xc9, 0x55, 0xd4, | ||||
|   0xce, 0xa4, 0x4e, 0xa5, 0x2f, 0xd2, 0x3b, 0xd1, | ||||
|   0x08, 0x61, 0x9f, 0xe4, 0x92, 0x1a, 0x84, 0x62, | ||||
|   0x73, 0x7d, 0x87, 0xb2, 0x4b, 0x3d, 0x07, 0x1c, | ||||
|   0xad, 0x13, 0x9f, 0xd6, 0xa5, 0x80, 0x90, 0x95, | ||||
|   0x09, 0xf0, 0x45, 0x04, 0x13, 0xd0, 0x06, 0xc2, | ||||
|   0x24, 0xd4, 0x0b, 0x39, 0xe7, 0x7b, 0xd7, 0xda, | ||||
|   0x7b, 0x88, 0xe7, 0xcf, 0x53, 0xac, 0x38, 0x11, | ||||
|   0x2e, 0x01, 0x94, 0x69, 0x5a, 0x04, 0xb4, 0xf5, | ||||
|   0x1f, 0x7c, 0x44, 0x7a, 0x3e, 0x73, 0x8c, 0x38, | ||||
|   0xcf, 0xf2, 0xd3, 0xf6, 0x3f, 0x5a, 0x76, 0xd3, | ||||
|   0x5b, 0x2e, 0x9f, 0xb3, 0xe7, 0x93, 0x11, 0x05, | ||||
|   0x55, 0x14, 0x8d, 0xc1, 0x6e, 0x36, 0x6e, 0xa3, | ||||
|   0xa0, 0x0b, 0xe1, 0x48, 0x7f, 0x48, 0x80, 0x21, | ||||
|   0x59, 0x00, 0x86, 0xd9, 0x1a, 0x99, 0x9e, 0xf6, | ||||
|   0x4d, 0xa0, 0xd7, 0xbe, 0xb0, 0x2b, 0x13, 0x5d, | ||||
|   0x5b, 0xf3, 0x01, 0x7d, 0xbc, 0x46, 0x99, 0xd9, | ||||
|   0xb4, 0xdb, 0xc8, 0xd1, 0x21, 0x94, 0x91, 0xdc, | ||||
|   0x7a, 0x85, 0xaf, 0x74, 0x9e, 0x0b, 0x18, 0x05, | ||||
|   0xfd, 0xba, 0xac, 0x7a, 0xea, 0xa9, 0x6e, 0x07, | ||||
|   0x32, 0xf8, 0x1d, 0x0d, 0x7b, 0x18, 0x6f, 0x13, | ||||
|   0x89, 0x4c, 0xb3, 0x50, 0x5d, 0x8c, 0x81, 0xd5, | ||||
|   0x2a, 0x6f, 0xf3, 0xa4, 0x93, 0x7c, 0x16, 0xfd, | ||||
|   0x25, 0xf8, 0x83, 0xc7, 0xd0, 0x21, 0xf9, 0x51, | ||||
|   0xc5, 0xbb, 0x6a, 0x42, 0xe6, 0xfd, 0x05, 0x7e, | ||||
|   0xa0, 0x37, 0x93, 0x55, 0x98, 0x8b, 0x30, 0xbd, | ||||
|   0x62, 0x33, 0x91, 0xe3, 0x44, 0xd6, 0xc5, 0xa4, | ||||
|   0x17, 0x2d, 0x70, 0x97, 0xaa, 0x02, 0xc3, 0xa4, | ||||
|   0x09, 0x6f, 0x7f, 0x00, 0xcf, 0xae, 0x5f, 0x25, | ||||
|   0xf5, 0x5e, 0xca, 0x7b, 0x7c, 0x61, 0x07, 0x1c, | ||||
|   0xd9, 0x49, 0xa5, 0x9d, 0x42, 0xe4, 0x74, 0x93, | ||||
|   0xe1, 0x3f, 0x8f, 0xc0, 0xa1, 0x32, 0x1a, 0x83, | ||||
|   0x06, 0x3a, 0x1b, 0xb2, 0x25, 0x69, 0xec, 0x20, | ||||
|   0xd5, 0x9b, 0x7a, 0x9f, 0x34, 0xb0, 0x27, 0x23, | ||||
|   0x20, 0xa0, 0x31, 0xc1, 0x24, 0xd2, 0x8e, 0x34, | ||||
|   0x1f, 0x7c, 0xd8, 0xc7, 0x75, 0xb1, 0x4c, 0xe8, | ||||
|   0x87, 0x98, 0xe1, 0xbb, 0x94, 0x55, 0xc3, 0x63, | ||||
|   0x25, 0x1a, 0xc8, 0xae, 0x0b, 0xf4, 0xd9, 0xb9, | ||||
|   0xe3, 0xdc, 0x5e, 0x9a, 0xb1, 0x98, 0x89, 0x4c, | ||||
|   0x2a, 0x09, 0x0e, 0xfa, 0x98, 0x21, 0x87, 0xf3, | ||||
|   0x58, 0xe0, 0xa9, 0x8a, 0xda, 0xf5, 0xc7, 0x0b, | ||||
|   0x70, 0xa5, 0x69, 0x0c, 0xe5, 0x38, 0x98, 0x22, | ||||
|   0xac, 0x05, 0xe4, 0x45, 0x56, 0x77, 0xa5, 0xfe, | ||||
|   0x34, 0x5b, 0xb9, 0x45, 0x58, 0x1d, 0x95, 0xd2, | ||||
|   0x62, 0x60, 0x86, 0x88, 0x19, 0x03, 0x2c, 0xee, | ||||
|   0xd6, 0xc4, 0x32, 0x41, 0x5d, 0xa5, 0x0b, 0x71, | ||||
|   0xfb, 0x8c, 0x6c, 0xb0, 0xdc, 0x61, 0x67, 0x3d, | ||||
|   0xfb, 0xb1, 0xec, 0xf1, 0x95, 0xfc, 0x5d, 0x18, | ||||
|   0x93, 0x76, 0xca, 0x55, 0x2c, 0xdc, 0x8c, 0x87, | ||||
|   0xf1, 0x00, 0x84, 0xa6, 0x55, 0x91, 0xab, 0xf9, | ||||
|   0x24, 0xa5, 0x27, 0x55, 0xfb, 0xd4, 0xb4, 0xfd, | ||||
|   0xac, 0xc9, 0xfe, 0xdb, 0xeb, 0xcc, 0x6f, 0xd4, | ||||
|   0x92, 0x8a, 0xa9, 0x26, 0x07, 0xfb, 0x4f, 0x53, | ||||
|   0x3d, 0x89, 0xa8, 0x4c, 0x94, 0x7a, 0xce, 0xec, | ||||
|   0xd5, 0x4b, 0xef, 0x65, 0xab, 0x65, 0xc0, 0x3b, | ||||
|   0x28, 0xfe, 0xfb, 0xc9, 0x83, 0x6b, 0xbc, 0x72, | ||||
|   0x42, 0xf7, 0x78, 0x92, 0x87, 0x76, 0xbe, 0x0c, | ||||
|   0x42, 0x42, 0x96, 0x18, 0x03, 0x69, 0x16, 0x67, | ||||
|   0xc6, 0xe7, 0x75, 0xee, 0xb6, 0x1b, 0x85, 0x46, | ||||
|   0xb4, 0x65, 0x0a, 0x61, 0xbb, 0xb9, 0xb3, 0x37, | ||||
|   0xf8, 0x35, 0x98, 0x38, 0x5d, 0x93, 0x3d, 0x99, | ||||
|   0x84, 0x40, 0x9d, 0x66, 0x3e, 0x3b, 0xd0, 0x01, | ||||
|   0x8a, 0x67, 0x83, 0xce, 0x26, 0x48, 0x76, 0x93, | ||||
|   0x70, 0xa7, 0xfe, 0x13, 0xee, 0x5a, 0x30, 0x2c, | ||||
|   0xcc, 0xba, 0xa9, 0xe8, 0x76, 0x88, 0xa7, 0x8e, | ||||
|   0x78, 0x22, 0xdf, 0xec, 0xc2, 0x68, 0xcf, 0xf4, | ||||
|   0x29, 0x6d, 0x19, 0x6e, 0x4d, 0xad, 0x35, 0xee, | ||||
|   0x07, 0xb5, 0xcf, 0x20, 0x80, 0x77, 0xf9, 0xb7, | ||||
|   0x45, 0x78, 0x63, 0x3a, 0x39, 0x7b, 0x44, 0xec, | ||||
|   0x82, 0x0e, 0x8f, 0xf2, 0x03, 0xa8, 0xaf, 0x83, | ||||
|   0x3d, 0x3a, 0xc5, 0x54, 0xfe, 0xc0, 0xf5, 0xf4, | ||||
|   0x98, 0xf4, 0x8d, 0x96, 0x2a, 0x62, 0xd2, 0xbc, | ||||
|   0x56, 0x3c, 0xfe, 0x7d, 0x46, 0x7f, 0x21, 0x92, | ||||
|   0x8d, 0x57, 0x15, 0x3f, 0xff, 0xc7, 0xe4, 0x24, | ||||
|   0x71, 0x36, 0xe3, 0x25, 0x7d, 0xb3, 0xf7, 0xd1, | ||||
|   0x18, 0xf5, 0x3e, 0x0e, 0xb3, 0xa3, 0xd8, 0x60, | ||||
|   0xda, 0xa6, 0x72, 0xc6, 0x84, 0x09, 0x2b, 0xfe, | ||||
|   0x74, 0x0d, 0x7b, 0x71, 0x40, 0x74, 0x99, 0x2a, | ||||
|   0xe9, 0xc4, 0x3e, 0x1f, 0xab, 0x22, 0x21, 0x97, | ||||
|   0xab, 0x93, 0x4a, 0x72, 0x3b, 0x15, 0xd8, 0xc3, | ||||
|   0x68, 0x3f, 0xd0, 0x7f, 0x21, 0x48, 0x6e, 0xf2, | ||||
|   0x68, 0x41, 0x16, 0x49, 0x6a, 0x4c, 0xdd, 0xe0, | ||||
|   0x44, 0xd6, 0x04, 0xc1, 0xc5, 0x4a, 0x3e, 0x06, | ||||
|   0x2c, 0x6d, 0x30, 0x76, 0x71, 0x33, 0xde, 0x73, | ||||
|   0x44, 0x96, 0x05, 0xaa, 0x3d, 0x31, 0x55, 0xf7, | ||||
|   0xdb, 0x17, 0x5f, 0xa1, 0xd0, 0x36, 0x9f, 0xaa, | ||||
|   0x95, 0x82, 0x46, 0x79, 0x78, 0x77, 0xaf, 0x04, | ||||
|   0x78, 0x7d, 0xe8, 0x8a, 0x5c, 0x69, 0xe2, 0x88, | ||||
|   0xce, 0xca, 0x21, 0x18, 0x0d, 0x1b, 0xe7, 0x3c, | ||||
|   0x14, 0xec, 0x8b, 0xc6, 0x55, 0x30, 0xf1, 0x40, | ||||
|   0x7f, 0x4e, 0x1d, 0xda, 0x86, 0x81, 0x05, 0x72, | ||||
|   0x3a, 0x99, 0xad, 0x78, 0xfc, 0x96, 0xcc, 0x0e, | ||||
|   0x81, 0x0c, 0xed, 0xce, 0x69, 0x14, 0x15, 0xc9, | ||||
|   0xdd, 0xb5, 0xf7, 0xde, 0xf5, 0x9c, 0xc7, 0xc1, | ||||
|   0xb9, 0x09, 0x8e, 0xf7, 0xd9, 0xf2, 0x05, 0x02, | ||||
|   0x36, 0xe9, 0x8d, 0xb4, 0x51, 0x23, 0x78, 0xc2, | ||||
|   0x2a, 0x2f, 0x27, 0x2e, 0x2e, 0xa1, 0x9f, 0xda, | ||||
|   0xb1, 0x0d, 0xc0, 0x97, 0x18, 0x65, 0x4e, 0x87, | ||||
|   0xa6, 0x95, 0xa7, 0xdc, 0x91, 0xfd, 0x10, 0xee, | ||||
|   0x32, 0x36, 0x23, 0xad, 0x79, 0x66, 0x68, 0x16, | ||||
|   0x6a, 0x7a, 0x91, 0xe9, 0xb6, 0xd0, 0xf7, 0x38, | ||||
|   0xc0, 0xa2, 0xca, 0xd4, 0xc0, 0xcd, 0x4a, 0x68, | ||||
|   0x01, 0x07, 0x8e, 0x8d, 0x82, 0x85, 0xd1, 0x88, | ||||
|   0x8c, 0x7b, 0xdf, 0x90, 0x9b, 0x28, 0x00, 0xaa, | ||||
|   0x4d, 0x14, 0x2f, 0x65, 0xd6, 0x90, 0x7a, 0xe0, | ||||
|   0x10, 0xed, 0xf0, 0x04, 0x80, 0xff, 0x52, 0xb5, | ||||
|   0xb3, 0x66, 0xae, 0xb2, 0x4c, 0xe0, 0x4f, 0x69, | ||||
|   0x18, 0xa6, 0x4e, 0x1a, 0x95, 0xd2, 0xf4, 0x26, | ||||
|   0xba, 0x16, 0xea, 0xb6, 0x51, 0xdc, 0x3f, 0xf2, | ||||
|   0x29, 0xf8, 0x5b, 0x1a, 0x6e, 0x0a, 0x21, 0xa2, | ||||
|   0x34, 0x40, 0x8a, 0x58, 0x10, 0xb7, 0xaa, 0xe5, | ||||
|   0x4b, 0xa9, 0x7a, 0x7c, 0x32, 0x10, 0xdd, 0x74, | ||||
|   0x32, 0xca, 0x21, 0xfb, 0x92, 0x88, 0x22, 0x29, | ||||
|   0xdd, 0x51, 0xe9, 0xcc, 0xcb, 0x66, 0x5f, 0xca, | ||||
|   0x4a, 0x9d, 0xd6, 0x55, 0x0a, 0x5d, 0xe9, 0x6c, | ||||
|   0x37, 0xba, 0x75, 0x18, 0x7c, 0x00, 0x4a, 0x78, | ||||
|   0x58, 0x1f, 0xec, 0x47, 0x75, 0x74, 0x21, 0x13, | ||||
|   0x69, 0x66, 0x44, 0xe8, 0x00, 0x6f, 0x7d, 0xb9, | ||||
|   0x31, 0xc8, 0xb1, 0xdc, 0xc2, 0x62, 0x52, 0xf1, | ||||
|   0x20, 0x1d, 0xeb, 0x88, 0x18, 0x65, 0x13, 0x8f, | ||||
|   0x78, 0xba, 0x5a, 0xb9, 0x2b, 0x6c, 0x80, 0xe0, | ||||
|   0xa7, 0x5f, 0xb9, 0xec, 0x1b, 0x86, 0x06, 0x8a, | ||||
|   0xbf, 0x71, 0x44, 0x4f, 0x41, 0x73, 0x32, 0x59, | ||||
|   0x01, 0x33, 0x54, 0xac, 0x5e, 0xac, 0xc2, 0x0a, | ||||
|   0xa4, 0xd5, 0xc3, 0x54, 0x05, 0xbf, 0x44, 0xdc, | ||||
|   0x72, 0x3d, 0xc8, 0x44, 0x6c, 0x80, 0x1f, 0x69, | ||||
|   0x16, 0x85, 0x65, 0xbc, 0xa1, 0x99, 0x50, 0xd9, | ||||
|   0x39, 0xa7, 0x7c, 0xac, 0xf1, 0x0c, 0xd7, 0xdc, | ||||
|   0xe7, 0x2a, 0xe4, 0xf2, 0xa4, 0x6f, 0xf4, 0xe2, | ||||
|   0xd5, 0x12, 0x36, 0x93, 0xa6, 0xfd, 0xdd, 0xde, | ||||
|   0x4c, 0x07, 0x11, 0x43, 0x25, 0x31, 0xa7, 0x54, | ||||
|   0x81, 0x28, 0x27, 0x41, 0x70, 0xd9, 0xb9, 0x4e, | ||||
|   0xce, 0x45, 0x40, 0xe2, 0xb8, 0xa5, 0x79, 0xf6, | ||||
|   0x39, 0x8e, 0xf8, 0xae, 0xfe, 0x25, 0x47, 0x8c, | ||||
|   0xc2, 0x1a, 0xc0, 0x58, 0x45, 0x38, 0x13, 0x3b, | ||||
|   0xbb, 0x1e, 0x2c, 0xdf, 0xf6, 0x62, 0xb0, 0xe0, | ||||
|   0x88, 0x26, 0xf1, 0xab, 0xd9, 0xa0, 0x5d, 0x69, | ||||
|   0x93, 0x72, 0x6c, 0x4a, 0xe0, 0xef, 0x9f, 0x21, | ||||
|   0xaf, 0x2b, 0x35, 0x2a, 0x27, 0x73, 0x52, 0x3b | ||||
| }}; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| @@ -1,260 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Microcode patch. | ||||
|  * | ||||
|  * Fam14 Microcode Patch rev 05000029 for 5010 or equivalent. | ||||
|  * | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ****************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2013, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| // Encrypt Patch code 05000029 for 5010 and equivalent | ||||
|  | ||||
| CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch05000029 = | ||||
| {{ | ||||
|   0x13, 0x20, 0x21, 0x01, 0x29, 0x00, 0x00, 0x05, | ||||
|   0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x10, 0x50, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, | ||||
|   0x0E, 0xAB, 0x99, 0xFE, 0xC0, 0x7C, 0x83, 0x1F, | ||||
|   0xBB, 0x18, 0x59, 0x9E, 0xF8, 0xC1, 0xA6, 0x9E, | ||||
|   0x64, 0xEC, 0x53, 0x29, 0x98, 0xD7, 0x25, 0x18, | ||||
|   0xF1, 0x8D, 0x2D, 0xCB, 0x74, 0xED, 0x63, 0xD2, | ||||
|   0xEF, 0xB0, 0xD5, 0x21, 0x31, 0x4D, 0x45, 0x1B, | ||||
|   0xB5, 0x33, 0x72, 0xE6, 0x04, 0x32, 0x02, 0xBD, | ||||
|   0x98, 0xD1, 0x99, 0x03, 0xFA, 0xE3, 0xE6, 0xBC, | ||||
|   0xDF, 0x91, 0x65, 0x4D, 0xE0, 0xA0, 0x4E, 0x57, | ||||
|   0x05, 0xA7, 0x91, 0x54, 0xD8, 0x96, 0x4C, 0x01, | ||||
|   0x64, 0x49, 0x8A, 0x3C, 0x8A, 0xD8, 0x48, 0x04, | ||||
|   0x9C, 0x9E, 0x33, 0xBE, 0xE4, 0xD8, 0x23, 0x05, | ||||
|   0xDB, 0x42, 0x2B, 0xA8, 0x5A, 0x7B, 0x52, 0xF3, | ||||
|   0xF4, 0x6A, 0xD4, 0x15, 0x5D, 0x03, 0x58, 0x98, | ||||
|   0x10, 0x72, 0x73, 0x5B, 0x90, 0xBF, 0x40, 0x7B, | ||||
|   0xB9, 0x80, 0xDC, 0xC8, 0x0C, 0xFB, 0xAE, 0xE3, | ||||
|   0x52, 0xFA, 0x26, 0x08, 0x04, 0x13, 0x35, 0xC8, | ||||
|   0x9D, 0x8B, 0x10, 0xBF, 0x60, 0x6B, 0x9B, 0xC0, | ||||
|   0x97, 0xAF, 0x6F, 0x61, 0x1F, 0xB2, 0x62, 0xAF, | ||||
|   0xC0, 0x06, 0x9A, 0xC5, 0x7E, 0xC1, 0xFF, 0xE9, | ||||
|   0x16, 0x8D, 0xF2, 0x81, 0xA0, 0x6D, 0x39, 0x7E, | ||||
|   0x74, 0x86, 0x4B, 0x5B, 0xA5, 0x48, 0xE7, 0x71, | ||||
|   0x9F, 0x04, 0x84, 0xA1, 0xF2, 0x1E, 0x08, 0x5B, | ||||
|   0x15, 0xAC, 0x1E, 0x32, 0xF8, 0xDC, 0xCD, 0x15, | ||||
|   0x68, 0x3B, 0x06, 0xFA, 0x0A, 0x84, 0x99, 0xB1, | ||||
|   0x8E, 0x49, 0x69, 0x83, 0xB0, 0x93, 0xC2, 0xA9, | ||||
|   0x35, 0x4F, 0x80, 0x7F, 0x46, 0xC0, 0x6C, 0xA2, | ||||
|   0xA2, 0xBB, 0xD4, 0x6F, 0x2C, 0x32, 0x54, 0xD2, | ||||
|   0x91, 0xC7, 0x1E, 0x6D, 0xDF, 0xE2, 0xA2, 0xE1, | ||||
|   0x69, 0x17, 0xC7, 0x8D, 0x85, 0xFB, 0x72, 0x3F, | ||||
|   0xA8, 0x00, 0x08, 0x6A, 0xC2, 0xAC, 0x38, 0x9D, | ||||
|   0x0B, 0xD1, 0xAE, 0x59, 0xFB, 0xE3, 0x00, 0xC1, | ||||
|   0x39, 0x47, 0x73, 0x08, 0xB9, 0xA7, 0xD7, 0x1A, | ||||
|   0x6C, 0x37, 0x07, 0x5F, 0xE8, 0x3F, 0x72, 0xAE, | ||||
|   0x6D, 0x44, 0x2B, 0xE9, 0x10, 0x07, 0x97, 0x5D, | ||||
|   0x2C, 0xFF, 0x16, 0x60, 0xF4, 0xE8, 0x80, 0x60, | ||||
|   0x9F, 0x14, 0xF2, 0xED, 0x39, 0xE8, 0x60, 0xEC, | ||||
|   0x24, 0xEE, 0xCE, 0xC0, 0xE5, 0x5A, 0x62, 0xCF, | ||||
|   0x73, 0x1E, 0xDC, 0x20, 0x80, 0x7E, 0xAE, 0x3F, | ||||
|   0xCF, 0x7C, 0x24, 0x7F, 0xCF, 0x45, 0x4F, 0x7F, | ||||
|   0xFB, 0xB8, 0x1D, 0x37, 0x99, 0xCB, 0x5F, 0x79, | ||||
|   0xC6, 0x1E, 0xF6, 0xB2, 0x83, 0x69, 0x57, 0x1D, | ||||
|   0x81, 0xC7, 0xEA, 0x50, 0x58, 0x69, 0x26, 0xEC, | ||||
|   0xE7, 0x31, 0x3F, 0x93, 0x90, 0x71, 0xB5, 0xB4, | ||||
|   0x11, 0xC0, 0x19, 0x6E, 0x09, 0xA4, 0x01, 0x32, | ||||
|   0x8D, 0xFE, 0x4A, 0x8C, 0x6C, 0xFB, 0xDD, 0xC2, | ||||
|   0x06, 0x96, 0xD9, 0x5E, 0x0F, 0xD9, 0xB1, 0x6F, | ||||
|   0x02, 0x0D, 0x8B, 0xEB, 0xCF, 0x94, 0x0B, 0xCA, | ||||
|   0xEC, 0x21, 0x80, 0xFC, 0x83, 0x39, 0xA5, 0x18, | ||||
|   0x27, 0xF3, 0x0D, 0x93, 0x58, 0xBD, 0x57, 0xE8, | ||||
|   0x5D, 0xC7, 0x02, 0x4C, 0xAB, 0x79, 0x07, 0xDF, | ||||
|   0x94, 0x8F, 0x1C, 0x99, 0x0F, 0x29, 0x96, 0x7F, | ||||
|   0xDE, 0xFF, 0xC9, 0xC7, 0x15, 0xEC, 0x0E, 0x94, | ||||
|   0x41, 0xF2, 0xA7, 0x2A, 0xB5, 0xE2, 0x1E, 0x41, | ||||
|   0x05, 0x81, 0xDA, 0xFF, 0x0F, 0x1B, 0xCF, 0x61, | ||||
|   0x75, 0xA8, 0x54, 0x62, 0xE4, 0xE9, 0x23, 0x9B, | ||||
|   0x1A, 0xAE, 0x96, 0x37, 0x7C, 0x60, 0x18, 0xDE, | ||||
|   0x76, 0x9A, 0x13, 0x8F, 0x0D, 0x67, 0xE7, 0x1B, | ||||
|   0x5C, 0x14, 0xB8, 0x93, 0x64, 0x58, 0xE0, 0xCA, | ||||
|   0xA8, 0x1D, 0x23, 0x67, 0x3A, 0x10, 0x1D, 0xA9, | ||||
|   0xA2, 0x25, 0xA7, 0xFF, 0x5C, 0x91, 0x2D, 0xA4, | ||||
|   0xD5, 0xE2, 0x65, 0x14, 0x58, 0xA8, 0x73, 0x76, | ||||
|   0x26, 0xF0, 0xE5, 0xF8, 0xDB, 0xC6, 0xDA, 0x39, | ||||
|   0xEE, 0xCC, 0x91, 0x57, 0x30, 0xC7, 0xE0, 0x9B, | ||||
|   0xBA, 0x66, 0x53, 0x78, 0x07, 0xD2, 0xC1, 0x86, | ||||
|   0x5B, 0xFD, 0xDA, 0x5F, 0xCF, 0x68, 0x62, 0x5D, | ||||
|   0x18, 0x8B, 0xD2, 0x8A, 0x8D, 0x2A, 0x39, 0xA6, | ||||
|   0x3D, 0x89, 0x8F, 0x65, 0x64, 0xE6, 0xD4, 0x5B, | ||||
|   0x4D, 0x82, 0xDD, 0x80, 0xAA, 0x10, 0x5C, 0x0B, | ||||
|   0x55, 0x68, 0x3D, 0x35, 0xDC, 0x0B, 0xF4, 0x18, | ||||
|   0xBC, 0xC8, 0x48, 0x29, 0x08, 0x7A, 0x03, 0x14, | ||||
|   0x32, 0xCB, 0x42, 0xCA, 0x6F, 0x1D, 0x3D, 0x53, | ||||
|   0x3D, 0x7F, 0xC3, 0x96, 0x16, 0x3B, 0xB7, 0x40, | ||||
|   0x98, 0xEE, 0xC6, 0x55, 0xC0, 0x02, 0x3E, 0xAE, | ||||
|   0x0D, 0x99, 0x60, 0xC6, 0xF7, 0x0A, 0x43, 0xB4, | ||||
|   0xF9, 0x1B, 0x5F, 0xEF, 0x6B, 0x5D, 0xED, 0x29, | ||||
|   0xE1, 0x70, 0xF7, 0x92, 0x11, 0x01, 0xB6, 0x56, | ||||
|   0xEF, 0xBD, 0x31, 0x55, 0xC1, 0xFC, 0xF8, 0xE4, | ||||
|   0xFC, 0x37, 0x6E, 0xE6, 0x29, 0x25, 0xB3, 0x8D, | ||||
|   0x50, 0x9B, 0x17, 0xE3, 0x24, 0x46, 0x2B, 0x70, | ||||
|   0xF0, 0xD9, 0x2C, 0x70, 0x0C, 0xA0, 0x48, 0x4A, | ||||
|   0x55, 0x3D, 0xB1, 0x2F, 0xEC, 0xC2, 0x0C, 0x36, | ||||
|   0x3B, 0x36, 0x7F, 0x1D, 0xC3, 0x4C, 0xF5, 0xB7, | ||||
|   0x88, 0x33, 0x40, 0x84, 0x99, 0x07, 0x84, 0x1E, | ||||
|   0x20, 0x09, 0x98, 0x9F, 0x4A, 0x99, 0xFE, 0x88, | ||||
|   0xB1, 0xE1, 0x7F, 0xED, 0xCF, 0x54, 0x4B, 0x3C, | ||||
|   0xBF, 0x97, 0x46, 0x39, 0x0B, 0x8C, 0xCA, 0xA7, | ||||
|   0xB5, 0x93, 0x5D, 0x65, 0xFF, 0x30, 0xFB, 0xDB, | ||||
|   0x98, 0x94, 0x99, 0xE0, 0xE0, 0xD5, 0xFA, 0xF6, | ||||
|   0xB3, 0xEC, 0x94, 0x5F, 0x78, 0x13, 0x5A, 0x3E, | ||||
|   0x21, 0x2D, 0x76, 0xBC, 0xEF, 0xED, 0x94, 0x01, | ||||
|   0xC5, 0x22, 0x6E, 0xD3, 0x77, 0x67, 0x81, 0xAD, | ||||
|   0x63, 0xB4, 0x32, 0x8D, 0x50, 0x84, 0xCE, 0xF2, | ||||
|   0xDD, 0xE4, 0xCF, 0xF7, 0xDF, 0x18, 0x9A, 0x03, | ||||
|   0x24, 0x01, 0xA6, 0x9B, 0xF6, 0x5A, 0xD0, 0x15, | ||||
|   0x9B, 0x80, 0x5A, 0x6E, 0x46, 0x1F, 0x60, 0x9F, | ||||
|   0xE6, 0x71, 0xE3, 0x58, 0xFF, 0x8D, 0x6D, 0xC6, | ||||
|   0x9D, 0x5E, 0x3A, 0x20, 0x08, 0x0C, 0x26, 0x18, | ||||
|   0x51, 0xE2, 0xF8, 0x76, 0xC8, 0xD3, 0xDC, 0x41, | ||||
|   0x82, 0x52, 0x7B, 0x69, 0x2A, 0x95, 0xCA, 0xD4, | ||||
|   0x0A, 0x99, 0x2A, 0x73, 0xDD, 0xCB, 0xAC, 0x68, | ||||
|   0xCF, 0xD6, 0x1B, 0x53, 0x0E, 0xA9, 0x08, 0x58, | ||||
|   0x95, 0x7C, 0xF7, 0xEF, 0x45, 0x1F, 0x1B, 0x61, | ||||
|   0x5D, 0x3D, 0xB7, 0xEB, 0x45, 0x74, 0x01, 0x0A, | ||||
|   0xF2, 0x1D, 0x2C, 0xBF, 0x99, 0xF5, 0x9A, 0x5D, | ||||
|   0x5E, 0xED, 0x4F, 0xC7, 0x79, 0x8B, 0x49, 0xEC, | ||||
|   0x8D, 0x8B, 0xD3, 0xF0, 0x3C, 0xF5, 0xDA, 0x8C, | ||||
|   0xAF, 0xAD, 0x72, 0xB7, 0x8D, 0x30, 0xDC, 0x9C, | ||||
|   0x3C, 0x76, 0x17, 0x8A, 0xA7, 0x02, 0xF5, 0x01, | ||||
|   0xBA, 0xBA, 0xF0, 0x71, 0x03, 0x6D, 0xEA, 0x13, | ||||
|   0x8D, 0xF1, 0x6C, 0x3E, 0xE3, 0xB3, 0x0E, 0x1B, | ||||
|   0x98, 0x60, 0x8A, 0xAD, 0xD8, 0x55, 0x25, 0x7F, | ||||
|   0xE0, 0x00, 0x58, 0x21, 0x20, 0xA4, 0x2D, 0x83, | ||||
|   0xAA, 0x39, 0x9A, 0x70, 0xBD, 0x9D, 0x4F, 0x6C, | ||||
|   0xB2, 0x21, 0x2C, 0xB7, 0x75, 0xA5, 0xA5, 0xEC, | ||||
|   0xB1, 0x5A, 0xFE, 0x91, 0x49, 0xD0, 0x90, 0x02, | ||||
|   0xBB, 0x2E, 0xC4, 0xB4, 0x73, 0x58, 0x49, 0x53, | ||||
|   0x31, 0xEB, 0x58, 0x66, 0xE2, 0xD2, 0x0D, 0xD2, | ||||
|   0x9F, 0x7D, 0x9B, 0x4D, 0xA6, 0x72, 0x2A, 0xE4, | ||||
|   0x04, 0xF0, 0x53, 0xF5, 0xDD, 0x8F, 0x8D, 0x0A, | ||||
|   0xD0, 0xD3, 0xBA, 0xAA, 0x2F, 0x2E, 0xD1, 0x7A, | ||||
|   0xED, 0xAD, 0x48, 0x21, 0xA7, 0x1E, 0xC9, 0x4F, | ||||
|   0xF2, 0xE4, 0xAF, 0x62, 0x1D, 0x91, 0xB9, 0x9D, | ||||
|   0xEA, 0x0F, 0x69, 0x23, 0x55, 0x99, 0xF0, 0xD2, | ||||
|   0x92, 0xD8, 0x20, 0xC0, 0xBC, 0x75, 0xA7, 0x83, | ||||
|   0x5B, 0x6F, 0x4A, 0x2F, 0xA8, 0x35, 0x2B, 0xC3, | ||||
|   0xBA, 0xFB, 0x9B, 0xB9, 0x11, 0xF7, 0x8E, 0xF5, | ||||
|   0x0E, 0x9B, 0x51, 0xB7, 0xFB, 0x59, 0x63, 0x17, | ||||
|   0x37, 0x5A, 0x7E, 0x20, 0xAF, 0x97, 0xAD, 0x61, | ||||
|   0xA0, 0xFA, 0xFC, 0x95, 0x56, 0xD9, 0x08, 0x34, | ||||
|   0x76, 0xEF, 0xE9, 0xA1, 0x06, 0xB5, 0xEA, 0xC5, | ||||
|   0xDE, 0x7F, 0xE6, 0xBC, 0x9E, 0x2A, 0x51, 0x4D, | ||||
|   0x9C, 0x42, 0x96, 0x3F, 0xAF, 0xA5, 0x49, 0x78, | ||||
|   0x9E, 0xF1, 0xFD, 0x2A, 0xD4, 0x3D, 0xA7, 0x6B, | ||||
|   0x9F, 0xDF, 0x37, 0x7A, 0xAB, 0x99, 0x00, 0xE2, | ||||
|   0xA1, 0x9C, 0xDB, 0x54, 0x8F, 0xF2, 0xBB, 0x1B, | ||||
|   0x7F, 0x28, 0x84, 0x20, 0x65, 0xD5, 0x2A, 0xA6, | ||||
|   0x0D, 0x62, 0x4F, 0x2D, 0xF0, 0xAF, 0x40, 0xFD, | ||||
|   0x2E, 0xB1, 0x72, 0xCD, 0x1D, 0x9A, 0xC4, 0x71, | ||||
|   0xFD, 0x4B, 0xB6, 0x5B, 0x13, 0xDB, 0x78, 0xDD, | ||||
|   0x79, 0xC6, 0x05, 0x22, 0x14, 0x98, 0xD5, 0x10, | ||||
|   0xC5, 0x5A, 0xBE, 0x11, 0xD6, 0xC1, 0x4B, 0x39, | ||||
|   0xD1, 0x88, 0x80, 0x79, 0x86, 0xDD, 0x1F, 0x54, | ||||
|   0x87, 0x96, 0x3E, 0xDE, 0x43, 0x25, 0xB2, 0xA6, | ||||
|   0x6E, 0xD0, 0xA4, 0x69, 0x67, 0x33, 0xE1, 0xD9, | ||||
|   0x24, 0xFB, 0x67, 0xD0, 0xC9, 0x4F, 0xB4, 0x3E, | ||||
|   0x48, 0x66, 0x42, 0x64, 0x42, 0xB6, 0x49, 0x99, | ||||
|   0x0F, 0x4D, 0xCD, 0xC8, 0x1B, 0x0E, 0x1B, 0x47, | ||||
|   0x8C, 0x57, 0x2A, 0x02, 0xBA, 0x43, 0x53, 0x74, | ||||
|   0xD8, 0x74, 0x28, 0x05, 0x03, 0x16, 0x1D, 0x73, | ||||
|   0x2F, 0x22, 0x0B, 0xA4, 0xFB, 0xBC, 0xE3, 0x11, | ||||
|   0xCA, 0xAF, 0x90, 0x1F, 0xA8, 0x67, 0xE1, 0xA1, | ||||
|   0x28, 0x68, 0xA5, 0x9D, 0x32, 0x85, 0xB3, 0x53, | ||||
|   0x5E, 0x7A, 0xF4, 0xE8, 0xB1, 0x96, 0xCF, 0xB8, | ||||
|   0xAA, 0x18, 0x7C, 0xEB, 0xF9, 0x33, 0x3E, 0x95, | ||||
|   0xF6, 0xFC, 0x9A, 0x5A, 0xAC, 0x60, 0x9F, 0xC9, | ||||
|   0xB8, 0x6D, 0xA2, 0x77, 0xFA, 0x64, 0xBA, 0x7B, | ||||
|   0xB5, 0x4D, 0x60, 0x49, 0xE3, 0x28, 0x04, 0x7C, | ||||
|   0xAD, 0xA1, 0xA3, 0xB6, 0x54, 0xB4, 0xAE, 0xAE, | ||||
|   0x0E, 0xA7, 0x83, 0x48, 0x64, 0xB0, 0x52, 0x5B, | ||||
|   0x12, 0xBE, 0x36, 0x72, 0x8C, 0xAC, 0x5D, 0x30, | ||||
|   0x5C, 0xC2, 0x0F, 0x5A, 0x92, 0x95, 0x34, 0xC4, | ||||
|   0x66, 0xFF, 0x5B, 0x32, 0x97, 0x07, 0xE7, 0x06, | ||||
|   0x5B, 0x10, 0x1D, 0xF9, 0xA7, 0xDA, 0x87, 0xFD, | ||||
|   0x76, 0x79, 0xF5, 0xD1, 0xE7, 0xE8, 0xA0, 0x03, | ||||
|   0x59, 0x70, 0xE4, 0x1A, 0x34, 0x73, 0xAA, 0xB0, | ||||
|   0x6A, 0x81, 0xC8, 0x24, 0x32, 0x48, 0x9E, 0x13, | ||||
|   0x3A, 0xFB, 0x03, 0xF3, 0xFF, 0x72, 0x4F, 0xD5, | ||||
|   0xC6, 0xE5, 0xDD, 0xCA, 0x6F, 0x37, 0xB4, 0x67, | ||||
|   0x77, 0x40, 0x8F, 0x2F, 0xFE, 0xF0, 0x61, 0xE0, | ||||
|   0x94, 0x45, 0x0E, 0x53, 0x9A, 0xC5, 0xC1, 0x8E, | ||||
|   0xA1, 0xA6, 0x73, 0xD3, 0xF4, 0x73, 0x18, 0xDC, | ||||
|   0xB1, 0xF3, 0xB7, 0x9B, 0xF5, 0xFF, 0x50, 0x61, | ||||
|   0x27, 0xD5, 0x72, 0xED, 0x64, 0x9D, 0x08, 0x84, | ||||
|   0x5F, 0x6E, 0x7F, 0x6E, 0xDF, 0x77, 0x0C, 0xC0, | ||||
|   0x19, 0xDB, 0x77, 0x54, 0x00, 0x68, 0xF8, 0xA8, | ||||
|   0x66, 0xF8, 0x3E, 0xE6, 0x26, 0x32, 0x32, 0xE9, | ||||
|   0xB0, 0xB7, 0x74, 0xFD, 0xD8, 0x58, 0x58, 0x69, | ||||
|   0xB0, 0x1E, 0xD3, 0x65, 0x70, 0x23, 0x79, 0x9E, | ||||
|   0xD9, 0x34, 0x84, 0xEB, 0xB9, 0xE4, 0x49, 0xB9, | ||||
|   0xF4, 0x31, 0x05, 0x31, 0x27, 0xF0, 0x80, 0x1F, | ||||
|   0xBE, 0xD5, 0x5F, 0x1F, 0x17, 0x9D, 0x0C, 0x7B, | ||||
|   0x94, 0x3E, 0x63, 0x4C, 0xF9, 0x2F, 0x76, 0xB3, | ||||
|   0xC1, 0xEF, 0x34, 0x20, 0xA4, 0x4B, 0x5A, 0x29, | ||||
|   0xAA, 0x40, 0xA9, 0x0C, 0xF2, 0x24, 0x27, 0xE8, | ||||
|   0xF1, 0xBF, 0xDA, 0x79, 0x75, 0x75, 0xE6, 0xA1, | ||||
|   0xAB, 0xD3, 0xB5, 0xCD, 0xEA, 0x1E, 0x6A, 0x9D, | ||||
|   0x74, 0x15, 0x77, 0x8D, 0x7A, 0x5B, 0xDA, 0x2F, | ||||
|   0x76, 0x7E, 0xE9, 0xFE, 0xEA, 0x88, 0x22, 0x35, | ||||
|   0x94, 0x60, 0x31, 0x3D, 0xA9, 0x83, 0x31, 0xBB, | ||||
|   0x3E, 0xEE, 0x97, 0x21, 0x0B, 0x1D, 0x76, 0x6D, | ||||
|   0x00, 0x9A, 0x45, 0x60, 0x7E, 0x79, 0xED, 0x70, | ||||
|   0x8C, 0xB1, 0xA2, 0xA1, 0xC0, 0x63, 0x37, 0x5D | ||||
| }}; | ||||
|  | ||||
| @@ -1,260 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Microcode patch. | ||||
|  * | ||||
|  * Fam14 Microcode Patch rev 05000119 for 5020 or equivalent. | ||||
|  * | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ****************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2013, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| // Encrypt Patch code 05000119 for 5020 and equivalent | ||||
|  | ||||
| CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch05000119 = | ||||
| {{ | ||||
|   0x13, 0x20, 0x18, 0x01, 0x19, 0x01, 0x00, 0x05, | ||||
|   0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||
|   0x20, 0x50, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, | ||||
|   0x55, 0xCB, 0x7C, 0x80, 0xF6, 0x0B, 0xB5, 0xB9, | ||||
|   0xDB, 0x48, 0xC0, 0xC7, 0xC3, 0x4B, 0x3F, 0x8E, | ||||
|   0x0C, 0xFE, 0xBB, 0x19, 0x27, 0xB0, 0x67, 0xE7, | ||||
|   0x4D, 0xB6, 0xDF, 0x55, 0x39, 0x92, 0x14, 0x55, | ||||
|   0x94, 0x94, 0x8F, 0xE1, 0x58, 0xE6, 0xE3, 0x99, | ||||
|   0x34, 0x2B, 0x74, 0x74, 0xFF, 0x5E, 0x0E, 0xBF, | ||||
|   0x20, 0xE5, 0xA5, 0x5E, 0xB2, 0xE7, 0xD0, 0xC9, | ||||
|   0x78, 0x85, 0xB2, 0xE4, 0xFB, 0x48, 0x4A, 0xD9, | ||||
|   0xE2, 0x9B, 0x58, 0x9B, 0x98, 0x5D, 0x2B, 0xC2, | ||||
|   0xF1, 0xFC, 0x43, 0x76, 0x49, 0xCB, 0x9E, 0x1E, | ||||
|   0x48, 0x0B, 0xF8, 0xE6, 0x51, 0xC6, 0x25, 0xBF, | ||||
|   0x4F, 0x2D, 0x50, 0xDF, 0xC4, 0x29, 0x80, 0x44, | ||||
|   0xAA, 0x2C, 0xF1, 0x4E, 0xE0, 0x0A, 0x25, 0xF0, | ||||
|   0x43, 0x0A, 0x22, 0xD9, 0x89, 0xA2, 0x4B, 0x0A, | ||||
|   0x12, 0x4C, 0x4A, 0x27, 0xCE, 0x98, 0x60, 0xF9, | ||||
|   0x9D, 0x76, 0x95, 0x71, 0x8C, 0xFD, 0xA1, 0x86, | ||||
|   0xD6, 0x42, 0x5E, 0x9F, 0x2C, 0xE2, 0x8C, 0x69, | ||||
|   0x20, 0x14, 0xF5, 0xF5, 0x0F, 0x65, 0xDC, 0x08, | ||||
|   0xFE, 0x26, 0x9E, 0xCD, 0x07, 0x45, 0xE9, 0x4D, | ||||
|   0xA1, 0x78, 0x1C, 0x90, 0xF5, 0x9E, 0xE5, 0x78, | ||||
|   0x4F, 0x7B, 0xA7, 0x8E, 0xB6, 0x24, 0x86, 0x7E, | ||||
|   0xBC, 0x4B, 0x6C, 0x2E, 0x3B, 0xD1, 0xA4, 0x00, | ||||
|   0xCA, 0x20, 0x9E, 0x1D, 0x45, 0x41, 0x62, 0xD2, | ||||
|   0x27, 0x50, 0x9D, 0x99, 0x2B, 0xAC, 0x1D, 0x12, | ||||
|   0xC0, 0x25, 0xF3, 0x95, 0xB1, 0x0F, 0x28, 0x91, | ||||
|   0x43, 0xC6, 0x78, 0xD6, 0xBC, 0xB0, 0x06, 0x48, | ||||
|   0xAB, 0x83, 0xF9, 0x14, 0xF4, 0xF4, 0x2E, 0x7A, | ||||
|   0x7C, 0x34, 0x8B, 0x24, 0xBB, 0x20, 0xEC, 0x87, | ||||
|   0xC6, 0x6A, 0x99, 0x45, 0x94, 0xDC, 0x41, 0xB6, | ||||
|   0x7E, 0xAE, 0x63, 0x6A, 0x46, 0x9D, 0x4C, 0xC1, | ||||
|   0xA5, 0xFB, 0xC3, 0x00, 0x26, 0xE0, 0x8A, 0x79, | ||||
|   0x5B, 0x9C, 0x05, 0xD2, 0x3C, 0x05, 0x18, 0x7C, | ||||
|   0x49, 0x5A, 0xDC, 0xDD, 0xDF, 0x48, 0xD0, 0x91, | ||||
|   0x39, 0xB6, 0xD5, 0xD8, 0x91, 0x85, 0xE9, 0xFF, | ||||
|   0x25, 0x5E, 0xEF, 0x02, 0xF4, 0x7A, 0x8D, 0x58, | ||||
|   0xA3, 0x6F, 0x66, 0xCE, 0x94, 0xF9, 0xFF, 0x42, | ||||
|   0x65, 0x31, 0xA9, 0x3E, 0x04, 0x4C, 0x55, 0xF4, | ||||
|   0x57, 0xF0, 0xD6, 0x67, 0x9F, 0x5B, 0x4B, 0x18, | ||||
|   0x54, 0x5A, 0xC8, 0xC0, 0x60, 0xC1, 0xED, 0x97, | ||||
|   0x4A, 0xDC, 0x30, 0x32, 0xF3, 0x1F, 0xA4, 0x38, | ||||
|   0x8D, 0x53, 0x00, 0x91, 0xAC, 0x11, 0x72, 0x5E, | ||||
|   0xEE, 0xEB, 0x49, 0x20, 0x59, 0xB5, 0x7F, 0x5B, | ||||
|   0x91, 0xF5, 0x9C, 0x3D, 0x70, 0x6B, 0xCF, 0x19, | ||||
|   0x9F, 0xFA, 0x40, 0x50, 0x59, 0x12, 0x85, 0xFA, | ||||
|   0xB9, 0x96, 0xFB, 0x4E, 0x22, 0xDA, 0xE5, 0xFD, | ||||
|   0xDF, 0xE7, 0x58, 0x16, 0xD0, 0xD1, 0x46, 0xF6, | ||||
|   0x12, 0x27, 0x34, 0x22, 0xA3, 0x71, 0x44, 0xA0, | ||||
|   0x6E, 0x0E, 0x56, 0x81, 0xA9, 0xB4, 0x6D, 0x37, | ||||
|   0xFC, 0x67, 0x69, 0xD5, 0xC4, 0x3E, 0x70, 0x0D, | ||||
|   0x56, 0x13, 0xB2, 0xFD, 0x7D, 0x5E, 0x2E, 0x5A, | ||||
|   0xC8, 0x21, 0x6A, 0xB5, 0x61, 0x33, 0xE1, 0x2C, | ||||
|   0x23, 0xC7, 0x2B, 0x66, 0x51, 0xA4, 0x8C, 0xFA, | ||||
|   0xC9, 0xEF, 0x4D, 0x10, 0xB7, 0x86, 0xA5, 0x96, | ||||
|   0x3D, 0x58, 0x6E, 0x7E, 0x88, 0xDF, 0x3F, 0xAC, | ||||
|   0xD2, 0x15, 0x0F, 0x21, 0x89, 0x50, 0x8E, 0xA9, | ||||
|   0x99, 0xAC, 0x5B, 0xA3, 0xD8, 0xB2, 0xFC, 0x37, | ||||
|   0x6C, 0x9A, 0x1C, 0x93, 0xB0, 0x87, 0x1E, 0xA2, | ||||
|   0x3B, 0x0F, 0x2F, 0xC9, 0x72, 0xB9, 0x39, 0x3D, | ||||
|   0xB9, 0x7F, 0xCF, 0x2F, 0x79, 0xA3, 0xD9, 0x5F, | ||||
|   0xF5, 0x53, 0x70, 0x8A, 0x88, 0x67, 0xDA, 0xDC, | ||||
|   0xD4, 0xB8, 0x60, 0xFC, 0x11, 0x87, 0x5A, 0xCC, | ||||
|   0x9A, 0xB3, 0x80, 0xC8, 0x1A, 0xC8, 0xBE, 0x10, | ||||
|   0xE7, 0x3D, 0x03, 0x98, 0x1A, 0x84, 0xA9, 0x6F, | ||||
|   0x13, 0x25, 0x69, 0x0D, 0x1B, 0x58, 0x4F, 0x7D, | ||||
|   0x1C, 0xD6, 0x91, 0x96, 0xD0, 0x60, 0x03, 0xA2, | ||||
|   0xAB, 0x62, 0x3C, 0xBB, 0xB4, 0x20, 0x79, 0x54, | ||||
|   0x6D, 0x12, 0x74, 0xBA, 0x40, 0x51, 0xAC, 0x22, | ||||
|   0xE3, 0x41, 0xC5, 0xEE, 0xCE, 0x73, 0x78, 0xAC, | ||||
|   0xEB, 0x12, 0x22, 0xC6, 0x20, 0x3D, 0x7F, 0x2E, | ||||
|   0x53, 0x37, 0x62, 0x39, 0x94, 0x8A, 0xF3, 0xAD, | ||||
|   0x3A, 0xD7, 0xA6, 0x27, 0x58, 0xDC, 0x6C, 0x60, | ||||
|   0x9E, 0x9A, 0x07, 0x72, 0x38, 0xB2, 0xC2, 0xEF, | ||||
|   0xE4, 0x82, 0xC5, 0xED, 0xB0, 0xC3, 0x55, 0x0A, | ||||
|   0x30, 0xA7, 0xAB, 0x1B, 0xB4, 0xC7, 0x98, 0x25, | ||||
|   0x4B, 0xB9, 0x80, 0x3F, 0x74, 0x79, 0xD1, 0x66, | ||||
|   0x34, 0xEC, 0x4C, 0x36, 0x44, 0x57, 0x32, 0x77, | ||||
|   0x59, 0xA2, 0x8A, 0xAF, 0xE9, 0x26, 0x19, 0xAA, | ||||
|   0x5F, 0x41, 0x25, 0x58, 0x03, 0x94, 0xBA, 0xB8, | ||||
|   0x12, 0xE8, 0x0F, 0x4C, 0xF8, 0x5F, 0x10, 0xD0, | ||||
|   0xC7, 0xC1, 0x8E, 0xEE, 0x89, 0xF0, 0x2D, 0xBB, | ||||
|   0x92, 0xB6, 0xBE, 0x4E, 0xA5, 0xA7, 0x40, 0xE5, | ||||
|   0xDD, 0xDB, 0x07, 0x8B, 0x4A, 0x10, 0x38, 0x66, | ||||
|   0x35, 0xAF, 0x07, 0x7A, 0x89, 0x71, 0xAE, 0x51, | ||||
|   0x98, 0xFC, 0xC3, 0xB7, 0x32, 0x72, 0xFE, 0x47, | ||||
|   0x08, 0xA5, 0x83, 0xFB, 0x93, 0x94, 0x3E, 0x2A, | ||||
|   0x4F, 0x32, 0x00, 0xBD, 0xFE, 0x40, 0x55, 0xB0, | ||||
|   0x97, 0x1B, 0x91, 0x8D, 0x21, 0x05, 0x1B, 0xBC, | ||||
|   0x5A, 0x37, 0x17, 0x01, 0xFC, 0xB7, 0x26, 0x09, | ||||
|   0x11, 0xD5, 0x0A, 0x97, 0x20, 0xF4, 0xDC, 0x12, | ||||
|   0x5C, 0x99, 0x18, 0xAB, 0xC7, 0xC2, 0xF4, 0xD7, | ||||
|   0x10, 0x4C, 0x6B, 0x52, 0x83, 0x81, 0xBD, 0x0D, | ||||
|   0xA6, 0xA2, 0x7C, 0x0E, 0x3B, 0x4C, 0xDC, 0x62, | ||||
|   0xD9, 0xFC, 0xD6, 0xD3, 0x47, 0xD2, 0xDB, 0xFD, | ||||
|   0xE5, 0x49, 0x6C, 0x18, 0xB6, 0xA1, 0xFD, 0x74, | ||||
|   0xE3, 0xAD, 0x4D, 0x01, 0xF6, 0x7D, 0x67, 0x4E, | ||||
|   0x93, 0x24, 0x42, 0x5F, 0xB0, 0x8F, 0xF7, 0x38, | ||||
|   0xA3, 0x80, 0x8C, 0x65, 0x96, 0xB0, 0x59, 0xE8, | ||||
|   0x2F, 0x69, 0xDA, 0xA8, 0xBA, 0x34, 0xF4, 0x76, | ||||
|   0x78, 0x9C, 0x24, 0x17, 0xA8, 0xE0, 0xB2, 0x6E, | ||||
|   0xC4, 0x23, 0x3C, 0xE1, 0xC1, 0x7C, 0x5D, 0xC9, | ||||
|   0x35, 0x4B, 0xDD, 0x2C, 0x1C, 0xB2, 0xD1, 0xBE, | ||||
|   0x38, 0x87, 0xB8, 0x19, 0x6F, 0x6D, 0xE8, 0x0B, | ||||
|   0xE9, 0x14, 0x13, 0x32, 0xCD, 0x6B, 0x34, 0xE9, | ||||
|   0x7C, 0x7A, 0x03, 0xC6, 0x67, 0x84, 0x56, 0xA6, | ||||
|   0x32, 0x34, 0xED, 0x9F, 0x4B, 0x34, 0x42, 0x1D, | ||||
|   0xDF, 0x67, 0x9F, 0xBF, 0xE3, 0x98, 0xB5, 0x36, | ||||
|   0x39, 0x6D, 0x43, 0xBC, 0xA6, 0x15, 0x77, 0xB0, | ||||
|   0x72, 0x02, 0xD9, 0x70, 0xFD, 0x8F, 0xFA, 0xD5, | ||||
|   0xD1, 0x02, 0xC4, 0x2B, 0x1E, 0x76, 0x48, 0xDD, | ||||
|   0xD4, 0x88, 0x34, 0x5D, 0xCB, 0xB3, 0x32, 0x4F, | ||||
|   0x13, 0x1A, 0xEC, 0x68, 0xBC, 0xB5, 0x10, 0x26, | ||||
|   0xB0, 0x73, 0x35, 0xCB, 0x68, 0xFF, 0xEA, 0xE1, | ||||
|   0x61, 0x9B, 0x14, 0x0E, 0x2F, 0xDE, 0x16, 0x21, | ||||
|   0xDB, 0xB2, 0x95, 0xA2, 0x8A, 0x79, 0x93, 0xC5, | ||||
|   0xCB, 0xCE, 0xB5, 0x6A, 0xD4, 0x0F, 0x58, 0x33, | ||||
|   0x12, 0x2E, 0x96, 0x14, 0xEA, 0x98, 0x9D, 0x05, | ||||
|   0xCD, 0x2E, 0x5B, 0x07, 0xEB, 0xA2, 0x3C, 0x8A, | ||||
|   0x13, 0x73, 0xAC, 0x19, 0x6B, 0xCD, 0x88, 0xBA, | ||||
|   0x9E, 0x39, 0x76, 0x84, 0xE4, 0xAF, 0x6B, 0x88, | ||||
|   0x2B, 0x70, 0xE0, 0xF6, 0x83, 0x58, 0xD5, 0x14, | ||||
|   0x49, 0x8E, 0x7A, 0xF1, 0xC5, 0x68, 0x77, 0xF8, | ||||
|   0x3C, 0x8E, 0x56, 0xB6, 0xA2, 0x66, 0x7F, 0xCB, | ||||
|   0x60, 0x23, 0x75, 0xB8, 0x94, 0x5C, 0x16, 0xF5, | ||||
|   0xA6, 0x77, 0x99, 0x3D, 0x2C, 0x0D, 0x6E, 0x64, | ||||
|   0x6A, 0x03, 0xBF, 0xDE, 0xEE, 0x74, 0xF1, 0x37, | ||||
|   0x67, 0x32, 0x73, 0xBD, 0x6F, 0x7B, 0x42, 0x4A, | ||||
|   0xC0, 0x8E, 0x04, 0x69, 0xFC, 0x83, 0x91, 0x7A, | ||||
|   0xB0, 0x3B, 0x0F, 0xAB, 0xF2, 0x9F, 0xD8, 0x70, | ||||
|   0x9A, 0x23, 0xB4, 0x93, 0x55, 0x6D, 0xED, 0x76, | ||||
|   0xCB, 0xAC, 0x3B, 0xC8, 0x69, 0x37, 0x5A, 0x98, | ||||
|   0xA3, 0x54, 0x78, 0x20, 0xC2, 0xEF, 0x39, 0x27, | ||||
|   0xB1, 0x58, 0x30, 0x46, 0x95, 0x45, 0x0E, 0x7C, | ||||
|   0x28, 0xBF, 0xF7, 0xA6, 0x64, 0x8E, 0xD2, 0xA2, | ||||
|   0xA1, 0x6D, 0x1C, 0xC3, 0xA6, 0x7A, 0xCD, 0x13, | ||||
|   0x85, 0x93, 0xEB, 0xA0, 0x94, 0x19, 0x02, 0xC0, | ||||
|   0x9A, 0xFA, 0x7A, 0x2F, 0x14, 0xB9, 0xE7, 0x57, | ||||
|   0x6D, 0xFD, 0x93, 0x85, 0xBD, 0x9B, 0xEE, 0x99, | ||||
|   0x72, 0xD5, 0x08, 0x6E, 0xCE, 0xC2, 0x40, 0x5F, | ||||
|   0x4B, 0xF9, 0x9E, 0xDF, 0x92, 0xF0, 0x55, 0x2C, | ||||
|   0x4C, 0xE5, 0x43, 0x8E, 0x2C, 0x2D, 0x23, 0x23, | ||||
|   0x59, 0xAE, 0x52, 0x8D, 0x27, 0x64, 0x15, 0xF9, | ||||
|   0xFA, 0x78, 0xA6, 0x2B, 0x48, 0xE4, 0x70, 0x05, | ||||
|   0x8E, 0x44, 0x4B, 0x12, 0xC6, 0x33, 0x26, 0x2D, | ||||
|   0x5A, 0x8D, 0x1D, 0x5C, 0xE4, 0x66, 0x40, 0x92, | ||||
|   0x6B, 0xB4, 0x52, 0x49, 0x82, 0x82, 0x82, 0x8B, | ||||
|   0x71, 0x65, 0x28, 0x5C, 0x1D, 0x4A, 0x1C, 0x4A, | ||||
|   0xFA, 0xB0, 0x07, 0x2A, 0x95, 0x35, 0xBC, 0xD2, | ||||
|   0x6A, 0x69, 0x49, 0x83, 0x67, 0xB0, 0x3C, 0x7F, | ||||
|   0xB7, 0xE8, 0xA4, 0xBD, 0x2B, 0xBB, 0xB2, 0x4E, | ||||
|   0x94, 0xCB, 0xE1, 0xAC, 0x37, 0x10, 0x61, 0xC3, | ||||
|   0x37, 0x95, 0x47, 0xF5, 0x54, 0x2F, 0x90, 0x7B, | ||||
|   0xD8, 0x07, 0xF1, 0xEB, 0x60, 0x01, 0x1B, 0xF3, | ||||
|   0x81, 0x26, 0x30, 0xCA, 0x26, 0x97, 0x5B, 0x17, | ||||
|   0x82, 0xF6, 0x0C, 0x4E, 0xE9, 0xB5, 0x47, 0xD1, | ||||
|   0xC1, 0x7D, 0x37, 0x36, 0xC7, 0xAC, 0xC5, 0xC4, | ||||
|   0xE4, 0x68, 0xD6, 0x19, 0x76, 0xFD, 0xAF, 0xF6, | ||||
|   0x14, 0x68, 0x9E, 0x18, 0x06, 0xD9, 0xB1, 0x57, | ||||
|   0xCA, 0xB0, 0x77, 0x07, 0x01, 0x8E, 0x10, 0xE4, | ||||
|   0x8B, 0x69, 0xD9, 0xFC, 0xEA, 0x73, 0xC7, 0xAF, | ||||
|   0xD8, 0xB6, 0x03, 0x79, 0x64, 0x29, 0x1B, 0xEB, | ||||
|   0x7D, 0x7F, 0xA0, 0x0F, 0x81, 0x44, 0x4D, 0x40, | ||||
|   0xB8, 0x4C, 0x66, 0x70, 0x66, 0xF5, 0xB8, 0x79, | ||||
|   0xE2, 0x4E, 0xF5, 0xFD, 0x27, 0xCE, 0x73, 0x8D, | ||||
|   0x50, 0xD8, 0xC9, 0x5B, 0x11, 0xB8, 0xB4, 0xE4, | ||||
|   0x83, 0x3C, 0x83, 0x0F, 0x88, 0xBB, 0x1E, 0xFC, | ||||
|   0xF5, 0x5A, 0x92, 0x0D, 0x82, 0x96, 0x69, 0xA4, | ||||
|   0xE1, 0xF1, 0x3A, 0xBD, 0xEF, 0x23, 0x63, 0xB9, | ||||
|   0xAA, 0x83, 0x2D, 0x98, 0x73, 0xF8, 0xB6, 0x3B, | ||||
|   0xE8, 0x3A, 0x73, 0x66, 0x25, 0x8F, 0x0F, 0xAB, | ||||
|   0x96, 0x89, 0xEE, 0x49, 0xCD, 0x8B, 0x98, 0xA1, | ||||
|   0x3F, 0x04, 0x7A, 0x31, 0x53, 0x68, 0x11, 0xAD, | ||||
|   0xB6, 0x0D, 0xD2, 0x72, 0x25, 0xCC, 0x7B, 0x5F, | ||||
|   0x34, 0x3F, 0x10, 0x1E, 0x6E, 0xEE, 0x6B, 0x8B, | ||||
|   0x35, 0x0E, 0x55, 0x30, 0x0D, 0xAF, 0x8F, 0x94, | ||||
|   0x3E, 0x07, 0x2A, 0x82, 0x52, 0x08, 0xEC, 0xC9, | ||||
|   0xEB, 0x0E, 0xD8, 0x6B, 0xB0, 0xA5, 0xBE, 0x14, | ||||
|   0x1D, 0xBB, 0x8A, 0x0D, 0xF9, 0x8C, 0x25, 0x69, | ||||
|   0xDB, 0xB1, 0xC3, 0x40, 0x99, 0x9D, 0x51, 0x13, | ||||
|   0x63, 0x1C, 0x10, 0xB3, 0x92, 0x4E, 0xDF, 0x1D, | ||||
|   0xDD, 0x5B, 0x36, 0x4D, 0x1D, 0x94, 0xD4, 0xAC, | ||||
|   0x90, 0xCE, 0x3D, 0xC4, 0x12, 0x92, 0x10, 0xA7, | ||||
|   0x54, 0xEC, 0x25, 0xE6, 0x18, 0xCD, 0xF1, 0x70, | ||||
|   0x1E, 0x51, 0x7A, 0xF7, 0x1B, 0xBF, 0xDC, 0x94, | ||||
|   0x5F, 0xA3, 0x54, 0xEF, 0xFD, 0xA7, 0x8A, 0x3E, | ||||
|   0xEB, 0xE6, 0x5D, 0xFD, 0xB5, 0x3F, 0xE9, 0xDA, | ||||
|   0xEF, 0xDC, 0x1F, 0x11, 0x78, 0x66, 0xED, 0x46, | ||||
|   0xAF, 0xBD, 0xDB, 0x10, 0x16, 0x32, 0x43, 0xB9, | ||||
|   0x14, 0xDA, 0x6F, 0x77, 0x6D, 0x92, 0x4B, 0x1D, | ||||
|   0xA7, 0xC5, 0x61, 0xA7, 0xE4, 0xCC, 0x3C, 0x5F, | ||||
|   0xF7, 0x3F, 0x6D, 0x49, 0xE1, 0x18, 0x14, 0x5F, | ||||
|   0x7D, 0x92, 0xFB, 0xB9, 0x8F, 0x78, 0x11, 0x18, | ||||
|   0xB3, 0x34, 0x3E, 0x78, 0xF2, 0xFC, 0x49, 0x24 | ||||
| }}; | ||||
|  | ||||
| @@ -1,77 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Package Type Definitions | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _F14_PACKAGE_TYPE_H_ | ||||
| #define _F14_PACKAGE_TYPE_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| // Below equates are defined to cooperate with LibAmdGetPackageType. | ||||
| #define PACKAGE_TYPE_FT1_BIT                (1 << 0) | ||||
|  | ||||
| // Raw data definitions | ||||
| #define PACKAGE_TYPE_FT1                    0 | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #endif  // _F14_PACKAGE_TYPE_H_ | ||||
| @@ -1,22 +0,0 @@ | ||||
| libagesa-y += F14C6State.c | ||||
| libagesa-y += F14IoCstate.c | ||||
| libagesa-y += F14MicrocodePatch0500000B.c | ||||
| libagesa-y += F14MicrocodePatch0500001A.c | ||||
| libagesa-y += F14MicrocodePatch05000029.c | ||||
| libagesa-y += F14MicrocodePatch05000119.c | ||||
| libagesa-y += cpuCommonF14Utilities.c | ||||
| libagesa-y += cpuF14BrandId.c | ||||
| libagesa-y += cpuF14BrandIdFt1.c | ||||
| libagesa-y += cpuF14CacheDefaults.c | ||||
| libagesa-y += cpuF14Dmi.c | ||||
| libagesa-y += cpuF14LowPowerInit.c | ||||
| libagesa-y += cpuF14MsrTables.c | ||||
| libagesa-y += cpuF14PciTables.c | ||||
| libagesa-y += cpuF14PerCorePciTables.c | ||||
| libagesa-y += cpuF14PowerCheck.c | ||||
| libagesa-y += cpuF14PowerMgmtSystemTables.c | ||||
| libagesa-y += cpuF14PowerPlane.c | ||||
| libagesa-y += cpuF14Pstate.c | ||||
| libagesa-y += cpuF14SoftwareThermal.c | ||||
| libagesa-y += cpuF14Utilities.c | ||||
| libagesa-y += cpuF14WheaInitDataTables.c | ||||
| @@ -1,187 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family 14 Ontario CPB Initialization | ||||
|  * | ||||
|  * Enables core performance boost. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/0x14/ON | ||||
|  * @e \$Revision: 46389 $   @e \$Date: 2011-01-31 22:22:49 -0500 (Mon, 31 Jan 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ****************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "GnbRegistersON.h" | ||||
| #include "NbSmuLib.h" | ||||
| #include "NbSmuLib.h" | ||||
| #include "cpuFeatures.h" | ||||
| #include "cpuCpb.h" | ||||
| #include "Filecode.h" | ||||
| CODE_GROUP (G1_PEICC) | ||||
| RDATA_GROUP (G1_PEICC) | ||||
|  | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_ON_F14ONCPB_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * BSC entry point for checking whether or not CPB is supported. | ||||
|  * | ||||
|  * @param[in]  CpbServices             The current CPU's family services. | ||||
|  * @param[in]  PlatformConfig          Contains the runtime modifiable feature input data. | ||||
|  * @param[in]  Socket                  Zero based socket number to check. | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  * | ||||
|  * @retval     TRUE                    CPB is supported. | ||||
|  * @retval     FALSE                   CPB is not supported. | ||||
|  * | ||||
|  */ | ||||
| BOOLEAN | ||||
| STATIC | ||||
| F14OnIsCpbSupported ( | ||||
|   IN       CPB_FAMILY_SERVICES    *CpbServices, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       UINT32                 Socket, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   PCI_ADDR             PciAddress; | ||||
|   CPB_CTRL_REGISTER    CpbControl; | ||||
|   CPU_LOGICAL_ID CpuFamilyRevision; | ||||
|  | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|   if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) != 0) { | ||||
|     return FALSE; | ||||
|   } else { | ||||
|     PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &CpbControl, StdHeader); | ||||
|     return (BOOLEAN) (CpbControl.NumBoostStates != 0); | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * BSC entry point for enabling Core Performance Boost. | ||||
|  * | ||||
|  * Set up D18F4x15C[BoostSrc] and start the PDMs according to the BKDG. | ||||
|  * | ||||
|  * @param[in]  CpbServices             The current CPU's family services. | ||||
|  * @param[in]  PlatformConfig          Contains the runtime modifiable feature input data. | ||||
|  * @param[in]  EntryPoint              Current CPU feature dispatch point. | ||||
|  * @param[in]  Socket                  Zero based socket number to check. | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  * | ||||
|  * @retval     AGESA_SUCCESS           Always succeeds. | ||||
|  * | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| STATIC | ||||
| F14OnInitializeCpb ( | ||||
|   IN       CPB_FAMILY_SERVICES    *CpbServices, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       UINT64                 EntryPoint, | ||||
|   IN       UINT32                 Socket, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   PCI_ADDR             PciAddress; | ||||
|   CPB_CTRL_REGISTER    CpbControl; | ||||
|   LPMV_SCALAR2_REGISTER  LpmvScalar2; | ||||
|   SMUx0B_x8580_STRUCT  SMUx0Bx8580; | ||||
|  | ||||
|   if ((EntryPoint & CPU_FEAT_BEFORE_PM_INIT) != 0) { | ||||
|     // F4x14C [25:24] ApmCstExtPol = 1 | ||||
|     PciAddress.AddressValue = LPMV_SCALAR2_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &LpmvScalar2, StdHeader); | ||||
|     LpmvScalar2.ApmCstExtPol = 1; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &LpmvScalar2, StdHeader); | ||||
|     // F4x15C [1:0] BoostSrc = 1 | ||||
|     // F4x15C [29] BoostEnAllCores = 1 | ||||
|     PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &CpbControl, StdHeader); | ||||
|     CpbControl.BoostSrc = 1; | ||||
|     CpbControl.BoostEnAllCores = 1; | ||||
|     IDS_OPTION_HOOK (IDS_CPB_CTRL, &CpbControl, StdHeader); | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &CpbControl, StdHeader); | ||||
|   } else if ((EntryPoint & CPU_FEAT_INIT_LATE_END) != 0) { | ||||
|     // Ensure that the recommended settings have been programmed into SMUx0B_x8580, then | ||||
|     // interrupt the SMU with service index 12h. | ||||
|     NbSmuRcuRegisterRead (SMUx0B_x8580_ADDRESS, &SMUx0Bx8580.Value, 1, StdHeader); | ||||
|     SMUx0Bx8580.Field.PdmPeriod = 0x1388; | ||||
|     SMUx0Bx8580.Field.PdmParamLoc = 0; | ||||
|     SMUx0Bx8580.Field.PdmCacEn = 1; | ||||
|     SMUx0Bx8580.Field.PdmUnit = 1; | ||||
|     SMUx0Bx8580.Field.PdmEn = 1; | ||||
|     NbSmuRcuRegisterWrite (SMUx0B_x8580_ADDRESS, &SMUx0Bx8580.Value, 1, TRUE, StdHeader); | ||||
|     NbSmuServiceRequest (0x12, TRUE, StdHeader); | ||||
|   } | ||||
|  | ||||
|   return AGESA_SUCCESS; | ||||
| } | ||||
|  | ||||
| CONST CPB_FAMILY_SERVICES ROMDATA F14OnCpbSupport = | ||||
| { | ||||
|   0, | ||||
|   F14OnIsCpbSupported, | ||||
|   F14OnInitializeCpb | ||||
| }; | ||||
| @@ -1,135 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Ontario Equivalence Table related data | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/0x14 | ||||
|  * @e \$Revision: 48589 $   @e \$Date: 2011-03-10 09:27:00 -0700 (Thu, 10 Mar 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "Filecode.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuRegisters.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_ON_F14ONEQUIVALENCETABLE_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14OnMicrocodeEquivalenceTable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **OnEquivalenceTablePtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| STATIC CONST UINT16 ROMDATA CpuF14MicrocodeEquivalenceTable[] = | ||||
| { | ||||
|   0x5000, 0x5000, | ||||
|   0x5001, 0x5001, | ||||
|   0x5010, 0x5010, | ||||
|   0x5020, 0x5020 | ||||
| }; | ||||
|  | ||||
| // Unencrypted equivalent | ||||
| STATIC CONST UINT16 ROMDATA CpuF14UnEncryptedMicrocodeEquivalenceTable[] = | ||||
| { | ||||
|   0x5000, 0x5800, | ||||
|   0x5001, 0x5801, | ||||
|   0x5010, 0x5810, | ||||
|   0x5020, 0x5820 | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns the appropriate microcode patch equivalent ID table. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  OnEquivalenceTablePtr    Points to the first entry in the table. | ||||
|  *  @param[out]  NumberOfElements         Number of valid entries in the table. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14OnMicrocodeEquivalenceTable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **OnEquivalenceTablePtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 MsrMeCfg; | ||||
|  | ||||
|   LibAmdMsrRead (MSR_ME_CFG, &MsrMeCfg, StdHeader); | ||||
|   if ((MsrMeCfg & 0x1000) == 0) { | ||||
|     *NumberOfElements = ((sizeof (CpuF14UnEncryptedMicrocodeEquivalenceTable) / sizeof (UINT16)) / 2); | ||||
|     *OnEquivalenceTablePtr = CpuF14UnEncryptedMicrocodeEquivalenceTable; | ||||
|   } else { | ||||
|     *NumberOfElements = ((sizeof (CpuF14MicrocodeEquivalenceTable) / sizeof (UINT16)) / 2); | ||||
|     *OnEquivalenceTablePtr = CpuF14MicrocodeEquivalenceTable; | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -1,317 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Implements the workaround for encrypted microcode patch loading. | ||||
|  * | ||||
|  * Returns the table of initialization steps to perform at | ||||
|  * AmdInitEarly. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14/ON | ||||
|  * @e \$Revision: 39275 $   @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuEarlyInit.h" | ||||
| #include "GnbRegistersON.h" | ||||
| #include "F14OnInitEarlyTable.h" | ||||
| #include "OptionFamily14hEarlySample.h" | ||||
| #include "GeneralServices.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_ON_F14ONINITEARLYTABLE_FILECODE | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| // Field Data | ||||
| #define D18F4x164_FixedErrata_0_OFFSET                          0 | ||||
| #define D18F4x164_FixedErrata_0_WIDTH                           1 | ||||
| #define D18F4x164_FixedErrata_0_MASK                            0x00000001 | ||||
| #define D18F4x164_Reserved_31_1_OFFSET                          1 | ||||
| #define D18F4x164_Reserved_31_1_WIDTH                           31 | ||||
| #define D18F4x164_Reserved_31_1_MASK                            0xFFFFFFFE | ||||
|  | ||||
| extern F14_ES_CORE_SUPPORT F14EarlySampleCoreSupport; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U  R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U  N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| GetF14OnEarlyInitOnCoreTable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES                *FamilyServices, | ||||
|      OUT   CONST S_PERFORM_EARLY_INIT_ON_CORE   **Table, | ||||
|   IN       AMD_CPU_EARLY_PARAMS                 *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS                    *StdHeader | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| F14OnLoadMicrocodePatchAtEarly ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilyServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS   *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| F14OnProductionErrataAtEarly ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilyServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS   *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern F_PERFORM_EARLY_INIT_ON_CORE McaInitializationAtEarly; | ||||
| extern F_PERFORM_EARLY_INIT_ON_CORE SetRegistersFromTablesAtEarly; | ||||
| extern F_PERFORM_EARLY_INIT_ON_CORE SetBrandIdRegistersAtEarly; | ||||
| extern F_PERFORM_EARLY_INIT_ON_CORE LocalApicInitializationAtEarly; | ||||
|  | ||||
| CONST S_PERFORM_EARLY_INIT_ON_CORE ROMDATA F14OnEarlyInitOnCoreTable[] = | ||||
| { | ||||
|   {McaInitializationAtEarly,       PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {SetRegistersFromTablesAtEarly,  PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {SetBrandIdRegistersAtEarly,     PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {LocalApicInitializationAtEarly, PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {F14OnLoadMicrocodePatchAtEarly, PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {F14NbBufferAllocationAtEarly,   PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {F14OnProductionErrataAtEarly,   PERFORM_EARLY_ANY_CONDITION}, | ||||
|   {NULL, 0} | ||||
| }; | ||||
|  | ||||
| /*------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Initializer routine that may be invoked at AmdCpuEarly to return the steps that a | ||||
|  * processor that uses the standard initialization steps should take. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_GET_EARLY_INIT_TABLE}. | ||||
|  * | ||||
|  * @param[in]       FamilyServices    The current Family Specific Services. | ||||
|  * @param[out]      Table             Table of appropriate init steps for the executing core. | ||||
|  * @param[in]       EarlyParams       Service Interface structure to initialize. | ||||
|  * @param[in]       StdHeader         Opaque handle to standard config header. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14OnEarlyInitOnCoreTable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES                *FamilyServices, | ||||
|      OUT   CONST S_PERFORM_EARLY_INIT_ON_CORE   **Table, | ||||
|   IN       AMD_CPU_EARLY_PARAMS                 *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS                    *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *Table = F14OnEarlyInitOnCoreTable; | ||||
|  | ||||
|   F14EarlySampleCoreSupport.F14GetEarlyInitTableHook ((const VOID **)Table, StdHeader); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Update microcode patch in current processor for Family14h ON. | ||||
|  * | ||||
|  * This function acts as a wrapper for calling the LoadMicrocodePatch | ||||
|  * routine at AmdInitEarly. | ||||
|  * | ||||
|  *  @param[in]   FamilyServices      The current Family Specific Services. | ||||
|  *  @param[in]   EarlyParams         Service parameters. | ||||
|  *  @param[in]   StdHeader           Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14OnLoadMicrocodePatchAtEarly ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilyServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS   *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 MsrValue; | ||||
|  | ||||
|   AGESA_TESTPOINT (TpProcCpuLoadUcode, StdHeader); | ||||
|   // To load a microcode patch while using the cache as general storage, | ||||
|   // the following steps are followed: | ||||
|   // 1. Program MSRC001_102B[L2AllocDcFlushVictim]=1. | ||||
|   // 2. Load the microcode patch. | ||||
|   // 3. Program MSRC001_102B[L2AllocDcFlushVictim]=0. | ||||
|   LibAmdMsrRead (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
|   MsrValue = MsrValue | BIT7; | ||||
|   LibAmdMsrWrite (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
|  | ||||
|   LoadMicrocodePatch (StdHeader); | ||||
|  | ||||
|   LibAmdMsrRead (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
|   MsrValue = MsrValue & ~((UINT64)BIT7); | ||||
|   LibAmdMsrWrite (MSR_BU_CFG3, &MsrValue, StdHeader); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * North bridge bufer allocation for Family14h ON. | ||||
|  * | ||||
|  * This function programs North bridge buffer allocation registers and provides | ||||
|  * hook routine for override at AmdInitEarly. | ||||
|  * | ||||
|  *  @param[in]   FamilyServices      The current Family Specific Services. | ||||
|  *  @param[in]   EarlyParams         Service parameters. | ||||
|  *  @param[in]   StdHeader           Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14NbBufferAllocationAtEarly ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilyServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS   *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   //Buffer allocations cannot be decreased through software, so move these register setting from register table | ||||
|   //to here to make IDS easy override | ||||
|   NB_BUFFER_ALLOCATION NbBufAllocation; | ||||
|   PCI_ADDR PciAddr; | ||||
|   AGESA_STATUS Ignored; | ||||
|  | ||||
|   if (IsBsp (StdHeader, &Ignored)) { | ||||
|     PciAddr.AddressValue = MAKE_SBDFO (0, 0, 24, FUNC_3, D18F3x6C_ADDRESS); | ||||
|     LibAmdPciRead (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x6C.Value, StdHeader); | ||||
|     PciAddr.Address.Register = D18F3x74_ADDRESS; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x74.Value, StdHeader); | ||||
|     PciAddr.Address.Register = D18F3x7C_ADDRESS; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x7C.Value, StdHeader); | ||||
|     PciAddr.Address.Register = D18F3x17C_ADDRESS; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x17C.Value, StdHeader); | ||||
|     //Recommend value for NB buffer allocation | ||||
|     // D18F3x6C - Upstream Data Buffer Count | ||||
|     // bits[3:0]   UpLoPreqDBC = 0x0E | ||||
|     // bits[7:4]   UpLoNpReqDBC = 1 | ||||
|     // bits[11:8]  UpLoRespDBC = 1 | ||||
|     // bits[19:16] UpHiPreqDBC = 0 | ||||
|     // bits[23:20] UpHiNpReqDBC = 0 | ||||
|     NbBufAllocation.D18F3x6C.Field.UpLoPreqDBC = 0x0E; | ||||
|     NbBufAllocation.D18F3x6C.Field.UpLoNpreqDBC = 1; | ||||
|     NbBufAllocation.D18F3x6C.Field.UpLoRespDBC = 1; | ||||
|     NbBufAllocation.D18F3x6C.Field.UpHiPreqDBC = 0; | ||||
|     NbBufAllocation.D18F3x6C.Field.UpHiNpreqDBC = 0; | ||||
|  | ||||
|     // D18F3x74 - Upstream Command Buffer Count | ||||
|     // bits[3:0]   UpLoPreqCBC = 7 | ||||
|     // bits[7:4]   UpLoNpreqCBC = 9 | ||||
|     // bits[11:8]  UpLoRespCBC = 8 | ||||
|     // bits[19:16] UpHiPreqCBC = 0 | ||||
|     // bits[23:20] UpHiNpreqCBC = 0 | ||||
|     NbBufAllocation.D18F3x74.Field.UpLoPreqCBC = 7; | ||||
|     NbBufAllocation.D18F3x74.Field.UpLoNpreqCBC = 9; | ||||
|     NbBufAllocation.D18F3x74.Field.UpLoRespCBC = 8; | ||||
|     NbBufAllocation.D18F3x74.Field.UpHiPreqCBC = 0; | ||||
|     NbBufAllocation.D18F3x74.Field.UpHiNpreqCBC = 0; | ||||
|  | ||||
|     // D18F3x7C - In-Flight Queue Buffer Allocation | ||||
|     // bits[5:0]  CpuBC = 1 | ||||
|     // bits[13:8] LoPriPBC = 1 | ||||
|     // bits[21:16] LoPriNPBC = 1 | ||||
|     // bits[29:24] FreePoolBC = 0x19 | ||||
|     NbBufAllocation.D18F3x7C.Field.CpuBC = 1; | ||||
|     NbBufAllocation.D18F3x7C.Field.LoPriPBC = 1; | ||||
|     NbBufAllocation.D18F3x7C.Field.LoPriNPBC = 1; | ||||
|     NbBufAllocation.D18F3x7C.Field.FreePoolBC = 0x19; | ||||
|  | ||||
|     // D18F3x17C - In-Flight Queue Extended Buffer Allocation | ||||
|     // bits[5:0]  HiPriPBC = 0 | ||||
|     // bits[13:8] HiPriNPBC = 0 | ||||
|     NbBufAllocation.D18F3x17C.Field.HiPriPBC = 0; | ||||
|     NbBufAllocation.D18F3x17C.Field.HiPriNPBC = 0; | ||||
|  | ||||
|     IDS_OPTION_HOOK (IDS_NBBUFFERALLOCATIONATEARLY, &NbBufAllocation, StdHeader); | ||||
|  | ||||
|     PciAddr.AddressValue = MAKE_SBDFO (0, 0, 24, FUNC_3, D18F3x6C_ADDRESS); | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x6C.Value, StdHeader); | ||||
|     PciAddr.Address.Register = D18F3x74_ADDRESS; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x74.Value, StdHeader); | ||||
|     PciAddr.Address.Register = D18F3x7C_ADDRESS; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x7C.Value, StdHeader); | ||||
|     PciAddr.Address.Register = D18F3x17C_ADDRESS; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddr, &NbBufAllocation.D18F3x17C.Value, StdHeader); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Production Erratum for Family14h ON. | ||||
|  * | ||||
|  * This function implements production errata for Family14h ON. | ||||
|  * routine at AmdInitEarly. | ||||
|  * | ||||
|  *  @param[in]   FamilyServices      The current Family Specific Services. | ||||
|  *  @param[in]   EarlyParams         Service parameters. | ||||
|  *  @param[in]   StdHeader           Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14OnProductionErrataAtEarly ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilyServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS   *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   CPU_LOGICAL_ID  LogicalId; | ||||
|   PCI_ADDR        PciAddr; | ||||
|   UINT32          PciData; | ||||
|   UINT64          MsrValue; | ||||
|  | ||||
|   GetLogicalIdOfCurrentCore (&LogicalId, StdHeader); | ||||
|   PciAddr.AddressValue = MAKE_SBDFO (0, 0, 24, FUNC_4, D18F4x164_ADDRESS); | ||||
|   LibAmdPciRead (AccessWidth32, PciAddr, &PciData, StdHeader); | ||||
|   if (((PciData & D18F4x164_FixedErrata_0_MASK) == 1) && | ||||
|       ((LogicalId.Revision & ~(AMD_F14_ON_Ax | AMD_F14_UNKNOWN)) != 0)) { | ||||
|     // Program MSRC001_1020[18] = 1 only when D18F4x164[0] == 1 on ON B0 and later parts. | ||||
|     LibAmdMsrRead (MSR_LS_CFG, &MsrValue, StdHeader); | ||||
|     MsrValue = MsrValue | BIT18; | ||||
|     LibAmdMsrWrite (MSR_LS_CFG, &MsrValue, StdHeader); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -1,69 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * Implements the workaround for encrypted microcode patch loading. | ||||
|  * | ||||
|  * Returns the table of initialization steps to perform at | ||||
|  * AmdInitEarly. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14/ON | ||||
|  * @e \$Revision: 37004 $   @e \$Date: 2010-08-28 02:23:00 +0800 (Sat, 28 Aug 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| F14NbBufferAllocationAtEarly ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilyServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS   *EarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
|  | ||||
| /// define NB buffer allocation setting | ||||
| typedef struct _NB_BUFFER_ALLOCATION { | ||||
|   D18F3x6C_STRUCT D18F3x6C; ///< reg for D18F3x6C | ||||
|   D18F3x74_STRUCT D18F3x74; ///< reg for D18F3x74 | ||||
|   D18F3x7C_STRUCT D18F3x7C; ///< reg for D18F3x7C | ||||
|   D18F3x17C_STRUCT D18F3x17C; ///< reg for D18F3x17C | ||||
| } NB_BUFFER_ALLOCATION; | ||||
|  | ||||
| /// enum for ON Erratum 463 wrokaround | ||||
| typedef enum { | ||||
|   ON_ERRATUM463_WORKAROUND_DISABLE = 0, ///< work around disable | ||||
|   ON_ERRATUM463_WORKAROUND_ENABLE = 1, ///< work around enable | ||||
| } ON_ERRATUM463_WORKAROUND; | ||||
|  | ||||
| @@ -1,114 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Ontario Logical ID Table | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14 | ||||
|  * @e \$Revision: 36248 $   @e \$Date: 2010-08-16 16:15:26 +0800 (Mon, 16 Aug 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_ON_F14ONLOGICALIDTABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14OnLogicalIdAndRev ( | ||||
|      OUT   CONST CPU_LOGICAL_ID_XLAT **OnIdPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|      OUT   UINT64 *LogicalFamily, | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| STATIC CONST CPU_LOGICAL_ID_XLAT ROMDATA CpuF14OnLogicalIdAndRevArray[] = | ||||
| { | ||||
|   { | ||||
|     0x5000, | ||||
|     AMD_F14_ON_A0 | ||||
|   }, | ||||
|   { | ||||
|     0x5001, | ||||
|     AMD_F14_ON_A1 | ||||
|   }, | ||||
|   { | ||||
|     0x5010, | ||||
|     AMD_F14_ON_B0 | ||||
|   }, | ||||
|   { | ||||
|     0x5020, | ||||
|     AMD_F14_ON_C0 | ||||
|   } | ||||
| }; | ||||
|  | ||||
| VOID | ||||
| GetF14OnLogicalIdAndRev ( | ||||
|      OUT   CONST CPU_LOGICAL_ID_XLAT **OnIdPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|      OUT   UINT64 *LogicalFamily, | ||||
|   IN OUT   AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *NumberOfElements = (sizeof (CpuF14OnLogicalIdAndRevArray) / sizeof (CPU_LOGICAL_ID_XLAT)); | ||||
|   *OnIdPtr = CpuF14OnLogicalIdAndRevArray; | ||||
|   *LogicalFamily = AMD_FAMILY_14_ON; | ||||
| } | ||||
|  | ||||
| @@ -1,110 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Ontario PCI tables with values as defined in BKDG | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/0x10 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_ON_F14ONMICROCODEPATCHTABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern CONST MICROCODE_PATCHES ROMDATA *CpuF14OnMicroCodePatchArray[]; | ||||
| extern CONST UINT8 ROMDATA CpuF14OnNumberOfMicrocodePatches; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14OnMicroCodePatchesStruct ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **OnUcodePtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns a table containing the appropriate microcode patches. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  OnUcodePtr               Points to the first entry in the table. | ||||
|  *  @param[out]  NumberOfElements         Number of valid entries in the table. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14OnMicroCodePatchesStruct ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **OnUcodePtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *NumberOfElements = CpuF14OnNumberOfMicrocodePatches; | ||||
|   *OnUcodePtr = &CpuF14OnMicroCodePatchArray[0]; | ||||
| } | ||||
|  | ||||
| @@ -1,105 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Ontario PCI tables with values as defined in BKDG | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14/ON | ||||
|  * @e \$Revision: 46389 $   @e \$Date: 2011-01-31 22:22:49 -0500 (Mon, 31 Jan 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ****************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "Table.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_ON_F14ONPCITABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| //  P C I    T a b l e s | ||||
| // ---------------------- | ||||
|  | ||||
| STATIC CONST TABLE_ENTRY_FIELDS ROMDATA F14OnPciRegisters[] = | ||||
| { | ||||
| // Function 4 | ||||
|  | ||||
| // D18F4x104 - TDP Lock Accumulator | ||||
| // bits[1:0]   TdpLockDivVal = 1 | ||||
| // bits[13:2]  TdpLockDivRate = 0x190 | ||||
| // bits[16:15] TdpLockDivValCpu = 1 | ||||
| // bits[28:17] TdpLockDivRateCpu = 0x190 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ON_Cx                       // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x104),  // Address | ||||
|       0x03208641,                           // regData | ||||
|       0x1FFFBFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| CONST REGISTER_TABLE ROMDATA F14OnPciRegisterTable = { | ||||
|   PrimaryCores, | ||||
|   (sizeof (F14OnPciRegisters) / sizeof (TABLE_ENTRY_FIELDS)), | ||||
|   F14OnPciRegisters, | ||||
| }; | ||||
| @@ -1,6 +0,0 @@ | ||||
| libagesa-y += F14OnCpb.c | ||||
| libagesa-y += F14OnEquivalenceTable.c | ||||
| libagesa-y += F14OnInitEarlyTable.c | ||||
| libagesa-y += F14OnLogicalIdTables.c | ||||
| libagesa-y += F14OnMicrocodePatchTables.c | ||||
| libagesa-y += F14OnPciTables.c | ||||
| @@ -1,539 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 specific utility functions. | ||||
|  * | ||||
|  * Provides numerous utility functions specific to family 10h. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 39275 $   @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuCommonF14Utilities.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "OptionFamily14hEarlySample.h" | ||||
| #include "NbSmuLib.h" | ||||
| #include "GnbRegistersON.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUCOMMONF14UTILITIES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern F14_ES_CORE_SUPPORT F14EarlySampleCoreSupport; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| CONST UINT16 ROMDATA F14MaxNbFreqAtMinVidFreqTable[] = | ||||
| { | ||||
|   25,         // 00000b | ||||
|   50,         // 00001b | ||||
|   100,        // 00010b | ||||
|   150,        // 00011b | ||||
|   167,        // 00100b | ||||
|   183,        // 00101b | ||||
|   200,        // 00110b | ||||
|   217,        // 00111b | ||||
|   233,        // 01000b | ||||
|   250,        // 01001b | ||||
|   267,        // 01010b | ||||
|   283,        // 01011b | ||||
|   300,        // 01100b | ||||
|   317,        // 01101b | ||||
|   333,        // 01110b | ||||
|   350,        // 01111b | ||||
|   366,        // 10000b | ||||
|   383,        // 10001b | ||||
|   400,        // 10010b | ||||
|   417,        // 10011b | ||||
|   433,        // 10100b | ||||
|   450,        // 10101b | ||||
|   467,        // 10110b | ||||
|   483,        // 10111b | ||||
|   500,        // 11000b | ||||
|   517,        // 11001b | ||||
|   533,        // 11010b | ||||
|   550,        // 11011b | ||||
|   563,        // 11100b | ||||
|   575,        // 11101b | ||||
|   588,        // 11110b | ||||
|   600         // 11111b | ||||
| }; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| UINT32 | ||||
| F14GetApCoreNumber ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| CORE_ID_POSITION | ||||
| F14CpuAmdCoreIdPositionInInitialApicId ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| UINT32 | ||||
| STATIC | ||||
| RoundedDivision ( | ||||
|   IN       UINT32 Dividend, | ||||
|   IN       UINT32 Divisor | ||||
|   ); | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Set warm reset status and count | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_SET_WARM_RESET_FLAG}. | ||||
|  * | ||||
|  *  This function will use bit9, and bit 10 of register F0x6C as a warm reset status and count. | ||||
|  * | ||||
|  *  @param[in]  FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[in]  StdHeader                Handle of Header for calling lib functions and services. | ||||
|  *  @param[in]  Request                  Indicate warm reset status | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14SetAgesaWarmResetFlag ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN       WARM_RESET_REQUEST *Request | ||||
|   ) | ||||
| { | ||||
|   PCI_ADDR  PciAddress; | ||||
|   UINT32    PciData; | ||||
|  | ||||
|   PciAddress.AddressValue = MAKE_SBDFO (0, 0 , PCI_DEV_BASE, FUNC_0, HT_INIT_CTRL); | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciData, StdHeader); | ||||
|  | ||||
|   // bit[5] - indicate a warm reset is or is not required | ||||
|   PciData &= ~(HT_INIT_BIOS_RST_DET_0); | ||||
|   PciData = PciData | (Request->RequestBit << 5); | ||||
|  | ||||
|   // bit[10,9] - indicate warm reset status and count | ||||
|   PciData &= ~(HT_INIT_BIOS_RST_DET_1 | HT_INIT_BIOS_RST_DET_2); | ||||
|   PciData |= Request->StateBits << 9; | ||||
|  | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &PciData, StdHeader); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Get warm reset status and count | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_WARM_RESET_FLAG}. | ||||
|  * | ||||
|  *  This function will bit9, and bit 10 of register F0x6C as a warm reset status and count. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[in]   StdHeader                Config handle for library and services | ||||
|  *  @param[out]  Request                  Indicate warm reset status | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14GetAgesaWarmResetFlag ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|      OUT   WARM_RESET_REQUEST *Request | ||||
|   ) | ||||
| { | ||||
|   PCI_ADDR  PciAddress; | ||||
|   UINT32    PciData; | ||||
|  | ||||
|   PciAddress.AddressValue = MAKE_SBDFO (0, 0 , PCI_DEV_BASE, FUNC_0, HT_INIT_CTRL); | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciData, StdHeader); | ||||
|  | ||||
|   // bit[5] - indicate a warm reset is or is not required | ||||
|   Request->RequestBit = (UINT8) ((PciData & HT_INIT_BIOS_RST_DET_0) >> 5); | ||||
|   // bit[10,9] - indicate warm reset status and count | ||||
|   Request->StateBits = (UINT8) ((PciData & (HT_INIT_BIOS_RST_DET_1 | HT_INIT_BIOS_RST_DET_2)) >> 9); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Use the Mailbox Register to get the Ap Mailbox info for the current core. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE}. | ||||
|  * | ||||
|  *  Access the mailbox register used with this NB family.  This is valid until the | ||||
|  *  point that some init code initializes the mailbox register for its normal use. | ||||
|  * | ||||
|  *  @param[in]     FamilySpecificServices  The current Family Specific Services. | ||||
|  *  @param[out]    ApMailboxInfo           The AP Mailbox info | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14GetApMailboxFromHardware ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|      OUT   AP_MAILBOXES           *ApMailboxInfo, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   // For Family 14h, we will return socket 0, node 0, module 0, module type 0, and 0 for | ||||
|   // the system degree | ||||
|   ApMailboxInfo->ApMailInfo.Info = (UINT32) 0x00000000; | ||||
|   ApMailboxInfo->ApMailExtInfo.Info = (UINT32) 0x00000000; | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Get this AP's system core number from hardware. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_AP_CORE_NUMBER}. | ||||
|  * | ||||
|  *  Returns the system core number.  For family 14h, this is simply the | ||||
|  *  initial APIC ID. | ||||
|  * | ||||
|  *  @param[in]     FamilySpecificServices  The current Family Specific Services. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  *  @return        The AP's unique core number | ||||
|  */ | ||||
| UINT32 | ||||
| F14GetApCoreNumber ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   CPUID_DATA Cpuid; | ||||
|  | ||||
|   LibAmdCpuidRead (0x1, &Cpuid, StdHeader); | ||||
|   return ((Cpuid.EBX_Reg >> 24) & 0xFF); | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Return a number zero or one, based on the Core ID position in the initial APIC Id. | ||||
|  * | ||||
|  * @CpuServiceMethod{::F_CORE_ID_POSITION_IN_INITIAL_APIC_ID}. | ||||
|  * | ||||
|  * @param[in]     FamilySpecificServices  The current Family Specific Services. | ||||
|  * @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  * @retval        CoreIdPositionZero      Core Id is not low | ||||
|  * @retval        CoreIdPositionOne       Core Id is low | ||||
|  */ | ||||
| CORE_ID_POSITION | ||||
| F14CpuAmdCoreIdPositionInInitialApicId ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   return (CoreIdPositionOne); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Sets up a valid set of NB P-states based on the value of MEMCLK, transitions | ||||
|  * to the desired NB P-state, and returns the current NB frequency in megahertz. | ||||
|  * | ||||
|  * @param[in]     TargetMemclk            The target MEMCLK in megahertz, or zero to | ||||
|  *                                        indicate NB P-state change only. | ||||
|  * @param[in]     TargetMemclkEncoded     The target MEMCLK's register encoding. | ||||
|  * @param[in]     TargetNbPstate          The NB P-state to exit in. | ||||
|  * @param[in]     CurrentNbFreq           Current NB operating frequency in megahertz. | ||||
|  * @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  * @retval        TRUE                    Transition to TargetNbPstate was successful. | ||||
|  * @retval        FALSE                   Transition to TargetNbPstate was unsuccessful. | ||||
|  */ | ||||
| BOOLEAN | ||||
| F14NbPstateInit ( | ||||
|   IN       UINT32             TargetMemclk, | ||||
|   IN       UINT32             TargetMemclkEncoded, | ||||
|   IN       UINT32             TargetNbPstate, | ||||
|      OUT   UINT32             *CurrentNbFreq, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32                EncodedNbPs1Vid; | ||||
|   UINT32                EncodedNbPs0NclkDiv; | ||||
|   UINT32                EncodedNbPs1NclkDiv; | ||||
|   UINT32                NbP0Cof; | ||||
|   UINT32                NbP1Cof; | ||||
|   UINT32                NbPstateNumerator; | ||||
|   UINT32                TargetNumerator; | ||||
|   UINT32                TargetDenominator; | ||||
|   BOOLEAN               ReturnStatus; | ||||
|   BOOLEAN               WaitForTransition; | ||||
|   PCI_ADDR              PciAddress; | ||||
|   D18F3xD4_STRUCT       Cptc0; | ||||
|   D18F3xDC_STRUCT       Cptc2; | ||||
|   D18F6x90_STRUCT       NbPsCfgLow; | ||||
|   D18F6x98_STRUCT       NbPsCtrlSts; | ||||
|   FCRxFE00_6000_STRUCT  FCRxFE00_6000; | ||||
|   FCRxFE00_6002_STRUCT  FCRxFE00_6002; | ||||
|   FCRxFE00_7006_STRUCT  FCRxFE00_7006; | ||||
|   FCRxFE00_7009_STRUCT  FCRxFE00_7009; | ||||
|  | ||||
|   // F14 only supports NB P0 and NB P1 | ||||
|   ASSERT (TargetNbPstate < 2); | ||||
|  | ||||
|   WaitForTransition = FALSE; | ||||
|   ReturnStatus = TRUE; | ||||
|  | ||||
|   // Get D18F3xD4[MainPllOpFreqId] frequency | ||||
|   PciAddress.AddressValue = CPTC0_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &Cptc0.Value, StdHeader); | ||||
|  | ||||
|   // Calculate the numerator to be used for NB P-state calculations | ||||
|   NbPstateNumerator = (UINT32) (4 * ((Cptc0.Field.MainPllOpFreqId + 0x10) * 100)); | ||||
|  | ||||
|   if (TargetMemclk != 0) { | ||||
|     // Determine the appropriate numerator / denominator of the target memclk | ||||
|     switch (TargetMemclk) { | ||||
|     case DDR800_FREQUENCY: | ||||
|       TargetNumerator = 400; | ||||
|       TargetDenominator = 1; | ||||
|       break; | ||||
|     case DDR1066_FREQUENCY: | ||||
|       TargetNumerator = 1600; | ||||
|       TargetDenominator = 3; | ||||
|       break; | ||||
|     case DDR1333_FREQUENCY: | ||||
|       TargetNumerator = 2000; | ||||
|       TargetDenominator = 3; | ||||
|       break; | ||||
|     default: | ||||
|       // An invalid memclk has been passed in. | ||||
|       ASSERT (FALSE); | ||||
|       TargetNumerator = TargetMemclk; | ||||
|       TargetDenominator = 1; | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     FCRxFE00_6000.Value = NbSmuReadEfuse (FCRxFE00_6000_ADDRESS, StdHeader); | ||||
|     FCRxFE00_6002.Value = NbSmuReadEfuse (FCRxFE00_6002_ADDRESS, StdHeader); | ||||
|     FCRxFE00_7006.Value = NbSmuReadEfuse (FCRxFE00_7006_ADDRESS, StdHeader); | ||||
|     FCRxFE00_7009.Value = NbSmuReadEfuse (FCRxFE00_7009_ADDRESS, StdHeader); | ||||
|  | ||||
|     F14EarlySampleCoreSupport.F14NbPstateInitHook (&FCRxFE00_6000, | ||||
|                                                    &FCRxFE00_6002, | ||||
|                                                    &FCRxFE00_7006, | ||||
|                                                    &FCRxFE00_7009, | ||||
|                                                    NbPstateNumerator, | ||||
|                                                    StdHeader); | ||||
|  | ||||
|     // Determine NB P0 settings | ||||
|     if ((TargetNumerator * FCRxFE00_7009.Field.NbPs0NclkDiv) < (NbPstateNumerator * TargetDenominator)) { | ||||
|       // Program D18F3xDC[NbPs0NclkDiv] to the minimum divisor where | ||||
|       // (target memclk frequency >= (D18F3xD4[MainPllOpFreqId] freq) / divisor) | ||||
|       EncodedNbPs0NclkDiv = ((NbPstateNumerator * TargetDenominator) / TargetNumerator); | ||||
|       if (((NbPstateNumerator * TargetDenominator) % TargetNumerator) != 0) { | ||||
|         EncodedNbPs0NclkDiv++; | ||||
|       } | ||||
|       // Ensure that the encoded divisor is even to give 50% duty cycle | ||||
|       EncodedNbPs0NclkDiv = ((EncodedNbPs0NclkDiv + 1) & 0xFFFFFFFE); | ||||
|  | ||||
|       ASSERT (EncodedNbPs0NclkDiv >= 8); | ||||
|       ASSERT (EncodedNbPs0NclkDiv <= 0x3F); | ||||
|     } else { | ||||
|       EncodedNbPs0NclkDiv = FCRxFE00_7009.Field.NbPs0NclkDiv; | ||||
|     } | ||||
|  | ||||
|     // Check to see if the DIMMs are too fast for the CPU (NB P0 COF < (Memclk / 2)) | ||||
|     if ((TargetNumerator * EncodedNbPs0NclkDiv) > (NbPstateNumerator * TargetDenominator * 2)) { | ||||
|       // Indicate the error to the memory code so the DIMMs can be derated. | ||||
|       ReturnStatus = FALSE; | ||||
|     } | ||||
|  | ||||
|     // Apply the appropriate P0 frequency | ||||
|     PciAddress.AddressValue = CPTC2_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &Cptc2.Value, StdHeader); | ||||
|     if (Cptc2.Field.NbPs0NclkDiv != EncodedNbPs0NclkDiv) { | ||||
|       WaitForTransition = TRUE; | ||||
|     Cptc2.Field.NbPs0NclkDiv = EncodedNbPs0NclkDiv; | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &Cptc2.Value, StdHeader); | ||||
|     } | ||||
|     NbP0Cof = RoundedDivision (NbPstateNumerator, EncodedNbPs0NclkDiv); | ||||
|  | ||||
|     // Determine NB P1 settings if necessary | ||||
|     PciAddress.AddressValue = NB_PSTATE_CFG_LOW_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &NbPsCfgLow.Value, StdHeader); | ||||
|     if (NbPsCfgLow.Field.NbPsCap == 1) { | ||||
|       if ((TargetNumerator * FCRxFE00_7006.Field.NbPs1NclkDiv) > (NbPstateNumerator * TargetDenominator * 2)) { | ||||
|         // Program D18F6x90[NbPs1NclkDiv] to the maximum divisor where | ||||
|         // (target memclk frequency / 2 <= (D18F3xD4[MainPllOpFreqId] freq) / divisor) | ||||
|         EncodedNbPs1NclkDiv = ((NbPstateNumerator * TargetDenominator * 2) / TargetNumerator); | ||||
|  | ||||
|         // Ensure that the encoded divisor is even to give 50% duty cycle | ||||
|         EncodedNbPs1NclkDiv &= 0xFFFFFFFE; | ||||
|         ASSERT (EncodedNbPs1NclkDiv >= 8); | ||||
|         ASSERT (EncodedNbPs1NclkDiv <= 0x3F); | ||||
|  | ||||
|         // Calculate the new effective P1 frequency to determine the voltage | ||||
|         NbP1Cof = RoundedDivision (NbPstateNumerator, EncodedNbPs1NclkDiv); | ||||
|  | ||||
|         if (NbP1Cof <= F14MaxNbFreqAtMinVidFreqTable[FCRxFE00_7006.Field.MaxNbFreqAtMinVid]) { | ||||
|           // Program D18F6x90[NbPs1Vid] = FCRxFE00_6002[NbPs1VidAddl] | ||||
|           EncodedNbPs1Vid = FCRxFE00_6002.Field.NbPs1VidAddl; | ||||
|         } else { | ||||
|           // Program D18F6x90[NbPs1Vid] = FCRxFE00_6002[NbPs1VidHigh] | ||||
|           EncodedNbPs1Vid = FCRxFE00_6002.Field.NbPs1VidHigh; | ||||
|         } | ||||
|       } else { | ||||
|         // Fused frequency and voltage are legal | ||||
|         EncodedNbPs1Vid = FCRxFE00_6000.Field.NbPs1Vid; | ||||
|         EncodedNbPs1NclkDiv = FCRxFE00_7006.Field.NbPs1NclkDiv; | ||||
|         NbP1Cof = RoundedDivision (NbPstateNumerator, EncodedNbPs1NclkDiv); | ||||
|       } | ||||
|  | ||||
|       if (NbP0Cof < NbP1Cof) { | ||||
|         // NB P1 frequency is faster than NB P0.  Fix it up by slowing | ||||
|         // P1 to match P0. | ||||
|         EncodedNbPs1NclkDiv  = EncodedNbPs0NclkDiv; | ||||
|         NbP1Cof = NbP0Cof; | ||||
|       } | ||||
|  | ||||
|       // Program the new NB P1 settings | ||||
|       NbPsCfgLow.Field.NbPs1NclkDiv = EncodedNbPs1NclkDiv; | ||||
|       NbPsCfgLow.Field.NbPs1Vid = EncodedNbPs1Vid; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &NbPsCfgLow.Value, StdHeader); | ||||
|     } else { | ||||
|       // NB P-states are not enabled | ||||
|       NbP1Cof = 0; | ||||
|     } | ||||
|     *CurrentNbFreq = NbP0Cof; | ||||
|     if (WaitForTransition) { | ||||
|       // Ensure that the frequency has settled before returning to memory code. | ||||
|       PciAddress.AddressValue = CPTC2_PCI_ADDR; | ||||
|       do { | ||||
|         LibAmdPciRead (AccessWidth32, PciAddress, &Cptc2.Value, StdHeader); | ||||
|       } while (Cptc2.Field.NclkFreqDone != 1); | ||||
|     } | ||||
|   } else { | ||||
|     // Get NB P0 COF | ||||
|     PciAddress.AddressValue = CPTC2_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &Cptc2.Value, StdHeader); | ||||
|     NbP0Cof = RoundedDivision (NbPstateNumerator, Cptc2.Field.NbPs0NclkDiv); | ||||
|  | ||||
|     // Read NB P-state status | ||||
|     PciAddress.AddressValue = NB_PSTATE_CTRL_STS_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &NbPsCtrlSts.Value, StdHeader); | ||||
|  | ||||
|     // Read low config register | ||||
|     PciAddress.AddressValue = NB_PSTATE_CFG_LOW_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &NbPsCfgLow.Value, StdHeader); | ||||
|     if (TargetNbPstate == 1) { | ||||
|       // If target is P1, the CPU MUST be in P0, otherwise the P1 settings | ||||
|       // cannot be realized.  This is a programming error. | ||||
|       ASSERT (NbPsCtrlSts.Field.NbPs1Act == 0); | ||||
|  | ||||
|       if (NbPsCfgLow.Field.NbPsCap == 1) { | ||||
|         // The part is capable of NB P-states.  Transition to P1. | ||||
|         NbPsCfgLow.Field.NbPsForceSel = 1; | ||||
|         LibAmdPciWrite (AccessWidth32, PciAddress, &NbPsCfgLow.Value, StdHeader); | ||||
|  | ||||
|         WaitForTransition = TRUE; | ||||
|         *CurrentNbFreq = RoundedDivision (NbPstateNumerator, NbPsCfgLow.Field.NbPs1NclkDiv); | ||||
|       } else { | ||||
|         // No NB P-states.  Return FALSE, and set current frequency to P0. | ||||
|         *CurrentNbFreq = NbP0Cof; | ||||
|         ReturnStatus = FALSE; | ||||
|       } | ||||
|     } else { | ||||
|       // Target P0 | ||||
|       *CurrentNbFreq = NbP0Cof; | ||||
|       if (NbPsCtrlSts.Field.NbPs1Act != 0) { | ||||
|         // Request transition to P0 | ||||
|         NbPsCfgLow.Field.NbPsForceSel = 0; | ||||
|         LibAmdPciWrite (AccessWidth32, PciAddress, &NbPsCfgLow.Value, StdHeader); | ||||
|         WaitForTransition = TRUE; | ||||
|       } | ||||
|     } | ||||
|     if (WaitForTransition) { | ||||
|   // Ensure that the frequency has settled before returning to memory code. | ||||
|       PciAddress.AddressValue = NB_PSTATE_CTRL_STS_PCI_ADDR; | ||||
|   do { | ||||
|         LibAmdPciRead (AccessWidth32, PciAddress, &NbPsCtrlSts.Value, StdHeader); | ||||
|       } while (NbPsCtrlSts.Field.NbPs1Act != TargetNbPstate); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   return ReturnStatus; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Performs integer division, and rounds the quotient up if the remainder is greater | ||||
|  * than or equal to 50% of the divisor. | ||||
|  * | ||||
|  * @param[in]     Dividend                The target MEMCLK in megahertz. | ||||
|  * @param[in]     Divisor                 The target MEMCLK's register encoding. | ||||
|  * | ||||
|  * @return        The rounded quotient | ||||
|  */ | ||||
| UINT32 | ||||
| STATIC | ||||
| RoundedDivision ( | ||||
|   IN       UINT32 Dividend, | ||||
|   IN       UINT32 Divisor | ||||
|   ) | ||||
| { | ||||
|   UINT32 Quotient; | ||||
|  | ||||
|   ASSERT (Divisor != 0); | ||||
|  | ||||
|   Quotient = Dividend / Divisor; | ||||
|   if (((Dividend % Divisor) * 2) >= Divisor) { | ||||
|     Quotient++; | ||||
|   } | ||||
|   return Quotient; | ||||
| } | ||||
| @@ -1,104 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family 14h specific utility functions | ||||
|  * | ||||
|  * Provides numerous utility functions specific to Family 14h | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/0x14 | ||||
|  * @e \$Revision: 37640 $   @e \$Date: 2010-09-08 23:01:59 +0800 (Wed, 08 Sep 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _CPU_COMMON_F14_UTILITES_H_ | ||||
| #define _CPU_COMMON_F14_UTILITES_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| F14SetAgesaWarmResetFlag ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|   IN       WARM_RESET_REQUEST *Request | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| F14GetAgesaWarmResetFlag ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader, | ||||
|      OUT   WARM_RESET_REQUEST *Request | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| F14GetApMailboxFromHardware ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|      OUT   AP_MAILBOXES           *ApMailboxInfo, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| F14NbPstateInit ( | ||||
|   IN       UINT32             TargetMemclk, | ||||
|   IN       UINT32             TargetMemclkEncoded, | ||||
|   IN       UINT32             TargetNbPstate, | ||||
|      OUT   UINT32             *CurrentNbFreq, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif  // _CPU_COMMON_F14_UTILITES_H_ | ||||
| @@ -1,155 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD CPU BrandId related functions and structures. | ||||
|  * | ||||
|  * Contains code that provides CPU BrandId information | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 36556 $   @e \$Date: 2010-08-21 01:25:52 +0800 (Sat, 21 Aug 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14BRANDID_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14BrandIdString1 ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **BrandString1Ptr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| GetF14BrandIdString2 ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **BrandString2Ptr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern CPU_BRAND_TABLE *F14BrandIdString1Tables[]; | ||||
| extern CPU_BRAND_TABLE *F14BrandIdString2Tables[]; | ||||
| extern CONST UINT8 F14BrandIdString1TableCount; | ||||
| extern CONST UINT8 F14BrandIdString2TableCount; | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns a table containing the appropriate beginnings of the CPU brandstring. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  BrandString1Ptr          Points to the first entry in the table. | ||||
|  *  @param[out]  NumberOfElements         Number of valid entries in the table. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14BrandIdString1 ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **BrandString1Ptr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   CPU_BRAND_TABLE **TableEntryPtr; | ||||
|  | ||||
|   TableEntryPtr = &F14BrandIdString1Tables[0]; | ||||
|   *BrandString1Ptr = TableEntryPtr; | ||||
|   *NumberOfElements = F14BrandIdString1TableCount; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns a table containing the appropriate endings of the CPU brandstring. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  BrandString2Ptr          Points to the first entry in the table. | ||||
|  *  @param[out]  NumberOfElements         Number of valid entries in the table. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14BrandIdString2 ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **BrandString2Ptr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   CPU_BRAND_TABLE **TableEntryPtr; | ||||
|  | ||||
|   TableEntryPtr = &F14BrandIdString2Tables[0]; | ||||
|   *BrandString2Ptr = TableEntryPtr; | ||||
|   *NumberOfElements = F14BrandIdString2TableCount; | ||||
| } | ||||
| @@ -1,161 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD CPU BrandId related functions and structures. | ||||
|  * | ||||
|  * Contains code that provides CPU BrandId information | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 45203 $   @e \$Date: 2011-01-13 12:36:39 -0700 (Thu, 13 Jan 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuEarlyInit.h" | ||||
| #include "F14PackageType.h" | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| // String1 | ||||
| CONST CHAR8 ROMDATA str_AMD_C[] = "AMD C-"; | ||||
| CONST CHAR8 ROMDATA str_AMD_E[] = "AMD E-"; | ||||
| CONST CHAR8 ROMDATA str_AMD_G_T[] = "AMD G-T"; | ||||
| CONST CHAR8 ROMDATA str_AMD_Z[] = "AMD Z-"; | ||||
|  | ||||
| // String2 | ||||
| CONST CHAR8 ROMDATA str___Processor[] = " Processor"; | ||||
| CONST CHAR8 ROMDATA str___0_Processor[] = "0 Processor"; | ||||
| CONST CHAR8 ROMDATA str_5_Processor[] = "5 Processor"; | ||||
| CONST CHAR8 ROMDATA str_0x_Processor[] = "0x Processor"; | ||||
| CONST CHAR8 ROMDATA str_5x_Processor[] = "5x Processor"; | ||||
| CONST CHAR8 ROMDATA str_x_Processor[] = "x Processor"; | ||||
| CONST CHAR8 ROMDATA str_L_Processor[] = "L Processor"; | ||||
| CONST CHAR8 ROMDATA str_N_Processor[] = "N Processor"; | ||||
| CONST CHAR8 ROMDATA str_R_Processor[] = "R Processor"; | ||||
| CONST CHAR8 ROMDATA str_E_Processor[] = "E Processor"; | ||||
| CONST CHAR8 ROMDATA str_0D_APU[] = "0D APU with Radeon(tm) HD Graphics"; | ||||
| CONST CHAR8 ROMDATA str_0_APU[] = "0 APU with Radeon(tm) HD Graphics"; | ||||
| CONST CHAR8 ROMDATA str_5_APU[] = "5 APU with Radeon(tm) HD Graphics"; | ||||
| CONST CHAR8 ROMDATA str_APU[] = " APU with Radeon(tm) HD Graphics"; | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| CONST AMD_CPU_BRAND ROMDATA CpuF14OnBrandIdString1ArrayFt1[] = | ||||
| { | ||||
|   // FT1 | ||||
|   {1, 0, 1, ON_SOCKET_FT1, str_AMD_C, sizeof (str_AMD_C)}, | ||||
|   {2, 0, 1, ON_SOCKET_FT1, str_AMD_C, sizeof (str_AMD_C)}, | ||||
|   {1, 0, 2, ON_SOCKET_FT1, str_AMD_E, sizeof (str_AMD_E)}, | ||||
|   {2, 0, 2, ON_SOCKET_FT1, str_AMD_E, sizeof (str_AMD_E)}, | ||||
|   {2, 0, 3, ON_SOCKET_FT1, str_AMD_Z, sizeof (str_AMD_Z)}, | ||||
|   {1, 0, 4, ON_SOCKET_FT1, str_AMD_G_T, sizeof (str_AMD_G_T)}, | ||||
|   {2, 0, 4, ON_SOCKET_FT1, str_AMD_G_T, sizeof (str_AMD_G_T)} | ||||
| };    //Cores, page, index, socket, stringstart, stringlength | ||||
|  | ||||
|  | ||||
| CONST AMD_CPU_BRAND ROMDATA CpuF14OnBrandIdString2ArrayFt1[] = | ||||
| { | ||||
|   // FT1 | ||||
|   {1, 0, 0x01, ON_SOCKET_FT1, str___Processor, sizeof (str___Processor)}, | ||||
|   {2, 0, 0x01, ON_SOCKET_FT1, str___Processor, sizeof (str___Processor)}, | ||||
|   {1, 0, 0x02, ON_SOCKET_FT1, str___0_Processor, sizeof (str___0_Processor)}, | ||||
|   {2, 0, 0x02, ON_SOCKET_FT1, str___0_Processor, sizeof (str___0_Processor)}, | ||||
|   {1, 0, 0x03, ON_SOCKET_FT1, str_5_Processor, sizeof (str_5_Processor)}, | ||||
|   {2, 0, 0x03, ON_SOCKET_FT1, str_5_Processor, sizeof (str_5_Processor)}, | ||||
|   {1, 0, 0x04, ON_SOCKET_FT1, str_0x_Processor, sizeof (str_0x_Processor)}, | ||||
|   {2, 0, 0x04, ON_SOCKET_FT1, str_0x_Processor, sizeof (str_0x_Processor)}, | ||||
|   {1, 0, 0x05, ON_SOCKET_FT1, str_5x_Processor, sizeof (str_5x_Processor)}, | ||||
|   {2, 0, 0x05, ON_SOCKET_FT1, str_5x_Processor, sizeof (str_5x_Processor)}, | ||||
|   {1, 0, 0x06, ON_SOCKET_FT1, str_x_Processor, sizeof (str_x_Processor)}, | ||||
|   {2, 0, 0x06, ON_SOCKET_FT1, str_x_Processor, sizeof (str_x_Processor)}, | ||||
|   {1, 0, 0x07, ON_SOCKET_FT1, str_L_Processor, sizeof (str_L_Processor)}, | ||||
|   {2, 0, 0x07, ON_SOCKET_FT1, str_L_Processor, sizeof (str_L_Processor)}, | ||||
|   {1, 0, 0x08, ON_SOCKET_FT1, str_N_Processor, sizeof (str_N_Processor)}, | ||||
|   {2, 0, 0x08, ON_SOCKET_FT1, str_N_Processor, sizeof (str_N_Processor)}, | ||||
|   {1, 0, 0x09, ON_SOCKET_FT1, str_R_Processor, sizeof (str_R_Processor)}, | ||||
|   {2, 0, 0x09, ON_SOCKET_FT1, str_0_APU, sizeof (str_0_APU)}, | ||||
|   {1, 0, 0x0A, ON_SOCKET_FT1, str_0_APU, sizeof (str_0_APU)}, | ||||
|   {2, 0, 0x0A, ON_SOCKET_FT1, str_5_APU, sizeof (str_5_APU)}, | ||||
|   {1, 0, 0x0B, ON_SOCKET_FT1, str_5_APU, sizeof (str_5_APU)}, | ||||
|   {2, 0, 0x0B, ON_SOCKET_FT1, str_APU, sizeof (str_APU)}, | ||||
|   {1, 0, 0x0C, ON_SOCKET_FT1, str_APU, sizeof (str_APU)}, | ||||
|   {2, 0, 0x0C, ON_SOCKET_FT1, str_E_Processor, sizeof (str_E_Processor)}, | ||||
|   {1, 0, 0x0D, ON_SOCKET_FT1, str_0D_APU, sizeof (str_0D_APU)}, | ||||
|   {2, 0, 0x0D, ON_SOCKET_FT1, str_0D_APU, sizeof (str_0D_APU)}, | ||||
|   {1, 0, 0x0F, ON_SOCKET_FT1, 0, 0},    //Size 0 for no suffix | ||||
|   {2, 0, 0x0F, ON_SOCKET_FT1, 0, 0},    //Size 0 for no suffix | ||||
|  };    //Cores, page, index, socket, stringstart, stringlength | ||||
|  | ||||
|  | ||||
| CONST CPU_BRAND_TABLE ROMDATA F14OnBrandIdString1ArrayFt1 = { | ||||
|   (sizeof (CpuF14OnBrandIdString1ArrayFt1) / sizeof (AMD_CPU_BRAND)), | ||||
|   CpuF14OnBrandIdString1ArrayFt1 | ||||
| }; | ||||
|  | ||||
|  | ||||
| CONST CPU_BRAND_TABLE ROMDATA F14OnBrandIdString2ArrayFt1 = { | ||||
|   (sizeof (CpuF14OnBrandIdString2ArrayFt1) / sizeof (AMD_CPU_BRAND)), | ||||
|   CpuF14OnBrandIdString2ArrayFt1 | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -1,131 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 ROM Execution Cache Defaults | ||||
|  * | ||||
|  * Contains default values for ROM execution cache setup | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/0x14 | ||||
|  * @e \$Revision: 36376 $   @e \$Date: 2010-08-18 00:17:10 +0800 (Wed, 18 Aug 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuCacheInit.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14CACHEDEFAULTS_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14CacheInfo ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **CacheInfoPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #define BSP_STACK_SIZE            16384 | ||||
| #define CORE0_STACK_SIZE          16384 | ||||
| #define CORE1_STACK_SIZE          4096 | ||||
| #define MEM_TRAINING_BUFFER_SIZE  16384 | ||||
| #define VAR_MTRR_MASK             0x0000000FFFFFFFFF | ||||
|  | ||||
| #define HEAP_BASE_MASK            0x0000000FFFFFFFFF | ||||
|  | ||||
| #define SHARED_MEM_SIZE       0 | ||||
|  | ||||
| CONST CACHE_INFO ROMDATA CpuF14CacheInfo = | ||||
| { | ||||
|   BSP_STACK_SIZE, | ||||
|   CORE0_STACK_SIZE, | ||||
|   CORE1_STACK_SIZE, | ||||
|   MEM_TRAINING_BUFFER_SIZE, | ||||
|   SHARED_MEM_SIZE, | ||||
|   VAR_MTRR_MASK, | ||||
|   VAR_MTRR_MASK, | ||||
|   HEAP_BASE_MASK, | ||||
|   InfiniteExe | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns the family specific properties of the cache, and its usage. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  CacheInfoPtr             Points to the cache info properties on exit. | ||||
|  *  @param[out]  NumberOfElements         Will be one to indicate one entry. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14CacheInfo ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **CacheInfoPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *NumberOfElements = 1; | ||||
|   *CacheInfoPtr = &CpuF14CacheInfo; | ||||
| } | ||||
|  | ||||
| @@ -1,326 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD DMI Record Creation API, and related functions. | ||||
|  * | ||||
|  * Contains code that produce the DMI related information. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 38893 $   @e \$Date: 2010-10-01 23:54:37 +0800 (Fri, 01 Oct 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "OptionDmi.h" | ||||
| #include "cpuLateInit.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuPstateTables.h" | ||||
| #include "cpuF14Utilities.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14DMI_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern CPU_FAMILY_SUPPORT_TABLE            PstateFamilyServiceTable; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| DmiF14GetInfo ( | ||||
|   IN OUT   CPU_TYPE_INFO *CpuInfoPtr, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| UINT8 | ||||
| DmiF14GetVoltage ( | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| UINT16 | ||||
| DmiF14GetMaxSpeed ( | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| UINT16 | ||||
| DmiF14GetExtClock ( | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| DmiF14GetMemInfo ( | ||||
|   IN OUT   CPU_GET_MEM_INFO  *CpuGetMemInfoPtr, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  DmiF14GetInfo | ||||
|  * | ||||
|  *    Get CPU type information | ||||
|  * | ||||
|  *    @param[in,out]  CpuInfoPtr     Pointer to CPU_TYPE_INFO struct. | ||||
|  *    @param[in]      StdHeader      Standard Head Pointer | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| DmiF14GetInfo ( | ||||
|   IN OUT   CPU_TYPE_INFO *CpuInfoPtr, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   CPUID_DATA CpuId; | ||||
|  | ||||
|   LibAmdCpuidRead (AMD_CPUID_FMF, &CpuId, StdHeader); | ||||
|   CpuInfoPtr->ExtendedFamily = (UINT8) (CpuId.EAX_Reg >> 20) & 0xFF; // bit 27:20 | ||||
|   CpuInfoPtr->ExtendedModel = (UINT8) (CpuId.EAX_Reg >> 16) & 0xF; // bit 19:16 | ||||
|   CpuInfoPtr->BaseFamily = (UINT8) (CpuId.EAX_Reg >> 8) & 0xF; // bit 11:8 | ||||
|   CpuInfoPtr->BaseModel = (UINT8) (CpuId.EAX_Reg >> 4)  & 0xF; // bit 7:4 | ||||
|   CpuInfoPtr->Stepping = (UINT8) (CpuId.EAX_Reg & 0xF); // bit 3:0 | ||||
|  | ||||
|   CpuInfoPtr->PackageType = (UINT8) (CpuId.EBX_Reg >> 28) & 0xF; // bit 31:28 | ||||
|   CpuInfoPtr->BrandId.Pg = (UINT8) (CpuId.EBX_Reg >> 15) & 0x1; // bit 15 | ||||
|   CpuInfoPtr->BrandId.String1 = (UINT8) (CpuId.EBX_Reg >> 11) & 0xF; // bit 14:11 | ||||
|   CpuInfoPtr->BrandId.Model = (UINT8) (CpuId.EBX_Reg >> 4) & 0x7F; // bit 10:4 | ||||
|   CpuInfoPtr->BrandId.String2 = (UINT8) (CpuId.EBX_Reg & 0xF); // bit 3:0 | ||||
|  | ||||
|   LibAmdCpuidRead (AMD_CPUID_ASIZE_PCCOUNT, &CpuId, StdHeader); | ||||
|   CpuInfoPtr->TotalCoreNumber = (UINT8) (CpuId.ECX_Reg & 0xFF); // bit 7:0 | ||||
|   CpuInfoPtr->EnabledCoreNumber = (UINT8) (CpuId.ECX_Reg & 0xFF); // bit 7:0 | ||||
|  | ||||
|   switch (CpuInfoPtr->PackageType) { | ||||
|   case ON_SOCKET_FT1: | ||||
|     CpuInfoPtr->ProcUpgrade = P_UPGRADE_NONE; | ||||
|     break; | ||||
|   default: | ||||
|     CpuInfoPtr->ProcUpgrade = P_UPGRADE_UNKNOWN; | ||||
|     break; | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  DmiF14GetVoltage | ||||
|  * | ||||
|  *    Get the voltage value according to SMBIOS SPEC's requirement. | ||||
|  * | ||||
|  *    @param[in]     StdHeader      Standard Head Pointer | ||||
|  * | ||||
|  *    @retval  Voltage   - CPU Voltage. | ||||
|  * | ||||
|  */ | ||||
| UINT8 | ||||
| DmiF14GetVoltage ( | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8     MaxVid; | ||||
|   UINT8     Voltage; | ||||
|   UINT8     NumberBoostStates; | ||||
|   UINT64    MsrData; | ||||
|   PCI_ADDR  TempAddr; | ||||
|   CPU_LOGICAL_ID    CpuFamilyRevision; | ||||
|   CPB_CTRL_REGISTER CpbCtrl; | ||||
|  | ||||
|   // Voltage = 0x80 + (voltage at boot time * 10) | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|   if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) == 0) { | ||||
|     TempAddr.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, TempAddr, &CpbCtrl, StdHeader);  // F4x15C | ||||
|     NumberBoostStates = (UINT8) CpbCtrl.NumBoostStates; | ||||
|   } else { | ||||
|     NumberBoostStates = 0; | ||||
|   } | ||||
|  | ||||
|   LibAmdMsrRead ((MSR_PSTATE_0 + NumberBoostStates), &MsrData, StdHeader); | ||||
|     MaxVid = (UINT8) (((PSTATE_MSR *)&MsrData)->CpuVid); | ||||
|  | ||||
|   if ((MaxVid >= 0x7C) && (MaxVid <= 0x7F)) { | ||||
|     Voltage = 0; | ||||
|   } else { | ||||
|     Voltage = (UINT8) ((15500 - (125 * MaxVid) + 500) / 1000); | ||||
|   } | ||||
|  | ||||
|   Voltage += 0x80; | ||||
|   return (Voltage); | ||||
| } | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  DmiF14GetMaxSpeed | ||||
|  * | ||||
|  *    Get the Max Speed | ||||
|  * | ||||
|  *    @param[in]     StdHeader      Standard Head Pointer | ||||
|  * | ||||
|  *    @retval  MaxSpeed   - CPU Max Speed. | ||||
|  * | ||||
|  */ | ||||
| UINT16 | ||||
| DmiF14GetMaxSpeed ( | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8  NumBoostStates; | ||||
|   UINT32 P0Frequency; | ||||
|   UINT32 PciData; | ||||
|   PCI_ADDR PciAddress; | ||||
|   PSTATE_CPU_FAMILY_SERVICES  *FamilyServices; | ||||
|   CPU_LOGICAL_ID  CpuFamilyRevision; | ||||
|  | ||||
|   FamilyServices = NULL; | ||||
|   GetFeatureServicesOfCurrentCore (&PstateFamilyServiceTable, (const VOID **)&FamilyServices, StdHeader); | ||||
|   ASSERT (FamilyServices != NULL); | ||||
|  | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|   if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) == 0) { | ||||
|     PciAddress.AddressValue = MAKE_SBDFO (0, 0 , PCI_DEV_BASE, FUNC_4, 0x15C); | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciData, StdHeader); | ||||
|     NumBoostStates = (UINT8) ((PciData >> 2) & 7); | ||||
|   } else { | ||||
|     NumBoostStates = 0; | ||||
|   } | ||||
|  | ||||
|   FamilyServices->GetPstateFrequency (FamilyServices, NumBoostStates, &P0Frequency, StdHeader); | ||||
|   return ((UINT16) P0Frequency); | ||||
| } | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  DmiF14GetExtClock | ||||
|  * | ||||
|  *    Get the external clock Speed | ||||
|  * | ||||
|  *    @param[in, out] StdHeader      Standard Head Pointer | ||||
|  * | ||||
|  *    @retval  ExtClock   - CPU external clock Speed. | ||||
|  * | ||||
|  */ | ||||
| UINT16 | ||||
| DmiF14GetExtClock ( | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   return (EXTERNAL_CLOCK_100MHZ); | ||||
| } | ||||
|  | ||||
| /* -----------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  DmiF14GetMemInfo | ||||
|  * | ||||
|  *    Get memory information. | ||||
|  * | ||||
|  *    @param[in,out]  CpuGetMemInfoPtr      Pointer to CPU_GET_MEM_INFO struct. | ||||
|  *    @param[in]      StdHeader             Standard Head Pointer | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| DmiF14GetMemInfo ( | ||||
|   IN OUT   CPU_GET_MEM_INFO  *CpuGetMemInfoPtr, | ||||
|   IN       AMD_CONFIG_PARAMS  *StdHeader | ||||
|   ) | ||||
| { | ||||
|   // Ontario only has one DCT and does NOT support ECC DIMM | ||||
|   CpuGetMemInfoPtr->EccCapable = FALSE; | ||||
|   // Partition Row Position - 2 is for single channel memory | ||||
|   CpuGetMemInfoPtr->PartitionRowPosition = 2; | ||||
| } | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  * Processor Family Table | ||||
|  * | ||||
|  * Note: 'x' means we don't care this field | ||||
|  *       046h = "AMD C-Series Processor" | ||||
|  *       047h = "AMD E-Series Processor" | ||||
|  *       048h = "AMD S-Series Processor" | ||||
|  *       049h = "AMD G-Series Processor" | ||||
|  *       002h = "Unknown" | ||||
|  *-------------------------------------------------------------------------------------*/ | ||||
| CONST DMI_BRAND_ENTRY ROMDATA Family14BrandList[] = | ||||
| { | ||||
|   // Brand --> DMI ID translation table | ||||
|   // PackageType, PgOfBrandId, NumberOfCores, String1ofBrandId, ValueSetToDmiTable | ||||
|   {0, 0, 'x', 1, 0x46}, | ||||
|   {0, 0, 'x', 2, 0x47}, | ||||
|   {0, 0, 'x', 4, 0x49}, | ||||
|   {'x', 'x', 'x', 'x', 0x02} | ||||
| }; | ||||
|  | ||||
| CONST PROC_FAMILY_TABLE ROMDATA ProcFamily14DmiTable = | ||||
| { | ||||
|   AMD_FAMILY_14,                  // ID for Family 14h | ||||
|   &DmiF14GetInfo,                 // Transfer vectors for family | ||||
|   &DmiF14GetVoltage,              //   specific routines (above) | ||||
|   &DmiF14GetMaxSpeed, | ||||
|   &DmiF14GetExtClock, | ||||
|   &DmiF14GetMemInfo,              // Get memory information | ||||
|   ARRAY_SIZE(Family14BrandList), // Number of entries in following table | ||||
|   &Family14BrandList[0] | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                          L O C A L    F U N C T I O N S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| @@ -1,149 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Optimizations for lower power consumption | ||||
|  * | ||||
|  * Sets some registers for tablet parts at AmdInitEarly. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/F14 | ||||
|  * @e \$Revision: 45578 $   @e \$Date: 2011-01-18 19:20:41 -0500 (Tue, 18 Jan 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ****************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuF14LowPowerInit.h" | ||||
| #include "Filecode.h" | ||||
|  | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14LOWPOWERINIT_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Family 14h model 0 - 0xF core 0 entry point for programming registers for lower | ||||
|  * power consumption. | ||||
|  * | ||||
|  * Set up D18F6x94[CpuPstateThrEn, CpuPstateThr], and D18F4x134[IntRateCC6DecrRate | ||||
|  * according to the BKDG. | ||||
|  * | ||||
|  * @param[in]  FamilySpecificServices  The current Family Specific Services. | ||||
|  * @param[in]  CpuEarlyParams          Service parameters | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14OptimizeForLowPowerInit ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8                 NumBoostStates; | ||||
|   UINT32                LocalPciRegister; | ||||
|   BOOLEAN               OptimizeForLowPower; | ||||
|   BOOLEAN               IsRevC; | ||||
|   PCI_ADDR              PciAddress; | ||||
|   CPU_LOGICAL_ID        CpuFamilyRevision; | ||||
|  | ||||
|   PciAddress.AddressValue = PRODUCT_INFO_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|  | ||||
|   if ((((PRODUCT_INFO_REGISTER *) &LocalPciRegister)->LowPowerDefault == 1) && | ||||
|       (CpuEarlyParams->PlatformConfig.PlatformProfile.PlatformPowerPolicy == BatteryLife)) { | ||||
|     OptimizeForLowPower = TRUE; | ||||
|   } else { | ||||
|     OptimizeForLowPower = FALSE; | ||||
|   } | ||||
|  | ||||
|   // Get F4x15C [4:2] NumBoostStates | ||||
|   // Get IsRevC | ||||
|   NumBoostStates = 0; | ||||
|   IsRevC = FALSE; | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|   if ((CpuFamilyRevision.Revision & AMD_F14_ON_Cx) != 0) { | ||||
|     IsRevC = TRUE; | ||||
|     PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|     NumBoostStates = (UINT8) ((CPB_CTRL_REGISTER *) &LocalPciRegister)->NumBoostStates; | ||||
|   } | ||||
|  | ||||
|   // F6x94[2:0] CpuPstateThr | ||||
|   PciAddress.AddressValue = NB_PSTATE_CFG_HIGH_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|   if (OptimizeForLowPower) { | ||||
|     ((NB_PSTATE_CFG_HIGH_REGISTER *) &LocalPciRegister)->CpuPstateThr = 0; | ||||
|   } else { | ||||
|     if (NumBoostStates == 0) { | ||||
|       ((NB_PSTATE_CFG_HIGH_REGISTER *) &LocalPciRegister)->CpuPstateThr = 1; | ||||
|     } else { | ||||
|       ((NB_PSTATE_CFG_HIGH_REGISTER *) &LocalPciRegister)->CpuPstateThr = 2; | ||||
|     } | ||||
|   } | ||||
|   // F6x94[3] CpuPstateThrEn = 1 | ||||
|   ((NB_PSTATE_CFG_HIGH_REGISTER *) &LocalPciRegister)->CpuPstateThrEn = 1; | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|  | ||||
|   // F4x134[31:27] IntRateCC6DecrRate | ||||
|   PciAddress.AddressValue = CSTATE_MON_CTRL3_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|   ((CSTATE_MON_CTRL3_REGISTER *) &LocalPciRegister)->IntRateCC6DecrRate = (OptimizeForLowPower || IsRevC) ? 0x18 : 0x8; | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
| } | ||||
| @@ -1,77 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Optimizations for Low Power | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/Family/F14 | ||||
|  * @e \$Revision: 45578 $   @e \$Date: 2011-01-18 19:20:41 -0500 (Tue, 18 Jan 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ****************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  ****************************************************************************** | ||||
|  */ | ||||
|  | ||||
| #ifndef _F14_LOW_POWER_INIT_H_ | ||||
| #define _F14_LOW_POWER_INIT_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| F14OptimizeForLowPowerInit ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif  // _F14_LOW_POWER_INIT_H_ | ||||
| @@ -1,213 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 MSR tables with values as defined in BKDG | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 48588 $   @e \$Date: 2011-03-10 08:57:36 -0700 (Thu, 10 Mar 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "Table.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14MSRTABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| CONST MSR_TYPE_ENTRY_INITIALIZER ROMDATA F14MsrRegisters[] = | ||||
| { | ||||
|  | ||||
| //  M S R    T a b l e s | ||||
| // ---------------------- | ||||
|  | ||||
| // MC0_CTL_MASK (0xC0010044) | ||||
| // bit[6] = 1, erratum #628 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                       // CpuFamily | ||||
|       AMD_F14_ON_ALL                       // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                            // platformFeatures | ||||
|     {{ | ||||
|       MSR_MC0_CTL_MASK,                      // MSR Address | ||||
|       0x0000000000000040,                    // OR Mask | ||||
|       0x0000000000000040,                    // NAND Mask | ||||
|      }} | ||||
|   }, | ||||
| // MSR_TOM2 (0xC001001D) | ||||
| // bits[63:0] - TOP_MEM2 = 0 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                       // CpuFamily | ||||
|       AMD_F14_ALL                          // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                            // platformFeatures | ||||
|     {{ | ||||
|       MSR_TOM2,                              // MSR Address | ||||
|       0x0000000000000000,                    // OR Mask | ||||
|       0xFFFFFFFFFFFFFFFF,                    // NAND Mask | ||||
|     }} | ||||
|   }, | ||||
| // MSR_SYS_CFG (0xC0010010) | ||||
| // bit[21] - MtrrTom2En = 1 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                       // CpuFamily | ||||
|       AMD_F14_ALL                          // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                            // platformFeatures | ||||
|     {{ | ||||
|       MSR_SYS_CFG,                           // MSR Address | ||||
|       (1 << 21),                             // OR Mask | ||||
|       (1 << 21),                             // NAND Mask | ||||
|     }} | ||||
|   }, | ||||
| // MSR_CPUID_EXT_FEATS (0xC0011005) | ||||
| // bit[41] - OSVW = 0 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MSR_CPUID_EXT_FEATS,                   // MSR Address | ||||
|       0x0000000000000000,                    // OR Mask | ||||
|       0x0000020000000000,                    // NAND Mask | ||||
|     }} | ||||
|   }, | ||||
| // MSR_OSVW_ID_Length (0xC0010140) | ||||
| // bit[15:0] = 4 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MSR_OSVW_ID_Length,                    // MSR Address | ||||
|       0x0000000000000004,                    // OR Mask | ||||
|       0x000000000000FFFF,                    // NAND Mask | ||||
|     }} | ||||
|   }, | ||||
| // MSR_HWCR (0xC0010015) | ||||
| // Do not set bit[24] = 1, it will be set in AmdInitPost. | ||||
|  | ||||
| // This MSR should be set after the code that most errata would be applied in | ||||
| // MSR_MC0_CTL (0x00000400) | ||||
| // bits[63:0]  = 0xFFFFFFFFFFFFFFFF | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                       // CpuFamily | ||||
|       AMD_F14_ALL                          // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                            // platformFeatures | ||||
|     {{ | ||||
|       MSR_MC0_CTL,                           // MSR Address | ||||
|       0xFFFFFFFFFFFFFFFF,                    // OR Mask | ||||
|       0xFFFFFFFFFFFFFFFF,                    // NAND Mask | ||||
|     }} | ||||
|   }, | ||||
| // MSR_LS_CFG (0xC0011020) | ||||
| // bit[36]  Reserved = 1, workaround for erratum #530 | ||||
| // bit[25]  Reserved = 1, workaround for erratum #551 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                       // CpuFamily | ||||
|       AMD_F14_ALL                          // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                            // platformFeatures | ||||
|     {{ | ||||
|       MSR_LS_CFG,                            // MSR Address | ||||
|       0x0000001002000000,                    // OR Mask | ||||
|       0x0000001002000000,                    // NAND Mask | ||||
|      }} | ||||
|   }, | ||||
| // MSR_DC_CFG (0xC0011022) | ||||
| // bit[57:56]  Reserved = 2 | ||||
|   { | ||||
|     MsrRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                       // CpuFamily | ||||
|       AMD_F14_ALL                          // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                            // platformFeatures | ||||
|     {{ | ||||
|       MSR_DC_CFG,                            // MSR Address | ||||
|       0x0200000000000000,                    // OR Mask | ||||
|       0x0300000000000000,                    // NAND Mask | ||||
|      }} | ||||
|   } | ||||
| }; | ||||
|  | ||||
| CONST REGISTER_TABLE ROMDATA F14MsrRegisterTable = { | ||||
|   AllCores, | ||||
|   (sizeof (F14MsrRegisters) / sizeof (TABLE_ENTRY_FIELDS)), | ||||
|   (TABLE_ENTRY_FIELDS *) &F14MsrRegisters, | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -1,713 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 PCI tables with values as defined in BKDG | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14 | ||||
|  * @e \$Revision: 38376 $   @e \$Date: 2010-09-23 11:39:55 +0800 (Thu, 23 Sep 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "Table.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14PCITABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| //  P C I    T a b l e s | ||||
| // ---------------------- | ||||
|  | ||||
| STATIC CONST TABLE_ENTRY_FIELDS ROMDATA F14PciRegisters[] = | ||||
| { | ||||
| // Function 0 - Link Config | ||||
|  | ||||
| // D18F0x68 - Link Transaction Control | ||||
| // bit[11]     RespPassPW = 1 | ||||
| // bits[19:17] for 8bit APIC config | ||||
| // bits[22:21] DsNpReqLmt = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_0, 0x68),  // Address | ||||
|       0x002E0800,                           // regData | ||||
|       0x006E0800,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
|  | ||||
| // Function 2 - DRAM Controller | ||||
|  | ||||
| // D18F2xB8 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_2, 0xB8),  // Address | ||||
|       0x00000000,                           // regData | ||||
|       0xF000F000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F2xBC | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_2, 0xBC),  // Address | ||||
|       0x00000000,                           // regData | ||||
|       0xC0000000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F2x118 - Memory Controller Configuration Low | ||||
| // bits[7:6], MctPriHiWr = 10b | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_2, 0x118),  // Address | ||||
|       0x00000080,                           // regData | ||||
|       0x000000C0,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F2x11C - Memory Controller Configuration High | ||||
| // bits[24:22], PrefConf = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_2, 0x11C),  // Address | ||||
|       0x00400000,                           // regData | ||||
|       0x01C00000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
|  | ||||
| // Function 3 - Misc. Control | ||||
|  | ||||
| // D18F3x40 - MCA NB Control | ||||
| // bit[8]  MstrAbortEn = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x40),  // Address | ||||
|       0x00000100,                           // regData | ||||
|       0x00000100,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3x44 - MCA NB Configuration | ||||
| // bit[27]     NbMcaToMstCpuEn = 1 | ||||
| // bit[25]     DisPciCfgCpuErrRsp = 1 | ||||
| // bit[21]     SyncOnAnyErrEn = 1 | ||||
| // bit[20]     SyncOnWDTEn = 1 | ||||
| // bits[13:12] WDTBaseSel = 0 | ||||
| // bits[11:9]  WDTCntSel[2:0] = 0 | ||||
| // bit[6]      CpuErrDis = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x44),  // Address | ||||
|       0x0A300040,                           // regData | ||||
|       0x0A303E40,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3x84 - ACPI Power State Control High | ||||
| // bit[18] Smaf6DramMemClkTri = 1 | ||||
| // bit[17] Smaf6DramSr = 1 | ||||
| // bit[2]  Smaf4DramMemClkTri = 1 | ||||
| // bit[1]  Smaf4DramSr = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x84),  // Address | ||||
|       0x00060006,                           // regData | ||||
|       0x00060006,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3x8C - NB Configuration High | ||||
| // bit[26] EnConvertToNonIsoc = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x8C),  // Address | ||||
|       0x04000000,                           // regData | ||||
|       0x04000000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3xA0 - Power Control Miscellaneous | ||||
| // bit[9] SviHighFreqSel = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0xA0),  // Address | ||||
|       0x00000200,                           // regData | ||||
|       0x00000200,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3xA4 - Reported Temperature Control | ||||
| // bits[12:8] PerStepTimeDn = 0xF | ||||
| // bit[7]     TmpSlewDnEn = 1 | ||||
| // bits[6:5]  TmpMaxDiffUp = 0x3 | ||||
| // bits[4:0]  PerStepTimeUp = 0xF | ||||
|  | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0xA4),  // Address | ||||
|       0x00000FEF,                           // regData | ||||
|       0x00001FFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3xD4 - Clock Power Timing Control 0 | ||||
| // bits[11:8]  ClkRampHystSel = 0xF | ||||
| // bits[15:12] OnionOutHyst = 0x4 | ||||
| // bit[17]     ClockGatingEnDram = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0xD4),  // Address | ||||
|       0x00024F00,                           // regData | ||||
|       0x0002FF00,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3xDC - Clock Power Timing Control 2 | ||||
| // bits[29:27] NbClockGateHyst = 3 | ||||
| // bit[30]     NbClockGateEn = 0 - erratum #596 | ||||
| // bit[31]     CnbCifClockGateEn = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0xDC),  // Address | ||||
|       0x98000000,                           // regData | ||||
|       0xF8000000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3x180 - Extended NB MCA Configuration | ||||
| // bit[2]   WDTCntSel[3] = 0 | ||||
| // bit[5]   DisPciCfgCpuMstAbtRsp = 1 | ||||
| // bit[21]  SyncFloodOnCpuLeakErr = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x180), // Address | ||||
|       0x00200020,                           // regData | ||||
|       0x00200024,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F3x188 - NB Extended Configuration | ||||
| // bit[21]      EnCpuSerWrBehindIoRd = 0 | ||||
| // bit[23]      EnCpuSerRdBehindIoRd = 0 | ||||
| // bits[27:24]  FeArbCpuWeightOverLoPrio = 0x0B | ||||
| // bits[31:28]  FeArbCpuWeightOverHiPrio = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x188), // Address | ||||
|       0x1B000000,                           // regData | ||||
|       0xFFA00000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
|  | ||||
| // Function 4 - Extended Misc. Control | ||||
|  | ||||
| // D18F4x118 - C-state Control 1 | ||||
| // bits[2:0]  CstAct0 = 0 | ||||
| // bits[10:8] CstAct1 = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x118), // Address | ||||
|       0x00000000,                           // regData | ||||
|       0x00000707,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F4x124 - C-state Monitor Control 1 | ||||
| // bit[15]      TimerTickIntvlScale = 1 | ||||
| // bit[16]      TrackTimerTickInterEn = 1 | ||||
| // bit[17]      IntMonCC6En = 1 | ||||
| // bits[21:18]  IntMonCC6Lmt = 4 | ||||
| // bit[22]      IntMonPkgC6En = 0 | ||||
| // bits[26:23]  IntMonPkgC6Lmt = 0x0A | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x124), // Address | ||||
|       0x05138000,                           // regData | ||||
|       0x07FF8000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F4x134 - C-state Monitor Control 3 | ||||
| // bits[3:0]    IntRatePkgC6MaxDepth = 0 | ||||
| // bits[7:4]    IntRatePkgC6Threshold = 0 | ||||
| // bits[10:8]   IntRatePkgC6BurstLen = 1 | ||||
| // bits[15:11]  IntRatePkgC6DecrRate = 0x0A | ||||
| // bits[19:16]  IntRateCC6MaxDepth = 5 | ||||
| // bits[23:20]  IntRateCC6Threshold = 4 | ||||
| // bits[26:24]  IntRateCC6BurstLen = 5 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x134), // Address | ||||
|       0x05455100,                           // regData | ||||
|       0x07FFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F4x13C - SMAF Code DID 1 | ||||
| // bits[4:0]    Smaf4Did = 0x0F | ||||
| // bits[20:16]  Smaf6Did = 0x0F | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x13C), // Address | ||||
|       0x000F000F,                           // regData | ||||
|       0x001F001F,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F4x1A4 - C-state Monitor Mask | ||||
| // bits[7:0]    IntRateMonMask = 0xFC | ||||
| // bits[15:8]   TimerTickMonMask = 0xFF | ||||
| // bits[23:16]  NonC0MonMask = 0xFF | ||||
| // bits[31:24]  C0MonMask = 0xFF | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x1A4), // Address | ||||
|       0xFFFFFFFC,                           // regData | ||||
|       0xFFFFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F4x1A8 - CPU State Power Management Dynamic Control 0 | ||||
| // bits[4:0]   SingleHaltCpuDid = 0x1E | ||||
| // bits[9:5]   AllHaltCpuDid = 0x1F | ||||
| // bit[15]     CpuProbEn = 0 | ||||
| // bits[22:20] PServiceTmr = 1 | ||||
| // bit[23]     PServiceTmrEn = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x1A8), // Address | ||||
|       0x009003FE,                           // regData | ||||
|       0x00F083FF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F4x1AC - CPU State Power Management Dynamic Control 1 | ||||
| // bits[9:5]  C6Did = 0x1F | ||||
| // bits[28]   CoreC6Dis = 1 | ||||
| // bits[29]   PkgC6Dis = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_4, 0x1AC), // Address | ||||
|       0x300003E0,                           // regData | ||||
|       0x300003E0,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x50 - Configuration Register Access Control | ||||
| // bit[1]  CfgAccAddrMode = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x50),  // Address | ||||
|       0x00000000,                           // regData | ||||
|       0x00000002,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x54 - DRAM Arbitration Control FEQ Collision | ||||
| // bits[7:0]    FeqLoPrio = 0x20 | ||||
| // bits[15:8]   FeqMedPrio = 0x10 | ||||
| // bits[23:16]  FeqHiPrio = 8 | ||||
| // bit[31]      PpMode = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x54),  // Address | ||||
|       0x00081020,                           // regData | ||||
|       0x80FFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x58 - DRAM Arbitration Control Display Collision | ||||
| // bits[7:0]    DispLoPrio = 0x40 | ||||
| // bits[15:8]   DispMedPrio = 0x20 | ||||
| // bits[23:16]  DispHiPrio = 0x10 | ||||
| // bits[31:24]  DispUrgPrio = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x58),  // Address | ||||
|       0x00102040,                           // regData | ||||
|       0xFFFFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x5C - DRAM Arbitration Control FEQ Write Protect | ||||
| // bits[7:0]    FeqLoPrio = 0x20 | ||||
| // bits[15:8]   FeqMedPrio = 0x10 | ||||
| // bits[23:16]  FeqHiPrio = 0x08 | ||||
| // bit[31]      PpMode = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x5C),  // Address | ||||
|       0x00081020,                           // regData | ||||
|       0x80FFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x60 - DRAM Arbitration Control Display Write Protect | ||||
| // bits[7:0]    DispLoPri = 0x20 | ||||
| // bits[15:8]   DispMedPrio = 0x10 | ||||
| // bits[23:16]  DispHiPrio = 0x08 | ||||
| // bits[31:24]  DispUrgPrio = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x60),  // Address | ||||
|       0x00081020,                           // regData | ||||
|       0xFFFFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x64 - DRAM Arbitration Control FEQ Read Protect | ||||
| // bits[7:0]    FeqLoPrio = 0x10 | ||||
| // bits[15:8]   FeqMedPrio = 8 | ||||
| // bits[23:16]  FeqHiPrio = 4 | ||||
| // bit[31]      PpMode = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x64),  // Address | ||||
|       0x00040810,                           // regData | ||||
|       0x80FFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x68 - DRAM Arbitration Control Display  Read Protect | ||||
| // bits[7:0]    DispLoPrio = 0x10 | ||||
| // bits[15:8]   DispMedPrio = 8 | ||||
| // bits[23:16]  DispHiPrio = 4 | ||||
| // bits[31:24]  DispUrgPrio = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x68),  // Address | ||||
|       0x00040810,                           // regData | ||||
|       0xFFFFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x6C - DRAM Arbitration Control FEQ Fairness Timer | ||||
| // bits[7:0]    FeqLoPrio = 0x80 | ||||
| // bits[15:8]   FeqMedPrio = 0x40 | ||||
| // bits[23:16]  FeqHiPrio = 0x20 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x6C),  // Address | ||||
|       0x00204080,                           // regData | ||||
|       0x00FFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x70 - DRAM Arbitration Control Display Fairness Timer | ||||
| // bits[7:0]    DispLoPrio = 0x80 | ||||
| // bits[15:8]   DispMedPrio = 0x40 | ||||
| // bits[23:16]  DispHiPrio = 0x20 | ||||
| // bits[31:24]  DispUrPrio = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x70),  // Address | ||||
|       0x00204080,                           // regData | ||||
|       0xFFFFFFFF,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x74 - Dram Idle Page Close Limit | ||||
| // bits[40]    IdleLimit = 0x1E | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x74),  // Address | ||||
|       0x0000001E,                           // regData | ||||
|       0x0000001F,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x78 - Dram Prioritization and Arbitration Control | ||||
| // bits[1:0]    DispDbePrioEn = 3 | ||||
| // bit[2]       FeqDbePrioEn = 1 | ||||
| // bit[3]       DispArbCtrl = 0 | ||||
| // bits[5:4]    GlcEosDet = 3 | ||||
| // bit[6]       GlcEosDetDis = 0 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x78),  // Address | ||||
|       0x00000037,                           // regData | ||||
|       0x0000007F,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x90 - NB P-state Config Low | ||||
| // As part of BIOS Requirements for NB P-state Initialization | ||||
| // bit[30]      NbPsCtrlDis = 1 | ||||
| // bit[29]      NbPsForceSel = 0 | ||||
| // bit[28]      NbPsForceReq = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x90),  // Address | ||||
|       0x50000000,                           // regData | ||||
|       0x70000000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x94 - NB P-state Config High | ||||
| // bits[25:23]  NbPsC0Timer = 4 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x94),  // Address | ||||
|       0x02000000,                           // regData | ||||
|       0x03800000,                           // regMask | ||||
|     }} | ||||
|   }, | ||||
| // D18F6x9C - NCLK Reduction Control | ||||
| // bits[6:0]   NclkRedDiv = 0x60 | ||||
| // bit[7]      NclkRedSelfRefrAlways = 1 | ||||
| // bit[8]      NclkRampWithDllRelock = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
|     {AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_6, 0x9C),  // Address | ||||
|       0x000001E0,                           // regData | ||||
|       0x000001FF,                           // regMask | ||||
|     }} | ||||
|   } | ||||
| }; | ||||
|  | ||||
| CONST REGISTER_TABLE ROMDATA F14PciRegisterTable = { | ||||
|   PrimaryCores, | ||||
|   (sizeof (F14PciRegisters) / sizeof (TABLE_ENTRY_FIELDS)), | ||||
|   F14PciRegisters, | ||||
| }; | ||||
| @@ -1,102 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Per Core PCI tables with values as defined in BKDG | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/FAMILY/0x14 | ||||
|  * @e \$Revision: 36592 $   @e \$Date: 2010-08-21 05:31:55 +0800 (Sat, 21 Aug 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "Table.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14PERCOREPCITABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| //  Per Core P C I    T a b l e s | ||||
| // ---------------------- | ||||
|  | ||||
| STATIC CONST TABLE_ENTRY_FIELDS ROMDATA F14PerCorePciRegisters[] = | ||||
| { | ||||
| // D18F3x1CC - IBS Control | ||||
| // bits[3:0]   LvtOffset = 0 | ||||
| // bit[8]      LvtOffsetVal = 1 | ||||
|   { | ||||
|     PciRegister, | ||||
|     { | ||||
|       AMD_FAMILY_14,                      // CpuFamily | ||||
|       AMD_F14_ALL                         // CpuRevision | ||||
|     }, | ||||
| 	{AMD_PF_ALL},                           // platformFeatures | ||||
|     {{ | ||||
|       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x1CC),  // Address | ||||
|       0x00000100,                           // regData | ||||
|       0x0000010F,                           // regMask | ||||
|     }} | ||||
|   } | ||||
| }; | ||||
|  | ||||
| CONST REGISTER_TABLE ROMDATA F14PerCorePciRegisterTable = { | ||||
|   AllCores, | ||||
|   (sizeof (F14PerCorePciRegisters) / sizeof (TABLE_ENTRY_FIELDS)), | ||||
|   F14PerCorePciRegisters, | ||||
| }; | ||||
| @@ -1,454 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 P-State power check | ||||
|  * | ||||
|  * Performs the "Processor-Systemboard Power Delivery Compatibility Check" as | ||||
|  * described in the BKDG. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 46951 $   @e \$Date: 2011-02-11 12:37:59 -0700 (Fri, 11 Feb 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuApicUtilities.h" | ||||
| #include "cpuServices.h" | ||||
| #include "GeneralServices.h" | ||||
| #include "cpuEarlyInit.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuF14PowerCheck.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14POWERCHECK_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14PmPwrCheckCore ( | ||||
|   IN       VOID *ErrorData, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| VOID | ||||
| STATIC | ||||
| F14PmPwrChkCopyPstate ( | ||||
|   IN       UINT8 Dest, | ||||
|   IN       UINT8 Src, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Family 14h Ontario core 0 entry point for performing the family 14h Ontario Processor- | ||||
|  * Systemboard Power Delivery Check. | ||||
|  * | ||||
|  * The steps are as follows: | ||||
|  *    1. Starting with hardware P0, loop through all P-states until a passing state is | ||||
|  *       found.  A passing state is one in which the current required by the | ||||
|  *       CPU is less than the maximum amount of current that the system can | ||||
|  *       provide to the CPU.  If P0 is under the limit, no further action is | ||||
|  *       necessary. | ||||
|  *    2. If at least one P-State is under the limit & at least one P-State is | ||||
|  *       over the limit, the BIOS must: | ||||
|  *       a. Program D18F4x15C[BoostSrc]=0. | ||||
|  *       b. If the processor's current P-State is disabled by the power check, | ||||
|  *          then the BIOS must request a transition to an enabled P-state | ||||
|  *          using MSRC001_0062[PstateCmd] and wait for MSRC001_0063[CurPstate] | ||||
|  *          to reflect the new value. | ||||
|  *       c. Copy the contents of the enabled P-state MSRs to the highest | ||||
|  *          performance P-state locations. | ||||
|  *       d. Request a P-state transition to the P-state MSR containing the | ||||
|  *          COF/VID values currently applied. | ||||
|  *       e. Adjust the following P-state parameters affected by the P-state | ||||
|  *          MSR copy by subtracting the number of P-states that are disabled | ||||
|  *          by the power check. | ||||
|  *          1. D18F3x64[HtcPstateLimit] | ||||
|  *          2. D18F3xDC[PstateMaxVal] | ||||
|  *    3. If all P-States are over the limit, the BIOS must: | ||||
|  *       a. Program D18F4x15C[BoostSrc]=0. | ||||
|  *       b. If the processor's current P-State is != D18F3xDC[PstateMaxVal], then | ||||
|  *          write D18F3xDC[PstateMaxVal] to MSRC001_0062[PstateCmd] and wait for | ||||
|  *          MSRC001_0063[CurPstate] to reflect the new value. | ||||
|  *       c. If D18F3xDC[PstateMaxVal]!= 000b, copy the contents of the P-state | ||||
|  *          MSR pointed to by D18F3xDC[PstateMaxVal] to MSRC001_0064 and set | ||||
|  *          MSRC001_0064[PstateEn] | ||||
|  *       d. Write 000b to MSRC001_0062[PstateCmd] and wait for MSRC001_0063 | ||||
|  *          [CurPstate] to reflect the new value. | ||||
|  *       e. Adjust the following P-state parameters to zero: | ||||
|  *          1. D18F3x64[HtcPstateLimit] | ||||
|  *          2. D18F3xDC[PstateMaxVal] | ||||
|  * | ||||
|  * @param[in]  FamilySpecificServices  The current Family Specific Services. | ||||
|  * @param[in]  CpuEarlyParams          Service parameters. | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14PmPwrCheck ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8       DisHwPsNum; | ||||
|   UINT8       DisSwPsNum; | ||||
|   UINT8       PsMaxVal; | ||||
|   UINT8       Pstate; | ||||
|   UINT8       PstateLimit; | ||||
|   UINT8       NumberBoostStates; | ||||
|   UINT32      ProcIddMax; | ||||
|   UINT32      Socket; | ||||
|   UINT32      Module; | ||||
|   UINT32      Core; | ||||
|   PCI_ADDR    PciAddress; | ||||
|   UINT64      LocalMsrRegister; | ||||
|   BOOLEAN     ThermalPstateEn; | ||||
|   NB_CAPS_REGISTER              NbCaps; | ||||
|   HTC_REGISTER                  HtcReg; | ||||
|   CLK_PWR_TIMING_CTRL2_REGISTER ClkPwrTimingCtrl2; | ||||
|   CPB_CTRL_REGISTER             CpbCtrl; | ||||
|   CPU_LOGICAL_ID                CpuFamilyRevision; | ||||
|   AP_TASK     TaskPtr; | ||||
|   AGESA_STATUS IgnoredSts; | ||||
|   PWRCHK_ERROR_DATA ErrorData; | ||||
|  | ||||
|   // get the socket number | ||||
|   IdentifyCore (StdHeader, &Socket, &Module, &Core, &IgnoredSts); | ||||
|   ErrorData.SocketNumber = (UINT8) Socket; | ||||
|  | ||||
|   ASSERT (Core == 0); | ||||
|  | ||||
|   // save ThermalPstateEn | ||||
|   //   TRUE if the P-state indicated by D18F3x64[HtcPstateLimit] is enabled; | ||||
|   //   FALSE otherwise. | ||||
|   PciAddress.AddressValue = HTC_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &HtcReg, StdHeader); // D18F3x64 | ||||
|   LibAmdMsrRead (PS_REG_BASE + HtcReg.HtcPstateLimit, &LocalMsrRegister, StdHeader); | ||||
|   if (((PSTATE_MSR *) &LocalMsrRegister)->PsEnable == 1) { | ||||
|     ThermalPstateEn = TRUE; | ||||
|   } else { | ||||
|     ThermalPstateEn = FALSE; | ||||
|   } | ||||
|  | ||||
|   // get the Max P-state value | ||||
|   for (PsMaxVal = NM_PS_REG - 1; PsMaxVal != 0; --PsMaxVal) { | ||||
|     LibAmdMsrRead (PS_REG_BASE + PsMaxVal, &LocalMsrRegister, StdHeader); | ||||
|     if (((PSTATE_MSR *) &LocalMsrRegister)->PsEnable == 1) { | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ErrorData.HwPstateNumber = (UINT8) (PsMaxVal + 1); | ||||
|  | ||||
|   // get NumberBoostStates | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|   if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) != 0) { | ||||
|     NumberBoostStates = 0; | ||||
|   } else { | ||||
|     PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &CpbCtrl, StdHeader);  // D18F4x15C | ||||
|     NumberBoostStates = (UINT8) CpbCtrl.NumBoostStates; | ||||
|   } | ||||
|  | ||||
|   // update PstateMaxVal if warranted by HtcPstateLimit | ||||
|   PciAddress.AddressValue = NB_CAPS_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &NbCaps, StdHeader); | ||||
|   if (NbCaps.HtcCapable == 1) { | ||||
|     if (HtcReg.HtcTmpLmt != 0) { | ||||
|       PciAddress.AddressValue = CPTC2_PCI_ADDR; | ||||
|       LibAmdPciRead (AccessWidth32, PciAddress, &ClkPwrTimingCtrl2, StdHeader); // D18F3xDC | ||||
|       if (HtcReg.HtcPstateLimit > ClkPwrTimingCtrl2.PstateMaxVal) { | ||||
|         ClkPwrTimingCtrl2.PstateMaxVal = HtcReg.HtcPstateLimit; | ||||
|         LibAmdPciWrite (AccessWidth32, PciAddress, &ClkPwrTimingCtrl2, StdHeader); // D18F3xDC | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   DisHwPsNum = 0; | ||||
|   for (Pstate = 0; Pstate < ErrorData.HwPstateNumber; Pstate++) { | ||||
|     if (FamilySpecificServices->GetProcIddMax (FamilySpecificServices, Pstate, &ProcIddMax, StdHeader)) { | ||||
|       if (ProcIddMax > CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].CurrentLimit) { | ||||
|         // Add to event log the Pstate that exceeded the current limit | ||||
|         PutEventLog (AGESA_WARNING, | ||||
|                      CPU_EVENT_PM_PSTATE_OVERCURRENT, | ||||
|                      Socket, Pstate, 0, 0, StdHeader); | ||||
|         DisHwPsNum++; | ||||
|       } else { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // get the number of software Pstate that is disabled by delivery check | ||||
|   if (NumberBoostStates < DisHwPsNum) { | ||||
|     DisSwPsNum = DisHwPsNum - NumberBoostStates; | ||||
|   } else { | ||||
|     DisSwPsNum = 0; | ||||
|   } | ||||
|   // If all P-state registers are disabled, move P[PsMaxVal] to P0 | ||||
|   // and transition to P0, then wait for CurPstate = 0 | ||||
|  | ||||
|   ErrorData.AllowablePstateNumber = ((PsMaxVal + 1) - DisHwPsNum); | ||||
|  | ||||
|   // We only need to log this event on the BSC | ||||
|   if (ErrorData.AllowablePstateNumber == 0) { | ||||
|     PutEventLog (AGESA_FATAL, | ||||
|                  CPU_EVENT_PM_ALL_PSTATE_OVERCURRENT, | ||||
|                  Socket, 0, 0, 0, StdHeader); | ||||
|   } | ||||
|  | ||||
|   if (DisHwPsNum != 0) { | ||||
|     // Program F4x15C[BoostSrc] = 0 | ||||
|     if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) == 0) { | ||||
|       PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|       LibAmdPciRead (AccessWidth32, PciAddress, &CpbCtrl, StdHeader);  // D18F4x15C | ||||
|       CpbCtrl.BoostSrc = 0; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &CpbCtrl, StdHeader);  // D18F4x15C | ||||
|     } | ||||
|  | ||||
|     TaskPtr.FuncAddress.PfApTaskI = F14PmPwrCheckCore; | ||||
|     TaskPtr.DataTransfer.DataSizeInDwords = SIZE_IN_DWORDS (PWRCHK_ERROR_DATA); | ||||
|     TaskPtr.DataTransfer.DataPtr = &ErrorData; | ||||
|     TaskPtr.DataTransfer.DataTransferFlags = 0; | ||||
|     TaskPtr.ExeFlags = WAIT_FOR_CORE; | ||||
|     ApUtilRunCodeOnAllLocalCoresAtEarly (&TaskPtr, StdHeader, CpuEarlyParams); | ||||
|  | ||||
|     // Final Step | ||||
|     //    D18F3x64[HtPstatelimit] -= disPsNum | ||||
|     //    D18F3xDC[PstateMaxVal]-= disPsNum | ||||
|     PciAddress.AddressValue = HTC_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &HtcReg, StdHeader); // D18F3x64 | ||||
|     PciAddress.AddressValue = NB_CAPS_PCI_ADDR; // D18F3xE8 | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &NbCaps, StdHeader); | ||||
|     if (ThermalPstateEn || HtcReg.HtcTmpLmt == 0 || NbCaps.HtcCapable == 0) { | ||||
|       PstateLimit = (UINT8) HtcReg.HtcPstateLimit; | ||||
|       if (PstateLimit > DisHwPsNum) { | ||||
|         PstateLimit = (UINT8) (PstateLimit - DisSwPsNum); | ||||
|     } else { | ||||
|         PstateLimit = NumberBoostStates; | ||||
|     } | ||||
|       HtcReg.HtcPstateLimit = PstateLimit; | ||||
|       PciAddress.AddressValue = HTC_PCI_ADDR; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &HtcReg, StdHeader); // D18F3x64 | ||||
|  | ||||
|     PciAddress.AddressValue = CPTC2_PCI_ADDR; | ||||
|       LibAmdPciRead (AccessWidth32, PciAddress, &ClkPwrTimingCtrl2, StdHeader); // D18F3xDC | ||||
|       PstateLimit = (UINT8) ClkPwrTimingCtrl2.PstateMaxVal; | ||||
|       if (PstateLimit > DisHwPsNum) { | ||||
|         PstateLimit = (UINT8) (PstateLimit - DisSwPsNum); | ||||
|     } else { | ||||
|         PstateLimit = NumberBoostStates; | ||||
|       } | ||||
|       ClkPwrTimingCtrl2.PstateMaxVal = PstateLimit; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &ClkPwrTimingCtrl2, StdHeader); // D18F3xDC | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Core-level error handler called if any p-states were determined to be out | ||||
|  * of range for the mother board. | ||||
|  * | ||||
|  * This function implements steps 2b-d and 3b-d on each core. | ||||
|  * | ||||
|  * @param[in]  ErrorData            Details about the error condition. | ||||
|  * @param[in]  StdHeader            Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14PmPwrCheckCore ( | ||||
|   IN       VOID *ErrorData, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT8  i; | ||||
|   UINT8  HardwarePsMaxVal; | ||||
|   UINT8  DisHwPsNum; | ||||
|   UINT8  DisSwPsNum; | ||||
|   UINT8  CurrentSoftwarePs; | ||||
|   UINT8  CurrentHardwarePs; | ||||
|   UINT8  NumberBoostStates; | ||||
|   UINT64 LocalMsrRegister; | ||||
|   CPU_LOGICAL_ID        CpuFamilyRevision; | ||||
|   PCI_ADDR              PciAddress; | ||||
|   CPB_CTRL_REGISTER     CpbCtrl; | ||||
|   CPU_SPECIFIC_SERVICES *FamilySpecificServices; | ||||
|  | ||||
|   GetCpuServicesOfCurrentCore ((const CPU_SPECIFIC_SERVICES **)&FamilySpecificServices, StdHeader); | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|  | ||||
|   HardwarePsMaxVal = (((PWRCHK_ERROR_DATA *) ErrorData)->HwPstateNumber - 1); | ||||
|   DisHwPsNum = (((PWRCHK_ERROR_DATA *) ErrorData)->HwPstateNumber - | ||||
|              ((PWRCHK_ERROR_DATA *) ErrorData)->AllowablePstateNumber); | ||||
|  | ||||
|   LibAmdMsrRead (MSR_PSTATE_STS, &LocalMsrRegister, StdHeader); | ||||
|   CurrentSoftwarePs = (UINT8) (((PSTATE_STS_MSR *) &LocalMsrRegister)->CurPstate); | ||||
|  | ||||
|   if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) != 0) { | ||||
|     NumberBoostStates = 0; | ||||
|   } else { | ||||
|     PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &CpbCtrl, StdHeader);  // D18F4x15C | ||||
|     NumberBoostStates = (UINT8) CpbCtrl.NumBoostStates; | ||||
|   } | ||||
|  | ||||
|   CurrentHardwarePs = CurrentSoftwarePs + NumberBoostStates; | ||||
|  | ||||
|   if (NumberBoostStates < DisHwPsNum) { | ||||
|     DisSwPsNum = DisHwPsNum - NumberBoostStates; | ||||
|   } else { | ||||
|     DisSwPsNum = 0; | ||||
|   } | ||||
|  | ||||
|   if (((PWRCHK_ERROR_DATA *) ErrorData)->AllowablePstateNumber == 0) { | ||||
|  | ||||
|     // Step 1 | ||||
|     // Transition to Pstate Max if not there already | ||||
|  | ||||
|     if (CurrentHardwarePs != HardwarePsMaxVal) { | ||||
|       FamilySpecificServices->TransitionPstate (FamilySpecificServices, (HardwarePsMaxVal - NumberBoostStates), (BOOLEAN) TRUE, StdHeader); | ||||
|       CurrentSoftwarePs = HardwarePsMaxVal - NumberBoostStates; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     // Step 2 | ||||
|     // If CurrentSoftwarePs is not P0, copy CurrentSoftwarePs contents to Software P0 and switch | ||||
|     // to P0. | ||||
|  | ||||
|     if (CurrentSoftwarePs != 0) { | ||||
|       F14PmPwrChkCopyPstate (NumberBoostStates, CurrentSoftwarePs, StdHeader); | ||||
|       LibAmdMsrRead ((PS_REG_BASE + NumberBoostStates), &LocalMsrRegister, StdHeader); | ||||
|       ((PSTATE_MSR *) &LocalMsrRegister)->PsEnable = 1; | ||||
|       LibAmdMsrWrite ((PS_REG_BASE + NumberBoostStates), &LocalMsrRegister, StdHeader); | ||||
|       FamilySpecificServices->TransitionPstate (FamilySpecificServices, (UINT8) 0, (BOOLEAN) TRUE, StdHeader); | ||||
|     } | ||||
|   } else { | ||||
|  | ||||
|     // move remaining P-state register(s) up | ||||
|     // Step 1 | ||||
|     // Transition to a valid Pstate if current Pstate has been disabled | ||||
|  | ||||
|     if (CurrentHardwarePs < DisHwPsNum) { | ||||
|       FamilySpecificServices->TransitionPstate (FamilySpecificServices, (HardwarePsMaxVal - NumberBoostStates), (BOOLEAN) TRUE, StdHeader); | ||||
|       CurrentSoftwarePs = HardwarePsMaxVal - NumberBoostStates; | ||||
|     } | ||||
|  | ||||
|     if (DisSwPsNum != 0) { | ||||
|     // Step 2 | ||||
|     // Move enabled Pstates up and disable the remainder | ||||
|  | ||||
|       for (i = 0; (i + DisHwPsNum) <= HardwarePsMaxVal; ++i) { | ||||
|         F14PmPwrChkCopyPstate ((i + NumberBoostStates), (i + DisHwPsNum), StdHeader); | ||||
|     } | ||||
|     // Step 3 | ||||
|     // Transition to current COF/VID at shifted location | ||||
|  | ||||
|       CurrentSoftwarePs = (CurrentSoftwarePs - DisSwPsNum); | ||||
|       FamilySpecificServices->TransitionPstate (FamilySpecificServices, CurrentSoftwarePs, (BOOLEAN) TRUE, StdHeader); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (((PWRCHK_ERROR_DATA *) ErrorData)->AllowablePstateNumber == 0) { | ||||
|     // only software P0 should be enabled. | ||||
|     i = NumberBoostStates + 1; | ||||
|   } else { | ||||
|     if (DisSwPsNum == 0) { | ||||
|       // No software Pstate is disabed, set i = HardwarePsMaxVal + 1 to skip below 'while loop'. | ||||
|       i = HardwarePsMaxVal + 1; | ||||
|     } else { | ||||
|       // get the first software Pstate that should be disabled. | ||||
|       i = HardwarePsMaxVal - DisSwPsNum + 1; | ||||
|   } | ||||
|   } | ||||
|   while (i <= HardwarePsMaxVal) { | ||||
|     FamilySpecificServices->DisablePstate (FamilySpecificServices, i, StdHeader); | ||||
|     i++; | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Copies the contents of one P-State MSR to another. | ||||
|  * | ||||
|  * @param[in]  Dest              Destination p-state number | ||||
|  * @param[in]  Src               Source p-state number | ||||
|  * @param[in]  StdHeader         Config handle for library and services | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14PmPwrChkCopyPstate ( | ||||
|   IN       UINT8 Dest, | ||||
|   IN       UINT8 Src, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 LocalMsrRegister; | ||||
|  | ||||
|   LibAmdMsrRead ((UINT32) (PS_REG_BASE + Src), &LocalMsrRegister, StdHeader); | ||||
|   LibAmdMsrWrite ((UINT32) (PS_REG_BASE + Dest), &LocalMsrRegister, StdHeader); | ||||
| } | ||||
|  | ||||
| @@ -1,83 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Power related functions and structures | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _CPU_F14_POWER_CHECK_H_ | ||||
| #define _CPU_F14_POWER_CHECK_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| /// Power Check Error Data | ||||
| typedef struct { | ||||
|   UINT8 SocketNumber;                 ///< Socket Number | ||||
|   UINT8 HwPstateNumber;               ///< Hardware P-state Number | ||||
|   UINT8 AllowablePstateNumber;        ///< Allowable P-state Number | ||||
| } PWRCHK_ERROR_DATA; | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| F14PmPwrCheck ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif  // _CPU_F14_POWER_CHECK_H_ | ||||
| @@ -1,548 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Power Management related stuff | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 46836 $   @e \$Date: 2011-02-10 12:22:59 -0700 (Thu, 10 Feb 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _CPUF14POWERMGMT_H_ | ||||
| #define _CPUF14POWERMGMT_H_ | ||||
|  | ||||
| /* | ||||
|  * Family 14h CPU Power Management MSR definitions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /* P-state Current Limit Register 0xC0010061 */ | ||||
| #define MSR_PSTATE_CURRENT_LIMIT 0xC0010061 | ||||
|  | ||||
| /// Pstate Current Limit MSR Register | ||||
| typedef struct { | ||||
|   UINT64 CurPstateLimit:3;           ///< Current Pstate Limit | ||||
|   UINT64 :1;                         ///< Reserved | ||||
|   UINT64 PstateMaxVal:3;             ///< Pstate Max Value | ||||
|   UINT64 :57;                        ///< Reserved | ||||
| } PSTATE_CURLIM_MSR; | ||||
|  | ||||
|  | ||||
| /* P-state Control Register 0xC0010062 */ | ||||
| #define MSR_PSTATE_CTL 0xC0010062 | ||||
|  | ||||
| /// Pstate Control MSR Register | ||||
| typedef struct { | ||||
|   UINT64 PstateCmd:3;                ///< Pstate change command | ||||
|   UINT64 :61;                        ///< Reserved | ||||
| } PSTATE_CTRL_MSR; | ||||
|  | ||||
|  | ||||
| /* P-state Status Register 0xC0010063 */ | ||||
| #define MSR_PSTATE_STS 0xC0010063 | ||||
|  | ||||
| /// Pstate Status MSR Register | ||||
| typedef struct { | ||||
|   UINT64 CurPstate:3;                ///< Current Pstate | ||||
|   UINT64 :61;                        ///< Reserved | ||||
| } PSTATE_STS_MSR; | ||||
|  | ||||
|  | ||||
| /* P-state Registers 0xC001006[B:4] */ | ||||
| #define MSR_PSTATE_0 0xC0010064 | ||||
| #define MSR_PSTATE_1 0xC0010065 | ||||
| #define MSR_PSTATE_2 0xC0010066 | ||||
| #define MSR_PSTATE_3 0xC0010067 | ||||
| #define MSR_PSTATE_4 0xC0010068 | ||||
| #define MSR_PSTATE_5 0xC0010069 | ||||
| #define MSR_PSTATE_6 0xC001006A | ||||
| #define MSR_PSTATE_7 0xC001006B | ||||
|  | ||||
| #define PS_REG_BASE  MSR_PSTATE_0    /* P-state Register base */ | ||||
| #define PS_MAX_REG   MSR_PSTATE_7    /* Maximum P-State Register */ | ||||
| #define PS_MIN_REG   MSR_PSTATE_0    /* Minimum P-State Register */ | ||||
| #define NM_PS_REG    8               /* number of P-state MSR registers */ | ||||
|  | ||||
| /// Pstate MSR | ||||
| typedef struct { | ||||
|   UINT64 CpuDidLSD:4;                ///< CPU core divisor identifier least significant digit | ||||
|   UINT64 CpuDidMSD:5;                ///< CPU core divisor identifier most significant digit | ||||
|   UINT64 CpuVid:7;                   ///< CPU core VID | ||||
|   UINT64 :16;                        ///< Reserved | ||||
|   UINT64 IddValue:8;                 ///< Current value field | ||||
|   UINT64 IddDiv:2;                   ///< Current divisor field | ||||
|   UINT64 :21;                        ///< Reserved | ||||
|   UINT64 PsEnable:1;                 ///< P-state Enable | ||||
| } PSTATE_MSR; | ||||
|  | ||||
|  | ||||
| /* COFVID Control Register 0xC0010070 */ | ||||
| #define MSR_COFVID_CTL 0xC0010070 | ||||
|  | ||||
| /// COFVID Control MSR Register | ||||
| typedef struct { | ||||
|   UINT64 CpuDid:4;                   ///< CPU core divisor identifier | ||||
|   UINT64 CpuDidMSD:5;                ///< CPU core frequency identifier | ||||
|   UINT64 CpuVid:7;                   ///< CPU core VID | ||||
|   UINT64 PstateId:3;                 ///< P-state identifier | ||||
|   UINT64 IgnoreFidVidDid:1;          ///< Ignore FID, VID, and DID | ||||
|   UINT64 :44;                        ///< Reserved | ||||
| } COFVID_CTRL_MSR; | ||||
|  | ||||
|  | ||||
| /* COFVID Status Register 0xC0010071 */ | ||||
| #define MSR_COFVID_STS 0xC0010071 | ||||
|  | ||||
| /// COFVID Status MSR Register | ||||
| typedef struct { | ||||
|   UINT64 CurCpuDid:4;                ///< Current CPU core divisor ID | ||||
|   UINT64 CurCpuDidMSD:5;             ///< Current CPU core frequency ID | ||||
|   UINT64 CurCpuVid:7;                ///< Current CPU core VID | ||||
|   UINT64 CurPstate:3;                ///< Current P-state | ||||
|   UINT64 :1;                         ///< Reserved | ||||
|   UINT64 PstateInProgress:1;         ///< P-state change in progress | ||||
|   UINT64 :4;                         ///< Reserved | ||||
|   UINT64 CurNbVid:7;                 ///< Current northbridge VID | ||||
|   UINT64 StartupPstate:3;            ///< Startup P-state number | ||||
|   UINT64 MaxVid:7;                   ///< Maximum voltage | ||||
|   UINT64 MinVid:7;                   ///< Minimum voltage | ||||
|   UINT64 MainPllOpFreqIdMax:6;       ///< Main PLL operating frequency ID maximum | ||||
|   UINT64 :1;                         ///< Reserved | ||||
|   UINT64 CurPstateLimit:3;           ///< Current P-state Limit | ||||
|   UINT64 :5;                         ///< Reserved | ||||
| } COFVID_STS_MSR; | ||||
|  | ||||
|  | ||||
| /* C-state Address Register 0xC0010073 */ | ||||
| #define MSR_CSTATE_ADDRESS 0xC0010073 | ||||
|  | ||||
| /// C-state Address MSR Register | ||||
| typedef struct { | ||||
|   UINT64 CstateAddr:16;              ///< C-state address | ||||
|   UINT64 :48;                        ///< Reserved | ||||
| } CSTATE_ADDRESS_MSR; | ||||
|  | ||||
|  | ||||
| /* CPU Watchdog Timer Register 0xC0010074 */ | ||||
| #define MSR_CPU_WDT 0xC0010074 | ||||
|  | ||||
| /// CPU Watchdog Timer Register | ||||
| typedef struct { | ||||
|   UINT64 CpuWdtEn:1;                 ///< CPU watchdog timer enable | ||||
|   UINT64 CpuWdtTimeBase:2;           ///< CPU watchdog timer time base | ||||
|   UINT64 CpuWdtCountSel:4;           ///< CPU watchdog timer count select | ||||
|   UINT64 :57;                        ///< Reserved | ||||
| } CPU_WDT_MSR; | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Family 14h CPU Power Management PCI definitions | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /* Memory controller configuration low register D18F2x118 */ | ||||
| #define MEM_CFG_LOW_REG 0x118 | ||||
| #define MEM_CFG_LOW_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_2, MEM_CFG_LOW_REG)) | ||||
|  | ||||
| /// Memory Controller Configuration Low | ||||
| typedef struct { | ||||
|   UINT32 MctPriCpuRd:2;              ///< CPU read priority | ||||
|   UINT32 MctPriCpuWr:2;              ///< CPU write priority | ||||
|   UINT32 MctPriHiRd:2;               ///< High-priority VC set read priority | ||||
|   UINT32 MctPriHiWr:2;               ///< High-priority VC set write priority | ||||
|   UINT32 MctPriDefault:2;            ///< Default non-write priority | ||||
|   UINT32 MctPriWr:2;                 ///< Default write priority | ||||
|   UINT32 :7;                         ///< Reserved | ||||
|   UINT32 C6DramLock:1;               ///< C6 DRAM lock | ||||
|   UINT32 :8;                         ///< Reserved | ||||
|   UINT32 MctVarPriCntLmt:4;          ///< Variable priority time limit | ||||
| } MEM_CFG_LOW_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Hardware thermal control register D18F3x64 */ | ||||
| #define HTC_REG 0x64 | ||||
| #define HTC_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, HTC_REG)) | ||||
|  | ||||
| /// Hardware Thermal Control PCI Register | ||||
| typedef struct { | ||||
|   UINT32 HtcEn:1;                    ///< HTC Enable | ||||
|   UINT32 :3;                         ///< Reserved | ||||
|   UINT32 HtcAct:1;                   ///< HTC Active State | ||||
|   UINT32 HtcActSts:1;                ///< HTC Active Status | ||||
|   UINT32 PslApicHiEn:1;              ///< P-state limit higher APIC int enable | ||||
|   UINT32 PslApicLoEn:1;              ///< P-state limit lower APIC int enable | ||||
|   UINT32 :8;                         ///< Reserved | ||||
|   UINT32 HtcTmpLmt:7;                ///< HTC temperature limit | ||||
|   UINT32 HtcSlewSel:1;               ///< HTC slew-controlled temp select | ||||
|   UINT32 HtcHystLmt:4;               ///< HTC hysteresis | ||||
|   UINT32 HtcPstateLimit:3;           ///< HTC P-state limit select | ||||
|   UINT32 HtcLock:1;                  ///< HTC lock | ||||
| } HTC_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Power Control Miscellaneous Register D18F3xA0 */ | ||||
| #define PW_CTL_MISC_REG 0xA0 | ||||
| #define PW_CTL_MISC_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, PW_CTL_MISC_REG)) | ||||
|  | ||||
| /// Power Control Miscellaneous PCI Register | ||||
| typedef struct { | ||||
|   UINT32 PsiVid:7;                   ///< PSI_L VID threshold | ||||
|   UINT32 PsiVidEn:1;                 ///< PSI_L VID enable | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 SviHighFreqSel:1;           ///< SVI high frequency select | ||||
|   UINT32 :6;                         ///< Reserved | ||||
|   UINT32 ConfigId:12;                ///< Configuration Identifier | ||||
|   UINT32 :3;                         ///< Reserved | ||||
|   UINT32 CofVidProg:1;               ///< COF and VID of P-states programmed | ||||
| } POWER_CTRL_MISC_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Clock Power/Timing Control 0 Register D18F3xD4 */ | ||||
| #define CPTC0_REG 0xD4 | ||||
| #define CPTC0_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, CPTC0_REG)) | ||||
|  | ||||
| /// Clock Power Timing Control PCI Register | ||||
| typedef struct { | ||||
|   UINT32 MainPllOpFreqId:6;          ///< Main PLL Fid | ||||
|   UINT32 MainPllOpFreqIdEn:1;        ///< Main PLL Fid Enable | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 ClkRampHystSel:4;           ///< Clock Ramp Hysteresis Select | ||||
|   UINT32 OnionOutHyst:4;             ///< ONION outbound hysteresis | ||||
|   UINT32 DisNclkGatingIdle:1;        ///< Disable NCLK gating when idle | ||||
|   UINT32 ClkGatingEnDram:1;          ///< Clock gating enable DRAM | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 PstateSpecFuseSel:8;        ///< P-State Specification Fuse Select | ||||
|   UINT32 :5;                         ///< Reserved | ||||
| } CLK_PWR_TIMING_CTRL_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Clock Power/Timing Control 1 Register D18F3xD8 */ | ||||
| #define CPTC1_REG 0xD8 | ||||
| #define CPTC1_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, CPTC1_REG)) | ||||
|  | ||||
| /// Clock Power Timing Control 1 PCI Register | ||||
| typedef struct { | ||||
|   UINT32 :4;                         ///< Reserved | ||||
|   UINT32 VSRampSlamTime:3;           ///< Voltage stabilization slam time | ||||
|   UINT32 :22;                        ///< Reserved | ||||
|   UINT32 SlamModeSelect:1;           ///< Voltage slam mode select | ||||
|   UINT32 :2;                         ///< Reserved | ||||
| } CLK_PWR_TIMING_CTRL1_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Clock Power/Timing Control 2 Register D18F3xDC */ | ||||
| #define CPTC2_REG 0xDC | ||||
| #define CPTC2_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, CPTC2_REG)) | ||||
|  | ||||
| /// Clock Power Timing Control 2 PCI Register | ||||
| typedef struct { | ||||
|   UINT32 :8;                         ///< Reserved | ||||
|   UINT32 PstateMaxVal:3;             ///< P-state maximum value | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 NbPs0Vid:7;                 ///< NB VID | ||||
|   UINT32 NclkFreqDone:1;             ///< NCLK frequency change done | ||||
|   UINT32 NbPs0NclkDiv:7;             ///< NCLK divisor | ||||
|   UINT32 NbClockGateHyst:3;          ///< Northbridge clock gating hysteresis | ||||
|   UINT32 NbClockGateEn:1;            ///< Northbridge clock gating enable | ||||
|   UINT32 CnbCifClockGateEn:1;        ///< CNB CIF clock gating enable | ||||
| } CLK_PWR_TIMING_CTRL2_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Northbridge Capabilities Register D18F3xE8 */ | ||||
| #define NB_CAPS_REG 0xE8 | ||||
| #define NB_CAPS_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, NB_CAPS_REG)) | ||||
|  | ||||
| /// Northbridge Capabilities PCI Register | ||||
| typedef struct { | ||||
|   UINT32 DctDualCap:1;               ///< Two-channel DRAM capable | ||||
|   UINT32 :4;                         ///< Reserved | ||||
|   UINT32 DdrMaxRate:3;               ///< Maximum DRAM data rate | ||||
|   UINT32 MctCap:1;                   ///< Memory controller capable | ||||
|   UINT32 SvmCapable:1;               ///< SVM capable | ||||
|   UINT32 HtcCapable:1;               ///< HTC capable | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 CmpCap:2;                   ///< CMP capable | ||||
|   UINT32 :14;                        ///< Reserved | ||||
|   UINT32 LHtcCapable:1;              ///< LHTC capable | ||||
|   UINT32 :3;                         ///< Reserved | ||||
| } NB_CAPS_REGISTER; | ||||
|  | ||||
|  | ||||
| /* Clock Power/Timing Control 3 Register D18F3x128 */ | ||||
| #define CPTC3_REG 0x128 | ||||
| #define CPTC3_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, CPTC3_REG)) | ||||
|  | ||||
| /// Clock Power Timing Control 3 PCI Register | ||||
| typedef struct { | ||||
|   UINT32 C6Vid:7;                    ///< C6 VID | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 NbPsiVid:7;                 ///< NB PSI_L VID threshold | ||||
|   UINT32 NbPsiVidEn:1;               ///< NB PSI_L enable | ||||
|   UINT32 :16;                        ///< Reserved | ||||
| } CLK_PWR_TIMING_CTRL3_REGISTER; | ||||
|  | ||||
| /* Local hardware thermal control register D18F3x138 */ | ||||
| #define LHTC_REG 0x138 | ||||
| #define LHTC_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, LHTC_REG)) | ||||
|  | ||||
| /// Local Hardware Thermal Control PCI Register | ||||
| typedef struct { | ||||
|   UINT32 LHtcEn:1;                   ///< Local HTC Enable | ||||
|   UINT32 :7;                         ///< Reserved | ||||
|   UINT32 LHtcAct:2;                  ///< Local HTC Active State | ||||
|   UINT32 :2;                         ///< Reserved | ||||
|   UINT32 LHtcActSts:2;               ///< Local HTC Active Status | ||||
|   UINT32 :2;                         ///< Reserved | ||||
|   UINT32 LHtcTmpLmt:7;               ///< Local HTC temperature limit | ||||
|   UINT32 LHtcSlewSel:1;              ///< Local HTC slew-controlled temp select | ||||
|   UINT32 LHtcHystLmt:4;              ///< Local HTC hysteresis | ||||
|   UINT32 LHtcPstateLimit:3;          ///< Local HTC P-state limit select | ||||
|   UINT32 LHtcLock:1;                 ///< HTC lock | ||||
| } LHTC_REGISTER; | ||||
|  | ||||
| /* Product Information Register D18F3x1FC */ | ||||
| #define PRODUCT_INFO_REG 0x1FC | ||||
| #define PRODUCT_INFO_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_3, PRODUCT_INFO_REG)) | ||||
|  | ||||
| /// Product Information PCI Register | ||||
| typedef struct { | ||||
|   UINT32 :2;                         ///< Reserved | ||||
|   UINT32 LowPowerDefault:1;          ///< Low Power Default | ||||
|   UINT32 :29;                        ///< Reserved | ||||
| } PRODUCT_INFO_REGISTER; | ||||
|  | ||||
|  | ||||
| /* C-state Control 1 Register D18F4x118 */ | ||||
| #define CSTATE_CTRL1_REG 0x118 | ||||
| #define CSTATE_CTRL1_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, CSTATE_CTRL1_REG)) | ||||
|  | ||||
| /// C-state Control 1 Register | ||||
| typedef struct { | ||||
|   UINT32 CstAct0:3;                  ///< C-state action field 0 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CstAct1:3;                  ///< C-state action field 1 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CstAct2:3;                  ///< C-state action field 2 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CstAct3:3;                  ///< C-state action field 3 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
| } CSTATE_CTRL1_REGISTER; | ||||
|  | ||||
|  | ||||
| /* C-state Control 2 Register D18F4x11C */ | ||||
| #define CSTATE_CTRL2_REG 0x11C | ||||
| #define CSTATE_CTRL2_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, CSTATE_CTRL2_REG)) | ||||
|  | ||||
| /// C-state Control 2 Register | ||||
| typedef struct { | ||||
|   UINT32 CstAct4:3;                  ///< C-state action field 4 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CstAct5:3;                  ///< C-state action field 5 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CstAct6:3;                  ///< C-state action field 6 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CstAct7:3;                  ///< C-state action field 7 | ||||
|   UINT32 :5;                         ///< Reserved | ||||
| } CSTATE_CTRL2_REGISTER; | ||||
|  | ||||
|  | ||||
| /* C-state Monitor Control 3 Register D18F4x134 */ | ||||
| #define CSTATE_MON_CTRL3_REG 0x134 | ||||
| #define CSTATE_MON_CTRL3_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, CSTATE_MON_CTRL3_REG)) | ||||
|  | ||||
| /// C-state Monitor Control 3 Register | ||||
| typedef struct { | ||||
|   UINT32 IntRatePkgC6MaxDepth:4;     ///< Interrupt rate monitor PC6 maximum counter depth | ||||
|   UINT32 IntRatePkgC6Threshold:4;    ///< Interrupt rate monitor PC6 threshold | ||||
|   UINT32 IntRatePkgC6BurstLen:3;     ///< Interrupt rate monitor PC6 burst length | ||||
|   UINT32 IntRatePkgC6DecrRate:5;     ///< Interrupt rate monitor PC6 decrement rate | ||||
|   UINT32 IntRateCC6MaxDepth:4;       ///< Interrupt rate monitor CC6 maximum counter depth | ||||
|   UINT32 IntRateCC6Threshold:4;      ///< Interrupt rate monitor CC6 threshold | ||||
|   UINT32 IntRateCC6BurstLen:3;       ///< Interrupt rate monitor CC6 burst length | ||||
|   UINT32 IntRateCC6DecrRate:5;       ///< Interrupt rate monitor CC6 decrement rate | ||||
| } CSTATE_MON_CTRL3_REGISTER; | ||||
|  | ||||
| /* LPMV Scalar 2 Register D18F4x14C */ | ||||
| #define LPMV_SCALAR2_REG 0x14C | ||||
| #define LPMV_SCALAR2_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, LPMV_SCALAR2_REG)) | ||||
|  | ||||
| /// LPMV Scalar 2 Register | ||||
| typedef struct { | ||||
|   UINT32 :24;                        ///< Reserved | ||||
|   UINT32 ApmCstExtPol:2;             ///< Number of boosted states | ||||
|   UINT32 :6;                         ///< Reserved | ||||
| } LPMV_SCALAR2_REGISTER; | ||||
|  | ||||
| /* Core Performance Boost Control Register D18F4x15C */ | ||||
| #define CPB_CTRL_REG 0x15C | ||||
| #define CPB_CTRL_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, CPB_CTRL_REG)) | ||||
|  | ||||
| /// Core Performance Boost Control Register | ||||
| typedef struct { | ||||
|   UINT32 BoostSrc:2;                 ///< Boost source | ||||
|   UINT32 NumBoostStates:3;           ///< Number of boosted states | ||||
|   UINT32 :24;                        ///< Reserved | ||||
|   UINT32 BoostEnAllCores:1;          ///< Boost enable all cores | ||||
|   UINT32 :2;                         ///< Reserved | ||||
| } CPB_CTRL_REGISTER; | ||||
|  | ||||
|  | ||||
| /* CPU State Power Management Dynamic Control 0 Register D18F4x1A8 */ | ||||
| #define CPU_STATE_PM_CTRL0_REG 0x1A8 | ||||
| #define CPU_STATE_PM_CTRL0_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, CPU_STATE_PM_CTRL0_REG)) | ||||
|  | ||||
| /// CPU State Power Management Dynamic Control 0 Register | ||||
| typedef struct { | ||||
|   UINT32 SingleHaltCpuDid:5;         ///< Single hlt CPU DID | ||||
|   UINT32 AllHaltCpuDid:5;            ///< All hlt CPU DID | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 CpuProbEn:1;                ///< CPU probe enable | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 PService:3;                 ///< Service P-state | ||||
|   UINT32 PServiceTmr:3;              ///< Service P-state timer | ||||
|   UINT32 PServiceTmrEn:1;            ///< Service P-state timer enable | ||||
|   UINT32 DramSrEn:1;                 ///< DRAM self-refresh enable | ||||
|   UINT32 MemTriStateEn:1;            ///< Memory clock tri-state enable | ||||
|   UINT32 DramSrHyst:3;               ///< DRAM self-refresh hysteresis time | ||||
|   UINT32 DramSrHystEnable:1;         ///< DRAM self-refresh hysteresis enable | ||||
|   UINT32 :2;                         ///< Reserved | ||||
| } CPU_STATE_PM_CTRL0_REGISTER; | ||||
|  | ||||
|  | ||||
| /* CPU State Power Management Dynamic Control 1 Register D18F4x1AC */ | ||||
| #define CPU_STATE_PM_CTRL1_REG 0x1AC | ||||
| #define CPU_STATE_PM_CTRL1_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, CPU_STATE_PM_CTRL1_REG)) | ||||
|  | ||||
| /// CPU State Power Management Dynamic Control 1 Register | ||||
| typedef struct { | ||||
|   UINT32 :5;                         ///< Reserved | ||||
|   UINT32 C6Did:5;                    ///< CC6 divisor | ||||
|   UINT32 :6;                         ///< Reserved | ||||
|   UINT32 PstateIdCoreOffExit:3;      ///< P-state ID core-off exit | ||||
|   UINT32 :7;                         ///< Reserved | ||||
|   UINT32 PkgC6Cap:1;                 ///< Package C6 capable | ||||
|   UINT32 CoreC6Cap:1;                ///< Core C6 capable | ||||
|   UINT32 PkgC6Dis:1;                 ///< Package C6 disable | ||||
|   UINT32 CoreC6Dis:1;                ///< Core C6 disable | ||||
|   UINT32 CstPminEn:1;                ///< C-state Pmin enable | ||||
|   UINT32 :1;                         ///< Reserved | ||||
| } CPU_STATE_PM_CTRL1_REGISTER; | ||||
|  | ||||
|  | ||||
| /* C6 Base Register D18F4x12C */ | ||||
| #define C6_BASE_REG 0x12C | ||||
| #define C6_BASE_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_4, C6_BASE_REG)) | ||||
|  | ||||
| /// C6 Base Register | ||||
| typedef struct { | ||||
|   UINT32 C6Base:12;                  ///< C6 base[35:24] | ||||
|   UINT32 :20;                        ///< Reserved | ||||
| } C6_BASE_REGISTER; | ||||
|  | ||||
|  | ||||
| /* NB P-state Config Low Register D18F6x90 */ | ||||
| #define NB_PSTATE_CFG_LOW_REG 0x90 | ||||
| #define NB_PSTATE_CFG_LOW_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_6, NB_PSTATE_CFG_LOW_REG)) | ||||
|  | ||||
| /// NB P-state Config Low Register | ||||
| typedef struct { | ||||
|   UINT32 NbPs1NclkDiv:7;             ///< NBP1 NCLK divisor | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 NbPs1Vid:7;                 ///< NBP1 NCLK VID | ||||
|   UINT32 :1;                         ///< Reserved | ||||
|   UINT32 NbPs1GnbSlowIgn:1;          ///< NB P-state ignore GNB slow signal | ||||
|   UINT32 :3;                         ///< Reserved | ||||
|   UINT32 NbPsLock:1;                 ///< NB P-state lock | ||||
|   UINT32 :7;                         ///< Reserved | ||||
|   UINT32 NbPsForceReq:1;             ///< NB P-state force request | ||||
|   UINT32 NbPsForceSel:1;             ///< NB P-state force selection | ||||
|   UINT32 NbPsCtrlDis:1;              ///< NB P-state control disable | ||||
|   UINT32 NbPsCap:1;                  ///< NB P-state capable | ||||
| } NB_PSTATE_CFG_LOW_REGISTER; | ||||
|  | ||||
|  | ||||
| /* NB P-state Config High Register D18F6x94 */ | ||||
| #define NB_PSTATE_CFG_HIGH_REG 0x94 | ||||
| #define NB_PSTATE_CFG_HIGH_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_6, NB_PSTATE_CFG_HIGH_REG)) | ||||
|  | ||||
| /// NB P-state Config High Register | ||||
| typedef struct { | ||||
|   UINT32 CpuPstateThr:3;             ///< CPU P-state threshold | ||||
|   UINT32 CpuPstateThrEn:1;           ///< CPU P-state threshold enable | ||||
|   UINT32 NbPs1NoTransOnDma:1;        ///< NB P-state no transitions on DMA | ||||
|   UINT32 :15;                        ///< Reserved | ||||
|   UINT32 NbPsNonC0Timer:3;           ///< NB P-state non-C0 timer | ||||
|   UINT32 NbPsC0Timer:3;              ///< NB P-state C0 timer | ||||
|   UINT32 NbPs1ResTmrMin:3;           ///< NBP1 minimum residency timer | ||||
|   UINT32 NbPs0ResTmrMin:3;           ///< NBP0 minimum residency timer | ||||
| } NB_PSTATE_CFG_HIGH_REGISTER; | ||||
|  | ||||
|  | ||||
| /* NB P-state Control and Status Register D18F6x98 */ | ||||
| #define NB_PSTATE_CTRL_STS_REG 0x98 | ||||
| #define NB_PSTATE_CTRL_STS_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_6, NB_PSTATE_CTRL_STS_REG)) | ||||
|  | ||||
| /// NB P-state Control and Status Register | ||||
| typedef struct { | ||||
|   UINT32 NbPsTransInFlight:1;        ///< NB P-state transition in flight | ||||
|   UINT32 NbPs1ActSts:1;              ///< NB P-state 1 active status | ||||
|   UINT32 NbPs1Act:1;                 ///< NB P-state 1 active | ||||
|   UINT32 :27;                        ///< Reserved | ||||
|   UINT32 NbPsCsrAccSel:1;            ///< NB P-state register accessibility select | ||||
|   UINT32 NbPsDbgEn:1;                ///< NB P-state debug enable | ||||
| } NB_PSTATE_CTRL_STS_REGISTER; | ||||
|  | ||||
| /* NCLK Reduction Control D18F6x9C */ | ||||
| #define NCLK_REDUCTION_CTRL_REG 0x9C | ||||
| #define NCLK_REDUCTION_CTRL_PCI_ADDR (MAKE_SBDFO (0, 0, 0x18, FUNC_6, NCLK_REDUCTION_CTRL_REG)) | ||||
|  | ||||
| /// NCLK Reduction Control | ||||
| typedef struct { | ||||
|   UINT32 NclkRedDiv:7;              ///< NCLK reduction divisor | ||||
|   UINT32 NclkRedSelfRefrAlways:1;   ///< NCLK reduction always self refresh | ||||
|   UINT32 NclkRampWithDllRelock:1;   ///< NCLK ramp mode | ||||
|   UINT32 :23;                       ///< Reserved | ||||
| } NCLK_REDUCTION_CTRL_REGISTER; | ||||
|  | ||||
| /// enum for DSM workaround control | ||||
| typedef enum { | ||||
|   CC6_DSM_WORK_AROUND_DISABLE = 0, ///< work around disable | ||||
|   CC6_DSM_WORK_AROUND_NORMAL_TRAFFIC, ///< work around With Normal Traffic | ||||
|   CC6_DSM_WORK_AROUND_HIGH_PRIORITY_CHANNEL, ///< work around With High Priority Channel | ||||
| } CC6_DSM_WORK_AROUND; | ||||
|  | ||||
| #endif /* _CPUF14POWERMGMT_H */ | ||||
| @@ -1,149 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Power Management Initialization Steps | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 45626 $   @e \$Date: 2011-01-19 09:58:02 -0700 (Wed, 19 Jan 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuApicUtilities.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuPowerMgmtSystemTables.h" | ||||
| #include "cpuF14SoftwareThermal.h" | ||||
| #include "cpuF14PowerPlane.h" | ||||
| #include "cpuF14PowerCheck.h" | ||||
| #include "cpuF14LowPowerInit.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14POWERMGMTSYSTEMTABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14SysPmTable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **SysPmTblPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*  Family 14h Table */ | ||||
| /* ---------------------- */ | ||||
| CONST SYS_PM_TBL_STEP ROMDATA CpuF14SysPmTableArray[] = | ||||
| { | ||||
|   IDS_INITIAL_F14_PM_STEP | ||||
|  | ||||
|   // Step 1 - Power Plane Initialization | ||||
|   //   Execute both cold & warm | ||||
|   { | ||||
|     0,                                                // ExeFlags | ||||
|     F14PmPwrPlaneInit                           // Function Pointer | ||||
|   }, | ||||
|  | ||||
|   // Step x - Optimizations for lower power | ||||
|   //   Execute both cold & warm | ||||
|   { | ||||
|     0,                                                // ExeFlags | ||||
|     F14OptimizeForLowPowerInit                // Function Pointer | ||||
|   }, | ||||
|  | ||||
|   // Step 2 - Current Delivery Check | ||||
|   //   Execute both cold & warm | ||||
|   { | ||||
|     0,                                                // ExeFlags | ||||
|     F14PmPwrCheck                               // Function Pointer | ||||
|   }, | ||||
|  | ||||
|   // Step x - Software Thermal Control Init | ||||
|   //   Execute both cold & warm | ||||
|   { | ||||
|     0,                                                // ExeFlags | ||||
|     F14PmThermalInit                            // Function Pointer | ||||
|   } | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns the appropriate table of steps to perform to initialize the power management | ||||
|  *  subsystem. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  SysPmTblPtr              Points to the first entry in the table. | ||||
|  *  @param[out]  NumberOfElements         Number of valid entries in the table. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14SysPmTable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **SysPmTblPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *NumberOfElements = (sizeof (CpuF14SysPmTableArray) / sizeof (SYS_PM_TBL_STEP)); | ||||
|   *SysPmTblPtr = CpuF14SysPmTableArray; | ||||
| } | ||||
| @@ -1,273 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Power Plane Initialization | ||||
|  * | ||||
|  * Performs the "BIOS Requirements for Power Plane Initialization" as described | ||||
|  * in the BKDG. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 39275 $   @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuCacheInit.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuServices.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuF14PowerPlane.h" | ||||
| #include "OptionFamily14hEarlySample.h" | ||||
| #include "NbSmuLib.h" | ||||
| #include "GnbRegistersON.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14POWERPLANE_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern F14_ES_CORE_SUPPORT F14EarlySampleCoreSupport; | ||||
|  | ||||
| // Register encodings for D18F3xD8[VSRampSlamTime] | ||||
| STATIC CONST UINT32 ROMDATA F14VSRampSlamWaitTimes[8] = | ||||
| { | ||||
|   625,    // 000b: 6.25us | ||||
|   500,    // 001b: 5.00us | ||||
|   417,    // 010b: 4.17us | ||||
|   313,    // 011b: 3.13us | ||||
|   250,    // 100b: 2.50us | ||||
|   167,    // 101b: 1.67us | ||||
|   125,    // 110b: 1.25us | ||||
|   100     // 111b: 1.00us | ||||
| }; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14PmVrmLowPowerModeEnable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ); | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Family 14h core 0 entry point for performing power plane initialization. | ||||
|  * | ||||
|  * The steps are as follows: | ||||
|  *    1. BIOS must initialize D18F3xD8[VSRampSlamTime]. | ||||
|  *    2. BIOS must configure D18F3xA0[PsiVidEn & PsiVid] and | ||||
|  *       D18F3x128[NbPsiVidEn & NbPsiVid]. | ||||
|  *    3. BIOS must program D18F3xDC[NbPs0Vid] = FCRxFE00_6000[NbPs0Vid] - 1. | ||||
|  *       BIOS must program D18F3xDC[NbPs0Vid] = FCRxFE00_6000[NbPs0Vid]. | ||||
|  * | ||||
|  * @param[in]  FamilySpecificServices  The current Family Specific Services. | ||||
|  * @param[in]  CpuEarlyParams          Service parameters | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| F14PmPwrPlaneInit ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32                SystemSlewRate; | ||||
|   UINT32                PciReg; | ||||
|   UINT32                WaitTime; | ||||
|   UINT32                VSRampSlamTime; | ||||
|   PCI_ADDR              PciAddress; | ||||
|   FCRxFE00_6000_STRUCT  FCRxFE00_6000; | ||||
|  | ||||
|   // Step 1 - Configure D18F3xD8[VSRampSlamTime] based on platform requirements. | ||||
|   // Voltage Ramp Time = maximum time to change voltage by 12.5mV rounded to the next higher encoding. | ||||
|   SystemSlewRate = (CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].SlewRate <= | ||||
|                     CpuEarlyParams->PlatformConfig.VrmProperties[NbVrm].SlewRate) ? | ||||
|                     CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].SlewRate : | ||||
|                     CpuEarlyParams->PlatformConfig.VrmProperties[NbVrm].SlewRate; | ||||
|  | ||||
|   ASSERT (SystemSlewRate != 0); | ||||
|  | ||||
|   // First, calculate the time it takes to change 12.5mV using the VRM slew rate. | ||||
|   WaitTime = (12500 * 100) / SystemSlewRate; | ||||
|   if (((12500 * 100) % SystemSlewRate) != 0) { | ||||
|     WaitTime++; | ||||
|   } | ||||
|  | ||||
|   // Next, round it to the appropriate encoded value.  We will start from encoding 111b which corresponds | ||||
|   // to the fastest slew rate, and work our way down to 000b, which represents the slowest an acceptable | ||||
|   // VRM can be. | ||||
|   for (VSRampSlamTime = (ARRAY_SIZE(F14VSRampSlamWaitTimes)- 1); VSRampSlamTime > 0; VSRampSlamTime--) { | ||||
|     if (WaitTime <= F14VSRampSlamWaitTimes[VSRampSlamTime]) { | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (WaitTime > F14VSRampSlamWaitTimes[0]) { | ||||
|     // The VRMs on this motherboard are too slow for this CPU. | ||||
|     IDS_ERROR_TRAP; | ||||
|   } | ||||
|  | ||||
|   // Lastly, program D18F3xD8[VSRampSlamTime] with the appropriate encoded value. | ||||
|   PciAddress.AddressValue = CPTC1_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|   ((CLK_PWR_TIMING_CTRL1_REGISTER *) &PciReg)->VSRampSlamTime = VSRampSlamTime; | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|  | ||||
|   // Step 2 - Configure D18F3xA0[PsiVidEn & PsiVid] and D18F3x128[NbPsiVidEn & NbPsiVid]. | ||||
|   F14PmVrmLowPowerModeEnable (FamilySpecificServices, CpuEarlyParams, StdHeader); | ||||
|  | ||||
|   // Step 3 - Program D18F3xDC[NbPs0Vid] = FCRxFE00_6000[NbPs0Vid] - 1. | ||||
|   //          Program D18F3xDC[NbPs0Vid] = FCRxFE00_6000[NbPs0Vid]. | ||||
|   FCRxFE00_6000.Value = NbSmuReadEfuse (FCRxFE00_6000_ADDRESS, StdHeader); | ||||
|  | ||||
|   F14EarlySampleCoreSupport.F14PowerPlaneInitHook (&FCRxFE00_6000, StdHeader); | ||||
|  | ||||
|   PciAddress.AddressValue = CPTC2_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|   ((CLK_PWR_TIMING_CTRL2_REGISTER *) &PciReg)->NbPs0Vid = FCRxFE00_6000.Field.NbPs0Vid - 1; | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|   ((CLK_PWR_TIMING_CTRL2_REGISTER *) &PciReg)->NbPs0Vid = FCRxFE00_6000.Field.NbPs0Vid; | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Sets up PSI_L operation. | ||||
|  * | ||||
|  * This function implements the AMD_CPU_EARLY_PARAMS.VrmLowPowerThreshold parameter. | ||||
|  * | ||||
|  * @param[in]  FamilySpecificServices  The current Family Specific Services. | ||||
|  * @param[in]  CpuEarlyParams          Contains VrmLowPowerThreshold parameter. | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14PmVrmLowPowerModeEnable ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32    Pstate; | ||||
|   UINT32    PstateMaxVal; | ||||
|   UINT32    PstateCurrent; | ||||
|   UINT32    NextPstateCurrent; | ||||
|   UINT32    NextPstateCurrentRaw; | ||||
|   UINT32    PciReg; | ||||
|   UINT32    PreviousVid; | ||||
|   UINT32    CurrentVid; | ||||
|   UINT64    PstateMsr; | ||||
|   UINT64    PstateLimitMsr; | ||||
|   BOOLEAN   IsPsiEnabled; | ||||
|   PCI_ADDR  PciAddress; | ||||
|  | ||||
|   // Set up PSI_L for VDD | ||||
|   IsPsiEnabled = FALSE; | ||||
|   PreviousVid = 0x7F; | ||||
|   CurrentVid = 0x7F; | ||||
|   if (CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].LowPowerThreshold != 0) { | ||||
|     LibAmdMsrRead (MSR_PSTATE_CURRENT_LIMIT, &PstateLimitMsr, StdHeader); | ||||
|     PstateMaxVal = (UINT32) ((PSTATE_CURLIM_MSR *) &PstateLimitMsr)->PstateMaxVal; | ||||
|     FamilySpecificServices->GetProcIddMax (FamilySpecificServices, (UINT8) 0, &PstateCurrent, StdHeader); | ||||
|     for (Pstate = 0; Pstate <= PstateMaxVal; Pstate++) { | ||||
|       LibAmdMsrRead ((UINT32) (Pstate + PS_REG_BASE), &PstateMsr, StdHeader); | ||||
|       CurrentVid = (UINT32) ((PSTATE_MSR *) &PstateMsr)->CpuVid; | ||||
|       if (Pstate == PstateMaxVal) { | ||||
|         NextPstateCurrentRaw = 0; | ||||
|         NextPstateCurrent = 0; | ||||
|       } else { | ||||
|         FamilySpecificServices->GetProcIddMax (FamilySpecificServices, (UINT8) (Pstate + 1), &NextPstateCurrentRaw, StdHeader); | ||||
|         NextPstateCurrent = NextPstateCurrentRaw + CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].InrushCurrentLimit; | ||||
|       } | ||||
|       if ((PstateCurrent <= CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].LowPowerThreshold) && | ||||
|           (NextPstateCurrent <= CpuEarlyParams->PlatformConfig.VrmProperties[CoreVrm].LowPowerThreshold) && | ||||
|           (CurrentVid != PreviousVid)) { | ||||
|         IsPsiEnabled = TRUE; | ||||
|         break; | ||||
|       } else { | ||||
|         PstateCurrent = NextPstateCurrentRaw; | ||||
|         PreviousVid = CurrentVid; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   PciAddress.AddressValue = PW_CTL_MISC_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|   if (IsPsiEnabled) { | ||||
|     ((POWER_CTRL_MISC_REGISTER *) &PciReg)->PsiVid = CurrentVid; | ||||
|     ((POWER_CTRL_MISC_REGISTER *) &PciReg)->PsiVidEn = 1; | ||||
|   } else { | ||||
|     ((POWER_CTRL_MISC_REGISTER *) &PciReg)->PsiVidEn = 0; | ||||
|   } | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|  | ||||
|  | ||||
|   // Set up NBPSI_L for VDDNB | ||||
|   PciAddress.AddressValue = CPTC3_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|   if (CpuEarlyParams->PlatformConfig.VrmProperties[NbVrm].LowPowerThreshold != 0) { | ||||
|     ((CLK_PWR_TIMING_CTRL3_REGISTER *) &PciReg)->NbPsiVid = 0; | ||||
|     ((CLK_PWR_TIMING_CTRL3_REGISTER *) &PciReg)->NbPsiVidEn = 1; | ||||
|   } else { | ||||
|     ((CLK_PWR_TIMING_CTRL3_REGISTER *) &PciReg)->NbPsiVidEn = 0; | ||||
|   } | ||||
|   LibAmdPciWrite (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
| } | ||||
| @@ -1,78 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Power Plane related functions and structures | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _CPU_F14_POWER_PLANE_H_ | ||||
| #define _CPU_F14_POWER_PLANE_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| F14PmPwrPlaneInit ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParams, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif  // _CPU_F14_POWER_PLANE_H_ | ||||
| @@ -1,432 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 Pstate feature support functions. | ||||
|  * | ||||
|  * Provides the functions necessary to initialize the Pstate feature. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 44325 $   @e \$Date: 2010-12-22 03:29:53 -0700 (Wed, 22 Dec 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuPstateTables.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuF14Utilities.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "CommonReturns.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14PSTATE_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetPstateTransLatency ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       PSTATE_LEVELING        *PStateLevelingBufferStructPtr, | ||||
|   IN       PCI_ADDR               *PciAddress, | ||||
|      OUT   UINT32                 *TransitionLatency, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetPstateFrequency ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|      OUT   UINT32 *FrequencyInMHz, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetPstatePower ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|      OUT   UINT32 *PowerInMw, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetPstateMaxState ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|      OUT   UINT32              *MaxPStateNumber, | ||||
|   IN       AMD_CONFIG_PARAMS   *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetPstateRegisterInfo ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       UINT32              PState, | ||||
|      OUT   BOOLEAN             *PStateEnabled, | ||||
|   IN OUT   UINT32              *IddVal, | ||||
|   IN OUT   UINT32              *IddDiv, | ||||
|      OUT   UINT32              *SwPstateNumber, | ||||
|   IN       AMD_CONFIG_PARAMS   *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  *  Family specific call to set core TscFreqSel. | ||||
|  * | ||||
|  * @param[in]     PstateCpuServices  Pstate CPU services. | ||||
|  * @param[in]     StdHeader          Config Handle for library, services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| STATIC | ||||
| F14SetTscFreqSel ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64             MsrValue; | ||||
|  | ||||
|   LibAmdMsrRead (MSR_HWCR, &MsrValue, StdHeader); | ||||
|   MsrValue = MsrValue | BIT24; | ||||
|   LibAmdMsrWrite (MSR_HWCR, &MsrValue, StdHeader); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Family specific call to get Pstate Transition Latency. | ||||
|  * | ||||
|  *  Follow BKDG, return zero currently. | ||||
|  * | ||||
|  *  @param[in]     PstateCpuServices                Pstate CPU services. | ||||
|  *  @param[in]     PStateLevelingBufferStructPtr    Pstate row data buffer pointer | ||||
|  *  @param[in]     PciAddress                       Pci address | ||||
|  *  @param[out]    TransitionLatency                The transition latency. | ||||
|  *  @param[in]     StdHeader                        Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetPstateTransLatency ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       PSTATE_LEVELING        *PStateLevelingBufferStructPtr, | ||||
|   IN       PCI_ADDR               *PciAddress, | ||||
|      OUT   UINT32                 *TransitionLatency, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   // | ||||
|   // TransitionLatency (us) = BusMasterLatency (us) = 0 us, calculation may | ||||
|   // change due to a potential new encoding. | ||||
|   // | ||||
|   *TransitionLatency = 0; | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Family specific call to calculates the frequency in megahertz of the desired P-state. | ||||
|  * | ||||
|  *  @param[in]   PstateCpuServices        Pstate CPU services. | ||||
|  *  @param[in]   StateNumber              The P-State to analyze. | ||||
|  *  @param[out]  FrequencyInMHz           The P-State's frequency in MegaHertz | ||||
|  *  @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS   Always Succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetPstateFrequency ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|      OUT   UINT32 *FrequencyInMHz, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32 CpuDidLSD; | ||||
|   UINT32 CpuDidMSD; | ||||
|   UINT32 CoreClkDivisor; | ||||
|   UINT32 PciReg; | ||||
|   UINT64 MsrReg; | ||||
|   BOOLEAN FrequencyCalculated; | ||||
|   BOOLEAN ClockDivisorCalculated; | ||||
|   PCI_ADDR PciAddress; | ||||
|   UINT32 MainPllOpFreq; | ||||
|   UINT32 MainPllFid; | ||||
|  | ||||
|   ASSERT (StateNumber < NM_PS_REG); | ||||
|  | ||||
|   LibAmdMsrRead (PS_REG_BASE + (UINT32) StateNumber, &MsrReg, StdHeader); | ||||
|   ASSERT (((PSTATE_MSR *) &MsrReg)->PsEnable == 1); | ||||
|  | ||||
|   CpuDidLSD = (UINT32) (((PSTATE_MSR *) &MsrReg)->CpuDidLSD); | ||||
|   CpuDidMSD = (UINT32) (((PSTATE_MSR *) &MsrReg)->CpuDidMSD); | ||||
|  | ||||
|   FrequencyCalculated = FALSE; | ||||
|   ClockDivisorCalculated = FALSE; | ||||
|   CoreClkDivisor = 1; | ||||
|  | ||||
|   if ((CpuDidLSD > 3) || (CpuDidMSD > 0x19)) { | ||||
|     // Either CpuDidLSD or CpuDidMSD is set to an undefined value. | ||||
|     // This is due to either a misfused CPU, or an invalid P-state MSR write. | ||||
|     ASSERT (FALSE); | ||||
|     ClockDivisorCalculated = TRUE; | ||||
|     FrequencyCalculated = TRUE; | ||||
|     CoreClkDivisor = 4; | ||||
|     *FrequencyInMHz = 100; | ||||
|   } | ||||
|  | ||||
|   if (!ClockDivisorCalculated) { | ||||
|     CoreClkDivisor = (CpuDidMSD * 4) + CpuDidLSD + 4; | ||||
|   } | ||||
|   // Checking for supported divisor value | ||||
|   ASSERT (((CoreClkDivisor >= 4) && (CoreClkDivisor <= 63)) || | ||||
|           ((CoreClkDivisor >= 64) && (CoreClkDivisor <= 106) && ((CoreClkDivisor % 2) == 0))); | ||||
|  | ||||
|   if (!FrequencyCalculated) { | ||||
|     // Get D18F3xD4[MainPllOpFreqId] frequency | ||||
|     PciAddress.AddressValue = CPTC0_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|  | ||||
|     if (((CLK_PWR_TIMING_CTRL_REGISTER *) &PciReg)->MainPllOpFreqIdEn == 1) { | ||||
|       MainPllFid = ((CLK_PWR_TIMING_CTRL_REGISTER *) &PciReg)->MainPllOpFreqId; | ||||
|     } else { | ||||
|       MainPllFid = 0; | ||||
|     } | ||||
|     MainPllOpFreq = ((MainPllFid + 0x10) * 100); | ||||
|  | ||||
|     *FrequencyInMHz = MainPllOpFreq * 4 / CoreClkDivisor; | ||||
|   } | ||||
|  | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * | ||||
|  *  Family specific call to calculates the power in milliWatts of the desired P-state. | ||||
|  * | ||||
|  *  @param[in]   PstateCpuServices        Pstate CPU services. | ||||
|  *  @param[in]   StateNumber              Which P-state to analyze | ||||
|  *  @param[out]  PowerInMw                The Power in milliWatts of that P-State | ||||
|  *  @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetPstatePower ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|      OUT   UINT32 *PowerInMw, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32  CpuVid; | ||||
|   UINT32  IddValue; | ||||
|   UINT32  IddDiv; | ||||
|   UINT32  V_x10000; | ||||
|   UINT32  Power; | ||||
|   UINT64  MsrReg; | ||||
|  | ||||
|   ASSERT (StateNumber < NM_PS_REG); | ||||
|   LibAmdMsrRead (PS_REG_BASE + (UINT32) StateNumber, &MsrReg, StdHeader); | ||||
|   ASSERT (((PSTATE_MSR *) &MsrReg)->PsEnable == 1); | ||||
|   CpuVid = (UINT32) (((PSTATE_MSR *) &MsrReg)->CpuVid); | ||||
|   IddValue = (UINT32) (((PSTATE_MSR *) &MsrReg)->IddValue); | ||||
|   IddDiv = (UINT32) (((PSTATE_MSR *) &MsrReg)->IddDiv); | ||||
|  | ||||
|   if (CpuVid >= 0x7C) { | ||||
|     V_x10000 = 0; | ||||
|   } else { | ||||
|     V_x10000 = 15500L - (125L * CpuVid); | ||||
|   } | ||||
|  | ||||
|   Power = V_x10000 * IddValue; | ||||
|  | ||||
|   switch (IddDiv) { | ||||
|   case 0: | ||||
|     *PowerInMw = Power / 10L; | ||||
|     break; | ||||
|   case 1: | ||||
|     *PowerInMw = Power / 100L; | ||||
|     break; | ||||
|   case 2: | ||||
|     *PowerInMw = Power / 1000L; | ||||
|     break; | ||||
|   default: | ||||
|     // IddDiv is set to an undefined value.  This is due to either a misfused CPU, or | ||||
|     // an invalid P-state MSR write. | ||||
|     ASSERT (FALSE); | ||||
|     *PowerInMw = 0; | ||||
|     break; | ||||
|   } | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Family specific call to get CPU pstate max state. | ||||
|  * | ||||
|  *  @param[in]     PstateCpuServices      Pstate CPU services. | ||||
|  *  @param[out]    MaxPStateNumber        Boolean flag return pstate enable. | ||||
|  *  @param[in]     StdHeader              Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetPstateMaxState ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|      OUT   UINT32              *MaxPStateNumber, | ||||
|   IN       AMD_CONFIG_PARAMS   *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64              MsrValue; | ||||
|   UINT32              PciReg; | ||||
|   PCI_ADDR            PciAddress; | ||||
|  | ||||
|   // For F14 CPU, skip boosted p-state. The boosted p-state number = D18F4x15C[NumBoostStates]. | ||||
|   PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); // D18F4x15C | ||||
|  | ||||
|   // | ||||
|   // Read PstateMaxVal [6:4] from MSR C001_0061 | ||||
|   // So, we will know the max pstate state in this socket. | ||||
|   // | ||||
|   LibAmdMsrRead (MSR_PSTATE_CURRENT_LIMIT, &MsrValue, StdHeader); | ||||
|   *MaxPStateNumber = (UINT32) (((PSTATE_CURLIM_MSR *) &MsrValue)->PstateMaxVal) + (UINT32) (((CPB_CTRL_REGISTER *) &PciReg)->NumBoostStates); | ||||
|  | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Family specific call to get CPU pstate register information. | ||||
|  * | ||||
|  *  @param[in]     PstateCpuServices         Pstate CPU services. | ||||
|  *  @param[in]     PState                    Input Pstate number for query. | ||||
|  *  @param[out]    PStateEnabled             Boolean flag return pstate enable. | ||||
|  *  @param[in,out] IddVal                    Pstate current value. | ||||
|  *  @param[in,out] IddDiv                    Pstate current divisor. | ||||
|  *  @param[out]    SwPstateNumber            Software P-state number. | ||||
|  *  @param[in]     StdHeader                 Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetPstateRegisterInfo ( | ||||
|   IN       PSTATE_CPU_FAMILY_SERVICES *PstateCpuServices, | ||||
|   IN       UINT32              PState, | ||||
|      OUT   BOOLEAN             *PStateEnabled, | ||||
|   IN OUT   UINT32              *IddVal, | ||||
|   IN OUT   UINT32              *IddDiv, | ||||
|      OUT   UINT32              *SwPstateNumber, | ||||
|   IN       AMD_CONFIG_PARAMS   *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64              LocalMsrReg; | ||||
|   UINT32              LocalPciReg; | ||||
|   PCI_ADDR            PciAddress; | ||||
|   CPU_LOGICAL_ID      CpuFamilyRevision; | ||||
|  | ||||
|   ASSERT (PState < NM_PS_REG); | ||||
|  | ||||
|   // Read PSTATE MSRs | ||||
|   LibAmdMsrRead (PS_REG_BASE + (UINT32) PState, &LocalMsrReg, StdHeader); | ||||
|  | ||||
|   *SwPstateNumber = PState; | ||||
|  | ||||
|   if (((PSTATE_MSR *) &LocalMsrReg)->PsEnable == 1) { | ||||
|     // PState enable = bit 63 | ||||
|     *PStateEnabled = TRUE; | ||||
|     // For F14 CPU, skip boosted p-state. The boosted p-state number = D18F4x15C[NumBoostStates]. | ||||
|     GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|     if ((CpuFamilyRevision.Revision & (AMD_F14_ON_Ax | AMD_F14_ON_Bx)) == 0) { | ||||
|       // ON_Ax & ON_Bx don't have boosted p-state function | ||||
|       PciAddress.AddressValue = CPB_CTRL_PCI_ADDR; | ||||
|       LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciReg, StdHeader); // D18F4x15C | ||||
|       // | ||||
|       // Check input pstate belongs to Boosted-Pstate, if yes, return *PStateEnabled = FALSE. | ||||
|       // | ||||
|       if (PState < ((CPB_CTRL_REGISTER *) &LocalPciReg)->NumBoostStates) { | ||||
|         *PStateEnabled = FALSE; | ||||
|       } else { | ||||
|         *SwPstateNumber = PState - ((CPB_CTRL_REGISTER *) &LocalPciReg)->NumBoostStates; | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
|     *PStateEnabled = FALSE; | ||||
|   } | ||||
|  | ||||
|   // Bits 39:32 (high 32 bits [7:0]) | ||||
|   *IddVal = (UINT32) ((PSTATE_MSR *) &LocalMsrReg)->IddValue; | ||||
|   // Bits 41:40 (high 32 bits [9:8]) | ||||
|   *IddDiv = (UINT32) ((PSTATE_MSR *) &LocalMsrReg)->IddDiv; | ||||
|  | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
|  | ||||
| CONST PSTATE_CPU_FAMILY_SERVICES ROMDATA F14PstateServices = | ||||
| { | ||||
|   0, | ||||
|   (PF_PSTATE_PSD_IS_NEEDED) CommonReturnTrue, | ||||
|   (PF_PSTATE_PSD_IS_DEPENDENT) CommonReturnTrue, | ||||
|   F14SetTscFreqSel, | ||||
|   F14GetPstateTransLatency, | ||||
|   F14GetPstateFrequency, | ||||
|   (PF_CPU_SET_PSTATE_LEVELING_REG) CommonReturnAgesaSuccess, | ||||
|   F14GetPstatePower, | ||||
|   F14GetPstateMaxState, | ||||
|   F14GetPstateRegisterInfo | ||||
| }; | ||||
| @@ -1,127 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 thermal initialization | ||||
|  * | ||||
|  * Performs processor thermal initialization. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 46836 $   @e \$Date: 2011-02-10 12:22:59 -0700 (Thu, 10 Feb 2011) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuF14SoftwareThermal.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14SOFTWARETHERMAL_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*----------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *    Main entry point for initializing the SW Thermal Control | ||||
|  *    safety net feature. | ||||
|  * | ||||
|  *    This must be run by all Family 14h core 0s in the system. | ||||
|  * | ||||
|  * @param[in]  FamilySpecificServices  The current Family Specific Services. | ||||
|  * @param[in]  CpuEarlyParamsPtr       Service parameters. | ||||
|  * @param[in]  StdHeader               Config handle for library and services. | ||||
|  */ | ||||
| VOID | ||||
| F14PmThermalInit ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParamsPtr, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32    NbCaps; | ||||
|   UINT32    LocalPciRegister; | ||||
|   PCI_ADDR  PciAddress; | ||||
|   CPU_LOGICAL_ID CpuFamilyRevision; | ||||
|  | ||||
|   PciAddress.AddressValue = NB_CAPS_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &NbCaps, StdHeader); | ||||
|   if (((NB_CAPS_REGISTER *) &NbCaps)->HtcCapable == 1) { | ||||
|     PciAddress.AddressValue = HTC_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|     if (((HTC_REGISTER *) &LocalPciRegister)->HtcTmpLmt != 0) { | ||||
|       // Enable HTC | ||||
|       ((HTC_REGISTER *) &LocalPciRegister)->HtcEn = 1; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   GetLogicalIdOfCurrentCore (&CpuFamilyRevision, StdHeader); | ||||
|   if ((CpuFamilyRevision.Revision & AMD_F14_ON_Cx) != 0) { | ||||
|     PciAddress.AddressValue = LHTC_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|     if (((NB_CAPS_REGISTER *) &NbCaps)->LHtcCapable == 1) { | ||||
|       if (((LHTC_REGISTER *) &LocalPciRegister)->LHtcTmpLmt != 0) { | ||||
|         // Enable local HTC | ||||
|         ((LHTC_REGISTER *) &LocalPciRegister)->LHtcEn = 1; | ||||
|       } | ||||
|     } | ||||
|     LibAmdPciWrite (AccessWidth32, PciAddress, &LocalPciRegister, StdHeader); | ||||
|   } | ||||
| } | ||||
| @@ -1,80 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 thermal initialization related functions and structures | ||||
|  * | ||||
|  * Performs processor thermal initialization. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _CPU_F14_SOFTWARE_THERMAL_H_ | ||||
| #define _CPU_F14_SOFTWARE_THERMAL_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| F14PmThermalInit ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       AMD_CPU_EARLY_PARAMS  *CpuEarlyParamsPtr, | ||||
|   IN       AMD_CONFIG_PARAMS     *StdHeader | ||||
|   ); | ||||
|  | ||||
| #endif  // _CPU_F14_SOFTWARE_THERMAL_H_ | ||||
| @@ -1,571 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 specific utility functions. | ||||
|  * | ||||
|  * Provides numerous utility functions specific to family 14h. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU/F14 | ||||
|  * @e \$Revision: 37640 $   @e \$Date: 2010-09-08 23:01:59 +0800 (Wed, 08 Sep 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "amdlib.h" | ||||
| #include "Ids.h" | ||||
| #include "cpuRegisters.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "cpuPstateTables.h" | ||||
| #include "cpuF14PowerMgmt.h" | ||||
| #include "cpuServices.h" | ||||
| #include "GeneralServices.h" | ||||
| #include "cpuF14Utilities.h" | ||||
| #include "cpuPostInit.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14UTILITIES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| extern CPU_FAMILY_SUPPORT_TABLE            PstateFamilyServiceTable; | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| VOID | ||||
| F14ConvertEnabledBitsIntoCount ( | ||||
|      OUT   UINT8 *EnabledCoreCountPtr, | ||||
|   IN       UINT8 FusedCoreCount, | ||||
|   IN       UINT8 EnabledCores | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| F14GetNbPstateInfo ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       PCI_ADDR               *PciAddress, | ||||
|   IN       UINT32                 NbPstate, | ||||
|      OUT   UINT32                 *FreqNumeratorInMHz, | ||||
|      OUT   UINT32                 *FreqDivisor, | ||||
|      OUT   UINT32                 *VoltageInuV, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| F14IsNbPstateEnabled ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| F14GetProcIddMax ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       UINT8                  Pstate, | ||||
|      OUT   UINT32                 *ProcIddMax, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| UINT8 | ||||
| F14GetNumberOfCoresForBrandstring ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| F14ConvertEnabledBitsIntoCount ( | ||||
|      OUT   UINT8 *EnabledCoreCountPtr, | ||||
|   IN       UINT8 FusedCoreCount, | ||||
|   IN       UINT8 EnabledCores | ||||
|   ) | ||||
| { | ||||
|   UINT8 i; | ||||
|   UINT8 j; | ||||
|   UINT8 EnabledCoreCount; | ||||
|  | ||||
|   EnabledCoreCount = 0; | ||||
|  | ||||
|   for (i = 0; i < FusedCoreCount+1; i++) { | ||||
|     j = 1; | ||||
|     if (!((BOOLEAN) (EnabledCores) & (j << i))) { | ||||
|       EnabledCoreCount++; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   *EnabledCoreCountPtr = EnabledCoreCount; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Disables the desired P-state. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_DISABLE_PSTATE}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[in]   StateNumber              The P-State to disable. | ||||
|  *  @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14DisablePstate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 MsrReg; | ||||
|  | ||||
|   ASSERT (StateNumber < NM_PS_REG); | ||||
|   LibAmdMsrRead (PS_REG_BASE + (UINT32) StateNumber, &MsrReg, StdHeader); | ||||
|   ((PSTATE_MSR *) &MsrReg)->PsEnable = 0; | ||||
|   LibAmdMsrWrite (PS_REG_BASE + (UINT32) StateNumber, &MsrReg, StdHeader); | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Transitions the executing core to the desired P-state. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_TRANSITION_PSTATE}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[in]   StateNumber              The new P-State to make effective. | ||||
|  *  @param[in]   WaitForTransition        True if the caller wants the transition completed upon return. | ||||
|  *  @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS       Always Succeeds | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14TransitionPstate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       UINT8              StateNumber, | ||||
|   IN       BOOLEAN            WaitForTransition, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 MsrReg; | ||||
|  | ||||
|   ASSERT (StateNumber < NM_PS_REG); | ||||
|   LibAmdMsrRead (PS_REG_BASE + (UINT32) StateNumber, &MsrReg, StdHeader); | ||||
|   ASSERT (((PSTATE_MSR *) &MsrReg)->PsEnable == 1); | ||||
|   LibAmdMsrRead (MSR_PSTATE_CTL, &MsrReg, StdHeader); | ||||
|   ((PSTATE_CTRL_MSR *) &MsrReg)->PstateCmd = (UINT64) StateNumber; | ||||
|   LibAmdMsrWrite (MSR_PSTATE_CTL, &MsrReg, StdHeader); | ||||
|   if (WaitForTransition) { | ||||
|     do { | ||||
|       LibAmdMsrRead (MSR_PSTATE_STS, &MsrReg, StdHeader); | ||||
|     } while (((PSTATE_STS_MSR *) &MsrReg)->CurPstate != (UINT64) StateNumber); | ||||
|   } | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Determines the rate at which the executing core's time stamp counter is | ||||
|  *  incrementing. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_TSC_RATE}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  FrequencyInMHz           TSC actual frequency. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  *  @return      The most severe status of all called services | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetTscRate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   UINT32 *FrequencyInMHz, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT64 MsrReg; | ||||
|   PSTATE_CPU_FAMILY_SERVICES  *FamilyServices; | ||||
|  | ||||
|   FamilyServices = NULL; | ||||
|   GetFeatureServicesOfCurrentCore (&PstateFamilyServiceTable, (const VOID **)&FamilyServices, StdHeader); | ||||
|   ASSERT (FamilyServices != NULL); | ||||
|  | ||||
|   LibAmdMsrRead (0xC0010015, &MsrReg, StdHeader); | ||||
|   if ((MsrReg & 0x01000000) != 0) { | ||||
|     return (FamilyServices->GetPstateFrequency (FamilyServices, 0, FrequencyInMHz, StdHeader)); | ||||
|   } else { | ||||
|     return (FamilySpecificServices->GetCurrentNbFrequency (FamilySpecificServices, FrequencyInMHz, StdHeader)); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Determines the NB clock on the desired node. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_NB_FREQ}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  FrequencyInMHz           Northbridge clock frequency in MHz. | ||||
|  *  @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS     Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetCurrentNbFrequency ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   UINT32 *FrequencyInMHz, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32 PciReg; | ||||
|   UINT32 MainPllFid; | ||||
|   PCI_ADDR PciAddress; | ||||
|  | ||||
|   PciAddress.AddressValue = CPTC0_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|  | ||||
|   if (((CLK_PWR_TIMING_CTRL_REGISTER *) &PciReg)->MainPllOpFreqIdEn == 1) { | ||||
|     MainPllFid = ((CLK_PWR_TIMING_CTRL_REGISTER *) &PciReg)->MainPllOpFreqId; | ||||
|   } else { | ||||
|     MainPllFid = 0; | ||||
|   } | ||||
|  | ||||
|   *FrequencyInMHz = ((MainPllFid + 0x10) * 100); | ||||
|  | ||||
|   ASSERT (*FrequencyInMHz <= 4000); | ||||
|  | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Determines the NB clock on the desired node. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_NB_PSTATE_INFO}. | ||||
|  * | ||||
|  *  @param[in]     FamilySpecificServices  The current Family Specific Services. | ||||
|  *  @param[in]     PlatformConfig          Platform profile/build option config structure. | ||||
|  *  @param[in]     PciAddress              The segment, bus, and device numbers of the CPU in question. | ||||
|  *  @param[in]     NbPstate                The NB P-state number to check. | ||||
|  *  @param[out]    FreqNumeratorInMHz      The desired node's frequency numerator in megahertz. | ||||
|  *  @param[out]    FreqDivisor             The desired node's frequency divisor. | ||||
|  *  @param[out]    VoltageInuV             The desired node's voltage in microvolts. | ||||
|  *  @param[in]     StdHeader               Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  *  @retval        TRUE                    NbPstate is valid | ||||
|  *  @retval        FALSE                   NbPstate is disabled or invalid | ||||
|  */ | ||||
| BOOLEAN | ||||
| F14GetNbPstateInfo ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       PCI_ADDR               *PciAddress, | ||||
|   IN       UINT32                 NbPstate, | ||||
|      OUT   UINT32                 *FreqNumeratorInMHz, | ||||
|      OUT   UINT32                 *FreqDivisor, | ||||
|      OUT   UINT32                 *VoltageInuV, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32   NbVid; | ||||
|   UINT32   PciReg; | ||||
|   UINT32   MainPllFreq; | ||||
|   BOOLEAN  PstateIsValid; | ||||
|  | ||||
|   PstateIsValid = FALSE; | ||||
|   if ((NbPstate == 0) || ((NbPstate == 1) && FamilySpecificServices->IsNbPstateEnabled (FamilySpecificServices, PlatformConfig, StdHeader))) { | ||||
|     FamilySpecificServices->GetCurrentNbFrequency (FamilySpecificServices, &MainPllFreq, StdHeader); | ||||
|     *FreqNumeratorInMHz = (MainPllFreq * 4); | ||||
|     if (NbPstate == 0) { | ||||
|       PciAddress->Address.Function = FUNC_3; | ||||
|       PciAddress->Address.Register = CPTC2_REG; | ||||
|       LibAmdPciRead (AccessWidth32, *PciAddress, &PciReg, StdHeader); | ||||
|       *FreqDivisor = ((CLK_PWR_TIMING_CTRL2_REGISTER *) &PciReg)->NbPs0NclkDiv; | ||||
|       NbVid = ((CLK_PWR_TIMING_CTRL2_REGISTER *) &PciReg)->NbPs0Vid; | ||||
|     } else { | ||||
|       PciAddress->Address.Function = FUNC_6; | ||||
|       PciAddress->Address.Register = NB_PSTATE_CFG_LOW_REG; | ||||
|       LibAmdPciRead (AccessWidth32, *PciAddress, &PciReg, StdHeader); | ||||
|       *FreqDivisor = ((NB_PSTATE_CFG_LOW_REGISTER *) &PciReg)->NbPs1NclkDiv; | ||||
|       NbVid = ((NB_PSTATE_CFG_LOW_REGISTER *) &PciReg)->NbPs1Vid; | ||||
|     } | ||||
|     *VoltageInuV = (1550000 - (12500 * NbVid)); | ||||
|     PstateIsValid = TRUE; | ||||
|   } | ||||
|   return PstateIsValid; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Is the Northbridge PState feature enabled? | ||||
|  * | ||||
|  * @CpuServiceMethod{::F_IS_NB_PSTATE_ENABLED}. | ||||
|  * | ||||
|  * @param[in]      FamilySpecificServices         The current Family Specific Services. | ||||
|  * @param[in]      PlatformConfig                 Platform profile/build option config structure. | ||||
|  * @param[in]      StdHeader                      Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  * @retval         TRUE                           The NB PState feature is enabled. | ||||
|  * @retval         FALSE                          The NB PState feature is not enabled. | ||||
|  */ | ||||
| BOOLEAN | ||||
| F14IsNbPstateEnabled ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       PLATFORM_CONFIGURATION *PlatformConfig, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32         PciReg; | ||||
|   PCI_ADDR       PciAddress; | ||||
|  | ||||
|   PciAddress.AddressValue = NB_PSTATE_CFG_LOW_PCI_ADDR; | ||||
|   LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|   return ((BOOLEAN) (((NB_PSTATE_CFG_LOW_REGISTER *) &PciReg)->NbPsCap == 1)); | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns whether or not BIOS is responsible for configuring the NB COFVID. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_IS_NBCOF_INIT_NEEDED}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[in]   PciAddress               The northbridge to query by pci base address. | ||||
|  *  @param[out]  NbCofVidUpdateRequired   TRUE, perform northbridge frequency and voltage config, | ||||
|  *                                        FALSE, do not configure them. | ||||
|  *  @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS           Always succeeds. | ||||
|  */ | ||||
| BOOLEAN | ||||
| F14GetNbCofVidUpdate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       PCI_ADDR *PciAddress, | ||||
|      OUT   BOOLEAN *NbCofVidUpdateRequired, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *NbCofVidUpdateRequired = FALSE; | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Initially launches the desired core to run from the reset vector. | ||||
|  * | ||||
|  * @CpuServiceMethod{::F_CPU_AP_INITIAL_LAUNCH}. | ||||
|  * | ||||
|  * @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  * @param[in]   SocketNum                The Processor on which the core is to be launched | ||||
|  * @param[in]   ModuleNum                The Module in that processor containing that core | ||||
|  * @param[in]   CoreNum                  The Core to launch | ||||
|  * @param[in]   PrimaryCoreNum           The id of the module's primary core. | ||||
|  * @param[in]   StdHeader                Header for library and services | ||||
|  * | ||||
|  * @retval      TRUE          The core was launched | ||||
|  * @retval      FALSE         The core was previously launched | ||||
|  */ | ||||
| BOOLEAN | ||||
| F14LaunchApCore ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       UINT32 SocketNum, | ||||
|   IN       UINT32 ModuleNum, | ||||
|   IN       UINT32 CoreNum, | ||||
|   IN       UINT32 PrimaryCoreNum, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32    NodeRelativeCoreNum; | ||||
|   UINT32    PciReg; | ||||
|   PCI_ADDR  PciAddress; | ||||
|   BOOLEAN   LaunchFlag; | ||||
|  | ||||
|   // Code Start | ||||
|   LaunchFlag = FALSE; | ||||
|   NodeRelativeCoreNum = CoreNum - PrimaryCoreNum; | ||||
|   PciAddress.AddressValue = MAKE_SBDFO (0, 0, PCI_DEV_BASE, FUNC_0, 0); | ||||
|  | ||||
|   switch (NodeRelativeCoreNum) { | ||||
|   case 1: | ||||
|     PciAddress.Address.Register = HT_TRANS_CTRL; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|     if ((PciReg & HT_TRANS_CTRL_CPU1_EN) == 0) { | ||||
|       PciReg |= HT_TRANS_CTRL_CPU1_EN; | ||||
|       LibAmdPciWrite (AccessWidth32, PciAddress, &PciReg, StdHeader); | ||||
|       LaunchFlag = TRUE; | ||||
|     } else { | ||||
|       LaunchFlag = FALSE; | ||||
|     } | ||||
|     break; | ||||
|   default: | ||||
|     break; | ||||
|   } | ||||
|  | ||||
|   return (LaunchFlag); | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Get CPU Specific Platform Type Info. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO}. | ||||
|  * | ||||
|  *    This function returns Returns the platform features. | ||||
|  * | ||||
|  *  @param[in]     FamilySpecificServices         The current Family Specific Services. | ||||
|  *  @param[in,out] Features                       The Features supported by this platform. | ||||
|  *  @param[in]     StdHeader                      Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  *  @retval      AGESA_SUCCESS Always succeeds. | ||||
|  */ | ||||
| AGESA_STATUS | ||||
| F14GetPlatformTypeSpecificInfo ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN OUT   PLATFORM_FEATS         *Features, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   return (AGESA_SUCCESS); | ||||
| } | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Get CPU pstate current. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_IDD_MAX}. | ||||
|  * | ||||
|  *    This function returns the ProcIddMax. | ||||
|  * | ||||
|  *  @param[in]     FamilySpecificServices    The current Family Specific Services. | ||||
|  *  @param[in]     Pstate                    The P-state to check. | ||||
|  *  @param[out]    ProcIddMax                P-state current in mA. | ||||
|  *  @param[in]     StdHeader                 Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  *  @retval        TRUE                      P-state is enabled | ||||
|  *  @retval        FALSE                     P-state is disabled | ||||
|  */ | ||||
| BOOLEAN | ||||
| F14GetProcIddMax ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       UINT8                  Pstate, | ||||
|      OUT   UINT32                 *ProcIddMax, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   UINT32       IddDiv; | ||||
|   UINT32       CmpCap; | ||||
|   UINT32       PciReg; | ||||
|   UINT32       MsrAddress; | ||||
|   UINT64       PstateMsr; | ||||
|   BOOLEAN      IsPstateEnabled; | ||||
|   PCI_ADDR     PciAddress; | ||||
|  | ||||
|   IsPstateEnabled = FALSE; | ||||
|  | ||||
|   MsrAddress = (UINT32) (Pstate + PS_REG_BASE); | ||||
|  | ||||
|   ASSERT (MsrAddress <= PS_MAX_REG); | ||||
|  | ||||
|   LibAmdMsrRead (MsrAddress, &PstateMsr, StdHeader); | ||||
|   if (((PSTATE_MSR *) &PstateMsr)->PsEnable == 1) { | ||||
|     PciAddress.AddressValue = NB_CAPS_PCI_ADDR; | ||||
|     LibAmdPciRead (AccessWidth32, PciAddress, &PciReg, StdHeader); // F3xE8 | ||||
|     CmpCap = (UINT32) (((NB_CAPS_REGISTER *) &PciReg)->CmpCap); | ||||
|     CmpCap++; | ||||
|  | ||||
|     switch (((PSTATE_MSR *) &PstateMsr)->IddDiv) { | ||||
|     case 0: | ||||
|       IddDiv = 1000; | ||||
|       break; | ||||
|     case 1: | ||||
|       IddDiv = 100; | ||||
|       break; | ||||
|     case 2: | ||||
|       IddDiv = 10; | ||||
|       break; | ||||
|     default:  // IddDiv = 3 is reserved. Use 10 | ||||
|       ASSERT (FALSE); | ||||
|       IddDiv = 10; | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     *ProcIddMax = (UINT32) ((PSTATE_MSR *) &PstateMsr)->IddValue * IddDiv * CmpCap; | ||||
|     IsPstateEnabled = TRUE; | ||||
|   } | ||||
|   return IsPstateEnabled; | ||||
| } | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  * Get number of processor cores to be used in determining the brand string. | ||||
|  * | ||||
|  * @CpuServiceMethod{::F_CPU_NUMBER_OF_BRANDSTRING_CORES}. | ||||
|  * | ||||
|  * @param[in]      FamilySpecificServices         The current Family Specific Services. | ||||
|  * @param[in]      StdHeader                      Handle of Header for calling lib functions and services. | ||||
|  * | ||||
|  * @return         The number of cores to be used in brand string calculation. | ||||
|  */ | ||||
| UINT8 | ||||
| F14GetNumberOfCoresForBrandstring ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ) | ||||
| { | ||||
|   CPUID_DATA    CpuId; | ||||
|  | ||||
|   // | ||||
|   //CPUID.80000008h.ECX.NC + 1, 000b = 1, 001b = 2, etc. | ||||
|   // | ||||
|   LibAmdCpuidRead (CPUID_LONG_MODE_ADDR, &CpuId, StdHeader); | ||||
|   return ((UINT8) ((CpuId.ECX_Reg & 0xff) + 1)); | ||||
| } | ||||
| @@ -1,132 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 specific utility functions. | ||||
|  * | ||||
|  * Provides numerous utility functions specific to family 14h. | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| #ifndef _CPU_F14_UTILITES_H_ | ||||
| #define _CPU_F14_UTILITES_H_ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *          M I X E D   (Definitions And Macros / Typedefs, Structures, Enums) | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                 D E F I N I T I O N S     A N D     M A C R O S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *               T Y P E D E F S,   S T R U C T U R E S,    E N U M S | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*--------------------------------------------------------------------------------------- | ||||
|  *                        F U N C T I O N    P R O T O T Y P E | ||||
|  *--------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14DisablePstate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14TransitionPstate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       UINT8 StateNumber, | ||||
|   IN       BOOLEAN WaitForTransition, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetTscRate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   UINT32 *FrequencyInMHz, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetCurrentNbFrequency ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   UINT32 *FrequencyInMHz, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| F14GetNbCofVidUpdate ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       PCI_ADDR *PciAddress, | ||||
|      OUT   BOOLEAN *NbCofVidUpdateRequired, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| BOOLEAN | ||||
| F14LaunchApCore ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|   IN       UINT32 SocketNum, | ||||
|   IN       UINT32 ModuleNum, | ||||
|   IN       UINT32 CoreNum, | ||||
|   IN       UINT32 PrimaryCoreNum, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| CORE_ID_POSITION | ||||
| F14CpuAmdCoreIdPositionInInitialApicId ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN       AMD_CONFIG_PARAMS      *StdHeader | ||||
|   ); | ||||
|  | ||||
| AGESA_STATUS | ||||
| F14GetPlatformTypeSpecificInfo ( | ||||
|   IN       CPU_SPECIFIC_SERVICES  *FamilySpecificServices, | ||||
|   IN OUT   PLATFORM_FEATS         *Features, | ||||
|   IN       AMD_CONFIG_PARAMS   *StdHeader | ||||
|   ); | ||||
| #endif  // _CPU_F14_UTILITES_H_ | ||||
| @@ -1,125 +0,0 @@ | ||||
| /* $NoKeywords:$ */ | ||||
| /** | ||||
|  * @file | ||||
|  * | ||||
|  * AMD Family_14 WHEA initial Data | ||||
|  * | ||||
|  * @xrefitem bom "File Content Label" "Release Content" | ||||
|  * @e project:      AGESA | ||||
|  * @e sub-project:  CPU | ||||
|  * @e \$Revision: 34897 $   @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $ | ||||
|  * | ||||
|  */ | ||||
| /* | ||||
|  ***************************************************************************** | ||||
|  * | ||||
|  * Copyright (c) 2011, Advanced Micro Devices, Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  *     * Redistributions of source code must retain the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer. | ||||
|  *     * Redistributions in binary form must reproduce the above copyright | ||||
|  *       notice, this list of conditions and the following disclaimer in the | ||||
|  *       documentation and/or other materials provided with the distribution. | ||||
|  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of | ||||
|  *       its contributors may be used to endorse or promote products derived | ||||
|  *       from this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY | ||||
|  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||
|  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||
|  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||
|  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  * | ||||
|  * *************************************************************************** | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                             M O D U L E S    U S E D | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| #include "AGESA.h" | ||||
| #include "cpuLateInit.h" | ||||
| #include "cpuFamilyTranslation.h" | ||||
| #include "Filecode.h" | ||||
| #define FILECODE PROC_CPU_FAMILY_0X14_CPUF14WHEAINITDATATABLES_FILECODE | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                   D E F I N I T I O N S    A N D    M A C R O S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                  T Y P E D E F S     A N D     S T R U C T U R E S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| VOID | ||||
| GetF14WheaInitData ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **F14WheaInitDataPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ); | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------- | ||||
|  *                          E X P O R T E D    F U N C T I O N S | ||||
|  *---------------------------------------------------------------------------------------- | ||||
|  */ | ||||
| AMD_HEST_BANK_INIT_DATA F14HestBankInitData[] = { | ||||
|   {0xFFFFFFFF,0xFFFFFFFF,0x400,0x401,0x402,0x403}, | ||||
|   {0xFFFFFFFF,0xFFFFFFFF,0x404,0x405,0x406,0x407}, | ||||
|   {0xFFFFFFFF,0xFFFFFFFF,0x408,0x409,0x40A,0x40B}, | ||||
|   {0xFFFFFFFF,0xFFFFFFFF,0x410,0x411,0x412,0x413}, | ||||
|   {0xFFFFFFFF,0xFFFFFFFF,0x414,0x415,0x416,0x417}, | ||||
| }; | ||||
|  | ||||
| AMD_WHEA_INIT_DATA F14WheaInitData = { | ||||
|   0x000000000,              // AmdGlobCapInitDataLsd | ||||
|   0x000000000,              // AmdGlobCapInitDataMsd | ||||
|   0x00000003F,              // AmdGlobCtrlInitDataLsd | ||||
|   0x000000000,              // AmdGlobCtrlInitDataMsd | ||||
|   0x00,                     // AmdMcbClrStatusOnInit | ||||
|   0x02,                     // AmdMcbStatusDataFormat | ||||
|   0x00,                     // AmdMcbConfWriteEn | ||||
|   ARRAY_SIZE(F14HestBankInitData), // HestBankNum | ||||
|   &F14HestBankInitData[0]   // Pointer to Initial data of HEST Bank | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*---------------------------------------------------------------------------------------*/ | ||||
| /** | ||||
|  *  Returns the family specific WHEA table properties. | ||||
|  * | ||||
|  *  @CpuServiceMethod{::F_CPU_GET_FAMILY_SPECIFIC_ARRAY}. | ||||
|  * | ||||
|  *  @param[in]   FamilySpecificServices   The current Family Specific Services. | ||||
|  *  @param[out]  F14WheaInitDataPtr       Points to the family 12h WHEA properties. | ||||
|  *  @param[out]  NumberOfElements         Will be one to indicate one structure. | ||||
|  *  @param[in]   StdHeader                Header for library and services. | ||||
|  * | ||||
|  */ | ||||
| VOID | ||||
| GetF14WheaInitData ( | ||||
|   IN       CPU_SPECIFIC_SERVICES *FamilySpecificServices, | ||||
|      OUT   CONST VOID **F14WheaInitDataPtr, | ||||
|      OUT   UINT8 *NumberOfElements, | ||||
|   IN       AMD_CONFIG_PARAMS *StdHeader | ||||
|   ) | ||||
| { | ||||
|   *NumberOfElements = 1; | ||||
|   *F14WheaInitDataPtr = &F14WheaInitData; | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user