blob: 20600db71607cb2fbc22614dabedea7013f2a560 [file] [log] [blame]
Frank Vibrans2b4c8312011-02-14 18:30:54 +00001/* $NoKeywords:$ */
2/**
3 * @file
4 *
5 * Install of build option: DMI
6 *
7 * Contains AMD AGESA install macros and test conditions. Output is the
8 * defaults tables reflecting the User's build options selection.
9 *
10 * @xrefitem bom "File Content Label" "Release Content"
11 * @e project: AGESA
12 * @e sub-project: Options
13 * @e \$Revision: 34897 $ @e \$Date: 2010-07-14 10:07:10 +0800 (Wed, 14 Jul 2010) $
14 */
15/*
16 *****************************************************************************
17 *
18 * Copyright (c) 2011, Advanced Micro Devices, Inc.
19 * All rights reserved.
Edward O'Callaghane963b382014-07-06 19:27:14 +100020 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000021 * Redistribution and use in source and binary forms, with or without
22 * modification, are permitted provided that the following conditions are met:
23 * * Redistributions of source code must retain the above copyright
24 * notice, this list of conditions and the following disclaimer.
25 * * Redistributions in binary form must reproduce the above copyright
26 * notice, this list of conditions and the following disclaimer in the
27 * documentation and/or other materials provided with the distribution.
Edward O'Callaghane963b382014-07-06 19:27:14 +100028 * * Neither the name of Advanced Micro Devices, Inc. nor the names of
29 * its contributors may be used to endorse or promote products derived
Frank Vibrans2b4c8312011-02-14 18:30:54 +000030 * from this software without specific prior written permission.
Edward O'Callaghane963b382014-07-06 19:27:14 +100031 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000032 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
33 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
35 * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
36 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
37 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
39 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
40 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Edward O'Callaghane963b382014-07-06 19:27:14 +100042 *
Frank Vibrans2b4c8312011-02-14 18:30:54 +000043 * ***************************************************************************
44 *
45 */
46
47#ifndef _OPTION_DMI_INSTALL_H_
48#define _OPTION_DMI_INSTALL_H_
49
50#include "cpuLateInit.h"
51
52/* This option is designed to be included into the platform solution install
53 * file. The platform solution install file will define the options status.
54 * Check to validate the definition
55 */
56#if AGESA_ENTRY_INIT_LATE == TRUE
57 #ifndef OPTION_DMI
58 #error BLDOPT: Option not defined: "OPTION_DMI"
59 #endif
60 #if OPTION_DMI == TRUE
61 OPTION_DMI_FEATURE GetDmiInfoMain;
62 OPTION_DMI_RELEASE_BUFFER ReleaseDmiBuffer;
63 #define USER_DMI_OPTION &GetDmiInfoMain
64 #define USER_DMI_RELEASE_BUFFER &ReleaseDmiBuffer
65
66 // This additional check keeps AP launch routines from being unnecessarily included
67 // in single socket systems.
68 #if OPTION_MULTISOCKET == TRUE
Frank Vibrans2b4c8312011-02-14 18:30:54 +000069 #define CPU_DMI_AP_GET_TYPE4_TYPE7 {AP_LATE_TASK_GET_TYPE4_TYPE7, (IMAGE_ENTRY) GetType4Type7Info},
70 #else
71 #define CPU_DMI_AP_GET_TYPE4_TYPE7
72 #endif
73
Frank Vibrans2b4c8312011-02-14 18:30:54 +000074 // Family 14
75 #ifdef OPTION_FAMILY14H
76 #if OPTION_FAMILY14H == TRUE
77 extern PROC_FAMILY_TABLE ProcFamily14DmiTable;
78 #define FAM14_DMI_SUPPORT FAM14_ENABLED,
79 #define FAM14_DMI_TABLE &ProcFamily14DmiTable,
80 #else
81 #define FAM14_DMI_SUPPORT
82 #define FAM14_DMI_TABLE
83 #endif
84 #else
85 #define FAM14_DMI_SUPPORT
86 #define FAM14_DMI_TABLE
87 #endif
88
Frank Vibrans2b4c8312011-02-14 18:30:54 +000089 #else
90 OPTION_DMI_FEATURE GetDmiInfoStub;
91 OPTION_DMI_RELEASE_BUFFER ReleaseDmiBufferStub;
92 #define USER_DMI_OPTION GetDmiInfoStub
93 #define USER_DMI_RELEASE_BUFFER ReleaseDmiBufferStub
Frank Vibrans2b4c8312011-02-14 18:30:54 +000094 #define FAM14_DMI_SUPPORT
95 #define FAM14_DMI_TABLE
Frank Vibrans2b4c8312011-02-14 18:30:54 +000096 #define CPU_DMI_AP_GET_TYPE4_TYPE7
97 #endif
98#else
99 OPTION_DMI_FEATURE GetDmiInfoStub;
100 OPTION_DMI_RELEASE_BUFFER ReleaseDmiBufferStub;
101 #define USER_DMI_OPTION GetDmiInfoStub
102 #define USER_DMI_RELEASE_BUFFER ReleaseDmiBufferStub
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000103 #define FAM14_DMI_SUPPORT
104 #define FAM14_DMI_TABLE
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000105 #define CPU_DMI_AP_GET_TYPE4_TYPE7
106#endif
107
108/// DMI supported families enum
109typedef enum {
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000110 FAM14_DMI_SUPPORT ///< Conditionally define F14 support
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000111 NUM_DMI_FAMILIES ///< Number of installed families
112} AGESA_DMI_SUPPORTED_FAM;
113
114/* Declare the Family List. An array of pointers to tables that each describe a family */
115CONST PROC_FAMILY_TABLE ROMDATA *ProcTables[] = {
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000116 FAM14_DMI_TABLE
Frank Vibrans2b4c8312011-02-14 18:30:54 +0000117 NULL
118};
119
120/* Declare the instance of the DMI option configuration structure */
121CONST OPTION_DMI_CONFIGURATION ROMDATA OptionDmiConfiguration = {
122 DMI_STRUCT_VERSION,
123 USER_DMI_OPTION,
124 USER_DMI_RELEASE_BUFFER,
125 NUM_DMI_FAMILIES,
126 (VOID *((*)[])) &ProcTables // Compiler says array size must match struct decl
127};
128
129#endif // _OPTION_DMI_INSTALL_H_