AMD Agesa macro expansion fix
[coreboot.git] / src / vendorcode / amd / agesa / f12 / Proc / Mem / merrhdl.h
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * mmerrhdl.h
6  *
7  * main error handling
8  *
9  * @xrefitem bom "File Content Label" "Release Content"
10  * @e project: AGESA
11  * @e sub-project: (Mem)
12  * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
13  *
14  **/
15 /*****************************************************************************
16   *
17  * Copyright (c) 2011, 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 _MMERRHDL_H_
46 #define _MMERRHDL_H_
47
48 /*----------------------------------------------------------------------------
49  *   Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
50  *
51  *----------------------------------------------------------------------------
52  */
53
54 /*-----------------------------------------------------------------------------
55  *                         DEFINITIONS AND MACROS
56  *
57  *-----------------------------------------------------------------------------
58  */
59 #define EXCLUDE_ALL_DCT 0xFF
60 #define EXCLUDE_ALL_CHIPSEL  0xFF
61
62 /// default times of training
63 #define DEFAULT_TRAINING_TIMES 1
64
65 /// number of us to wait in parallel training
66 #define PARALLEL_TRAINING_TIMEOUT 60000000
67
68 /// number of us to wait in PCI space access
69 #define PCI_ACCESS_TIMEOUT 10000000
70 /// number of us to wait in special PCI space access which takes much longer than others
71 #define SPECIAL_PCI_ACCESS_TIMEOUT 20000000
72
73 /// Beginning of retrain handling, must be ended with the ending of the handling
74 #define ERROR_HANDLE_RETRAIN_BEGIN(counter, limit) while (counter < limit)
75
76 /// Ending of retrain handling
77 #define ERROR_HANDLE_RETRAIN_END(condition, counter) \
78 if (condition) { \
79   counter ++; \
80 } else { \
81   break; \
82 }
83
84 /*----------------------------------------------------------------------------
85  *                         TYPEDEFS, STRUCTURES, ENUMS
86  *
87  *----------------------------------------------------------------------------
88  */
89 /*----------------------------------------------------------------------------
90  *                           FUNCTIONS PROTOTYPE
91  *
92  *----------------------------------------------------------------------------
93  */
94
95 BOOLEAN
96 MemErrHandle (
97   IN       DIE_STRUCT *MCTPtr,
98   IN       UINT8  DCT,
99   IN       UINT16  ChipSelMask,
100   IN       AMD_CONFIG_PARAMS *StdHeader
101   );
102
103 #endif  /* _MMERRHDL_H_ */