72ccb844a4f6f95b57fd67376be002a8473c15a9
[coreboot.git] / src / vendorcode / amd / agesa / f14 / Proc / GNB / Common / Gnb.h
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * Misc common definition
6  *
7  *
8  *
9  * @xrefitem bom "File Content Label" "Release Content"
10  * @e project:     AGESA
11  * @e sub-project: GNB
12  * @e \$Revision: 40151 $   @e \$Date: 2010-10-20 06:38:17 +0800 (Wed, 20 Oct 2010) $
13  *
14  */
15 /*
16  *****************************************************************************
17  *
18  * Copyright (c) 2011, Advanced Micro Devices, Inc.
19  * All rights reserved.
20  * 
21  * 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.
28  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of 
29  *       its contributors may be used to endorse or promote products derived 
30  *       from this software without specific prior written permission.
31  * 
32  * 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.
42  * 
43  * ***************************************************************************
44  *
45  */
46 #ifndef _GNB_H_
47 #define _GNB_H_
48
49
50 #define GNB_DEADLOOP() \
51 { \
52   VOLATILE BOOLEAN k; \
53   k = TRUE; \
54   while (k) { \
55   } \
56 }
57 #ifdef IDSOPT_TRACING_ENABLED
58   #if (IDSOPT_TRACING_ENABLED == TRUE)
59     #define GNB_TRACE_ENABLE
60   #endif
61 #endif
62
63
64 #ifndef GNB_DEBUG_CODE
65   #ifdef GNB_TRACE_ENABLE
66     #define  GNB_DEBUG_CODE(Code) Code
67   #else
68     #define  GNB_DEBUG_CODE(Code)
69   #endif
70 #endif
71
72 #define MIN(x, y) (((x) > (y))? (y):(x))
73 #define MAX(x, y) (((x) > (y))? (x):(y))
74
75 #define OFF 0
76
77 #define PVOID UINT64
78
79 #define GnbLibGetHeader(x)  ((AMD_CONFIG_PARAMS*) (x)->StdHeader)
80
81 #define AGESA_STATUS_UPDATE(Current, Aggregated) \
82 if (Current > Aggregated) { \
83   Aggregated = Current; \
84 }
85
86 #ifndef offsetof
87   #define offsetof(s, m) (UINTN)&(((s *)0)->m)
88 #endif
89
90 /// Power gaiter data setting (do not change this structure definition)
91 typedef struct {
92   UINT16  MothPsoPwrup;                   ///< Mother Timer Powerup
93   UINT16  MothPsoPwrdn;                   ///< Mother Timer Powerdown
94   UINT16  DaugPsoPwrup;                   ///< Daughter Timer Powerup
95   UINT16  DaugPsoPwrdn;                   ///< Daughter Timer Powerdown
96   UINT16  ResetTimer;                     ///< Reset Timer
97   UINT16  IsoTimer;                       ///< Isolation Timer
98 } POWER_GATE_DATA;
99
100 #define GNB_STRINGIZE(x)                  #x
101 #define GNB_SERVICE_DEFINITIONS(x)        GNB_STRINGIZE (Services/x/x.h)
102 #define GNB_MODULE_DEFINITIONS(x)         GNB_STRINGIZE (Modules/x/x.h)
103
104 #endif