summaryrefslogtreecommitdiff
path: root/cpu/amd/geode_lx/gplvsa_ii/inc/chipset.h
blob: 7a4f9ac14e3ea514105ddedbfbe6183a2f86aba7 (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
/*
* Copyright (c) 2006-2008 Advanced Micro Devices,Inc. ("AMD").
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of the
* License, or (at your option) any later version.
*
* This code 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
* Lesser General Public License for more details.

* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA 
*/

#define VENDOR_ID_COMPAQ		0x0E11
#define VENDOR_ID_CYRIX		0x1078
#define VENDOR_ID_NATIONAL		0x100B
#define VENDOR_ID_AMD			0x1022

#define DEVICE_ID_MEDIAGX		0x0001
#define DEVICE_ID_5530			0x0100

#define DEVICE_ID_GX2			0x0028
#define DEVICE_ID_GFX2			0x0030

#define DEVICE_ID_5535			0x002B
#define DEVICE_ID_FLASH		0x002C
#define DEVICE_ID_ATA			0x002D
#define DEVICE_ID_AUDIO		0x002E
#define DEVICE_ID_OHCI			0x002F

#define DEVICE_ID_LX			0x2080
#define DEVICE_ID_GFX3			0x2081
#define DEVICE_ID_AES			0x2082

#define DEVICE_ID_5536			0x2090
#define DEVICE_ID_AMD_FLASH		0x2091
#define DEVICE_ID_AMD_ATA		0x2092
#define DEVICE_ID_AMD_AUDIO		0x2093
#define DEVICE_ID_AMD_OHCI		0x2094
#define DEVICE_ID_AMD_EHCI		0x2095
#define DEVICE_ID_AMD_UDC		0x2096
#define DEVICE_ID_AMD_OTG		0x2097
#define DEVICE_ID_AMD_THOR		0x209A


#define LEGACY_FUNCTION			0x0000
#define PM_FUNCTION				0x0100
#define IDE_FUNCTION			0x0200
#define AUDIO_FUNCTION			0x0300
#define VIDEO_FUNCTION			0x0400
#define XBUS_FUNCTION			0x0500



// SMI sources relative to Function 1 BAR0
#define SMI_STATUS_RO          0x0000
#define SMI_STATUS				0x0002
#define SMI_SRC_PM		 				(1L << 0)
#define SMI_SRC_AUDIO_INDEX			1
#define SMI_SRC_AUDIO					(1L << SMI_SRC_AUDIO_INDEX)
#define SMI_SRC_ACPI					(1L << 2)
#define SMI_SRC_VG						(1L << 3)
#define SMI_SRC_INT_MEMORY				(1L << 4)
#define SMI_SRC_RETRACE				(1L << 5)
#define SMI_SRC_VGA_TIMER  			(1L << 6)
#define SMI_SRC_A20_INDEX 				7
#define SMI_SRC_A20					(1L << SMI_SRC_A20_INDEX)
#define SMI_SRC_SW_INDEX				8
#define SMI_SRC_SW	 	 				(1L << SMI_SRC_SW_INDEX)
#define GTT_INDEX              		9
#define SMI_SRC_GTT					(1L << GTT_INDEX)
#define SMI_SRC_DEBUG					(1L << 10)
#define SMI_SRC_MFGPT					(1L << 11)
#define SMI_SRC_NMI					(1L << 12)
#define SMI_SRC_RESET		   			(1L << 13)
#define SMI_SRC_USB1	   				(1L << 14)
#define SMI_SRC_USB2	   				(1L << 15)
#define SMI_IGNORE						0x7FFF


#define GTT_STATUS				0x0006
// NOTE: The following source definitions are shifted left 16 bits because
//       Get_SMI_Sources passes them that way in the SMI_Sources variable.
  #define GTT_SRC_GT1		  			(1L << ( 0+16))
  #define GTT_SRC_GT2					(1L << ( 1+16))
  #define GTT_SRC_USR_DEF_TRAP1		(1L << ( 2+16))
  #define GTT_SRC_USR_DEF_TRAP2		(1L << ( 3+16))
  #define GTT_SRC_USR_DEF_TRAP3		(1L << ( 4+16))
  #define SMI_SRC_PCI_TRAP				(1L << ( 5+16))
  #define GTT_SRC_1MS_TMR				(1L << ( 6+16))
  #define GTT_SRC_1SEC_TMR				(1L << ( 7+16))
  #define SMI_SRC_MPCI					(1L << ( 8+16))	 // Virtualized PCI access
  #define SMI_SRC_DESCR_HIT			(1L << ( 9+16))  // Hit on MBus descriptor
  #define SMI_SRC_STAT	 				(1L << (10+16))  // Hit on MBus statistics counter
  #define SMI_SRC_PIC					(1L << (11+16))  // PIC event
  #define SMI_SRC_KEL					(1L << (12+16))  // KEL event
  #define SMI_SRC_PME					(1L << (13+16))  // PME event
  #define SMI_SRC_BLOCKIO				(1L << (14+16))  // BLOCKIO event

#define SMI_SPEEDUP_DISABLE	 	0x0008

#define AUDIO_STATUS            	0x0010		// relative to F3 BAR0



//############################################################################################


#define PCI_CFG_CONTROL			0x40
  #define   LEGACY_CFG_SMI				(1L <<  8)
  #define   PM_CFG_SMI      			(1L << 11)
  #define   IDE_CFG_SMI				(1L << 14)
  #define   AUDIO_CFG_SMI 				(1L << 16)
  #define   VIDEO_CFG_SMI 				(1L << 17)
  #define   USB_PM_SMI	 				(1L << 22)
  #define   USB_CFG_SMI 				(1L << 23)
  #define   USB_ENABLE	 				(1L << 24)

  #define   PM_CFG_SMI_SCxxxx          (1L <<  9)
  #define   IDE_CFG_SMI_SCxxxx         (1L << 10)
  #define   AUDIO_CFG_SMI_SCxxxx       (1L << 11) 
  #define   VIDEO_CFG_SMI_SCxxxx       (1L << 12)
  #define   XBUS_CFG_SMI_SCxxxx        (1L << 13)

#define RESET_CONTROL				0x44
  #define   X_BUS_WARM_START			(1L << 0)
  #define   PCI_RESET					(1L << 1)
  #define   IDE_RESET					(1L << 2)
  #define   IDE_CONTROLLER_RESET		(1L << 3)
  #define   AC97_RESET					(1L << 7)


#define ROM_AT_LOGIC				0x52
  #define   LOWER_ROM_ENABLE			(1 << 0)
  #define   ROM_WRITE_ENABLE			(1 << 1)
  #define   ROM_1MB_WRITE_ENABLE		(1 << 2)
  #define   PORT_92_ENABLE				(1 << 3)
  #define   A20M_DEASSERT				(1 << 4)
  #define   GAMEPORT_CS_ON_READS		(1 << 5)
  #define   GAMEPORT_CS_ON_WRITES		(1 << 6)
  #define   FAST_KEYBOARD_DISABLE		(1 << 7)


#define CPU_SUPPORT				0x53
  #define   A20M_ENABLE				(1 << 0)
  #define   RTC_ENABLE					(1 << 2)
  #define   GAMEPORT_ENABLE			(1 << 3)

#define DECODE_CONTROL				0x5A
  #define   RTC_POSITIVE_DECODE		(1 << 0)
  #define   KBD_POSITIVE_DECODE		(1 << 1)
  #define   COM1_POSITIVE_DECODE		(1 << 2)
  #define   COM2_POSITIVE_DECODE		(1 << 3)
  #define   COM3_POSITIVE_DECODE		(1 << 4)
  #define   COM4_POSITIVE_DECODE		(1 << 5)
  #define   FLPY1_POSITIVE_DECODE		(1 << 6)
  #define   FLPY2_POSITIVE_DECODE		(1 << 7)
  #define   LPT1_POSITIVE_DECODE		(1 << 8)
  #define   LPT2_POSITIVE_DECODE		(1 << 9)
  #define   LPT3_POSITIVE_DECODE		(1 << 10)
  #define   IDE1_POSITIVE_DECODE		(1 << 11)
  #define   IDE2_POSITIVE_DECODE		(1 << 12)
  #define   ROM_POSITIVE_DECODE		(1 << 13)
  #define   KBD_6X_DECODE				(1 << 15)

#define PCI_STEERING				0x5C


// Top-level SMI enables  (registers 0x80-0x83)
#define ENABLE_TRAPS_TIMERS		0x80
  #define   ENABLE_PM					(1L << 0)
  #define   ENABLE_TIMERS				(1L << 1)
  #define   ENABLE_TRAPS		   		(1L << 2)
  #define   ENABLE_IRQ_SPEEDUP			(1L << 3)
  #define   ENABLE_VIDEO_SPEEDUP		(1L << 4)
  #define   ENABLE_CODEC_SMI			(1L << 5)
  #define   ENABLE_RESERVED1			(1L << 6)
  #define   ENABLE_RESERVED2			(1L << 7)
  #define   ENABLE_HDD0_TIMER			(1L << 8)
  #define   ENABLE_FDD_TIMER			(1L << 9)
  #define   ENABLE_PAR_SER_TIMER		(1L << 10)
  #define   ENABLE_KYBD_MOUSE_TIMER	(1L << 11)
  #define   ENABLE_USR_DEF_TIMER1		(1L << 12)
  #define   ENABLE_USR_DEF_TIMER2		(1L << 13)
  #define   ENABLE_USR_DEF_TIMER3		(1L << 14)
  #define   ENABLE_VIDEO_TIMER			(1L << 15)
  #define   ENABLE_HDD0_TRAP	   		(1L << 16) 
  #define   ENABLE_FDD_TRAP			(1L << 17)
  #define   ENABLE_PAR_SER_TRAP		(1L << 18)
  #define   ENABLE_KYBD_MOUSE_TRAP 	(1L << 19)
  #define   ENABLE_USR_DEF_TRAP1		(1L << 20)
  #define   ENABLE_USR_DEF_TRAP2		(1L << 21)
  #define   ENABLE_USR_DEF_TRAP3		(1L << 22)
  #define   ENABLE_VIDEO_TRAP			(1L << 23)
  #define   ENABLE_GT1					(1L << 24)
  #define   ENABLE_GT2					(1L << 25)
  #define   ENABLE_RETRACE				(1L << 26)
  #define   ENABLE_VGA_TIMER	  		(1L << 27)
  #define   ENABLE_THERMAL				(1L << 28)	// SCxxxx only
  #define   ENABLE_ACPI_TIMER			(1L << 29)
  #define   ENABLE_HDD1_TRAP			(1L << 30)
  #define   ENABLE_HDD1_TIMER			(1L << 31)


#define GT1_COUNT					0x88
#define GT1_CONTROL				0x89
  #define   GT1_RESET_HDD				(1 << 0)
  #define   GT1_RESET_FDD				(1 << 1)
  #define   GT1_RESET_PARALLEL_SERIAL	(1 << 2)
  #define   GT1_RESET_KEYBD_MOUSE		(1 << 3)
  #define   GT1_RESET_USR_DEF1			(1 << 4)
  #define   GT1_RESET_USR_DEF2			(1 << 5)
  #define   GT1_RESET_USR_DEF3			(1 << 6)
  #define   GT1_TIMEBASE				(1 << 7)


#define GT2_COUNT					0x8A
#define GT2_CONTROL				0x8B
  #define GT2_RESET_GPIO7				(1 << 2)
  #define GT2_TIMEBASE					(1 << 3)			// 0=second  1=ms
  #define GT1_SHIFT					(1 << 4)			// 0=8 bit   1=16 bit
  #define GT2_SHIFT					(1 << 5)			// 0=8 bit   1=16 bit
  #define VGA_TIMEBASE					(1 << 6)			// 0=ms      1=32 us
  #define GT1_RESET_SEC_HDD			(1 << 7)			// 0=disable 1=enable

#define IRQ_SPEEDUP_COUNT          0x8C
#define VIDEO_SPEEDUP_COUNT        0x8D
#define VGA_TIMER_LOAD_COUNT       0x8E




#define GPIO_DIRECTION          	0x90
#define GPIO_DATA               	0x91
#define   GPIO_CONTROL				0x92
  #define   GPIO0_ENABLE				(1 << 0)
  #define   GPIO1_ENABLE				(1 << 1)
  #define   GPIO2_ENABLE				(1 << 2)
  #define   GPIO0_EDGE					(1 << 3)
  #define   GPIO1_EDGE					(1 << 4)
  #define   GPIO2_EDGE					(1 << 5)
  #define   GPIO6_ENABLE				(1 << 6)
  #define   GPIO6_EDGE					(0 << 6)
  #define   GPIO7_EDGE					(1 << 7)



#define MISCELLANEOUS				0x93
  #define   SERIAL_MOUSE_SELECT		(1 << 0)
  #define   SERIAL_MOUSE				(1 << 1)
  #define   HDD1_PARTIAL_DECODE		(1 << 4)
  #define   HDD0_PARTIAL_DECODE		(1 << 5)
  #define   HDD_SELECT					(1 << 6)
  #define   FDD_SELECT					(1 << 7)

#define SUSPEND_MODULATION_OFF     0x94
#define SUSPEND_MODULATION_ON      0x95
#define SUSPEND_CONFIGURATION      0x96
  #define   SUSPEND_MOD_ENABLE         (1 << 0)
  #define   SMI_SPEEDUP                (1 << 1)
  #define   SUSPEND_MODE               (1 << 2)


#define GPIO_CONTROL2				0x97
  #define   GPIO3_ENABLE				(1 << 0)
  #define   GPIO4_ENABLE				(1 << 1)
  #define   GPIO5_ENABLE				(1 << 2)
  #define   GPIO7_ENABLE				(1 << 3)
  #define   GPIO3_EDGE					(1 << 4)
  #define   GPIO4_EDGE					(1 << 5)
  #define   GPIO5_EDGE					(1 << 6)
  #define   GPIO7_EDGE            		(1 << 7)


#define HDD_IDLE_TIMEOUT           0x98
#define FDD_IDLE_TIMEOUT           0x9A
#define PAR_SER_IDLE_TIMEOUT  		0x9C
#define KYBD_MOUSE_IDLE_TIMEOUT	0x9E
#define USR_DEF1_IDLE_TIMEOUT		0xA0
#define USR_DEF2_IDLE_TIMEOUT		0xA2
#define USR_DEF3_IDLE_TIMEOUT		0xA4
#define VIDEO_IDLE_TIMEOUT			0xA6

#define SEC_HDD_TIMEOUT            0xAC
#define CPU_SUSPEND_COMMAND        0xAE
#define CPU_STOP_CLOCK_COMMAND     0xAF
#define CPU_CACHE_MISS_ACTIVITY    0xB0
#define CPU_CACHE_MISS_INACTIVITY  0xB1
#define CPU_CACHE_MISS_THRESHOLD   0xB2

#define FLOPPY_SHADOW				0xB4
#define FLOPPY_3F2					0xB4
#define FLOPPY_3F7					0xB5
#define FLOPPY_372					0xB6
#define FLOPPY_377					0xB7

#define DMA_SHADOW					0xB8
#define DMA_SHADOW_CNT				10

#define PIC_SHADOW					0xB9
#define PIC_SHADOW_CNT				12

#define PIT_SHADOW					0xBA
#define PIT_SHADOW_CNT				9

#define RTC_SHADOW					0xBB
#define RTC_SHADOW_CNT				1

#define PIC_SHADOW					0xB9
#define PIT_SHADOW					0xBA
#define RTC_SHADOW					0xBB

#define CLOCK_STOP_CONTROL         0xBC

#define USR_DEF_1_BASE				0xC0
#define USR_DEF_2_BASE				0xC4
#define USR_DEF_3_BASE				0xC8
#define USR_DEF_1_CONTROL			0xCC
#define USR_DEF_2_CONTROL			0xCD
#define USR_DEF_3_CONTROL			0xCE
  #define USR_DEF_MEMORY             	(1 << 7)	// Bit 7 = 1
  #define USR_DEF_IO                 	(0 << 7)	// Bit 7 = 0
  #define USR_DEF_WRITE              	(1 << 6)	// Bit 6 = 1 (only for I/O)
  #define USR_DEF_READ               	(1 << 5)	// Bit 5 = 1 (only for I/O)


#define SW_SMI					0xD0



// Relative to PCI Function 0
#define PM_STATUS					0xF4
  #define   PM_SRC_GPIO3	 			(1L <<  0)
  #define   PM_SRC_GPIO4	 			(1L <<  1)
  #define   PM_SRC_GPIO5	 			(1L <<  2)
  #define   PM_SRC_GPIO7	 			(1L <<  3)
  #define   PM_SRC_GAMEPORT	 		(1L <<  4)
  #define   PM_SRC_HDD_IDLE	 		(1L <<  8)	// Primary
  #define   PM_SRC_FDD_IDLE	 		(1L <<  9)
  #define   PM_SRC_PARSER_IDLE 		(1L << 10)
  #define   PM_SRC_KEYBMS_IDLE			(1L << 11)
  #define   PM_SRC_USER_DEF1_IDLE		(1L << 12)
  #define   PM_SRC_USER_DEF2_IDLE		(1L << 13)
  #define   PM_SRC_USER_DEF3_IDLE		(1L << 14)
  #define   PM_SRC_VIDEO_IDLE			(1L << 15)
  #define   PM_SRC_HDD_TRAP	 		(1L << 16)	// Primary
  #define   PM_SRC_FDD_TRAP	 		(1L << 17)
  #define   PM_SRC_PAR_SER_TRAP		(1L << 18)
  #define   PM_SRC_KYBD_MOUSE_TRAP		(1L << 19)
  #define   PM_SRC_SECONDARY_IDLE		(1L << 20)
  #define   PM_SRC_SECONDARY_TRAP 		(1L << 21)
  #define   PM_SRC_reserved			(1L << 22)
  #define   PM_SRC_VIDEO_TRAP			(1L << 23)
  #define   PM_SRC_ACPI_TIMER 			(1L << 24)
  #define   PM_SRC_RTC_ALARM 			(1L << 25)
  #define   PM_SRC_AC97_CODEC 			(1L << 26)
  #define   PM_SRC_LID_SWITCH 			(1L << 27)
  #define   PM_SRC_LID_POSITION		(1L << 28)	// Not an SMI source
  #define   PM_SRC_GPIO0	 			(1L << 29)
  #define   PM_SRC_GPIO1	 			(1L << 30)  // CS55x0 only
  #define   PM_SRC_THERMAL	 			(1L << 30)	// SCxxxx only
  #define   PM_SRC_GPIO2	 			((ULONG)(1L << 31))


#define GPIO_PINS	(PM_SRC_GPIO0 | PM_SRC_GPIO1 | PM_SRC_GPIO2 | PM_SRC_GPIO3 | PM_SRC_GPIO4 | PM_SRC_GPIO5 | PM_SRC_LID_SWITCH | PM_SRC_GPIO7)