Commit 6c7a14084ae5f7dde3819e4ab43fd78ea82805fe
1 parent
bc54f309a1
Exists in
master
and in
55 other branches
Patch by Mark Jonas, 01 Jul 2004:
Added support for Total5100 and Total5200 (Rev.1 and Rev.2) MGT5100 and MPC5200 based Freescale platforms.
Showing 17 changed files with 1158 additions and 1 deletions Side-by-side Diff
- CHANGELOG
- CREDITS
- MAKEALL
- Makefile
- board/total5200/Makefile
- board/total5200/config.mk
- board/total5200/mt48lc16m16a2-75.h
- board/total5200/mt48lc32m16a2-75.h
- board/total5200/sdram.c
- board/total5200/sdram.h
- board/total5200/total5200.c
- board/total5200/u-boot.lds
- cpu/mpc5xxx/fec.c
- cpu/mpc5xxx/ide.c
- cpu/mpc5xxx/start.S
- include/configs/Total5200.h
- include/mpc5xxx.h
CHANGELOG
... | ... | @@ -2,6 +2,10 @@ |
2 | 2 | Changes since U-Boot 1.1.1: |
3 | 3 | ====================================================================== |
4 | 4 | |
5 | +* Patch by Mark Jonas, 01 Jul 2004: | |
6 | + Added support for Total5100 and Total5200 (Rev.1 and Rev.2) | |
7 | + MGT5100 and MPC5200 based Freescale platforms. | |
8 | + | |
5 | 9 | * Patch by Philippe Robin, 01 Jul 2004: |
6 | 10 | Add initialization for Integrator and versatile board files. |
7 | 11 |
CREDITS
... | ... | @@ -206,6 +206,11 @@ |
206 | 206 | E: yooth@ipone.co.kr |
207 | 207 | D: Added port to the RPXlite board |
208 | 208 | |
209 | +N: Mark Jonas | |
210 | +E: mark.jonas@freescale.com | |
211 | +D: Support for Freescale Total5200 platform | |
212 | +W: http://www.mobilegt.com/ | |
213 | + | |
209 | 214 | N: Sam Song |
210 | 215 | E: samsongshu@yahoo.com.cn |
211 | 216 | D: Port to the RPXlite_DW board |
MAKEALL
Makefile
... | ... | @@ -255,6 +255,34 @@ |
255 | 255 | @ echo "#define CONFIG_$(@:_config=) 1" >include/config.h |
256 | 256 | @./mkconfig -a TOP5200 ppc mpc5xxx top5200 emk |
257 | 257 | |
258 | +Total5100_config \ | |
259 | +Total5200_config \ | |
260 | +Total5200_lowboot_config \ | |
261 | +Total5200_Rev2_config \ | |
262 | +Total5200_Rev2_lowboot_config: unconfig | |
263 | + @ >include/config.h | |
264 | + @[ -z "$(findstring 5100,$@)" ] || \ | |
265 | + { echo "#define CONFIG_MGT5100" >>include/config.h ; \ | |
266 | + echo "... with MGT5100 processor" ; \ | |
267 | + } | |
268 | + @[ -z "$(findstring 5200,$@)" ] || \ | |
269 | + { echo "#define CONFIG_MPC5200" >>include/config.h ; \ | |
270 | + echo "... with MPC5200 processor" ; \ | |
271 | + } | |
272 | + @[ -n "$(findstring Rev,$@)" ] || \ | |
273 | + { echo "#define CONFIG_TOTAL5200_REV 1" >>include/config.h ; \ | |
274 | + echo "... revision 1 board" ; \ | |
275 | + } | |
276 | + @[ -z "$(findstring Rev2_,$@)" ] || \ | |
277 | + { echo "#define CONFIG_TOTAL5200_REV 2" >>include/config.h ; \ | |
278 | + echo "... revision 2 board" ; \ | |
279 | + } | |
280 | + @[ -z "$(findstring lowboot_,$@)" ] || \ | |
281 | + { echo "TEXT_BASE = 0xFE000000" >board/total5200/config.tmp ; \ | |
282 | + echo "... with lowboot configuration" ; \ | |
283 | + } | |
284 | + @./mkconfig -a Total5200 ppc mpc5xxx total5200 | |
285 | + | |
258 | 286 | PM520_config \ |
259 | 287 | PM520_DDR_config \ |
260 | 288 | PM520_ROMBOOT_config \ |
board/total5200/Makefile
1 | +# | |
2 | +# (C) Copyright 2003-2004 | |
3 | +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | +# | |
5 | +# See file CREDITS for list of people who contributed to this | |
6 | +# project. | |
7 | +# | |
8 | +# This program is free software; you can redistribute it and/or | |
9 | +# modify it under the terms of the GNU General Public License as | |
10 | +# published by the Free Software Foundation; either version 2 of | |
11 | +# the License, or (at your option) any later version. | |
12 | +# | |
13 | +# This program is distributed in the hope that it will be useful, | |
14 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | +# GNU General Public License for more details. | |
17 | +# | |
18 | +# You should have received a copy of the GNU General Public License | |
19 | +# along with this program; if not, write to the Free Software | |
20 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | +# MA 02111-1307 USA | |
22 | +# | |
23 | + | |
24 | +include $(TOPDIR)/config.mk | |
25 | + | |
26 | +LIB = lib$(BOARD).a | |
27 | + | |
28 | +OBJS := $(BOARD).o sdram.o | |
29 | + | |
30 | +$(LIB): $(OBJS) $(SOBJS) | |
31 | + $(AR) crv $@ $(OBJS) | |
32 | + | |
33 | +clean: | |
34 | + rm -f $(SOBJS) $(OBJS) | |
35 | + | |
36 | +distclean: clean | |
37 | + rm -f $(LIB) core *.bak .depend | |
38 | + | |
39 | +######################################################################### | |
40 | + | |
41 | +.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) | |
42 | + $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ | |
43 | + | |
44 | +-include .depend | |
45 | + | |
46 | +######################################################################### |
board/total5200/config.mk
1 | +# | |
2 | +# (C) Copyright 2003-2004 | |
3 | +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | +# | |
5 | +# See file CREDITS for list of people who contributed to this | |
6 | +# project. | |
7 | +# | |
8 | +# This program is free software; you can redistribute it and/or | |
9 | +# modify it under the terms of the GNU General Public License as | |
10 | +# published by the Free Software Foundation; either version 2 of | |
11 | +# the License, or (at your option) any later version. | |
12 | +# | |
13 | +# This program is distributed in the hope that it will be useful, | |
14 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | +# GNU General Public License for more details. | |
17 | +# | |
18 | +# You should have received a copy of the GNU General Public License | |
19 | +# along with this program; if not, write to the Free Software | |
20 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | +# MA 02111-1307 USA | |
22 | +# | |
23 | + | |
24 | +# | |
25 | +# Total5200 board: | |
26 | +# | |
27 | +# Valid values for TEXT_BASE are: | |
28 | +# | |
29 | +# 0xFFF00000 boot high (standard configuration) | |
30 | +# 0xFE000000 boot low | |
31 | +# 0x00100000 boot from RAM (for testing only) | |
32 | +# | |
33 | + | |
34 | +sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp | |
35 | + | |
36 | +ifndef TEXT_BASE | |
37 | +## Standard: boot high | |
38 | +TEXT_BASE = 0xFFF00000 | |
39 | +## For testing: boot from RAM | |
40 | +# TEXT_BASE = 0x00100000 | |
41 | +endif | |
42 | + | |
43 | +PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board |
board/total5200/mt48lc16m16a2-75.h
1 | +/* | |
2 | + * (C) Copyright 2004 | |
3 | + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com. | |
4 | + * | |
5 | + * See file CREDITS for list of people who contributed to this | |
6 | + * project. | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or | |
9 | + * modify it under the terms of the GNU General Public License as | |
10 | + * published by the Free Software Foundation; either version 2 of | |
11 | + * the License, or (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | + * MA 02111-1307 USA | |
22 | + */ | |
23 | + | |
24 | +#define SDRAM_DDR 0 /* is SDR */ | |
25 | + | |
26 | +#if defined(CONFIG_MPC5200) | |
27 | +/* Settings for XLB = 132 MHz */ | |
28 | +#define SDRAM_MODE 0x00CD0000 | |
29 | +#define SDRAM_CONTROL 0x504F0000 | |
30 | +#define SDRAM_CONFIG1 0xD2322800 | |
31 | +#define SDRAM_CONFIG2 0x8AD70000 | |
32 | + | |
33 | +#elif defined(CONFIG_MGT5100) | |
34 | +/* Settings for XLB = 66 MHz */ | |
35 | +#define SDRAM_MODE 0x008D0000 | |
36 | +#define SDRAM_CONTROL 0x504F0000 | |
37 | +#define SDRAM_CONFIG1 0xC2222600 | |
38 | +#define SDRAM_CONFIG2 0x88B70004 | |
39 | +#define SDRAM_ADDRSEL 0x02000000 | |
40 | + | |
41 | +#else | |
42 | +#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined | |
43 | +#endif |
board/total5200/mt48lc32m16a2-75.h
1 | +/* | |
2 | + * (C) Copyright 2004 | |
3 | + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com. | |
4 | + * | |
5 | + * See file CREDITS for list of people who contributed to this | |
6 | + * project. | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or | |
9 | + * modify it under the terms of the GNU General Public License as | |
10 | + * published by the Free Software Foundation; either version 2 of | |
11 | + * the License, or (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | + * MA 02111-1307 USA | |
22 | + */ | |
23 | + | |
24 | +/* | |
25 | + * Micron MT48LC32M16A2-75 is compatible to: | |
26 | + * - Infineon HYB39S512160AT-75 | |
27 | + */ | |
28 | + | |
29 | +#define SDRAM_DDR 0 /* is SDR */ | |
30 | + | |
31 | +#if defined(CONFIG_MPC5200) | |
32 | +/* Settings for XLB = 132 MHz */ | |
33 | +#define SDRAM_MODE 0x00CD0000 | |
34 | +#define SDRAM_CONTROL 0x514F0000 | |
35 | +#define SDRAM_CONFIG1 0xD2322800 | |
36 | +#define SDRAM_CONFIG2 0x8AD70000 | |
37 | + | |
38 | +#else | |
39 | +#error CONFIG_MPC5200 is not defined | |
40 | +#endif |
board/total5200/sdram.c
1 | +/* | |
2 | + * (C) Copyright 2003-2004 | |
3 | + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | + * | |
5 | + * (C) Copyright 2004 | |
6 | + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com. | |
7 | + * | |
8 | + * See file CREDITS for list of people who contributed to this | |
9 | + * project. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or | |
12 | + * modify it under the terms of the GNU General Public License as | |
13 | + * published by the Free Software Foundation; either version 2 of | |
14 | + * the License, or (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
24 | + * MA 02111-1307 USA | |
25 | + */ | |
26 | + | |
27 | +#include <common.h> | |
28 | +#include <mpc5xxx.h> | |
29 | + | |
30 | +#include "sdram.h" | |
31 | + | |
32 | +#ifndef CFG_RAMBOOT | |
33 | +static void mpc5xxx_sdram_start (sdram_conf_t *sdram_conf, int hi_addr) | |
34 | +{ | |
35 | + long hi_addr_bit = hi_addr ? 0x01000000 : 0; | |
36 | + | |
37 | + /* unlock mode register */ | |
38 | + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000000 | hi_addr_bit; | |
39 | + __asm__ volatile ("sync"); | |
40 | + | |
41 | + /* precharge all banks */ | |
42 | + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000002 | hi_addr_bit; | |
43 | + __asm__ volatile ("sync"); | |
44 | + | |
45 | + if (sdram_conf->ddr) { | |
46 | + /* set mode register: extended mode */ | |
47 | + *(vu_long *)MPC5XXX_SDRAM_MODE = sdram_conf->emode; | |
48 | + __asm__ volatile ("sync"); | |
49 | + | |
50 | + /* set mode register: reset DLL */ | |
51 | + *(vu_long *)MPC5XXX_SDRAM_MODE = sdram_conf->mode | 0x04000000; | |
52 | + __asm__ volatile ("sync"); | |
53 | + } | |
54 | + | |
55 | + /* precharge all banks */ | |
56 | + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000002 | hi_addr_bit; | |
57 | + __asm__ volatile ("sync"); | |
58 | + | |
59 | + /* auto refresh */ | |
60 | + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000004 | hi_addr_bit; | |
61 | + __asm__ volatile ("sync"); | |
62 | + | |
63 | + /* set mode register */ | |
64 | + *(vu_long *)MPC5XXX_SDRAM_MODE = sdram_conf->mode; | |
65 | + __asm__ volatile ("sync"); | |
66 | + | |
67 | + /* normal operation */ | |
68 | + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | hi_addr_bit; | |
69 | + __asm__ volatile ("sync"); | |
70 | +} | |
71 | +#endif | |
72 | + | |
73 | +/* | |
74 | + * ATTENTION: Although partially referenced initdram does NOT make real use | |
75 | + * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE | |
76 | + * is something else than 0x00000000. | |
77 | + */ | |
78 | + | |
79 | +#if defined(CONFIG_MPC5200) | |
80 | +long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf) | |
81 | +{ | |
82 | + ulong dramsize = 0; | |
83 | + ulong dramsize2 = 0; | |
84 | +#ifndef CFG_RAMBOOT | |
85 | + ulong test1, test2; | |
86 | + | |
87 | + /* setup SDRAM chip selects */ | |
88 | + *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e;/* 2G at 0x0 */ | |
89 | + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000;/* disabled */ | |
90 | + __asm__ volatile ("sync"); | |
91 | + | |
92 | + /* setup config registers */ | |
93 | + *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = sdram_conf->config1; | |
94 | + *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = sdram_conf->config2; | |
95 | + __asm__ volatile ("sync"); | |
96 | + | |
97 | + if (sdram_conf->ddr) { | |
98 | + /* set tap delay */ | |
99 | + *(vu_long *)MPC5XXX_CDM_PORCFG = sdram_conf->tapdelay; | |
100 | + __asm__ volatile ("sync"); | |
101 | + } | |
102 | + | |
103 | + /* find RAM size using SDRAM CS0 only */ | |
104 | + mpc5xxx_sdram_start(sdram_conf, 0); | |
105 | + test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000); | |
106 | + mpc5xxx_sdram_start(sdram_conf, 1); | |
107 | + test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000); | |
108 | + if (test1 > test2) { | |
109 | + mpc5xxx_sdram_start(sdram_conf, 0); | |
110 | + dramsize = test1; | |
111 | + } else { | |
112 | + dramsize = test2; | |
113 | + } | |
114 | + | |
115 | + /* memory smaller than 1MB is impossible */ | |
116 | + if (dramsize < (1 << 20)) { | |
117 | + dramsize = 0; | |
118 | + } | |
119 | + | |
120 | + /* set SDRAM CS0 size according to the amount of RAM found */ | |
121 | + if (dramsize > 0) { | |
122 | + *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1; | |
123 | + } else { | |
124 | + *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */ | |
125 | + } | |
126 | + | |
127 | + /* let SDRAM CS1 start right after CS0 */ | |
128 | + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */ | |
129 | + | |
130 | + /* find RAM size using SDRAM CS1 only */ | |
131 | + mpc5xxx_sdram_start(sdram_conf, 0); | |
132 | + test1 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000); | |
133 | + mpc5xxx_sdram_start(sdram_conf, 1); | |
134 | + test2 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000); | |
135 | + if (test1 > test2) { | |
136 | + mpc5xxx_sdram_start(sdram_conf, 0); | |
137 | + dramsize2 = test1; | |
138 | + } else { | |
139 | + dramsize2 = test2; | |
140 | + } | |
141 | + | |
142 | + /* memory smaller than 1MB is impossible */ | |
143 | + if (dramsize2 < (1 << 20)) { | |
144 | + dramsize2 = 0; | |
145 | + } | |
146 | + | |
147 | + /* set SDRAM CS1 size according to the amount of RAM found */ | |
148 | + if (dramsize2 > 0) { | |
149 | + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize | |
150 | + | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1); | |
151 | + } else { | |
152 | + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */ | |
153 | + } | |
154 | + | |
155 | +#else /* CFG_RAMBOOT */ | |
156 | + | |
157 | + /* retrieve size of memory connected to SDRAM CS0 */ | |
158 | + dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF; | |
159 | + if (dramsize >= 0x13) { | |
160 | + dramsize = (1 << (dramsize - 0x13)) << 20; | |
161 | + } else { | |
162 | + dramsize = 0; | |
163 | + } | |
164 | + | |
165 | + /* retrieve size of memory connected to SDRAM CS1 */ | |
166 | + dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF; | |
167 | + if (dramsize2 >= 0x13) { | |
168 | + dramsize2 = (1 << (dramsize2 - 0x13)) << 20; | |
169 | + } else { | |
170 | + dramsize2 = 0; | |
171 | + } | |
172 | + | |
173 | +#endif /* CFG_RAMBOOT */ | |
174 | + | |
175 | + return dramsize + dramsize2; | |
176 | +} | |
177 | + | |
178 | +#elif defined(CONFIG_MGT5100) | |
179 | + | |
180 | +long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf) | |
181 | +{ | |
182 | + ulong dramsize = 0; | |
183 | +#ifndef CFG_RAMBOOT | |
184 | + ulong test1, test2; | |
185 | + | |
186 | + /* setup and enable SDRAM chip selects */ | |
187 | + *(vu_long *)MPC5XXX_SDRAM_START = 0x00000000; | |
188 | + *(vu_long *)MPC5XXX_SDRAM_STOP = 0x0000ffff;/* 2G */ | |
189 | + *(vu_long *)MPC5XXX_ADDECR |= (1 << 22); /* Enable SDRAM */ | |
190 | + __asm__ volatile ("sync"); | |
191 | + | |
192 | + /* setup config registers */ | |
193 | + *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = sdram_conf->config1; | |
194 | + *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = sdram_conf->config2; | |
195 | + | |
196 | + /* address select register */ | |
197 | + *(vu_long *)MPC5XXX_SDRAM_XLBSEL = sdram_conf->addrsel; | |
198 | + __asm__ volatile ("sync"); | |
199 | + | |
200 | + /* find RAM size */ | |
201 | + mpc5xxx_sdram_start(sdram_conf, 0); | |
202 | + test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000); | |
203 | + mpc5xxx_sdram_start(sdram_conf, 1); | |
204 | + test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000); | |
205 | + if (test1 > test2) { | |
206 | + mpc5xxx_sdram_start(sdram_conf, 0); | |
207 | + dramsize = test1; | |
208 | + } else { | |
209 | + dramsize = test2; | |
210 | + } | |
211 | + | |
212 | + /* set SDRAM end address according to size */ | |
213 | + *(vu_long *)MPC5XXX_SDRAM_STOP = ((dramsize - 1) >> 15); | |
214 | + | |
215 | +#else /* CFG_RAMBOOT */ | |
216 | + | |
217 | + /* Retrieve amount of SDRAM available */ | |
218 | + dramsize = ((*(vu_long *)MPC5XXX_SDRAM_STOP + 1) << 15); | |
219 | + | |
220 | +#endif /* CFG_RAMBOOT */ | |
221 | + | |
222 | + return dramsize; | |
223 | +} | |
224 | + | |
225 | +#else | |
226 | +#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined | |
227 | +#endif |
board/total5200/sdram.h
1 | +/* | |
2 | + * (C) Copyright 2004 | |
3 | + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com. | |
4 | + * | |
5 | + * See file CREDITS for list of people who contributed to this | |
6 | + * project. | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or | |
9 | + * modify it under the terms of the GNU General Public License as | |
10 | + * published by the Free Software Foundation; either version 2 of | |
11 | + * the License, or (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | + * MA 02111-1307 USA | |
22 | + */ | |
23 | + | |
24 | +typedef struct { | |
25 | + ulong ddr; | |
26 | + ulong mode; | |
27 | + ulong emode; | |
28 | + ulong control; | |
29 | + ulong config1; | |
30 | + ulong config2; | |
31 | +#if defined(CONFIG_MPC5200) | |
32 | + ulong tapdelay; | |
33 | +#endif | |
34 | +#if defined(CONFIG_MGT5100) | |
35 | + ulong addrsel; | |
36 | +#endif | |
37 | +} sdram_conf_t; | |
38 | + | |
39 | +long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf); |
board/total5200/total5200.c
1 | +/* | |
2 | + * (C) Copyright 2003-2004 | |
3 | + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | + * | |
5 | + * (C) Copyright 2004 | |
6 | + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com. | |
7 | + * | |
8 | + * See file CREDITS for list of people who contributed to this | |
9 | + * project. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or | |
12 | + * modify it under the terms of the GNU General Public License as | |
13 | + * published by the Free Software Foundation; either version 2 of | |
14 | + * the License, or (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
24 | + * MA 02111-1307 USA | |
25 | + */ | |
26 | + | |
27 | +#include <common.h> | |
28 | +#include <mpc5xxx.h> | |
29 | +#include <pci.h> | |
30 | + | |
31 | +#include "sdram.h" | |
32 | + | |
33 | +#if CONFIG_TOTAL5200_REV==2 | |
34 | +#include "mt48lc32m16a2-75.h" | |
35 | +#else | |
36 | +#include "mt48lc16m16a2-75.h" | |
37 | +#endif | |
38 | + | |
39 | +long int initdram (int board_type) | |
40 | +{ | |
41 | + sdram_conf_t sdram_conf; | |
42 | + | |
43 | + sdram_conf.ddr = SDRAM_DDR; | |
44 | + sdram_conf.mode = SDRAM_MODE; | |
45 | + sdram_conf.emode = 0; | |
46 | + sdram_conf.control = SDRAM_CONTROL; | |
47 | + sdram_conf.config1 = SDRAM_CONFIG1; | |
48 | + sdram_conf.config2 = SDRAM_CONFIG2; | |
49 | +#if defined(CONFIG_MPC5200) | |
50 | + sdram_conf.tapdelay = 0; | |
51 | +#endif | |
52 | +#if defined(CONFIG_MGT5100) | |
53 | + sdram_conf.addrsel = SDRAM_ADDRSEL; | |
54 | +#endif | |
55 | + return mpc5xxx_sdram_init (&sdram_conf); | |
56 | +} | |
57 | + | |
58 | +int checkboard (void) | |
59 | +{ | |
60 | +#if defined(CONFIG_MPC5200) | |
61 | +#if CONFIG_TOTAL5200_REV==2 | |
62 | + puts ("Board: Total5200 Rev.2 "); | |
63 | +#else | |
64 | + puts ("Board: Total5200 "); | |
65 | +#endif | |
66 | +#elif defined(CONFIG_MGT5100) | |
67 | + puts ("Board: Total5100 "); | |
68 | +#endif | |
69 | + | |
70 | +/* | |
71 | + * Retrieve FPGA Revision. | |
72 | + */ | |
73 | +printf ("(FPGA %08X)\n", *(vu_long *) (CFG_FPGA_BASE + 0x400)); | |
74 | + | |
75 | +/* | |
76 | + * Take all peripherals in power-up mode. | |
77 | + */ | |
78 | +#if CONFIG_TOTAL5200_REV==2 | |
79 | + *(vu_char *) (CFG_CPLD_BASE + 0x46) = 0x70; | |
80 | +#else | |
81 | + *(vu_long *) (CFG_CPLD_BASE + 0x400) = 0x70; | |
82 | +#endif | |
83 | + | |
84 | + return 0; | |
85 | +} | |
86 | + | |
87 | +#if defined(CONFIG_MGT5100) | |
88 | +int board_early_init_r(void) | |
89 | +{ | |
90 | + /* | |
91 | + * Now, when we are in RAM, enable CS0 | |
92 | + * because CS_BOOT cannot be written. | |
93 | + */ | |
94 | + *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 25); /* disable CS_BOOT */ | |
95 | + *(vu_long *)MPC5XXX_ADDECR |= (1 << 16); /* enable CS0 */ | |
96 | + | |
97 | + return 0; | |
98 | +} | |
99 | +#endif | |
100 | + | |
101 | +#ifdef CONFIG_PCI | |
102 | +static struct pci_controller hose; | |
103 | + | |
104 | +extern void pci_mpc5xxx_init(struct pci_controller *); | |
105 | + | |
106 | +void pci_init_board(void) | |
107 | +{ | |
108 | + pci_mpc5xxx_init(&hose); | |
109 | +} | |
110 | +#endif | |
111 | + | |
112 | +#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) | |
113 | + | |
114 | +/* IRDA_1 aka PSC6_3 (pin C13) */ | |
115 | +#define GPIO_IRDA_1 0x20000000UL | |
116 | + | |
117 | +void init_ide_reset (void) | |
118 | +{ | |
119 | + debug ("init_ide_reset\n"); | |
120 | + | |
121 | + /* Configure IRDA_1 (PSC6_3) as GPIO output for ATA reset */ | |
122 | + *(vu_long *) MPC5XXX_GPIO_ENABLE |= GPIO_IRDA_1; | |
123 | + *(vu_long *) MPC5XXX_GPIO_DIR |= GPIO_IRDA_1; | |
124 | +} | |
125 | + | |
126 | +void ide_set_reset (int idereset) | |
127 | +{ | |
128 | + debug ("ide_reset(%d)\n", idereset); | |
129 | + | |
130 | + if (idereset) { | |
131 | + *(vu_long *) MPC5XXX_GPIO_DATA_O &= ~GPIO_IRDA_1; | |
132 | + } else { | |
133 | + *(vu_long *) MPC5XXX_GPIO_DATA_O |= GPIO_IRDA_1; | |
134 | + } | |
135 | +} | |
136 | +#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */ |
board/total5200/u-boot.lds
1 | +/* | |
2 | + * (C) Copyright 2003-2004 | |
3 | + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | + * | |
5 | + * See file CREDITS for list of people who contributed to this | |
6 | + * project. | |
7 | + * | |
8 | + * This program is free software; you can redistribute it and/or | |
9 | + * modify it under the terms of the GNU General Public License as | |
10 | + * published by the Free Software Foundation; either version 2 of | |
11 | + * the License, or (at your option) any later version. | |
12 | + * | |
13 | + * This program is distributed in the hope that it will be useful, | |
14 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | + * GNU General Public License for more details. | |
17 | + * | |
18 | + * You should have received a copy of the GNU General Public License | |
19 | + * along with this program; if not, write to the Free Software | |
20 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | + * MA 02111-1307 USA | |
22 | + */ | |
23 | + | |
24 | +OUTPUT_ARCH(powerpc) | |
25 | +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); | |
26 | +/* Do we need any of these for elf? | |
27 | + __DYNAMIC = 0; */ | |
28 | +SECTIONS | |
29 | +{ | |
30 | + /* Read-only sections, merged into text segment: */ | |
31 | + . = + SIZEOF_HEADERS; | |
32 | + .interp : { *(.interp) } | |
33 | + .hash : { *(.hash) } | |
34 | + .dynsym : { *(.dynsym) } | |
35 | + .dynstr : { *(.dynstr) } | |
36 | + .rel.text : { *(.rel.text) } | |
37 | + .rela.text : { *(.rela.text) } | |
38 | + .rel.data : { *(.rel.data) } | |
39 | + .rela.data : { *(.rela.data) } | |
40 | + .rel.rodata : { *(.rel.rodata) } | |
41 | + .rela.rodata : { *(.rela.rodata) } | |
42 | + .rel.got : { *(.rel.got) } | |
43 | + .rela.got : { *(.rela.got) } | |
44 | + .rel.ctors : { *(.rel.ctors) } | |
45 | + .rela.ctors : { *(.rela.ctors) } | |
46 | + .rel.dtors : { *(.rel.dtors) } | |
47 | + .rela.dtors : { *(.rela.dtors) } | |
48 | + .rel.bss : { *(.rel.bss) } | |
49 | + .rela.bss : { *(.rela.bss) } | |
50 | + .rel.plt : { *(.rel.plt) } | |
51 | + .rela.plt : { *(.rela.plt) } | |
52 | + .init : { *(.init) } | |
53 | + .plt : { *(.plt) } | |
54 | + .text : | |
55 | + { | |
56 | + cpu/mpc5xxx/start.o (.text) | |
57 | + *(.text) | |
58 | + *(.fixup) | |
59 | + *(.got1) | |
60 | + . = ALIGN(16); | |
61 | + *(.rodata) | |
62 | + *(.rodata1) | |
63 | + *(.rodata.str1.4) | |
64 | + } | |
65 | + .fini : { *(.fini) } =0 | |
66 | + .ctors : { *(.ctors) } | |
67 | + .dtors : { *(.dtors) } | |
68 | + | |
69 | + /* Read-write section, merged into data segment: */ | |
70 | + . = (. + 0x0FFF) & 0xFFFFF000; | |
71 | + _erotext = .; | |
72 | + PROVIDE (erotext = .); | |
73 | + .reloc : | |
74 | + { | |
75 | + *(.got) | |
76 | + _GOT2_TABLE_ = .; | |
77 | + *(.got2) | |
78 | + _FIXUP_TABLE_ = .; | |
79 | + *(.fixup) | |
80 | + } | |
81 | + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2; | |
82 | + __fixup_entries = (. - _FIXUP_TABLE_) >> 2; | |
83 | + | |
84 | + .data : | |
85 | + { | |
86 | + *(.data) | |
87 | + *(.data1) | |
88 | + *(.sdata) | |
89 | + *(.sdata2) | |
90 | + *(.dynamic) | |
91 | + CONSTRUCTORS | |
92 | + } | |
93 | + _edata = .; | |
94 | + PROVIDE (edata = .); | |
95 | + | |
96 | + __u_boot_cmd_start = .; | |
97 | + .u_boot_cmd : { *(.u_boot_cmd) } | |
98 | + __u_boot_cmd_end = .; | |
99 | + | |
100 | + | |
101 | + __start___ex_table = .; | |
102 | + __ex_table : { *(__ex_table) } | |
103 | + __stop___ex_table = .; | |
104 | + | |
105 | + . = ALIGN(4096); | |
106 | + __init_begin = .; | |
107 | + .text.init : { *(.text.init) } | |
108 | + .data.init : { *(.data.init) } | |
109 | + . = ALIGN(4096); | |
110 | + __init_end = .; | |
111 | + | |
112 | + __bss_start = .; | |
113 | + .bss : | |
114 | + { | |
115 | + *(.sbss) *(.scommon) | |
116 | + *(.dynbss) | |
117 | + *(.bss) | |
118 | + *(COMMON) | |
119 | + } | |
120 | + _end = . ; | |
121 | + PROVIDE (end = .); | |
122 | +} |
cpu/mpc5xxx/fec.c
... | ... | @@ -397,7 +397,13 @@ |
397 | 397 | */ |
398 | 398 | if (fec->xcv_type == SEVENWIRE) { |
399 | 399 | /* 10MBit with 7-wire operation */ |
400 | +#if defined(CONFIG_TOTAL5200) | |
401 | + /* 7-wire and USB2 on Ethernet */ | |
402 | + *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= 0x00030000; | |
403 | +#else /* !CONFIG_TOTAL5200 */ | |
404 | + /* 7-wire only */ | |
400 | 405 | *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= 0x00020000; |
406 | +#endif /* CONFIG_TOTAL5200 */ | |
401 | 407 | } else { |
402 | 408 | /* 100MBit with MD operation */ |
403 | 409 | *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= 0x00050000; |
... | ... | @@ -870,6 +876,8 @@ |
870 | 876 | # else |
871 | 877 | fec->xcv_type = MII10; |
872 | 878 | # endif |
879 | +#elif defined(CONFIG_TOTAL5200) | |
880 | + fec->xcv_type = SEVENWIRE; | |
873 | 881 | #else |
874 | 882 | #error fec->xcv_type not initialized. |
875 | 883 | #endif |
cpu/mpc5xxx/ide.c
... | ... | @@ -41,7 +41,13 @@ |
41 | 41 | struct mpc5xxx_sdma *psdma = (struct mpc5xxx_sdma *) MPC5XXX_SDMA; |
42 | 42 | |
43 | 43 | reg = *(vu_long *) MPC5XXX_GPS_PORT_CONFIG; |
44 | +#if defined(CONFIG_TOTAL5200) | |
45 | + /* ATA cs0/1 on i2c2 clk/io */ | |
46 | + reg = (reg & ~0x03000000ul) | 0x02000000ul; | |
47 | +#else | |
48 | + /* ATA cs0/1 on Local Plus cs4/5 */ | |
44 | 49 | reg = (reg & ~0x03000000ul) | 0x01000000ul; |
50 | +#endif /* CONFIG_TOTAL5200 */ | |
45 | 51 | *(vu_long *) MPC5XXX_GPS_PORT_CONFIG = reg; |
46 | 52 | |
47 | 53 | /* All sample codes do that... */ |
cpu/mpc5xxx/start.S
... | ... | @@ -110,6 +110,9 @@ |
110 | 110 | #if defined(CFG_RAMBOOT) |
111 | 111 | #error CFG_LOWBOOT is incompatible with CFG_RAMBOOT |
112 | 112 | #endif /* CFG_RAMBOOT */ |
113 | +#if defined(CFG_LOWBOOT) | |
114 | +#error CFG_LOWBOOT is incompatible with MGT5100 | |
115 | +#endif /* CFG_LOWBOOT */ | |
113 | 116 | lis r4, CFG_DEFAULT_MBAR@h |
114 | 117 | lis r3, START_REG(CFG_BOOTCS_START)@h |
115 | 118 | ori r3, r3, START_REG(CFG_BOOTCS_START)@l |
include/configs/Total5200.h
1 | +/* | |
2 | + * (C) Copyright 2003-2004 | |
3 | + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | + * | |
5 | + * (C) Copyright 2004 | |
6 | + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com. | |
7 | + * | |
8 | + * See file CREDITS for list of people who contributed to this | |
9 | + * project. | |
10 | + * | |
11 | + * This program is free software; you can redistribute it and/or | |
12 | + * modify it under the terms of the GNU General Public License as | |
13 | + * published by the Free Software Foundation; either version 2 of | |
14 | + * the License, or (at your option) any later version. | |
15 | + * | |
16 | + * This program is distributed in the hope that it will be useful, | |
17 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | + * GNU General Public License for more details. | |
20 | + * | |
21 | + * You should have received a copy of the GNU General Public License | |
22 | + * along with this program; if not, write to the Free Software | |
23 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
24 | + * MA 02111-1307 USA | |
25 | + */ | |
26 | + | |
27 | +#ifndef __CONFIG_H | |
28 | +#define __CONFIG_H | |
29 | + | |
30 | +/* | |
31 | + * Check valid setting of revision define. | |
32 | + * Total5100 and Total5200 Rev.1 are identical except for the processor. | |
33 | + */ | |
34 | +#if (CONFIG_TOTAL5200_REV!=1 && CONFIG_TOTAL5200_REV!=2) | |
35 | +#error CONFIG_TOTAL5200_REV must be 1 or 2 | |
36 | +#endif | |
37 | + | |
38 | +/* | |
39 | + * High Level Configuration Options | |
40 | + * (easy to change) | |
41 | + */ | |
42 | + | |
43 | +#define CONFIG_MPC5xxx 1 /* This is an MPC5xxx CPU */ | |
44 | +#define CONFIG_TOTAL5200 1 /* ... on Total5200 board */ | |
45 | + | |
46 | +#define CFG_MPC5XXX_CLKIN 33000000 /* ... running at 33.000000MHz */ | |
47 | + | |
48 | +#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */ | |
49 | +#define BOOTFLAG_WARM 0x02 /* Software reboot */ | |
50 | + | |
51 | +#define CFG_CACHELINE_SIZE 32 /* For MPC5xxx CPUs */ | |
52 | +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) | |
53 | +# define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */ | |
54 | +#endif | |
55 | + | |
56 | +/* | |
57 | + * Serial console configuration | |
58 | + */ | |
59 | +#define CONFIG_PSC_CONSOLE 3 /* console is on PSC3 */ | |
60 | +#define CONFIG_BAUDRATE 115200 /* ... at 115200 bps */ | |
61 | +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, 230400 } | |
62 | + | |
63 | + | |
64 | +#ifdef CONFIG_MPC5200 /* MGT5100 PCI is not supported yet. */ | |
65 | +/* | |
66 | + * PCI Mapping: | |
67 | + * 0x40000000 - 0x4fffffff - PCI Memory | |
68 | + * 0x50000000 - 0x50ffffff - PCI IO Space | |
69 | + */ | |
70 | +#define CONFIG_PCI 1 | |
71 | +#define CONFIG_PCI_PNP 1 | |
72 | +#define CONFIG_PCI_SCAN_SHOW 1 | |
73 | + | |
74 | +#define CONFIG_PCI_MEM_BUS 0x40000000 | |
75 | +#define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS | |
76 | +#define CONFIG_PCI_MEM_SIZE 0x10000000 | |
77 | + | |
78 | +#define CONFIG_PCI_IO_BUS 0x50000000 | |
79 | +#define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS | |
80 | +#define CONFIG_PCI_IO_SIZE 0x01000000 | |
81 | + | |
82 | +#define CONFIG_NET_MULTI 1 | |
83 | +#define CONFIG_EEPRO100 1 | |
84 | +#define CFG_RX_ETH_BUFFER 8 /* use 8 rx buffer on eepro100 */ | |
85 | +#define CONFIG_NS8382X 1 | |
86 | + | |
87 | +#define ADD_PCI_CMD CFG_CMD_PCI | |
88 | + | |
89 | +#else /* MGT5100 */ | |
90 | + | |
91 | +#define ADD_PCI_CMD 0 /* no CFG_CMD_PCI */ | |
92 | + | |
93 | +#endif | |
94 | + | |
95 | +/* Partitions */ | |
96 | +#define CONFIG_MAC_PARTITION | |
97 | +#define CONFIG_DOS_PARTITION | |
98 | + | |
99 | +/* USB */ | |
100 | +#if 1 | |
101 | +#define CONFIG_USB_OHCI | |
102 | +#define ADD_USB_CMD CFG_CMD_USB | CFG_CMD_FAT | |
103 | +#define CONFIG_USB_STORAGE | |
104 | +#else | |
105 | +#define ADD_USB_CMD 0 | |
106 | +#endif | |
107 | + | |
108 | +/* | |
109 | + * Supported commands | |
110 | + */ | |
111 | +#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \ | |
112 | + CFG_CMD_PING | \ | |
113 | + CFG_CMD_I2C | \ | |
114 | + CFG_CMD_EEPROM | \ | |
115 | + CFG_CMD_FAT | \ | |
116 | + CFG_CMD_IDE | \ | |
117 | + ADD_PCI_CMD | \ | |
118 | + ADD_USB_CMD) | |
119 | + | |
120 | +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ | |
121 | +#include <cmd_confdefs.h> | |
122 | + | |
123 | +#if (TEXT_BASE == 0xFE000000) /* Boot low */ | |
124 | +# define CFG_LOWBOOT 1 | |
125 | +#endif | |
126 | + | |
127 | +/* | |
128 | + * Autobooting | |
129 | + */ | |
130 | +#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ | |
131 | + | |
132 | +#define CONFIG_PREBOOT "echo;" \ | |
133 | + "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \ | |
134 | + "echo" | |
135 | + | |
136 | +#undef CONFIG_BOOTARGS | |
137 | + | |
138 | +#define CONFIG_EXTRA_ENV_SETTINGS \ | |
139 | + "netdev=eth0\0" \ | |
140 | + "nfsargs=setenv bootargs root=/dev/nfs rw " \ | |
141 | + "nfsroot=$(serverip):$(rootpath)\0" \ | |
142 | + "ramargs=setenv bootargs root=/dev/ram rw\0" \ | |
143 | + "addip=setenv bootargs $(bootargs) " \ | |
144 | + "ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask)" \ | |
145 | + ":$(hostname):$(netdev):off panic=1\0" \ | |
146 | + "flash_nfs=run nfsargs addip;" \ | |
147 | + "bootm $(kernel_addr)\0" \ | |
148 | + "flash_self=run ramargs addip;" \ | |
149 | + "bootm $(kernel_addr) $(ramdisk_addr)\0" \ | |
150 | + "net_nfs=tftp 200000 $(bootfile);run nfsargs addip;bootm\0" \ | |
151 | + "rootpath=/opt/eldk/ppc_82xx\0" \ | |
152 | + "bootfile=/tftpboot/MPC5200/uImage\0" \ | |
153 | + "" | |
154 | + | |
155 | +#define CONFIG_BOOTCOMMAND "run flash_self" | |
156 | + | |
157 | +#if defined(CONFIG_MPC5200) | |
158 | +/* | |
159 | + * IPB Bus clocking configuration. | |
160 | + */ | |
161 | +#undef CFG_IPBSPEED_133 /* define for 133MHz speed */ | |
162 | +#endif | |
163 | + | |
164 | +/* | |
165 | + * I2C configuration | |
166 | + */ | |
167 | +#define CONFIG_HARD_I2C 1 /* I2C with hardware support */ | |
168 | +#define CFG_I2C_MODULE 1 /* Select I2C module #1 or #2 */ | |
169 | + | |
170 | +#define CFG_I2C_SPEED 100000 /* 100 kHz */ | |
171 | +#define CFG_I2C_SLAVE 0x7F | |
172 | + | |
173 | +/* | |
174 | + * EEPROM configuration | |
175 | + */ | |
176 | +#define CFG_I2C_EEPROM_ADDR 0x50 /* 1010000x */ | |
177 | +#define CFG_I2C_EEPROM_ADDR_LEN 1 | |
178 | +#define CFG_EEPROM_PAGE_WRITE_BITS 3 | |
179 | +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 70 | |
180 | + | |
181 | +/* | |
182 | + * Flash configuration | |
183 | + */ | |
184 | +#define CFG_FLASH_CFI 1 /* Flash is CFI conformant */ | |
185 | +#define CFG_FLASH_CFI_DRIVER 1 /* Use the common driver */ | |
186 | +#if CONFIG_TOTAL5200_REV==2 | |
187 | +# define CFG_MAX_FLASH_BANKS 3 /* max num of flash banks */ | |
188 | +# define CFG_FLASH_BANKS_LIST { CFG_CS5_START, CFG_CS4_START, CFG_BOOTCS_START } | |
189 | +#else | |
190 | +# define CFG_MAX_FLASH_BANKS 1 /* max num of flash banks */ | |
191 | +# define CFG_FLASH_BANKS_LIST { CFG_BOOTCS_START } | |
192 | +#endif | |
193 | +#define CFG_FLASH_EMPTY_INFO | |
194 | +#define CFG_MAX_FLASH_SECT 128 /* max num of sects on one chip */ | |
195 | + | |
196 | +#if CONFIG_TOTAL5200_REV==1 | |
197 | +# define CFG_FLASH_BASE 0xFE000000 | |
198 | +# define CFG_FLASH_SIZE 0x02000000 | |
199 | +#elif CONFIG_TOTAL5200_REV==2 | |
200 | +# define CFG_FLASH_BASE 0xFA000000 | |
201 | +# define CFG_FLASH_SIZE 0x06000000 | |
202 | +#endif /* CONFIG_TOTAL5200_REV */ | |
203 | + | |
204 | +#if !defined(CFG_LOWBOOT) | |
205 | +# define CFG_ENV_ADDR 0xFE040000 | |
206 | +#else /* CFG_LOWBOOT */ | |
207 | +# define CFG_ENV_ADDR 0xFFF40000 | |
208 | +#endif /* CFG_LOWBOOT */ | |
209 | + | |
210 | +/* | |
211 | + * Environment settings | |
212 | + */ | |
213 | +#define CFG_ENV_IS_IN_FLASH 1 | |
214 | +#define CFG_ENV_SIZE 0x40000 | |
215 | +#define CFG_ENV_SECT_SIZE 0x40000 | |
216 | +#define CONFIG_ENV_OVERWRITE 1 | |
217 | + | |
218 | +/* | |
219 | + * Memory map | |
220 | + */ | |
221 | +#define CFG_SDRAM_BASE 0x00000000 | |
222 | +#define CFG_DEFAULT_MBAR 0x80000000 | |
223 | +#define CFG_MBAR 0xF0000000 /* 64 kB */ | |
224 | +#define CFG_FPGA_BASE 0xF0010000 /* 64 kB */ | |
225 | +#define CFG_CPLD_BASE 0xF0020000 /* 64 kB */ | |
226 | +#define CFG_LCD_BASE 0xF0100000 /* 2048 kB */ | |
227 | + | |
228 | +/* Use SRAM until RAM will be available */ | |
229 | +#define CFG_INIT_RAM_ADDR MPC5XXX_SRAM | |
230 | +#define CFG_INIT_RAM_END MPC5XXX_SRAM_SIZE /* End of used area in DPRAM */ | |
231 | + | |
232 | +#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ | |
233 | +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) | |
234 | +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET | |
235 | + | |
236 | +#define CFG_MONITOR_BASE TEXT_BASE | |
237 | +#if (CFG_MONITOR_BASE < CFG_FLASH_BASE) | |
238 | +# define CFG_RAMBOOT 1 | |
239 | +#endif | |
240 | + | |
241 | +#define CFG_MONITOR_LEN (192 << 10) /* Reserve 192 kB for Monitor */ | |
242 | +#define CFG_MALLOC_LEN (128 << 10) /* Reserve 128 kB for malloc() */ | |
243 | +#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */ | |
244 | + | |
245 | +/* | |
246 | + * Ethernet configuration | |
247 | + */ | |
248 | +#define CONFIG_MPC5xxx_FEC 1 | |
249 | +/* dummy, 7-wire FEC does not have phy address */ | |
250 | +#define CONFIG_PHY_ADDR 0x00 | |
251 | + | |
252 | +/* | |
253 | + * GPIO configuration | |
254 | + * | |
255 | + * CS1: SDRAM CS1 disabled, gpio_wkup_6 enabled 0 | |
256 | + * Reserved 0 | |
257 | + * ALTs: CAN1/2 on PSC2, SPI on PSC3 00 | |
258 | + * CS7: Interrupt GPIO on PSC3_5 0 | |
259 | + * CS8: Interrupt GPIO on PSC3_4 0 | |
260 | + * ATA: reset default, changed in ATA driver 00 | |
261 | + * IR_USB_CLK: IrDA/USB 48MHz clock gen. int., pin is GPIO 0 | |
262 | + * IRDA: reset default, changed in IrDA driver 000 | |
263 | + * ETHER: reset default, changed in Ethernet driver 0000 | |
264 | + * PCI_DIS: reset default, changed in PCI driver 0 | |
265 | + * USB_SE: reset default, changed in USB driver 0 | |
266 | + * USB: reset default, changed in USB driver 00 | |
267 | + * PSC3: SPI and UART functionality without CD 1100 | |
268 | + * Reserved 0 | |
269 | + * PSC2: CAN1/2 001 | |
270 | + * Reserved 0 | |
271 | + * PSC1: reset default, changed in AC'97 driver 000 | |
272 | + * | |
273 | + */ | |
274 | +#define CFG_GPS_PORT_CONFIG 0x00000C10 | |
275 | + | |
276 | +/* | |
277 | + * Miscellaneous configurable options | |
278 | + */ | |
279 | +#define CFG_LONGHELP /* undef to save memory */ | |
280 | +#define CFG_PROMPT "=> " /* Monitor Command Prompt */ | |
281 | +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) | |
282 | +#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ | |
283 | +#else | |
284 | +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ | |
285 | +#endif | |
286 | +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ | |
287 | +#define CFG_MAXARGS 16 /* max number of command args */ | |
288 | +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ | |
289 | + | |
290 | +#define CFG_MEMTEST_START 0x00100000 /* memtest works on */ | |
291 | +#define CFG_MEMTEST_END 0x00f00000 /* 1 ... 15 MB in DRAM */ | |
292 | + | |
293 | +#define CFG_LOAD_ADDR 0x100000 /* default load address */ | |
294 | + | |
295 | +#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */ | |
296 | + | |
297 | +/* | |
298 | + * Various low-level settings | |
299 | + */ | |
300 | +#if defined(CONFIG_MPC5200) | |
301 | +#define CFG_HID0_INIT HID0_ICE | HID0_ICFI | |
302 | +#define CFG_HID0_FINAL HID0_ICE | |
303 | +#else | |
304 | +#define CFG_HID0_INIT 0 | |
305 | +#define CFG_HID0_FINAL 0 | |
306 | +#endif | |
307 | + | |
308 | +#if defined (CONFIG_MGT5100) | |
309 | +# define CONFIG_BOARD_EARLY_INIT_R /* switch from CS_BOOT to CS0 */ | |
310 | +#endif | |
311 | + | |
312 | +#if CONFIG_TOTAL5200_REV==1 | |
313 | +# define CFG_BOOTCS_START CFG_FLASH_BASE | |
314 | +# define CFG_BOOTCS_SIZE 0x02000000 /* 32 MB */ | |
315 | +# define CFG_BOOTCS_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */ | |
316 | +# define CFG_CS0_START CFG_FLASH_BASE | |
317 | +# define CFG_CS0_SIZE 0x02000000 /* 32 MB */ | |
318 | +#else | |
319 | +# define CFG_BOOTCS_START (CFG_CS4_START + CFG_CS4_SIZE) | |
320 | +# define CFG_BOOTCS_SIZE 0x02000000 /* 32 MB */ | |
321 | +# define CFG_BOOTCS_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */ | |
322 | +# define CFG_CS4_START (CFG_CS5_START + CFG_CS5_SIZE) | |
323 | +# define CFG_CS4_SIZE 0x02000000 /* 32 MB */ | |
324 | +# define CFG_CS4_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */ | |
325 | +# define CFG_CS5_START CFG_FLASH_BASE | |
326 | +# define CFG_CS5_SIZE 0x02000000 /* 32 MB */ | |
327 | +# define CFG_CS5_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */ | |
328 | +#endif | |
329 | + | |
330 | +#define CFG_CS1_START CFG_FPGA_BASE | |
331 | +#define CFG_CS1_SIZE 0x00010000 /* 64 kB */ | |
332 | +#define CFG_CS1_CFG 0x0019FF00 /* 25WS, MX, AL, AA, CE, AS_25, DS_32 */ | |
333 | + | |
334 | +#define CFG_CS2_START CFG_LCD_BASE | |
335 | +#define CFG_CS2_SIZE 0x00200000 /* 2048 kB */ | |
336 | +#define CFG_CS2_CFG 0x0019FD00 /* 25WS, MX, AL, AA, CE, AS_25, DS_16 */ | |
337 | + | |
338 | +#if CONFIG_TOTAL5200_REV==1 | |
339 | +# define CFG_CS3_START CFG_CPLD_BASE | |
340 | +# define CFG_CS3_SIZE 0x00010000 /* 64 kB */ | |
341 | +# define CFG_CS3_CFG 0x000ADF00 /* 10WS, MX, AL, CE, AS_25, DS_32 */ | |
342 | +#else | |
343 | +# define CFG_CS3_START CFG_CPLD_BASE | |
344 | +# define CFG_CS3_SIZE 0x00010000 /* 64 kB */ | |
345 | +# define CFG_CS3_CFG 0x000AD800 /* 10WS, MX, AL, CE, AS_24, DS_8 */ | |
346 | +#endif | |
347 | + | |
348 | +#define CFG_CS_BURST 0x00000000 | |
349 | +#define CFG_CS_DEADCYCLE 0x33333333 | |
350 | + | |
351 | +/*----------------------------------------------------------------------- | |
352 | + * USB stuff | |
353 | + *----------------------------------------------------------------------- | |
354 | + */ | |
355 | +#define CONFIG_USB_CLOCK 0x0001BBBB | |
356 | +#define CONFIG_USB_CONFIG 0x00001000 | |
357 | + | |
358 | +/*----------------------------------------------------------------------- | |
359 | + * IDE/ATA stuff Supports IDE harddisk | |
360 | + *----------------------------------------------------------------------- | |
361 | + */ | |
362 | + | |
363 | +#undef CONFIG_IDE_8xx_PCCARD /* Use IDE with PC Card Adapter */ | |
364 | + | |
365 | +#undef CONFIG_IDE_8xx_DIRECT /* Direct IDE not supported */ | |
366 | +#undef CONFIG_IDE_LED /* LED for ide not supported */ | |
367 | + | |
368 | +#define CONFIG_IDE_RESET /* reset for ide supported */ | |
369 | +#define CONFIG_IDE_PREINIT | |
370 | + | |
371 | +#define CFG_IDE_MAXBUS 1 /* max. 1 IDE bus */ | |
372 | +#define CFG_IDE_MAXDEVICE 1 /* max. 1 drive per IDE bus */ | |
373 | + | |
374 | +#define CFG_ATA_IDE0_OFFSET 0x0000 | |
375 | + | |
376 | +#define CFG_ATA_BASE_ADDR MPC5XXX_ATA | |
377 | + | |
378 | +/* Offset for data I/O */ | |
379 | +#define CFG_ATA_DATA_OFFSET (0x0060) | |
380 | + | |
381 | +/* Offset for normal register accesses */ | |
382 | +#define CFG_ATA_REG_OFFSET (CFG_ATA_DATA_OFFSET) | |
383 | + | |
384 | +/* Offset for alternate registers */ | |
385 | +#define CFG_ATA_ALT_OFFSET (0x005C) | |
386 | + | |
387 | +/* Interval between registers */ | |
388 | +#define CFG_ATA_STRIDE 4 | |
389 | + | |
390 | +#endif /* __CONFIG_H */ |
include/mpc5xxx.h
... | ... | @@ -165,6 +165,23 @@ |
165 | 165 | /* GPIO registers */ |
166 | 166 | #define MPC5XXX_GPS_PORT_CONFIG (MPC5XXX_GPIO + 0x0000) |
167 | 167 | |
168 | +/* Standard GPIO registers (simple, output only and simple interrupt */ | |
169 | +#define MPC5XXX_GPIO_ENABLE (MPC5XXX_GPIO + 0x0004) | |
170 | +#define MPC5XXX_GPIO_ODE (MPC5XXX_GPIO + 0x0008) | |
171 | +#define MPC5XXX_GPIO_DIR (MPC5XXX_GPIO + 0x000c) | |
172 | +#define MPC5XXX_GPIO_DATA_O (MPC5XXX_GPIO + 0x0010) | |
173 | +#define MPC5XXX_GPIO_DATA_I (MPC5XXX_GPIO + 0x0014) | |
174 | +#define MPC5XXX_GPIO_OO_ENABLE (MPC5XXX_GPIO + 0x0018) | |
175 | +#define MPC5XXX_GPIO_OO_DATA (MPC5XXX_GPIO + 0x001C) | |
176 | +#define MPC5XXX_GPIO_SI_ENABLE (MPC5XXX_GPIO + 0x0020) | |
177 | +#define MPC5XXX_GPIO_SI_ODE (MPC5XXX_GPIO + 0x0024) | |
178 | +#define MPC5XXX_GPIO_SI_DIR (MPC5XXX_GPIO + 0x0028) | |
179 | +#define MPC5XXX_GPIO_SI_DATA (MPC5XXX_GPIO + 0x002C) | |
180 | +#define MPC5XXX_GPIO_SI_IEN (MPC5XXX_GPIO + 0x0030) | |
181 | +#define MPC5XXX_GPIO_SI_ITYPE (MPC5XXX_GPIO + 0x0034) | |
182 | +#define MPC5XXX_GPIO_SI_MEN (MPC5XXX_GPIO + 0x0038) | |
183 | +#define MPC5XXX_GPIO_SI_STATUS (MPC5XXX_GPIO + 0x003C) | |
184 | + | |
168 | 185 | /* WakeUp GPIO registers */ |
169 | 186 | #define MPC5XXX_WU_GPIO_ENABLE (MPC5XXX_WU_GPIO + 0x0000) |
170 | 187 | #define MPC5XXX_WU_GPIO_ODE (MPC5XXX_WU_GPIO + 0x0004) |