AGESA F15: AMD family15 AGESA code
[coreboot.git] / src / vendorcode / amd / agesa / f15 / Proc / Mem / NB / OR / mnor.h
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * mnor.h
6  *
7  * Northbridge Orochi
8  *
9  * @xrefitem bom "File Content Label" "Release Content"
10  * @e project: AGESA
11  * @e sub-project: (Mem)
12  * @e \$Revision: 60556 $ @e \$Date: 2011-10-17 20:19:58 -0600 (Mon, 17 Oct 2011) $
13  *
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
46 #ifndef _MNOR_H_
47 #define _MNOR_H_
48
49 /*----------------------------------------------------------------------------
50  *   Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
51  *
52  *----------------------------------------------------------------------------
53  */
54 #define MAX_CHANNELS_PER_SOCKET_OR    4
55 #define MAX_DCTS_PER_NODE_OR          2
56 #define MAX_CHANNELS_PER_DCT_OR       1
57 #define MAX_NODES_SUPPORTED_OR        8
58
59 #define DEFAULT_WR_ODT_OR 6
60 #define DEFAULT_RD_ODT_OR 6
61
62 #define GetBufDatDly     0
63 #define GetBufDatDlySkew 1
64
65 /*-----------------------------------------------------------------------------
66  *                         DEFINITIONS AND MACROS
67  *
68  *-----------------------------------------------------------------------------
69  */
70
71 /*----------------------------------------------------------------------------
72  *                         TYPEDEFS, STRUCTURES, ENUMS
73  *
74  *----------------------------------------------------------------------------
75  */
76 /// Data Structure of Parameters for MR0 PPD set during S3 resume
77 typedef struct {
78   UINT16 MR0Value;                 ///< MRO Value saved during memory initialization
79   UINT16 ChipSelEnMap;             ///< Bitmap of Enabled Chip Select per DCT
80 } MR0_DATA_STRUCT;
81
82 typedef MR0_DATA_STRUCT (*MR0_DATA_ARRAY_PTR)[MAX_NODES_SUPPORTED_OR][MAX_DCTS_PER_NODE_OR];
83 /*----------------------------------------------------------------------------
84  *                           FUNCTIONS PROTOTYPE
85  *
86  *----------------------------------------------------------------------------
87  */
88 BOOLEAN
89 MemConstructNBBlockOR (
90   IN OUT   MEM_NB_BLOCK *NBPtr,
91   IN OUT   MEM_DATA_STRUCT *MemPtr,
92   IN       MEM_FEAT_BLOCK_NB *FeatPtr,
93   IN       MEM_SHARED_DATA *SharedPtr,
94   IN       UINT8 NodeID
95   );
96
97 VOID
98 MemNInitNBDataOr (
99   IN OUT   MEM_NB_BLOCK *NBPtr
100   );
101
102 VOID
103 MemNInitDefaultsOR (
104   IN OUT   MEM_DATA_STRUCT *MemPtr
105   );
106
107 BOOLEAN
108 MemNFinalizeMctOr (
109   IN OUT   MEM_NB_BLOCK *NBPtr
110   );
111
112 BOOLEAN
113 MemNAutoConfigOr (
114   IN OUT   MEM_NB_BLOCK *NBPtr
115   );
116
117 BOOLEAN
118 MemNOtherTimingOr (
119   IN OUT   MEM_NB_BLOCK *NBPtr
120   );
121
122 VOID
123 MemNInitPhyCompOr (
124   IN OUT   MEM_NB_BLOCK *NBPtr
125   );
126
127 VOID
128 MemNWritePatternOr (
129   IN OUT   MEM_NB_BLOCK *NBPtr,
130   IN       UINT32 Address,
131   IN       UINT8 Pattern[],
132   IN       UINT16 ClCount
133   );
134
135 VOID
136 MemNReadPatternOr (
137   IN OUT   MEM_NB_BLOCK *NBPtr,
138   IN       UINT8 Buffer[],
139   IN       UINT32 Address,
140   IN       UINT16 ClCount
141   );
142
143 VOID
144 MemNInitNBRegTableOr (
145   IN OUT   MEM_NB_BLOCK *NBPtr,
146   IN OUT   TSEFO NBRegTable[]
147   );
148
149 UINT8
150 MemNGetSocketRelativeChannelOr (
151   IN OUT   MEM_NB_BLOCK *NBPtr,
152   IN       UINT8 Dct,
153   IN       UINT8 Channel
154   );
155
156 BOOLEAN
157 MemNIsIdSupportedOr (
158   IN OUT   MEM_NB_BLOCK *NBPtr,
159   IN       CPU_LOGICAL_ID *LogicalIdPtr
160   );
161
162 UINT32
163 MemNCmnGetSetFieldOr (
164   IN OUT   MEM_NB_BLOCK *NBPtr,
165   IN       UINT8 IsSet,
166   IN       BIT_FIELD_NAME FieldName,
167   IN       UINT32 Field
168   );
169
170 BOOLEAN
171 memNEnableTrainSequenceOr (
172   IN OUT   MEM_NB_BLOCK *NBPtr
173   );
174
175 VOID
176 MemNTechBlockSwitchOr (
177   IN OUT   MEM_NB_BLOCK *NBPtr
178   );
179
180 BOOLEAN
181 MemNScrubberErratumOr (
182   IN OUT   MEM_NB_BLOCK *NBPtr,
183   IN OUT   VOID *OptParam
184   );
185
186 VOID
187 MemNAfterDQSTrainingOr (
188   IN OUT   MEM_NB_BLOCK *NBPtr
189   );
190
191 BOOLEAN
192 MemNDataTxFifoWrDlyOverrideOr (
193   IN OUT   MEM_NB_BLOCK *NBPtr,
194   IN OUT   VOID *OptParam
195   );
196
197 VOID
198 MemNCapSpeedBatteryLifeOr (
199   IN OUT   MEM_NB_BLOCK *NBPtr
200   );
201
202 VOID
203 MemNGetMaxLatParamsOr (
204   IN OUT   MEM_NB_BLOCK *NBPtr,
205   IN       UINT16 MaxRcvEnDly,
206   IN OUT   UINT16 *MinDlyPtr,
207   IN OUT   UINT16 *MaxDlyPtr,
208   IN OUT   UINT16 *DlyBiasPtr
209   );
210
211 VOID
212 MemNSetMaxLatencyOr (
213   IN OUT   MEM_NB_BLOCK *NBPtr,
214   IN       UINT16 MaxRcvEnDly
215   );
216
217 BOOLEAN
218 MemNExitPhyAssistedTrainingOr (
219   IN OUT   MEM_NB_BLOCK *NBPtr,
220   IN OUT   VOID *OptParam
221   );
222
223 BOOLEAN
224 MemNOverrideRcvEnSeedOr (
225   IN OUT   MEM_NB_BLOCK *NBPtr,
226   IN OUT   VOID *SeedPtr
227   );
228
229 BOOLEAN
230 MemNOverrideRcvEnSeedPassNOr (
231   IN OUT   MEM_NB_BLOCK *NBPtr,
232   IN OUT   VOID *SeedTotal
233   );
234
235 BOOLEAN
236 MemNOverrideWLSeedOr (
237   IN OUT   MEM_NB_BLOCK *NBPtr,
238   IN OUT   VOID *SeedPtr
239   );
240
241 BOOLEAN
242 MemNAfterMemClkFreqChgOr (
243   IN OUT   MEM_NB_BLOCK *NBPtr,
244   IN OUT   VOID *OptParam
245   );
246
247
248 BOOLEAN
249 MemNTrainWlPerNibbleOr (
250   IN OUT   MEM_NB_BLOCK *NBPtr,
251   IN OUT   VOID *Dimm
252   );
253
254 BOOLEAN
255 MemNTrainWlPerNibbleAdjustWLDlyOr (
256   IN OUT   MEM_NB_BLOCK *NBPtr,
257   IN OUT   VOID *Delay
258   );
259
260 VOID
261 MemNBeforeDQSTrainingOr (
262   IN OUT   MEM_NB_BLOCK *NBPtr
263   );
264
265 BOOLEAN
266 MemNTrainRxEnPerNibbleOr (
267   IN OUT   MEM_NB_BLOCK *NBPtr,
268   IN OUT   VOID *ChipSel
269   );
270
271 BOOLEAN
272 MemNTrainRxEnAdjustDlyPerNibbleOr (
273   IN OUT   MEM_NB_BLOCK *NBPtr,
274   IN OUT   VOID *RcvEnDly
275   );
276
277 BOOLEAN
278 MemNTrainRxEnGetAvgDlyPerNibbleOr (
279   IN OUT   MEM_NB_BLOCK *NBPtr,
280   IN OUT   VOID *OptParam
281   );
282
283 BOOLEAN
284 MemNInitPerNibbleTrnOr (
285   IN OUT   MEM_NB_BLOCK *NBPtr,
286   IN OUT   VOID *OptParam
287   );
288
289 BOOLEAN
290 MemNTrainWlPerNibbleSeedOr (
291   IN OUT   MEM_NB_BLOCK *NBPtr,
292   IN OUT   VOID *WrDqsDly
293   );
294
295 BOOLEAN
296 MemNTrainingNibbleZeroOr (
297   IN OUT   MEM_NB_BLOCK *NBPtr,
298   IN OUT   VOID *ChipSel
299   );
300
301 BOOLEAN
302 MemNBeforeSetCsTriOr (
303   IN OUT   MEM_NB_BLOCK *NBPtr,
304   IN OUT   VOID *CsTriBitmap
305   );
306
307 BOOLEAN
308 MemNEnableParityAfterMemRstOr (
309   IN OUT   MEM_NB_BLOCK *NBPtr,
310   IN OUT   VOID *OptParam
311   );
312
313 BOOLEAN
314 MemNProgOdtControlOr (
315   IN OUT   MEM_NB_BLOCK *NBPtr,
316   IN OUT   VOID *OptParam
317   );
318
319 VOID
320 MemNBeforeDramInitOr (
321   IN OUT   MEM_NB_BLOCK *NBPtr
322   );
323
324 VOID
325 MemNPFenceAdjustOr (
326   IN OUT   MEM_NB_BLOCK *NBPtr,
327   IN OUT   INT16 *Value16
328   );
329
330 BOOLEAN
331 MemNReleaseNbPstateOr (
332   IN OUT   MEM_NB_BLOCK *NBPtr,
333   IN OUT   VOID *OptParam
334   );
335
336 VOID
337 MemNSaveMR0Or (
338   IN OUT   MEM_NB_BLOCK *NBPtr,
339   IN       UINT32 MrsAddress
340   );
341
342 UINT32
343 MemNCalBufDatDelaySkewOr (
344   IN OUT   MEM_NB_BLOCK *NBPtr,
345   IN       UINT8   GetDelay
346   );
347
348 VOID
349 MemNPowerDownCtlOr (
350   IN OUT   MEM_NB_BLOCK *NBPtr
351   );
352
353 BOOLEAN
354 MemNAdjustWrDqsBeforeSeedScalingOr (
355   IN OUT   MEM_NB_BLOCK *NBPtr,
356   IN OUT   VOID *WrDqsBias
357   );
358
359 #endif  /* _MNOR_H_ */
360
361