]> git.sur5r.net Git - u-boot/blob - board/mpl/pati/pati.h
Merging Stelian Pop AT91 patches
[u-boot] / board / mpl / pati / pati.h
1 /*
2  * (C) Copyright 2003
3  * Denis Peter, d.peter@mpl.ch
4  * See file CREDITS for list of people who contributed to this
5  * project.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License as
9  * published by the Free Software Foundation; either version 2 of
10  * the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20  * MA 02111-1307 USA
21  */
22 /************************************************************************
23  * MACROS and register definitions for PATI Registers
24  ************************************************************************/
25 #ifndef __PATI_H_
26 #define __PATI_H_       1
27
28 #define PLD_PART_ID             0x0
29 #define PLD_BOARD_TIMING        0x4
30 #define PLD_CONF_REG1           0x8
31 #define PLD_CONF_REG2           0xC
32 #define PLD_CONF_RES            0x10
33
34 #define SET_REG_BIT(y,x) (y<<(31-x))
35 #define GET_REG_BIT(y,x) ((y>>(31-x)) & 0x1L)
36
37 /* SDRAM Controller PLD_PART_ID */
38 /* 9  10 11 12 13 14 19 31 */
39 #define SDRAM_PART3     9
40 #define SDRAM_PART2     10
41 #define SDRAM_PART1     11
42 #define SDRAM_PART0     12
43 #define SDRAM_ID3       13
44 #define SDRAM_ID2       14
45 #define SDRAM_ID1       19
46 #define SDRAM_ID0       31
47
48 #define SDRAM_PART(x)   (       \
49         (GET_REG_BIT(x,SDRAM_PART3)<<3) |\
50         (GET_REG_BIT(x,SDRAM_PART2)<<2) |\
51         (GET_REG_BIT(x,SDRAM_PART1)<<1) |\
52         (GET_REG_BIT(x,SDRAM_PART0)))
53
54 #define SDRAM_ID(x)     (       \
55         (GET_REG_BIT(x,SDRAM_ID3)<<3) |\
56         (GET_REG_BIT(x,SDRAM_ID2)<<2) |\
57         (GET_REG_BIT(x,SDRAM_ID1)<<1) |\
58         (GET_REG_BIT(x,SDRAM_ID0)))
59
60 /* System Controller */
61 /* 0  1 3 4 5 16 20 28 29 30 */
62 #define SYSCNTR_PART4   0
63 #define SYSCNTR_PART3   1
64 #define SYSCNTR_PART2   3
65 #define SYSCNTR_PART1   4
66 #define SYSCNTR_PART0   5
67 #define SYSCNTR_ID4     16
68 #define SYSCNTR_ID3     20
69 #define SYSCNTR_ID2     28
70 #define SYSCNTR_ID1     29
71 #define SYSCNTR_ID0     30
72
73 #define SYSCNTR_PART(x) (       \
74         (GET_REG_BIT(x,SYSCNTR_PART4)<<4) |\
75         (GET_REG_BIT(x,SYSCNTR_PART3)<<3) |\
76         (GET_REG_BIT(x,SYSCNTR_PART2)<<2) |\
77         (GET_REG_BIT(x,SYSCNTR_PART1)<<1) |\
78         (GET_REG_BIT(x,SYSCNTR_PART0)))
79
80 #define SYSCNTR_ID(x)   (       \
81         (GET_REG_BIT(x,SYSCNTR_ID4)<<4) |\
82         (GET_REG_BIT(x,SYSCNTR_ID3)<<3) |\
83         (GET_REG_BIT(x,SYSCNTR_ID2)<<2) |\
84         (GET_REG_BIT(x,SYSCNTR_ID1)<<1) |\
85         (GET_REG_BIT(x,SYSCNTR_ID0)))
86
87 /* SDRAM Controller PLD_BOARD_TIMING */
88 /* 9  10 11 12 13 14 19 31 */
89 #define SDRAM_CAL       9
90 #define SDRAM_RCD       10
91 #define SDRAM_WREQ      11
92 #define SDRAM_PR        12
93 #define SDRAM_RC        13
94 #define SDRAM_LMR       14
95 #define SDRAM_IIP       19
96 #define SDRAM_RES0      31
97 /* System Controller */
98 /* 0  1 3 4 5 16 20 28 29 30 */
99 #define SYSCNTR_BREV0   0
100 #define SYSCNTR_BREV1   1
101 #define SYSCNTR_BREV2   3
102 #define SYSCNTR_BREV3   4
103 #define SYSCNTR_RES0    5
104 #define SYSCNTR_RES1    16
105 #define SYSCNTR_RES2    20
106 #define SYSCNTR_FLWAIT2 28
107 #define SYSCNTR_FLWAIT1 29
108 #define SYSCNTR_FLWAIT0 30
109
110 #define SYSCNTR_BREV(x) (       \
111         (GET_REG_BIT(x,SYSCNTR_BREV3)<<3) |\
112         (GET_REG_BIT(x,SYSCNTR_BREV2)<<2) |\
113         (GET_REG_BIT(x,SYSCNTR_BREV1)<<1) |\
114         (GET_REG_BIT(x,SYSCNTR_BREV0)))
115
116 #define GET_SYSCNTR_FLWAIT(x)   (       \
117         (GET_REG_BIT(x,SYSCNTR_FLWAIT2)<<2) |\
118         (GET_REG_BIT(x,SYSCNTR_FLWAIT1)<<1) |\
119         (GET_REG_BIT(x,SYSCNTR_FLWAIT0)))
120
121 #define SET_SYSCNTR_FLWAIT(x)   (       \
122         (SET_REG_BIT(((x & 0x04)!=0),SYSCNTR_FLWAIT2)) |\
123         (SET_REG_BIT(((x & 0x02)!=0)x,SYSCNTR_FLWAIT1)) |\
124         (SET_REG_BIT(((x & 0x01)!=0)x,SYSCNTR_FLWAIT0)))
125
126 /* SDRAM Controller REG 2*/
127 /* 9  10 11 12 13 14 19 31 */
128 #define SDRAM_MUX0      9
129 #define SDRAM_MUX1      10
130 #define SDRAM_PDIS      11
131 #define SDRAM_RES1      12
132 #define SDRAM_RES2      13
133 #define SDRAM_RES3      14
134 #define SDRAM_RES4      19
135 #define SDRAM_RIP       31
136
137 #define GET_SDRAM_MUX(x)        (       \
138         (GET_REG_BIT(x,SDRAM_MUX1)<<1)| \
139         (GET_REG_BIT(x,SDRAM_MUX0)))
140
141
142 /* System Controller */
143 /* 0  1 3 4 5 16 20 28 29 30 */
144 #define SYSCNTR_FLAG    0
145 #define SYSCNTR_IP      1
146 #define SYSCNTR_BIND2   3
147 #define SYSCNTR_BIND1   4
148 #define SYSCNTR_BIND0   5
149 #define SYSCNTR_PRM     16
150 #define SYSCNTR_ICW     20
151 #define SYSCNTR_ISB2    28
152 #define SYSCNTR_ISB1    29
153 #define SYSCNTR_ISB0    30
154
155 #define GET_SYSCNTR_BOOTIND(x)  (       \
156         (GET_REG_BIT(x,SYSCNTR_BIND2)<<2) |\
157         (GET_REG_BIT(x,SYSCNTR_BIND1)<<1) |\
158         (GET_REG_BIT(x,SYSCNTR_BIND0)))
159
160 #define SET_SYSCNTR_BOOTIND(x)  (       \
161         (SET_REG_BIT(((x & 0x04)!=0),SYSCNTR_BIND2)) |\
162         (SET_REG_BIT(((x & 0x02)!=0)x,SYSCNTR_BIND1))| \
163         (SET_REG_BIT(((x & 0x01)!=0)x,SYSCNTR_BIND0)))
164
165 #define GET_SYSCNTR_ISB(x)      (       \
166         (GET_REG_BIT(x,SYSCNTR_ISB2)<<2)| \
167         (GET_REG_BIT(x,SYSCNTR_ISB1)<<1)| \
168         (GET_REG_BIT(x,SYSCNTR_ISB0)))
169
170 #define SET_SYSCNTR_ISB(x)      (       \
171         (SET_REG_BIT(((x & 0x04)!=0),SYSCNTR_ISB2))| \
172         (SET_REG_BIT(((x & 0x02)!=0)x,SYSCNTR_ISB))| \
173         (SET_REG_BIT(((x & 0x01)!=0)x,SYSCNTR_ISB0)))
174
175 /* SDRAM Controller REG 3*/
176 /* 9  10 11 12 13 14 19 31 */
177 #define SDRAM_RES5      9
178 #define SDRAM_CFG1      10
179 #define SDRAM_CFG2      11
180 #define SDRAM_CFG3      12
181 #define SDRAM_RES6      13
182 #define SDRAM_CFG5      14
183 #define SDRAM_CFG6      19
184 #define SDRAM_RES7      31
185
186 #define GET_SDRAM_CFG(x)        (       \
187         (GET_REG_BIT(x,SDRAM_CFG6)<<4) |\
188         (GET_REG_BIT(x,SDRAM_CFG5)<<3) |\
189         (GET_REG_BIT(x,SDRAM_CFG3)<<2) |\
190         (GET_REG_BIT(x,SDRAM_CFG2)<<1) |\
191         (GET_REG_BIT(x,SDRAM_CFG1)))
192
193 /* System Controller */
194 /* 0  1 3 4 5 16 20 28 29 30 */
195 #define SYSCNTR_BDIS    0
196 #define SYSCNTR_PCIM    1
197 #define SYSCNTR_CFG0    3
198 #define SYSCNTR_CFG1    4
199 #define SYSCNTR_CFG2    5
200 #define SYSCNTR_CFG3    16
201 #define SYSCNTR_BOOTEN  20
202 #define SYSCNTR_CPU_VPP 28
203 #define SYSCNTR_FL_VPP  29
204 #define SYSCNTR_FL_WP   30
205
206 #define GET_SYSCNTR_CFG(x)      (       \
207         (GET_REG_BIT(x,SYSCNTR_CFG3)<<3)| \
208         (GET_REG_BIT(x,SYSCNTR_CFG2)<<2)| \
209         (GET_REG_BIT(x,SYSCNTR_CFG1)<<1)| \
210         (GET_REG_BIT(x,SYSCNTR_CFG0)))
211
212
213 /***************************************************************
214  * MISC Defines
215  ***************************************************************/
216
217 #define PCI_VENDOR_ID_MPL       0x18E6
218 #define PCI_DEVICE_ID_PATI      0x00DA
219
220 #if defined(CONFIG_MIP405)
221 #define PATI_FIRMWARE_START_OFFSET      0x00300000
222 #define PATI_ISO_STRING  "MEV-10084-001"
223 #endif
224
225 #define PATI_ENDIAN_MODE        0x3E
226
227 /*******************************************
228  * PATI Mapping:
229  * -------------
230  * PCI Map:
231  * -------
232  * All addreses are mapped into the memory area
233  * (IO Area on some areas may also be possible)
234  * - pci_cfg_mem_base: fixed address to the PLX config area size 512Bytes
235  * - pci_space0_addr:  configurable
236  * - pci_space1_addr      configurable
237  *
238  * Local Map:
239  * ----------
240  * Local addresses (Remap)
241  * - SDRAM      0x06000000 Size 16MByte mask 0xff000000
242  * - EPLD CFG   0x07000000 Size 512Bytes
243  * - FLASH      0x03000000 Size up to 8MByte
244  * - CPU        0x01000000 Size 4MByte (only accessable if special configured)
245  *
246  * Implemention:
247  * -------------
248  * To prevent using large resources reservation on the host following
249  * PCI mapping is choosed:
250  * - pci_cfg_mem_base: fixed address to the PLX config area size 512Bytes
251  * - pci_space0_addr:  configured to the EPLD Config Area size 256Bytes
252  * - pci_space1_addr:  configured to the SDRAM Area size 1MBytes, this
253  *                     space is used to switch between SDRAM, Flash and CPU
254  *
255  */
256
257 /* Attribute definitions */
258 #define PATI_BUS_SIZE_8         0
259 #define PATI_BUS_SIZE_16        1
260 #define PATI_BUS_SIZE_32        3
261
262 #define PATI_SPACE0_MASK        (0xFEFFFE00)  /* Mask Attributes */
263 #define PATI_SPACE1_MASK        (0x00000000)  /* Mask Attributes */
264
265 #define PATI_EXTRA_LONG_EEPROM  1
266
267 #define SPACE0_TA_ENABLE (1<<6)
268 #define SPACE1_TA_ENABLE (1<<6)
269
270 /* Config Area */
271 #define PATI_LOC_CFG_ADDR               0x07000000              /* Local Address */
272 #define PATI_LOC_CFG_MASK               0xFFFFFF00              /* 256 Bytes */
273 /* Attributes */
274 #define PATI_LOC_CFG_BUS_SIZE           PATI_BUS_SIZE_32        /* 32 Bit */
275 #define PATI_LOC_CFG_BURST              0                       /* No Burst */
276 #define PATI_LOC_CFG_NO_PREFETCH        1                       /* No Prefetch */
277 #define PATI_LOC_CFG_TA_ENABLE          1                       /* Enable TA */
278
279 #define PATI_LOC_CFG_SPACE0_ATTR  ( \
280                 PATI_LOC_CFG_BUS_SIZE | \
281                 (PATI_LOC_CFG_TA_ENABLE << 6) | \
282                 (PATI_LOC_CFG_NO_PREFETCH << 8) | \
283                 (PATI_LOC_CFG_BURST << 24) | \
284                 (PATI_EXTRA_LONG_EEPROM << 25))
285
286 /* should never be used */
287 #define PATI_LOC_CFG_SPACE1_ATTR  ( \
288                 PATI_LOC_CFG_BUS_SIZE | \
289                 (PATI_LOC_CFG_TA_ENABLE << 6) | \
290                 (PATI_LOC_CFG_NO_PREFETCH << 9) | \
291                 (PATI_LOC_CFG_BURST << 8))
292
293
294 /* SDRAM Area */
295 #define PATI_LOC_SDRAM_ADDR             0x06000000              /* Local Address */
296 #define PATI_LOC_SDRAM_MASK             0xFFF00000              /* 1MByte */
297 /* Attributes */
298 #define PATI_LOC_SDRAM_BUS_SIZE         PATI_BUS_SIZE_32        /* 32 Bit */
299 #define PATI_LOC_SDRAM_BURST            0                       /* No Burst */
300 #define PATI_LOC_SDRAM_NO_PREFETCH      0                       /* Prefetch */
301 #define PATI_LOC_SDRAM_TA_ENABLE        1                       /* Enable TA */
302
303 /* should never be used */
304 #define PATI_LOC_SDRAM_SPACE0_ATTR  ( \
305                 PATI_LOC_SDRAM_BUS_SIZE | \
306                 (PATI_LOC_SDRAM_TA_ENABLE << 6) | \
307                 (PATI_LOC_SDRAM_NO_PREFETCH << 8) | \
308                 (PATI_LOC_SDRAM_BURST << 24) | \
309                 (PATI_EXTRA_LONG_EEPROM << 25))
310
311 #define PATI_LOC_SDRAM_SPACE1_ATTR  ( \
312                 PATI_LOC_SDRAM_BUS_SIZE | \
313                 (PATI_LOC_SDRAM_TA_ENABLE << 6) | \
314                 (PATI_LOC_SDRAM_NO_PREFETCH << 9) | \
315                 (PATI_LOC_SDRAM_BURST << 8))
316
317
318 /* Flash Area */
319 #define PATI_LOC_FLASH_ADDR             0x03000000              /* Local Address */
320 #define PATI_LOC_FLASH_MASK             0xFFF00000              /* 1MByte */
321 /* Attributes */
322 #define PATI_LOC_FLASH_BUS_SIZE         PATI_BUS_SIZE_16        /* 16 Bit */
323 #define PATI_LOC_FLASH_BURST            0                       /* No Burst */
324 #define PATI_LOC_FLASH_NO_PREFETCH      1                       /* No Prefetch */
325 #define PATI_LOC_FLASH_TA_ENABLE        1                       /* Enable TA */
326
327 /* should never be used */
328 #define PATI_LOC_FLASH_SPACE0_ATTR  ( \
329                 PATI_LOC_FLASH_BUS_SIZE | \
330                 (PATI_LOC_FLASH_TA_ENABLE << 6) | \
331                 (PATI_LOC_FLASH_NO_PREFETCH << 8) | \
332                 (PATI_LOC_FLASH_BURST << 24) | \
333                 (PATI_EXTRA_LONG_EEPROM << 25))
334
335 #define PATI_LOC_FLASH_SPACE1_ATTR  ( \
336                 PATI_LOC_FLASH_BUS_SIZE | \
337                 (PATI_LOC_FLASH_TA_ENABLE << 6) | \
338                 (PATI_LOC_FLASH_NO_PREFETCH << 9) | \
339                 (PATI_LOC_FLASH_BURST << 8))
340
341
342 /* CPU Area */
343 #define PATI_LOC_CPU_ADDR               0x01000000              /* Local Address */
344 #define PATI_LOC_CPU_MASK               0xFFF00000              /* 1Mbyte */
345 /* Attributes */
346 #define PATI_LOC_CPU_BUS_SIZE           PATI_BUS_SIZE_32        /* 32 Bit */
347 #define PATI_LOC_CPU_BURST              0                       /* No Burst */
348 #define PATI_LOC_CPU_NO_PREFETCH        1                       /* No Prefetch */
349 #define PATI_LOC_CPU_TA_ENABLE          1                       /* Enable TA */
350
351 /* should never be used */
352 #define PATI_LOC_CPU_SPACE0_ATTR  ( \
353                 PATI_LOC_CPU_BUS_SIZE | \
354                 (PATI_LOC_CPU_TA_ENABLE << 6) | \
355                 (PATI_LOC_CPU_NO_PREFETCH << 8) | \
356                 (PATI_LOC_CPU_BURST << 24) | \
357                 (PATI_EXTRA_CPU_EEPROM << 25))
358
359 #define PATI_LOC_CPU_SPACE1_ATTR  ( \
360                 PATI_LOC_CPU_BUS_SIZE | \
361                 (PATI_LOC_CPU_TA_ENABLE << 6) | \
362                 (PATI_LOC_CPU_NO_PREFETCH << 9) | \
363                 (PATI_LOC_CPU_BURST << 8))
364
365 /***************************************************
366  * Hardware Config word definition
367  ***************************************************/
368 #define BOOT_EXT_FLASH          0x00000000
369 #define BOOT_INT_FLASH          0x00000004
370 #define BOOT_FROM_PCI           0x00000006
371 #define BOOT_FROM_SDRAM         0x00000005
372
373 #define ENABLE_INT_ARB          0x00000008
374
375 #define INITIAL_IRQ_PREF        0x00000010
376
377 #define INITIAL_MEM_0M          0x00000000
378 #define INITIAL_MEM_4M          0x00000080
379 #define INITIAL_MEM_8M          0x00000040
380 #define INITIAL_MEM_12M         0x000000C0
381 #define INITIAL_MEM_16M         0x00000020
382 #define INITIAL_MEM_20M         0x000000A0
383 #define INITIAL_MEM_24M         0x00000060
384 #define INITIAL_MEM_28M         0x000000E0
385 /* CONF */
386 #define INTERNAL_HWCONF         0x00000100
387 /* PRPM */
388 #define LOCAL_CPU_SLAVE         0x00000200
389 /* BDIS */
390 #define DISABLE_MEM_CNTR        0x00000400
391 /* PCIM */
392 #define PCI_MASTER_ONLY         0x00000800
393
394
395 #define PATI_HW_START           ((BOOT_EXT_FLASH | INITIAL_MEM_28M | INITIAL_IRQ_PREF))
396 #define PATI_HW_PCI_ONLY        ((BOOT_EXT_FLASH | INITIAL_MEM_28M | INITIAL_IRQ_PREF | PCI_MASTER_ONLY))
397 #define PATI_HW_CPU_ACC         ((BOOT_EXT_FLASH | INITIAL_MEM_12M | INITIAL_IRQ_PREF | PCI_MASTER_ONLY))
398 #define PATI_HW_CPU_SLAVE       ((BOOT_EXT_FLASH | INITIAL_MEM_12M | INITIAL_IRQ_PREF | PCI_MASTER_ONLY | LOCAL_CPU_SLAVE))
399
400 /***************************************************
401  * Direct Master Config
402  ***************************************************/
403 #define PATI_DMASTER_PCI_ADDR           0x01000000
404 #define PATI_BUS_MASTER 1
405
406
407 #define PATI_DMASTER_MASK               0xFFF00000  /* 1MByte */
408 #define PATI_DMASTER_ADDR               0x01000000  /* Local Address */
409
410 #define PATI_DMASTER_MEMORY_EN          0x00000001 /* 0x00000001 */
411 #define PATI_DMASTER_READ_AHEAD         0x00000004 /* 0x00000004 */
412 #define PATI_DMASTER_READ_NOT_AHEAD     0x00000000 /* 0x00000004 */
413 #define PATI_DMASTER_PRE_SIZE_CNTRL_0   0x00000000
414 #define PATI_DMASTER_PRE_SIZE_CNTRL_4   0x00000008
415 #define PATI_DMASTER_PRE_SIZE_CNTRL_8   0x00001000
416 #define PATI_DMASTER_PRE_SIZE_CNTRL_16  0x00001008
417 #define PATI_DMASTER_REL_PCI            0x00000000
418 #define PATI_DMASTER_NOT_REL_PCI        0x00000010
419 #define PATI_DMASTER_WR_INVAL           0x00000200
420 #define PATI_DMASTER_NOT_WR_INVAL       0x00000000
421 #define PATI_DMASTER_PRE_LIMIT          0x00000800
422 #define PATI_DMASTER_PRE_CONT           0x00000000
423 #define PATI_DMASTER_DELAY_WR_0         0x00000000
424 #define PATI_DMASTER_DELAY_WR_4         0x00004000
425 #define PATI_DMASTER_DELAY_WR_8         0x00008000
426 #define PATI_DMASTER_DELAY_WR_16        0x0000C000
427
428 #define PATI_DMASTER_PCI_ADDR_MASK      0xFFFF0000
429
430 #define PATI_DMASTER_ATTR       \
431         PATI_DMASTER_MEMORY_EN | \
432         PATI_DMASTER_READ_AHEAD | \
433         PATI_DMASTER_PRE_SIZE_CNTRL_4 | \
434         PATI_DMASTER_REL_PCI | \
435         PATI_DMASTER_NOT_WR_INVAL | \
436         PATI_DMASTER_PRE_LIMIT | \
437         PATI_DMASTER_DELAY_WR_0
438
439
440 #endif /* #ifndef __PATI_H_ */