Support for the Intel 945 northbridge.
[coreboot.git] / src / northbridge / intel / i945 / i945.h
1 /*
2  * This file is part of the coreboot project.
3  *
4  * Copyright (C) 2007-2008 coresystems GmbH
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 __NORTHBRIDGE_INTEL_I945_I945_H__
21 #define __NORTHBRIDGE_INTEL_I945_I945_H__ 1
22
23 #include "ich7.h"
24
25 /* Device 0:0.0 PCI configuration space (Host Bridge) */
26
27 #define EPBAR           0x40
28 #define MCHBAR          0x44
29 #define PCIEXBAR        0x48
30 #define DMIBAR          0x4c
31 #define X60BAR          0x60
32
33 /* Northbridge BARs */
34 #define DEFAULT_PCIEXBAR        0xf0000000
35 #define DEFAULT_X60BAR          0xfed13000
36 #define DEFAULT_MCHBAR          0xfed14000
37 #define DEFAULT_DMIBAR          0xfed18000
38 #define DEFAULT_EPBAR           0xfed19000
39
40 #define GGC             0x52
41
42 #define DEVEN           0x54
43 #define  DEVEN_D0F0 (1 << 0)
44 #define  DEVEN_D1F0 (1 << 1)
45 #define  DEVEN_D2F0 (1 << 3)
46 #define  DEVEN_D2F1 (1 << 4)
47 #ifndef BOARD_DEVEN
48 #define BOARD_DEVEN ( DEVEN_D0F0 | DEVEN_D2F0 | DEVEN_D2F1 )
49 #endif
50
51 #define PAM0    0x90
52 #define PAM1    0x91
53 #define PAM2    0x92
54 #define PAM3    0x93
55 #define PAM4    0x94
56 #define PAM5    0x95
57 #define PAM6    0x96
58
59 #define LAC     0x97            /* Legacy Access Control */
60 #define TOLUD   0x9c            /* Top of Low Used Memory */
61 #define SMRAM   0x9d
62 #define ESMRAM  0x9e
63
64 #define TOM     0xa0
65
66 #define SKPAD   0xdc            /* Scratchpad */
67
68 /* Device 0:1.0 PCI configuration space (PCI Express) */
69
70 #define BCTRL1          0x3e    /*  8bit */
71
72
73 /* Device 0:2.0 PCI configuration space (Graphics Device) */
74
75 #define GCFC            0xf0    /* Graphics Clock Frequency and Gating Control */
76
77
78 /*
79  * MCHBAR
80  */
81
82 #define MCHBAR8(x) *((volatile u8 *)(DEFAULT_MCHBAR + x))
83 #define MCHBAR16(x) *((volatile u16 *)(DEFAULT_MCHBAR + x))
84 #define MCHBAR32(x) *((volatile u32 *)(DEFAULT_MCHBAR + x))
85
86 /* Chipset Control Registers */
87 #define FSBPMC3         0x40    /* 32bit */
88 #define FSBPMC4         0x44    /* 32bit */
89 #define FSBSNPCTL       0x48    /* 32bit */
90 #define SLPCTL          0x90    /* 32bit */
91
92 #define C0DRB0          0x100   /*  8bit */
93 #define C0DRB1          0x101   /*  8bit */
94 #define C0DRB2          0x102   /*  8bit */
95 #define C0DRB3          0x103   /*  8bit */
96 #define C0DRA0          0x108   /*  8bit */
97 #define C0DRA2          0x109   /*  8bit */
98 #define C0DCLKDIS       0x10c   /*  8bit */
99 #define C0BNKARC        0x10e   /* 16bit */
100 #define C0DRT0          0x110   /* 32bit */
101 #define C0DRT1          0x114   /* 32bit */
102 #define C0DRT2          0x118   /* 32bit */
103 #define C0DRT3          0x11c   /* 32bit */
104 #define C0DRC0          0x120   /* 32bit */
105 #define C0DRC1          0x124   /* 32bit */
106 #define C0DRC2          0x128   /* 32bit */
107 #define C0AIT           0x130   /* 64bit */
108 #define C0DCCFT         0x138   /* 64bit */
109 #define C0GTEW          0x140   /* 32bit */
110 #define C0GTC           0x144   /* 32bit */
111 #define C0DTPEW         0x148   /* 64bit */
112 #define C0DTAEW         0x150   /* 64bit */
113 #define C0DTC           0x158   /* 32bit */
114 #define C0DMC           0x164   /* 32bit */
115 #define C0ODT           0x168   /* 64bit */
116
117 #define C1DRB0          0x180   /*  8bit */
118 #define C1DRB1          0x181   /*  8bit */
119 #define C1DRB2          0x182   /*  8bit */
120 #define C1DRB3          0x183   /*  8bit */
121 #define C1DRA0          0x188   /*  8bit */
122 #define C1DCLKDIS       0x18c   /*  8bit */
123 #define C1BNKARC        0x18e   /* 16bit */
124 #define C1DRT0          0x190   /* 32bit */
125 #define C1DRT1          0x194   /* 32bit */
126 #define C1DRT2          0x198   /* 32bit */
127 #define C1DRT3          0x19c   /* 32bit */
128 #define C1DRC0          0x1a0   /* 32bit */
129 #define C1DRC1          0x1a4   /* 32bit */
130 #define C1DRC2          0x1a8   /* 32bit */
131 #define C1AIT           0x1b0   /* 64bit */
132 #define C1DCCFT         0x1b8   /* 64bit */
133 #define C1GTEW          0x1c0   /* 32bit */
134 #define C1GTC           0x1c4   /* 32bit */
135 #define C1DTPEW         0x1c8   /* 64bit */
136 #define C1DTAEW         0x1d0   /* 64bit */
137 #define C1DTC           0x1d8   /* 32bit */
138 #define C1DMC           0x1e4   /* 32bit */
139 #define C1ODT           0x1e8   /* 64bit */
140
141 #define DCC             0x200   /* 32bit */
142 #define CCCFT           0x208   /* 64bit */
143 #define WCC             0x218   /* 32bit */
144 #define MMARB0          0x220   /* 32bit */
145 #define MMARB1          0x224   /* 32bit */
146 #define SBTEST          0x230   /* 32bit */
147 #define SBOCC           0x238   /* 32bit */
148 #define ODTC            0x284   /* 32bit */
149 #define SMVREFC         0x2a0   /* 32bit */
150 #define DRTST           0x2a8   /* 32bit */
151 #define REPC            0x2e0   /* 32bit */
152 #define DQSMT           0x2f4   /* 16bit */
153 #define RCVENMT         0x2f8   /* 32bit */
154
155 #define C0R0B00DQST     0x300   /*  64bit */
156
157 #define C0WL0REOST      0x340   /*  8bit */
158 #define C0WL1REOST      0x341   /*  8bit */
159 #define C0WL2REOST      0x342   /*  8bit */
160 #define C0WL3REOST      0x343   /*  8bit */
161 #define WDLLBYPMODE     0x360   /* 16bit */
162 #define C0WDLLCMC       0x36c   /* 32bit */
163 #define C0HCTC          0x37c   /*  8bit */
164
165 #define C1R0B00DQST     0x380   /*  64bit */
166
167 #define C1WL0REOST      0x3c0   /*  8bit */
168 #define C1WL1REOST      0x3c1   /*  8bit */
169 #define C1WL2REOST      0x3c2   /*  8bit */
170 #define C1WL3REOST      0x3c3   /*  8bit */
171 #define C1WDLLCMC       0x3ec   /* 32bit */
172 #define C1HCTC          0x3fc   /*  8bit */
173
174 #define GBRCOMPCTL      0x400   /* 32bit */
175
176 #define SMSRCTL         0x408   /* XXX who knows */
177 #define C0DRAMW         0x40c   /* 16bit */
178 #define G1SC            0x410   /*  8bit */
179 #define G2SC            0x418   /*  8bit */
180 #define G3SC            0x420   /*  8bit */
181 #define G4SC            0x428   /*  8bit */
182 #define G5SC            0x430   /*  8bit */
183 #define G6SC            0x438   /*  8bit */
184
185 #define C1DRAMW         0x48c   /* 16bit */
186 #define G7SC            0x490   /*  8bit */
187 #define G8SC            0x498   /*  8bit */
188
189 #define G1SRPUT         0x500   /* 256bit */
190 #define G1SRPDT         0x520   /* 256bit */
191 #define G2SRPUT         0x540   /* 256bit */
192 #define G2SRPDT         0x560   /* 256bit */
193 #define G3SRPUT         0x580   /* 256bit */
194 #define G3SRPDT         0x5a0   /* 256bit */
195 #define G4SRPUT         0x5c0   /* 256bit */
196 #define G4SRPDT         0x5e0   /* 256bit */
197 #define G5SRPUT         0x600   /* 256bit */
198 #define G5SRPDT         0x620   /* 256bit */
199 #define G6SRPUT         0x640   /* 256bit */
200 #define G6SRPDT         0x660   /* 256bit */
201 #define G7SRPUT         0x680   /* 256bit */
202 #define G7SRPDT         0x6a0   /* 256bit */
203 #define G8SRPUT         0x6c0   /* 256bit */
204 #define G8SRPDT         0x6e0   /* 256bit */
205
206 /* Clock Controls */
207 #define CLKCFG          0xc00   /* 32bit */
208 #define UPMC1           0xc14   /* 16bit */
209 #define CPCTL           0xc16   /* 16bit */
210 #define SSKPD           0xc1c   /* 16bit (scratchpad) */
211 #define UPMC2           0xc20   /* 16bit */
212 #define UPMC4           0xc30   /* 32bit */
213 #define PLLMON          0xc34   /* 32bit */
214 #define HGIPMC2         0xc38   /* 32bit */
215
216 /* Thermal Management Controls */
217 #define TSC1            0xc88   /*  8bit */
218 #define TSS1            0xc8a   /*  8bit */
219 #define TR1             0xc8b   /*  8bit */
220 #define TSTTP1          0xc8c   /* 32bit */
221 #define TCO1            0xc92   /*  8bit */
222 #define THERM1_1        0xc94   /*  8bit */
223 #define TCOF1           0xc96   /*  8bit */
224 #define TIS1            0xc9a   /* 16bit */
225 #define TSTTP1_2        0xc9c   /* 32bit */
226 #define IUB             0xcd0   /* 32bit */
227 #define TSC0_1          0xcd8   /*  8bit */
228 #define TSS0            0xcda   /*  8bit */
229 #define TR0             0xcdb   /*  8bit */
230 #define TSTTP0_1        0xcdc   /* 32bit */
231 #define TCO0            0xce2   /*  8bit */
232 #define THERM0_1        0xce4   /*  8bit */
233 #define TCOF0           0xce6   /*  8bit */
234 #define TIS0            0xcea   /* 16bit */
235 #define TSTTP0_2        0xcec   /* 32bit */
236 #define TERRCMD         0xcf0   /*  8bit */
237 #define TSMICMD         0xcf1   /*  8bit */
238 #define TSCICMD         0xcf2   /*  8bit */
239 #define TINTRCMD        0xcf3   /*  8bit */
240 #define EXTTSCS         0xcff   /*  8bit */
241 #define DFT_STRAP1      0xe08   /* 32bit */
242
243 /* ACPI Power Management Controls */
244
245 #define MIPMC3          0xbd8   /* 32bit */
246
247 #define C2C3TT          0xf00   /* 32bit */
248 #define C3C4TT          0xf04   /* 32bit */
249
250 #define MIPMC4          0xf08   /* 16bit */
251 #define MIPMC5          0xf0a   /* 16bit */
252 #define MIPMC6          0xf0c   /* 16bit */
253 #define MIPMC7          0xf0e   /* 16bit */
254 #define PMCFG           0xf10   /* 32bit */
255 #define SLFRCS          0xf14   /* 32bit */
256 #define GIPMC1          0xfb0   /* 32bit */
257 #define FSBPMC1         0xfb8   /* 32bit */
258 #define UPMC3           0xfc0   /* 32bit */
259 #define ECO             0xffc   /* 32bit */
260
261 /*
262  * EPBAR - Egress Port Root Complex Register Block
263  */
264
265 #define EPBAR8(x) *((volatile u8 *)(DEFAULT_EPBAR + x))
266 #define EPBAR16(x) *((volatile u16 *)(DEFAULT_EPBAR + x))
267 #define EPBAR32(x) *((volatile u32 *)(DEFAULT_EPBAR + x))
268
269 #define EPPVCCAP1       0x004   /* 32bit */
270 #define EPPVCCAP2       0x008   /* 32bit */
271
272 #define EPVC0RCAP       0x010   /* 32bit */
273 #define EPVC0RCTL       0x014   /* 32bit */
274 #define EPVC0RSTS       0x01a   /* 16bit */
275
276 #define EPVC1RCAP       0x01c   /* 32bit */
277 #define EPVC1RCTL       0x020   /* 32bit */
278 #define EPVC1RSTS       0x026   /* 16bit */
279
280 #define EPVC1MTS        0x028   /* 32bit */
281 #define EPVC1IST        0x038   /* 64bit */
282
283 #define EPESD           0x044   /* 32bit */
284
285 #define EPLE1D          0x050   /* 32bit */
286 #define EPLE1A          0x058   /* 64bit */
287 #define EPLE2D          0x060   /* 32bit */
288 #define EPLE2A          0x068   /* 64bit */
289
290 #define PORTARB         0x100   /* 256bit */
291
292 /* 
293  * DMIBAR
294  */
295
296 #define DMIBAR8(x) *((volatile u8 *)(DEFAULT_DMIBAR + x))
297 #define DMIBAR16(x) *((volatile u16 *)(DEFAULT_DMIBAR + x))
298 #define DMIBAR32(x) *((volatile u32 *)(DEFAULT_DMIBAR + x))
299
300 #define DMIVCECH        0x000   /* 32bit */
301 #define DMIPVCCAP1      0x004   /* 32bit */
302 #define DMIPVCCAP2      0x008   /* 32bit */
303
304 #define DMIPVCCCTL      0x00c   /* 16bit */
305
306 #define DMIVC0RCAP      0x010   /* 32bit */
307 #define DMIVC0RCTL0     0x014   /* 32bit */
308 #define DMIVC0RSTS      0x01a   /* 16bit */
309
310 #define DMIVC1RCAP      0x01c   /* 32bit */
311 #define DMIVC1RCTL      0x020   /* 32bit */
312 #define DMIVC1RSTS      0x026   /* 16bit */
313
314 #define DMILE1D         0x050   /* 32bit */
315 #define DMILE1A         0x058   /* 64bit */
316 #define DMILE2D         0x060   /* 32bit */
317 #define DMILE2A         0x068   /* 64bit */
318
319 #define DMILCAP         0x084   /* 32bit */
320 #define DMILCTL         0x088   /* 16bit */
321 #define DMILSTS         0x08a   /* 16bit */
322
323 #define DMICTL1         0x0f0   /* 32bit */
324 #define DMICTL2         0x0fc   /* 32bit */
325
326 #define DMICC           0x208   /* 32bit */
327
328 #define DMIDRCCFG       0xeb4   /* 32bit */
329
330 #endif