summaryrefslogtreecommitdiff
path: root/src/include/cpu/amd/lxdef.h
blob: 7daa2943407faef0e8fbc9f1599f5ea82a57179a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
/*
 * This file is part of the coreboot project.
 *
 * Copyright (C) 2006 Indrek Kruusa <indrek.kruusa@artecdesign.ee>
 * Copyright (C) 2006 Ronald G. Minnich <rminnich@gmail.com>
 * Copyright (C) 2006 Stefan Reinauer <stepan@coresystems.de>
 * Copyright (C) 2006 Andrei Birjukov <andrei.birjukov@artecdesign.ee>
 * Copyright (C) 2007 Advanced Micro Devices, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef CPU_AMD_LXDEF_H
#define CPU_AMD_LXDEF_H

/* Stepping ID 1.x CPUbug fix to change it to 5A0*/
#define CPU_ID_1_X	0x00000560
#define CPU_ID_2_0	0x000005A1
#define CPU_ID_3_0	0x000005A2

#define CPU_REV_1_0	0x010
#define CPU_REV_1_1	0x011
#define	CPU_REV_2_0		0x020
#define	CPU_REV_2_1		0x021
#define	CPU_REV_2_2	0x022
#define CPU_REV_C_0	0x030
#define CPU_REV_C_1	0x031
#define CPU_REV_C_2	0x032		/* 3.2 part was never produced ...*/
#define CPU_REV_C_3	0x033


/* MSR routing as follows*/
/* MSB = 1 means not for CPU*/
/* next 3 bits 1st port*/
/* next3 bits next port if through an GLIU*/
/* etc...*/

/* GLIU0 ports */
#define	GL0_GLIU0			0
#define	GL0_MC				1
#define	GL0_GLIU1			2
#define	GL0_CPU				3
#define	GL0_VG				4
#define	GL0_GP				5

/* GLIU1 ports */
#define	GL1_GLIU0			1
#define	GL1_DF				2
#define	GL1_GLCP			3
#define	GL1_PCI				4
#define GL1_VIP				5
#define GL1_AES				6


/* 1000xxxx, To get on GeodeLink one bit has to be set */
#define MSR_GLIU0		((GL0_GLIU0 << 29) + (1 << 28))
#define	MSR_MC				(GL0_MC		<< 29)	/* 2000xxxx */
#define	MSR_GLIU1			(GL0_GLIU1	<< 29)	/* 4000xxxx */
/* 0000xxxx this is not used for BIOS since code executing on CPU doesn't
 * need to be routed
 */
#define MSR_CPU			(GL0_CPU	<< 29)
#define	MSR_VG				(GL0_VG		<< 29)	/* 8000xxxx */
#define	MSR_GP				(GL0_GP		<< 29)	/* A000xxxx */

#define MSR_DF		((GL1_DF << 26) + MSR_GLIU1)		/* 4800xxxx */
#define MSR_GLCP	((GL1_GLCP << 26) + MSR_GLIU1)		/* 4C00xxxx */
#define MSR_PCI		((GL1_PCI << 26) + MSR_GLIU1)		/* 5000xxxx */
#define MSR_VIP			((GL1_VIP << 26) + MSR_GLIU1)	/* 5400xxxx */
#define MSR_AES			((GL1_AES << 26) + MSR_GLIU1)	/* 5800xxxx */
#define MSR_FG		MSR_GLCP

/*GeodeLink Interface Unit 0 (GLIU0) port0*/

#define	GLIU0_GLD_MSR_CAP			(MSR_GLIU0 + 0x2000)
#define GLIU0_GLD_MSR_ERROR		(MSR_GLIU0 + 0x2003)
#define	GLIU0_GLD_MSR_PM			(MSR_GLIU0 + 0x2004)

#define	GLIU0_DESC_BASE				(MSR_GLIU0 + 0x20)
#define	GLIU0_CAP					(MSR_GLIU0 + 0x86)
#define	GLIU0_GLD_MSR_COH			(MSR_GLIU0 + 0x80)
#define GLIU0_ARB				(MSR_GLIU0 + 0x82)
#define		ARB_UPPER_QUACK_EN_SET			(1 << 31)
#define		ARB_UPPER_DACK_EN_SET			(1 << 28)


/* Memory Controller GLIU0 port 1*/

#define	MC_GLD_MSR_CAP			(MSR_MC + 0x2000)
#define	MC_GLD_MSR_PM			(MSR_MC + 0x2004)

#define	MC_CF07_DATA			(MSR_MC + 0x18)
#define		CF07_UPPER_D1_SZ_SHIFT				28
#define		CF07_UPPER_D1_MB_SHIFT				24
#define		CF07_UPPER_D1_CB_SHIFT				20
#define		CF07_UPPER_D1_PSZ_SHIFT				16
#define		CF07_UPPER_D0_SZ_SHIFT				12
#define		CF07_UPPER_D0_MB_SHIFT				8
#define		CF07_UPPER_D0_CB_SHIFT				4
#define		CF07_UPPER_D0_PSZ_SHIFT				0

#define		CF07_LOWER_REF_INT_SHIFT				8
#define		CF07_LOWER_LOAD_MODE_DDR_SET		(1 << 28)
#define		CF07_LOWER_LOAD_MODE_DLL_RESET		(1 << 27)
#define		CF07_LOWER_EMR_QFC_SET				(1 << 26)
#define		CF07_LOWER_EMR_DRV_SET				(1 << 25)
#define		CF07_LOWER_REF_TEST_SET				(1 << 3)
#define		CF07_LOWER_PROG_DRAM_SET			(1 << 0)


#define	MC_CF8F_DATA			(MSR_MC + 0x19)
#define		CF8F_UPPER_XOR_BS_SHIFT				19
#define		CF8F_UPPER_XOR_MB0_SHIFT			18
#define		CF8F_UPPER_XOR_BA1_SHIFT			17
#define		CF8F_UPPER_XOR_BA0_SHIFT			16
#define		CF8F_UPPER_REORDER_DIS_SET		(1 << 8)
#define		CF8F_LOWER_CAS_LAT_SHIFT			28
#define		CF8F_LOWER_ACT2ACTREF_SHIFT		24
#define		CF8F_LOWER_ACT2PRE_SHIFT			20
#define		CF8F_LOWER_PRE2ACT_SHIFT			16
#define		CF8F_LOWER_ACT2CMD_SHIFT			12
#define		CF8F_LOWER_ACT2ACT_SHIFT			8
#define		CF8F_UPPER_HOI_LOI_SET			(1 << 1)

#define	MC_CF1017_DATA			(MSR_MC + 0x1A)
#define		CF1017_LOWER_WR_TO_RD_SHIFT			28
#define		CF1017_LOWER_RD_TMG_CTL_SHIFT		24
#define		CF1017_LOWER_REF2ACT_SHIFT			16
#define		CF1017_LOWER_PM1_UP_DLY_SET			(1 << 8)
#define		CF1017_LOWER_WR2DAT_SHIFT			0

#define	MC_CFCLK_DBUG			(MSR_MC + 0x1D)

#define		CFCLK_UPPER_MTST_B2B_DIS_SET			(1 << 2)
#define		CFCLK_UPPER_MTST_RBEX_EN_SET		(1 << 1)
#define		CFCLK_UPPER_MTEST_EN_SET				(1 << 0)

#define		CFCLK_LOWER_FORCE_PRE_SET			(1 << 16)
#define		CFCLK_LOWER_TRISTATE_DIS_SET		(1 << 12)
#define		CFCLK_LOWER_MASK_CKE_SET1			(1 << 9)
#define		CFCLK_LOWER_MASK_CKE_SET0			(1 << 8)
#define		CFCLK_LOWER_SDCLK_SET				(0x0F << 0)

#define	MC_CF_RDSYNC			(MSR_MC	+ 0x1F)
#define MC_CF_PMCTR			(MSR_MC + 0x20)


/* GLIU1 GLIU0 port2*/

#define	GLIU1_GLD_MSR_CAP			(MSR_GLIU1 + 0x2000)
#define GLIU1_GLD_MSR_ERROR		(MSR_GLIU1 + 0x2003)
#define	GLIU1_GLD_MSR_PM			(MSR_GLIU1 + 0x2004)

#define	GLIU1_GLD_MSR_COH			(MSR_GLIU1 + 0x80)
#define GLIU1_PORT_ACTIVE		(MSR_GLIU1 + 0x81)
#define GLIU1_ARB				(MSR_GLIU1 + 0x82)



/* CPU	; does not need routing instructions since we are executing there.*/

#define	CPU_GLD_MSR_CAP						0x2000
#define	CPU_GLD_MSR_CONFIG					0x2001
#define	CPU_GLD_MSR_PM						0x2004

#define	CPU_GLD_MSR_DIAG					0x2005
#define		DIAG_SEL1_MODE_SHIFT				16
#define		DIAG_SEL1_SET					(1 << 31)
#define		DIAG_SEL0__MODE_SHIFT				0
#define		DIAG_SET0_SET					(1 << 15)

#define CPU_PF_CONF						0x1100
#define		RETURN_STACK_ENABLE_SET				(1 << 4)
#define		PF_CONF_CC_L1					(1 << 0)
#define CPU_PF_INVD						0x1102
#define		PF_RS_INVD_SET					(1 << 1)
#define		PF_CC_INVD_SET					(1 << 0)
#define CPU_PF_BIST						0x1140

#define	CPU_XC_CONFIG						0x1210
#define		XC_CONFIG_SUSP_ON_HLT				(1 << 0)
#define		XC_CONFIG_SUSP_ON_PAUSE			(1 << 1)

#define	CPU_ID_CONFIG						0x1250
#define		ID_CONFIG_SERIAL_SET				(1 << 0)

#define	CPU_AC_MSR							0x1301

/* SMM*/
#define CPU_AC_SMM_CTL					0x1301
#define		SMM_NMI_EN_SET					(1 << 0)
#define		SMM_SUSP_EN_SET					(1 << 1)
#define		NEST_SMI_EN_SET					(1 << 2)
#define		SMM_INST_EN_SET					(1 << 3)
#define		INTL_SMI_EN_SET					(1 << 4)
#define		EXTL_SMI_EN_SET					(1 << 5)

#define	CPU_EX_BIST							0x1428

/*IM*/
#define	CPU_IM_CONFIG							0x1700
#define		IM_CONFIG_LOWER_SERIAL_SET			(1 << 2)
#define		IM_CONFIG_LOWER_L0WE_SET			(1 << 6)
#define		IM_CONFIG_LOWER_ICD_SET					(1 << 8)
#define		IM_CONFIG_LOWER_EBE_SET				(1 << 10)
#define		IM_CONFIG_LOWER_ABSE_SET			(1 << 11)
#define		IM_CONFIG_LOWER_QWT_SET				(1 << 20)
#define	CPU_IC_INDEX							0x1710
#define	CPU_IC_DATA							0x1711
#define	CPU_IC_TAG							0x1712
#define	CPU_IC_TAG_I							0x1713
#define	CPU_ITB_INDEX							0x1720
#define	CPU_ITB_LRU							0x1721
#define	CPU_ITB_ENTRY							0x1722
#define	CPU_ITB_ENTRY_I							0x1723
#define	CPU_IM_BIST_TAG							0x1730
#define	CPU_IM_BIST_DATA						0x1731


/*DM MSR MAP*/
#define CPU_DM_CONFIG0 0x1800
#define	DM_CONFIG0_UPPER_WSREQ_SHIFT  12
#define		DM_CONFIG0_LOWER_EVCTONRPL_SET		(1 << 14)
#define	DM_CONFIG0_LOWER_WBINVD_SET	(1<<5)
#define		DM_CONFIG0_LOWER_DCDIS_SET			(1 << 8)
#define	DM_CONFIG0_LOWER_MISSER_SET		(1<<1)

#define	CPU_RCONF_DEFAULT						0x1808
#define		RCONF_DEFAULT_UPPER_ROMRC_SHIFT				24
#define		RCONF_DEFAULT_UPPER_ROMBASE_SHIFT			4
#define		RCONF_DEFAULT_UPPER_DEVRC_HI_SHIFT			0
#define		RCONF_DEFAULT_LOWER_DEVRC_LOW_SHIFT			28
#define		RCONF_DEFAULT_LOWER_SYSTOP_SHIFT			8
#define		RCONF_DEFAULT_LOWER_SYSRC_SHIFT				0

#define	CPU_RCONF_BYPASS						0x180A
#define	CPU_RCONF_A0_BF							0x180B
#define	CPU_RCONF_C0_DF							0x180C
#define	CPU_RCONF_E0_FF							0x180D

#define	CPU_RCONF_SMM							0x180E
#define		RCONF_SMM_UPPER_SMMTOP_SHIFT			12
#define		RCONF_SMM_UPPER_RCSMM_SHIFT				0
#define		RCONF_SMM_LOWER_SMMBASE_SHIFT			12
#define		RCONF_SMM_LOWER_RCNORM_SHIFT			0
#define		RCONF_SMM_LOWER_EN_SET					(1<<8)

#define	CPU_RCONF_DMM							0x180F
#define		RCONF_DMM_UPPER_DMMTOP_SHIFT			12
#define		RCONF_DMM_UPPER_RCDMM_SHIFT				0
#define		RCONF_DMM_LOWER_DMMBASE_SHIFT			12
#define		RCONF_DMM_LOWER_RCNORM_SHIFT			0
#define		RCONF_DMM_LOWER_EN_SET					(1<<8)

#define	CPU_RCONF0							0x1810
#define	CPU_RCONF1							0x1811
#define	CPU_RCONF2							0x1812
#define	CPU_RCONF3							0x1813
#define	CPU_RCONF4							0x1814
#define	CPU_RCONF5							0x1815
#define	CPU_RCONF6							0x1816
#define	CPU_RCONF7							0x1817
#define	CPU_CR1_MSR							0x1881
#define	CPU_CR2_MSR							0x1882
#define	CPU_CR3_MSR							0x1883
#define	CPU_CR4_MSR							0x1884
#define	CPU_DC_INDEX						0x1890
#define	CPU_DC_DATA							0x1891
#define	CPU_DC_TAG							0x1892
#define	CPU_DC_TAG_I						0x1893
#define	CPU_SNOOP							0x1894
#define	CPU_DTB_INDEX						0x1898
#define	CPU_DTB_LRU							0x1899
#define	CPU_DTB_ENTRY						0x189A
#define	CPU_DTB_ENTRY_I						0x189B
#define	CPU_L2TB_INDEX						0x189C
#define	CPU_L2TB_LRU						0x189D
#define	CPU_L2TB_ENTRY						0x189E
#define	CPU_L2TB_ENTRY_I					0x189F
#define	CPU_DM_BIST							0x18C0

#define	CPU_BC_CONF_0						0x1900
#define		TSC_SUSP_SET				 (1<<5)
#define		SUSP_EN_SET				 (1<<12)

#define CPU_BC_CONF_1						0x1901
#define CPU_BC_MSR_LOCK						0x1908
#define CPU_BC_L2_CONF						0x1920
#define		BC_L2_ENABLE_SET					(1 << 0)
#define		BC_L2_ALLOC_ENABLE_SET				(1 << 1)
#define		BC_L2_DM_ALLOC_ENABLE_SET			(1 << 2)
#define		BC_L2_IM_ALLOC_ENABLE_SET			(1 << 3)
#define		BC_L2_INVALIDATE_SET				(1 << 4)
#define CPU_BC_L2_STATUS					0x1921
#define CPU_BC_L2_INDEX						0x1922
#define CPU_BC_L2_DATA						0x1923
#define CPU_BC_L2_TAG						0x1924
#define CPU_BC_L2_TAG_AUTOINC				0x1925
#define CPU_BC_L2_BIST						0x1926
#define		BC_L2_BIST_TAG_ENABLE_SET			(1 << 0)
#define		BC_L2_BIST_TAG_DRT_EN_SET			(1 << 1)
#define		BC_L2_BIST_DATA_ENABLE_SET			(1 << 2)
#define		BC_L2_BIST_DATA_DRT_EN_SET			(1 << 3)
#define		BC_L2_BIST_MRU_ENABLE_SET			(1 << 4)
#define		BC_L2_BIST_MRU_DRT_EN_SET			(1 << 5)
#define CPU_BC_PMODE_MSR					0x1930
#define CPU_BC_MSS_ARRAY_CTL_ENA			0x1980
#define CPU_BC_MSS_ARRAY_CTL0				0x1981
#define CPU_BC_MSS_ARRAY_CTL1				0x1982
#define CPU_BC_MSS_ARRAY_CTL2				0x1983

#define CPU_FPU_MSR_MODE					0x1A00
#define		FPU_IE_SET					(1 << 0)

#define CPU_FP_UROM_BIST					0x1A03

#define CPU_CPUID0							0x3000
#define CPU_CPUID1							0x3001
#define CPU_CPUID2							0x3002
#define CPU_CPUID3							0x3003
#define CPU_CPUID4							0x3004
#define CPU_CPUID5							0x3005
#define CPU_CPUID6							0x3006
#define CPU_CPUID7							0x3007
#define CPU_CPUID8							0x3008
#define CPU_CPUID9							0x3009
#define CPU_CPUIDA							0x300A
#define CPU_CPUIDB							0x300B
#define CPU_CPUIDC							0x300C
#define CPU_CPUIDD							0x300D
#define CPU_CPUIDE							0x300E
#define CPU_CPUIDF							0x300F
#define CPU_CPUID10							0x3010
#define CPU_CPUID11							0x3011
#define CPU_CPUID12							0x3012
#define CPU_CPUID13							0x3013




	/*	VG GLIU0 port4*/


#define	VG_GLD_MSR_CAP				(MSR_VG + 0x2000)
#define	VG_GLD_MSR_CONFIG			(MSR_VG + 0x2001)
#define	VG_GLD_MSR_PM				(MSR_VG + 0x2004)
#define VG_BIST					(MSR_VG + 0x2010)



/*	GP GLIU0 port5*/


#define	GP_GLD_MSR_CAP				(MSR_GP + 0x2000)
#define	GP_GLD_MSR_CONFIG			(MSR_GP + 0x2001)
#define	GP_GLD_MSR_PM				(MSR_GP + 0x2004)



/*	DF GLIU0 port6*/


#define	DF_GLD_MSR_CAP					(MSR_DF + 0x2000)
#define	DF_GLD_MSR_MASTER_CONF			(MSR_DF + 0x2001)
#define		DF_LOWER_LCD_SHIFT				6
#define	DF_GLD_MSR_PM					(MSR_DF + 0x2004)
#define DF_BIST					(MSR_DF + 0x2005)



/* GeodeLink Control Processor GLIU1 port3*/

#define	GLCP_GLD_MSR_CAP			(MSR_GLCP + 0x2000)
#define	GLCP_GLD_MSR_CONF			(MSR_GLCP + 0x2001)
#define GLCP_GLD_MSR_SMI		(MSR_GLCP + 0x2002)
#define GLCP_GLD_MSR_ERROR		(MSR_GLCP + 0x2003)
#define	GLCP_GLD_MSR_PM				(MSR_GLCP + 0x2004)

#define	GLCP_DELAY_CONTROLS			(MSR_GLCP + 0x0F)
#define GLCP_SYS_RSTPLL			(MSR_GLCP + 0x14)	/* R/W */
#define		RSTPLL_UPPER_GLMULT_SHIFT			7
#define		RSTPLL_UPPER_GLDIV_SHIFT			6
#define		RSTPLL_UPPER_CPUMULT_SHIFT			1
#define		RSTPLL_UPPER_CPUDIV_SHIFT			0
#define		RSTPLL_LOWER_SWFLAGS_SHIFT			26
#define		RSTPLL_LOWER_SWFLAGS_MASK			\
				(0x03F << RSTPLL_LOWER_SWFLAGS_SHIFT)
#define		RSTPPL_LOWER_HOLD_COUNT_SHIFT			16
#define		RSTPPL_LOWER_COREBYPASS_SHIFT		12
#define		RSTPPL_LOWER_GLBYPASS_SHIFT			11
#define		RSTPPL_LOWER_PCISPEED_SHIFT			7
#define		RSTPPL_LOWER_BOOTSTRAP_SHIFT		1
#define		RSTPLL_LOWER_BOOTSTRAP_MASK			\
				(0x07F << RSTPLL_LOWER_BOOTSTRAP_SHIFT)

#define		RSTPPL_LOWER_GLLOCK_SET				(1 << 25)
#define		RSTPPL_LOWER_CORELOCK_SET			(1 << 24)
#define		RSTPPL_LOWER_LOCKWAIT_SET			(1 << 15)
#define		RSTPPL_LOWER_CLPD_SET				(1 << 14)
#define		RSTPPL_LOWER_COREPD_SET				(1 << 13)
#define		RSTPPL_LOWER_MBBYPASS_SET			(1 << 12)
#define		RSTPPL_LOWER_COREBYPASS_SET			(1 << 11)
#define		RSTPPL_LOWER_LPFEN_SET				(1 << 10)
#define		RSTPPL_LOWER_CPU_SEMI_SYNC_SET		 (1<<9)
#define		RSTPPL_LOWER_PCI_SEMI_SYNC_SET		 (1<<8)
#define		RSTPPL_LOWER_CHIP_RESET_SET		 (1<<0)

#define GLCP_DOWSER				(MSR_GLCP + 0x0E)
#define GLCP_DBGCLKCTL			(MSR_GLCP + 0x16)
#define GLCP_REVID				(MSR_GLCP + 0x17)
#define GLCP_TH_OD				(MSR_GLCP + 0x1E)
#define GLCP_FIFOCTL			(MSR_GLCP + 0x5E)
#define GLCP_BIST				GLCP_FIFOCTL

#define MSR_INIT				(MSR_GLCP + 0x33)


/*  GLIU1 port 4*/

#define	GLPCI_GLD_MSR_CAP			(MSR_PCI + 0x2000)
#define	GLPCI_GLD_MSR_CONFIG			(MSR_PCI + 0x2001)
#define	GLPCI_GLD_MSR_PM				(MSR_PCI + 0x2004)

#define	GLPCI_CTRL			(MSR_PCI + 0x2010)
#define	GLPCI_CTRL_UPPER_FTH_SHIFT				28
#define	GLPCI_CTRL_UPPER_RTH_SHIFT				24
#define	GLPCI_CTRL_UPPER_SBRTH_SHIFT				20
#define GLPCI_CTRL_UPPER_RTL_SHIFT				17
#define	GLPCI_CTRL_UPPER_DTL_SHIFT				14
#define	GLPCI_CTRL_UPPER_WTO_SHIFT				11
#define GLPCI_CTRL_UPPER_SLTO_SHIFT				10
#define	GLPCI_CTRL_UPPER_ILTO_SHIFT				8
#define GLPCI_CTRL_UPPER_LAT_SHIFT				3

#define	GLPCI_CTRL_LOWER_IRFT_SHIFT				18
#define	GLPCI_CTRL_LOWER_IRFC_SHIFT				16
#define	GLPCI_CTRL_LOWER_ER_SET					(1<<11)
#define	GLPCI_CTRL_LOWER_LDE_SET					(1<<9)
#define	GLPCI_CTRL_LOWER_OWC_SET					(1<<4)
#define	GLPCI_CTRL_LOWER_IWC_SET					(1<<3)
#define	GLPCI_CTRL_LOWER_PCD_SET					(1<<2)
#define	GLPCI_CTRL_LOWER_ME_SET					(1<<0)

#define	GLPCI_ARB			(MSR_PCI + 0x2011)
#define GLPCI_ARB_UPPER_CR_SHIFT			28
#define GLPCI_ARB_UPPER_R2_SHIFT			24
#define GLPCI_ARB_UPPER_R1_SHIFT			20
#define GLPCI_ARB_UPPER_R0_SHIFT			16
#define GLPCI_ARB_UPPER_CH_SHIFT			12
#define GLPCI_ARB_UPPER_H2_SHIFT			8
#define GLPCI_ARB_UPPER_H1_SHIFT			4
#define GLPCI_ARB_UPPER_H0_SHIFT			0

#define	GLPCI_ARB_LOWER_COV_SET						(1<<23)
#define GLPCI_ARB_LOWER_VO2_SET				(1 << 22)
#define GLPCI_ARB_LOWER_OV1_SET				(1 << 21)
#define GLPCI_ARB_LOWER_OV0_SET				(1 << 20)
#define	GLPCI_ARB_LOWER_MSK2_SET					(1<<18)
#define	GLPCI_ARB_LOWER_MSK1_SET					(1<<17)
#define	GLPCI_ARB_LOWER_MSK0_SET					(1<<16)
#define	GLPCI_ARB_LOWER_CPRE_SET					(1<<11)
#define	GLPCI_ARB_LOWER_PRE2_SET					(1<<10)
#define	GLPCI_ARB_LOWER_PRE1_SET					(1<<9)
#define	GLPCI_ARB_LOWER_PRE0_SET					(1<<8)
#define	GLPCI_ARB_LOWER_BM1_SET						(1<<7)
#define	GLPCI_ARB_LOWER_BM0_SET						(1<<6)
#define GLPCI_ARB_LOWER_EA_SET				(1 << 2)
#define GLPCI_ARB_LOWER_BMD_SET				(1 << 1)
#define	GLPCI_ARB_LOWER_PARK_SET					(1<<0)

#define	GLPCI_REN			(MSR_PCI + 0x2014)
#define	GLPCI_A0_BF			(MSR_PCI + 0x2015)
#define	GLPCI_C0_DF			(MSR_PCI + 0x2016)
#define	GLPCI_E0_FF			(MSR_PCI + 0x2017)
#define	GLPCI_RC0			(MSR_PCI + 0x2018)
#define	GLPCI_RC1			(MSR_PCI + 0x2019)
#define	GLPCI_RC2			(MSR_PCI + 0x201A)
#define	GLPCI_RC3			(MSR_PCI + 0x201B)
#define	GLPCI_RC4			(MSR_PCI + 0x201C)
#define		GLPCI_RC_UPPER_TOP_SHIFT				12
#define		GLPCI_RC_LOWER_BASE_SHIFT			12
#define		GLPCI_RC_LOWER_EN_SET				(1<<8)
#define		GLPCI_RC_LOWER_PF_SET				(1<<5)
#define		GLPCI_RC_LOWER_WC_SET				(1<<4)
#define		GLPCI_RC_LOWER_WP_SET				(1<<2)
#define		GLPCI_RC_LOWER_CD_SET				(1<<0)

#define GLPCI_ExtMSR	(MSR_PCI + 0x201E)

#define	GLPCI_SPARE			(MSR_PCI + 0x201F)
#define		GLPCI_SPARE_LOWER_AILTO_SET			(1<<6)
#define		GLPCI_SPARE_LOWER_PPD_SET			(1<<5)
#define		GLPCI_SPARE_LOWER_PPC_SET			(1<<4)
#define		GLPCI_SPARE_LOWER_MPC_SET			(1<<3)
#define		GLPCI_SPARE_LOWER_MME_SET			(1<<2)
#define		GLPCI_SPARE_LOWER_NSE_SET			(1<<1)
#define		GLPCI_SPARE_LOWER_SUPO_SET			(1<<0)



/*  VIP GLIU1 port 5*/

#define VIP_GLD_MSR_CAP		(MSR_VIP + 0x2000)
#define VIP_GLD_MSR_CONFIG	(MSR_VIP + 0x2001)
#define VIP_GLD_MSR_PM		(MSR_VIP + 0x2004)
#define VIP_BIST			(MSR_VIP + 0x2005)

/*  AES GLIU1 port 6*/

#define AES_GLD_MSR_CAP		(MSR_AES + 0x2000)
#define AES_GLD_MSR_CONFIG	(MSR_AES + 0x2001)
#define AES_GLD_MSR_PM		(MSR_AES + 0x2004)
#define AES_CONTROL			(MSR_AES + 0x2006)


/* from MC spec */
#define MIN_MOD_BANKS		1
#define MAX_MOD_BANKS		2
#define MIN_DEV_BANKS		2
#define MAX_DEV_BANKS		4
#define MAX_COL_ADDR		17

/* GLIU typedefs */
/* Base Mask - map power of 2 size aligned region*/
#define BM			1
#define BMO			2	/*  BM with an offset*/
#define R				3	/*  Range - 4k range minimum*/
#define RO			4	/*  R with offset*/
/* Swiss 0xCeese - maps a 256K region in to 16K 0xcunks. Set W/R*/
#define SC			5
#define BMIO			6	/*  Base Mask IO*/
#define SCIO			7	/*  Swiss 0xCeese IO*/
/* Special marker for Shadow SC descriptors so setShadow proc is independent
 * of CPU
 */
#define SC_SHADOW	8
/* Special marker for SYSMEM R descriptors so GLIUInit proc is independent
 * of CPU
 */
#define R_SYSMEM		9
#define BMO_SMM		10	/*  Special marker for SMM*/
#define BM_SMM		11	/*  Special marker for SMM*/
#define BMO_DMM		12	/*  Special marker for DMM*/
#define BM_DMM		13	/*  Special marker for DMM*/
#define RO_FB			14	/*  special for Frame buffer.*/
#define R_FB			15	/*  special for FB.*/
#define OTHER			0x0FE /*  Special marker for other*/
#define GL_END		 0x0FF	/*  end*/

#define MSR_GL0	(GL1_GLIU0 << 29)


/* Platform stuff but unlikely to change */
/*  Set up desc addresses from 20 - 3f*/
/*  This is chip specific!*/
#define MSR_GLIU0_BASE1			(MSR_GLIU0 + 0x20)		/*  BM*/
#define MSR_GLIU0_BASE2			(MSR_GLIU0 + 0x21)		/*  BM*/
#define MSR_GLIU0_BASE3			(MSR_GLIU0 + 0x22)		/*  BM*/
#define MSR_GLIU0_BASE4			(MSR_GLIU0 + 0x23)		/*  BM*/
#define MSR_GLIU0_BASE5			(MSR_GLIU0 + 0x24)		/*  BM*/
#define MSR_GLIU0_BASE6			(MSR_GLIU0 + 0x25)		/*  BM*/

#define GLIU0_P2D_BMO_0			(MSR_GLIU0 + 0x26)
#define GLIU0_P2D_BMO_1			(MSR_GLIU0 + 0x27)

#define MSR_GLIU0_SMM			(GLIU0_P2D_BMO_0)
#define MSR_GLIU0_DMM			(GLIU0_P2D_BMO_1)

#define GLIU0_P2D_R				(MSR_GLIU0 + 0x28)
#define MSR_GLIU0_SYSMEM		(GLIU0_P2D_R)

#define GLIU0_P2D_RO_0			(MSR_GLIU0 + 0x29)
#define GLIU0_P2D_RO_1			(MSR_GLIU0 + 0x2A)
#define GLIU0_P2D_RO_2			(MSR_GLIU0 + 0x2B)

/*  SCO should only be SC*/
#define MSR_GLIU0_SHADOW		(MSR_GLIU0 + 0x2C)

#define GLIU0_IOD_BM_0			(MSR_GLIU0 + 0xE0)
#define GLIU0_IOD_BM_1			(MSR_GLIU0 + 0xE1)
#define GLIU0_IOD_BM_2			(MSR_GLIU0 + 0xE2)

#define GLIU0_IOD_SC_0			(MSR_GLIU0 + 0xE3)
#define GLIU0_IOD_SC_1			(MSR_GLIU0 + 0xE4)
#define GLIU0_IOD_SC_2			(MSR_GLIU0 + 0xE5)
#define GLIU0_IOD_SC_3			(MSR_GLIU0 + 0xE6)
#define GLIU0_IOD_SC_4			(MSR_GLIU0 + 0xE7)
#define GLIU0_IOD_SC_5			(MSR_GLIU0 + 0xE8)


#define MSR_GLIU1_BASE1			(MSR_GLIU1 + 0x20)		/*  BM*/
#define MSR_GLIU1_BASE2			(MSR_GLIU1 + 0x21)		/*  BM*/
#define MSR_GLIU1_BASE3			(MSR_GLIU1 + 0x22)		/*  BM*/
#define MSR_GLIU1_BASE4			(MSR_GLIU1 + 0x23)		/*  BM*/
#define MSR_GLIU1_BASE5			(MSR_GLIU1 + 0x24)		/*  BM*/
#define MSR_GLIU1_BASE6			(MSR_GLIU1 + 0x25)		/*  BM*/
#define MSR_GLIU1_BASE7			(MSR_GLIU1 + 0x26)		/*  BM*/
#define MSR_GLIU1_BASE8			(MSR_GLIU1 + 0x27)		/*  BM*/
#define MSR_GLIU1_BASE9			(MSR_GLIU1 + 0x28)		/*  BM*/
#define MSR_GLIU1_BASE10		(MSR_GLIU1 + 0x29)		/*  BM*/

#define GLIU1_P2D_R_0			(MSR_GLIU1 + 0x2A)
#define GLIU1_P2D_R_1			(MSR_GLIU1 + 0x2B)
#define GLIU1_P2D_R_2			(MSR_GLIU1 + 0x2C)
#define GLIU1_P2D_R_3			(MSR_GLIU1 + 0x2D)


#define MSR_GLIU1_SHADOW		(MSR_GLIU1 + 0x2E)

#define MSR_GLIU1_SYSMEM		(GLIU1_P2D_R_0)

#define MSR_GLIU1_SMM			(MSR_GLIU1_BASE4)		/*  BM*/
#define MSR_GLIU1_DMM			(MSR_GLIU1_BASE5)		/*  BM*/

#define GLIU1_IOD_BM_0			(MSR_GLIU1 + 0xE0)
#define GLIU1_IOD_BM_1			(MSR_GLIU1 + 0xE1)
#define GLIU1_IOD_BM_2			(MSR_GLIU1 + 0xE2)

#define GLIU1_IOD_SC_0			(MSR_GLIU1 + 0xE3)
#define GLIU1_IOD_SC_1			(MSR_GLIU1 + 0xE4)
#define GLIU1_IOD_SC_2			(MSR_GLIU1 + 0xE5)
#define GLIU1_IOD_SC_3			(MSR_GLIU1 + 0xE6)
/*  FooGlue F0 for FPU*/
#define MSR_GLIU1_FPU_TRAP		(GLIU1_IOD_SC_0)

/* ------------------------  */

#define SMM_OFFSET	0x80400000	/* above 2GB */
#define SMM_SIZE	128	/* changed SMM_SIZE from 256 KB to 128 KB */

/* DRAM_TERMINATED affects how the DELAY register is set. */
#define DRAM_TERMINATED 'T'
#define DRAM_UNTERMINATED 't'
/* Bitfield definitions for the DELAY register */
#define DELAY_UPPER_DISABLE_CLK135	(1 << 23)
#define DELAY_LOWER_STATUS_MASK		0x7C0

#if !defined(__ASSEMBLER__)

#include <stdint.h>
#include <arch/cpu.h>

#if defined(__PRE_RAM__)
void cpuRegInit(int debug_clock_disable, u8 dimm0, u8 dimm1, int terminated);
void SystemPreInit(void);
void asmlinkage mainboard_romstage_entry(unsigned long bist);
void done_cache_as_ram_main(void);
#endif
void cpubug(void);
#endif

#endif