remove trailing whitespace
[coreboot.git] / src / northbridge / amd / amdht / h3gtopo.h
1 /*
2  * This file is part of the coreboot project.
3  *
4  * Copyright (C) 2007 Advanced Micro Devices, Inc.
5  *
6  * This program is free software * you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation * version 2 of the License.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY * without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program * if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18  */
19
20 #ifndef HTTOPO_H
21 #define HTTOPO_H
22
23 #include <stddef.h>
24
25 /*----------------------------------------------------------------------------
26  *   Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
27  *
28  *----------------------------------------------------------------------------
29  */
30
31 /*-----------------------------------------------------------------------------
32  *                      DEFINITIONS AND MACROS
33  *
34  *-----------------------------------------------------------------------------
35  */
36
37 /*----------------------------------------------------------------------------
38  *                      TYPEDEFS, STRUCTURES, ENUMS
39  *
40  *----------------------------------------------------------------------------
41  */
42
43 /*
44  *   0
45  */
46 static u8 const amdHtTopologySingleNode[] = {
47         0x01,
48         0x00, 0xFF      // Node 0
49 };
50
51 /*
52  *   0---1
53  */
54 static u8 const amdHtTopologyDualNode[] = {
55         0x02,
56         0x02, 0xFF, 0x00, 0x11, // Node 0
57         0x00, 0x00, 0x01, 0xFF  // Node 1
58 };
59
60 /*
61  *   2
62  *   |
63  *   |
64  *   0---1
65  */
66 static u8 const amdHtTopologyThreeLine[] = {
67         0x03,
68         0x06, 0xFF, 0x04, 0x11, 0x02, 0x22,     // Node 0
69         0x00, 0x00, 0x01, 0xFF, 0x00, 0x00,     // Node 1
70         0x00, 0x00, 0x00, 0x00, 0x01, 0xFF      // Node 2
71 };
72
73 /*
74  *   2
75  *   |\
76  *   |  \
77  *   0---1
78  */
79 static u8 const amdHtTopologyTriangle[] = {
80         0x03,
81         0x06, 0xFF, 0x00, 0x11, 0x00, 0x22,     // Node 0
82         0x00, 0x00, 0x05, 0xFF, 0x00, 0x22,     // Node 1
83         0x00, 0x00, 0x00, 0x11, 0x03, 0xFF      // Node 2
84 };
85
86 /*
87  *   2   3
88  *   |\  |
89  *   |  \|
90  *   0---1
91  */
92 static u8 const amdHtTopologyFourDegenerate[] = {
93         0x04,
94         0x06, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x11, // Node 0
95         0x08, 0x00, 0x0D, 0xFF, 0x08, 0x22, 0x05, 0x33, // Node 1
96         0x00, 0x00, 0x00, 0x11, 0x03, 0xFF, 0x00, 0x11, // Node 2
97         0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x02, 0xFF  // Node 3
98 };
99
100 /*
101  *   2---3
102  *   |\ /|
103  *   |/ \|
104  *   0---1
105  */
106 static u8 const amdHtTopologyFourFully[] = {
107         0x04,
108         0x0E, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, // Node 0
109         0x00, 0x00, 0x0D, 0xFF, 0x00, 0x22, 0x00, 0x33, // Node 1
110         0x00, 0x00, 0x00, 0x11, 0x0B, 0xFF, 0x00, 0x33, // Node 2
111         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x07, 0xFF  // Node 3
112 };
113
114
115 /*
116  *   2---3
117  *   |\  |
118  *   |  \|
119  *   0---1
120  */
121 static u8 const amdHtTopologyFourKite[] = {
122         0x04,
123         0x06, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x11, // Node 0
124         0x08, 0x00, 0x0D, 0xFF, 0x00, 0x22, 0x00, 0x33, // Node 1
125         0x00, 0x00, 0x00, 0x11, 0x0B, 0xFF, 0x01, 0x33, // Node 2
126         0x00, 0x22, 0x00, 0x11, 0x00, 0x22, 0x06, 0xFF  // Node 3
127 };
128
129
130 /*
131  *   2   3
132  *   |   |
133  *   |   |
134  *   0---1
135  */
136 static u8 const amdHtTopologyFourLine[] = {
137         0x04,
138         0x06, 0xFF, 0x04, 0x11, 0x02, 0x22, 0x04, 0x11, // Node 0
139         0x08, 0x00, 0x09, 0xFF, 0x08, 0x00, 0x01, 0x33, // Node 1
140         0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, // Node 2
141         0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x02, 0xFF  // Node 3
142 };
143
144
145 /*
146  *   2---3
147  *   |   |
148  *   |   |
149  *   0---1
150  */
151 static u8 const amdHtTopologyFourSquare[] = {
152         0x04,
153         0x06, 0xFF, 0x00, 0x11, 0x02, 0x22, 0x00, 0x22, // Node 0
154         0x00, 0x00, 0x09, 0xFF, 0x00, 0x33, 0x01, 0x33, // Node 1
155         0x08, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x33, // Node 2
156         0x00, 0x11, 0x04, 0x11, 0x00, 0x22, 0x06, 0xFF, // Node 3
157 };
158
159
160 /*
161  *   2---3
162  *   |\
163  *   |  \
164  *   0   1
165  */
166 static u8 const amdHtTopologyFourStar[] = {
167         0x04,
168         0x04, 0xFF, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, // Node 0
169         0x00, 0x22, 0x04, 0xFF, 0x00, 0x22, 0x00, 0x22, // Node 1
170         0x0A, 0x00, 0x09, 0x11, 0x0B, 0xFF, 0x03, 0x33, // Node 2
171         0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x04, 0xFF, // Node 3
172 };
173
174
175 static u8 const amdHtTopologyFiveFully[] = {
176         0x05,
177         0x1E, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44,     // Node 0
178         0x00, 0x00, 0x1D, 0xFF, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44,     // Node 1
179         0x00, 0x00, 0x00, 0x11, 0x1B, 0xFF, 0x00, 0x33, 0x00, 0x44,     // Node 2
180         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x17, 0xFF, 0x00, 0x44,     // Node 3
181         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x0F, 0xFF      // Node 4
182 };
183
184
185 /*
186  *
187  *  4
188  *  |\
189  *  |  \
190  *  2   3
191  *  |   |
192  *  0---1
193  */
194 static u8 const amdHtTopologyFiveTwistedLadder[] = {
195         0x05,
196         0x06, 0xFF, 0x04, 0x11, 0x02, 0x22, 0x00, 0x11, 0x00, 0x22,     // Node0
197         0x08, 0x00, 0x09, 0xFF, 0x08, 0x00, 0x01, 0x33, 0x00, 0x30,     // Node1
198         0x10, 0x00, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x40, 0x01, 0x44,     // Node2
199         0x00, 0x11, 0x00, 0x11, 0x00, 0x14, 0x12, 0xFF, 0x02, 0x44,     // Node3
200         0x00, 0x22, 0x00, 0x23, 0x00, 0x22, 0x04, 0x33, 0x0C, 0xFF      // Node4
201 };
202
203
204 static u8 const amdHtTopologySixFully[] = {
205         0x06,
206         0x3E, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, // Node 0
207         0x00, 0x00, 0x3D, 0xFF, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, // Node 1
208         0x00, 0x00, 0x00, 0x11, 0x3B, 0xFF, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, // Node 2
209         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x37, 0xFF, 0x00, 0x44, 0x00, 0x55, // Node 3
210         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x2F, 0xFF, 0x00, 0x55, // Node 4
211         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x1F, 0xFF  // Node 5
212 };
213
214 /*
215  *
216  *  4   5
217  *  |\ /|
218  *  |/ \|
219  *  2   3
220  *  |   |
221  *  0---1
222  */
223 static u8 const amdHtTopologySixTwistedLadder[] = {
224         0x06,
225         0x06, 0xFF, 0x04, 0x11, 0x02, 0x22, 0x00, 0x11, 0x02, 0x22, 0x00, 0x12, // Node0
226         0x08, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x01, 0x33, 0x00, 0x03, 0x01, 0x33, // Node1
227         0x30, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x54, 0x21, 0x44, 0x00, 0x55, // Node2
228         0x00, 0x11, 0x30, 0x11, 0x00, 0x45, 0x32, 0xFF, 0x00, 0x44, 0x12, 0x55, // Node3
229         0x00, 0x22, 0x00, 0x32, 0x08, 0x22, 0x00, 0x33, 0x0C, 0xFF, 0x00, 0x32, // Node4
230         0x00, 0x23, 0x00, 0x33, 0x00, 0x22, 0x04, 0x33, 0x00, 0x23, 0x0C, 0xFF  // Node5
231 };
232
233
234 static u8 const amdHtTopologySevenFully[] = {
235         0x07,
236         0x7E, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66,     // Node 0
237         0x00, 0x00, 0x7D, 0xFF, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66,     // Node 1
238         0x00, 0x00, 0x00, 0x11, 0x7B, 0xFF, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66,     // Node 2
239         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x77, 0xFF, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66,     // Node 3
240         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x6F, 0xFF, 0x00, 0x55, 0x00, 0x66,     // Node 4
241         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x5F, 0xFF, 0x00, 0x66,     // Node 5
242         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x3F, 0xFF,     // Node 6
243 };
244
245
246 /*  6
247  *  |
248  *  4   5
249  *  |\ /|
250  *  |/ \|
251  *  2   3
252  *  |   |
253  *  0---1
254  */
255 static u8 const amdHtTopologySevenTwistedLadder[] = {
256         0x07,
257         0x06, 0xFF, 0x00, 0x11, 0x02, 0x22, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22,     // Node0
258         0x00, 0x00, 0x09, 0xFF, 0x00, 0x03, 0x01, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33,     // Node1
259         0x30, 0x00, 0x00, 0x50, 0x31, 0xFF, 0x00, 0x54, 0x21, 0x44, 0x01, 0x55, 0x21, 0x44,     // Node2
260         0x00, 0x41, 0x30, 0x11, 0x00, 0x45, 0x32, 0xFF, 0x02, 0x44, 0x12, 0x55, 0x02, 0x44,     // Node3
261         0x48, 0x22, 0x40, 0x33, 0x48, 0x22, 0x40, 0x33, 0x4C, 0xFF, 0x40, 0x32, 0x0C, 0x66,     // Node4
262         0x00, 0x22, 0x04, 0x33, 0x00, 0x22, 0x04, 0x33, 0x00, 0x23, 0x0C, 0xFF, 0x00, 0x23,     // Node5
263         0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x10, 0xFF      // Node6
264 };
265
266
267 /*
268  *   5--4
269  *  /####\
270  * 6######3
271  * |######|
272  * 7######2
273  *  \####/
274  *   0--1
275  */
276 static u8 const amdHtTopologyEightFully [] = {
277         0x08,
278         0xFE, 0xFF, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66, 0x00, 0x77, // Node 0
279         0x00, 0x00, 0xFD, 0xFF, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66, 0x00, 0x77, // Node 1
280         0x00, 0x00, 0x00, 0x11, 0xFB, 0xFF, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66, 0x00, 0x77, // Node 2
281         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0xF7, 0xFF, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66, 0x00, 0x77, // Node 3
282         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0xEF, 0xFF, 0x00, 0x55, 0x00, 0x66, 0x00, 0x77, // Node 4
283         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0xDF, 0xFF, 0x00, 0x66, 0x00, 0x77, // Node 5
284         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0xBF, 0xFF, 0x00, 0x77, // Node 6
285         0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x33, 0x00, 0x44, 0x00, 0x55, 0x00, 0x66, 0x7F, 0xFF  // Node 7
286 };
287
288
289 /*  6---7
290  *  |   |
291  *  4---5
292  *  |   |
293  *  2---3
294  *  |   |
295  *  0---1
296  */
297 static u8 const amdHtTopologyEightStraightLadder[] = {
298         0x08,
299         0x06, 0xFF, 0x00, 0x11, 0x02, 0x22, 0x00, 0x22, 0x02, 0x22, 0x00, 0x22, 0x02, 0x22, 0x00, 0x22, // Node0
300         0x00, 0x00, 0x09, 0xFF, 0x00, 0x33, 0x01, 0x33, 0x00, 0x33, 0x01, 0x33, 0x00, 0x33, 0x01, 0x33, // Node1
301         0x18, 0x00, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x33, 0x09, 0x44, 0x00, 0x44, 0x09, 0x44, 0x00, 0x44, // Node2
302         0x00, 0x11, 0x24, 0x11, 0x00, 0x22, 0x26, 0xFF, 0x00, 0x55, 0x06, 0x55, 0x00, 0x55, 0x06, 0x55, // Node3
303         0x60, 0x22, 0x00, 0x22, 0x60, 0x22, 0x00, 0x22, 0x64, 0xFF, 0x00, 0x55, 0x24, 0x66, 0x00, 0x66, // Node4
304         0x00, 0x33, 0x90, 0x33, 0x00, 0x33, 0x90, 0x33, 0x00, 0x44, 0x98, 0xFF, 0x00, 0x77, 0x18, 0x77, // Node5
305         0x80, 0x44, 0x00, 0x44, 0x80, 0x44, 0x00, 0x44, 0x80, 0x44, 0x00, 0x44, 0x90, 0xFF, 0x00, 0x77, // Node6
306         0x00, 0x55, 0x40, 0x55, 0x00, 0x55, 0x40, 0x55, 0x00, 0x55, 0x40, 0x55, 0x00, 0x66, 0x60, 0xFF  // Node7
307 };
308
309
310 /*  6---7
311  *  |   |
312  *  4   5
313  *  |\ /|
314  *  |/ \|
315  *  2   3
316  *  |   |
317  *  0---1
318  */
319 static u8 const amdHtTopologyEightTwistedLadder[] = {
320         0x08,
321         0x06, 0xFF, 0x00, 0x11, 0x02, 0x22, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, // Node0
322         0x00, 0x00, 0x09, 0xFF, 0x00, 0x03, 0x01, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, // Node1
323         0x30, 0x00, 0x00, 0x50, 0x31, 0xFF, 0x00, 0x54, 0x21, 0x44, 0x01, 0x55, 0x21, 0x44, 0x01, 0x55, // Node2
324         0x00, 0x41, 0x30, 0x11, 0x00, 0x45, 0x32, 0xFF, 0x02, 0x44, 0x12, 0x55, 0x02, 0x44, 0x12, 0x55, // Node3
325         0x48, 0x22, 0x40, 0x33, 0x48, 0x22, 0x40, 0x33, 0x4C, 0xFF, 0x00, 0x32, 0x0C, 0x66, 0x00, 0x36, // Node4
326         0x80, 0x22, 0x84, 0x33, 0x80, 0x22, 0x84, 0x33, 0x00, 0x23, 0x8C, 0xFF, 0x00, 0x27, 0x0C, 0x77, // Node5
327         0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x80, 0x44, 0x00, 0x74, 0x90, 0xFF, 0x00, 0x77, // Node6
328         0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x65, 0x40, 0x55, 0x00, 0x66, 0x60, 0xFF  // Node7
329 };
330
331 static const u8 * const amd_topo_list[] = {
332         amdHtTopologySingleNode,
333         amdHtTopologyDualNode,
334         amdHtTopologyThreeLine,
335         amdHtTopologyTriangle,
336         amdHtTopologyFourLine,
337         amdHtTopologyFourStar,
338         amdHtTopologyFourDegenerate,
339         amdHtTopologyFourSquare,
340         amdHtTopologyFourKite,
341         amdHtTopologyFourFully,
342         amdHtTopologyFiveFully,
343         amdHtTopologySixFully,
344         amdHtTopologySevenFully,
345         amdHtTopologyEightFully,
346         amdHtTopologyEightTwistedLadder,
347         amdHtTopologyEightStraightLadder,
348         NULL                    // NULL to mark end of list
349 };
350
351 /*----------------------------------------------------------------------------
352  *                      FUNCTIONS PROTOTYPE
353  *
354  *----------------------------------------------------------------------------
355  */
356 void getAmdTopolist(u8 ***p);
357
358
359 #endif   /* HTTOPO_H */
360