AGESA F15: AMD family15 AGESA code
[coreboot.git] / src / vendorcode / amd / agesa / f15 / Include / OptionPreserveMailboxInstall.h
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * Install of build option: Preserve Mailbox
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: 56186 $   @e \$Date: 2011-07-08 15:35:23 -0600 (Fri, 08 Jul 2011) $
14  */
15 /*****************************************************************************
16  *
17  * Copyright (C) 2012 Advanced Micro Devices, Inc.
18  * All rights reserved.
19  *
20  * Redistribution and use in source and binary forms, with or without
21  * modification, are permitted provided that the following conditions are met:
22  *     * Redistributions of source code must retain the above copyright
23  *       notice, this list of conditions and the following disclaimer.
24  *     * Redistributions in binary form must reproduce the above copyright
25  *       notice, this list of conditions and the following disclaimer in the
26  *       documentation and/or other materials provided with the distribution.
27  *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
28  *       its contributors may be used to endorse or promote products derived
29  *       from this software without specific prior written permission.
30  *
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
32  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
33  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34  * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
35  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
38  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41  *
42  *
43  ***************************************************************************/
44
45 #ifndef _OPTION_PRESERVE_MAILBOX_INSTALL_H_
46 #define _OPTION_PRESERVE_MAILBOX_INSTALL_H_
47
48 #include "PreserveMailbox.h"
49
50 /*  This option is designed to be included into the platform solution install
51  *  file. The platform solution install file will define the options status.
52  *  Check to validate the definition
53  */
54 #define OPTION_PRESERVE_MAILBOX_FEAT
55 #define F10_PRESERVE_MAILBOX_SUPPORT
56 #define F15_PRESERVE_MAILBOX_SUPPORT
57
58 #if ((AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_POST == TRUE))
59   #if ((OPTION_FAMILY10H == TRUE) || (OPTION_FAMILY15H == TRUE))
60     extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeaturePreserveAroundMailbox;
61     #undef OPTION_PRESERVE_MAILBOX_FEAT
62     #define OPTION_PRESERVE_MAILBOX_FEAT &CpuFeaturePreserveAroundMailbox,
63   #endif
64   #if OPTION_FAMILY10H == TRUE
65     CONST PRESERVE_MAILBOX_FAMILY_REGISTER ROMDATA F10PreserveMailboxRegisters [] = {
66       {
67         {MAKE_SBDFO (0, 0, 0, 3, 0x168)},
68         0x00000FFF
69       },
70       {
71         {MAKE_SBDFO (0, 0, 0, 3, 0x170)},
72         0x00000FFF
73       },
74       {
75         {ILLEGAL_SBDFO},
76         0
77       }
78     };
79     CONST PRESERVE_MAILBOX_FAMILY_SERVICES ROMDATA F10PreserveMailboxServices = {
80       0,
81       TRUE,
82       (PRESERVE_MAILBOX_FAMILY_REGISTER *)&F10PreserveMailboxRegisters
83     };
84     #undef F10_PRESERVE_MAILBOX_SUPPORT
85     #define F10_PRESERVE_MAILBOX_SUPPORT {AMD_FAMILY_10, &F10PreserveMailboxServices},
86   #endif
87   #if OPTION_FAMILY15H == TRUE
88     CONST PRESERVE_MAILBOX_FAMILY_REGISTER ROMDATA F15PreserveMailboxRegisters [] = {
89       {
90         {MAKE_SBDFO (0, 0, 0, 3, 0x168)},
91         0x00000FFF
92       },
93       {
94         {MAKE_SBDFO (0, 0, 0, 3, 0x170)},
95         0x00000FFF
96       },
97       {
98         {ILLEGAL_SBDFO},
99         0
100       }
101     };
102     CONST PRESERVE_MAILBOX_FAMILY_SERVICES ROMDATA F15PreserveMailboxServices = {
103       0,
104       TRUE,
105       (PRESERVE_MAILBOX_FAMILY_REGISTER *)&F15PreserveMailboxRegisters
106     };
107     #undef F15_PRESERVE_MAILBOX_SUPPORT
108     #define F15_PRESERVE_MAILBOX_SUPPORT {AMD_FAMILY_15, &F15PreserveMailboxServices},
109   #endif
110   CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA PreserveMailboxFamilyServiceArray[] =
111   {
112     F10_PRESERVE_MAILBOX_SUPPORT
113     F15_PRESERVE_MAILBOX_SUPPORT
114     {0, NULL}
115   };
116   CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA PreserveMailboxFamilyServiceTable =
117   {
118     (sizeof (PreserveMailboxFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)),
119     &PreserveMailboxFamilyServiceArray[0]
120   };
121 #endif
122
123 #endif  // _OPTION_PRESERVE_MAILBOX_INSTALL_H_