diff options
Diffstat (limited to 'arch/powerpc/boot')
90 files changed, 6467 insertions, 2082 deletions
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore index eec7af7e5993..65f4118cbe78 100644 --- a/arch/powerpc/boot/.gitignore +++ b/arch/powerpc/boot/.gitignore | |||
@@ -18,14 +18,15 @@ kernel-vmlinux.strip.c | |||
18 | kernel-vmlinux.strip.gz | 18 | kernel-vmlinux.strip.gz |
19 | mktree | 19 | mktree |
20 | uImage | 20 | uImage |
21 | cuImage | 21 | cuImage.* |
22 | cuImage.bin.gz | 22 | treeImage.* |
23 | cuImage.elf | ||
24 | zImage | 23 | zImage |
24 | zImage.bin.* | ||
25 | zImage.chrp | 25 | zImage.chrp |
26 | zImage.coff | 26 | zImage.coff |
27 | zImage.coff.lds | 27 | zImage.coff.lds |
28 | zImage.lds | 28 | zImage.ep* |
29 | zImage.*lds | ||
29 | zImage.miboot | 30 | zImage.miboot |
30 | zImage.pmac | 31 | zImage.pmac |
31 | zImage.pseries | 32 | zImage.pseries |
diff --git a/arch/powerpc/boot/44x.c b/arch/powerpc/boot/44x.c deleted file mode 100644 index 9f64e840bef6..000000000000 --- a/arch/powerpc/boot/44x.c +++ /dev/null | |||
@@ -1,85 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2007 David Gibson, IBM Corporation. | ||
3 | * | ||
4 | * Based on earlier code: | ||
5 | * Matt Porter <mporter@kernel.crashing.org> | ||
6 | * Copyright 2002-2005 MontaVista Software Inc. | ||
7 | * | ||
8 | * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
9 | * Copyright (c) 2003, 2004 Zultys Technologies | ||
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 | ||
13 | * as published by the Free Software Foundation; either version | ||
14 | * 2 of the License, or (at your option) any later version. | ||
15 | */ | ||
16 | #include <stddef.h> | ||
17 | #include "types.h" | ||
18 | #include "string.h" | ||
19 | #include "stdio.h" | ||
20 | #include "ops.h" | ||
21 | #include "reg.h" | ||
22 | #include "dcr.h" | ||
23 | |||
24 | /* Read the 44x memory controller to get size of system memory. */ | ||
25 | void ibm44x_fixup_memsize(void) | ||
26 | { | ||
27 | int i; | ||
28 | unsigned long memsize, bank_config; | ||
29 | |||
30 | memsize = 0; | ||
31 | for (i = 0; i < ARRAY_SIZE(sdram_bxcr); i++) { | ||
32 | mtdcr(DCRN_SDRAM0_CFGADDR, sdram_bxcr[i]); | ||
33 | bank_config = mfdcr(DCRN_SDRAM0_CFGDATA); | ||
34 | |||
35 | if (bank_config & SDRAM_CONFIG_BANK_ENABLE) | ||
36 | memsize += SDRAM_CONFIG_BANK_SIZE(bank_config); | ||
37 | } | ||
38 | |||
39 | dt_fixup_memory(0, memsize); | ||
40 | } | ||
41 | |||
42 | #define SPRN_DBCR0 0x134 | ||
43 | #define DBCR0_RST_SYSTEM 0x30000000 | ||
44 | |||
45 | void ibm44x_dbcr_reset(void) | ||
46 | { | ||
47 | unsigned long tmp; | ||
48 | |||
49 | asm volatile ( | ||
50 | "mfspr %0,%1\n" | ||
51 | "oris %0,%0,%2@h\n" | ||
52 | "mtspr %1,%0" | ||
53 | : "=&r"(tmp) : "i"(SPRN_DBCR0), "i"(DBCR0_RST_SYSTEM) | ||
54 | ); | ||
55 | |||
56 | } | ||
57 | |||
58 | /* Read 4xx EBC bus bridge registers to get mappings of the peripheral | ||
59 | * banks into the OPB address space */ | ||
60 | void ibm4xx_fixup_ebc_ranges(const char *ebc) | ||
61 | { | ||
62 | void *devp; | ||
63 | u32 bxcr; | ||
64 | u32 ranges[EBC_NUM_BANKS*4]; | ||
65 | u32 *p = ranges; | ||
66 | int i; | ||
67 | |||
68 | for (i = 0; i < EBC_NUM_BANKS; i++) { | ||
69 | mtdcr(DCRN_EBC0_CFGADDR, EBC_BXCR(i)); | ||
70 | bxcr = mfdcr(DCRN_EBC0_CFGDATA); | ||
71 | |||
72 | if ((bxcr & EBC_BXCR_BU) != EBC_BXCR_BU_OFF) { | ||
73 | *p++ = i; | ||
74 | *p++ = 0; | ||
75 | *p++ = bxcr & EBC_BXCR_BAS; | ||
76 | *p++ = EBC_BXCR_BANK_SIZE(bxcr); | ||
77 | } | ||
78 | } | ||
79 | |||
80 | devp = finddevice(ebc); | ||
81 | if (! devp) | ||
82 | fatal("Couldn't locate EBC node %s\n\r", ebc); | ||
83 | |||
84 | setprop(devp, "ranges", ranges, (p - ranges) * sizeof(u32)); | ||
85 | } | ||
diff --git a/arch/powerpc/boot/44x.h b/arch/powerpc/boot/44x.h index 577982c9a3cd..02563443788a 100644 --- a/arch/powerpc/boot/44x.h +++ b/arch/powerpc/boot/44x.h | |||
@@ -10,10 +10,7 @@ | |||
10 | #ifndef _PPC_BOOT_44X_H_ | 10 | #ifndef _PPC_BOOT_44X_H_ |
11 | #define _PPC_BOOT_44X_H_ | 11 | #define _PPC_BOOT_44X_H_ |
12 | 12 | ||
13 | void ibm44x_fixup_memsize(void); | ||
14 | void ibm4xx_fixup_ebc_ranges(const char *ebc); | ||
15 | |||
16 | void ibm44x_dbcr_reset(void); | ||
17 | void ebony_init(void *mac0, void *mac1); | 13 | void ebony_init(void *mac0, void *mac1); |
14 | void bamboo_init(void *mac0, void *mac1); | ||
18 | 15 | ||
19 | #endif /* _PPC_BOOT_44X_H_ */ | 16 | #endif /* _PPC_BOOT_44X_H_ */ |
diff --git a/arch/powerpc/boot/4xx.c b/arch/powerpc/boot/4xx.c new file mode 100644 index 000000000000..ebf9e217612d --- /dev/null +++ b/arch/powerpc/boot/4xx.c | |||
@@ -0,0 +1,300 @@ | |||
1 | /* | ||
2 | * Copyright 2007 David Gibson, IBM Corporation. | ||
3 | * | ||
4 | * Based on earlier code: | ||
5 | * Matt Porter <mporter@kernel.crashing.org> | ||
6 | * Copyright 2002-2005 MontaVista Software Inc. | ||
7 | * | ||
8 | * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
9 | * Copyright (c) 2003, 2004 Zultys Technologies | ||
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 | ||
13 | * as published by the Free Software Foundation; either version | ||
14 | * 2 of the License, or (at your option) any later version. | ||
15 | */ | ||
16 | #include <stddef.h> | ||
17 | #include "types.h" | ||
18 | #include "string.h" | ||
19 | #include "stdio.h" | ||
20 | #include "ops.h" | ||
21 | #include "reg.h" | ||
22 | #include "dcr.h" | ||
23 | |||
24 | /* Read the 4xx SDRAM controller to get size of system memory. */ | ||
25 | void ibm4xx_fixup_memsize(void) | ||
26 | { | ||
27 | int i; | ||
28 | unsigned long memsize, bank_config; | ||
29 | |||
30 | memsize = 0; | ||
31 | for (i = 0; i < ARRAY_SIZE(sdram_bxcr); i++) { | ||
32 | mtdcr(DCRN_SDRAM0_CFGADDR, sdram_bxcr[i]); | ||
33 | bank_config = mfdcr(DCRN_SDRAM0_CFGDATA); | ||
34 | |||
35 | if (bank_config & SDRAM_CONFIG_BANK_ENABLE) | ||
36 | memsize += SDRAM_CONFIG_BANK_SIZE(bank_config); | ||
37 | } | ||
38 | |||
39 | dt_fixup_memory(0, memsize); | ||
40 | } | ||
41 | |||
42 | /* 4xx DDR1/2 Denali memory controller support */ | ||
43 | /* DDR0 registers */ | ||
44 | #define DDR0_02 2 | ||
45 | #define DDR0_08 8 | ||
46 | #define DDR0_10 10 | ||
47 | #define DDR0_14 14 | ||
48 | #define DDR0_42 42 | ||
49 | #define DDR0_43 43 | ||
50 | |||
51 | /* DDR0_02 */ | ||
52 | #define DDR_START 0x1 | ||
53 | #define DDR_START_SHIFT 0 | ||
54 | #define DDR_MAX_CS_REG 0x3 | ||
55 | #define DDR_MAX_CS_REG_SHIFT 24 | ||
56 | #define DDR_MAX_COL_REG 0xf | ||
57 | #define DDR_MAX_COL_REG_SHIFT 16 | ||
58 | #define DDR_MAX_ROW_REG 0xf | ||
59 | #define DDR_MAX_ROW_REG_SHIFT 8 | ||
60 | /* DDR0_08 */ | ||
61 | #define DDR_DDR2_MODE 0x1 | ||
62 | #define DDR_DDR2_MODE_SHIFT 0 | ||
63 | /* DDR0_10 */ | ||
64 | #define DDR_CS_MAP 0x3 | ||
65 | #define DDR_CS_MAP_SHIFT 8 | ||
66 | /* DDR0_14 */ | ||
67 | #define DDR_REDUC 0x1 | ||
68 | #define DDR_REDUC_SHIFT 16 | ||
69 | /* DDR0_42 */ | ||
70 | #define DDR_APIN 0x7 | ||
71 | #define DDR_APIN_SHIFT 24 | ||
72 | /* DDR0_43 */ | ||
73 | #define DDR_COL_SZ 0x7 | ||
74 | #define DDR_COL_SZ_SHIFT 8 | ||
75 | #define DDR_BANK8 0x1 | ||
76 | #define DDR_BANK8_SHIFT 0 | ||
77 | |||
78 | #define DDR_GET_VAL(val, mask, shift) (((val) >> (shift)) & (mask)) | ||
79 | |||
80 | static inline u32 mfdcr_sdram0(u32 reg) | ||
81 | { | ||
82 | mtdcr(DCRN_SDRAM0_CFGADDR, reg); | ||
83 | return mfdcr(DCRN_SDRAM0_CFGDATA); | ||
84 | } | ||
85 | |||
86 | void ibm4xx_denali_fixup_memsize(void) | ||
87 | { | ||
88 | u32 val, max_cs, max_col, max_row; | ||
89 | u32 cs, col, row, bank, dpath; | ||
90 | unsigned long memsize; | ||
91 | |||
92 | val = mfdcr_sdram0(DDR0_02); | ||
93 | if (!DDR_GET_VAL(val, DDR_START, DDR_START_SHIFT)) | ||
94 | fatal("DDR controller is not initialized\n"); | ||
95 | |||
96 | /* get maximum cs col and row values */ | ||
97 | max_cs = DDR_GET_VAL(val, DDR_MAX_CS_REG, DDR_MAX_CS_REG_SHIFT); | ||
98 | max_col = DDR_GET_VAL(val, DDR_MAX_COL_REG, DDR_MAX_COL_REG_SHIFT); | ||
99 | max_row = DDR_GET_VAL(val, DDR_MAX_ROW_REG, DDR_MAX_ROW_REG_SHIFT); | ||
100 | |||
101 | /* get CS value */ | ||
102 | val = mfdcr_sdram0(DDR0_10); | ||
103 | |||
104 | val = DDR_GET_VAL(val, DDR_CS_MAP, DDR_CS_MAP_SHIFT); | ||
105 | cs = 0; | ||
106 | while (val) { | ||
107 | if (val && 0x1) | ||
108 | cs++; | ||
109 | val = val >> 1; | ||
110 | } | ||
111 | |||
112 | if (!cs) | ||
113 | fatal("No memory installed\n"); | ||
114 | if (cs > max_cs) | ||
115 | fatal("DDR wrong CS configuration\n"); | ||
116 | |||
117 | /* get data path bytes */ | ||
118 | val = mfdcr_sdram0(DDR0_14); | ||
119 | |||
120 | if (DDR_GET_VAL(val, DDR_REDUC, DDR_REDUC_SHIFT)) | ||
121 | dpath = 8; /* 64 bits */ | ||
122 | else | ||
123 | dpath = 4; /* 32 bits */ | ||
124 | |||
125 | /* get adress pins (rows) */ | ||
126 | val = mfdcr_sdram0(DDR0_42); | ||
127 | |||
128 | row = DDR_GET_VAL(val, DDR_APIN, DDR_APIN_SHIFT); | ||
129 | if (row > max_row) | ||
130 | fatal("DDR wrong APIN configuration\n"); | ||
131 | row = max_row - row; | ||
132 | |||
133 | /* get collomn size and banks */ | ||
134 | val = mfdcr_sdram0(DDR0_43); | ||
135 | |||
136 | col = DDR_GET_VAL(val, DDR_COL_SZ, DDR_COL_SZ_SHIFT); | ||
137 | if (col > max_col) | ||
138 | fatal("DDR wrong COL configuration\n"); | ||
139 | col = max_col - col; | ||
140 | |||
141 | if (DDR_GET_VAL(val, DDR_BANK8, DDR_BANK8_SHIFT)) | ||
142 | bank = 8; /* 8 banks */ | ||
143 | else | ||
144 | bank = 4; /* 4 banks */ | ||
145 | |||
146 | memsize = cs * (1 << (col+row)) * bank * dpath; | ||
147 | dt_fixup_memory(0, memsize); | ||
148 | } | ||
149 | |||
150 | #define SPRN_DBCR0_40X 0x3F2 | ||
151 | #define SPRN_DBCR0_44X 0x134 | ||
152 | #define DBCR0_RST_SYSTEM 0x30000000 | ||
153 | |||
154 | void ibm44x_dbcr_reset(void) | ||
155 | { | ||
156 | unsigned long tmp; | ||
157 | |||
158 | asm volatile ( | ||
159 | "mfspr %0,%1\n" | ||
160 | "oris %0,%0,%2@h\n" | ||
161 | "mtspr %1,%0" | ||
162 | : "=&r"(tmp) : "i"(SPRN_DBCR0_44X), "i"(DBCR0_RST_SYSTEM) | ||
163 | ); | ||
164 | |||
165 | } | ||
166 | |||
167 | void ibm40x_dbcr_reset(void) | ||
168 | { | ||
169 | unsigned long tmp; | ||
170 | |||
171 | asm volatile ( | ||
172 | "mfspr %0,%1\n" | ||
173 | "oris %0,%0,%2@h\n" | ||
174 | "mtspr %1,%0" | ||
175 | : "=&r"(tmp) : "i"(SPRN_DBCR0_40X), "i"(DBCR0_RST_SYSTEM) | ||
176 | ); | ||
177 | } | ||
178 | |||
179 | #define EMAC_RESET 0x20000000 | ||
180 | void ibm4xx_quiesce_eth(u32 *emac0, u32 *emac1) | ||
181 | { | ||
182 | /* Quiesce the MAL and EMAC(s) since PIBS/OpenBIOS don't do this for us */ | ||
183 | if (emac0) | ||
184 | *emac0 = EMAC_RESET; | ||
185 | if (emac1) | ||
186 | *emac1 = EMAC_RESET; | ||
187 | |||
188 | mtdcr(DCRN_MAL0_CFG, MAL_RESET); | ||
189 | } | ||
190 | |||
191 | /* Read 4xx EBC bus bridge registers to get mappings of the peripheral | ||
192 | * banks into the OPB address space */ | ||
193 | void ibm4xx_fixup_ebc_ranges(const char *ebc) | ||
194 | { | ||
195 | void *devp; | ||
196 | u32 bxcr; | ||
197 | u32 ranges[EBC_NUM_BANKS*4]; | ||
198 | u32 *p = ranges; | ||
199 | int i; | ||
200 | |||
201 | for (i = 0; i < EBC_NUM_BANKS; i++) { | ||
202 | mtdcr(DCRN_EBC0_CFGADDR, EBC_BXCR(i)); | ||
203 | bxcr = mfdcr(DCRN_EBC0_CFGDATA); | ||
204 | |||
205 | if ((bxcr & EBC_BXCR_BU) != EBC_BXCR_BU_OFF) { | ||
206 | *p++ = i; | ||
207 | *p++ = 0; | ||
208 | *p++ = bxcr & EBC_BXCR_BAS; | ||
209 | *p++ = EBC_BXCR_BANK_SIZE(bxcr); | ||
210 | } | ||
211 | } | ||
212 | |||
213 | devp = finddevice(ebc); | ||
214 | if (! devp) | ||
215 | fatal("Couldn't locate EBC node %s\n\r", ebc); | ||
216 | |||
217 | setprop(devp, "ranges", ranges, (p - ranges) * sizeof(u32)); | ||
218 | } | ||
219 | |||
220 | #define SPRN_CCR1 0x378 | ||
221 | void ibm440ep_fixup_clocks(unsigned int sysclk, unsigned int ser_clk) | ||
222 | { | ||
223 | u32 cpu, plb, opb, ebc, tb, uart0, m, vco; | ||
224 | u32 reg; | ||
225 | u32 fwdva, fwdvb, fbdv, lfbdv, opbdv0, perdv0, spcid0, prbdv0, tmp; | ||
226 | |||
227 | mtdcr(DCRN_CPR0_ADDR, CPR0_PLLD0); | ||
228 | reg = mfdcr(DCRN_CPR0_DATA); | ||
229 | tmp = (reg & 0x000F0000) >> 16; | ||
230 | fwdva = tmp ? tmp : 16; | ||
231 | tmp = (reg & 0x00000700) >> 8; | ||
232 | fwdvb = tmp ? tmp : 8; | ||
233 | tmp = (reg & 0x1F000000) >> 24; | ||
234 | fbdv = tmp ? tmp : 32; | ||
235 | lfbdv = (reg & 0x0000007F); | ||
236 | |||
237 | mtdcr(DCRN_CPR0_ADDR, CPR0_OPBD0); | ||
238 | reg = mfdcr(DCRN_CPR0_DATA); | ||
239 | tmp = (reg & 0x03000000) >> 24; | ||
240 | opbdv0 = tmp ? tmp : 4; | ||
241 | |||
242 | mtdcr(DCRN_CPR0_ADDR, CPR0_PERD0); | ||
243 | reg = mfdcr(DCRN_CPR0_DATA); | ||
244 | tmp = (reg & 0x07000000) >> 24; | ||
245 | perdv0 = tmp ? tmp : 8; | ||
246 | |||
247 | mtdcr(DCRN_CPR0_ADDR, CPR0_PRIMBD0); | ||
248 | reg = mfdcr(DCRN_CPR0_DATA); | ||
249 | tmp = (reg & 0x07000000) >> 24; | ||
250 | prbdv0 = tmp ? tmp : 8; | ||
251 | |||
252 | mtdcr(DCRN_CPR0_ADDR, CPR0_SCPID); | ||
253 | reg = mfdcr(DCRN_CPR0_DATA); | ||
254 | tmp = (reg & 0x03000000) >> 24; | ||
255 | spcid0 = tmp ? tmp : 4; | ||
256 | |||
257 | /* Calculate M */ | ||
258 | mtdcr(DCRN_CPR0_ADDR, CPR0_PLLC0); | ||
259 | reg = mfdcr(DCRN_CPR0_DATA); | ||
260 | tmp = (reg & 0x03000000) >> 24; | ||
261 | if (tmp == 0) { /* PLL output */ | ||
262 | tmp = (reg & 0x20000000) >> 29; | ||
263 | if (!tmp) /* PLLOUTA */ | ||
264 | m = fbdv * lfbdv * fwdva; | ||
265 | else | ||
266 | m = fbdv * lfbdv * fwdvb; | ||
267 | } | ||
268 | else if (tmp == 1) /* CPU output */ | ||
269 | m = fbdv * fwdva; | ||
270 | else | ||
271 | m = perdv0 * opbdv0 * fwdvb; | ||
272 | |||
273 | vco = (m * sysclk) + (m >> 1); | ||
274 | cpu = vco / fwdva; | ||
275 | plb = vco / fwdvb / prbdv0; | ||
276 | opb = plb / opbdv0; | ||
277 | ebc = plb / perdv0; | ||
278 | |||
279 | /* FIXME */ | ||
280 | uart0 = ser_clk; | ||
281 | |||
282 | /* Figure out timebase. Either CPU or default TmrClk */ | ||
283 | asm volatile ( | ||
284 | "mfspr %0,%1\n" | ||
285 | : | ||
286 | "=&r"(reg) : "i"(SPRN_CCR1)); | ||
287 | if (reg & 0x0080) | ||
288 | tb = 25000000; /* TmrClk is 25MHz */ | ||
289 | else | ||
290 | tb = cpu; | ||
291 | |||
292 | dt_fixup_cpu_clocks(cpu, tb, 0); | ||
293 | dt_fixup_clock("/plb", plb); | ||
294 | dt_fixup_clock("/plb/opb", opb); | ||
295 | dt_fixup_clock("/plb/opb/ebc", ebc); | ||
296 | dt_fixup_clock("/plb/opb/serial@ef600300", uart0); | ||
297 | dt_fixup_clock("/plb/opb/serial@ef600400", uart0); | ||
298 | dt_fixup_clock("/plb/opb/serial@ef600500", uart0); | ||
299 | dt_fixup_clock("/plb/opb/serial@ef600600", uart0); | ||
300 | } | ||
diff --git a/arch/powerpc/boot/4xx.h b/arch/powerpc/boot/4xx.h new file mode 100644 index 000000000000..adba6a599a93 --- /dev/null +++ b/arch/powerpc/boot/4xx.h | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * PowerPC 4xx related functions | ||
3 | * | ||
4 | * Copyright 2007 IBM Corporation. | ||
5 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public | ||
8 | * License version 2. This program is licensed "as is" without any | ||
9 | * warranty of any kind, whether express or implied. | ||
10 | */ | ||
11 | #ifndef _POWERPC_BOOT_4XX_H_ | ||
12 | #define _POWERPC_BOOT_4XX_H_ | ||
13 | |||
14 | void ibm4xx_fixup_memsize(void); | ||
15 | void ibm4xx_denali_fixup_memsize(void); | ||
16 | void ibm44x_dbcr_reset(void); | ||
17 | void ibm40x_dbcr_reset(void); | ||
18 | void ibm4xx_quiesce_eth(u32 *emac0, u32 *emac1); | ||
19 | void ibm4xx_fixup_ebc_ranges(const char *ebc); | ||
20 | void ibm440ep_fixup_clocks(unsigned int sysclk, unsigned int ser_clk); | ||
21 | |||
22 | #endif /* _POWERPC_BOOT_4XX_H_ */ | ||
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 61a6f34ca5ed..18e32719d0ed 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -25,14 +25,19 @@ BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ | |||
25 | -isystem $(shell $(CROSS32CC) -print-file-name=include) | 25 | -isystem $(shell $(CROSS32CC) -print-file-name=include) |
26 | BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc | 26 | BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc |
27 | 27 | ||
28 | ifdef CONFIG_DEBUG_INFO | ||
29 | BOOTCFLAGS += -g | ||
30 | endif | ||
31 | |||
28 | ifeq ($(call cc-option-yn, -fstack-protector),y) | 32 | ifeq ($(call cc-option-yn, -fstack-protector),y) |
29 | BOOTCFLAGS += -fno-stack-protector | 33 | BOOTCFLAGS += -fno-stack-protector |
30 | endif | 34 | endif |
31 | 35 | ||
32 | BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) | 36 | BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) |
33 | 37 | ||
34 | $(obj)/44x.o: BOOTCFLAGS += -mcpu=440 | 38 | $(obj)/4xx.o: BOOTCFLAGS += -mcpu=440 |
35 | $(obj)/ebony.o: BOOTCFLAGS += -mcpu=440 | 39 | $(obj)/ebony.o: BOOTCFLAGS += -mcpu=440 |
40 | $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 | ||
36 | 41 | ||
37 | zlib := inffast.c inflate.c inftrees.c | 42 | zlib := inffast.c inflate.c inftrees.c |
38 | zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h | 43 | zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h |
@@ -44,10 +49,14 @@ $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \ | |||
44 | src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \ | 49 | src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \ |
45 | ns16550.c serial.c simple_alloc.c div64.S util.S \ | 50 | ns16550.c serial.c simple_alloc.c div64.S util.S \ |
46 | gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \ | 51 | gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \ |
47 | 44x.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c | 52 | 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ |
48 | src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \ | 53 | cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ |
54 | fsl-soc.c mpc8xx.c pq2.c | ||
55 | src-plat := of.c cuboot-52xx.c cuboot-83xx.c cuboot-85xx.c holly.c \ | ||
49 | cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ | 56 | cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ |
50 | ps3-head.S ps3-hvcall.S ps3.c | 57 | ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ |
58 | cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ | ||
59 | fixed-head.S ep88xc.c cuboot-hpc2.c | ||
51 | src-boot := $(src-wlib) $(src-plat) empty.c | 60 | src-boot := $(src-wlib) $(src-plat) empty.c |
52 | 61 | ||
53 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 62 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
@@ -139,9 +148,17 @@ image-$(CONFIG_PPC_ISERIES) += zImage.iseries | |||
139 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage | 148 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage |
140 | 149 | ||
141 | ifneq ($(CONFIG_DEVICE_TREE),"") | 150 | ifneq ($(CONFIG_DEVICE_TREE),"") |
151 | image-$(CONFIG_PPC_8xx) += cuImage.8xx | ||
152 | image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc | ||
153 | image-$(CONFIG_8260) += cuImage.pq2 | ||
154 | image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx | ||
142 | image-$(CONFIG_PPC_83xx) += cuImage.83xx | 155 | image-$(CONFIG_PPC_83xx) += cuImage.83xx |
143 | image-$(CONFIG_PPC_85xx) += cuImage.85xx | 156 | image-$(CONFIG_PPC_85xx) += cuImage.85xx |
157 | image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2 | ||
144 | image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony | 158 | image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony |
159 | image-$(CONFIG_BAMBOO) += treeImage.bamboo cuImage.bamboo | ||
160 | image-$(CONFIG_SEQUOIA) += cuImage.sequoia | ||
161 | image-$(CONFIG_WALNUT) += treeImage.walnut | ||
145 | endif | 162 | endif |
146 | 163 | ||
147 | # For 32-bit powermacs, build the COFF and miboot images | 164 | # For 32-bit powermacs, build the COFF and miboot images |
diff --git a/arch/powerpc/boot/bamboo.c b/arch/powerpc/boot/bamboo.c new file mode 100644 index 000000000000..f61fcdab1c7c --- /dev/null +++ b/arch/powerpc/boot/bamboo.c | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corporation, 2007 | ||
3 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
4 | * | ||
5 | * Based on ebony wrapper: | ||
6 | * Copyright 2007 David Gibson, IBM Corporation. | ||
7 | * | ||
8 | * Clocking code based on code by: | ||
9 | * Stefan Roese <sr@denx.de> | ||
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 | ||
13 | * as published by the Free Software Foundation; version 2 of the License | ||
14 | */ | ||
15 | #include <stdarg.h> | ||
16 | #include <stddef.h> | ||
17 | #include "types.h" | ||
18 | #include "elf.h" | ||
19 | #include "string.h" | ||
20 | #include "stdio.h" | ||
21 | #include "page.h" | ||
22 | #include "ops.h" | ||
23 | #include "dcr.h" | ||
24 | #include "4xx.h" | ||
25 | #include "44x.h" | ||
26 | |||
27 | static u8 *bamboo_mac0, *bamboo_mac1; | ||
28 | |||
29 | static void bamboo_fixups(void) | ||
30 | { | ||
31 | unsigned long sysclk = 33333333; | ||
32 | |||
33 | ibm440ep_fixup_clocks(sysclk, 11059200); | ||
34 | ibm4xx_fixup_memsize(); | ||
35 | ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00); | ||
36 | dt_fixup_mac_addresses(bamboo_mac0, bamboo_mac1); | ||
37 | } | ||
38 | |||
39 | void bamboo_init(void *mac0, void *mac1) | ||
40 | { | ||
41 | platform_ops.fixups = bamboo_fixups; | ||
42 | platform_ops.exit = ibm44x_dbcr_reset; | ||
43 | bamboo_mac0 = mac0; | ||
44 | bamboo_mac1 = mac1; | ||
45 | ft_init(_dtb_start, 0, 32); | ||
46 | serial_console_init(); | ||
47 | } | ||
diff --git a/arch/powerpc/boot/cpm-serial.c b/arch/powerpc/boot/cpm-serial.c new file mode 100644 index 000000000000..28296facb2ae --- /dev/null +++ b/arch/powerpc/boot/cpm-serial.c | |||
@@ -0,0 +1,269 @@ | |||
1 | /* | ||
2 | * CPM serial console support. | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor, Inc. | ||
5 | * Author: Scott Wood <scottwood@freescale.com> | ||
6 | * | ||
7 | * It is assumed that the firmware (or the platform file) has already set | ||
8 | * up the port. | ||
9 | */ | ||
10 | |||
11 | #include "types.h" | ||
12 | #include "io.h" | ||
13 | #include "ops.h" | ||
14 | |||
15 | struct cpm_scc { | ||
16 | u32 gsmrl; | ||
17 | u32 gsmrh; | ||
18 | u16 psmr; | ||
19 | u8 res1[2]; | ||
20 | u16 todr; | ||
21 | u16 dsr; | ||
22 | u16 scce; | ||
23 | u8 res2[2]; | ||
24 | u16 sccm; | ||
25 | u8 res3; | ||
26 | u8 sccs; | ||
27 | u8 res4[8]; | ||
28 | }; | ||
29 | |||
30 | struct cpm_smc { | ||
31 | u8 res1[2]; | ||
32 | u16 smcmr; | ||
33 | u8 res2[2]; | ||
34 | u8 smce; | ||
35 | u8 res3[3]; | ||
36 | u8 smcm; | ||
37 | u8 res4[5]; | ||
38 | }; | ||
39 | |||
40 | struct cpm_param { | ||
41 | u16 rbase; | ||
42 | u16 tbase; | ||
43 | u8 rfcr; | ||
44 | u8 tfcr; | ||
45 | }; | ||
46 | |||
47 | struct cpm_bd { | ||
48 | u16 sc; /* Status and Control */ | ||
49 | u16 len; /* Data length in buffer */ | ||
50 | u8 *addr; /* Buffer address in host memory */ | ||
51 | }; | ||
52 | |||
53 | static void *cpcr; | ||
54 | static struct cpm_param *param; | ||
55 | static struct cpm_smc *smc; | ||
56 | static struct cpm_scc *scc; | ||
57 | struct cpm_bd *tbdf, *rbdf; | ||
58 | static u32 cpm_cmd; | ||
59 | static u8 *muram_start; | ||
60 | static u32 muram_offset; | ||
61 | |||
62 | static void (*do_cmd)(int op); | ||
63 | static void (*enable_port)(void); | ||
64 | static void (*disable_port)(void); | ||
65 | |||
66 | #define CPM_CMD_STOP_TX 4 | ||
67 | #define CPM_CMD_RESTART_TX 6 | ||
68 | #define CPM_CMD_INIT_RX_TX 0 | ||
69 | |||
70 | static void cpm1_cmd(int op) | ||
71 | { | ||
72 | while (in_be16(cpcr) & 1) | ||
73 | ; | ||
74 | |||
75 | out_be16(cpcr, (op << 8) | cpm_cmd | 1); | ||
76 | |||
77 | while (in_be16(cpcr) & 1) | ||
78 | ; | ||
79 | } | ||
80 | |||
81 | static void cpm2_cmd(int op) | ||
82 | { | ||
83 | while (in_be32(cpcr) & 0x10000) | ||
84 | ; | ||
85 | |||
86 | out_be32(cpcr, op | cpm_cmd | 0x10000); | ||
87 | |||
88 | while (in_be32(cpcr) & 0x10000) | ||
89 | ; | ||
90 | } | ||
91 | |||
92 | static void smc_disable_port(void) | ||
93 | { | ||
94 | do_cmd(CPM_CMD_STOP_TX); | ||
95 | out_be16(&smc->smcmr, in_be16(&smc->smcmr) & ~3); | ||
96 | } | ||
97 | |||
98 | static void scc_disable_port(void) | ||
99 | { | ||
100 | do_cmd(CPM_CMD_STOP_TX); | ||
101 | out_be32(&scc->gsmrl, in_be32(&scc->gsmrl) & ~0x30); | ||
102 | } | ||
103 | |||
104 | static void smc_enable_port(void) | ||
105 | { | ||
106 | out_be16(&smc->smcmr, in_be16(&smc->smcmr) | 3); | ||
107 | do_cmd(CPM_CMD_RESTART_TX); | ||
108 | } | ||
109 | |||
110 | static void scc_enable_port(void) | ||
111 | { | ||
112 | out_be32(&scc->gsmrl, in_be32(&scc->gsmrl) | 0x30); | ||
113 | do_cmd(CPM_CMD_RESTART_TX); | ||
114 | } | ||
115 | |||
116 | static int cpm_serial_open(void) | ||
117 | { | ||
118 | disable_port(); | ||
119 | |||
120 | out_8(¶m->rfcr, 0x10); | ||
121 | out_8(¶m->tfcr, 0x10); | ||
122 | |||
123 | rbdf = (struct cpm_bd *)muram_start; | ||
124 | rbdf->addr = (u8 *)(rbdf + 2); | ||
125 | rbdf->sc = 0xa000; | ||
126 | rbdf->len = 1; | ||
127 | |||
128 | tbdf = rbdf + 1; | ||
129 | tbdf->addr = (u8 *)(rbdf + 2) + 1; | ||
130 | tbdf->sc = 0x2000; | ||
131 | tbdf->len = 1; | ||
132 | |||
133 | sync(); | ||
134 | out_be16(¶m->rbase, muram_offset); | ||
135 | out_be16(¶m->tbase, muram_offset + sizeof(struct cpm_bd)); | ||
136 | |||
137 | do_cmd(CPM_CMD_INIT_RX_TX); | ||
138 | |||
139 | enable_port(); | ||
140 | return 0; | ||
141 | } | ||
142 | |||
143 | static void cpm_serial_putc(unsigned char c) | ||
144 | { | ||
145 | while (tbdf->sc & 0x8000) | ||
146 | barrier(); | ||
147 | |||
148 | sync(); | ||
149 | |||
150 | tbdf->addr[0] = c; | ||
151 | eieio(); | ||
152 | tbdf->sc |= 0x8000; | ||
153 | } | ||
154 | |||
155 | static unsigned char cpm_serial_tstc(void) | ||
156 | { | ||
157 | barrier(); | ||
158 | return !(rbdf->sc & 0x8000); | ||
159 | } | ||
160 | |||
161 | static unsigned char cpm_serial_getc(void) | ||
162 | { | ||
163 | unsigned char c; | ||
164 | |||
165 | while (!cpm_serial_tstc()) | ||
166 | ; | ||
167 | |||
168 | sync(); | ||
169 | c = rbdf->addr[0]; | ||
170 | eieio(); | ||
171 | rbdf->sc |= 0x8000; | ||
172 | |||
173 | return c; | ||
174 | } | ||
175 | |||
176 | int cpm_console_init(void *devp, struct serial_console_data *scdp) | ||
177 | { | ||
178 | void *reg_virt[2]; | ||
179 | int is_smc = 0, is_cpm2 = 0, n; | ||
180 | unsigned long reg_phys; | ||
181 | void *parent, *muram; | ||
182 | |||
183 | if (dt_is_compatible(devp, "fsl,cpm1-smc-uart")) { | ||
184 | is_smc = 1; | ||
185 | } else if (dt_is_compatible(devp, "fsl,cpm2-scc-uart")) { | ||
186 | is_cpm2 = 1; | ||
187 | } else if (dt_is_compatible(devp, "fsl,cpm2-smc-uart")) { | ||
188 | is_cpm2 = 1; | ||
189 | is_smc = 1; | ||
190 | } | ||
191 | |||
192 | if (is_smc) { | ||
193 | enable_port = smc_enable_port; | ||
194 | disable_port = smc_disable_port; | ||
195 | } else { | ||
196 | enable_port = scc_enable_port; | ||
197 | disable_port = scc_disable_port; | ||
198 | } | ||
199 | |||
200 | if (is_cpm2) | ||
201 | do_cmd = cpm2_cmd; | ||
202 | else | ||
203 | do_cmd = cpm1_cmd; | ||
204 | |||
205 | n = getprop(devp, "fsl,cpm-command", &cpm_cmd, 4); | ||
206 | if (n < 4) | ||
207 | return -1; | ||
208 | |||
209 | n = getprop(devp, "virtual-reg", reg_virt, sizeof(reg_virt)); | ||
210 | if (n < (int)sizeof(reg_virt)) { | ||
211 | for (n = 0; n < 2; n++) { | ||
212 | if (!dt_xlate_reg(devp, n, ®_phys, NULL)) | ||
213 | return -1; | ||
214 | |||
215 | reg_virt[n] = (void *)reg_phys; | ||
216 | } | ||
217 | } | ||
218 | |||
219 | if (is_smc) | ||
220 | smc = reg_virt[0]; | ||
221 | else | ||
222 | scc = reg_virt[0]; | ||
223 | |||
224 | param = reg_virt[1]; | ||
225 | |||
226 | parent = get_parent(devp); | ||
227 | if (!parent) | ||
228 | return -1; | ||
229 | |||
230 | n = getprop(parent, "virtual-reg", reg_virt, sizeof(reg_virt)); | ||
231 | if (n < (int)sizeof(reg_virt)) { | ||
232 | if (!dt_xlate_reg(parent, 0, ®_phys, NULL)) | ||
233 | return -1; | ||
234 | |||
235 | reg_virt[0] = (void *)reg_phys; | ||
236 | } | ||
237 | |||
238 | cpcr = reg_virt[0]; | ||
239 | |||
240 | muram = finddevice("/soc/cpm/muram/data"); | ||
241 | if (!muram) | ||
242 | return -1; | ||
243 | |||
244 | /* For bootwrapper-compatible device trees, we assume that the first | ||
245 | * entry has at least 18 bytes, and that #address-cells/#data-cells | ||
246 | * is one for both parent and child. | ||
247 | */ | ||
248 | |||
249 | n = getprop(muram, "virtual-reg", reg_virt, sizeof(reg_virt)); | ||
250 | if (n < (int)sizeof(reg_virt)) { | ||
251 | if (!dt_xlate_reg(muram, 0, ®_phys, NULL)) | ||
252 | return -1; | ||
253 | |||
254 | reg_virt[0] = (void *)reg_phys; | ||
255 | } | ||
256 | |||
257 | muram_start = reg_virt[0]; | ||
258 | |||
259 | n = getprop(muram, "reg", &muram_offset, 4); | ||
260 | if (n < 4) | ||
261 | return -1; | ||
262 | |||
263 | scdp->open = cpm_serial_open; | ||
264 | scdp->putc = cpm_serial_putc; | ||
265 | scdp->getc = cpm_serial_getc; | ||
266 | scdp->tstc = cpm_serial_tstc; | ||
267 | |||
268 | return 0; | ||
269 | } | ||
diff --git a/arch/powerpc/boot/cuboot-52xx.c b/arch/powerpc/boot/cuboot-52xx.c new file mode 100644 index 000000000000..9256a26d40e4 --- /dev/null +++ b/arch/powerpc/boot/cuboot-52xx.c | |||
@@ -0,0 +1,59 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for MPC5200 | ||
3 | * | ||
4 | * Author: Grant Likely <grant.likely@secretlab.ca> | ||
5 | * | ||
6 | * Copyright (c) 2007 Secret Lab Technologies Ltd. | ||
7 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify it | ||
10 | * under the terms of the GNU General Public License version 2 as published | ||
11 | * by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include "ops.h" | ||
15 | #include "stdio.h" | ||
16 | #include "io.h" | ||
17 | #include "cuboot.h" | ||
18 | |||
19 | #define TARGET_PPC_MPC52xx | ||
20 | #include "ppcboot.h" | ||
21 | |||
22 | static bd_t bd; | ||
23 | |||
24 | static void platform_fixups(void) | ||
25 | { | ||
26 | void *soc, *reg; | ||
27 | int div; | ||
28 | u32 sysfreq; | ||
29 | |||
30 | |||
31 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | ||
32 | dt_fixup_mac_addresses(bd.bi_enetaddr); | ||
33 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); | ||
34 | |||
35 | /* Unfortunately, the specific model number is encoded in the | ||
36 | * soc node name in existing dts files -- once that is fixed, | ||
37 | * this can do a simple path lookup. | ||
38 | */ | ||
39 | soc = find_node_by_devtype(NULL, "soc"); | ||
40 | if (soc) { | ||
41 | setprop(soc, "bus-frequency", &bd.bi_ipbfreq, | ||
42 | sizeof(bd.bi_ipbfreq)); | ||
43 | |||
44 | if (!dt_xlate_reg(soc, 0, (void*)®, NULL)) | ||
45 | return; | ||
46 | div = in_8(reg + 0x204) & 0x0020 ? 8 : 4; | ||
47 | sysfreq = bd.bi_busfreq * div; | ||
48 | setprop(soc, "system-frequency", &sysfreq, sizeof(sysfreq)); | ||
49 | } | ||
50 | } | ||
51 | |||
52 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
53 | unsigned long r6, unsigned long r7) | ||
54 | { | ||
55 | CUBOOT_INIT(); | ||
56 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | ||
57 | serial_console_init(); | ||
58 | platform_ops.fixups = platform_fixups; | ||
59 | } | ||
diff --git a/arch/powerpc/boot/cuboot-83xx.c b/arch/powerpc/boot/cuboot-83xx.c index 296025d8b295..a0505509abcc 100644 --- a/arch/powerpc/boot/cuboot-83xx.c +++ b/arch/powerpc/boot/cuboot-83xx.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include "ppcboot.h" | 18 | #include "ppcboot.h" |
19 | 19 | ||
20 | static bd_t bd; | 20 | static bd_t bd; |
21 | extern char _dtb_start[], _dtb_end[]; | ||
22 | 21 | ||
23 | static void platform_fixups(void) | 22 | static void platform_fixups(void) |
24 | { | 23 | { |
diff --git a/arch/powerpc/boot/cuboot-85xx.c b/arch/powerpc/boot/cuboot-85xx.c index 10f0f697c935..345dcbecef0f 100644 --- a/arch/powerpc/boot/cuboot-85xx.c +++ b/arch/powerpc/boot/cuboot-85xx.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include "ppcboot.h" | 18 | #include "ppcboot.h" |
19 | 19 | ||
20 | static bd_t bd; | 20 | static bd_t bd; |
21 | extern char _dtb_start[], _dtb_end[]; | ||
22 | 21 | ||
23 | static void platform_fixups(void) | 22 | static void platform_fixups(void) |
24 | { | 23 | { |
diff --git a/arch/powerpc/boot/cuboot-8xx.c b/arch/powerpc/boot/cuboot-8xx.c new file mode 100644 index 000000000000..0e82015a5f95 --- /dev/null +++ b/arch/powerpc/boot/cuboot-8xx.c | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for 8xx | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "ops.h" | ||
14 | #include "stdio.h" | ||
15 | #include "cuboot.h" | ||
16 | |||
17 | #define TARGET_8xx | ||
18 | #define TARGET_HAS_ETH1 | ||
19 | #include "ppcboot.h" | ||
20 | |||
21 | static bd_t bd; | ||
22 | |||
23 | static void platform_fixups(void) | ||
24 | { | ||
25 | void *node; | ||
26 | |||
27 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | ||
28 | dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); | ||
29 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 16, bd.bi_busfreq); | ||
30 | |||
31 | node = finddevice("/soc/cpm"); | ||
32 | if (node) | ||
33 | setprop(node, "clock-frequency", &bd.bi_busfreq, 4); | ||
34 | |||
35 | node = finddevice("/soc/cpm/brg"); | ||
36 | if (node) | ||
37 | setprop(node, "clock-frequency", &bd.bi_busfreq, 4); | ||
38 | } | ||
39 | |||
40 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
41 | unsigned long r6, unsigned long r7) | ||
42 | { | ||
43 | CUBOOT_INIT(); | ||
44 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | ||
45 | serial_console_init(); | ||
46 | platform_ops.fixups = platform_fixups; | ||
47 | } | ||
diff --git a/arch/powerpc/boot/cuboot-bamboo.c b/arch/powerpc/boot/cuboot-bamboo.c new file mode 100644 index 000000000000..900c7ff2b7e9 --- /dev/null +++ b/arch/powerpc/boot/cuboot-bamboo.c | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for Bamboo | ||
3 | * | ||
4 | * Author: Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
5 | * | ||
6 | * Copyright 2007 IBM Corporation | ||
7 | * | ||
8 | * Based on cuboot-ebony.c | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License version 2 as published | ||
12 | * by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include "ops.h" | ||
16 | #include "stdio.h" | ||
17 | #include "44x.h" | ||
18 | #include "cuboot.h" | ||
19 | |||
20 | #define TARGET_44x | ||
21 | #include "ppcboot.h" | ||
22 | |||
23 | static bd_t bd; | ||
24 | |||
25 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
26 | unsigned long r6, unsigned long r7) | ||
27 | { | ||
28 | CUBOOT_INIT(); | ||
29 | bamboo_init(&bd.bi_enetaddr, &bd.bi_enet1addr); | ||
30 | } | ||
diff --git a/arch/powerpc/boot/cuboot-hpc2.c b/arch/powerpc/boot/cuboot-hpc2.c new file mode 100644 index 000000000000..d333898bca30 --- /dev/null +++ b/arch/powerpc/boot/cuboot-hpc2.c | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved. | ||
3 | * | ||
4 | * Author: Roy Zang <tie-fei.zang@freescale.com> | ||
5 | * | ||
6 | * Description: | ||
7 | * Old U-boot compatibility for mpc7448hpc2 board | ||
8 | * Based on the code of Scott Wood <scottwood@freescale.com> | ||
9 | * for 83xx and 85xx. | ||
10 | * | ||
11 | * This is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License as published by | ||
13 | * the Free Software Foundation; either version 2 of the License, or | ||
14 | * (at your option) any later version. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include "ops.h" | ||
19 | #include "stdio.h" | ||
20 | #include "cuboot.h" | ||
21 | |||
22 | #define TARGET_HAS_ETH1 | ||
23 | #include "ppcboot.h" | ||
24 | |||
25 | static bd_t bd; | ||
26 | extern char _dtb_start[], _dtb_end[]; | ||
27 | |||
28 | static void platform_fixups(void) | ||
29 | { | ||
30 | void *tsi; | ||
31 | |||
32 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | ||
33 | dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); | ||
34 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); | ||
35 | tsi = find_node_by_devtype(NULL, "tsi-bridge"); | ||
36 | if (tsi) | ||
37 | setprop(tsi, "bus-frequency", &bd.bi_busfreq, | ||
38 | sizeof(bd.bi_busfreq)); | ||
39 | } | ||
40 | |||
41 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
42 | unsigned long r6, unsigned long r7) | ||
43 | { | ||
44 | CUBOOT_INIT(); | ||
45 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | ||
46 | serial_console_init(); | ||
47 | platform_ops.fixups = platform_fixups; | ||
48 | } | ||
diff --git a/arch/powerpc/boot/cuboot-pq2.c b/arch/powerpc/boot/cuboot-pq2.c new file mode 100644 index 000000000000..61574f3272dd --- /dev/null +++ b/arch/powerpc/boot/cuboot-pq2.c | |||
@@ -0,0 +1,261 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for PowerQUICC II | ||
3 | * (a.k.a. 82xx with CPM, not the 8240 family of chips) | ||
4 | * | ||
5 | * Author: Scott Wood <scottwood@freescale.com> | ||
6 | * | ||
7 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify it | ||
10 | * under the terms of the GNU General Public License version 2 as published | ||
11 | * by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include "ops.h" | ||
15 | #include "stdio.h" | ||
16 | #include "cuboot.h" | ||
17 | #include "io.h" | ||
18 | #include "fsl-soc.h" | ||
19 | |||
20 | #define TARGET_CPM2 | ||
21 | #define TARGET_HAS_ETH1 | ||
22 | #include "ppcboot.h" | ||
23 | |||
24 | static bd_t bd; | ||
25 | |||
26 | struct cs_range { | ||
27 | u32 csnum; | ||
28 | u32 base; /* must be zero */ | ||
29 | u32 addr; | ||
30 | u32 size; | ||
31 | }; | ||
32 | |||
33 | struct pci_range { | ||
34 | u32 flags; | ||
35 | u32 pci_addr[2]; | ||
36 | u32 phys_addr; | ||
37 | u32 size[2]; | ||
38 | }; | ||
39 | |||
40 | struct cs_range cs_ranges_buf[MAX_PROP_LEN / sizeof(struct cs_range)]; | ||
41 | struct pci_range pci_ranges_buf[MAX_PROP_LEN / sizeof(struct pci_range)]; | ||
42 | |||
43 | /* Different versions of u-boot put the BCSR in different places, and | ||
44 | * some don't set up the PCI PIC at all, so we assume the device tree is | ||
45 | * sane and update the BRx registers appropriately. | ||
46 | * | ||
47 | * For any node defined as compatible with fsl,pq2-localbus, | ||
48 | * #address/#size must be 2/1 for the localbus, and 1/1 for the parent bus. | ||
49 | * Ranges must be for whole chip selects. | ||
50 | */ | ||
51 | static void update_cs_ranges(void) | ||
52 | { | ||
53 | void *bus_node, *parent_node; | ||
54 | u32 *ctrl_addr; | ||
55 | unsigned long ctrl_size; | ||
56 | u32 naddr, nsize; | ||
57 | int len; | ||
58 | int i; | ||
59 | |||
60 | bus_node = finddevice("/localbus"); | ||
61 | if (!bus_node || !dt_is_compatible(bus_node, "fsl,pq2-localbus")) | ||
62 | return; | ||
63 | |||
64 | dt_get_reg_format(bus_node, &naddr, &nsize); | ||
65 | if (naddr != 2 || nsize != 1) | ||
66 | goto err; | ||
67 | |||
68 | parent_node = get_parent(bus_node); | ||
69 | if (!parent_node) | ||
70 | goto err; | ||
71 | |||
72 | dt_get_reg_format(parent_node, &naddr, &nsize); | ||
73 | if (naddr != 1 || nsize != 1) | ||
74 | goto err; | ||
75 | |||
76 | if (!dt_xlate_reg(bus_node, 0, (unsigned long *)&ctrl_addr, | ||
77 | &ctrl_size)) | ||
78 | goto err; | ||
79 | |||
80 | len = getprop(bus_node, "ranges", cs_ranges_buf, sizeof(cs_ranges_buf)); | ||
81 | |||
82 | for (i = 0; i < len / sizeof(struct cs_range); i++) { | ||
83 | u32 base, option; | ||
84 | int cs = cs_ranges_buf[i].csnum; | ||
85 | if (cs >= ctrl_size / 8) | ||
86 | goto err; | ||
87 | |||
88 | if (cs_ranges_buf[i].base != 0) | ||
89 | goto err; | ||
90 | |||
91 | base = in_be32(&ctrl_addr[cs * 2]); | ||
92 | |||
93 | /* If CS is already valid, use the existing flags. | ||
94 | * Otherwise, guess a sane default. | ||
95 | */ | ||
96 | if (base & 1) { | ||
97 | base &= 0x7fff; | ||
98 | option = in_be32(&ctrl_addr[cs * 2 + 1]) & 0x7fff; | ||
99 | } else { | ||
100 | base = 0x1801; | ||
101 | option = 0x10; | ||
102 | } | ||
103 | |||
104 | out_be32(&ctrl_addr[cs * 2], 0); | ||
105 | out_be32(&ctrl_addr[cs * 2 + 1], | ||
106 | option | ~(cs_ranges_buf[i].size - 1)); | ||
107 | out_be32(&ctrl_addr[cs * 2], base | cs_ranges_buf[i].addr); | ||
108 | } | ||
109 | |||
110 | return; | ||
111 | |||
112 | err: | ||
113 | printf("Bad /localbus node\r\n"); | ||
114 | } | ||
115 | |||
116 | /* Older u-boots don't set PCI up properly. Update the hardware to match | ||
117 | * the device tree. The prefetch mem region and non-prefetch mem region | ||
118 | * must be contiguous in the host bus. As required by the PCI binding, | ||
119 | * PCI #addr/#size must be 3/2. The parent bus must be 1/1. Only | ||
120 | * 32-bit PCI is supported. All three region types (prefetchable mem, | ||
121 | * non-prefetchable mem, and I/O) must be present. | ||
122 | */ | ||
123 | static void fixup_pci(void) | ||
124 | { | ||
125 | struct pci_range *mem = NULL, *mmio = NULL, | ||
126 | *io = NULL, *mem_base = NULL; | ||
127 | u32 *pci_regs[3]; | ||
128 | u8 *soc_regs; | ||
129 | int i, len; | ||
130 | void *node, *parent_node; | ||
131 | u32 naddr, nsize, mem_log2; | ||
132 | |||
133 | node = finddevice("/pci"); | ||
134 | if (!node || !dt_is_compatible(node, "fsl,pq2-pci")) | ||
135 | return; | ||
136 | |||
137 | for (i = 0; i < 3; i++) | ||
138 | if (!dt_xlate_reg(node, i, | ||
139 | (unsigned long *)&pci_regs[i], NULL)) | ||
140 | goto err; | ||
141 | |||
142 | soc_regs = (u8 *)fsl_get_immr(); | ||
143 | if (!soc_regs) | ||
144 | goto err; | ||
145 | |||
146 | dt_get_reg_format(node, &naddr, &nsize); | ||
147 | if (naddr != 3 || nsize != 2) | ||
148 | goto err; | ||
149 | |||
150 | parent_node = get_parent(node); | ||
151 | if (!parent_node) | ||
152 | goto err; | ||
153 | |||
154 | dt_get_reg_format(parent_node, &naddr, &nsize); | ||
155 | if (naddr != 1 || nsize != 1) | ||
156 | goto err; | ||
157 | |||
158 | len = getprop(node, "ranges", pci_ranges_buf, | ||
159 | sizeof(pci_ranges_buf)); | ||
160 | |||
161 | for (i = 0; i < len / sizeof(struct pci_range); i++) { | ||
162 | u32 flags = pci_ranges_buf[i].flags & 0x43000000; | ||
163 | |||
164 | if (flags == 0x42000000) | ||
165 | mem = &pci_ranges_buf[i]; | ||
166 | else if (flags == 0x02000000) | ||
167 | mmio = &pci_ranges_buf[i]; | ||
168 | else if (flags == 0x01000000) | ||
169 | io = &pci_ranges_buf[i]; | ||
170 | } | ||
171 | |||
172 | if (!mem || !mmio || !io) | ||
173 | goto err; | ||
174 | |||
175 | if (mem->phys_addr + mem->size[1] == mmio->phys_addr) | ||
176 | mem_base = mem; | ||
177 | else if (mmio->phys_addr + mmio->size[1] == mem->phys_addr) | ||
178 | mem_base = mmio; | ||
179 | else | ||
180 | goto err; | ||
181 | |||
182 | out_be32(&pci_regs[1][0], mem_base->phys_addr | 1); | ||
183 | out_be32(&pci_regs[2][0], ~(mem->size[1] + mmio->size[1] - 1)); | ||
184 | |||
185 | out_be32(&pci_regs[1][1], io->phys_addr | 1); | ||
186 | out_be32(&pci_regs[2][1], ~(io->size[1] - 1)); | ||
187 | |||
188 | out_le32(&pci_regs[0][0], mem->pci_addr[1] >> 12); | ||
189 | out_le32(&pci_regs[0][2], mem->phys_addr >> 12); | ||
190 | out_le32(&pci_regs[0][4], (~(mem->size[1] - 1) >> 12) | 0xa0000000); | ||
191 | |||
192 | out_le32(&pci_regs[0][6], mmio->pci_addr[1] >> 12); | ||
193 | out_le32(&pci_regs[0][8], mmio->phys_addr >> 12); | ||
194 | out_le32(&pci_regs[0][10], (~(mmio->size[1] - 1) >> 12) | 0x80000000); | ||
195 | |||
196 | out_le32(&pci_regs[0][12], io->pci_addr[1] >> 12); | ||
197 | out_le32(&pci_regs[0][14], io->phys_addr >> 12); | ||
198 | out_le32(&pci_regs[0][16], (~(io->size[1] - 1) >> 12) | 0xc0000000); | ||
199 | |||
200 | /* Inbound translation */ | ||
201 | out_le32(&pci_regs[0][58], 0); | ||
202 | out_le32(&pci_regs[0][60], 0); | ||
203 | |||
204 | mem_log2 = 1 << (__ilog2_u32(bd.bi_memsize - 1) + 1); | ||
205 | out_le32(&pci_regs[0][62], 0xa0000000 | ~((1 << (mem_log2 - 12)) - 1)); | ||
206 | |||
207 | /* If PCI is disabled, drive RST high to enable. */ | ||
208 | if (!(in_le32(&pci_regs[0][32]) & 1)) { | ||
209 | /* Tpvrh (Power valid to RST# high) 100 ms */ | ||
210 | udelay(100000); | ||
211 | |||
212 | out_le32(&pci_regs[0][32], 1); | ||
213 | |||
214 | /* Trhfa (RST# high to first cfg access) 2^25 clocks */ | ||
215 | udelay(1020000); | ||
216 | } | ||
217 | |||
218 | /* Enable bus master and memory access */ | ||
219 | out_le32(&pci_regs[0][64], 0x80000004); | ||
220 | out_le32(&pci_regs[0][65], in_le32(&pci_regs[0][65]) | 6); | ||
221 | |||
222 | /* Park the bus on PCI, and elevate PCI's arbitration priority, | ||
223 | * as required by section 9.6 of the user's manual. | ||
224 | */ | ||
225 | out_8(&soc_regs[0x10028], 3); | ||
226 | out_be32((u32 *)&soc_regs[0x1002c], 0x01236745); | ||
227 | |||
228 | return; | ||
229 | |||
230 | err: | ||
231 | printf("Bad PCI node\r\n"); | ||
232 | } | ||
233 | |||
234 | static void pq2_platform_fixups(void) | ||
235 | { | ||
236 | void *node; | ||
237 | |||
238 | dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); | ||
239 | dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); | ||
240 | dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); | ||
241 | |||
242 | node = finddevice("/soc/cpm"); | ||
243 | if (node) | ||
244 | setprop(node, "clock-frequency", &bd.bi_cpmfreq, 4); | ||
245 | |||
246 | node = finddevice("/soc/cpm/brg"); | ||
247 | if (node) | ||
248 | setprop(node, "clock-frequency", &bd.bi_brgfreq, 4); | ||
249 | |||
250 | update_cs_ranges(); | ||
251 | fixup_pci(); | ||
252 | } | ||
253 | |||
254 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
255 | unsigned long r6, unsigned long r7) | ||
256 | { | ||
257 | CUBOOT_INIT(); | ||
258 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | ||
259 | serial_console_init(); | ||
260 | platform_ops.fixups = pq2_platform_fixups; | ||
261 | } | ||
diff --git a/arch/powerpc/boot/cuboot-sequoia.c b/arch/powerpc/boot/cuboot-sequoia.c new file mode 100644 index 000000000000..ec635e0bd4ec --- /dev/null +++ b/arch/powerpc/boot/cuboot-sequoia.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for Sequoia | ||
3 | * | ||
4 | * Valentine Barshak <vbarshak@ru.mvista.com> | ||
5 | * Copyright 2007 MontaVista Software, Inc | ||
6 | * | ||
7 | * Based on Ebony code by David Gibson <david@gibson.dropbear.id.au> | ||
8 | * Copyright IBM Corporation, 2007 | ||
9 | * | ||
10 | * Based on Bamboo code by Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
11 | * Copyright IBM Corporation, 2007 | ||
12 | * | ||
13 | * This program is free software; you can redistribute it and/or | ||
14 | * modify it under the terms of the GNU General Public License | ||
15 | * as published by the Free Software Foundation; version 2 of the License | ||
16 | */ | ||
17 | |||
18 | #include <stdarg.h> | ||
19 | #include <stddef.h> | ||
20 | #include "types.h" | ||
21 | #include "elf.h" | ||
22 | #include "string.h" | ||
23 | #include "stdio.h" | ||
24 | #include "page.h" | ||
25 | #include "ops.h" | ||
26 | #include "dcr.h" | ||
27 | #include "4xx.h" | ||
28 | #include "44x.h" | ||
29 | #include "cuboot.h" | ||
30 | |||
31 | #define TARGET_4xx | ||
32 | #define TARGET_44x | ||
33 | #include "ppcboot.h" | ||
34 | |||
35 | static bd_t bd; | ||
36 | |||
37 | |||
38 | static void sequoia_fixups(void) | ||
39 | { | ||
40 | unsigned long sysclk = 33333333; | ||
41 | |||
42 | ibm440ep_fixup_clocks(sysclk, 11059200); | ||
43 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | ||
44 | ibm4xx_denali_fixup_memsize(); | ||
45 | dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr); | ||
46 | } | ||
47 | |||
48 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
49 | unsigned long r6, unsigned long r7) | ||
50 | { | ||
51 | CUBOOT_INIT(); | ||
52 | platform_ops.fixups = sequoia_fixups; | ||
53 | platform_ops.exit = ibm44x_dbcr_reset; | ||
54 | ft_init(_dtb_start, 0, 32); | ||
55 | serial_console_init(); | ||
56 | } | ||
diff --git a/arch/powerpc/boot/cuboot.c b/arch/powerpc/boot/cuboot.c index 65795468ad6f..7768b2306b7a 100644 --- a/arch/powerpc/boot/cuboot.c +++ b/arch/powerpc/boot/cuboot.c | |||
@@ -17,9 +17,6 @@ | |||
17 | 17 | ||
18 | #include "ppcboot.h" | 18 | #include "ppcboot.h" |
19 | 19 | ||
20 | extern char _end[]; | ||
21 | extern char _dtb_start[], _dtb_end[]; | ||
22 | |||
23 | void cuboot_init(unsigned long r4, unsigned long r5, | 20 | void cuboot_init(unsigned long r4, unsigned long r5, |
24 | unsigned long r6, unsigned long r7, | 21 | unsigned long r6, unsigned long r7, |
25 | unsigned long end_of_ram) | 22 | unsigned long end_of_ram) |
diff --git a/arch/powerpc/boot/dcr.h b/arch/powerpc/boot/dcr.h index 14b44aa96fea..83b88aa92888 100644 --- a/arch/powerpc/boot/dcr.h +++ b/arch/powerpc/boot/dcr.h | |||
@@ -121,4 +121,22 @@ static const unsigned long sdram_bxcr[] = { SDRAM0_B0CR, SDRAM0_B1CR, SDRAM0_B2C | |||
121 | #define DCRN_CPC0_MIRQ1 0x0ed | 121 | #define DCRN_CPC0_MIRQ1 0x0ed |
122 | #define DCRN_CPC0_JTAGID 0x0ef | 122 | #define DCRN_CPC0_JTAGID 0x0ef |
123 | 123 | ||
124 | #define DCRN_MAL0_CFG 0x180 | ||
125 | #define MAL_RESET 0x80000000 | ||
126 | |||
127 | /* 440EP Clock/Power-on Reset regs */ | ||
128 | #define DCRN_CPR0_ADDR 0xc | ||
129 | #define DCRN_CPR0_DATA 0xd | ||
130 | #define CPR0_PLLD0 0x60 | ||
131 | #define CPR0_OPBD0 0xc0 | ||
132 | #define CPR0_PERD0 0xe0 | ||
133 | #define CPR0_PRIMBD0 0xa0 | ||
134 | #define CPR0_SCPID 0x120 | ||
135 | #define CPR0_PLLC0 0x40 | ||
136 | |||
137 | /* 405GP Clocking/Power Management/Chip Control regs */ | ||
138 | #define DCRN_CPC0_PLLMR 0xb0 | ||
139 | #define DCRN_405_CPC0_CR0 0xb1 | ||
140 | #define DCRN_405_CPC0_CR1 0xb2 | ||
141 | |||
124 | #endif /* _PPC_BOOT_DCR_H_ */ | 142 | #endif /* _PPC_BOOT_DCR_H_ */ |
diff --git a/arch/powerpc/boot/devtree.c b/arch/powerpc/boot/devtree.c index c9951550ed2c..e5dfe4497313 100644 --- a/arch/powerpc/boot/devtree.c +++ b/arch/powerpc/boot/devtree.c | |||
@@ -74,6 +74,8 @@ void dt_fixup_cpu_clocks(u32 cpu, u32 tb, u32 bus) | |||
74 | if (bus > 0) | 74 | if (bus > 0) |
75 | setprop_val(devp, "bus-frequency", bus); | 75 | setprop_val(devp, "bus-frequency", bus); |
76 | } | 76 | } |
77 | |||
78 | timebase_period_ns = 1000000000 / tb; | ||
77 | } | 79 | } |
78 | 80 | ||
79 | void dt_fixup_clock(const char *path, u32 freq) | 81 | void dt_fixup_clock(const char *path, u32 freq) |
@@ -86,34 +88,38 @@ void dt_fixup_clock(const char *path, u32 freq) | |||
86 | } | 88 | } |
87 | } | 89 | } |
88 | 90 | ||
91 | void dt_fixup_mac_address(u32 index, const u8 *addr) | ||
92 | { | ||
93 | void *devp = find_node_by_prop_value(NULL, "linux,network-index", | ||
94 | (void*)&index, sizeof(index)); | ||
95 | |||
96 | if (devp) { | ||
97 | printf("ENET%d: local-mac-address <-" | ||
98 | " %02x:%02x:%02x:%02x:%02x:%02x\n\r", index, | ||
99 | addr[0], addr[1], addr[2], | ||
100 | addr[3], addr[4], addr[5]); | ||
101 | |||
102 | setprop(devp, "local-mac-address", addr, 6); | ||
103 | } | ||
104 | } | ||
105 | |||
89 | void __dt_fixup_mac_addresses(u32 startindex, ...) | 106 | void __dt_fixup_mac_addresses(u32 startindex, ...) |
90 | { | 107 | { |
91 | va_list ap; | 108 | va_list ap; |
92 | u32 index = startindex; | 109 | u32 index = startindex; |
93 | void *devp; | ||
94 | const u8 *addr; | 110 | const u8 *addr; |
95 | 111 | ||
96 | va_start(ap, startindex); | 112 | va_start(ap, startindex); |
97 | while ((addr = va_arg(ap, const u8 *))) { | ||
98 | devp = find_node_by_prop_value(NULL, "linux,network-index", | ||
99 | (void*)&index, sizeof(index)); | ||
100 | |||
101 | printf("ENET%d: local-mac-address <-" | ||
102 | " %02x:%02x:%02x:%02x:%02x:%02x\n\r", index, | ||
103 | addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); | ||
104 | 113 | ||
105 | if (devp) | 114 | while ((addr = va_arg(ap, const u8 *))) |
106 | setprop(devp, "local-mac-address", addr, 6); | 115 | dt_fixup_mac_address(index++, addr); |
107 | 116 | ||
108 | index++; | ||
109 | } | ||
110 | va_end(ap); | 117 | va_end(ap); |
111 | } | 118 | } |
112 | 119 | ||
113 | #define MAX_ADDR_CELLS 4 | 120 | #define MAX_ADDR_CELLS 4 |
114 | #define MAX_RANGES 8 | ||
115 | 121 | ||
116 | static void get_reg_format(void *node, u32 *naddr, u32 *nsize) | 122 | void dt_get_reg_format(void *node, u32 *naddr, u32 *nsize) |
117 | { | 123 | { |
118 | if (getprop(node, "#address-cells", naddr, 4) != 4) | 124 | if (getprop(node, "#address-cells", naddr, 4) != 4) |
119 | *naddr = 2; | 125 | *naddr = 2; |
@@ -207,7 +213,7 @@ static int find_range(u32 *reg, u32 *ranges, int nregaddr, | |||
207 | * In particular, PCI is not supported. Also, only the beginning of the | 213 | * In particular, PCI is not supported. Also, only the beginning of the |
208 | * reg block is tracked; size is ignored except in ranges. | 214 | * reg block is tracked; size is ignored except in ranges. |
209 | */ | 215 | */ |
210 | static u32 dt_xlate_buf[MAX_ADDR_CELLS * MAX_RANGES * 3]; | 216 | static u32 prop_buf[MAX_PROP_LEN / 4]; |
211 | 217 | ||
212 | static int dt_xlate(void *node, int res, int reglen, unsigned long *addr, | 218 | static int dt_xlate(void *node, int res, int reglen, unsigned long *addr, |
213 | unsigned long *size) | 219 | unsigned long *size) |
@@ -216,14 +222,14 @@ static int dt_xlate(void *node, int res, int reglen, unsigned long *addr, | |||
216 | u32 this_addr[MAX_ADDR_CELLS]; | 222 | u32 this_addr[MAX_ADDR_CELLS]; |
217 | void *parent; | 223 | void *parent; |
218 | u64 ret_addr, ret_size; | 224 | u64 ret_addr, ret_size; |
219 | u32 naddr, nsize, prev_naddr; | 225 | u32 naddr, nsize, prev_naddr, prev_nsize; |
220 | int buflen, offset; | 226 | int buflen, offset; |
221 | 227 | ||
222 | parent = get_parent(node); | 228 | parent = get_parent(node); |
223 | if (!parent) | 229 | if (!parent) |
224 | return 0; | 230 | return 0; |
225 | 231 | ||
226 | get_reg_format(parent, &naddr, &nsize); | 232 | dt_get_reg_format(parent, &naddr, &nsize); |
227 | 233 | ||
228 | if (nsize > 2) | 234 | if (nsize > 2) |
229 | return 0; | 235 | return 0; |
@@ -231,41 +237,47 @@ static int dt_xlate(void *node, int res, int reglen, unsigned long *addr, | |||
231 | offset = (naddr + nsize) * res; | 237 | offset = (naddr + nsize) * res; |
232 | 238 | ||
233 | if (reglen < offset + naddr + nsize || | 239 | if (reglen < offset + naddr + nsize || |
234 | sizeof(dt_xlate_buf) < offset + naddr + nsize) | 240 | MAX_PROP_LEN < (offset + naddr + nsize) * 4) |
235 | return 0; | 241 | return 0; |
236 | 242 | ||
237 | copy_val(last_addr, dt_xlate_buf + offset, naddr); | 243 | copy_val(last_addr, prop_buf + offset, naddr); |
238 | 244 | ||
239 | ret_size = dt_xlate_buf[offset + naddr]; | 245 | ret_size = prop_buf[offset + naddr]; |
240 | if (nsize == 2) { | 246 | if (nsize == 2) { |
241 | ret_size <<= 32; | 247 | ret_size <<= 32; |
242 | ret_size |= dt_xlate_buf[offset + naddr + 1]; | 248 | ret_size |= prop_buf[offset + naddr + 1]; |
243 | } | 249 | } |
244 | 250 | ||
245 | while ((node = get_parent(node))) { | 251 | for (;;) { |
246 | prev_naddr = naddr; | 252 | prev_naddr = naddr; |
253 | prev_nsize = nsize; | ||
254 | node = parent; | ||
255 | |||
256 | parent = get_parent(node); | ||
257 | if (!parent) | ||
258 | break; | ||
247 | 259 | ||
248 | get_reg_format(node, &naddr, &nsize); | 260 | dt_get_reg_format(parent, &naddr, &nsize); |
249 | 261 | ||
250 | buflen = getprop(node, "ranges", dt_xlate_buf, | 262 | buflen = getprop(node, "ranges", prop_buf, |
251 | sizeof(dt_xlate_buf)); | 263 | sizeof(prop_buf)); |
252 | if (buflen < 0) | 264 | if (buflen == 0) |
253 | continue; | 265 | continue; |
254 | if (buflen > sizeof(dt_xlate_buf)) | 266 | if (buflen < 0 || buflen > sizeof(prop_buf)) |
255 | return 0; | 267 | return 0; |
256 | 268 | ||
257 | offset = find_range(last_addr, dt_xlate_buf, prev_naddr, | 269 | offset = find_range(last_addr, prop_buf, prev_naddr, |
258 | naddr, nsize, buflen / 4); | 270 | naddr, prev_nsize, buflen / 4); |
259 | 271 | ||
260 | if (offset < 0) | 272 | if (offset < 0) |
261 | return 0; | 273 | return 0; |
262 | 274 | ||
263 | copy_val(this_addr, dt_xlate_buf + offset, prev_naddr); | 275 | copy_val(this_addr, prop_buf + offset, prev_naddr); |
264 | 276 | ||
265 | if (!sub_reg(last_addr, this_addr)) | 277 | if (!sub_reg(last_addr, this_addr)) |
266 | return 0; | 278 | return 0; |
267 | 279 | ||
268 | copy_val(this_addr, dt_xlate_buf + offset + prev_naddr, naddr); | 280 | copy_val(this_addr, prop_buf + offset + prev_naddr, naddr); |
269 | 281 | ||
270 | if (!add_reg(last_addr, this_addr, naddr)) | 282 | if (!add_reg(last_addr, this_addr, naddr)) |
271 | return 0; | 283 | return 0; |
@@ -292,16 +304,35 @@ int dt_xlate_reg(void *node, int res, unsigned long *addr, unsigned long *size) | |||
292 | { | 304 | { |
293 | int reglen; | 305 | int reglen; |
294 | 306 | ||
295 | reglen = getprop(node, "reg", dt_xlate_buf, sizeof(dt_xlate_buf)) / 4; | 307 | reglen = getprop(node, "reg", prop_buf, sizeof(prop_buf)) / 4; |
296 | return dt_xlate(node, res, reglen, addr, size); | 308 | return dt_xlate(node, res, reglen, addr, size); |
297 | } | 309 | } |
298 | 310 | ||
299 | int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr) | 311 | int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr) |
300 | { | 312 | { |
301 | 313 | ||
302 | if (buflen > sizeof(dt_xlate_buf)) | 314 | if (buflen > sizeof(prop_buf)) |
303 | return 0; | 315 | return 0; |
304 | 316 | ||
305 | memcpy(dt_xlate_buf, buf, buflen); | 317 | memcpy(prop_buf, buf, buflen); |
306 | return dt_xlate(node, 0, buflen / 4, xlated_addr, NULL); | 318 | return dt_xlate(node, 0, buflen / 4, xlated_addr, NULL); |
307 | } | 319 | } |
320 | |||
321 | int dt_is_compatible(void *node, const char *compat) | ||
322 | { | ||
323 | char *buf = (char *)prop_buf; | ||
324 | int len, pos; | ||
325 | |||
326 | len = getprop(node, "compatible", buf, MAX_PROP_LEN); | ||
327 | if (len < 0) | ||
328 | return 0; | ||
329 | |||
330 | for (pos = 0; pos < len; pos++) { | ||
331 | if (!strcmp(buf + pos, compat)) | ||
332 | return 1; | ||
333 | |||
334 | pos += strnlen(&buf[pos], len - pos); | ||
335 | } | ||
336 | |||
337 | return 0; | ||
338 | } | ||
diff --git a/arch/powerpc/boot/dts/bamboo.dts b/arch/powerpc/boot/dts/bamboo.dts new file mode 100644 index 000000000000..a88ae3d218a5 --- /dev/null +++ b/arch/powerpc/boot/dts/bamboo.dts | |||
@@ -0,0 +1,244 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Bamboo | ||
3 | * | ||
4 | * Copyright (c) 2006, 2007 IBM Corp. | ||
5 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
6 | * | ||
7 | * FIXME: Draft only! | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without | ||
11 | * any warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | / { | ||
15 | #address-cells = <2>; | ||
16 | #size-cells = <1>; | ||
17 | model = "amcc,bamboo"; | ||
18 | compatible = "amcc,bamboo"; | ||
19 | dcr-parent = <&/cpus/PowerPC,440EP@0>; | ||
20 | |||
21 | cpus { | ||
22 | #address-cells = <1>; | ||
23 | #size-cells = <0>; | ||
24 | |||
25 | PowerPC,440EP@0 { | ||
26 | device_type = "cpu"; | ||
27 | reg = <0>; | ||
28 | clock-frequency = <0>; /* Filled in by zImage */ | ||
29 | timebase-frequency = <0>; /* Filled in by zImage */ | ||
30 | i-cache-line-size = <20>; | ||
31 | d-cache-line-size = <20>; | ||
32 | i-cache-size = <8000>; | ||
33 | d-cache-size = <8000>; | ||
34 | dcr-controller; | ||
35 | dcr-access-method = "native"; | ||
36 | }; | ||
37 | }; | ||
38 | |||
39 | memory { | ||
40 | device_type = "memory"; | ||
41 | reg = <0 0 0>; /* Filled in by zImage */ | ||
42 | }; | ||
43 | |||
44 | UIC0: interrupt-controller0 { | ||
45 | compatible = "ibm,uic-440ep","ibm,uic"; | ||
46 | interrupt-controller; | ||
47 | cell-index = <0>; | ||
48 | dcr-reg = <0c0 009>; | ||
49 | #address-cells = <0>; | ||
50 | #size-cells = <0>; | ||
51 | #interrupt-cells = <2>; | ||
52 | }; | ||
53 | |||
54 | UIC1: interrupt-controller1 { | ||
55 | compatible = "ibm,uic-440ep","ibm,uic"; | ||
56 | interrupt-controller; | ||
57 | cell-index = <1>; | ||
58 | dcr-reg = <0d0 009>; | ||
59 | #address-cells = <0>; | ||
60 | #size-cells = <0>; | ||
61 | #interrupt-cells = <2>; | ||
62 | interrupts = <1e 4 1f 4>; /* cascade */ | ||
63 | interrupt-parent = <&UIC0>; | ||
64 | }; | ||
65 | |||
66 | SDR0: sdr { | ||
67 | compatible = "ibm,sdr-440ep"; | ||
68 | dcr-reg = <00e 002>; | ||
69 | }; | ||
70 | |||
71 | CPR0: cpr { | ||
72 | compatible = "ibm,cpr-440ep"; | ||
73 | dcr-reg = <00c 002>; | ||
74 | }; | ||
75 | |||
76 | plb { | ||
77 | compatible = "ibm,plb-440ep", "ibm,plb-440gp", "ibm,plb4"; | ||
78 | #address-cells = <2>; | ||
79 | #size-cells = <1>; | ||
80 | ranges; | ||
81 | clock-frequency = <0>; /* Filled in by zImage */ | ||
82 | |||
83 | SDRAM0: sdram { | ||
84 | compatible = "ibm,sdram-440ep", "ibm,sdram-405gp"; | ||
85 | dcr-reg = <010 2>; | ||
86 | }; | ||
87 | |||
88 | DMA0: dma { | ||
89 | compatible = "ibm,dma-440ep", "ibm,dma-440gp"; | ||
90 | dcr-reg = <100 027>; | ||
91 | }; | ||
92 | |||
93 | MAL0: mcmal { | ||
94 | compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal"; | ||
95 | dcr-reg = <180 62>; | ||
96 | num-tx-chans = <4>; | ||
97 | num-rx-chans = <2>; | ||
98 | interrupt-parent = <&MAL0>; | ||
99 | interrupts = <0 1 2 3 4>; | ||
100 | #interrupt-cells = <1>; | ||
101 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 | ||
102 | /*RXEOB*/ 1 &UIC0 b 4 | ||
103 | /*SERR*/ 2 &UIC1 0 4 | ||
104 | /*TXDE*/ 3 &UIC1 1 4 | ||
105 | /*RXDE*/ 4 &UIC1 3 4>; | ||
106 | }; | ||
107 | |||
108 | POB0: opb { | ||
109 | compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb"; | ||
110 | #address-cells = <1>; | ||
111 | #size-cells = <1>; | ||
112 | /* Bamboo is oddball in the 44x world and doesn't use the ERPN | ||
113 | * bits. | ||
114 | */ | ||
115 | ranges = <00000000 0 00000000 80000000 | ||
116 | 80000000 0 80000000 80000000>; | ||
117 | interrupt-parent = <&UIC1>; | ||
118 | interrupts = <7 4>; | ||
119 | clock-frequency = <0>; /* Filled in by zImage */ | ||
120 | |||
121 | EBC0: ebc { | ||
122 | compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc"; | ||
123 | dcr-reg = <012 2>; | ||
124 | #address-cells = <2>; | ||
125 | #size-cells = <1>; | ||
126 | clock-frequency = <0>; /* Filled in by zImage */ | ||
127 | ranges; | ||
128 | interrupts = <5 1>; | ||
129 | interrupt-parent = <&UIC1>; | ||
130 | }; | ||
131 | |||
132 | UART0: serial@ef600300 { | ||
133 | device_type = "serial"; | ||
134 | compatible = "ns16550"; | ||
135 | reg = <ef600300 8>; | ||
136 | virtual-reg = <ef600300>; | ||
137 | clock-frequency = <0>; /* Filled in by zImage */ | ||
138 | current-speed = <1c200>; | ||
139 | interrupt-parent = <&UIC0>; | ||
140 | interrupts = <0 4>; | ||
141 | }; | ||
142 | |||
143 | UART1: serial@ef600400 { | ||
144 | device_type = "serial"; | ||
145 | compatible = "ns16550"; | ||
146 | reg = <ef600400 8>; | ||
147 | virtual-reg = <ef600400>; | ||
148 | clock-frequency = <0>; | ||
149 | current-speed = <0>; | ||
150 | interrupt-parent = <&UIC0>; | ||
151 | interrupts = <1 4>; | ||
152 | }; | ||
153 | |||
154 | UART2: serial@ef600500 { | ||
155 | device_type = "serial"; | ||
156 | compatible = "ns16550"; | ||
157 | reg = <ef600500 8>; | ||
158 | virtual-reg = <ef600500>; | ||
159 | clock-frequency = <0>; | ||
160 | current-speed = <0>; | ||
161 | interrupt-parent = <&UIC0>; | ||
162 | interrupts = <3 4>; | ||
163 | }; | ||
164 | |||
165 | UART3: serial@ef600600 { | ||
166 | device_type = "serial"; | ||
167 | compatible = "ns16550"; | ||
168 | reg = <ef600600 8>; | ||
169 | virtual-reg = <ef600600>; | ||
170 | clock-frequency = <0>; | ||
171 | current-speed = <0>; | ||
172 | interrupt-parent = <&UIC0>; | ||
173 | interrupts = <4 4>; | ||
174 | }; | ||
175 | |||
176 | IIC0: i2c@ef600700 { | ||
177 | device_type = "i2c"; | ||
178 | compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; | ||
179 | reg = <ef600700 14>; | ||
180 | interrupt-parent = <&UIC0>; | ||
181 | interrupts = <2 4>; | ||
182 | }; | ||
183 | |||
184 | IIC1: i2c@ef600800 { | ||
185 | device_type = "i2c"; | ||
186 | compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; | ||
187 | reg = <ef600800 14>; | ||
188 | interrupt-parent = <&UIC0>; | ||
189 | interrupts = <7 4>; | ||
190 | }; | ||
191 | |||
192 | ZMII0: emac-zmii@ef600d00 { | ||
193 | device_type = "zmii-interface"; | ||
194 | compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii"; | ||
195 | reg = <ef600d00 c>; | ||
196 | }; | ||
197 | |||
198 | EMAC0: ethernet@ef600e00 { | ||
199 | device_type = "network"; | ||
200 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | ||
201 | interrupt-parent = <&UIC1>; | ||
202 | interrupts = <1c 4 1d 4>; | ||
203 | reg = <ef600e00 70>; | ||
204 | local-mac-address = [000000000000]; | ||
205 | mal-device = <&MAL0>; | ||
206 | mal-tx-channel = <0 1>; | ||
207 | mal-rx-channel = <0>; | ||
208 | cell-index = <0>; | ||
209 | max-frame-size = <5dc>; | ||
210 | rx-fifo-size = <1000>; | ||
211 | tx-fifo-size = <800>; | ||
212 | phy-mode = "rmii"; | ||
213 | phy-map = <00000001>; | ||
214 | zmii-device = <&ZMII0>; | ||
215 | zmii-channel = <0>; | ||
216 | }; | ||
217 | |||
218 | EMAC1: ethernet@ef600f00 { | ||
219 | device_type = "network"; | ||
220 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | ||
221 | interrupt-parent = <&UIC1>; | ||
222 | interrupts = <1e 4 1f 4>; | ||
223 | reg = <ef600f00 70>; | ||
224 | local-mac-address = [000000000000]; | ||
225 | mal-device = <&MAL0>; | ||
226 | mal-tx-channel = <2 3>; | ||
227 | mal-rx-channel = <1>; | ||
228 | cell-index = <1>; | ||
229 | max-frame-size = <5dc>; | ||
230 | rx-fifo-size = <1000>; | ||
231 | tx-fifo-size = <800>; | ||
232 | phy-mode = "rmii"; | ||
233 | phy-map = <00000001>; | ||
234 | zmii-device = <&ZMII0>; | ||
235 | zmii-channel = <1>; | ||
236 | }; | ||
237 | }; | ||
238 | }; | ||
239 | |||
240 | chosen { | ||
241 | linux,stdout-path = "/plb/opb/serial@ef600300"; | ||
242 | bootargs = "console=ttyS0,115200"; | ||
243 | }; | ||
244 | }; | ||
diff --git a/arch/powerpc/boot/dts/ebony.dts b/arch/powerpc/boot/dts/ebony.dts index c5f99613fc7b..bc259972aaa0 100644 --- a/arch/powerpc/boot/dts/ebony.dts +++ b/arch/powerpc/boot/dts/ebony.dts | |||
@@ -9,10 +9,6 @@ | |||
9 | * This file is licensed under the terms of the GNU General Public | 9 | * This file is licensed under the terms of the GNU General Public |
10 | * License version 2. This program is licensed "as is" without | 10 | * License version 2. This program is licensed "as is" without |
11 | * any warranty of any kind, whether express or implied. | 11 | * any warranty of any kind, whether express or implied. |
12 | * | ||
13 | * To build: | ||
14 | * dtc -I dts -O asm -o ebony.S -b 0 ebony.dts | ||
15 | * dtc -I dts -O dtb -o ebony.dtb -b 0 ebony.dts | ||
16 | */ | 12 | */ |
17 | 13 | ||
18 | / { | 14 | / { |
@@ -142,13 +138,16 @@ | |||
142 | interrupt-parent = <&UIC1>; | 138 | interrupt-parent = <&UIC1>; |
143 | 139 | ||
144 | small-flash@0,80000 { | 140 | small-flash@0,80000 { |
145 | device_type = "rom"; | 141 | compatible = "jedec-flash"; |
146 | compatible = "direct-mapped"; | ||
147 | probe-type = "JEDEC"; | ||
148 | bank-width = <1>; | 142 | bank-width = <1>; |
149 | partitions = <0 80000>; | ||
150 | partition-names = "OpenBIOS"; | ||
151 | reg = <0 80000 80000>; | 143 | reg = <0 80000 80000>; |
144 | #address-cells = <1>; | ||
145 | #size-cells = <1>; | ||
146 | partition@0 { | ||
147 | label = "OpenBIOS"; | ||
148 | reg = <0 80000>; | ||
149 | read-only; | ||
150 | }; | ||
152 | }; | 151 | }; |
153 | 152 | ||
154 | ds1743@1,0 { | 153 | ds1743@1,0 { |
@@ -158,14 +157,19 @@ | |||
158 | }; | 157 | }; |
159 | 158 | ||
160 | large-flash@2,0 { | 159 | large-flash@2,0 { |
161 | device_type = "rom"; | 160 | compatible = "jedec-flash"; |
162 | compatible = "direct-mapped"; | ||
163 | probe-type = "JEDEC"; | ||
164 | bank-width = <1>; | 161 | bank-width = <1>; |
165 | partitions = <0 380000 | ||
166 | 380000 80000>; | ||
167 | partition-names = "fs", "firmware"; | ||
168 | reg = <2 0 400000>; | 162 | reg = <2 0 400000>; |
163 | #address-cells = <1>; | ||
164 | #size-cells = <1>; | ||
165 | partition@0 { | ||
166 | label = "fs"; | ||
167 | reg = <0 380000>; | ||
168 | }; | ||
169 | partition@380000 { | ||
170 | label = "firmware"; | ||
171 | reg = <380000 80000>; | ||
172 | }; | ||
169 | }; | 173 | }; |
170 | 174 | ||
171 | ir@3,0 { | 175 | ir@3,0 { |
@@ -175,6 +179,7 @@ | |||
175 | fpga@7,0 { | 179 | fpga@7,0 { |
176 | compatible = "Ebony-FPGA"; | 180 | compatible = "Ebony-FPGA"; |
177 | reg = <7 0 10>; | 181 | reg = <7 0 10>; |
182 | virtual-reg = <e8300000>; | ||
178 | }; | 183 | }; |
179 | }; | 184 | }; |
180 | 185 | ||
diff --git a/arch/powerpc/boot/dts/ep88xc.dts b/arch/powerpc/boot/dts/ep88xc.dts new file mode 100644 index 000000000000..02705f299790 --- /dev/null +++ b/arch/powerpc/boot/dts/ep88xc.dts | |||
@@ -0,0 +1,214 @@ | |||
1 | /* | ||
2 | * EP88xC Device Tree Source | ||
3 | * | ||
4 | * Copyright 2006 MontaVista Software, Inc. | ||
5 | * Copyright 2007 Freescale Semiconductor, Inc. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | |||
14 | / { | ||
15 | model = "EP88xC"; | ||
16 | compatible = "fsl,ep88xc"; | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <1>; | ||
19 | |||
20 | cpus { | ||
21 | #address-cells = <1>; | ||
22 | #size-cells = <0>; | ||
23 | |||
24 | PowerPC,885@0 { | ||
25 | device_type = "cpu"; | ||
26 | reg = <0>; | ||
27 | d-cache-line-size = <d#16>; | ||
28 | i-cache-line-size = <d#16>; | ||
29 | d-cache-size = <d#8192>; | ||
30 | i-cache-size = <d#8192>; | ||
31 | timebase-frequency = <0>; | ||
32 | bus-frequency = <0>; | ||
33 | clock-frequency = <0>; | ||
34 | interrupts = <f 2>; // decrementer interrupt | ||
35 | interrupt-parent = <&PIC>; | ||
36 | }; | ||
37 | }; | ||
38 | |||
39 | memory { | ||
40 | device_type = "memory"; | ||
41 | reg = <0 0>; | ||
42 | }; | ||
43 | |||
44 | localbus@fa200100 { | ||
45 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus"; | ||
46 | #address-cells = <2>; | ||
47 | #size-cells = <1>; | ||
48 | reg = <fa200100 40>; | ||
49 | |||
50 | ranges = < | ||
51 | 0 0 fc000000 04000000 | ||
52 | 3 0 fa000000 01000000 | ||
53 | >; | ||
54 | |||
55 | flash@0,2000000 { | ||
56 | compatible = "cfi-flash"; | ||
57 | reg = <0 2000000 2000000>; | ||
58 | bank-width = <4>; | ||
59 | device-width = <2>; | ||
60 | }; | ||
61 | |||
62 | board-control@3,400000 { | ||
63 | reg = <3 400000 10>; | ||
64 | compatible = "fsl,ep88xc-bcsr"; | ||
65 | }; | ||
66 | }; | ||
67 | |||
68 | soc@fa200000 { | ||
69 | compatible = "fsl,mpc885", "fsl,pq1-soc"; | ||
70 | #address-cells = <1>; | ||
71 | #size-cells = <1>; | ||
72 | device_type = "soc"; | ||
73 | ranges = <0 fa200000 00004000>; | ||
74 | bus-frequency = <0>; | ||
75 | |||
76 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | ||
77 | reg = <fa200000 4000>; | ||
78 | |||
79 | mdio@e00 { | ||
80 | compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio"; | ||
81 | reg = <e00 188>; | ||
82 | #address-cells = <1>; | ||
83 | #size-cells = <0>; | ||
84 | |||
85 | PHY0: ethernet-phy@0 { | ||
86 | reg = <0>; | ||
87 | device_type = "ethernet-phy"; | ||
88 | }; | ||
89 | |||
90 | PHY1: ethernet-phy@1 { | ||
91 | reg = <1>; | ||
92 | device_type = "ethernet-phy"; | ||
93 | }; | ||
94 | }; | ||
95 | |||
96 | ethernet@e00 { | ||
97 | device_type = "network"; | ||
98 | compatible = "fsl,mpc885-fec-enet", | ||
99 | "fsl,pq1-fec-enet"; | ||
100 | reg = <e00 188>; | ||
101 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
102 | interrupts = <3 1>; | ||
103 | interrupt-parent = <&PIC>; | ||
104 | phy-handle = <&PHY0>; | ||
105 | linux,network-index = <0>; | ||
106 | }; | ||
107 | |||
108 | ethernet@1e00 { | ||
109 | device_type = "network"; | ||
110 | compatible = "fsl,mpc885-fec-enet", | ||
111 | "fsl,pq1-fec-enet"; | ||
112 | reg = <1e00 188>; | ||
113 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
114 | interrupts = <7 1>; | ||
115 | interrupt-parent = <&PIC>; | ||
116 | phy-handle = <&PHY1>; | ||
117 | linux,network-index = <1>; | ||
118 | }; | ||
119 | |||
120 | PIC: interrupt-controller@0 { | ||
121 | interrupt-controller; | ||
122 | #interrupt-cells = <2>; | ||
123 | reg = <0 24>; | ||
124 | compatible = "fsl,mpc885-pic", "fsl,pq1-pic"; | ||
125 | }; | ||
126 | |||
127 | pcmcia@80 { | ||
128 | #address-cells = <3>; | ||
129 | #interrupt-cells = <1>; | ||
130 | #size-cells = <2>; | ||
131 | compatible = "fsl,pq-pcmcia"; | ||
132 | device_type = "pcmcia"; | ||
133 | reg = <80 80>; | ||
134 | interrupt-parent = <&PIC>; | ||
135 | interrupts = <d 1>; | ||
136 | }; | ||
137 | |||
138 | cpm@9c0 { | ||
139 | #address-cells = <1>; | ||
140 | #size-cells = <1>; | ||
141 | compatible = "fsl,mpc885-cpm", "fsl,cpm1"; | ||
142 | command-proc = <9c0>; | ||
143 | interrupts = <0>; // cpm error interrupt | ||
144 | interrupt-parent = <&CPM_PIC>; | ||
145 | reg = <9c0 40>; | ||
146 | ranges; | ||
147 | |||
148 | muram@2000 { | ||
149 | #address-cells = <1>; | ||
150 | #size-cells = <1>; | ||
151 | ranges = <0 2000 2000>; | ||
152 | |||
153 | data@0 { | ||
154 | compatible = "fsl,cpm-muram-data"; | ||
155 | reg = <0 1c00>; | ||
156 | }; | ||
157 | }; | ||
158 | |||
159 | brg@9f0 { | ||
160 | compatible = "fsl,mpc885-brg", | ||
161 | "fsl,cpm1-brg", | ||
162 | "fsl,cpm-brg"; | ||
163 | reg = <9f0 10>; | ||
164 | }; | ||
165 | |||
166 | CPM_PIC: interrupt-controller@930 { | ||
167 | interrupt-controller; | ||
168 | #interrupt-cells = <1>; | ||
169 | interrupts = <5 2 0 2>; | ||
170 | interrupt-parent = <&PIC>; | ||
171 | reg = <930 20>; | ||
172 | compatible = "fsl,mpc885-cpm-pic", | ||
173 | "fsl,cpm1-pic"; | ||
174 | }; | ||
175 | |||
176 | // MON-1 | ||
177 | serial@a80 { | ||
178 | device_type = "serial"; | ||
179 | compatible = "fsl,mpc885-smc-uart", | ||
180 | "fsl,cpm1-smc-uart"; | ||
181 | reg = <a80 10 3e80 40>; | ||
182 | interrupts = <4>; | ||
183 | interrupt-parent = <&CPM_PIC>; | ||
184 | fsl,cpm-brg = <1>; | ||
185 | fsl,cpm-command = <0090>; | ||
186 | linux,planetcore-label = "SMC1"; | ||
187 | }; | ||
188 | |||
189 | // SER-1 | ||
190 | serial@a20 { | ||
191 | device_type = "serial"; | ||
192 | compatible = "fsl,mpc885-scc-uart", | ||
193 | "fsl,cpm1-scc-uart"; | ||
194 | reg = <a20 20 3d00 80>; | ||
195 | interrupts = <1d>; | ||
196 | interrupt-parent = <&CPM_PIC>; | ||
197 | fsl,cpm-brg = <2>; | ||
198 | fsl,cpm-command = <0040>; | ||
199 | linux,planetcore-label = "SCC2"; | ||
200 | }; | ||
201 | |||
202 | usb@a00 { | ||
203 | #address-cells = <1>; | ||
204 | #size-cells = <0>; | ||
205 | compatible = "fsl,mpc885-usb", | ||
206 | "fsl,cpm1-usb"; | ||
207 | reg = <a00 18 1c00 80>; | ||
208 | interrupt-parent = <&CPM_PIC>; | ||
209 | interrupts = <1e>; | ||
210 | fsl,cpm-command = <0000>; | ||
211 | }; | ||
212 | }; | ||
213 | }; | ||
214 | }; | ||
diff --git a/arch/powerpc/boot/dts/holly.dts b/arch/powerpc/boot/dts/holly.dts index 80a4fab8ee37..b5d87895fe06 100644 --- a/arch/powerpc/boot/dts/holly.dts +++ b/arch/powerpc/boot/dts/holly.dts | |||
@@ -8,10 +8,6 @@ | |||
8 | * This file is licensed under the terms of the GNU General Public | 8 | * This file is licensed under the terms of the GNU General Public |
9 | * License version 2. This program is licensed "as is" without | 9 | * License version 2. This program is licensed "as is" without |
10 | * any warranty of any kind, whether express or implied. | 10 | * any warranty of any kind, whether express or implied. |
11 | * | ||
12 | * To build: | ||
13 | * dtc -I dts -O asm -o holly.S -b 0 holly.dts | ||
14 | * dtc -I dts -O dtb -o holly.dtb -b 0 holly.dts | ||
15 | */ | 11 | */ |
16 | 12 | ||
17 | / { | 13 | / { |
@@ -35,7 +31,6 @@ | |||
35 | timebase-frequency = <2faf080>; | 31 | timebase-frequency = <2faf080>; |
36 | clock-frequency = <23c34600>; | 32 | clock-frequency = <23c34600>; |
37 | bus-frequency = <bebc200>; | 33 | bus-frequency = <bebc200>; |
38 | 32-bit; | ||
39 | }; | 34 | }; |
40 | }; | 35 | }; |
41 | 36 | ||
diff --git a/arch/powerpc/boot/dts/kilauea.dts b/arch/powerpc/boot/dts/kilauea.dts new file mode 100644 index 000000000000..c824e8f06454 --- /dev/null +++ b/arch/powerpc/boot/dts/kilauea.dts | |||
@@ -0,0 +1,252 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Kilauea (405EX) | ||
3 | * | ||
4 | * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without | ||
8 | * any warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | / { | ||
12 | #address-cells = <1>; | ||
13 | #size-cells = <1>; | ||
14 | model = "amcc,kilauea"; | ||
15 | compatible = "amcc,kilauea"; | ||
16 | dcr-parent = <&/cpus/PowerPC,405EX@0>; | ||
17 | |||
18 | cpus { | ||
19 | #address-cells = <1>; | ||
20 | #size-cells = <0>; | ||
21 | |||
22 | PowerPC,405EX@0 { | ||
23 | device_type = "cpu"; | ||
24 | reg = <0>; | ||
25 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
26 | timebase-frequency = <0>; /* Filled in by U-Boot */ | ||
27 | i-cache-line-size = <20>; | ||
28 | d-cache-line-size = <20>; | ||
29 | i-cache-size = <4000>; /* 16 kB */ | ||
30 | d-cache-size = <4000>; /* 16 kB */ | ||
31 | dcr-controller; | ||
32 | dcr-access-method = "native"; | ||
33 | }; | ||
34 | }; | ||
35 | |||
36 | memory { | ||
37 | device_type = "memory"; | ||
38 | reg = <0 0>; /* Filled in by U-Boot */ | ||
39 | }; | ||
40 | |||
41 | UIC0: interrupt-controller { | ||
42 | compatible = "ibm,uic-405ex", "ibm,uic"; | ||
43 | interrupt-controller; | ||
44 | cell-index = <0>; | ||
45 | dcr-reg = <0c0 009>; | ||
46 | #address-cells = <0>; | ||
47 | #size-cells = <0>; | ||
48 | #interrupt-cells = <2>; | ||
49 | }; | ||
50 | |||
51 | UIC1: interrupt-controller1 { | ||
52 | compatible = "ibm,uic-405ex","ibm,uic"; | ||
53 | interrupt-controller; | ||
54 | cell-index = <1>; | ||
55 | dcr-reg = <0d0 009>; | ||
56 | #address-cells = <0>; | ||
57 | #size-cells = <0>; | ||
58 | #interrupt-cells = <2>; | ||
59 | interrupts = <1e 4 1f 4>; /* cascade */ | ||
60 | interrupt-parent = <&UIC0>; | ||
61 | }; | ||
62 | |||
63 | UIC2: interrupt-controller2 { | ||
64 | compatible = "ibm,uic-405ex","ibm,uic"; | ||
65 | interrupt-controller; | ||
66 | cell-index = <2>; | ||
67 | dcr-reg = <0e0 009>; | ||
68 | #address-cells = <0>; | ||
69 | #size-cells = <0>; | ||
70 | #interrupt-cells = <2>; | ||
71 | interrupts = <1c 4 1d 4>; /* cascade */ | ||
72 | interrupt-parent = <&UIC0>; | ||
73 | }; | ||
74 | |||
75 | plb { | ||
76 | compatible = "ibm,plb-405ex", "ibm,plb4"; | ||
77 | #address-cells = <1>; | ||
78 | #size-cells = <1>; | ||
79 | ranges; | ||
80 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
81 | |||
82 | SDRAM0: memory-controller { | ||
83 | compatible = "ibm,sdram-405ex"; | ||
84 | dcr-reg = <010 2>; | ||
85 | }; | ||
86 | |||
87 | MAL0: mcmal { | ||
88 | compatible = "ibm,mcmal-405ex", "ibm,mcmal2"; | ||
89 | dcr-reg = <180 62>; | ||
90 | num-tx-chans = <2>; | ||
91 | num-rx-chans = <2>; | ||
92 | interrupt-parent = <&MAL0>; | ||
93 | interrupts = <0 1 2 3 4>; | ||
94 | #interrupt-cells = <1>; | ||
95 | #address-cells = <0>; | ||
96 | #size-cells = <0>; | ||
97 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 | ||
98 | /*RXEOB*/ 1 &UIC0 b 4 | ||
99 | /*SERR*/ 2 &UIC1 0 4 | ||
100 | /*TXDE*/ 3 &UIC1 1 4 | ||
101 | /*RXDE*/ 4 &UIC1 2 4>; | ||
102 | interrupt-map-mask = <ffffffff>; | ||
103 | }; | ||
104 | |||
105 | POB0: opb { | ||
106 | compatible = "ibm,opb-405ex", "ibm,opb"; | ||
107 | #address-cells = <1>; | ||
108 | #size-cells = <1>; | ||
109 | ranges = <80000000 80000000 10000000 | ||
110 | ef600000 ef600000 a00000 | ||
111 | f0000000 f0000000 10000000>; | ||
112 | dcr-reg = <0a0 5>; | ||
113 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
114 | |||
115 | EBC0: ebc { | ||
116 | compatible = "ibm,ebc-405ex", "ibm,ebc"; | ||
117 | dcr-reg = <012 2>; | ||
118 | #address-cells = <2>; | ||
119 | #size-cells = <1>; | ||
120 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
121 | /* ranges property is supplied by U-Boot */ | ||
122 | interrupts = <5 1>; | ||
123 | interrupt-parent = <&UIC1>; | ||
124 | |||
125 | nor_flash@0,0 { | ||
126 | compatible = "amd,s29gl512n", "cfi-flash"; | ||
127 | bank-width = <2>; | ||
128 | reg = <0 000000 4000000>; | ||
129 | #address-cells = <1>; | ||
130 | #size-cells = <1>; | ||
131 | partition@0 { | ||
132 | label = "kernel"; | ||
133 | reg = <0 200000>; | ||
134 | }; | ||
135 | partition@200000 { | ||
136 | label = "root"; | ||
137 | reg = <200000 200000>; | ||
138 | }; | ||
139 | partition@400000 { | ||
140 | label = "user"; | ||
141 | reg = <400000 3b60000>; | ||
142 | }; | ||
143 | partition@3f60000 { | ||
144 | label = "env"; | ||
145 | reg = <3f60000 40000>; | ||
146 | }; | ||
147 | partition@3fa0000 { | ||
148 | label = "u-boot"; | ||
149 | reg = <3fa0000 60000>; | ||
150 | }; | ||
151 | }; | ||
152 | }; | ||
153 | |||
154 | UART0: serial@ef600200 { | ||
155 | device_type = "serial"; | ||
156 | compatible = "ns16550"; | ||
157 | reg = <ef600200 8>; | ||
158 | virtual-reg = <ef600200>; | ||
159 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
160 | current-speed = <0>; | ||
161 | interrupt-parent = <&UIC0>; | ||
162 | interrupts = <1a 4>; | ||
163 | }; | ||
164 | |||
165 | UART1: serial@ef600300 { | ||
166 | device_type = "serial"; | ||
167 | compatible = "ns16550"; | ||
168 | reg = <ef600300 8>; | ||
169 | virtual-reg = <ef600300>; | ||
170 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
171 | current-speed = <0>; | ||
172 | interrupt-parent = <&UIC0>; | ||
173 | interrupts = <1 4>; | ||
174 | }; | ||
175 | |||
176 | IIC0: i2c@ef600400 { | ||
177 | device_type = "i2c"; | ||
178 | compatible = "ibm,iic-405ex", "ibm,iic"; | ||
179 | reg = <ef600400 14>; | ||
180 | interrupt-parent = <&UIC0>; | ||
181 | interrupts = <2 4>; | ||
182 | }; | ||
183 | |||
184 | IIC1: i2c@ef600500 { | ||
185 | device_type = "i2c"; | ||
186 | compatible = "ibm,iic-405ex", "ibm,iic"; | ||
187 | reg = <ef600500 14>; | ||
188 | interrupt-parent = <&UIC0>; | ||
189 | interrupts = <7 4>; | ||
190 | }; | ||
191 | |||
192 | |||
193 | RGMII0: emac-rgmii@ef600b00 { | ||
194 | device_type = "rgmii-interface"; | ||
195 | compatible = "ibm,rgmii-405ex", "ibm,rgmii"; | ||
196 | reg = <ef600b00 104>; | ||
197 | }; | ||
198 | |||
199 | EMAC0: ethernet@ef600900 { | ||
200 | linux,network-index = <0>; | ||
201 | device_type = "network"; | ||
202 | compatible = "ibm,emac-405ex", "ibm,emac4"; | ||
203 | interrupt-parent = <&EMAC0>; | ||
204 | interrupts = <0 1>; | ||
205 | #interrupt-cells = <1>; | ||
206 | #address-cells = <0>; | ||
207 | #size-cells = <0>; | ||
208 | interrupt-map = </*Status*/ 0 &UIC0 18 4 | ||
209 | /*Wake*/ 1 &UIC1 1d 4>; | ||
210 | reg = <ef600900 70>; | ||
211 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
212 | mal-device = <&MAL0>; | ||
213 | mal-tx-channel = <0>; | ||
214 | mal-rx-channel = <0>; | ||
215 | cell-index = <0>; | ||
216 | max-frame-size = <5dc>; | ||
217 | rx-fifo-size = <1000>; | ||
218 | tx-fifo-size = <800>; | ||
219 | phy-mode = "rgmii"; | ||
220 | phy-map = <00000000>; | ||
221 | rgmii-device = <&RGMII0>; | ||
222 | rgmii-channel = <0>; | ||
223 | }; | ||
224 | |||
225 | EMAC1: ethernet@ef600a00 { | ||
226 | linux,network-index = <1>; | ||
227 | device_type = "network"; | ||
228 | compatible = "ibm,emac-405ex", "ibm,emac4"; | ||
229 | interrupt-parent = <&EMAC1>; | ||
230 | interrupts = <0 1>; | ||
231 | #interrupt-cells = <1>; | ||
232 | #address-cells = <0>; | ||
233 | #size-cells = <0>; | ||
234 | interrupt-map = </*Status*/ 0 &UIC0 19 4 | ||
235 | /*Wake*/ 1 &UIC1 1f 4>; | ||
236 | reg = <ef600a00 70>; | ||
237 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
238 | mal-device = <&MAL0>; | ||
239 | mal-tx-channel = <1>; | ||
240 | mal-rx-channel = <1>; | ||
241 | cell-index = <1>; | ||
242 | max-frame-size = <5dc>; | ||
243 | rx-fifo-size = <1000>; | ||
244 | tx-fifo-size = <800>; | ||
245 | phy-mode = "rgmii"; | ||
246 | phy-map = <00000000>; | ||
247 | rgmii-device = <&RGMII0>; | ||
248 | rgmii-channel = <1>; | ||
249 | }; | ||
250 | }; | ||
251 | }; | ||
252 | }; | ||
diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts index 122537419d9f..ec71ab819fee 100644 --- a/arch/powerpc/boot/dts/kuroboxHD.dts +++ b/arch/powerpc/boot/dts/kuroboxHD.dts | |||
@@ -15,9 +15,6 @@ | |||
15 | 15 | ||
16 | XXXX add flash parts, rtc, ?? | 16 | XXXX add flash parts, rtc, ?? |
17 | 17 | ||
18 | build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts" | ||
19 | |||
20 | |||
21 | */ | 18 | */ |
22 | 19 | ||
23 | / { | 20 | / { |
@@ -50,7 +47,6 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts" | |||
50 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ | 47 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ |
51 | #address-cells = <1>; | 48 | #address-cells = <1>; |
52 | #size-cells = <1>; | 49 | #size-cells = <1>; |
53 | #interrupt-cells = <2>; | ||
54 | device_type = "soc"; | 50 | device_type = "soc"; |
55 | compatible = "mpc10x"; | 51 | compatible = "mpc10x"; |
56 | store-gathering = <0>; /* 0 == off, !0 == on */ | 52 | store-gathering = <0>; /* 0 == off, !0 == on */ |
@@ -72,7 +68,7 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts" | |||
72 | 68 | ||
73 | rtc@32 { | 69 | rtc@32 { |
74 | device_type = "rtc"; | 70 | device_type = "rtc"; |
75 | compatible = "ricoh,rs5c372b"; | 71 | compatible = "ricoh,rs5c372a"; |
76 | reg = <32>; | 72 | reg = <32>; |
77 | }; | 73 | }; |
78 | }; | 74 | }; |
@@ -83,7 +79,7 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts" | |||
83 | reg = <80004500 8>; | 79 | reg = <80004500 8>; |
84 | clock-frequency = <5d08d88>; | 80 | clock-frequency = <5d08d88>; |
85 | current-speed = <2580>; | 81 | current-speed = <2580>; |
86 | interrupts = <9 2>; | 82 | interrupts = <9 0>; |
87 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
88 | }; | 84 | }; |
89 | 85 | ||
@@ -104,7 +100,6 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts" | |||
104 | compatible = "chrp,open-pic"; | 100 | compatible = "chrp,open-pic"; |
105 | interrupt-controller; | 101 | interrupt-controller; |
106 | reg = <80040000 40000>; | 102 | reg = <80040000 40000>; |
107 | built-in; | ||
108 | }; | 103 | }; |
109 | 104 | ||
110 | pci@fec00000 { | 105 | pci@fec00000 { |
diff --git a/arch/powerpc/boot/dts/kuroboxHG.dts b/arch/powerpc/boot/dts/kuroboxHG.dts index 579aa8b967d9..32ecd2319928 100644 --- a/arch/powerpc/boot/dts/kuroboxHG.dts +++ b/arch/powerpc/boot/dts/kuroboxHG.dts | |||
@@ -15,9 +15,6 @@ | |||
15 | 15 | ||
16 | XXXX add flash parts, rtc, ?? | 16 | XXXX add flash parts, rtc, ?? |
17 | 17 | ||
18 | build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts" | ||
19 | |||
20 | |||
21 | */ | 18 | */ |
22 | 19 | ||
23 | / { | 20 | / { |
@@ -50,7 +47,6 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts" | |||
50 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ | 47 | soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ |
51 | #address-cells = <1>; | 48 | #address-cells = <1>; |
52 | #size-cells = <1>; | 49 | #size-cells = <1>; |
53 | #interrupt-cells = <2>; | ||
54 | device_type = "soc"; | 50 | device_type = "soc"; |
55 | compatible = "mpc10x"; | 51 | compatible = "mpc10x"; |
56 | store-gathering = <0>; /* 0 == off, !0 == on */ | 52 | store-gathering = <0>; /* 0 == off, !0 == on */ |
@@ -72,7 +68,7 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts" | |||
72 | 68 | ||
73 | rtc@32 { | 69 | rtc@32 { |
74 | device_type = "rtc"; | 70 | device_type = "rtc"; |
75 | compatible = "ricoh,rs5c372b"; | 71 | compatible = "ricoh,rs5c372a"; |
76 | reg = <32>; | 72 | reg = <32>; |
77 | }; | 73 | }; |
78 | }; | 74 | }; |
@@ -83,7 +79,7 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts" | |||
83 | reg = <80004500 8>; | 79 | reg = <80004500 8>; |
84 | clock-frequency = <7c044a8>; | 80 | clock-frequency = <7c044a8>; |
85 | current-speed = <2580>; | 81 | current-speed = <2580>; |
86 | interrupts = <9 2>; | 82 | interrupts = <9 0>; |
87 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
88 | }; | 84 | }; |
89 | 85 | ||
@@ -104,7 +100,6 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts" | |||
104 | compatible = "chrp,open-pic"; | 100 | compatible = "chrp,open-pic"; |
105 | interrupt-controller; | 101 | interrupt-controller; |
106 | reg = <80040000 40000>; | 102 | reg = <80040000 40000>; |
107 | built-in; | ||
108 | }; | 103 | }; |
109 | 104 | ||
110 | pci@fec00000 { | 105 | pci@fec00000 { |
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts index d29308fe4c24..bc45f5fbb060 100644 --- a/arch/powerpc/boot/dts/lite5200.dts +++ b/arch/powerpc/boot/dts/lite5200.dts | |||
@@ -19,7 +19,7 @@ | |||
19 | / { | 19 | / { |
20 | model = "fsl,lite5200"; | 20 | model = "fsl,lite5200"; |
21 | // revision = "1.0"; | 21 | // revision = "1.0"; |
22 | compatible = "fsl,lite5200\0generic-mpc5200"; | 22 | compatible = "fsl,lite5200","generic-mpc5200"; |
23 | #address-cells = <1>; | 23 | #address-cells = <1>; |
24 | #size-cells = <1>; | 24 | #size-cells = <1>; |
25 | 25 | ||
@@ -37,7 +37,6 @@ | |||
37 | timebase-frequency = <0>; // from bootloader | 37 | timebase-frequency = <0>; // from bootloader |
38 | bus-frequency = <0>; // from bootloader | 38 | bus-frequency = <0>; // from bootloader |
39 | clock-frequency = <0>; // from bootloader | 39 | clock-frequency = <0>; // from bootloader |
40 | 32-bit; | ||
41 | }; | 40 | }; |
42 | }; | 41 | }; |
43 | 42 | ||
@@ -50,10 +49,9 @@ | |||
50 | model = "fsl,mpc5200"; | 49 | model = "fsl,mpc5200"; |
51 | compatible = "mpc5200"; | 50 | compatible = "mpc5200"; |
52 | revision = ""; // from bootloader | 51 | revision = ""; // from bootloader |
53 | #interrupt-cells = <3>; | ||
54 | device_type = "soc"; | 52 | device_type = "soc"; |
55 | ranges = <0 f0000000 f0010000>; | 53 | ranges = <0 f0000000 0000c000>; |
56 | reg = <f0000000 00010000>; | 54 | reg = <f0000000 00000100>; |
57 | bus-frequency = <0>; // from bootloader | 55 | bus-frequency = <0>; // from bootloader |
58 | system-frequency = <0>; // from bootloader | 56 | system-frequency = <0>; // from bootloader |
59 | 57 | ||
@@ -69,7 +67,6 @@ | |||
69 | device_type = "interrupt-controller"; | 67 | device_type = "interrupt-controller"; |
70 | compatible = "mpc5200-pic"; | 68 | compatible = "mpc5200-pic"; |
71 | reg = <500 80>; | 69 | reg = <500 80>; |
72 | built-in; | ||
73 | }; | 70 | }; |
74 | 71 | ||
75 | gpt@600 { // General Purpose Timer | 72 | gpt@600 { // General Purpose Timer |
@@ -185,27 +182,6 @@ | |||
185 | interrupt-parent = <&mpc5200_pic>; | 182 | interrupt-parent = <&mpc5200_pic>; |
186 | }; | 183 | }; |
187 | 184 | ||
188 | pci@0d00 { | ||
189 | #interrupt-cells = <1>; | ||
190 | #size-cells = <2>; | ||
191 | #address-cells = <3>; | ||
192 | device_type = "pci"; | ||
193 | compatible = "mpc5200-pci"; | ||
194 | reg = <d00 100>; | ||
195 | interrupt-map-mask = <f800 0 0 7>; | ||
196 | interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 | ||
197 | c000 0 0 2 &mpc5200_pic 0 0 3 | ||
198 | c000 0 0 3 &mpc5200_pic 0 0 3 | ||
199 | c000 0 0 4 &mpc5200_pic 0 0 3>; | ||
200 | clock-frequency = <0>; // From boot loader | ||
201 | interrupts = <2 8 0 2 9 0 2 a 0>; | ||
202 | interrupt-parent = <&mpc5200_pic>; | ||
203 | bus-range = <0 0>; | ||
204 | ranges = <42000000 0 80000000 80000000 0 20000000 | ||
205 | 02000000 0 a0000000 a0000000 0 10000000 | ||
206 | 01000000 0 00000000 b0000000 0 01000000>; | ||
207 | }; | ||
208 | |||
209 | spi@f00 { | 185 | spi@f00 { |
210 | device_type = "spi"; | 186 | device_type = "spi"; |
211 | compatible = "mpc5200-spi"; | 187 | compatible = "mpc5200-spi"; |
@@ -216,7 +192,7 @@ | |||
216 | 192 | ||
217 | usb@1000 { | 193 | usb@1000 { |
218 | device_type = "usb-ohci-be"; | 194 | device_type = "usb-ohci-be"; |
219 | compatible = "mpc5200-ohci\0ohci-be"; | 195 | compatible = "mpc5200-ohci","ohci-be"; |
220 | reg = <1000 ff>; | 196 | reg = <1000 ff>; |
221 | interrupts = <2 6 0>; | 197 | interrupts = <2 6 0>; |
222 | interrupt-parent = <&mpc5200_pic>; | 198 | interrupt-parent = <&mpc5200_pic>; |
@@ -317,7 +293,7 @@ | |||
317 | 293 | ||
318 | i2c@3d00 { | 294 | i2c@3d00 { |
319 | device_type = "i2c"; | 295 | device_type = "i2c"; |
320 | compatible = "mpc5200-i2c\0fsl-i2c"; | 296 | compatible = "mpc5200-i2c","fsl-i2c"; |
321 | cell-index = <0>; | 297 | cell-index = <0>; |
322 | reg = <3d00 40>; | 298 | reg = <3d00 40>; |
323 | interrupts = <2 f 0>; | 299 | interrupts = <2 f 0>; |
@@ -327,7 +303,7 @@ | |||
327 | 303 | ||
328 | i2c@3d40 { | 304 | i2c@3d40 { |
329 | device_type = "i2c"; | 305 | device_type = "i2c"; |
330 | compatible = "mpc5200-i2c\0fsl-i2c"; | 306 | compatible = "mpc5200-i2c","fsl-i2c"; |
331 | cell-index = <1>; | 307 | cell-index = <1>; |
332 | reg = <3d40 40>; | 308 | reg = <3d40 40>; |
333 | interrupts = <2 10 0>; | 309 | interrupts = <2 10 0>; |
@@ -336,8 +312,29 @@ | |||
336 | }; | 312 | }; |
337 | sram@8000 { | 313 | sram@8000 { |
338 | device_type = "sram"; | 314 | device_type = "sram"; |
339 | compatible = "mpc5200-sram\0sram"; | 315 | compatible = "mpc5200-sram","sram"; |
340 | reg = <8000 4000>; | 316 | reg = <8000 4000>; |
341 | }; | 317 | }; |
342 | }; | 318 | }; |
319 | |||
320 | pci@f0000d00 { | ||
321 | #interrupt-cells = <1>; | ||
322 | #size-cells = <2>; | ||
323 | #address-cells = <3>; | ||
324 | device_type = "pci"; | ||
325 | compatible = "mpc5200-pci"; | ||
326 | reg = <f0000d00 100>; | ||
327 | interrupt-map-mask = <f800 0 0 7>; | ||
328 | interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 | ||
329 | c000 0 0 2 &mpc5200_pic 0 0 3 | ||
330 | c000 0 0 3 &mpc5200_pic 0 0 3 | ||
331 | c000 0 0 4 &mpc5200_pic 0 0 3>; | ||
332 | clock-frequency = <0>; // From boot loader | ||
333 | interrupts = <2 8 0 2 9 0 2 a 0>; | ||
334 | interrupt-parent = <&mpc5200_pic>; | ||
335 | bus-range = <0 0>; | ||
336 | ranges = <42000000 0 80000000 80000000 0 20000000 | ||
337 | 02000000 0 a0000000 a0000000 0 10000000 | ||
338 | 01000000 0 00000000 b0000000 0 01000000>; | ||
339 | }; | ||
343 | }; | 340 | }; |
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts index f242531f0451..a6bb1d0558ef 100644 --- a/arch/powerpc/boot/dts/lite5200b.dts +++ b/arch/powerpc/boot/dts/lite5200b.dts | |||
@@ -19,7 +19,7 @@ | |||
19 | / { | 19 | / { |
20 | model = "fsl,lite5200b"; | 20 | model = "fsl,lite5200b"; |
21 | // revision = "1.0"; | 21 | // revision = "1.0"; |
22 | compatible = "fsl,lite5200b\0generic-mpc5200"; | 22 | compatible = "fsl,lite5200b","generic-mpc5200"; |
23 | #address-cells = <1>; | 23 | #address-cells = <1>; |
24 | #size-cells = <1>; | 24 | #size-cells = <1>; |
25 | 25 | ||
@@ -37,7 +37,6 @@ | |||
37 | timebase-frequency = <0>; // from bootloader | 37 | timebase-frequency = <0>; // from bootloader |
38 | bus-frequency = <0>; // from bootloader | 38 | bus-frequency = <0>; // from bootloader |
39 | clock-frequency = <0>; // from bootloader | 39 | clock-frequency = <0>; // from bootloader |
40 | 32-bit; | ||
41 | }; | 40 | }; |
42 | }; | 41 | }; |
43 | 42 | ||
@@ -50,15 +49,14 @@ | |||
50 | model = "fsl,mpc5200b"; | 49 | model = "fsl,mpc5200b"; |
51 | compatible = "mpc5200"; | 50 | compatible = "mpc5200"; |
52 | revision = ""; // from bootloader | 51 | revision = ""; // from bootloader |
53 | #interrupt-cells = <3>; | ||
54 | device_type = "soc"; | 52 | device_type = "soc"; |
55 | ranges = <0 f0000000 f0010000>; | 53 | ranges = <0 f0000000 0000c000>; |
56 | reg = <f0000000 00010000>; | 54 | reg = <f0000000 00000100>; |
57 | bus-frequency = <0>; // from bootloader | 55 | bus-frequency = <0>; // from bootloader |
58 | system-frequency = <0>; // from bootloader | 56 | system-frequency = <0>; // from bootloader |
59 | 57 | ||
60 | cdm@200 { | 58 | cdm@200 { |
61 | compatible = "mpc5200b-cdm\0mpc5200-cdm"; | 59 | compatible = "mpc5200b-cdm","mpc5200-cdm"; |
62 | reg = <200 38>; | 60 | reg = <200 38>; |
63 | }; | 61 | }; |
64 | 62 | ||
@@ -67,13 +65,12 @@ | |||
67 | interrupt-controller; | 65 | interrupt-controller; |
68 | #interrupt-cells = <3>; | 66 | #interrupt-cells = <3>; |
69 | device_type = "interrupt-controller"; | 67 | device_type = "interrupt-controller"; |
70 | compatible = "mpc5200b-pic\0mpc5200-pic"; | 68 | compatible = "mpc5200b-pic","mpc5200-pic"; |
71 | reg = <500 80>; | 69 | reg = <500 80>; |
72 | built-in; | ||
73 | }; | 70 | }; |
74 | 71 | ||
75 | gpt@600 { // General Purpose Timer | 72 | gpt@600 { // General Purpose Timer |
76 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 73 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
77 | device_type = "gpt"; | 74 | device_type = "gpt"; |
78 | cell-index = <0>; | 75 | cell-index = <0>; |
79 | reg = <600 10>; | 76 | reg = <600 10>; |
@@ -83,7 +80,7 @@ | |||
83 | }; | 80 | }; |
84 | 81 | ||
85 | gpt@610 { // General Purpose Timer | 82 | gpt@610 { // General Purpose Timer |
86 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 83 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
87 | device_type = "gpt"; | 84 | device_type = "gpt"; |
88 | cell-index = <1>; | 85 | cell-index = <1>; |
89 | reg = <610 10>; | 86 | reg = <610 10>; |
@@ -92,7 +89,7 @@ | |||
92 | }; | 89 | }; |
93 | 90 | ||
94 | gpt@620 { // General Purpose Timer | 91 | gpt@620 { // General Purpose Timer |
95 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 92 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
96 | device_type = "gpt"; | 93 | device_type = "gpt"; |
97 | cell-index = <2>; | 94 | cell-index = <2>; |
98 | reg = <620 10>; | 95 | reg = <620 10>; |
@@ -101,7 +98,7 @@ | |||
101 | }; | 98 | }; |
102 | 99 | ||
103 | gpt@630 { // General Purpose Timer | 100 | gpt@630 { // General Purpose Timer |
104 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 101 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
105 | device_type = "gpt"; | 102 | device_type = "gpt"; |
106 | cell-index = <3>; | 103 | cell-index = <3>; |
107 | reg = <630 10>; | 104 | reg = <630 10>; |
@@ -110,7 +107,7 @@ | |||
110 | }; | 107 | }; |
111 | 108 | ||
112 | gpt@640 { // General Purpose Timer | 109 | gpt@640 { // General Purpose Timer |
113 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 110 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
114 | device_type = "gpt"; | 111 | device_type = "gpt"; |
115 | cell-index = <4>; | 112 | cell-index = <4>; |
116 | reg = <640 10>; | 113 | reg = <640 10>; |
@@ -119,7 +116,7 @@ | |||
119 | }; | 116 | }; |
120 | 117 | ||
121 | gpt@650 { // General Purpose Timer | 118 | gpt@650 { // General Purpose Timer |
122 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 119 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
123 | device_type = "gpt"; | 120 | device_type = "gpt"; |
124 | cell-index = <5>; | 121 | cell-index = <5>; |
125 | reg = <650 10>; | 122 | reg = <650 10>; |
@@ -128,7 +125,7 @@ | |||
128 | }; | 125 | }; |
129 | 126 | ||
130 | gpt@660 { // General Purpose Timer | 127 | gpt@660 { // General Purpose Timer |
131 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 128 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
132 | device_type = "gpt"; | 129 | device_type = "gpt"; |
133 | cell-index = <6>; | 130 | cell-index = <6>; |
134 | reg = <660 10>; | 131 | reg = <660 10>; |
@@ -137,7 +134,7 @@ | |||
137 | }; | 134 | }; |
138 | 135 | ||
139 | gpt@670 { // General Purpose Timer | 136 | gpt@670 { // General Purpose Timer |
140 | compatible = "mpc5200b-gpt\0mpc5200-gpt"; | 137 | compatible = "mpc5200b-gpt","mpc5200-gpt"; |
141 | device_type = "gpt"; | 138 | device_type = "gpt"; |
142 | cell-index = <7>; | 139 | cell-index = <7>; |
143 | reg = <670 10>; | 140 | reg = <670 10>; |
@@ -146,7 +143,7 @@ | |||
146 | }; | 143 | }; |
147 | 144 | ||
148 | rtc@800 { // Real time clock | 145 | rtc@800 { // Real time clock |
149 | compatible = "mpc5200b-rtc\0mpc5200-rtc"; | 146 | compatible = "mpc5200b-rtc","mpc5200-rtc"; |
150 | device_type = "rtc"; | 147 | device_type = "rtc"; |
151 | reg = <800 100>; | 148 | reg = <800 100>; |
152 | interrupts = <1 5 0 1 6 0>; | 149 | interrupts = <1 5 0 1 6 0>; |
@@ -155,7 +152,7 @@ | |||
155 | 152 | ||
156 | mscan@900 { | 153 | mscan@900 { |
157 | device_type = "mscan"; | 154 | device_type = "mscan"; |
158 | compatible = "mpc5200b-mscan\0mpc5200-mscan"; | 155 | compatible = "mpc5200b-mscan","mpc5200-mscan"; |
159 | cell-index = <0>; | 156 | cell-index = <0>; |
160 | interrupts = <2 11 0>; | 157 | interrupts = <2 11 0>; |
161 | interrupt-parent = <&mpc5200_pic>; | 158 | interrupt-parent = <&mpc5200_pic>; |
@@ -164,7 +161,7 @@ | |||
164 | 161 | ||
165 | mscan@980 { | 162 | mscan@980 { |
166 | device_type = "mscan"; | 163 | device_type = "mscan"; |
167 | compatible = "mpc5200b-mscan\0mpc5200-mscan"; | 164 | compatible = "mpc5200b-mscan","mpc5200-mscan"; |
168 | cell-index = <1>; | 165 | cell-index = <1>; |
169 | interrupts = <2 12 0>; | 166 | interrupts = <2 12 0>; |
170 | interrupt-parent = <&mpc5200_pic>; | 167 | interrupt-parent = <&mpc5200_pic>; |
@@ -172,48 +169,22 @@ | |||
172 | }; | 169 | }; |
173 | 170 | ||
174 | gpio@b00 { | 171 | gpio@b00 { |
175 | compatible = "mpc5200b-gpio\0mpc5200-gpio"; | 172 | compatible = "mpc5200b-gpio","mpc5200-gpio"; |
176 | reg = <b00 40>; | 173 | reg = <b00 40>; |
177 | interrupts = <1 7 0>; | 174 | interrupts = <1 7 0>; |
178 | interrupt-parent = <&mpc5200_pic>; | 175 | interrupt-parent = <&mpc5200_pic>; |
179 | }; | 176 | }; |
180 | 177 | ||
181 | gpio-wkup@c00 { | 178 | gpio-wkup@c00 { |
182 | compatible = "mpc5200b-gpio-wkup\0mpc5200-gpio-wkup"; | 179 | compatible = "mpc5200b-gpio-wkup","mpc5200-gpio-wkup"; |
183 | reg = <c00 40>; | 180 | reg = <c00 40>; |
184 | interrupts = <1 8 0 0 3 0>; | 181 | interrupts = <1 8 0 0 3 0>; |
185 | interrupt-parent = <&mpc5200_pic>; | 182 | interrupt-parent = <&mpc5200_pic>; |
186 | }; | 183 | }; |
187 | 184 | ||
188 | pci@0d00 { | ||
189 | #interrupt-cells = <1>; | ||
190 | #size-cells = <2>; | ||
191 | #address-cells = <3>; | ||
192 | device_type = "pci"; | ||
193 | compatible = "mpc5200b-pci\0mpc5200-pci"; | ||
194 | reg = <d00 100>; | ||
195 | interrupt-map-mask = <f800 0 0 7>; | ||
196 | interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 // 1st slot | ||
197 | c000 0 0 2 &mpc5200_pic 1 1 3 | ||
198 | c000 0 0 3 &mpc5200_pic 1 2 3 | ||
199 | c000 0 0 4 &mpc5200_pic 1 3 3 | ||
200 | |||
201 | c800 0 0 1 &mpc5200_pic 1 1 3 // 2nd slot | ||
202 | c800 0 0 2 &mpc5200_pic 1 2 3 | ||
203 | c800 0 0 3 &mpc5200_pic 1 3 3 | ||
204 | c800 0 0 4 &mpc5200_pic 0 0 3>; | ||
205 | clock-frequency = <0>; // From boot loader | ||
206 | interrupts = <2 8 0 2 9 0 2 a 0>; | ||
207 | interrupt-parent = <&mpc5200_pic>; | ||
208 | bus-range = <0 0>; | ||
209 | ranges = <42000000 0 80000000 80000000 0 20000000 | ||
210 | 02000000 0 a0000000 a0000000 0 10000000 | ||
211 | 01000000 0 00000000 b0000000 0 01000000>; | ||
212 | }; | ||
213 | |||
214 | spi@f00 { | 185 | spi@f00 { |
215 | device_type = "spi"; | 186 | device_type = "spi"; |
216 | compatible = "mpc5200b-spi\0mpc5200-spi"; | 187 | compatible = "mpc5200b-spi","mpc5200-spi"; |
217 | reg = <f00 20>; | 188 | reg = <f00 20>; |
218 | interrupts = <2 d 0 2 e 0>; | 189 | interrupts = <2 d 0 2 e 0>; |
219 | interrupt-parent = <&mpc5200_pic>; | 190 | interrupt-parent = <&mpc5200_pic>; |
@@ -221,7 +192,7 @@ | |||
221 | 192 | ||
222 | usb@1000 { | 193 | usb@1000 { |
223 | device_type = "usb-ohci-be"; | 194 | device_type = "usb-ohci-be"; |
224 | compatible = "mpc5200b-ohci\0mpc5200-ohci\0ohci-be"; | 195 | compatible = "mpc5200b-ohci","mpc5200-ohci","ohci-be"; |
225 | reg = <1000 ff>; | 196 | reg = <1000 ff>; |
226 | interrupts = <2 6 0>; | 197 | interrupts = <2 6 0>; |
227 | interrupt-parent = <&mpc5200_pic>; | 198 | interrupt-parent = <&mpc5200_pic>; |
@@ -229,7 +200,7 @@ | |||
229 | 200 | ||
230 | bestcomm@1200 { | 201 | bestcomm@1200 { |
231 | device_type = "dma-controller"; | 202 | device_type = "dma-controller"; |
232 | compatible = "mpc5200b-bestcomm\0mpc5200-bestcomm"; | 203 | compatible = "mpc5200b-bestcomm","mpc5200-bestcomm"; |
233 | reg = <1200 80>; | 204 | reg = <1200 80>; |
234 | interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 | 205 | interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 |
235 | 3 4 0 3 5 0 3 6 0 3 7 0 | 206 | 3 4 0 3 5 0 3 6 0 3 7 0 |
@@ -239,13 +210,13 @@ | |||
239 | }; | 210 | }; |
240 | 211 | ||
241 | xlb@1f00 { | 212 | xlb@1f00 { |
242 | compatible = "mpc5200b-xlb\0mpc5200-xlb"; | 213 | compatible = "mpc5200b-xlb","mpc5200-xlb"; |
243 | reg = <1f00 100>; | 214 | reg = <1f00 100>; |
244 | }; | 215 | }; |
245 | 216 | ||
246 | serial@2000 { // PSC1 | 217 | serial@2000 { // PSC1 |
247 | device_type = "serial"; | 218 | device_type = "serial"; |
248 | compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; | 219 | compatible = "mpc5200b-psc-uart","mpc5200-psc-uart"; |
249 | port-number = <0>; // Logical port assignment | 220 | port-number = <0>; // Logical port assignment |
250 | cell-index = <0>; | 221 | cell-index = <0>; |
251 | reg = <2000 100>; | 222 | reg = <2000 100>; |
@@ -256,7 +227,7 @@ | |||
256 | // PSC2 in ac97 mode example | 227 | // PSC2 in ac97 mode example |
257 | //ac97@2200 { // PSC2 | 228 | //ac97@2200 { // PSC2 |
258 | // device_type = "sound"; | 229 | // device_type = "sound"; |
259 | // compatible = "mpc5200b-psc-ac97\0mpc5200-psc-ac97"; | 230 | // compatible = "mpc5200b-psc-ac97","mpc5200-psc-ac97"; |
260 | // cell-index = <1>; | 231 | // cell-index = <1>; |
261 | // reg = <2200 100>; | 232 | // reg = <2200 100>; |
262 | // interrupts = <2 2 0>; | 233 | // interrupts = <2 2 0>; |
@@ -276,7 +247,7 @@ | |||
276 | // PSC4 in uart mode example | 247 | // PSC4 in uart mode example |
277 | //serial@2600 { // PSC4 | 248 | //serial@2600 { // PSC4 |
278 | // device_type = "serial"; | 249 | // device_type = "serial"; |
279 | // compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; | 250 | // compatible = "mpc5200b-psc-uart","mpc5200-psc-uart"; |
280 | // cell-index = <3>; | 251 | // cell-index = <3>; |
281 | // reg = <2600 100>; | 252 | // reg = <2600 100>; |
282 | // interrupts = <2 b 0>; | 253 | // interrupts = <2 b 0>; |
@@ -286,7 +257,7 @@ | |||
286 | // PSC5 in uart mode example | 257 | // PSC5 in uart mode example |
287 | //serial@2800 { // PSC5 | 258 | //serial@2800 { // PSC5 |
288 | // device_type = "serial"; | 259 | // device_type = "serial"; |
289 | // compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; | 260 | // compatible = "mpc5200b-psc-uart","mpc5200-psc-uart"; |
290 | // cell-index = <4>; | 261 | // cell-index = <4>; |
291 | // reg = <2800 100>; | 262 | // reg = <2800 100>; |
292 | // interrupts = <2 c 0>; | 263 | // interrupts = <2 c 0>; |
@@ -296,7 +267,7 @@ | |||
296 | // PSC6 in spi mode example | 267 | // PSC6 in spi mode example |
297 | //spi@2c00 { // PSC6 | 268 | //spi@2c00 { // PSC6 |
298 | // device_type = "spi"; | 269 | // device_type = "spi"; |
299 | // compatible = "mpc5200b-psc-spi\0mpc5200-psc-spi"; | 270 | // compatible = "mpc5200b-psc-spi","mpc5200-psc-spi"; |
300 | // cell-index = <5>; | 271 | // cell-index = <5>; |
301 | // reg = <2c00 100>; | 272 | // reg = <2c00 100>; |
302 | // interrupts = <2 4 0>; | 273 | // interrupts = <2 4 0>; |
@@ -305,7 +276,7 @@ | |||
305 | 276 | ||
306 | ethernet@3000 { | 277 | ethernet@3000 { |
307 | device_type = "network"; | 278 | device_type = "network"; |
308 | compatible = "mpc5200b-fec\0mpc5200-fec"; | 279 | compatible = "mpc5200b-fec","mpc5200-fec"; |
309 | reg = <3000 800>; | 280 | reg = <3000 800>; |
310 | mac-address = [ 02 03 04 05 06 07 ]; // Bad! | 281 | mac-address = [ 02 03 04 05 06 07 ]; // Bad! |
311 | interrupts = <2 5 0>; | 282 | interrupts = <2 5 0>; |
@@ -314,7 +285,7 @@ | |||
314 | 285 | ||
315 | ata@3a00 { | 286 | ata@3a00 { |
316 | device_type = "ata"; | 287 | device_type = "ata"; |
317 | compatible = "mpc5200b-ata\0mpc5200-ata"; | 288 | compatible = "mpc5200b-ata","mpc5200-ata"; |
318 | reg = <3a00 100>; | 289 | reg = <3a00 100>; |
319 | interrupts = <2 7 0>; | 290 | interrupts = <2 7 0>; |
320 | interrupt-parent = <&mpc5200_pic>; | 291 | interrupt-parent = <&mpc5200_pic>; |
@@ -322,7 +293,7 @@ | |||
322 | 293 | ||
323 | i2c@3d00 { | 294 | i2c@3d00 { |
324 | device_type = "i2c"; | 295 | device_type = "i2c"; |
325 | compatible = "mpc5200b-i2c\0mpc5200-i2c\0fsl-i2c"; | 296 | compatible = "mpc5200b-i2c","mpc5200-i2c","fsl-i2c"; |
326 | cell-index = <0>; | 297 | cell-index = <0>; |
327 | reg = <3d00 40>; | 298 | reg = <3d00 40>; |
328 | interrupts = <2 f 0>; | 299 | interrupts = <2 f 0>; |
@@ -332,7 +303,7 @@ | |||
332 | 303 | ||
333 | i2c@3d40 { | 304 | i2c@3d40 { |
334 | device_type = "i2c"; | 305 | device_type = "i2c"; |
335 | compatible = "mpc5200b-i2c\0mpc5200-i2c\0fsl-i2c"; | 306 | compatible = "mpc5200b-i2c","mpc5200-i2c","fsl-i2c"; |
336 | cell-index = <1>; | 307 | cell-index = <1>; |
337 | reg = <3d40 40>; | 308 | reg = <3d40 40>; |
338 | interrupts = <2 10 0>; | 309 | interrupts = <2 10 0>; |
@@ -341,8 +312,34 @@ | |||
341 | }; | 312 | }; |
342 | sram@8000 { | 313 | sram@8000 { |
343 | device_type = "sram"; | 314 | device_type = "sram"; |
344 | compatible = "mpc5200b-sram\0mpc5200-sram\0sram"; | 315 | compatible = "mpc5200b-sram","mpc5200-sram","sram"; |
345 | reg = <8000 4000>; | 316 | reg = <8000 4000>; |
346 | }; | 317 | }; |
347 | }; | 318 | }; |
319 | |||
320 | pci@f0000d00 { | ||
321 | #interrupt-cells = <1>; | ||
322 | #size-cells = <2>; | ||
323 | #address-cells = <3>; | ||
324 | device_type = "pci"; | ||
325 | compatible = "mpc5200b-pci","mpc5200-pci"; | ||
326 | reg = <f0000d00 100>; | ||
327 | interrupt-map-mask = <f800 0 0 7>; | ||
328 | interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 // 1st slot | ||
329 | c000 0 0 2 &mpc5200_pic 1 1 3 | ||
330 | c000 0 0 3 &mpc5200_pic 1 2 3 | ||
331 | c000 0 0 4 &mpc5200_pic 1 3 3 | ||
332 | |||
333 | c800 0 0 1 &mpc5200_pic 1 1 3 // 2nd slot | ||
334 | c800 0 0 2 &mpc5200_pic 1 2 3 | ||
335 | c800 0 0 3 &mpc5200_pic 1 3 3 | ||
336 | c800 0 0 4 &mpc5200_pic 0 0 3>; | ||
337 | clock-frequency = <0>; // From boot loader | ||
338 | interrupts = <2 8 0 2 9 0 2 a 0>; | ||
339 | interrupt-parent = <&mpc5200_pic>; | ||
340 | bus-range = <0 0>; | ||
341 | ranges = <42000000 0 80000000 80000000 0 20000000 | ||
342 | 02000000 0 a0000000 a0000000 0 10000000 | ||
343 | 01000000 0 00000000 b0000000 0 01000000>; | ||
344 | }; | ||
348 | }; | 345 | }; |
diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts index b9158eb2797e..8fb542387436 100644 --- a/arch/powerpc/boot/dts/mpc7448hpc2.dts +++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts | |||
@@ -31,7 +31,6 @@ | |||
31 | timebase-frequency = <0>; // 33 MHz, from uboot | 31 | timebase-frequency = <0>; // 33 MHz, from uboot |
32 | clock-frequency = <0>; // From U-Boot | 32 | clock-frequency = <0>; // From U-Boot |
33 | bus-frequency = <0>; // From U-Boot | 33 | bus-frequency = <0>; // From U-Boot |
34 | 32-bit; | ||
35 | }; | 34 | }; |
36 | }; | 35 | }; |
37 | 36 | ||
@@ -44,7 +43,6 @@ | |||
44 | tsi108@c0000000 { | 43 | tsi108@c0000000 { |
45 | #address-cells = <1>; | 44 | #address-cells = <1>; |
46 | #size-cells = <1>; | 45 | #size-cells = <1>; |
47 | #interrupt-cells = <2>; | ||
48 | device_type = "tsi-bridge"; | 46 | device_type = "tsi-bridge"; |
49 | ranges = <00000000 c0000000 00010000>; | 47 | ranges = <00000000 c0000000 00010000>; |
50 | reg = <c0000000 00010000>; | 48 | reg = <c0000000 00010000>; |
@@ -80,6 +78,7 @@ | |||
80 | }; | 78 | }; |
81 | 79 | ||
82 | ethernet@6200 { | 80 | ethernet@6200 { |
81 | linux,network-index = <0>; | ||
83 | #size-cells = <0>; | 82 | #size-cells = <0>; |
84 | device_type = "network"; | 83 | device_type = "network"; |
85 | compatible = "tsi108-ethernet"; | 84 | compatible = "tsi108-ethernet"; |
@@ -92,6 +91,7 @@ | |||
92 | }; | 91 | }; |
93 | 92 | ||
94 | ethernet@6600 { | 93 | ethernet@6600 { |
94 | linux,network-index = <1>; | ||
95 | #address-cells = <1>; | 95 | #address-cells = <1>; |
96 | #size-cells = <0>; | 96 | #size-cells = <0>; |
97 | device_type = "network"; | 97 | device_type = "network"; |
@@ -128,7 +128,6 @@ | |||
128 | #address-cells = <0>; | 128 | #address-cells = <0>; |
129 | #interrupt-cells = <2>; | 129 | #interrupt-cells = <2>; |
130 | reg = <7400 400>; | 130 | reg = <7400 400>; |
131 | built-in; | ||
132 | compatible = "chrp,open-pic"; | 131 | compatible = "chrp,open-pic"; |
133 | device_type = "open-pic"; | 132 | device_type = "open-pic"; |
134 | big-endian; | 133 | big-endian; |
@@ -180,12 +179,14 @@ | |||
180 | device_type = "pic-router"; | 179 | device_type = "pic-router"; |
181 | #address-cells = <0>; | 180 | #address-cells = <0>; |
182 | #interrupt-cells = <2>; | 181 | #interrupt-cells = <2>; |
183 | built-in; | ||
184 | big-endian; | 182 | big-endian; |
185 | interrupts = <17 2>; | 183 | interrupts = <17 2>; |
186 | interrupt-parent = <&mpic>; | 184 | interrupt-parent = <&mpic>; |
187 | }; | 185 | }; |
188 | }; | 186 | }; |
189 | }; | 187 | }; |
188 | chosen { | ||
189 | linux,stdout-path = "/tsi108@c0000000/serial@7808"; | ||
190 | }; | ||
190 | 191 | ||
191 | }; | 192 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts index 1934b800278e..7285ca1325fd 100644 --- a/arch/powerpc/boot/dts/mpc8272ads.dts +++ b/arch/powerpc/boot/dts/mpc8272ads.dts | |||
@@ -10,207 +10,240 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | / { | 12 | / { |
13 | model = "MPC8272ADS"; | 13 | model = "MPC8272ADS"; |
14 | compatible = "MPC8260ADS"; | 14 | compatible = "fsl,mpc8272ads"; |
15 | #address-cells = <1>; | 15 | #address-cells = <1>; |
16 | #size-cells = <1>; | 16 | #size-cells = <1>; |
17 | 17 | ||
18 | cpus { | 18 | cpus { |
19 | #address-cells = <1>; | 19 | #address-cells = <1>; |
20 | #size-cells = <0>; | 20 | #size-cells = <0>; |
21 | 21 | ||
22 | PowerPC,8272@0 { | 22 | PowerPC,8272@0 { |
23 | device_type = "cpu"; | 23 | device_type = "cpu"; |
24 | reg = <0>; | 24 | reg = <0>; |
25 | d-cache-line-size = <20>; // 32 bytes | 25 | d-cache-line-size = <d#32>; |
26 | i-cache-line-size = <20>; // 32 bytes | 26 | i-cache-line-size = <d#32>; |
27 | d-cache-size = <4000>; // L1, 16K | 27 | d-cache-size = <d#16384>; |
28 | i-cache-size = <4000>; // L1, 16K | 28 | i-cache-size = <d#16384>; |
29 | timebase-frequency = <0>; | 29 | timebase-frequency = <0>; |
30 | bus-frequency = <0>; | 30 | bus-frequency = <0>; |
31 | clock-frequency = <0>; | 31 | clock-frequency = <0>; |
32 | 32-bit; | 32 | }; |
33 | }; | 33 | }; |
34 | }; | 34 | |
35 | 35 | memory { | |
36 | pci_pic: interrupt-controller@f8200000 { | 36 | device_type = "memory"; |
37 | #address-cells = <0>; | 37 | reg = <0 0>; |
38 | #interrupt-cells = <2>; | 38 | }; |
39 | interrupt-controller; | 39 | |
40 | reg = <f8200000 f8200004>; | 40 | localbus@f0010100 { |
41 | built-in; | 41 | compatible = "fsl,mpc8272-localbus", |
42 | device_type = "pci-pic"; | 42 | "fsl,pq2-localbus"; |
43 | }; | 43 | #address-cells = <2>; |
44 | memory { | 44 | #size-cells = <1>; |
45 | device_type = "memory"; | 45 | reg = <f0010100 40>; |
46 | reg = <00000000 4000000 f4500000 00000020>; | 46 | |
47 | }; | 47 | ranges = <0 0 fe000000 02000000 |
48 | 48 | 1 0 f4500000 00008000 | |
49 | chosen { | 49 | 3 0 f8200000 00008000>; |
50 | name = "chosen"; | 50 | |
51 | linux,platform = <0>; | 51 | flash@0,0 { |
52 | interrupt-controller = <&Cpm_pic>; | 52 | compatible = "jedec-flash"; |
53 | }; | 53 | reg = <0 0 2000000>; |
54 | 54 | bank-width = <4>; | |
55 | soc8272@f0000000 { | 55 | device-width = <1>; |
56 | #address-cells = <1>; | 56 | }; |
57 | #size-cells = <1>; | 57 | |
58 | #interrupt-cells = <2>; | 58 | board-control@1,0 { |
59 | device_type = "soc"; | 59 | reg = <1 0 20>; |
60 | ranges = <00000000 f0000000 00053000>; | 60 | compatible = "fsl,mpc8272ads-bcsr"; |
61 | reg = <f0000000 10000>; | 61 | }; |
62 | 62 | ||
63 | mdio@0 { | 63 | PCI_PIC: interrupt-controller@3,0 { |
64 | device_type = "mdio"; | 64 | compatible = "fsl,mpc8272ads-pci-pic", |
65 | compatible = "fs_enet"; | 65 | "fsl,pq2ads-pci-pic"; |
66 | reg = <0 0>; | 66 | #interrupt-cells = <1>; |
67 | #address-cells = <1>; | 67 | interrupt-controller; |
68 | #size-cells = <0>; | 68 | reg = <3 0 8>; |
69 | phy0:ethernet-phy@0 { | 69 | interrupt-parent = <&PIC>; |
70 | interrupt-parent = <&Cpm_pic>; | 70 | interrupts = <14 8>; |
71 | interrupts = <17 4>; | 71 | }; |
72 | reg = <0>; | 72 | }; |
73 | bitbang = [ 12 12 13 02 02 01 ]; | 73 | |
74 | device_type = "ethernet-phy"; | 74 | |
75 | }; | 75 | pci@f0010800 { |
76 | phy1:ethernet-phy@1 { | 76 | device_type = "pci"; |
77 | interrupt-parent = <&Cpm_pic>; | 77 | reg = <f0010800 10c f00101ac 8 f00101c4 8>; |
78 | interrupts = <17 4>; | 78 | compatible = "fsl,mpc8272-pci", "fsl,pq2-pci"; |
79 | bitbang = [ 12 12 13 02 02 01 ]; | 79 | #interrupt-cells = <1>; |
80 | reg = <3>; | 80 | #size-cells = <2>; |
81 | device_type = "ethernet-phy"; | 81 | #address-cells = <3>; |
82 | }; | 82 | clock-frequency = <d#66666666>; |
83 | }; | 83 | interrupt-map-mask = <f800 0 0 7>; |
84 | 84 | interrupt-map = < | |
85 | ethernet@24000 { | 85 | /* IDSEL 0x16 */ |
86 | #address-cells = <1>; | 86 | b000 0 0 1 &PCI_PIC 0 |
87 | #size-cells = <0>; | 87 | b000 0 0 2 &PCI_PIC 1 |
88 | device_type = "network"; | 88 | b000 0 0 3 &PCI_PIC 2 |
89 | device-id = <1>; | 89 | b000 0 0 4 &PCI_PIC 3 |
90 | compatible = "fs_enet"; | 90 | |
91 | model = "FCC"; | 91 | /* IDSEL 0x17 */ |
92 | reg = <11300 20 8400 100 11380 30>; | 92 | b800 0 0 1 &PCI_PIC 4 |
93 | mac-address = [ 00 11 2F 99 43 54 ]; | 93 | b800 0 0 2 &PCI_PIC 5 |
94 | interrupts = <20 2>; | 94 | b800 0 0 3 &PCI_PIC 6 |
95 | interrupt-parent = <&Cpm_pic>; | 95 | b800 0 0 4 &PCI_PIC 7 |
96 | phy-handle = <&Phy0>; | 96 | |
97 | rx-clock = <13>; | 97 | /* IDSEL 0x18 */ |
98 | tx-clock = <12>; | 98 | c000 0 0 1 &PCI_PIC 8 |
99 | }; | 99 | c000 0 0 2 &PCI_PIC 9 |
100 | 100 | c000 0 0 3 &PCI_PIC a | |
101 | ethernet@25000 { | 101 | c000 0 0 4 &PCI_PIC b>; |
102 | device_type = "network"; | 102 | |
103 | device-id = <2>; | 103 | interrupt-parent = <&PIC>; |
104 | compatible = "fs_enet"; | 104 | interrupts = <12 8>; |
105 | model = "FCC"; | 105 | ranges = <42000000 0 80000000 80000000 0 20000000 |
106 | reg = <11320 20 8500 100 113b0 30>; | 106 | 02000000 0 a0000000 a0000000 0 20000000 |
107 | mac-address = [ 00 11 2F 99 44 54 ]; | 107 | 01000000 0 00000000 f6000000 0 02000000>; |
108 | interrupts = <21 2>; | 108 | }; |
109 | interrupt-parent = <&Cpm_pic>; | 109 | |
110 | phy-handle = <&Phy1>; | 110 | soc@f0000000 { |
111 | rx-clock = <17>; | 111 | #address-cells = <1>; |
112 | tx-clock = <18>; | 112 | #size-cells = <1>; |
113 | }; | 113 | device_type = "soc"; |
114 | 114 | compatible = "fsl,mpc8272", "fsl,pq2-soc"; | |
115 | cpm@f0000000 { | 115 | ranges = <00000000 f0000000 00053000>; |
116 | #address-cells = <1>; | 116 | |
117 | #size-cells = <1>; | 117 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). |
118 | #interrupt-cells = <2>; | 118 | reg = <f0000000 00053000>; |
119 | device_type = "cpm"; | 119 | |
120 | model = "CPM2"; | 120 | cpm@119c0 { |
121 | ranges = <00000000 00000000 20000>; | 121 | #address-cells = <1>; |
122 | reg = <0 20000>; | 122 | #size-cells = <1>; |
123 | command-proc = <119c0>; | 123 | compatible = "fsl,mpc8272-cpm", "fsl,cpm2"; |
124 | brg-frequency = <17D7840>; | 124 | reg = <119c0 30>; |
125 | cpm_clk = <BEBC200>; | 125 | ranges; |
126 | 126 | ||
127 | scc@11a00 { | 127 | muram@0 { |
128 | device_type = "serial"; | 128 | #address-cells = <1>; |
129 | compatible = "cpm_uart"; | 129 | #size-cells = <1>; |
130 | model = "SCC"; | 130 | ranges = <0 0 10000>; |
131 | device-id = <1>; | 131 | |
132 | reg = <11a00 20 8000 100>; | 132 | data@0 { |
133 | current-speed = <1c200>; | 133 | compatible = "fsl,cpm-muram-data"; |
134 | interrupts = <28 2>; | 134 | reg = <0 2000 9800 800>; |
135 | interrupt-parent = <&Cpm_pic>; | 135 | }; |
136 | clock-setup = <0 00ffffff>; | 136 | }; |
137 | rx-clock = <1>; | 137 | |
138 | tx-clock = <1>; | 138 | brg@119f0 { |
139 | }; | 139 | compatible = "fsl,mpc8272-brg", |
140 | 140 | "fsl,cpm2-brg", | |
141 | scc@11a60 { | 141 | "fsl,cpm-brg"; |
142 | device_type = "serial"; | 142 | reg = <119f0 10 115f0 10>; |
143 | compatible = "cpm_uart"; | 143 | }; |
144 | model = "SCC"; | 144 | |
145 | device-id = <4>; | 145 | serial@11a00 { |
146 | reg = <11a60 20 8300 100>; | 146 | device_type = "serial"; |
147 | current-speed = <1c200>; | 147 | compatible = "fsl,mpc8272-scc-uart", |
148 | interrupts = <2b 2>; | 148 | "fsl,cpm2-scc-uart"; |
149 | interrupt-parent = <&Cpm_pic>; | 149 | reg = <11a00 20 8000 100>; |
150 | clock-setup = <1b ffffff00>; | 150 | interrupts = <28 8>; |
151 | rx-clock = <4>; | 151 | interrupt-parent = <&PIC>; |
152 | tx-clock = <4>; | 152 | fsl,cpm-brg = <1>; |
153 | }; | 153 | fsl,cpm-command = <00800000>; |
154 | 154 | }; | |
155 | }; | 155 | |
156 | cpm_pic:interrupt-controller@10c00 { | 156 | serial@11a60 { |
157 | #address-cells = <0>; | 157 | device_type = "serial"; |
158 | #interrupt-cells = <2>; | 158 | compatible = "fsl,mpc8272-scc-uart", |
159 | interrupt-controller; | 159 | "fsl,cpm2-scc-uart"; |
160 | reg = <10c00 80>; | 160 | reg = <11a60 20 8300 100>; |
161 | built-in; | 161 | interrupts = <2b 8>; |
162 | device_type = "cpm-pic"; | 162 | interrupt-parent = <&PIC>; |
163 | compatible = "CPM2"; | 163 | fsl,cpm-brg = <4>; |
164 | }; | 164 | fsl,cpm-command = <0ce00000>; |
165 | pci@0500 { | 165 | }; |
166 | #interrupt-cells = <1>; | 166 | |
167 | #size-cells = <2>; | 167 | mdio@10d40 { |
168 | #address-cells = <3>; | 168 | device_type = "mdio"; |
169 | compatible = "8272"; | 169 | compatible = "fsl,mpc8272ads-mdio-bitbang", |
170 | device_type = "pci"; | 170 | "fsl,mpc8272-mdio-bitbang", |
171 | reg = <10430 4dc>; | 171 | "fsl,cpm2-mdio-bitbang"; |
172 | clock-frequency = <3f940aa>; | 172 | reg = <10d40 14>; |
173 | interrupt-map-mask = <f800 0 0 7>; | 173 | #address-cells = <1>; |
174 | interrupt-map = < | 174 | #size-cells = <0>; |
175 | 175 | fsl,mdio-pin = <12>; | |
176 | /* IDSEL 0x16 */ | 176 | fsl,mdc-pin = <13>; |
177 | b000 0 0 1 f8200000 40 8 | 177 | |
178 | b000 0 0 2 f8200000 41 8 | 178 | PHY0: ethernet-phy@0 { |
179 | b000 0 0 3 f8200000 42 8 | 179 | interrupt-parent = <&PIC>; |
180 | b000 0 0 4 f8200000 43 8 | 180 | interrupts = <17 8>; |
181 | 181 | reg = <0>; | |
182 | /* IDSEL 0x17 */ | 182 | device_type = "ethernet-phy"; |
183 | b800 0 0 1 f8200000 43 8 | 183 | }; |
184 | b800 0 0 2 f8200000 40 8 | 184 | |
185 | b800 0 0 3 f8200000 41 8 | 185 | PHY1: ethernet-phy@1 { |
186 | b800 0 0 4 f8200000 42 8 | 186 | interrupt-parent = <&PIC>; |
187 | 187 | interrupts = <17 8>; | |
188 | /* IDSEL 0x18 */ | 188 | reg = <3>; |
189 | c000 0 0 1 f8200000 42 8 | 189 | device_type = "ethernet-phy"; |
190 | c000 0 0 2 f8200000 43 8 | 190 | }; |
191 | c000 0 0 3 f8200000 40 8 | 191 | }; |
192 | c000 0 0 4 f8200000 41 8>; | 192 | |
193 | interrupt-parent = <&Cpm_pic>; | 193 | ethernet@11300 { |
194 | interrupts = <14 8>; | 194 | device_type = "network"; |
195 | bus-range = <0 0>; | 195 | compatible = "fsl,mpc8272-fcc-enet", |
196 | ranges = <02000000 0 80000000 80000000 0 40000000 | 196 | "fsl,cpm2-fcc-enet"; |
197 | 01000000 0 00000000 f6000000 0 02000000>; | 197 | reg = <11300 20 8400 100 11390 1>; |
198 | }; | 198 | local-mac-address = [ 00 00 00 00 00 00 ]; |
199 | interrupts = <20 8>; | ||
200 | interrupt-parent = <&PIC>; | ||
201 | phy-handle = <&PHY0>; | ||
202 | linux,network-index = <0>; | ||
203 | fsl,cpm-command = <12000300>; | ||
204 | }; | ||
205 | |||
206 | ethernet@11320 { | ||
207 | device_type = "network"; | ||
208 | compatible = "fsl,mpc8272-fcc-enet", | ||
209 | "fsl,cpm2-fcc-enet"; | ||
210 | reg = <11320 20 8500 100 113b0 1>; | ||
211 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
212 | interrupts = <21 8>; | ||
213 | interrupt-parent = <&PIC>; | ||
214 | phy-handle = <&PHY1>; | ||
215 | linux,network-index = <1>; | ||
216 | fsl,cpm-command = <16200300>; | ||
217 | }; | ||
218 | }; | ||
219 | |||
220 | PIC: interrupt-controller@10c00 { | ||
221 | #interrupt-cells = <2>; | ||
222 | interrupt-controller; | ||
223 | reg = <10c00 80>; | ||
224 | compatible = "fsl,mpc8272-pic", "fsl,cpm2-pic"; | ||
225 | }; | ||
199 | 226 | ||
200 | /* May need to remove if on a part without crypto engine */ | 227 | /* May need to remove if on a part without crypto engine */ |
201 | crypto@30000 { | 228 | crypto@30000 { |
202 | device_type = "crypto"; | 229 | device_type = "crypto"; |
203 | model = "SEC2"; | 230 | model = "SEC2"; |
204 | compatible = "talitos"; | 231 | compatible = "fsl,mpc8272-talitos-sec2", |
205 | reg = <30000 10000>; | 232 | "fsl,talitos-sec2", |
206 | interrupts = <b 2>; | 233 | "fsl,talitos", |
207 | interrupt-parent = <&Cpm_pic>; | 234 | "talitos"; |
208 | num-channels = <4>; | 235 | reg = <30000 10000>; |
209 | channel-fifo-len = <18>; | 236 | interrupts = <b 8>; |
210 | exec-units-mask = <0000007e>; | 237 | interrupt-parent = <&PIC>; |
238 | num-channels = <4>; | ||
239 | channel-fifo-len = <18>; | ||
240 | exec-units-mask = <0000007e>; | ||
211 | /* desc mask is for rev1.x, we need runtime fixup for >=2.x */ | 241 | /* desc mask is for rev1.x, we need runtime fixup for >=2.x */ |
212 | descriptor-types-mask = <01010ebf>; | 242 | descriptor-types-mask = <01010ebf>; |
213 | }; | 243 | }; |
244 | }; | ||
214 | 245 | ||
215 | }; | 246 | chosen { |
247 | linux,stdout-path = "/soc/cpm/serial@11a00"; | ||
248 | }; | ||
216 | }; | 249 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts index c5adbe40364e..9e7eba973262 100644 --- a/arch/powerpc/boot/dts/mpc8313erdb.dts +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts | |||
@@ -29,7 +29,6 @@ | |||
29 | timebase-frequency = <0>; // from bootloader | 29 | timebase-frequency = <0>; // from bootloader |
30 | bus-frequency = <0>; // from bootloader | 30 | bus-frequency = <0>; // from bootloader |
31 | clock-frequency = <0>; // from bootloader | 31 | clock-frequency = <0>; // from bootloader |
32 | 32-bit; | ||
33 | }; | 32 | }; |
34 | }; | 33 | }; |
35 | 34 | ||
@@ -41,7 +40,6 @@ | |||
41 | soc8313@e0000000 { | 40 | soc8313@e0000000 { |
42 | #address-cells = <1>; | 41 | #address-cells = <1>; |
43 | #size-cells = <1>; | 42 | #size-cells = <1>; |
44 | #interrupt-cells = <2>; | ||
45 | device_type = "soc"; | 43 | device_type = "soc"; |
46 | ranges = <0 e0000000 00100000>; | 44 | ranges = <0 e0000000 00100000>; |
47 | reg = <e0000000 00000200>; | 45 | reg = <e0000000 00000200>; |
@@ -73,11 +71,11 @@ | |||
73 | 71 | ||
74 | spi@7000 { | 72 | spi@7000 { |
75 | device_type = "spi"; | 73 | device_type = "spi"; |
76 | compatible = "mpc83xx_spi"; | 74 | compatible = "fsl_spi"; |
77 | reg = <7000 1000>; | 75 | reg = <7000 1000>; |
78 | interrupts = <10 8>; | 76 | interrupts = <10 8>; |
79 | interrupt-parent = < &ipic >; | 77 | interrupt-parent = < &ipic >; |
80 | mode = <0>; | 78 | mode = "cpu"; |
81 | }; | 79 | }; |
82 | 80 | ||
83 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | 81 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ |
@@ -152,36 +150,6 @@ | |||
152 | interrupt-parent = < &ipic >; | 150 | interrupt-parent = < &ipic >; |
153 | }; | 151 | }; |
154 | 152 | ||
155 | pci@8500 { | ||
156 | interrupt-map-mask = <f800 0 0 7>; | ||
157 | interrupt-map = < | ||
158 | |||
159 | /* IDSEL 0x0E -mini PCI */ | ||
160 | 7000 0 0 1 &ipic 12 8 | ||
161 | 7000 0 0 2 &ipic 12 8 | ||
162 | 7000 0 0 3 &ipic 12 8 | ||
163 | 7000 0 0 4 &ipic 12 8 | ||
164 | |||
165 | /* IDSEL 0x0F - PCI slot */ | ||
166 | 7800 0 0 1 &ipic 11 8 | ||
167 | 7800 0 0 2 &ipic 12 8 | ||
168 | 7800 0 0 3 &ipic 11 8 | ||
169 | 7800 0 0 4 &ipic 12 8>; | ||
170 | interrupt-parent = < &ipic >; | ||
171 | interrupts = <42 8>; | ||
172 | bus-range = <0 0>; | ||
173 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
174 | 42000000 0 80000000 80000000 0 10000000 | ||
175 | 01000000 0 00000000 e2000000 0 00100000>; | ||
176 | clock-frequency = <3f940aa>; | ||
177 | #interrupt-cells = <1>; | ||
178 | #size-cells = <2>; | ||
179 | #address-cells = <3>; | ||
180 | reg = <8500 100>; | ||
181 | compatible = "fsl,mpc8349-pci"; | ||
182 | device_type = "pci"; | ||
183 | }; | ||
184 | |||
185 | crypto@30000 { | 153 | crypto@30000 { |
186 | device_type = "crypto"; | 154 | device_type = "crypto"; |
187 | model = "SEC2"; | 155 | model = "SEC2"; |
@@ -207,8 +175,37 @@ | |||
207 | #address-cells = <0>; | 175 | #address-cells = <0>; |
208 | #interrupt-cells = <2>; | 176 | #interrupt-cells = <2>; |
209 | reg = <700 100>; | 177 | reg = <700 100>; |
210 | built-in; | ||
211 | device_type = "ipic"; | 178 | device_type = "ipic"; |
212 | }; | 179 | }; |
213 | }; | 180 | }; |
181 | |||
182 | pci@e0008500 { | ||
183 | interrupt-map-mask = <f800 0 0 7>; | ||
184 | interrupt-map = < | ||
185 | |||
186 | /* IDSEL 0x0E -mini PCI */ | ||
187 | 7000 0 0 1 &ipic 12 8 | ||
188 | 7000 0 0 2 &ipic 12 8 | ||
189 | 7000 0 0 3 &ipic 12 8 | ||
190 | 7000 0 0 4 &ipic 12 8 | ||
191 | |||
192 | /* IDSEL 0x0F - PCI slot */ | ||
193 | 7800 0 0 1 &ipic 11 8 | ||
194 | 7800 0 0 2 &ipic 12 8 | ||
195 | 7800 0 0 3 &ipic 11 8 | ||
196 | 7800 0 0 4 &ipic 12 8>; | ||
197 | interrupt-parent = < &ipic >; | ||
198 | interrupts = <42 8>; | ||
199 | bus-range = <0 0>; | ||
200 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
201 | 42000000 0 80000000 80000000 0 10000000 | ||
202 | 01000000 0 00000000 e2000000 0 00100000>; | ||
203 | clock-frequency = <3f940aa>; | ||
204 | #interrupt-cells = <1>; | ||
205 | #size-cells = <2>; | ||
206 | #address-cells = <3>; | ||
207 | reg = <e0008500 100>; | ||
208 | compatible = "fsl,mpc8349-pci"; | ||
209 | device_type = "pci"; | ||
210 | }; | ||
214 | }; | 211 | }; |
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index f158ed781ba8..fcd333c391ec 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts | |||
@@ -29,7 +29,6 @@ | |||
29 | timebase-frequency = <0>; | 29 | timebase-frequency = <0>; |
30 | bus-frequency = <0>; | 30 | bus-frequency = <0>; |
31 | clock-frequency = <0>; | 31 | clock-frequency = <0>; |
32 | 32-bit; | ||
33 | }; | 32 | }; |
34 | }; | 33 | }; |
35 | 34 | ||
@@ -46,7 +45,6 @@ | |||
46 | soc8323@e0000000 { | 45 | soc8323@e0000000 { |
47 | #address-cells = <1>; | 46 | #address-cells = <1>; |
48 | #size-cells = <1>; | 47 | #size-cells = <1>; |
49 | #interrupt-cells = <2>; | ||
50 | device_type = "soc"; | 48 | device_type = "soc"; |
51 | ranges = <0 e0000000 00100000>; | 49 | ranges = <0 e0000000 00100000>; |
52 | reg = <e0000000 00000200>; | 50 | reg = <e0000000 00000200>; |
@@ -99,71 +97,11 @@ | |||
99 | descriptor-types-mask = <0122003f>; | 97 | descriptor-types-mask = <0122003f>; |
100 | }; | 98 | }; |
101 | 99 | ||
102 | pci@8500 { | ||
103 | interrupt-map-mask = <f800 0 0 7>; | ||
104 | interrupt-map = < | ||
105 | /* IDSEL 0x11 AD17 */ | ||
106 | 8800 0 0 1 &ipic 14 8 | ||
107 | 8800 0 0 2 &ipic 15 8 | ||
108 | 8800 0 0 3 &ipic 16 8 | ||
109 | 8800 0 0 4 &ipic 17 8 | ||
110 | |||
111 | /* IDSEL 0x12 AD18 */ | ||
112 | 9000 0 0 1 &ipic 16 8 | ||
113 | 9000 0 0 2 &ipic 17 8 | ||
114 | 9000 0 0 3 &ipic 14 8 | ||
115 | 9000 0 0 4 &ipic 15 8 | ||
116 | |||
117 | /* IDSEL 0x13 AD19 */ | ||
118 | 9800 0 0 1 &ipic 17 8 | ||
119 | 9800 0 0 2 &ipic 14 8 | ||
120 | 9800 0 0 3 &ipic 15 8 | ||
121 | 9800 0 0 4 &ipic 16 8 | ||
122 | |||
123 | /* IDSEL 0x15 AD21*/ | ||
124 | a800 0 0 1 &ipic 14 8 | ||
125 | a800 0 0 2 &ipic 15 8 | ||
126 | a800 0 0 3 &ipic 16 8 | ||
127 | a800 0 0 4 &ipic 17 8 | ||
128 | |||
129 | /* IDSEL 0x16 AD22*/ | ||
130 | b000 0 0 1 &ipic 17 8 | ||
131 | b000 0 0 2 &ipic 14 8 | ||
132 | b000 0 0 3 &ipic 15 8 | ||
133 | b000 0 0 4 &ipic 16 8 | ||
134 | |||
135 | /* IDSEL 0x17 AD23*/ | ||
136 | b800 0 0 1 &ipic 16 8 | ||
137 | b800 0 0 2 &ipic 17 8 | ||
138 | b800 0 0 3 &ipic 14 8 | ||
139 | b800 0 0 4 &ipic 15 8 | ||
140 | |||
141 | /* IDSEL 0x18 AD24*/ | ||
142 | c000 0 0 1 &ipic 15 8 | ||
143 | c000 0 0 2 &ipic 16 8 | ||
144 | c000 0 0 3 &ipic 17 8 | ||
145 | c000 0 0 4 &ipic 14 8>; | ||
146 | interrupt-parent = < &ipic >; | ||
147 | interrupts = <42 8>; | ||
148 | bus-range = <0 0>; | ||
149 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
150 | 42000000 0 80000000 80000000 0 10000000 | ||
151 | 01000000 0 00000000 d0000000 0 00100000>; | ||
152 | clock-frequency = <0>; | ||
153 | #interrupt-cells = <1>; | ||
154 | #size-cells = <2>; | ||
155 | #address-cells = <3>; | ||
156 | reg = <8500 100>; | ||
157 | compatible = "fsl,mpc8349-pci"; | ||
158 | device_type = "pci"; | ||
159 | }; | ||
160 | |||
161 | ipic: pic@700 { | 100 | ipic: pic@700 { |
162 | interrupt-controller; | 101 | interrupt-controller; |
163 | #address-cells = <0>; | 102 | #address-cells = <0>; |
164 | #interrupt-cells = <2>; | 103 | #interrupt-cells = <2>; |
165 | reg = <700 100>; | 104 | reg = <700 100>; |
166 | built-in; | ||
167 | device_type = "ipic"; | 105 | device_type = "ipic"; |
168 | }; | 106 | }; |
169 | 107 | ||
@@ -333,10 +271,68 @@ | |||
333 | #address-cells = <0>; | 271 | #address-cells = <0>; |
334 | #interrupt-cells = <1>; | 272 | #interrupt-cells = <1>; |
335 | reg = <80 80>; | 273 | reg = <80 80>; |
336 | built-in; | ||
337 | big-endian; | 274 | big-endian; |
338 | interrupts = <20 8 21 8>; //high:32 low:33 | 275 | interrupts = <20 8 21 8>; //high:32 low:33 |
339 | interrupt-parent = < &ipic >; | 276 | interrupt-parent = < &ipic >; |
340 | }; | 277 | }; |
341 | }; | 278 | }; |
279 | |||
280 | pci@e0008500 { | ||
281 | interrupt-map-mask = <f800 0 0 7>; | ||
282 | interrupt-map = < | ||
283 | /* IDSEL 0x11 AD17 */ | ||
284 | 8800 0 0 1 &ipic 14 8 | ||
285 | 8800 0 0 2 &ipic 15 8 | ||
286 | 8800 0 0 3 &ipic 16 8 | ||
287 | 8800 0 0 4 &ipic 17 8 | ||
288 | |||
289 | /* IDSEL 0x12 AD18 */ | ||
290 | 9000 0 0 1 &ipic 16 8 | ||
291 | 9000 0 0 2 &ipic 17 8 | ||
292 | 9000 0 0 3 &ipic 14 8 | ||
293 | 9000 0 0 4 &ipic 15 8 | ||
294 | |||
295 | /* IDSEL 0x13 AD19 */ | ||
296 | 9800 0 0 1 &ipic 17 8 | ||
297 | 9800 0 0 2 &ipic 14 8 | ||
298 | 9800 0 0 3 &ipic 15 8 | ||
299 | 9800 0 0 4 &ipic 16 8 | ||
300 | |||
301 | /* IDSEL 0x15 AD21*/ | ||
302 | a800 0 0 1 &ipic 14 8 | ||
303 | a800 0 0 2 &ipic 15 8 | ||
304 | a800 0 0 3 &ipic 16 8 | ||
305 | a800 0 0 4 &ipic 17 8 | ||
306 | |||
307 | /* IDSEL 0x16 AD22*/ | ||
308 | b000 0 0 1 &ipic 17 8 | ||
309 | b000 0 0 2 &ipic 14 8 | ||
310 | b000 0 0 3 &ipic 15 8 | ||
311 | b000 0 0 4 &ipic 16 8 | ||
312 | |||
313 | /* IDSEL 0x17 AD23*/ | ||
314 | b800 0 0 1 &ipic 16 8 | ||
315 | b800 0 0 2 &ipic 17 8 | ||
316 | b800 0 0 3 &ipic 14 8 | ||
317 | b800 0 0 4 &ipic 15 8 | ||
318 | |||
319 | /* IDSEL 0x18 AD24*/ | ||
320 | c000 0 0 1 &ipic 15 8 | ||
321 | c000 0 0 2 &ipic 16 8 | ||
322 | c000 0 0 3 &ipic 17 8 | ||
323 | c000 0 0 4 &ipic 14 8>; | ||
324 | interrupt-parent = < &ipic >; | ||
325 | interrupts = <42 8>; | ||
326 | bus-range = <0 0>; | ||
327 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
328 | 42000000 0 80000000 80000000 0 10000000 | ||
329 | 01000000 0 00000000 d0000000 0 00100000>; | ||
330 | clock-frequency = <0>; | ||
331 | #interrupt-cells = <1>; | ||
332 | #size-cells = <2>; | ||
333 | #address-cells = <3>; | ||
334 | reg = <e0008500 100>; | ||
335 | compatible = "fsl,mpc8349-pci"; | ||
336 | device_type = "pci"; | ||
337 | }; | ||
342 | }; | 338 | }; |
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts index 7c4beff3e200..388c8a7012e1 100644 --- a/arch/powerpc/boot/dts/mpc832x_rdb.dts +++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts | |||
@@ -29,7 +29,6 @@ | |||
29 | timebase-frequency = <0>; | 29 | timebase-frequency = <0>; |
30 | bus-frequency = <0>; | 30 | bus-frequency = <0>; |
31 | clock-frequency = <0>; | 31 | clock-frequency = <0>; |
32 | 32-bit; | ||
33 | }; | 32 | }; |
34 | }; | 33 | }; |
35 | 34 | ||
@@ -41,7 +40,6 @@ | |||
41 | soc8323@e0000000 { | 40 | soc8323@e0000000 { |
42 | #address-cells = <1>; | 41 | #address-cells = <1>; |
43 | #size-cells = <1>; | 42 | #size-cells = <1>; |
44 | #interrupt-cells = <2>; | ||
45 | device_type = "soc"; | 43 | device_type = "soc"; |
46 | ranges = <0 e0000000 00100000>; | 44 | ranges = <0 e0000000 00100000>; |
47 | reg = <e0000000 00000200>; | 45 | reg = <e0000000 00000200>; |
@@ -94,45 +92,11 @@ | |||
94 | descriptor-types-mask = <0122003f>; | 92 | descriptor-types-mask = <0122003f>; |
95 | }; | 93 | }; |
96 | 94 | ||
97 | pci@8500 { | ||
98 | interrupt-map-mask = <f800 0 0 7>; | ||
99 | interrupt-map = < | ||
100 | /* IDSEL 0x10 AD16 (USB) */ | ||
101 | 8000 0 0 1 &pic 11 8 | ||
102 | |||
103 | /* IDSEL 0x11 AD17 (Mini1)*/ | ||
104 | 8800 0 0 1 &pic 12 8 | ||
105 | 8800 0 0 2 &pic 13 8 | ||
106 | 8800 0 0 3 &pic 14 8 | ||
107 | 8800 0 0 4 &pic 30 8 | ||
108 | |||
109 | /* IDSEL 0x12 AD18 (PCI/Mini2) */ | ||
110 | 9000 0 0 1 &pic 13 8 | ||
111 | 9000 0 0 2 &pic 14 8 | ||
112 | 9000 0 0 3 &pic 30 8 | ||
113 | 9000 0 0 4 &pic 11 8>; | ||
114 | |||
115 | interrupt-parent = <&pic>; | ||
116 | interrupts = <42 8>; | ||
117 | bus-range = <0 0>; | ||
118 | ranges = <42000000 0 80000000 80000000 0 10000000 | ||
119 | 02000000 0 90000000 90000000 0 10000000 | ||
120 | 01000000 0 d0000000 d0000000 0 04000000>; | ||
121 | clock-frequency = <0>; | ||
122 | #interrupt-cells = <1>; | ||
123 | #size-cells = <2>; | ||
124 | #address-cells = <3>; | ||
125 | reg = <8500 100>; | ||
126 | compatible = "fsl,mpc8349-pci"; | ||
127 | device_type = "pci"; | ||
128 | }; | ||
129 | |||
130 | pic:pic@700 { | 95 | pic:pic@700 { |
131 | interrupt-controller; | 96 | interrupt-controller; |
132 | #address-cells = <0>; | 97 | #address-cells = <0>; |
133 | #interrupt-cells = <2>; | 98 | #interrupt-cells = <2>; |
134 | reg = <700 100>; | 99 | reg = <700 100>; |
135 | built-in; | ||
136 | device_type = "ipic"; | 100 | device_type = "ipic"; |
137 | }; | 101 | }; |
138 | 102 | ||
@@ -211,7 +175,7 @@ | |||
211 | reg = <4c0 40>; | 175 | reg = <4c0 40>; |
212 | interrupts = <2>; | 176 | interrupts = <2>; |
213 | interrupt-parent = <&qeic>; | 177 | interrupt-parent = <&qeic>; |
214 | mode = "cpu"; | 178 | mode = "cpu-qe"; |
215 | }; | 179 | }; |
216 | 180 | ||
217 | spi@500 { | 181 | spi@500 { |
@@ -292,10 +256,42 @@ | |||
292 | #address-cells = <0>; | 256 | #address-cells = <0>; |
293 | #interrupt-cells = <1>; | 257 | #interrupt-cells = <1>; |
294 | reg = <80 80>; | 258 | reg = <80 80>; |
295 | built-in; | ||
296 | big-endian; | 259 | big-endian; |
297 | interrupts = <20 8 21 8>; //high:32 low:33 | 260 | interrupts = <20 8 21 8>; //high:32 low:33 |
298 | interrupt-parent = <&pic>; | 261 | interrupt-parent = <&pic>; |
299 | }; | 262 | }; |
300 | }; | 263 | }; |
264 | |||
265 | pci@e0008500 { | ||
266 | interrupt-map-mask = <f800 0 0 7>; | ||
267 | interrupt-map = < | ||
268 | /* IDSEL 0x10 AD16 (USB) */ | ||
269 | 8000 0 0 1 &pic 11 8 | ||
270 | |||
271 | /* IDSEL 0x11 AD17 (Mini1)*/ | ||
272 | 8800 0 0 1 &pic 12 8 | ||
273 | 8800 0 0 2 &pic 13 8 | ||
274 | 8800 0 0 3 &pic 14 8 | ||
275 | 8800 0 0 4 &pic 30 8 | ||
276 | |||
277 | /* IDSEL 0x12 AD18 (PCI/Mini2) */ | ||
278 | 9000 0 0 1 &pic 13 8 | ||
279 | 9000 0 0 2 &pic 14 8 | ||
280 | 9000 0 0 3 &pic 30 8 | ||
281 | 9000 0 0 4 &pic 11 8>; | ||
282 | |||
283 | interrupt-parent = <&pic>; | ||
284 | interrupts = <42 8>; | ||
285 | bus-range = <0 0>; | ||
286 | ranges = <42000000 0 80000000 80000000 0 10000000 | ||
287 | 02000000 0 90000000 90000000 0 10000000 | ||
288 | 01000000 0 d0000000 d0000000 0 04000000>; | ||
289 | clock-frequency = <0>; | ||
290 | #interrupt-cells = <1>; | ||
291 | #size-cells = <2>; | ||
292 | #address-cells = <3>; | ||
293 | reg = <e0008500 100>; | ||
294 | compatible = "fsl,mpc8349-pci"; | ||
295 | device_type = "pci"; | ||
296 | }; | ||
301 | }; | 297 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts index 44c065a6b5e7..5072f6d0a46d 100644 --- a/arch/powerpc/boot/dts/mpc8349emitx.dts +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts | |||
@@ -28,7 +28,6 @@ | |||
28 | timebase-frequency = <0>; // from bootloader | 28 | timebase-frequency = <0>; // from bootloader |
29 | bus-frequency = <0>; // from bootloader | 29 | bus-frequency = <0>; // from bootloader |
30 | clock-frequency = <0>; // from bootloader | 30 | clock-frequency = <0>; // from bootloader |
31 | 32-bit; | ||
32 | }; | 31 | }; |
33 | }; | 32 | }; |
34 | 33 | ||
@@ -40,7 +39,6 @@ | |||
40 | soc8349@e0000000 { | 39 | soc8349@e0000000 { |
41 | #address-cells = <1>; | 40 | #address-cells = <1>; |
42 | #size-cells = <1>; | 41 | #size-cells = <1>; |
43 | #interrupt-cells = <2>; | ||
44 | device_type = "soc"; | 42 | device_type = "soc"; |
45 | ranges = <0 e0000000 00100000>; | 43 | ranges = <0 e0000000 00100000>; |
46 | reg = <e0000000 00000200>; | 44 | reg = <e0000000 00000200>; |
@@ -72,11 +70,11 @@ | |||
72 | 70 | ||
73 | spi@7000 { | 71 | spi@7000 { |
74 | device_type = "spi"; | 72 | device_type = "spi"; |
75 | compatible = "mpc83xx_spi"; | 73 | compatible = "fsl_spi"; |
76 | reg = <7000 1000>; | 74 | reg = <7000 1000>; |
77 | interrupts = <10 8>; | 75 | interrupts = <10 8>; |
78 | interrupt-parent = < &ipic >; | 76 | interrupt-parent = < &ipic >; |
79 | mode = <0>; | 77 | mode = "cpu"; |
80 | }; | 78 | }; |
81 | 79 | ||
82 | usb@22000 { | 80 | usb@22000 { |
@@ -142,6 +140,7 @@ | |||
142 | interrupts = <20 8 21 8 22 8>; | 140 | interrupts = <20 8 21 8 22 8>; |
143 | interrupt-parent = < &ipic >; | 141 | interrupt-parent = < &ipic >; |
144 | phy-handle = < &phy1c >; | 142 | phy-handle = < &phy1c >; |
143 | linux,network-index = <0>; | ||
145 | }; | 144 | }; |
146 | 145 | ||
147 | ethernet@25000 { | 146 | ethernet@25000 { |
@@ -161,6 +160,7 @@ | |||
161 | interrupts = <23 8 24 8 25 8>; | 160 | interrupts = <23 8 24 8 25 8>; |
162 | interrupt-parent = < &ipic >; | 161 | interrupt-parent = < &ipic >; |
163 | phy-handle = < &phy1f >; | 162 | phy-handle = < &phy1f >; |
163 | linux,network-index = <1>; | ||
164 | }; | 164 | }; |
165 | 165 | ||
166 | serial@4500 { | 166 | serial@4500 { |
@@ -181,52 +181,6 @@ | |||
181 | interrupt-parent = < &ipic >; | 181 | interrupt-parent = < &ipic >; |
182 | }; | 182 | }; |
183 | 183 | ||
184 | pci@8500 { | ||
185 | interrupt-map-mask = <f800 0 0 7>; | ||
186 | interrupt-map = < | ||
187 | /* IDSEL 0x10 - SATA */ | ||
188 | 8000 0 0 1 &ipic 16 8 /* SATA_INTA */ | ||
189 | >; | ||
190 | interrupt-parent = < &ipic >; | ||
191 | interrupts = <42 8>; | ||
192 | bus-range = <0 0>; | ||
193 | ranges = <42000000 0 80000000 80000000 0 10000000 | ||
194 | 02000000 0 90000000 90000000 0 10000000 | ||
195 | 01000000 0 00000000 e2000000 0 01000000>; | ||
196 | clock-frequency = <3f940aa>; | ||
197 | #interrupt-cells = <1>; | ||
198 | #size-cells = <2>; | ||
199 | #address-cells = <3>; | ||
200 | reg = <8500 100>; | ||
201 | compatible = "fsl,mpc8349-pci"; | ||
202 | device_type = "pci"; | ||
203 | }; | ||
204 | |||
205 | pci@8600 { | ||
206 | interrupt-map-mask = <f800 0 0 7>; | ||
207 | interrupt-map = < | ||
208 | /* IDSEL 0x0E - MiniPCI Slot */ | ||
209 | 7000 0 0 1 &ipic 15 8 /* PCI_INTA */ | ||
210 | |||
211 | /* IDSEL 0x0F - PCI Slot */ | ||
212 | 7800 0 0 1 &ipic 14 8 /* PCI_INTA */ | ||
213 | 7800 0 0 2 &ipic 15 8 /* PCI_INTB */ | ||
214 | >; | ||
215 | interrupt-parent = < &ipic >; | ||
216 | interrupts = <43 8>; | ||
217 | bus-range = <1 1>; | ||
218 | ranges = <42000000 0 a0000000 a0000000 0 10000000 | ||
219 | 02000000 0 b0000000 b0000000 0 10000000 | ||
220 | 01000000 0 00000000 e3000000 0 01000000>; | ||
221 | clock-frequency = <3f940aa>; | ||
222 | #interrupt-cells = <1>; | ||
223 | #size-cells = <2>; | ||
224 | #address-cells = <3>; | ||
225 | reg = <8600 100>; | ||
226 | compatible = "fsl,mpc8349-pci"; | ||
227 | device_type = "pci"; | ||
228 | }; | ||
229 | |||
230 | crypto@30000 { | 184 | crypto@30000 { |
231 | device_type = "crypto"; | 185 | device_type = "crypto"; |
232 | model = "SEC2"; | 186 | model = "SEC2"; |
@@ -245,8 +199,56 @@ | |||
245 | #address-cells = <0>; | 199 | #address-cells = <0>; |
246 | #interrupt-cells = <2>; | 200 | #interrupt-cells = <2>; |
247 | reg = <700 100>; | 201 | reg = <700 100>; |
248 | built-in; | ||
249 | device_type = "ipic"; | 202 | device_type = "ipic"; |
250 | }; | 203 | }; |
251 | }; | 204 | }; |
205 | |||
206 | pci@e0008500 { | ||
207 | interrupt-map-mask = <f800 0 0 7>; | ||
208 | interrupt-map = < | ||
209 | /* IDSEL 0x10 - SATA */ | ||
210 | 8000 0 0 1 &ipic 16 8 /* SATA_INTA */ | ||
211 | >; | ||
212 | interrupt-parent = < &ipic >; | ||
213 | interrupts = <42 8>; | ||
214 | bus-range = <0 0>; | ||
215 | ranges = <42000000 0 80000000 80000000 0 10000000 | ||
216 | 02000000 0 90000000 90000000 0 10000000 | ||
217 | 01000000 0 00000000 e2000000 0 01000000>; | ||
218 | clock-frequency = <3f940aa>; | ||
219 | #interrupt-cells = <1>; | ||
220 | #size-cells = <2>; | ||
221 | #address-cells = <3>; | ||
222 | reg = <e0008500 100>; | ||
223 | compatible = "fsl,mpc8349-pci"; | ||
224 | device_type = "pci"; | ||
225 | }; | ||
226 | |||
227 | pci@e0008600 { | ||
228 | interrupt-map-mask = <f800 0 0 7>; | ||
229 | interrupt-map = < | ||
230 | /* IDSEL 0x0E - MiniPCI Slot */ | ||
231 | 7000 0 0 1 &ipic 15 8 /* PCI_INTA */ | ||
232 | |||
233 | /* IDSEL 0x0F - PCI Slot */ | ||
234 | 7800 0 0 1 &ipic 14 8 /* PCI_INTA */ | ||
235 | 7800 0 0 2 &ipic 15 8 /* PCI_INTB */ | ||
236 | >; | ||
237 | interrupt-parent = < &ipic >; | ||
238 | interrupts = <43 8>; | ||
239 | bus-range = <0 0>; | ||
240 | ranges = <42000000 0 a0000000 a0000000 0 10000000 | ||
241 | 02000000 0 b0000000 b0000000 0 10000000 | ||
242 | 01000000 0 00000000 e3000000 0 01000000>; | ||
243 | clock-frequency = <3f940aa>; | ||
244 | #interrupt-cells = <1>; | ||
245 | #size-cells = <2>; | ||
246 | #address-cells = <3>; | ||
247 | reg = <e0008600 100>; | ||
248 | compatible = "fsl,mpc8349-pci"; | ||
249 | device_type = "pci"; | ||
250 | }; | ||
251 | |||
252 | |||
253 | |||
252 | }; | 254 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts index 0b8387141d88..074f7a2ab7e4 100644 --- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts +++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts | |||
@@ -28,7 +28,6 @@ | |||
28 | timebase-frequency = <0>; // from bootloader | 28 | timebase-frequency = <0>; // from bootloader |
29 | bus-frequency = <0>; // from bootloader | 29 | bus-frequency = <0>; // from bootloader |
30 | clock-frequency = <0>; // from bootloader | 30 | clock-frequency = <0>; // from bootloader |
31 | 32-bit; | ||
32 | }; | 31 | }; |
33 | }; | 32 | }; |
34 | 33 | ||
@@ -40,7 +39,6 @@ | |||
40 | soc8349@e0000000 { | 39 | soc8349@e0000000 { |
41 | #address-cells = <1>; | 40 | #address-cells = <1>; |
42 | #size-cells = <1>; | 41 | #size-cells = <1>; |
43 | #interrupt-cells = <2>; | ||
44 | device_type = "soc"; | 42 | device_type = "soc"; |
45 | ranges = <0 e0000000 00100000>; | 43 | ranges = <0 e0000000 00100000>; |
46 | reg = <e0000000 00000200>; | 44 | reg = <e0000000 00000200>; |
@@ -72,11 +70,11 @@ | |||
72 | 70 | ||
73 | spi@7000 { | 71 | spi@7000 { |
74 | device_type = "spi"; | 72 | device_type = "spi"; |
75 | compatible = "mpc83xx_spi"; | 73 | compatible = "fsl_spi"; |
76 | reg = <7000 1000>; | 74 | reg = <7000 1000>; |
77 | interrupts = <10 8>; | 75 | interrupts = <10 8>; |
78 | interrupt-parent = < &ipic >; | 76 | interrupt-parent = < &ipic >; |
79 | mode = <0>; | 77 | mode = "cpu"; |
80 | }; | 78 | }; |
81 | 79 | ||
82 | usb@23000 { | 80 | usb@23000 { |
@@ -116,6 +114,7 @@ | |||
116 | interrupts = <20 8 21 8 22 8>; | 114 | interrupts = <20 8 21 8 22 8>; |
117 | interrupt-parent = < &ipic >; | 115 | interrupt-parent = < &ipic >; |
118 | phy-handle = < &phy1c >; | 116 | phy-handle = < &phy1c >; |
117 | linux,network-index = <0>; | ||
119 | }; | 118 | }; |
120 | 119 | ||
121 | serial@4500 { | 120 | serial@4500 { |
@@ -136,28 +135,6 @@ | |||
136 | interrupt-parent = < &ipic >; | 135 | interrupt-parent = < &ipic >; |
137 | }; | 136 | }; |
138 | 137 | ||
139 | pci@8600 { | ||
140 | interrupt-map-mask = <f800 0 0 7>; | ||
141 | interrupt-map = < | ||
142 | /* IDSEL 0x0F - PCI Slot */ | ||
143 | 7800 0 0 1 &ipic 14 8 /* PCI_INTA */ | ||
144 | 7800 0 0 2 &ipic 15 8 /* PCI_INTB */ | ||
145 | >; | ||
146 | interrupt-parent = < &ipic >; | ||
147 | interrupts = <43 8>; | ||
148 | bus-range = <1 1>; | ||
149 | ranges = <42000000 0 a0000000 a0000000 0 10000000 | ||
150 | 02000000 0 b0000000 b0000000 0 10000000 | ||
151 | 01000000 0 00000000 e3000000 0 01000000>; | ||
152 | clock-frequency = <3f940aa>; | ||
153 | #interrupt-cells = <1>; | ||
154 | #size-cells = <2>; | ||
155 | #address-cells = <3>; | ||
156 | reg = <8600 100>; | ||
157 | compatible = "fsl,mpc8349-pci"; | ||
158 | device_type = "pci"; | ||
159 | }; | ||
160 | |||
161 | crypto@30000 { | 138 | crypto@30000 { |
162 | device_type = "crypto"; | 139 | device_type = "crypto"; |
163 | model = "SEC2"; | 140 | model = "SEC2"; |
@@ -176,8 +153,29 @@ | |||
176 | #address-cells = <0>; | 153 | #address-cells = <0>; |
177 | #interrupt-cells = <2>; | 154 | #interrupt-cells = <2>; |
178 | reg = <700 100>; | 155 | reg = <700 100>; |
179 | built-in; | ||
180 | device_type = "ipic"; | 156 | device_type = "ipic"; |
181 | }; | 157 | }; |
182 | }; | 158 | }; |
159 | |||
160 | pci@e0008600 { | ||
161 | interrupt-map-mask = <f800 0 0 7>; | ||
162 | interrupt-map = < | ||
163 | /* IDSEL 0x0F - PCI Slot */ | ||
164 | 7800 0 0 1 &ipic 14 8 /* PCI_INTA */ | ||
165 | 7800 0 0 2 &ipic 15 8 /* PCI_INTB */ | ||
166 | >; | ||
167 | interrupt-parent = < &ipic >; | ||
168 | interrupts = <43 8>; | ||
169 | bus-range = <1 1>; | ||
170 | ranges = <42000000 0 a0000000 a0000000 0 10000000 | ||
171 | 02000000 0 b0000000 b0000000 0 10000000 | ||
172 | 01000000 0 00000000 e3000000 0 01000000>; | ||
173 | clock-frequency = <3f940aa>; | ||
174 | #interrupt-cells = <1>; | ||
175 | #size-cells = <2>; | ||
176 | #address-cells = <3>; | ||
177 | reg = <e0008600 100>; | ||
178 | compatible = "fsl,mpc8349-pci"; | ||
179 | device_type = "pci"; | ||
180 | }; | ||
183 | }; | 181 | }; |
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index 481099756e44..e5a84ef9f4b0 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -29,7 +29,6 @@ | |||
29 | timebase-frequency = <0>; // from bootloader | 29 | timebase-frequency = <0>; // from bootloader |
30 | bus-frequency = <0>; // from bootloader | 30 | bus-frequency = <0>; // from bootloader |
31 | clock-frequency = <0>; // from bootloader | 31 | clock-frequency = <0>; // from bootloader |
32 | 32-bit; | ||
33 | }; | 32 | }; |
34 | }; | 33 | }; |
35 | 34 | ||
@@ -46,7 +45,6 @@ | |||
46 | soc8349@e0000000 { | 45 | soc8349@e0000000 { |
47 | #address-cells = <1>; | 46 | #address-cells = <1>; |
48 | #size-cells = <1>; | 47 | #size-cells = <1>; |
49 | #interrupt-cells = <2>; | ||
50 | device_type = "soc"; | 48 | device_type = "soc"; |
51 | ranges = <0 e0000000 00100000>; | 49 | ranges = <0 e0000000 00100000>; |
52 | reg = <e0000000 00000200>; | 50 | reg = <e0000000 00000200>; |
@@ -78,11 +76,11 @@ | |||
78 | 76 | ||
79 | spi@7000 { | 77 | spi@7000 { |
80 | device_type = "spi"; | 78 | device_type = "spi"; |
81 | compatible = "mpc83xx_spi"; | 79 | compatible = "fsl_spi"; |
82 | reg = <7000 1000>; | 80 | reg = <7000 1000>; |
83 | interrupts = <10 8>; | 81 | interrupts = <10 8>; |
84 | interrupt-parent = < &ipic >; | 82 | interrupt-parent = < &ipic >; |
85 | mode = <0>; | 83 | mode = "cpu"; |
86 | }; | 84 | }; |
87 | 85 | ||
88 | /* phy type (ULPI or SERIAL) are only types supportted for MPH */ | 86 | /* phy type (ULPI or SERIAL) are only types supportted for MPH */ |
@@ -146,6 +144,7 @@ | |||
146 | interrupts = <20 8 21 8 22 8>; | 144 | interrupts = <20 8 21 8 22 8>; |
147 | interrupt-parent = < &ipic >; | 145 | interrupt-parent = < &ipic >; |
148 | phy-handle = < &phy0 >; | 146 | phy-handle = < &phy0 >; |
147 | linux,network-index = <0>; | ||
149 | }; | 148 | }; |
150 | 149 | ||
151 | ethernet@25000 { | 150 | ethernet@25000 { |
@@ -165,6 +164,7 @@ | |||
165 | interrupts = <23 8 24 8 25 8>; | 164 | interrupts = <23 8 24 8 25 8>; |
166 | interrupt-parent = < &ipic >; | 165 | interrupt-parent = < &ipic >; |
167 | phy-handle = < &phy1 >; | 166 | phy-handle = < &phy1 >; |
167 | linux,network-index = <1>; | ||
168 | }; | 168 | }; |
169 | 169 | ||
170 | serial@4500 { | 170 | serial@4500 { |
@@ -185,126 +185,6 @@ | |||
185 | interrupt-parent = < &ipic >; | 185 | interrupt-parent = < &ipic >; |
186 | }; | 186 | }; |
187 | 187 | ||
188 | pci@8500 { | ||
189 | interrupt-map-mask = <f800 0 0 7>; | ||
190 | interrupt-map = < | ||
191 | |||
192 | /* IDSEL 0x11 */ | ||
193 | 8800 0 0 1 &ipic 14 8 | ||
194 | 8800 0 0 2 &ipic 15 8 | ||
195 | 8800 0 0 3 &ipic 16 8 | ||
196 | 8800 0 0 4 &ipic 17 8 | ||
197 | |||
198 | /* IDSEL 0x12 */ | ||
199 | 9000 0 0 1 &ipic 16 8 | ||
200 | 9000 0 0 2 &ipic 17 8 | ||
201 | 9000 0 0 3 &ipic 14 8 | ||
202 | 9000 0 0 4 &ipic 15 8 | ||
203 | |||
204 | /* IDSEL 0x13 */ | ||
205 | 9800 0 0 1 &ipic 17 8 | ||
206 | 9800 0 0 2 &ipic 14 8 | ||
207 | 9800 0 0 3 &ipic 15 8 | ||
208 | 9800 0 0 4 &ipic 16 8 | ||
209 | |||
210 | /* IDSEL 0x15 */ | ||
211 | a800 0 0 1 &ipic 14 8 | ||
212 | a800 0 0 2 &ipic 15 8 | ||
213 | a800 0 0 3 &ipic 16 8 | ||
214 | a800 0 0 4 &ipic 17 8 | ||
215 | |||
216 | /* IDSEL 0x16 */ | ||
217 | b000 0 0 1 &ipic 17 8 | ||
218 | b000 0 0 2 &ipic 14 8 | ||
219 | b000 0 0 3 &ipic 15 8 | ||
220 | b000 0 0 4 &ipic 16 8 | ||
221 | |||
222 | /* IDSEL 0x17 */ | ||
223 | b800 0 0 1 &ipic 16 8 | ||
224 | b800 0 0 2 &ipic 17 8 | ||
225 | b800 0 0 3 &ipic 14 8 | ||
226 | b800 0 0 4 &ipic 15 8 | ||
227 | |||
228 | /* IDSEL 0x18 */ | ||
229 | c000 0 0 1 &ipic 15 8 | ||
230 | c000 0 0 2 &ipic 16 8 | ||
231 | c000 0 0 3 &ipic 17 8 | ||
232 | c000 0 0 4 &ipic 14 8>; | ||
233 | interrupt-parent = < &ipic >; | ||
234 | interrupts = <42 8>; | ||
235 | bus-range = <0 0>; | ||
236 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
237 | 42000000 0 80000000 80000000 0 10000000 | ||
238 | 01000000 0 00000000 e2000000 0 00100000>; | ||
239 | clock-frequency = <3f940aa>; | ||
240 | #interrupt-cells = <1>; | ||
241 | #size-cells = <2>; | ||
242 | #address-cells = <3>; | ||
243 | reg = <8500 100>; | ||
244 | compatible = "fsl,mpc8349-pci"; | ||
245 | device_type = "pci"; | ||
246 | }; | ||
247 | |||
248 | pci@8600 { | ||
249 | interrupt-map-mask = <f800 0 0 7>; | ||
250 | interrupt-map = < | ||
251 | |||
252 | /* IDSEL 0x11 */ | ||
253 | 8800 0 0 1 &ipic 14 8 | ||
254 | 8800 0 0 2 &ipic 15 8 | ||
255 | 8800 0 0 3 &ipic 16 8 | ||
256 | 8800 0 0 4 &ipic 17 8 | ||
257 | |||
258 | /* IDSEL 0x12 */ | ||
259 | 9000 0 0 1 &ipic 16 8 | ||
260 | 9000 0 0 2 &ipic 17 8 | ||
261 | 9000 0 0 3 &ipic 14 8 | ||
262 | 9000 0 0 4 &ipic 15 8 | ||
263 | |||
264 | /* IDSEL 0x13 */ | ||
265 | 9800 0 0 1 &ipic 17 8 | ||
266 | 9800 0 0 2 &ipic 14 8 | ||
267 | 9800 0 0 3 &ipic 15 8 | ||
268 | 9800 0 0 4 &ipic 16 8 | ||
269 | |||
270 | /* IDSEL 0x15 */ | ||
271 | a800 0 0 1 &ipic 14 8 | ||
272 | a800 0 0 2 &ipic 15 8 | ||
273 | a800 0 0 3 &ipic 16 8 | ||
274 | a800 0 0 4 &ipic 17 8 | ||
275 | |||
276 | /* IDSEL 0x16 */ | ||
277 | b000 0 0 1 &ipic 17 8 | ||
278 | b000 0 0 2 &ipic 14 8 | ||
279 | b000 0 0 3 &ipic 15 8 | ||
280 | b000 0 0 4 &ipic 16 8 | ||
281 | |||
282 | /* IDSEL 0x17 */ | ||
283 | b800 0 0 1 &ipic 16 8 | ||
284 | b800 0 0 2 &ipic 17 8 | ||
285 | b800 0 0 3 &ipic 14 8 | ||
286 | b800 0 0 4 &ipic 15 8 | ||
287 | |||
288 | /* IDSEL 0x18 */ | ||
289 | c000 0 0 1 &ipic 15 8 | ||
290 | c000 0 0 2 &ipic 16 8 | ||
291 | c000 0 0 3 &ipic 17 8 | ||
292 | c000 0 0 4 &ipic 14 8>; | ||
293 | interrupt-parent = < &ipic >; | ||
294 | interrupts = <42 8>; | ||
295 | bus-range = <0 0>; | ||
296 | ranges = <02000000 0 b0000000 b0000000 0 10000000 | ||
297 | 42000000 0 a0000000 a0000000 0 10000000 | ||
298 | 01000000 0 00000000 e2100000 0 00100000>; | ||
299 | clock-frequency = <3f940aa>; | ||
300 | #interrupt-cells = <1>; | ||
301 | #size-cells = <2>; | ||
302 | #address-cells = <3>; | ||
303 | reg = <8600 100>; | ||
304 | compatible = "fsl,mpc8349-pci"; | ||
305 | device_type = "pci"; | ||
306 | }; | ||
307 | |||
308 | /* May need to remove if on a part without crypto engine */ | 188 | /* May need to remove if on a part without crypto engine */ |
309 | crypto@30000 { | 189 | crypto@30000 { |
310 | device_type = "crypto"; | 190 | device_type = "crypto"; |
@@ -332,8 +212,127 @@ | |||
332 | #address-cells = <0>; | 212 | #address-cells = <0>; |
333 | #interrupt-cells = <2>; | 213 | #interrupt-cells = <2>; |
334 | reg = <700 100>; | 214 | reg = <700 100>; |
335 | built-in; | ||
336 | device_type = "ipic"; | 215 | device_type = "ipic"; |
337 | }; | 216 | }; |
338 | }; | 217 | }; |
218 | |||
219 | pci@e0008500 { | ||
220 | interrupt-map-mask = <f800 0 0 7>; | ||
221 | interrupt-map = < | ||
222 | |||
223 | /* IDSEL 0x11 */ | ||
224 | 8800 0 0 1 &ipic 14 8 | ||
225 | 8800 0 0 2 &ipic 15 8 | ||
226 | 8800 0 0 3 &ipic 16 8 | ||
227 | 8800 0 0 4 &ipic 17 8 | ||
228 | |||
229 | /* IDSEL 0x12 */ | ||
230 | 9000 0 0 1 &ipic 16 8 | ||
231 | 9000 0 0 2 &ipic 17 8 | ||
232 | 9000 0 0 3 &ipic 14 8 | ||
233 | 9000 0 0 4 &ipic 15 8 | ||
234 | |||
235 | /* IDSEL 0x13 */ | ||
236 | 9800 0 0 1 &ipic 17 8 | ||
237 | 9800 0 0 2 &ipic 14 8 | ||
238 | 9800 0 0 3 &ipic 15 8 | ||
239 | 9800 0 0 4 &ipic 16 8 | ||
240 | |||
241 | /* IDSEL 0x15 */ | ||
242 | a800 0 0 1 &ipic 14 8 | ||
243 | a800 0 0 2 &ipic 15 8 | ||
244 | a800 0 0 3 &ipic 16 8 | ||
245 | a800 0 0 4 &ipic 17 8 | ||
246 | |||
247 | /* IDSEL 0x16 */ | ||
248 | b000 0 0 1 &ipic 17 8 | ||
249 | b000 0 0 2 &ipic 14 8 | ||
250 | b000 0 0 3 &ipic 15 8 | ||
251 | b000 0 0 4 &ipic 16 8 | ||
252 | |||
253 | /* IDSEL 0x17 */ | ||
254 | b800 0 0 1 &ipic 16 8 | ||
255 | b800 0 0 2 &ipic 17 8 | ||
256 | b800 0 0 3 &ipic 14 8 | ||
257 | b800 0 0 4 &ipic 15 8 | ||
258 | |||
259 | /* IDSEL 0x18 */ | ||
260 | c000 0 0 1 &ipic 15 8 | ||
261 | c000 0 0 2 &ipic 16 8 | ||
262 | c000 0 0 3 &ipic 17 8 | ||
263 | c000 0 0 4 &ipic 14 8>; | ||
264 | interrupt-parent = < &ipic >; | ||
265 | interrupts = <42 8>; | ||
266 | bus-range = <0 0>; | ||
267 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
268 | 42000000 0 80000000 80000000 0 10000000 | ||
269 | 01000000 0 00000000 e2000000 0 00100000>; | ||
270 | clock-frequency = <3f940aa>; | ||
271 | #interrupt-cells = <1>; | ||
272 | #size-cells = <2>; | ||
273 | #address-cells = <3>; | ||
274 | reg = <e0008500 100>; | ||
275 | compatible = "fsl,mpc8349-pci"; | ||
276 | device_type = "pci"; | ||
277 | }; | ||
278 | |||
279 | pci@e0008600 { | ||
280 | interrupt-map-mask = <f800 0 0 7>; | ||
281 | interrupt-map = < | ||
282 | |||
283 | /* IDSEL 0x11 */ | ||
284 | 8800 0 0 1 &ipic 14 8 | ||
285 | 8800 0 0 2 &ipic 15 8 | ||
286 | 8800 0 0 3 &ipic 16 8 | ||
287 | 8800 0 0 4 &ipic 17 8 | ||
288 | |||
289 | /* IDSEL 0x12 */ | ||
290 | 9000 0 0 1 &ipic 16 8 | ||
291 | 9000 0 0 2 &ipic 17 8 | ||
292 | 9000 0 0 3 &ipic 14 8 | ||
293 | 9000 0 0 4 &ipic 15 8 | ||
294 | |||
295 | /* IDSEL 0x13 */ | ||
296 | 9800 0 0 1 &ipic 17 8 | ||
297 | 9800 0 0 2 &ipic 14 8 | ||
298 | 9800 0 0 3 &ipic 15 8 | ||
299 | 9800 0 0 4 &ipic 16 8 | ||
300 | |||
301 | /* IDSEL 0x15 */ | ||
302 | a800 0 0 1 &ipic 14 8 | ||
303 | a800 0 0 2 &ipic 15 8 | ||
304 | a800 0 0 3 &ipic 16 8 | ||
305 | a800 0 0 4 &ipic 17 8 | ||
306 | |||
307 | /* IDSEL 0x16 */ | ||
308 | b000 0 0 1 &ipic 17 8 | ||
309 | b000 0 0 2 &ipic 14 8 | ||
310 | b000 0 0 3 &ipic 15 8 | ||
311 | b000 0 0 4 &ipic 16 8 | ||
312 | |||
313 | /* IDSEL 0x17 */ | ||
314 | b800 0 0 1 &ipic 16 8 | ||
315 | b800 0 0 2 &ipic 17 8 | ||
316 | b800 0 0 3 &ipic 14 8 | ||
317 | b800 0 0 4 &ipic 15 8 | ||
318 | |||
319 | /* IDSEL 0x18 */ | ||
320 | c000 0 0 1 &ipic 15 8 | ||
321 | c000 0 0 2 &ipic 16 8 | ||
322 | c000 0 0 3 &ipic 17 8 | ||
323 | c000 0 0 4 &ipic 14 8>; | ||
324 | interrupt-parent = < &ipic >; | ||
325 | interrupts = <42 8>; | ||
326 | bus-range = <0 0>; | ||
327 | ranges = <02000000 0 b0000000 b0000000 0 10000000 | ||
328 | 42000000 0 a0000000 a0000000 0 10000000 | ||
329 | 01000000 0 00000000 e2100000 0 00100000>; | ||
330 | clock-frequency = <3f940aa>; | ||
331 | #interrupt-cells = <1>; | ||
332 | #size-cells = <2>; | ||
333 | #address-cells = <3>; | ||
334 | reg = <e0008600 100>; | ||
335 | compatible = "fsl,mpc8349-pci"; | ||
336 | device_type = "pci"; | ||
337 | }; | ||
339 | }; | 338 | }; |
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index e3f7c1282068..fbd1573c348b 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts | |||
@@ -34,7 +34,6 @@ | |||
34 | timebase-frequency = <3EF1480>; | 34 | timebase-frequency = <3EF1480>; |
35 | bus-frequency = <FBC5200>; | 35 | bus-frequency = <FBC5200>; |
36 | clock-frequency = <1F78A400>; | 36 | clock-frequency = <1F78A400>; |
37 | 32-bit; | ||
38 | }; | 37 | }; |
39 | }; | 38 | }; |
40 | 39 | ||
@@ -51,7 +50,6 @@ | |||
51 | soc8360@e0000000 { | 50 | soc8360@e0000000 { |
52 | #address-cells = <1>; | 51 | #address-cells = <1>; |
53 | #size-cells = <1>; | 52 | #size-cells = <1>; |
54 | #interrupt-cells = <2>; | ||
55 | device_type = "soc"; | 53 | device_type = "soc"; |
56 | ranges = <0 e0000000 00100000>; | 54 | ranges = <0 e0000000 00100000>; |
57 | reg = <e0000000 00000200>; | 55 | reg = <e0000000 00000200>; |
@@ -113,72 +111,11 @@ | |||
113 | descriptor-types-mask = <01010ebf>; | 111 | descriptor-types-mask = <01010ebf>; |
114 | }; | 112 | }; |
115 | 113 | ||
116 | pci@8500 { | ||
117 | interrupt-map-mask = <f800 0 0 7>; | ||
118 | interrupt-map = < | ||
119 | |||
120 | /* IDSEL 0x11 AD17 */ | ||
121 | 8800 0 0 1 &ipic 14 8 | ||
122 | 8800 0 0 2 &ipic 15 8 | ||
123 | 8800 0 0 3 &ipic 16 8 | ||
124 | 8800 0 0 4 &ipic 17 8 | ||
125 | |||
126 | /* IDSEL 0x12 AD18 */ | ||
127 | 9000 0 0 1 &ipic 16 8 | ||
128 | 9000 0 0 2 &ipic 17 8 | ||
129 | 9000 0 0 3 &ipic 14 8 | ||
130 | 9000 0 0 4 &ipic 15 8 | ||
131 | |||
132 | /* IDSEL 0x13 AD19 */ | ||
133 | 9800 0 0 1 &ipic 17 8 | ||
134 | 9800 0 0 2 &ipic 14 8 | ||
135 | 9800 0 0 3 &ipic 15 8 | ||
136 | 9800 0 0 4 &ipic 16 8 | ||
137 | |||
138 | /* IDSEL 0x15 AD21*/ | ||
139 | a800 0 0 1 &ipic 14 8 | ||
140 | a800 0 0 2 &ipic 15 8 | ||
141 | a800 0 0 3 &ipic 16 8 | ||
142 | a800 0 0 4 &ipic 17 8 | ||
143 | |||
144 | /* IDSEL 0x16 AD22*/ | ||
145 | b000 0 0 1 &ipic 17 8 | ||
146 | b000 0 0 2 &ipic 14 8 | ||
147 | b000 0 0 3 &ipic 15 8 | ||
148 | b000 0 0 4 &ipic 16 8 | ||
149 | |||
150 | /* IDSEL 0x17 AD23*/ | ||
151 | b800 0 0 1 &ipic 16 8 | ||
152 | b800 0 0 2 &ipic 17 8 | ||
153 | b800 0 0 3 &ipic 14 8 | ||
154 | b800 0 0 4 &ipic 15 8 | ||
155 | |||
156 | /* IDSEL 0x18 AD24*/ | ||
157 | c000 0 0 1 &ipic 15 8 | ||
158 | c000 0 0 2 &ipic 16 8 | ||
159 | c000 0 0 3 &ipic 17 8 | ||
160 | c000 0 0 4 &ipic 14 8>; | ||
161 | interrupt-parent = < &ipic >; | ||
162 | interrupts = <42 8>; | ||
163 | bus-range = <0 0>; | ||
164 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | ||
165 | 42000000 0 80000000 80000000 0 10000000 | ||
166 | 01000000 0 00000000 e2000000 0 00100000>; | ||
167 | clock-frequency = <3f940aa>; | ||
168 | #interrupt-cells = <1>; | ||
169 | #size-cells = <2>; | ||
170 | #address-cells = <3>; | ||
171 | reg = <8500 100>; | ||
172 | compatible = "fsl,mpc8349-pci"; | ||
173 | device_type = "pci"; | ||
174 | }; | ||
175 | |||
176 | ipic: pic@700 { | 114 | ipic: pic@700 { |
177 | interrupt-controller; | 115 | interrupt-controller; |
178 | #address-cells = <0>; | 116 | #address-cells = <0>; |
179 | #interrupt-cells = <2>; | 117 | #interrupt-cells = <2>; |
180 | reg = <700 100>; | 118 | reg = <700 100>; |
181 | built-in; | ||
182 | device_type = "ipic"; | 119 | device_type = "ipic"; |
183 | }; | 120 | }; |
184 | 121 | ||
@@ -364,11 +301,69 @@ | |||
364 | #address-cells = <0>; | 301 | #address-cells = <0>; |
365 | #interrupt-cells = <1>; | 302 | #interrupt-cells = <1>; |
366 | reg = <80 80>; | 303 | reg = <80 80>; |
367 | built-in; | ||
368 | big-endian; | 304 | big-endian; |
369 | interrupts = <20 8 21 8>; //high:32 low:33 | 305 | interrupts = <20 8 21 8>; //high:32 low:33 |
370 | interrupt-parent = < &ipic >; | 306 | interrupt-parent = < &ipic >; |
371 | }; | 307 | }; |
308 | }; | ||
372 | 309 | ||
310 | pci@e0008500 { | ||
311 | interrupt-map-mask = <f800 0 0 7>; | ||
312 | interrupt-map = < | ||
313 | |||
314 | /* IDSEL 0x11 AD17 */ | ||
315 | 8800 0 0 1 &ipic 14 8 | ||
316 | 8800 0 0 2 &ipic 15 8 | ||
317 | 8800 0 0 3 &ipic 16 8 | ||
318 | 8800 0 0 4 &ipic 17 8 | ||
319 | |||
320 | /* IDSEL 0x12 AD18 */ | ||
321 | 9000 0 0 1 &ipic 16 8 | ||
322 | 9000 0 0 2 &ipic 17 8 | ||
323 | 9000 0 0 3 &ipic 14 8 | ||
324 | 9000 0 0 4 &ipic 15 8 | ||
325 | |||
326 | /* IDSEL 0x13 AD19 */ | ||
327 | 9800 0 0 1 &ipic 17 8 | ||
328 | 9800 0 0 2 &ipic 14 8 | ||
329 | 9800 0 0 3 &ipic 15 8 | ||
330 | 9800 0 0 4 &ipic 16 8 | ||
331 | |||
332 | /* IDSEL 0x15 AD21*/ | ||
333 | a800 0 0 1 &ipic 14 8 | ||
334 | a800 0 0 2 &ipic 15 8 | ||
335 | a800 0 0 3 &ipic 16 8 | ||
336 | a800 0 0 4 &ipic 17 8 | ||
337 | |||
338 | /* IDSEL 0x16 AD22*/ | ||
339 | b000 0 0 1 &ipic 17 8 | ||
340 | b000 0 0 2 &ipic 14 8 | ||
341 | b000 0 0 3 &ipic 15 8 | ||
342 | b000 0 0 4 &ipic 16 8 | ||
343 | |||
344 | /* IDSEL 0x17 AD23*/ | ||
345 | b800 0 0 1 &ipic 16 8 | ||
346 | b800 0 0 2 &ipic 17 8 | ||
347 | b800 0 0 3 &ipic 14 8 | ||
348 | b800 0 0 4 &ipic 15 8 | ||
349 | |||
350 | /* IDSEL 0x18 AD24*/ | ||
351 | c000 0 0 1 &ipic 15 8 | ||
352 | c000 0 0 2 &ipic 16 8 | ||
353 | c000 0 0 3 &ipic 17 8 | ||
354 | c000 0 0 4 &ipic 14 8>; | ||
355 | interrupt-parent = < &ipic >; | ||
356 | interrupts = <42 8>; | ||
357 | bus-range = <0 0>; | ||
358 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | ||
359 | 42000000 0 80000000 80000000 0 10000000 | ||
360 | 01000000 0 00000000 e2000000 0 00100000>; | ||
361 | clock-frequency = <3f940aa>; | ||
362 | #interrupt-cells = <1>; | ||
363 | #size-cells = <2>; | ||
364 | #address-cells = <3>; | ||
365 | reg = <e0008500 100>; | ||
366 | compatible = "fsl,mpc8349-pci"; | ||
367 | device_type = "pci"; | ||
373 | }; | 368 | }; |
374 | }; | 369 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts index fc8dff9f6201..6442a717ec3b 100644 --- a/arch/powerpc/boot/dts/mpc8540ads.dts +++ b/arch/powerpc/boot/dts/mpc8540ads.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; // 33 MHz, from uboot | 30 | timebase-frequency = <0>; // 33 MHz, from uboot |
31 | bus-frequency = <0>; // 166 MHz | 31 | bus-frequency = <0>; // 166 MHz |
32 | clock-frequency = <0>; // 825 MHz, from uboot | 32 | clock-frequency = <0>; // 825 MHz, from uboot |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -42,7 +41,6 @@ | |||
42 | soc8540@e0000000 { | 41 | soc8540@e0000000 { |
43 | #address-cells = <1>; | 42 | #address-cells = <1>; |
44 | #size-cells = <1>; | 43 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | 44 | device_type = "soc"; |
47 | ranges = <0 e0000000 00100000>; | 45 | ranges = <0 e0000000 00100000>; |
48 | reg = <e0000000 00100000>; // CCSRBAR 1M | 46 | reg = <e0000000 00100000>; // CCSRBAR 1M |
@@ -173,105 +171,104 @@ | |||
173 | interrupts = <2a 2>; | 171 | interrupts = <2a 2>; |
174 | interrupt-parent = <&mpic>; | 172 | interrupt-parent = <&mpic>; |
175 | }; | 173 | }; |
176 | pci@8000 { | 174 | mpic: pic@40000 { |
177 | interrupt-map-mask = <f800 0 0 7>; | 175 | clock-frequency = <0>; |
178 | interrupt-map = < | 176 | interrupt-controller; |
177 | #address-cells = <0>; | ||
178 | #interrupt-cells = <2>; | ||
179 | reg = <40000 40000>; | ||
180 | compatible = "chrp,open-pic"; | ||
181 | device_type = "open-pic"; | ||
182 | big-endian; | ||
183 | }; | ||
184 | }; | ||
179 | 185 | ||
180 | /* IDSEL 0x02 */ | 186 | pci@e0008000 { |
181 | 1000 0 0 1 &mpic 1 1 | 187 | interrupt-map-mask = <f800 0 0 7>; |
182 | 1000 0 0 2 &mpic 2 1 | 188 | interrupt-map = < |
183 | 1000 0 0 3 &mpic 3 1 | ||
184 | 1000 0 0 4 &mpic 4 1 | ||
185 | 189 | ||
186 | /* IDSEL 0x03 */ | 190 | /* IDSEL 0x02 */ |
187 | 1800 0 0 1 &mpic 4 1 | 191 | 1000 0 0 1 &mpic 1 1 |
188 | 1800 0 0 2 &mpic 1 1 | 192 | 1000 0 0 2 &mpic 2 1 |
189 | 1800 0 0 3 &mpic 2 1 | 193 | 1000 0 0 3 &mpic 3 1 |
190 | 1800 0 0 4 &mpic 3 1 | 194 | 1000 0 0 4 &mpic 4 1 |
191 | 195 | ||
192 | /* IDSEL 0x04 */ | 196 | /* IDSEL 0x03 */ |
193 | 2000 0 0 1 &mpic 3 1 | 197 | 1800 0 0 1 &mpic 4 1 |
194 | 2000 0 0 2 &mpic 4 1 | 198 | 1800 0 0 2 &mpic 1 1 |
195 | 2000 0 0 3 &mpic 1 1 | 199 | 1800 0 0 3 &mpic 2 1 |
196 | 2000 0 0 4 &mpic 2 1 | 200 | 1800 0 0 4 &mpic 3 1 |
197 | 201 | ||
198 | /* IDSEL 0x05 */ | 202 | /* IDSEL 0x04 */ |
199 | 2800 0 0 1 &mpic 2 1 | 203 | 2000 0 0 1 &mpic 3 1 |
200 | 2800 0 0 2 &mpic 3 1 | 204 | 2000 0 0 2 &mpic 4 1 |
201 | 2800 0 0 3 &mpic 4 1 | 205 | 2000 0 0 3 &mpic 1 1 |
202 | 2800 0 0 4 &mpic 1 1 | 206 | 2000 0 0 4 &mpic 2 1 |
203 | 207 | ||
204 | /* IDSEL 0x0c */ | 208 | /* IDSEL 0x05 */ |
205 | 6000 0 0 1 &mpic 1 1 | 209 | 2800 0 0 1 &mpic 2 1 |
206 | 6000 0 0 2 &mpic 2 1 | 210 | 2800 0 0 2 &mpic 3 1 |
207 | 6000 0 0 3 &mpic 3 1 | 211 | 2800 0 0 3 &mpic 4 1 |
208 | 6000 0 0 4 &mpic 4 1 | 212 | 2800 0 0 4 &mpic 1 1 |
209 | 213 | ||
210 | /* IDSEL 0x0d */ | 214 | /* IDSEL 0x0c */ |
211 | 6800 0 0 1 &mpic 4 1 | 215 | 6000 0 0 1 &mpic 1 1 |
212 | 6800 0 0 2 &mpic 1 1 | 216 | 6000 0 0 2 &mpic 2 1 |
213 | 6800 0 0 3 &mpic 2 1 | 217 | 6000 0 0 3 &mpic 3 1 |
214 | 6800 0 0 4 &mpic 3 1 | 218 | 6000 0 0 4 &mpic 4 1 |
215 | 219 | ||
216 | /* IDSEL 0x0e */ | 220 | /* IDSEL 0x0d */ |
217 | 7000 0 0 1 &mpic 3 1 | 221 | 6800 0 0 1 &mpic 4 1 |
218 | 7000 0 0 2 &mpic 4 1 | 222 | 6800 0 0 2 &mpic 1 1 |
219 | 7000 0 0 3 &mpic 1 1 | 223 | 6800 0 0 3 &mpic 2 1 |
220 | 7000 0 0 4 &mpic 2 1 | 224 | 6800 0 0 4 &mpic 3 1 |
221 | 225 | ||
222 | /* IDSEL 0x0f */ | 226 | /* IDSEL 0x0e */ |
223 | 7800 0 0 1 &mpic 2 1 | 227 | 7000 0 0 1 &mpic 3 1 |
224 | 7800 0 0 2 &mpic 3 1 | 228 | 7000 0 0 2 &mpic 4 1 |
225 | 7800 0 0 3 &mpic 4 1 | 229 | 7000 0 0 3 &mpic 1 1 |
226 | 7800 0 0 4 &mpic 1 1 | 230 | 7000 0 0 4 &mpic 2 1 |
227 | 231 | ||
228 | /* IDSEL 0x12 */ | 232 | /* IDSEL 0x0f */ |
229 | 9000 0 0 1 &mpic 1 1 | 233 | 7800 0 0 1 &mpic 2 1 |
230 | 9000 0 0 2 &mpic 2 1 | 234 | 7800 0 0 2 &mpic 3 1 |
231 | 9000 0 0 3 &mpic 3 1 | 235 | 7800 0 0 3 &mpic 4 1 |
232 | 9000 0 0 4 &mpic 4 1 | 236 | 7800 0 0 4 &mpic 1 1 |
233 | 237 | ||
234 | /* IDSEL 0x13 */ | 238 | /* IDSEL 0x12 */ |
235 | 9800 0 0 1 &mpic 4 1 | 239 | 9000 0 0 1 &mpic 1 1 |
236 | 9800 0 0 2 &mpic 1 1 | 240 | 9000 0 0 2 &mpic 2 1 |
237 | 9800 0 0 3 &mpic 2 1 | 241 | 9000 0 0 3 &mpic 3 1 |
238 | 9800 0 0 4 &mpic 3 1 | 242 | 9000 0 0 4 &mpic 4 1 |
239 | 243 | ||
240 | /* IDSEL 0x14 */ | 244 | /* IDSEL 0x13 */ |
241 | a000 0 0 1 &mpic 3 1 | 245 | 9800 0 0 1 &mpic 4 1 |
242 | a000 0 0 2 &mpic 4 1 | 246 | 9800 0 0 2 &mpic 1 1 |
243 | a000 0 0 3 &mpic 1 1 | 247 | 9800 0 0 3 &mpic 2 1 |
244 | a000 0 0 4 &mpic 2 1 | 248 | 9800 0 0 4 &mpic 3 1 |
245 | 249 | ||
246 | /* IDSEL 0x15 */ | 250 | /* IDSEL 0x14 */ |
247 | a800 0 0 1 &mpic 2 1 | 251 | a000 0 0 1 &mpic 3 1 |
248 | a800 0 0 2 &mpic 3 1 | 252 | a000 0 0 2 &mpic 4 1 |
249 | a800 0 0 3 &mpic 4 1 | 253 | a000 0 0 3 &mpic 1 1 |
250 | a800 0 0 4 &mpic 1 1>; | 254 | a000 0 0 4 &mpic 2 1 |
251 | interrupt-parent = <&mpic>; | ||
252 | interrupts = <18 2>; | ||
253 | bus-range = <0 0>; | ||
254 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
255 | 01000000 0 00000000 e2000000 0 00100000>; | ||
256 | clock-frequency = <3f940aa>; | ||
257 | #interrupt-cells = <1>; | ||
258 | #size-cells = <2>; | ||
259 | #address-cells = <3>; | ||
260 | reg = <8000 1000>; | ||
261 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | ||
262 | device_type = "pci"; | ||
263 | }; | ||
264 | 255 | ||
265 | mpic: pic@40000 { | 256 | /* IDSEL 0x15 */ |
266 | clock-frequency = <0>; | 257 | a800 0 0 1 &mpic 2 1 |
267 | interrupt-controller; | 258 | a800 0 0 2 &mpic 3 1 |
268 | #address-cells = <0>; | 259 | a800 0 0 3 &mpic 4 1 |
269 | #interrupt-cells = <2>; | 260 | a800 0 0 4 &mpic 1 1>; |
270 | reg = <40000 40000>; | 261 | interrupt-parent = <&mpic>; |
271 | built-in; | 262 | interrupts = <18 2>; |
272 | compatible = "chrp,open-pic"; | 263 | bus-range = <0 0>; |
273 | device_type = "open-pic"; | 264 | ranges = <02000000 0 80000000 80000000 0 20000000 |
274 | big-endian; | 265 | 01000000 0 00000000 e2000000 0 00100000>; |
275 | }; | 266 | clock-frequency = <3f940aa>; |
267 | #interrupt-cells = <1>; | ||
268 | #size-cells = <2>; | ||
269 | #address-cells = <3>; | ||
270 | reg = <e0008000 1000>; | ||
271 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | ||
272 | device_type = "pci"; | ||
276 | }; | 273 | }; |
277 | }; | 274 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts index fb0b647f8c2a..f3f4d79deb63 100644 --- a/arch/powerpc/boot/dts/mpc8541cds.dts +++ b/arch/powerpc/boot/dts/mpc8541cds.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; // 33 MHz, from uboot | 30 | timebase-frequency = <0>; // 33 MHz, from uboot |
31 | bus-frequency = <0>; // 166 MHz | 31 | bus-frequency = <0>; // 166 MHz |
32 | clock-frequency = <0>; // 825 MHz, from uboot | 32 | clock-frequency = <0>; // 825 MHz, from uboot |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -42,10 +41,9 @@ | |||
42 | soc8541@e0000000 { | 41 | soc8541@e0000000 { |
43 | #address-cells = <1>; | 42 | #address-cells = <1>; |
44 | #size-cells = <1>; | 43 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | 44 | device_type = "soc"; |
47 | ranges = <0 e0000000 00100000>; | 45 | ranges = <0 e0000000 00100000>; |
48 | reg = <e0000000 00100000>; // CCSRBAR 1M | 46 | reg = <e0000000 00001000>; // CCSRBAR 1M |
49 | bus-frequency = <0>; | 47 | bus-frequency = <0>; |
50 | 48 | ||
51 | memory-controller@2000 { | 49 | memory-controller@2000 { |
@@ -137,113 +135,145 @@ | |||
137 | interrupt-parent = <&mpic>; | 135 | interrupt-parent = <&mpic>; |
138 | }; | 136 | }; |
139 | 137 | ||
140 | pci1: pci@8000 { | 138 | mpic: pic@40000 { |
141 | interrupt-map-mask = <1f800 0 0 7>; | 139 | clock-frequency = <0>; |
142 | interrupt-map = < | 140 | interrupt-controller; |
143 | 141 | #address-cells = <0>; | |
144 | /* IDSEL 0x10 */ | 142 | #interrupt-cells = <2>; |
145 | 08000 0 0 1 &mpic 0 1 | 143 | reg = <40000 40000>; |
146 | 08000 0 0 2 &mpic 1 1 | 144 | compatible = "chrp,open-pic"; |
147 | 08000 0 0 3 &mpic 2 1 | 145 | device_type = "open-pic"; |
148 | 08000 0 0 4 &mpic 3 1 | 146 | big-endian; |
149 | 147 | }; | |
150 | /* IDSEL 0x11 */ | 148 | |
151 | 08800 0 0 1 &mpic 0 1 | 149 | cpm@919c0 { |
152 | 08800 0 0 2 &mpic 1 1 | 150 | #address-cells = <1>; |
153 | 08800 0 0 3 &mpic 2 1 | 151 | #size-cells = <1>; |
154 | 08800 0 0 4 &mpic 3 1 | 152 | compatible = "fsl,mpc8541-cpm", "fsl,cpm2"; |
155 | 153 | reg = <919c0 30>; | |
156 | /* IDSEL 0x12 (Slot 1) */ | 154 | ranges; |
157 | 09000 0 0 1 &mpic 0 1 | 155 | |
158 | 09000 0 0 2 &mpic 1 1 | 156 | muram@80000 { |
159 | 09000 0 0 3 &mpic 2 1 | 157 | #address-cells = <1>; |
160 | 09000 0 0 4 &mpic 3 1 | 158 | #size-cells = <1>; |
161 | 159 | ranges = <0 80000 10000>; | |
162 | /* IDSEL 0x13 (Slot 2) */ | 160 | |
163 | 09800 0 0 1 &mpic 1 1 | 161 | data@0 { |
164 | 09800 0 0 2 &mpic 2 1 | 162 | compatible = "fsl,cpm-muram-data"; |
165 | 09800 0 0 3 &mpic 3 1 | 163 | reg = <0 2000 9000 1000>; |
166 | 09800 0 0 4 &mpic 0 1 | 164 | }; |
167 | 165 | }; | |
168 | /* IDSEL 0x14 (Slot 3) */ | 166 | |
169 | 0a000 0 0 1 &mpic 2 1 | 167 | brg@919f0 { |
170 | 0a000 0 0 2 &mpic 3 1 | 168 | compatible = "fsl,mpc8541-brg", |
171 | 0a000 0 0 3 &mpic 0 1 | 169 | "fsl,cpm2-brg", |
172 | 0a000 0 0 4 &mpic 1 1 | 170 | "fsl,cpm-brg"; |
173 | 171 | reg = <919f0 10 915f0 10>; | |
174 | /* IDSEL 0x15 (Slot 4) */ | 172 | }; |
175 | 0a800 0 0 1 &mpic 3 1 | 173 | |
176 | 0a800 0 0 2 &mpic 0 1 | 174 | cpmpic: pic@90c00 { |
177 | 0a800 0 0 3 &mpic 1 1 | ||
178 | 0a800 0 0 4 &mpic 2 1 | ||
179 | |||
180 | /* Bus 1 (Tundra Bridge) */ | ||
181 | /* IDSEL 0x12 (ISA bridge) */ | ||
182 | 19000 0 0 1 &mpic 0 1 | ||
183 | 19000 0 0 2 &mpic 1 1 | ||
184 | 19000 0 0 3 &mpic 2 1 | ||
185 | 19000 0 0 4 &mpic 3 1>; | ||
186 | interrupt-parent = <&mpic>; | ||
187 | interrupts = <18 2>; | ||
188 | bus-range = <0 0>; | ||
189 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
190 | 01000000 0 00000000 e2000000 0 00100000>; | ||
191 | clock-frequency = <3f940aa>; | ||
192 | #interrupt-cells = <1>; | ||
193 | #size-cells = <2>; | ||
194 | #address-cells = <3>; | ||
195 | reg = <8000 1000>; | ||
196 | compatible = "fsl,mpc8540-pci"; | ||
197 | device_type = "pci"; | ||
198 | |||
199 | i8259@19000 { | ||
200 | clock-frequency = <0>; | ||
201 | interrupt-controller; | 175 | interrupt-controller; |
202 | device_type = "interrupt-controller"; | ||
203 | reg = <19000 0 0 0 1>; | ||
204 | #address-cells = <0>; | 176 | #address-cells = <0>; |
205 | #interrupt-cells = <2>; | 177 | #interrupt-cells = <2>; |
206 | built-in; | 178 | interrupts = <2e 2>; |
207 | compatible = "chrp,iic"; | 179 | interrupt-parent = <&mpic>; |
208 | big-endian; | 180 | reg = <90c00 80>; |
209 | interrupts = <1>; | 181 | compatible = "fsl,mpc8541-cpm-pic", "fsl,cpm2-pic"; |
210 | interrupt-parent = <&pci1>; | ||
211 | }; | 182 | }; |
212 | }; | 183 | }; |
184 | }; | ||
213 | 185 | ||
214 | pci@9000 { | 186 | pci1: pci@e0008000 { |
215 | interrupt-map-mask = <f800 0 0 7>; | 187 | interrupt-map-mask = <1f800 0 0 7>; |
216 | interrupt-map = < | 188 | interrupt-map = < |
217 | 189 | ||
218 | /* IDSEL 0x15 */ | 190 | /* IDSEL 0x10 */ |
219 | a800 0 0 1 &mpic b 1 | 191 | 08000 0 0 1 &mpic 0 1 |
220 | a800 0 0 2 &mpic b 1 | 192 | 08000 0 0 2 &mpic 1 1 |
221 | a800 0 0 3 &mpic b 1 | 193 | 08000 0 0 3 &mpic 2 1 |
222 | a800 0 0 4 &mpic b 1>; | 194 | 08000 0 0 4 &mpic 3 1 |
223 | interrupt-parent = <&mpic>; | ||
224 | interrupts = <19 2>; | ||
225 | bus-range = <0 0>; | ||
226 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
227 | 01000000 0 00000000 e3000000 0 00100000>; | ||
228 | clock-frequency = <3f940aa>; | ||
229 | #interrupt-cells = <1>; | ||
230 | #size-cells = <2>; | ||
231 | #address-cells = <3>; | ||
232 | reg = <9000 1000>; | ||
233 | compatible = "fsl,mpc8540-pci"; | ||
234 | device_type = "pci"; | ||
235 | }; | ||
236 | 195 | ||
237 | mpic: pic@40000 { | 196 | /* IDSEL 0x11 */ |
238 | clock-frequency = <0>; | 197 | 08800 0 0 1 &mpic 0 1 |
198 | 08800 0 0 2 &mpic 1 1 | ||
199 | 08800 0 0 3 &mpic 2 1 | ||
200 | 08800 0 0 4 &mpic 3 1 | ||
201 | |||
202 | /* IDSEL 0x12 (Slot 1) */ | ||
203 | 09000 0 0 1 &mpic 0 1 | ||
204 | 09000 0 0 2 &mpic 1 1 | ||
205 | 09000 0 0 3 &mpic 2 1 | ||
206 | 09000 0 0 4 &mpic 3 1 | ||
207 | |||
208 | /* IDSEL 0x13 (Slot 2) */ | ||
209 | 09800 0 0 1 &mpic 1 1 | ||
210 | 09800 0 0 2 &mpic 2 1 | ||
211 | 09800 0 0 3 &mpic 3 1 | ||
212 | 09800 0 0 4 &mpic 0 1 | ||
213 | |||
214 | /* IDSEL 0x14 (Slot 3) */ | ||
215 | 0a000 0 0 1 &mpic 2 1 | ||
216 | 0a000 0 0 2 &mpic 3 1 | ||
217 | 0a000 0 0 3 &mpic 0 1 | ||
218 | 0a000 0 0 4 &mpic 1 1 | ||
219 | |||
220 | /* IDSEL 0x15 (Slot 4) */ | ||
221 | 0a800 0 0 1 &mpic 3 1 | ||
222 | 0a800 0 0 2 &mpic 0 1 | ||
223 | 0a800 0 0 3 &mpic 1 1 | ||
224 | 0a800 0 0 4 &mpic 2 1 | ||
225 | |||
226 | /* Bus 1 (Tundra Bridge) */ | ||
227 | /* IDSEL 0x12 (ISA bridge) */ | ||
228 | 19000 0 0 1 &mpic 0 1 | ||
229 | 19000 0 0 2 &mpic 1 1 | ||
230 | 19000 0 0 3 &mpic 2 1 | ||
231 | 19000 0 0 4 &mpic 3 1>; | ||
232 | interrupt-parent = <&mpic>; | ||
233 | interrupts = <18 2>; | ||
234 | bus-range = <0 0>; | ||
235 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
236 | 01000000 0 00000000 e2000000 0 00100000>; | ||
237 | clock-frequency = <3f940aa>; | ||
238 | #interrupt-cells = <1>; | ||
239 | #size-cells = <2>; | ||
240 | #address-cells = <3>; | ||
241 | reg = <e0008000 1000>; | ||
242 | compatible = "fsl,mpc8540-pci"; | ||
243 | device_type = "pci"; | ||
244 | |||
245 | i8259@19000 { | ||
239 | interrupt-controller; | 246 | interrupt-controller; |
247 | device_type = "interrupt-controller"; | ||
248 | reg = <19000 0 0 0 1>; | ||
240 | #address-cells = <0>; | 249 | #address-cells = <0>; |
241 | #interrupt-cells = <2>; | 250 | #interrupt-cells = <2>; |
242 | reg = <40000 40000>; | 251 | compatible = "chrp,iic"; |
243 | built-in; | 252 | interrupts = <1>; |
244 | compatible = "chrp,open-pic"; | 253 | interrupt-parent = <&pci1>; |
245 | device_type = "open-pic"; | ||
246 | big-endian; | ||
247 | }; | 254 | }; |
248 | }; | 255 | }; |
256 | |||
257 | pci@e0009000 { | ||
258 | interrupt-map-mask = <f800 0 0 7>; | ||
259 | interrupt-map = < | ||
260 | |||
261 | /* IDSEL 0x15 */ | ||
262 | a800 0 0 1 &mpic b 1 | ||
263 | a800 0 0 2 &mpic b 1 | ||
264 | a800 0 0 3 &mpic b 1 | ||
265 | a800 0 0 4 &mpic b 1>; | ||
266 | interrupt-parent = <&mpic>; | ||
267 | interrupts = <19 2>; | ||
268 | bus-range = <0 0>; | ||
269 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
270 | 01000000 0 00000000 e3000000 0 00100000>; | ||
271 | clock-frequency = <3f940aa>; | ||
272 | #interrupt-cells = <1>; | ||
273 | #size-cells = <2>; | ||
274 | #address-cells = <3>; | ||
275 | reg = <e0009000 1000>; | ||
276 | compatible = "fsl,mpc8540-pci"; | ||
277 | device_type = "pci"; | ||
278 | }; | ||
249 | }; | 279 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 3e79bf0a3159..3f9d15cf13e0 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; | 30 | timebase-frequency = <0>; |
31 | bus-frequency = <0>; | 31 | bus-frequency = <0>; |
32 | clock-frequency = <0>; | 32 | clock-frequency = <0>; |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -42,19 +41,9 @@ | |||
42 | soc8544@e0000000 { | 41 | soc8544@e0000000 { |
43 | #address-cells = <1>; | 42 | #address-cells = <1>; |
44 | #size-cells = <1>; | 43 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | 44 | device_type = "soc"; |
47 | 45 | ||
48 | 46 | ranges = <00000000 e0000000 00100000>; | |
49 | ranges = <00001000 e0001000 000ff000 | ||
50 | 80000000 80000000 20000000 | ||
51 | a0000000 a0000000 10000000 | ||
52 | b0000000 b0000000 00100000 | ||
53 | c0000000 c0000000 20000000 | ||
54 | b0100000 b0100000 00100000 | ||
55 | e1000000 e1000000 00010000 | ||
56 | e1010000 e1010000 00010000 | ||
57 | e1020000 e1020000 00010000>; | ||
58 | reg = <e0000000 00001000>; // CCSRBAR 1M | 47 | reg = <e0000000 00001000>; // CCSRBAR 1M |
59 | bus-frequency = <0>; // Filled out by uboot. | 48 | bus-frequency = <0>; // Filled out by uboot. |
60 | 49 | ||
@@ -149,115 +138,173 @@ | |||
149 | interrupt-parent = <&mpic>; | 138 | interrupt-parent = <&mpic>; |
150 | }; | 139 | }; |
151 | 140 | ||
152 | pci@8000 { | 141 | global-utilities@e0000 { //global utilities block |
153 | compatible = "fsl,mpc8540-pci"; | 142 | compatible = "fsl,mpc8548-guts"; |
154 | device_type = "pci"; | 143 | reg = <e0000 1000>; |
155 | interrupt-map-mask = <f800 0 0 7>; | 144 | fsl,has-rstcr; |
156 | interrupt-map = < | 145 | }; |
157 | |||
158 | /* IDSEL 0x11 J17 Slot 1 */ | ||
159 | 8800 0 0 1 &mpic 2 1 | ||
160 | 8800 0 0 2 &mpic 3 1 | ||
161 | 8800 0 0 3 &mpic 4 1 | ||
162 | 8800 0 0 4 &mpic 1 1 | ||
163 | 146 | ||
164 | /* IDSEL 0x12 J16 Slot 2 */ | 147 | mpic: pic@40000 { |
148 | clock-frequency = <0>; | ||
149 | interrupt-controller; | ||
150 | #address-cells = <0>; | ||
151 | #interrupt-cells = <2>; | ||
152 | reg = <40000 40000>; | ||
153 | compatible = "chrp,open-pic"; | ||
154 | device_type = "open-pic"; | ||
155 | big-endian; | ||
156 | }; | ||
157 | }; | ||
165 | 158 | ||
166 | 9000 0 0 1 &mpic 3 1 | 159 | pci@e0008000 { |
167 | 9000 0 0 2 &mpic 4 1 | 160 | compatible = "fsl,mpc8540-pci"; |
168 | 9000 0 0 3 &mpic 2 1 | 161 | device_type = "pci"; |
169 | 9000 0 0 4 &mpic 1 1>; | 162 | interrupt-map-mask = <f800 0 0 7>; |
163 | interrupt-map = < | ||
164 | |||
165 | /* IDSEL 0x11 J17 Slot 1 */ | ||
166 | 8800 0 0 1 &mpic 2 1 | ||
167 | 8800 0 0 2 &mpic 3 1 | ||
168 | 8800 0 0 3 &mpic 4 1 | ||
169 | 8800 0 0 4 &mpic 1 1 | ||
170 | |||
171 | /* IDSEL 0x12 J16 Slot 2 */ | ||
172 | |||
173 | 9000 0 0 1 &mpic 3 1 | ||
174 | 9000 0 0 2 &mpic 4 1 | ||
175 | 9000 0 0 3 &mpic 2 1 | ||
176 | 9000 0 0 4 &mpic 1 1>; | ||
177 | |||
178 | interrupt-parent = <&mpic>; | ||
179 | interrupts = <18 2>; | ||
180 | bus-range = <0 ff>; | ||
181 | ranges = <02000000 0 c0000000 c0000000 0 20000000 | ||
182 | 01000000 0 00000000 e1000000 0 00010000>; | ||
183 | clock-frequency = <3f940aa>; | ||
184 | #interrupt-cells = <1>; | ||
185 | #size-cells = <2>; | ||
186 | #address-cells = <3>; | ||
187 | reg = <e0008000 1000>; | ||
188 | }; | ||
170 | 189 | ||
171 | interrupt-parent = <&mpic>; | 190 | pcie@e0009000 { |
172 | interrupts = <18 2>; | 191 | compatible = "fsl,mpc8548-pcie"; |
173 | bus-range = <0 ff>; | 192 | device_type = "pci"; |
174 | ranges = <02000000 0 c0000000 c0000000 0 20000000 | 193 | #interrupt-cells = <1>; |
175 | 01000000 0 00000000 e1000000 0 00010000>; | 194 | #size-cells = <2>; |
176 | clock-frequency = <3f940aa>; | 195 | #address-cells = <3>; |
177 | #interrupt-cells = <1>; | 196 | reg = <e0009000 1000>; |
197 | bus-range = <0 ff>; | ||
198 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
199 | 01000000 0 00000000 e1010000 0 00010000>; | ||
200 | clock-frequency = <1fca055>; | ||
201 | interrupt-parent = <&mpic>; | ||
202 | interrupts = <1a 2>; | ||
203 | interrupt-map-mask = <f800 0 0 7>; | ||
204 | interrupt-map = < | ||
205 | /* IDSEL 0x0 */ | ||
206 | 0000 0 0 1 &mpic 4 1 | ||
207 | 0000 0 0 2 &mpic 5 1 | ||
208 | 0000 0 0 3 &mpic 6 1 | ||
209 | 0000 0 0 4 &mpic 7 1 | ||
210 | >; | ||
211 | pcie@0 { | ||
212 | reg = <0 0 0 0 0>; | ||
178 | #size-cells = <2>; | 213 | #size-cells = <2>; |
179 | #address-cells = <3>; | 214 | #address-cells = <3>; |
180 | reg = <8000 1000>; | ||
181 | }; | ||
182 | |||
183 | pcie@9000 { | ||
184 | compatible = "fsl,mpc8548-pcie"; | ||
185 | device_type = "pci"; | 215 | device_type = "pci"; |
186 | #interrupt-cells = <1>; | 216 | ranges = <02000000 0 80000000 |
187 | #size-cells = <2>; | 217 | 02000000 0 80000000 |
188 | #address-cells = <3>; | 218 | 0 20000000 |
189 | reg = <9000 1000>; | 219 | |
190 | bus-range = <0 ff>; | 220 | 01000000 0 00000000 |
191 | ranges = <02000000 0 80000000 80000000 0 20000000 | 221 | 01000000 0 00000000 |
192 | 01000000 0 00000000 e1010000 0 00010000>; | 222 | 0 00010000>; |
193 | clock-frequency = <1fca055>; | ||
194 | interrupt-parent = <&mpic>; | ||
195 | interrupts = <1a 2>; | ||
196 | interrupt-map-mask = <f800 0 0 7>; | ||
197 | interrupt-map = < | ||
198 | /* IDSEL 0x0 */ | ||
199 | 0000 0 0 1 &mpic 4 1 | ||
200 | 0000 0 0 2 &mpic 5 1 | ||
201 | 0000 0 0 3 &mpic 6 1 | ||
202 | 0000 0 0 4 &mpic 7 1 | ||
203 | >; | ||
204 | }; | 223 | }; |
224 | }; | ||
205 | 225 | ||
206 | pcie@a000 { | 226 | pcie@e000a000 { |
207 | compatible = "fsl,mpc8548-pcie"; | 227 | compatible = "fsl,mpc8548-pcie"; |
208 | device_type = "pci"; | 228 | device_type = "pci"; |
209 | #interrupt-cells = <1>; | 229 | #interrupt-cells = <1>; |
230 | #size-cells = <2>; | ||
231 | #address-cells = <3>; | ||
232 | reg = <e000a000 1000>; | ||
233 | bus-range = <0 ff>; | ||
234 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | ||
235 | 01000000 0 00000000 e1020000 0 00010000>; | ||
236 | clock-frequency = <1fca055>; | ||
237 | interrupt-parent = <&mpic>; | ||
238 | interrupts = <19 2>; | ||
239 | interrupt-map-mask = <f800 0 0 7>; | ||
240 | interrupt-map = < | ||
241 | /* IDSEL 0x0 */ | ||
242 | 0000 0 0 1 &mpic 0 1 | ||
243 | 0000 0 0 2 &mpic 1 1 | ||
244 | 0000 0 0 3 &mpic 2 1 | ||
245 | 0000 0 0 4 &mpic 3 1 | ||
246 | >; | ||
247 | pcie@0 { | ||
248 | reg = <0 0 0 0 0>; | ||
210 | #size-cells = <2>; | 249 | #size-cells = <2>; |
211 | #address-cells = <3>; | 250 | #address-cells = <3>; |
212 | reg = <a000 1000>; | 251 | device_type = "pci"; |
213 | bus-range = <0 ff>; | 252 | ranges = <02000000 0 a0000000 |
214 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | 253 | 02000000 0 a0000000 |
215 | 01000000 0 00000000 e1020000 0 00010000>; | 254 | 0 10000000 |
216 | clock-frequency = <1fca055>; | 255 | |
217 | interrupt-parent = <&mpic>; | 256 | 01000000 0 00000000 |
218 | interrupts = <19 2>; | 257 | 01000000 0 00000000 |
219 | interrupt-map-mask = <f800 0 0 7>; | 258 | 0 00010000>; |
220 | interrupt-map = < | ||
221 | /* IDSEL 0x0 */ | ||
222 | 0000 0 0 1 &mpic 0 1 | ||
223 | 0000 0 0 2 &mpic 1 1 | ||
224 | 0000 0 0 3 &mpic 2 1 | ||
225 | 0000 0 0 4 &mpic 3 1 | ||
226 | >; | ||
227 | }; | 259 | }; |
260 | }; | ||
228 | 261 | ||
229 | pcie@b000 { | 262 | pcie@e000b000 { |
230 | compatible = "fsl,mpc8548-pcie"; | 263 | compatible = "fsl,mpc8548-pcie"; |
231 | device_type = "pci"; | 264 | device_type = "pci"; |
232 | #interrupt-cells = <1>; | 265 | #interrupt-cells = <1>; |
266 | #size-cells = <2>; | ||
267 | #address-cells = <3>; | ||
268 | reg = <e000b000 1000>; | ||
269 | bus-range = <0 ff>; | ||
270 | ranges = <02000000 0 b0000000 b0000000 0 00100000 | ||
271 | 01000000 0 00000000 b0100000 0 00100000>; | ||
272 | clock-frequency = <1fca055>; | ||
273 | interrupt-parent = <&mpic>; | ||
274 | interrupts = <1b 2>; | ||
275 | interrupt-map-mask = <fb00 0 0 0>; | ||
276 | interrupt-map = < | ||
277 | // IDSEL 0x1c USB | ||
278 | e000 0 0 0 &i8259 c 2 | ||
279 | e100 0 0 0 &i8259 9 2 | ||
280 | e200 0 0 0 &i8259 a 2 | ||
281 | e300 0 0 0 &i8259 b 2 | ||
282 | |||
283 | // IDSEL 0x1d Audio | ||
284 | e800 0 0 0 &i8259 6 2 | ||
285 | |||
286 | // IDSEL 0x1e Legacy | ||
287 | f000 0 0 0 &i8259 7 2 | ||
288 | f100 0 0 0 &i8259 7 2 | ||
289 | |||
290 | // IDSEL 0x1f IDE/SATA | ||
291 | f800 0 0 0 &i8259 e 2 | ||
292 | f900 0 0 0 &i8259 5 2 | ||
293 | >; | ||
294 | |||
295 | pcie@0 { | ||
296 | reg = <0 0 0 0 0>; | ||
233 | #size-cells = <2>; | 297 | #size-cells = <2>; |
234 | #address-cells = <3>; | 298 | #address-cells = <3>; |
235 | reg = <b000 1000>; | 299 | device_type = "pci"; |
236 | bus-range = <0 ff>; | 300 | ranges = <02000000 0 b0000000 |
237 | ranges = <02000000 0 b0000000 b0000000 0 00100000 | 301 | 02000000 0 b0000000 |
238 | 01000000 0 00000000 b0100000 0 00100000>; | 302 | 0 00100000 |
239 | clock-frequency = <1fca055>; | 303 | |
240 | interrupt-parent = <&mpic>; | 304 | 01000000 0 00000000 |
241 | interrupts = <1b 2>; | 305 | 01000000 0 00000000 |
242 | interrupt-map-mask = <fb00 0 0 0>; | 306 | 0 00100000>; |
243 | interrupt-map = < | 307 | |
244 | // IDSEL 0x1c USB | ||
245 | e000 0 0 0 &i8259 c 2 | ||
246 | e100 0 0 0 &i8259 9 2 | ||
247 | e200 0 0 0 &i8259 a 2 | ||
248 | e300 0 0 0 &i8259 b 2 | ||
249 | |||
250 | // IDSEL 0x1d Audio | ||
251 | e800 0 0 0 &i8259 6 2 | ||
252 | |||
253 | // IDSEL 0x1e Legacy | ||
254 | f000 0 0 0 &i8259 7 2 | ||
255 | f100 0 0 0 &i8259 7 2 | ||
256 | |||
257 | // IDSEL 0x1f IDE/SATA | ||
258 | f800 0 0 0 &i8259 e 2 | ||
259 | f900 0 0 0 &i8259 5 2 | ||
260 | >; | ||
261 | uli1575@0 { | 308 | uli1575@0 { |
262 | reg = <0 0 0 0 0>; | 309 | reg = <0 0 0 0 0>; |
263 | #size-cells = <2>; | 310 | #size-cells = <2>; |
@@ -265,95 +312,63 @@ | |||
265 | ranges = <02000000 0 b0000000 | 312 | ranges = <02000000 0 b0000000 |
266 | 02000000 0 b0000000 | 313 | 02000000 0 b0000000 |
267 | 0 00100000 | 314 | 0 00100000 |
315 | |||
268 | 01000000 0 00000000 | 316 | 01000000 0 00000000 |
269 | 01000000 0 00000000 | 317 | 01000000 0 00000000 |
270 | 0 00100000>; | 318 | 0 00100000>; |
271 | 319 | isa@1e { | |
272 | pci_bridge@0 { | 320 | device_type = "isa"; |
273 | reg = <0 0 0 0 0>; | 321 | #interrupt-cells = <2>; |
274 | #size-cells = <2>; | 322 | #size-cells = <1>; |
275 | #address-cells = <3>; | 323 | #address-cells = <2>; |
276 | ranges = <02000000 0 b0000000 | 324 | reg = <f000 0 0 0 0>; |
277 | 02000000 0 b0000000 | 325 | ranges = <1 0 |
278 | 0 00100000 | 326 | 01000000 0 0 |
279 | 01000000 0 00000000 | 327 | 00001000>; |
280 | 01000000 0 00000000 | 328 | interrupt-parent = <&i8259>; |
281 | 0 00100000>; | 329 | |
282 | 330 | i8259: interrupt-controller@20 { | |
283 | isa@1e { | 331 | reg = <1 20 2 |
284 | device_type = "isa"; | 332 | 1 a0 2 |
333 | 1 4d0 2>; | ||
334 | interrupt-controller; | ||
335 | device_type = "interrupt-controller"; | ||
336 | #address-cells = <0>; | ||
285 | #interrupt-cells = <2>; | 337 | #interrupt-cells = <2>; |
286 | #size-cells = <1>; | 338 | compatible = "chrp,iic"; |
287 | #address-cells = <2>; | 339 | interrupts = <9 2>; |
288 | reg = <f000 0 0 0 0>; | 340 | interrupt-parent = <&mpic>; |
289 | ranges = <1 0 | 341 | }; |
290 | 01000000 0 0 | 342 | |
291 | 00001000>; | 343 | i8042@60 { |
344 | #size-cells = <0>; | ||
345 | #address-cells = <1>; | ||
346 | reg = <1 60 1 1 64 1>; | ||
347 | interrupts = <1 3 c 3>; | ||
292 | interrupt-parent = <&i8259>; | 348 | interrupt-parent = <&i8259>; |
293 | 349 | ||
294 | i8259: interrupt-controller@20 { | 350 | keyboard@0 { |
295 | reg = <1 20 2 | 351 | reg = <0>; |
296 | 1 a0 2 | 352 | compatible = "pnpPNP,303"; |
297 | 1 4d0 2>; | ||
298 | clock-frequency = <0>; | ||
299 | interrupt-controller; | ||
300 | device_type = "interrupt-controller"; | ||
301 | #address-cells = <0>; | ||
302 | #interrupt-cells = <2>; | ||
303 | built-in; | ||
304 | compatible = "chrp,iic"; | ||
305 | interrupts = <9 2>; | ||
306 | interrupt-parent = <&mpic>; | ||
307 | }; | 353 | }; |
308 | 354 | ||
309 | i8042@60 { | 355 | mouse@1 { |
310 | #size-cells = <0>; | 356 | reg = <1>; |
311 | #address-cells = <1>; | 357 | compatible = "pnpPNP,f03"; |
312 | reg = <1 60 1 1 64 1>; | ||
313 | interrupts = <1 3 c 3>; | ||
314 | interrupt-parent = <&i8259>; | ||
315 | |||
316 | keyboard@0 { | ||
317 | reg = <0>; | ||
318 | compatible = "pnpPNP,303"; | ||
319 | }; | ||
320 | |||
321 | mouse@1 { | ||
322 | reg = <1>; | ||
323 | compatible = "pnpPNP,f03"; | ||
324 | }; | ||
325 | }; | 358 | }; |
359 | }; | ||
326 | 360 | ||
327 | rtc@70 { | 361 | rtc@70 { |
328 | compatible = "pnpPNP,b00"; | 362 | compatible = "pnpPNP,b00"; |
329 | reg = <1 70 2>; | 363 | reg = <1 70 2>; |
330 | }; | 364 | }; |
331 | 365 | ||
332 | gpio@400 { | 366 | gpio@400 { |
333 | reg = <1 400 80>; | 367 | reg = <1 400 80>; |
334 | }; | ||
335 | }; | 368 | }; |
336 | }; | 369 | }; |
337 | }; | 370 | }; |
338 | |||
339 | }; | 371 | }; |
340 | 372 | ||
341 | global-utilities@e0000 { //global utilities block | ||
342 | compatible = "fsl,mpc8548-guts"; | ||
343 | reg = <e0000 1000>; | ||
344 | fsl,has-rstcr; | ||
345 | }; | ||
346 | |||
347 | mpic: pic@40000 { | ||
348 | clock-frequency = <0>; | ||
349 | interrupt-controller; | ||
350 | #address-cells = <0>; | ||
351 | #interrupt-cells = <2>; | ||
352 | reg = <40000 40000>; | ||
353 | built-in; | ||
354 | compatible = "chrp,open-pic"; | ||
355 | device_type = "open-pic"; | ||
356 | big-endian; | ||
357 | }; | ||
358 | }; | 373 | }; |
359 | }; | 374 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts index d215d21fff42..69ca5025d972 100644 --- a/arch/powerpc/boot/dts/mpc8548cds.dts +++ b/arch/powerpc/boot/dts/mpc8548cds.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; // 33 MHz, from uboot | 30 | timebase-frequency = <0>; // 33 MHz, from uboot |
31 | bus-frequency = <0>; // 166 MHz | 31 | bus-frequency = <0>; // 166 MHz |
32 | clock-frequency = <0>; // 825 MHz, from uboot | 32 | clock-frequency = <0>; // 825 MHz, from uboot |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -42,15 +41,8 @@ | |||
42 | soc8548@e0000000 { | 41 | soc8548@e0000000 { |
43 | #address-cells = <1>; | 42 | #address-cells = <1>; |
44 | #size-cells = <1>; | 43 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | 44 | device_type = "soc"; |
47 | ranges = <00001000 e0001000 000ff000 | 45 | ranges = <00000000 e0000000 00100000>; |
48 | 80000000 80000000 10000000 | ||
49 | e2000000 e2000000 00800000 | ||
50 | 90000000 90000000 10000000 | ||
51 | e2800000 e2800000 00800000 | ||
52 | a0000000 a0000000 20000000 | ||
53 | e3000000 e3000000 01000000>; | ||
54 | reg = <e0000000 00001000>; // CCSRBAR | 46 | reg = <e0000000 00001000>; // CCSRBAR |
55 | bus-frequency = <0>; | 47 | bus-frequency = <0>; |
56 | 48 | ||
@@ -189,215 +181,225 @@ | |||
189 | fsl,has-rstcr; | 181 | fsl,has-rstcr; |
190 | }; | 182 | }; |
191 | 183 | ||
192 | pci@8000 { | 184 | mpic: pic@40000 { |
185 | clock-frequency = <0>; | ||
186 | interrupt-controller; | ||
187 | #address-cells = <0>; | ||
188 | #interrupt-cells = <2>; | ||
189 | reg = <40000 40000>; | ||
190 | compatible = "chrp,open-pic"; | ||
191 | device_type = "open-pic"; | ||
192 | big-endian; | ||
193 | }; | ||
194 | }; | ||
195 | |||
196 | pci@e0008000 { | ||
197 | interrupt-map-mask = <f800 0 0 7>; | ||
198 | interrupt-map = < | ||
199 | /* IDSEL 0x4 (PCIX Slot 2) */ | ||
200 | 02000 0 0 1 &mpic 0 1 | ||
201 | 02000 0 0 2 &mpic 1 1 | ||
202 | 02000 0 0 3 &mpic 2 1 | ||
203 | 02000 0 0 4 &mpic 3 1 | ||
204 | |||
205 | /* IDSEL 0x5 (PCIX Slot 3) */ | ||
206 | 02800 0 0 1 &mpic 1 1 | ||
207 | 02800 0 0 2 &mpic 2 1 | ||
208 | 02800 0 0 3 &mpic 3 1 | ||
209 | 02800 0 0 4 &mpic 0 1 | ||
210 | |||
211 | /* IDSEL 0x6 (PCIX Slot 4) */ | ||
212 | 03000 0 0 1 &mpic 2 1 | ||
213 | 03000 0 0 2 &mpic 3 1 | ||
214 | 03000 0 0 3 &mpic 0 1 | ||
215 | 03000 0 0 4 &mpic 1 1 | ||
216 | |||
217 | /* IDSEL 0x8 (PCIX Slot 5) */ | ||
218 | 04000 0 0 1 &mpic 0 1 | ||
219 | 04000 0 0 2 &mpic 1 1 | ||
220 | 04000 0 0 3 &mpic 2 1 | ||
221 | 04000 0 0 4 &mpic 3 1 | ||
222 | |||
223 | /* IDSEL 0xC (Tsi310 bridge) */ | ||
224 | 06000 0 0 1 &mpic 0 1 | ||
225 | 06000 0 0 2 &mpic 1 1 | ||
226 | 06000 0 0 3 &mpic 2 1 | ||
227 | 06000 0 0 4 &mpic 3 1 | ||
228 | |||
229 | /* IDSEL 0x14 (Slot 2) */ | ||
230 | 0a000 0 0 1 &mpic 0 1 | ||
231 | 0a000 0 0 2 &mpic 1 1 | ||
232 | 0a000 0 0 3 &mpic 2 1 | ||
233 | 0a000 0 0 4 &mpic 3 1 | ||
234 | |||
235 | /* IDSEL 0x15 (Slot 3) */ | ||
236 | 0a800 0 0 1 &mpic 1 1 | ||
237 | 0a800 0 0 2 &mpic 2 1 | ||
238 | 0a800 0 0 3 &mpic 3 1 | ||
239 | 0a800 0 0 4 &mpic 0 1 | ||
240 | |||
241 | /* IDSEL 0x16 (Slot 4) */ | ||
242 | 0b000 0 0 1 &mpic 2 1 | ||
243 | 0b000 0 0 2 &mpic 3 1 | ||
244 | 0b000 0 0 3 &mpic 0 1 | ||
245 | 0b000 0 0 4 &mpic 1 1 | ||
246 | |||
247 | /* IDSEL 0x18 (Slot 5) */ | ||
248 | 0c000 0 0 1 &mpic 0 1 | ||
249 | 0c000 0 0 2 &mpic 1 1 | ||
250 | 0c000 0 0 3 &mpic 2 1 | ||
251 | 0c000 0 0 4 &mpic 3 1 | ||
252 | |||
253 | /* IDSEL 0x1C (Tsi310 bridge PCI primary) */ | ||
254 | 0E000 0 0 1 &mpic 0 1 | ||
255 | 0E000 0 0 2 &mpic 1 1 | ||
256 | 0E000 0 0 3 &mpic 2 1 | ||
257 | 0E000 0 0 4 &mpic 3 1>; | ||
258 | |||
259 | interrupt-parent = <&mpic>; | ||
260 | interrupts = <18 2>; | ||
261 | bus-range = <0 0>; | ||
262 | ranges = <02000000 0 80000000 80000000 0 10000000 | ||
263 | 01000000 0 00000000 e2000000 0 00800000>; | ||
264 | clock-frequency = <3f940aa>; | ||
265 | #interrupt-cells = <1>; | ||
266 | #size-cells = <2>; | ||
267 | #address-cells = <3>; | ||
268 | reg = <e0008000 1000>; | ||
269 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | ||
270 | device_type = "pci"; | ||
271 | |||
272 | pci_bridge@1c { | ||
193 | interrupt-map-mask = <f800 0 0 7>; | 273 | interrupt-map-mask = <f800 0 0 7>; |
194 | interrupt-map = < | 274 | interrupt-map = < |
195 | /* IDSEL 0x4 (PCIX Slot 2) */ | ||
196 | 02000 0 0 1 &mpic 0 1 | ||
197 | 02000 0 0 2 &mpic 1 1 | ||
198 | 02000 0 0 3 &mpic 2 1 | ||
199 | 02000 0 0 4 &mpic 3 1 | ||
200 | |||
201 | /* IDSEL 0x5 (PCIX Slot 3) */ | ||
202 | 02800 0 0 1 &mpic 1 1 | ||
203 | 02800 0 0 2 &mpic 2 1 | ||
204 | 02800 0 0 3 &mpic 3 1 | ||
205 | 02800 0 0 4 &mpic 0 1 | ||
206 | |||
207 | /* IDSEL 0x6 (PCIX Slot 4) */ | ||
208 | 03000 0 0 1 &mpic 2 1 | ||
209 | 03000 0 0 2 &mpic 3 1 | ||
210 | 03000 0 0 3 &mpic 0 1 | ||
211 | 03000 0 0 4 &mpic 1 1 | ||
212 | |||
213 | /* IDSEL 0x8 (PCIX Slot 5) */ | ||
214 | 04000 0 0 1 &mpic 0 1 | ||
215 | 04000 0 0 2 &mpic 1 1 | ||
216 | 04000 0 0 3 &mpic 2 1 | ||
217 | 04000 0 0 4 &mpic 3 1 | ||
218 | |||
219 | /* IDSEL 0xC (Tsi310 bridge) */ | ||
220 | 06000 0 0 1 &mpic 0 1 | ||
221 | 06000 0 0 2 &mpic 1 1 | ||
222 | 06000 0 0 3 &mpic 2 1 | ||
223 | 06000 0 0 4 &mpic 3 1 | ||
224 | |||
225 | /* IDSEL 0x14 (Slot 2) */ | ||
226 | 0a000 0 0 1 &mpic 0 1 | ||
227 | 0a000 0 0 2 &mpic 1 1 | ||
228 | 0a000 0 0 3 &mpic 2 1 | ||
229 | 0a000 0 0 4 &mpic 3 1 | ||
230 | |||
231 | /* IDSEL 0x15 (Slot 3) */ | ||
232 | 0a800 0 0 1 &mpic 1 1 | ||
233 | 0a800 0 0 2 &mpic 2 1 | ||
234 | 0a800 0 0 3 &mpic 3 1 | ||
235 | 0a800 0 0 4 &mpic 0 1 | ||
236 | |||
237 | /* IDSEL 0x16 (Slot 4) */ | ||
238 | 0b000 0 0 1 &mpic 2 1 | ||
239 | 0b000 0 0 2 &mpic 3 1 | ||
240 | 0b000 0 0 3 &mpic 0 1 | ||
241 | 0b000 0 0 4 &mpic 1 1 | ||
242 | |||
243 | /* IDSEL 0x18 (Slot 5) */ | ||
244 | 0c000 0 0 1 &mpic 0 1 | ||
245 | 0c000 0 0 2 &mpic 1 1 | ||
246 | 0c000 0 0 3 &mpic 2 1 | ||
247 | 0c000 0 0 4 &mpic 3 1 | ||
248 | |||
249 | /* IDSEL 0x1C (Tsi310 bridge PCI primary) */ | ||
250 | 0E000 0 0 1 &mpic 0 1 | ||
251 | 0E000 0 0 2 &mpic 1 1 | ||
252 | 0E000 0 0 3 &mpic 2 1 | ||
253 | 0E000 0 0 4 &mpic 3 1>; | ||
254 | 275 | ||
255 | interrupt-parent = <&mpic>; | 276 | /* IDSEL 0x00 (PrPMC Site) */ |
256 | interrupts = <18 2>; | 277 | 0000 0 0 1 &mpic 0 1 |
257 | bus-range = <0 0>; | 278 | 0000 0 0 2 &mpic 1 1 |
258 | ranges = <02000000 0 80000000 80000000 0 10000000 | 279 | 0000 0 0 3 &mpic 2 1 |
259 | 01000000 0 00000000 e2000000 0 00800000>; | 280 | 0000 0 0 4 &mpic 3 1 |
260 | clock-frequency = <3f940aa>; | 281 | |
282 | /* IDSEL 0x04 (VIA chip) */ | ||
283 | 2000 0 0 1 &mpic 0 1 | ||
284 | 2000 0 0 2 &mpic 1 1 | ||
285 | 2000 0 0 3 &mpic 2 1 | ||
286 | 2000 0 0 4 &mpic 3 1 | ||
287 | |||
288 | /* IDSEL 0x05 (8139) */ | ||
289 | 2800 0 0 1 &mpic 1 1 | ||
290 | |||
291 | /* IDSEL 0x06 (Slot 6) */ | ||
292 | 3000 0 0 1 &mpic 2 1 | ||
293 | 3000 0 0 2 &mpic 3 1 | ||
294 | 3000 0 0 3 &mpic 0 1 | ||
295 | 3000 0 0 4 &mpic 1 1 | ||
296 | |||
297 | /* IDESL 0x07 (Slot 7) */ | ||
298 | 3800 0 0 1 &mpic 3 1 | ||
299 | 3800 0 0 2 &mpic 0 1 | ||
300 | 3800 0 0 3 &mpic 1 1 | ||
301 | 3800 0 0 4 &mpic 2 1>; | ||
302 | |||
303 | reg = <e000 0 0 0 0>; | ||
261 | #interrupt-cells = <1>; | 304 | #interrupt-cells = <1>; |
262 | #size-cells = <2>; | 305 | #size-cells = <2>; |
263 | #address-cells = <3>; | 306 | #address-cells = <3>; |
264 | reg = <8000 1000>; | 307 | ranges = <02000000 0 80000000 |
265 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | 308 | 02000000 0 80000000 |
266 | device_type = "pci"; | 309 | 0 20000000 |
310 | 01000000 0 00000000 | ||
311 | 01000000 0 00000000 | ||
312 | 0 00080000>; | ||
313 | clock-frequency = <1fca055>; | ||
267 | 314 | ||
268 | pci_bridge@1c { | 315 | isa@4 { |
269 | interrupt-map-mask = <f800 0 0 7>; | 316 | device_type = "isa"; |
270 | interrupt-map = < | 317 | #interrupt-cells = <2>; |
271 | 318 | #size-cells = <1>; | |
272 | /* IDSEL 0x00 (PrPMC Site) */ | 319 | #address-cells = <2>; |
273 | 0000 0 0 1 &mpic 0 1 | 320 | reg = <2000 0 0 0 0>; |
274 | 0000 0 0 2 &mpic 1 1 | 321 | ranges = <1 0 01000000 0 0 00001000>; |
275 | 0000 0 0 3 &mpic 2 1 | 322 | interrupt-parent = <&i8259>; |
276 | 0000 0 0 4 &mpic 3 1 | 323 | |
277 | 324 | i8259: interrupt-controller@20 { | |
278 | /* IDSEL 0x04 (VIA chip) */ | 325 | interrupt-controller; |
279 | 2000 0 0 1 &mpic 0 1 | 326 | device_type = "interrupt-controller"; |
280 | 2000 0 0 2 &mpic 1 1 | 327 | reg = <1 20 2 |
281 | 2000 0 0 3 &mpic 2 1 | 328 | 1 a0 2 |
282 | 2000 0 0 4 &mpic 3 1 | 329 | 1 4d0 2>; |
283 | 330 | #address-cells = <0>; | |
284 | /* IDSEL 0x05 (8139) */ | ||
285 | 2800 0 0 1 &mpic 1 1 | ||
286 | |||
287 | /* IDSEL 0x06 (Slot 6) */ | ||
288 | 3000 0 0 1 &mpic 2 1 | ||
289 | 3000 0 0 2 &mpic 3 1 | ||
290 | 3000 0 0 3 &mpic 0 1 | ||
291 | 3000 0 0 4 &mpic 1 1 | ||
292 | |||
293 | /* IDESL 0x07 (Slot 7) */ | ||
294 | 3800 0 0 1 &mpic 3 1 | ||
295 | 3800 0 0 2 &mpic 0 1 | ||
296 | 3800 0 0 3 &mpic 1 1 | ||
297 | 3800 0 0 4 &mpic 2 1>; | ||
298 | |||
299 | reg = <e000 0 0 0 0>; | ||
300 | #interrupt-cells = <1>; | ||
301 | #size-cells = <2>; | ||
302 | #address-cells = <3>; | ||
303 | ranges = <02000000 0 80000000 | ||
304 | 02000000 0 80000000 | ||
305 | 0 20000000 | ||
306 | 01000000 0 00000000 | ||
307 | 01000000 0 00000000 | ||
308 | 0 00080000>; | ||
309 | clock-frequency = <1fca055>; | ||
310 | |||
311 | isa@4 { | ||
312 | device_type = "isa"; | ||
313 | #interrupt-cells = <2>; | 331 | #interrupt-cells = <2>; |
314 | #size-cells = <1>; | 332 | compatible = "chrp,iic"; |
315 | #address-cells = <2>; | 333 | interrupts = <0 1>; |
316 | reg = <2000 0 0 0 0>; | 334 | interrupt-parent = <&mpic>; |
317 | ranges = <1 0 01000000 0 0 00001000>; | ||
318 | interrupt-parent = <&i8259>; | ||
319 | |||
320 | i8259: interrupt-controller@20 { | ||
321 | clock-frequency = <0>; | ||
322 | interrupt-controller; | ||
323 | device_type = "interrupt-controller"; | ||
324 | reg = <1 20 2 | ||
325 | 1 a0 2 | ||
326 | 1 4d0 2>; | ||
327 | #address-cells = <0>; | ||
328 | #interrupt-cells = <2>; | ||
329 | built-in; | ||
330 | compatible = "chrp,iic"; | ||
331 | interrupts = <0 1>; | ||
332 | interrupt-parent = <&mpic>; | ||
333 | }; | ||
334 | |||
335 | rtc@70 { | ||
336 | compatible = "pnpPNP,b00"; | ||
337 | reg = <1 70 2>; | ||
338 | }; | ||
339 | }; | 335 | }; |
340 | }; | ||
341 | }; | ||
342 | 336 | ||
343 | pci@9000 { | 337 | rtc@70 { |
344 | interrupt-map-mask = <f800 0 0 7>; | 338 | compatible = "pnpPNP,b00"; |
345 | interrupt-map = < | 339 | reg = <1 70 2>; |
346 | 340 | }; | |
347 | /* IDSEL 0x15 */ | 341 | }; |
348 | a800 0 0 1 &mpic b 1 | ||
349 | a800 0 0 2 &mpic 1 1 | ||
350 | a800 0 0 3 &mpic 2 1 | ||
351 | a800 0 0 4 &mpic 3 1>; | ||
352 | |||
353 | interrupt-parent = <&mpic>; | ||
354 | interrupts = <19 2>; | ||
355 | bus-range = <0 0>; | ||
356 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
357 | 01000000 0 00000000 e2800000 0 00800000>; | ||
358 | clock-frequency = <3f940aa>; | ||
359 | #interrupt-cells = <1>; | ||
360 | #size-cells = <2>; | ||
361 | #address-cells = <3>; | ||
362 | reg = <9000 1000>; | ||
363 | compatible = "fsl,mpc8540-pci"; | ||
364 | device_type = "pci"; | ||
365 | }; | 342 | }; |
366 | /* PCI Express */ | 343 | }; |
367 | pcie@a000 { | ||
368 | interrupt-map-mask = <f800 0 0 7>; | ||
369 | interrupt-map = < | ||
370 | 344 | ||
371 | /* IDSEL 0x0 (PEX) */ | 345 | pci@e0009000 { |
372 | 00000 0 0 1 &mpic 0 1 | 346 | interrupt-map-mask = <f800 0 0 7>; |
373 | 00000 0 0 2 &mpic 1 1 | 347 | interrupt-map = < |
374 | 00000 0 0 3 &mpic 2 1 | 348 | |
375 | 00000 0 0 4 &mpic 3 1>; | 349 | /* IDSEL 0x15 */ |
350 | a800 0 0 1 &mpic b 1 | ||
351 | a800 0 0 2 &mpic 1 1 | ||
352 | a800 0 0 3 &mpic 2 1 | ||
353 | a800 0 0 4 &mpic 3 1>; | ||
354 | |||
355 | interrupt-parent = <&mpic>; | ||
356 | interrupts = <19 2>; | ||
357 | bus-range = <0 0>; | ||
358 | ranges = <02000000 0 90000000 90000000 0 10000000 | ||
359 | 01000000 0 00000000 e2800000 0 00800000>; | ||
360 | clock-frequency = <3f940aa>; | ||
361 | #interrupt-cells = <1>; | ||
362 | #size-cells = <2>; | ||
363 | #address-cells = <3>; | ||
364 | reg = <e0009000 1000>; | ||
365 | compatible = "fsl,mpc8540-pci"; | ||
366 | device_type = "pci"; | ||
367 | }; | ||
376 | 368 | ||
377 | interrupt-parent = <&mpic>; | 369 | pcie@e000a000 { |
378 | interrupts = <1a 2>; | 370 | interrupt-map-mask = <f800 0 0 7>; |
379 | bus-range = <0 ff>; | 371 | interrupt-map = < |
380 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 372 | |
381 | 01000000 0 00000000 e3000000 0 08000000>; | 373 | /* IDSEL 0x0 (PEX) */ |
382 | clock-frequency = <1fca055>; | 374 | 00000 0 0 1 &mpic 0 1 |
383 | #interrupt-cells = <1>; | 375 | 00000 0 0 2 &mpic 1 1 |
376 | 00000 0 0 3 &mpic 2 1 | ||
377 | 00000 0 0 4 &mpic 3 1>; | ||
378 | |||
379 | interrupt-parent = <&mpic>; | ||
380 | interrupts = <1a 2>; | ||
381 | bus-range = <0 ff>; | ||
382 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
383 | 01000000 0 00000000 e3000000 0 08000000>; | ||
384 | clock-frequency = <1fca055>; | ||
385 | #interrupt-cells = <1>; | ||
386 | #size-cells = <2>; | ||
387 | #address-cells = <3>; | ||
388 | reg = <e000a000 1000>; | ||
389 | compatible = "fsl,mpc8548-pcie"; | ||
390 | device_type = "pci"; | ||
391 | pcie@0 { | ||
392 | reg = <0 0 0 0 0>; | ||
384 | #size-cells = <2>; | 393 | #size-cells = <2>; |
385 | #address-cells = <3>; | 394 | #address-cells = <3>; |
386 | reg = <a000 1000>; | ||
387 | compatible = "fsl,mpc8548-pcie"; | ||
388 | device_type = "pci"; | 395 | device_type = "pci"; |
389 | }; | 396 | ranges = <02000000 0 a0000000 |
397 | 02000000 0 a0000000 | ||
398 | 0 20000000 | ||
390 | 399 | ||
391 | mpic: pic@40000 { | 400 | 01000000 0 00000000 |
392 | clock-frequency = <0>; | 401 | 01000000 0 00000000 |
393 | interrupt-controller; | 402 | 0 08000000>; |
394 | #address-cells = <0>; | ||
395 | #interrupt-cells = <2>; | ||
396 | reg = <40000 40000>; | ||
397 | built-in; | ||
398 | compatible = "chrp,open-pic"; | ||
399 | device_type = "open-pic"; | ||
400 | big-endian; | ||
401 | }; | 403 | }; |
402 | }; | 404 | }; |
403 | }; | 405 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts index c3c888252121..57029cca32b2 100644 --- a/arch/powerpc/boot/dts/mpc8555cds.dts +++ b/arch/powerpc/boot/dts/mpc8555cds.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; // 33 MHz, from uboot | 30 | timebase-frequency = <0>; // 33 MHz, from uboot |
31 | bus-frequency = <0>; // 166 MHz | 31 | bus-frequency = <0>; // 166 MHz |
32 | clock-frequency = <0>; // 825 MHz, from uboot | 32 | clock-frequency = <0>; // 825 MHz, from uboot |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -42,10 +41,9 @@ | |||
42 | soc8555@e0000000 { | 41 | soc8555@e0000000 { |
43 | #address-cells = <1>; | 42 | #address-cells = <1>; |
44 | #size-cells = <1>; | 43 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | 44 | device_type = "soc"; |
47 | ranges = <0 e0000000 00100000>; | 45 | ranges = <0 e0000000 00100000>; |
48 | reg = <e0000000 00100000>; // CCSRBAR 1M | 46 | reg = <e0000000 00001000>; // CCSRBAR 1M |
49 | bus-frequency = <0>; | 47 | bus-frequency = <0>; |
50 | 48 | ||
51 | memory-controller@2000 { | 49 | memory-controller@2000 { |
@@ -137,113 +135,145 @@ | |||
137 | interrupt-parent = <&mpic>; | 135 | interrupt-parent = <&mpic>; |
138 | }; | 136 | }; |
139 | 137 | ||
140 | pci1: pci@8000 { | 138 | mpic: pic@40000 { |
141 | interrupt-map-mask = <1f800 0 0 7>; | 139 | clock-frequency = <0>; |
142 | interrupt-map = < | 140 | interrupt-controller; |
143 | 141 | #address-cells = <0>; | |
144 | /* IDSEL 0x10 */ | 142 | #interrupt-cells = <2>; |
145 | 08000 0 0 1 &mpic 0 1 | 143 | reg = <40000 40000>; |
146 | 08000 0 0 2 &mpic 1 1 | 144 | compatible = "chrp,open-pic"; |
147 | 08000 0 0 3 &mpic 2 1 | 145 | device_type = "open-pic"; |
148 | 08000 0 0 4 &mpic 3 1 | 146 | big-endian; |
149 | 147 | }; | |
150 | /* IDSEL 0x11 */ | 148 | |
151 | 08800 0 0 1 &mpic 0 1 | 149 | cpm@919c0 { |
152 | 08800 0 0 2 &mpic 1 1 | 150 | #address-cells = <1>; |
153 | 08800 0 0 3 &mpic 2 1 | 151 | #size-cells = <1>; |
154 | 08800 0 0 4 &mpic 3 1 | 152 | compatible = "fsl,mpc8555-cpm", "fsl,cpm2"; |
155 | 153 | reg = <919c0 30>; | |
156 | /* IDSEL 0x12 (Slot 1) */ | 154 | ranges; |
157 | 09000 0 0 1 &mpic 0 1 | 155 | |
158 | 09000 0 0 2 &mpic 1 1 | 156 | muram@80000 { |
159 | 09000 0 0 3 &mpic 2 1 | 157 | #address-cells = <1>; |
160 | 09000 0 0 4 &mpic 3 1 | 158 | #size-cells = <1>; |
161 | 159 | ranges = <0 80000 10000>; | |
162 | /* IDSEL 0x13 (Slot 2) */ | 160 | |
163 | 09800 0 0 1 &mpic 1 1 | 161 | data@0 { |
164 | 09800 0 0 2 &mpic 2 1 | 162 | compatible = "fsl,cpm-muram-data"; |
165 | 09800 0 0 3 &mpic 3 1 | 163 | reg = <0 2000 9000 1000>; |
166 | 09800 0 0 4 &mpic 0 1 | 164 | }; |
167 | 165 | }; | |
168 | /* IDSEL 0x14 (Slot 3) */ | 166 | |
169 | 0a000 0 0 1 &mpic 2 1 | 167 | brg@919f0 { |
170 | 0a000 0 0 2 &mpic 3 1 | 168 | compatible = "fsl,mpc8555-brg", |
171 | 0a000 0 0 3 &mpic 0 1 | 169 | "fsl,cpm2-brg", |
172 | 0a000 0 0 4 &mpic 1 1 | 170 | "fsl,cpm-brg"; |
173 | 171 | reg = <919f0 10 915f0 10>; | |
174 | /* IDSEL 0x15 (Slot 4) */ | 172 | }; |
175 | 0a800 0 0 1 &mpic 3 1 | 173 | |
176 | 0a800 0 0 2 &mpic 0 1 | 174 | cpmpic: pic@90c00 { |
177 | 0a800 0 0 3 &mpic 1 1 | ||
178 | 0a800 0 0 4 &mpic 2 1 | ||
179 | |||
180 | /* Bus 1 (Tundra Bridge) */ | ||
181 | /* IDSEL 0x12 (ISA bridge) */ | ||
182 | 19000 0 0 1 &mpic 0 1 | ||
183 | 19000 0 0 2 &mpic 1 1 | ||
184 | 19000 0 0 3 &mpic 2 1 | ||
185 | 19000 0 0 4 &mpic 3 1>; | ||
186 | interrupt-parent = <&mpic>; | ||
187 | interrupts = <18 2>; | ||
188 | bus-range = <0 0>; | ||
189 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
190 | 01000000 0 00000000 e2000000 0 00100000>; | ||
191 | clock-frequency = <3f940aa>; | ||
192 | #interrupt-cells = <1>; | ||
193 | #size-cells = <2>; | ||
194 | #address-cells = <3>; | ||
195 | reg = <8000 1000>; | ||
196 | compatible = "fsl,mpc8540-pci"; | ||
197 | device_type = "pci"; | ||
198 | |||
199 | i8259@19000 { | ||
200 | clock-frequency = <0>; | ||
201 | interrupt-controller; | 175 | interrupt-controller; |
202 | device_type = "interrupt-controller"; | ||
203 | reg = <19000 0 0 0 1>; | ||
204 | #address-cells = <0>; | 176 | #address-cells = <0>; |
205 | #interrupt-cells = <2>; | 177 | #interrupt-cells = <2>; |
206 | built-in; | 178 | interrupts = <2e 2>; |
207 | compatible = "chrp,iic"; | 179 | interrupt-parent = <&mpic>; |
208 | big-endian; | 180 | reg = <90c00 80>; |
209 | interrupts = <1>; | 181 | compatible = "fsl,mpc8555-cpm-pic", "fsl,cpm2-pic"; |
210 | interrupt-parent = <&pci1>; | ||
211 | }; | 182 | }; |
212 | }; | 183 | }; |
184 | }; | ||
213 | 185 | ||
214 | pci@9000 { | 186 | pci1: pci@e0008000 { |
215 | interrupt-map-mask = <f800 0 0 7>; | 187 | interrupt-map-mask = <1f800 0 0 7>; |
216 | interrupt-map = < | 188 | interrupt-map = < |
217 | 189 | ||
218 | /* IDSEL 0x15 */ | 190 | /* IDSEL 0x10 */ |
219 | a800 0 0 1 &mpic b 1 | 191 | 08000 0 0 1 &mpic 0 1 |
220 | a800 0 0 2 &mpic b 1 | 192 | 08000 0 0 2 &mpic 1 1 |
221 | a800 0 0 3 &mpic b 1 | 193 | 08000 0 0 3 &mpic 2 1 |
222 | a800 0 0 4 &mpic b 1>; | 194 | 08000 0 0 4 &mpic 3 1 |
223 | interrupt-parent = <&mpic>; | ||
224 | interrupts = <19 2>; | ||
225 | bus-range = <0 0>; | ||
226 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
227 | 01000000 0 00000000 e3000000 0 00100000>; | ||
228 | clock-frequency = <3f940aa>; | ||
229 | #interrupt-cells = <1>; | ||
230 | #size-cells = <2>; | ||
231 | #address-cells = <3>; | ||
232 | reg = <9000 1000>; | ||
233 | compatible = "fsl,mpc8540-pci"; | ||
234 | device_type = "pci"; | ||
235 | }; | ||
236 | 195 | ||
237 | mpic: pic@40000 { | 196 | /* IDSEL 0x11 */ |
238 | clock-frequency = <0>; | 197 | 08800 0 0 1 &mpic 0 1 |
198 | 08800 0 0 2 &mpic 1 1 | ||
199 | 08800 0 0 3 &mpic 2 1 | ||
200 | 08800 0 0 4 &mpic 3 1 | ||
201 | |||
202 | /* IDSEL 0x12 (Slot 1) */ | ||
203 | 09000 0 0 1 &mpic 0 1 | ||
204 | 09000 0 0 2 &mpic 1 1 | ||
205 | 09000 0 0 3 &mpic 2 1 | ||
206 | 09000 0 0 4 &mpic 3 1 | ||
207 | |||
208 | /* IDSEL 0x13 (Slot 2) */ | ||
209 | 09800 0 0 1 &mpic 1 1 | ||
210 | 09800 0 0 2 &mpic 2 1 | ||
211 | 09800 0 0 3 &mpic 3 1 | ||
212 | 09800 0 0 4 &mpic 0 1 | ||
213 | |||
214 | /* IDSEL 0x14 (Slot 3) */ | ||
215 | 0a000 0 0 1 &mpic 2 1 | ||
216 | 0a000 0 0 2 &mpic 3 1 | ||
217 | 0a000 0 0 3 &mpic 0 1 | ||
218 | 0a000 0 0 4 &mpic 1 1 | ||
219 | |||
220 | /* IDSEL 0x15 (Slot 4) */ | ||
221 | 0a800 0 0 1 &mpic 3 1 | ||
222 | 0a800 0 0 2 &mpic 0 1 | ||
223 | 0a800 0 0 3 &mpic 1 1 | ||
224 | 0a800 0 0 4 &mpic 2 1 | ||
225 | |||
226 | /* Bus 1 (Tundra Bridge) */ | ||
227 | /* IDSEL 0x12 (ISA bridge) */ | ||
228 | 19000 0 0 1 &mpic 0 1 | ||
229 | 19000 0 0 2 &mpic 1 1 | ||
230 | 19000 0 0 3 &mpic 2 1 | ||
231 | 19000 0 0 4 &mpic 3 1>; | ||
232 | interrupt-parent = <&mpic>; | ||
233 | interrupts = <18 2>; | ||
234 | bus-range = <0 0>; | ||
235 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
236 | 01000000 0 00000000 e2000000 0 00100000>; | ||
237 | clock-frequency = <3f940aa>; | ||
238 | #interrupt-cells = <1>; | ||
239 | #size-cells = <2>; | ||
240 | #address-cells = <3>; | ||
241 | reg = <e0008000 1000>; | ||
242 | compatible = "fsl,mpc8540-pci"; | ||
243 | device_type = "pci"; | ||
244 | |||
245 | i8259@19000 { | ||
239 | interrupt-controller; | 246 | interrupt-controller; |
247 | device_type = "interrupt-controller"; | ||
248 | reg = <19000 0 0 0 1>; | ||
240 | #address-cells = <0>; | 249 | #address-cells = <0>; |
241 | #interrupt-cells = <2>; | 250 | #interrupt-cells = <2>; |
242 | reg = <40000 40000>; | 251 | compatible = "chrp,iic"; |
243 | built-in; | 252 | interrupts = <1>; |
244 | compatible = "chrp,open-pic"; | 253 | interrupt-parent = <&pci1>; |
245 | device_type = "open-pic"; | ||
246 | big-endian; | ||
247 | }; | 254 | }; |
248 | }; | 255 | }; |
256 | |||
257 | pci@e0009000 { | ||
258 | interrupt-map-mask = <f800 0 0 7>; | ||
259 | interrupt-map = < | ||
260 | |||
261 | /* IDSEL 0x15 */ | ||
262 | a800 0 0 1 &mpic b 1 | ||
263 | a800 0 0 2 &mpic b 1 | ||
264 | a800 0 0 3 &mpic b 1 | ||
265 | a800 0 0 4 &mpic b 1>; | ||
266 | interrupt-parent = <&mpic>; | ||
267 | interrupts = <19 2>; | ||
268 | bus-range = <0 0>; | ||
269 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
270 | 01000000 0 00000000 e3000000 0 00100000>; | ||
271 | clock-frequency = <3f940aa>; | ||
272 | #interrupt-cells = <1>; | ||
273 | #size-cells = <2>; | ||
274 | #address-cells = <3>; | ||
275 | reg = <e0009000 1000>; | ||
276 | compatible = "fsl,mpc8540-pci"; | ||
277 | device_type = "pci"; | ||
278 | }; | ||
249 | }; | 279 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts index 16dbe848cecf..6b362f8222c1 100644 --- a/arch/powerpc/boot/dts/mpc8560ads.dts +++ b/arch/powerpc/boot/dts/mpc8560ads.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <04ead9a0>; | 30 | timebase-frequency = <04ead9a0>; |
31 | bus-frequency = <13ab6680>; | 31 | bus-frequency = <13ab6680>; |
32 | clock-frequency = <312c8040>; | 32 | clock-frequency = <312c8040>; |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -42,7 +41,6 @@ | |||
42 | soc8560@e0000000 { | 41 | soc8560@e0000000 { |
43 | #address-cells = <1>; | 42 | #address-cells = <1>; |
44 | #size-cells = <1>; | 43 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | ||
46 | device_type = "soc"; | 44 | device_type = "soc"; |
47 | ranges = <0 e0000000 00100000>; | 45 | ranges = <0 e0000000 00100000>; |
48 | reg = <e0000000 00000200>; | 46 | reg = <e0000000 00000200>; |
@@ -132,115 +130,39 @@ | |||
132 | phy-handle = <&phy1>; | 130 | phy-handle = <&phy1>; |
133 | }; | 131 | }; |
134 | 132 | ||
135 | pci@8000 { | ||
136 | #interrupt-cells = <1>; | ||
137 | #size-cells = <2>; | ||
138 | #address-cells = <3>; | ||
139 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | ||
140 | device_type = "pci"; | ||
141 | reg = <8000 1000>; | ||
142 | clock-frequency = <3f940aa>; | ||
143 | interrupt-map-mask = <f800 0 0 7>; | ||
144 | interrupt-map = < | ||
145 | |||
146 | /* IDSEL 0x2 */ | ||
147 | 1000 0 0 1 &mpic 1 1 | ||
148 | 1000 0 0 2 &mpic 2 1 | ||
149 | 1000 0 0 3 &mpic 3 1 | ||
150 | 1000 0 0 4 &mpic 4 1 | ||
151 | |||
152 | /* IDSEL 0x3 */ | ||
153 | 1800 0 0 1 &mpic 4 1 | ||
154 | 1800 0 0 2 &mpic 1 1 | ||
155 | 1800 0 0 3 &mpic 2 1 | ||
156 | 1800 0 0 4 &mpic 3 1 | ||
157 | |||
158 | /* IDSEL 0x4 */ | ||
159 | 2000 0 0 1 &mpic 3 1 | ||
160 | 2000 0 0 2 &mpic 4 1 | ||
161 | 2000 0 0 3 &mpic 1 1 | ||
162 | 2000 0 0 4 &mpic 2 1 | ||
163 | |||
164 | /* IDSEL 0x5 */ | ||
165 | 2800 0 0 1 &mpic 2 1 | ||
166 | 2800 0 0 2 &mpic 3 1 | ||
167 | 2800 0 0 3 &mpic 4 1 | ||
168 | 2800 0 0 4 &mpic 1 1 | ||
169 | |||
170 | /* IDSEL 12 */ | ||
171 | 6000 0 0 1 &mpic 1 1 | ||
172 | 6000 0 0 2 &mpic 2 1 | ||
173 | 6000 0 0 3 &mpic 3 1 | ||
174 | 6000 0 0 4 &mpic 4 1 | ||
175 | |||
176 | /* IDSEL 13 */ | ||
177 | 6800 0 0 1 &mpic 4 1 | ||
178 | 6800 0 0 2 &mpic 1 1 | ||
179 | 6800 0 0 3 &mpic 2 1 | ||
180 | 6800 0 0 4 &mpic 3 1 | ||
181 | |||
182 | /* IDSEL 14*/ | ||
183 | 7000 0 0 1 &mpic 3 1 | ||
184 | 7000 0 0 2 &mpic 4 1 | ||
185 | 7000 0 0 3 &mpic 1 1 | ||
186 | 7000 0 0 4 &mpic 2 1 | ||
187 | |||
188 | /* IDSEL 15 */ | ||
189 | 7800 0 0 1 &mpic 2 1 | ||
190 | 7800 0 0 2 &mpic 3 1 | ||
191 | 7800 0 0 3 &mpic 4 1 | ||
192 | 7800 0 0 4 &mpic 1 1 | ||
193 | |||
194 | /* IDSEL 18 */ | ||
195 | 9000 0 0 1 &mpic 1 1 | ||
196 | 9000 0 0 2 &mpic 2 1 | ||
197 | 9000 0 0 3 &mpic 3 1 | ||
198 | 9000 0 0 4 &mpic 4 1 | ||
199 | |||
200 | /* IDSEL 19 */ | ||
201 | 9800 0 0 1 &mpic 4 1 | ||
202 | 9800 0 0 2 &mpic 1 1 | ||
203 | 9800 0 0 3 &mpic 2 1 | ||
204 | 9800 0 0 4 &mpic 3 1 | ||
205 | |||
206 | /* IDSEL 20 */ | ||
207 | a000 0 0 1 &mpic 3 1 | ||
208 | a000 0 0 2 &mpic 4 1 | ||
209 | a000 0 0 3 &mpic 1 1 | ||
210 | a000 0 0 4 &mpic 2 1 | ||
211 | |||
212 | /* IDSEL 21 */ | ||
213 | a800 0 0 1 &mpic 2 1 | ||
214 | a800 0 0 2 &mpic 3 1 | ||
215 | a800 0 0 3 &mpic 4 1 | ||
216 | a800 0 0 4 &mpic 1 1>; | ||
217 | |||
218 | interrupt-parent = <&mpic>; | ||
219 | interrupts = <18 2>; | ||
220 | bus-range = <0 0>; | ||
221 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
222 | 01000000 0 00000000 e2000000 0 01000000>; | ||
223 | }; | ||
224 | |||
225 | mpic: pic@40000 { | 133 | mpic: pic@40000 { |
226 | interrupt-controller; | 134 | interrupt-controller; |
227 | #address-cells = <0>; | 135 | #address-cells = <0>; |
228 | #interrupt-cells = <2>; | 136 | #interrupt-cells = <2>; |
229 | reg = <40000 40000>; | 137 | reg = <40000 40000>; |
230 | built-in; | ||
231 | device_type = "open-pic"; | 138 | device_type = "open-pic"; |
232 | }; | 139 | }; |
233 | 140 | ||
234 | cpm@e0000000 { | 141 | cpm@919c0 { |
235 | #address-cells = <1>; | 142 | #address-cells = <1>; |
236 | #size-cells = <1>; | 143 | #size-cells = <1>; |
237 | #interrupt-cells = <2>; | 144 | compatible = "fsl,mpc8560-cpm", "fsl,cpm2"; |
238 | device_type = "cpm"; | 145 | reg = <919c0 30>; |
239 | model = "CPM2"; | 146 | ranges; |
240 | ranges = <0 0 c0000>; | 147 | |
241 | reg = <80000 40000>; | 148 | muram@80000 { |
242 | command-proc = <919c0>; | 149 | #address-cells = <1>; |
243 | brg-frequency = <9d5b340>; | 150 | #size-cells = <1>; |
151 | ranges = <0 80000 10000>; | ||
152 | |||
153 | data@0 { | ||
154 | compatible = "fsl,cpm-muram-data"; | ||
155 | reg = <0 4000 9000 2000>; | ||
156 | }; | ||
157 | }; | ||
158 | |||
159 | brg@919f0 { | ||
160 | compatible = "fsl,mpc8560-brg", | ||
161 | "fsl,cpm2-brg", | ||
162 | "fsl,cpm-brg"; | ||
163 | reg = <919f0 10 915f0 10>; | ||
164 | clock-frequency = <d#165000000>; | ||
165 | }; | ||
244 | 166 | ||
245 | cpmpic: pic@90c00 { | 167 | cpmpic: pic@90c00 { |
246 | interrupt-controller; | 168 | interrupt-controller; |
@@ -249,44 +171,38 @@ | |||
249 | interrupts = <2e 2>; | 171 | interrupts = <2e 2>; |
250 | interrupt-parent = <&mpic>; | 172 | interrupt-parent = <&mpic>; |
251 | reg = <90c00 80>; | 173 | reg = <90c00 80>; |
252 | built-in; | 174 | compatible = "fsl,mpc8560-cpm-pic", "fsl,cpm2-pic"; |
253 | device_type = "cpm-pic"; | ||
254 | }; | 175 | }; |
255 | 176 | ||
256 | scc@91a00 { | 177 | serial@91a00 { |
257 | device_type = "serial"; | 178 | device_type = "serial"; |
258 | compatible = "cpm_uart"; | 179 | compatible = "fsl,mpc8560-scc-uart", |
259 | model = "SCC"; | 180 | "fsl,cpm2-scc-uart"; |
260 | device-id = <1>; | ||
261 | reg = <91a00 20 88000 100>; | 181 | reg = <91a00 20 88000 100>; |
262 | clock-setup = <00ffffff 0>; | 182 | fsl,cpm-brg = <1>; |
263 | rx-clock = <1>; | 183 | fsl,cpm-command = <00800000>; |
264 | tx-clock = <1>; | ||
265 | current-speed = <1c200>; | 184 | current-speed = <1c200>; |
266 | interrupts = <28 8>; | 185 | interrupts = <28 8>; |
267 | interrupt-parent = <&cpmpic>; | 186 | interrupt-parent = <&cpmpic>; |
268 | }; | 187 | }; |
269 | 188 | ||
270 | scc@91a20 { | 189 | serial@91a20 { |
271 | device_type = "serial"; | 190 | device_type = "serial"; |
272 | compatible = "cpm_uart"; | 191 | compatible = "fsl,mpc8560-scc-uart", |
273 | model = "SCC"; | 192 | "fsl,cpm2-scc-uart"; |
274 | device-id = <2>; | ||
275 | reg = <91a20 20 88100 100>; | 193 | reg = <91a20 20 88100 100>; |
276 | clock-setup = <ff00ffff 90000>; | 194 | fsl,cpm-brg = <2>; |
277 | rx-clock = <2>; | 195 | fsl,cpm-command = <04a00000>; |
278 | tx-clock = <2>; | ||
279 | current-speed = <1c200>; | 196 | current-speed = <1c200>; |
280 | interrupts = <29 8>; | 197 | interrupts = <29 8>; |
281 | interrupt-parent = <&cpmpic>; | 198 | interrupt-parent = <&cpmpic>; |
282 | }; | 199 | }; |
283 | 200 | ||
284 | fcc@91320 { | 201 | ethernet@91320 { |
285 | device_type = "network"; | 202 | device_type = "network"; |
286 | compatible = "fs_enet"; | 203 | compatible = "fsl,mpc8560-fcc-enet", |
287 | model = "FCC"; | 204 | "fsl,cpm2-fcc-enet"; |
288 | device-id = <2>; | 205 | reg = <91320 20 88500 100 913b0 1>; |
289 | reg = <91320 20 88500 100 913a0 30>; | ||
290 | /* | 206 | /* |
291 | * mac-address is deprecated and will be removed | 207 | * mac-address is deprecated and will be removed |
292 | * in 2.6.25. Only recent versions of | 208 | * in 2.6.25. Only recent versions of |
@@ -294,20 +210,17 @@ | |||
294 | */ | 210 | */ |
295 | mac-address = [ 00 00 00 00 00 00 ]; | 211 | mac-address = [ 00 00 00 00 00 00 ]; |
296 | local-mac-address = [ 00 00 00 00 00 00 ]; | 212 | local-mac-address = [ 00 00 00 00 00 00 ]; |
297 | clock-setup = <ff00ffff 250000>; | 213 | fsl,cpm-command = <16200300>; |
298 | rx-clock = <15>; | ||
299 | tx-clock = <16>; | ||
300 | interrupts = <21 8>; | 214 | interrupts = <21 8>; |
301 | interrupt-parent = <&cpmpic>; | 215 | interrupt-parent = <&cpmpic>; |
302 | phy-handle = <&phy2>; | 216 | phy-handle = <&phy2>; |
303 | }; | 217 | }; |
304 | 218 | ||
305 | fcc@91340 { | 219 | ethernet@91340 { |
306 | device_type = "network"; | 220 | device_type = "network"; |
307 | compatible = "fs_enet"; | 221 | compatible = "fsl,mpc8560-fcc-enet", |
308 | model = "FCC"; | 222 | "fsl,cpm2-fcc-enet"; |
309 | device-id = <3>; | 223 | reg = <91340 20 88600 100 913d0 1>; |
310 | reg = <91340 20 88600 100 913d0 30>; | ||
311 | /* | 224 | /* |
312 | * mac-address is deprecated and will be removed | 225 | * mac-address is deprecated and will be removed |
313 | * in 2.6.25. Only recent versions of | 226 | * in 2.6.25. Only recent versions of |
@@ -315,13 +228,101 @@ | |||
315 | */ | 228 | */ |
316 | mac-address = [ 00 00 00 00 00 00 ]; | 229 | mac-address = [ 00 00 00 00 00 00 ]; |
317 | local-mac-address = [ 00 00 00 00 00 00 ]; | 230 | local-mac-address = [ 00 00 00 00 00 00 ]; |
318 | clock-setup = <ffff00ff 3700>; | 231 | fsl,cpm-command = <1a400300>; |
319 | rx-clock = <17>; | ||
320 | tx-clock = <18>; | ||
321 | interrupts = <22 8>; | 232 | interrupts = <22 8>; |
322 | interrupt-parent = <&cpmpic>; | 233 | interrupt-parent = <&cpmpic>; |
323 | phy-handle = <&phy3>; | 234 | phy-handle = <&phy3>; |
324 | }; | 235 | }; |
325 | }; | 236 | }; |
326 | }; | 237 | }; |
238 | |||
239 | pci@e0008000 { | ||
240 | #interrupt-cells = <1>; | ||
241 | #size-cells = <2>; | ||
242 | #address-cells = <3>; | ||
243 | compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; | ||
244 | device_type = "pci"; | ||
245 | reg = <e0008000 1000>; | ||
246 | clock-frequency = <3f940aa>; | ||
247 | interrupt-map-mask = <f800 0 0 7>; | ||
248 | interrupt-map = < | ||
249 | |||
250 | /* IDSEL 0x2 */ | ||
251 | 1000 0 0 1 &mpic 1 1 | ||
252 | 1000 0 0 2 &mpic 2 1 | ||
253 | 1000 0 0 3 &mpic 3 1 | ||
254 | 1000 0 0 4 &mpic 4 1 | ||
255 | |||
256 | /* IDSEL 0x3 */ | ||
257 | 1800 0 0 1 &mpic 4 1 | ||
258 | 1800 0 0 2 &mpic 1 1 | ||
259 | 1800 0 0 3 &mpic 2 1 | ||
260 | 1800 0 0 4 &mpic 3 1 | ||
261 | |||
262 | /* IDSEL 0x4 */ | ||
263 | 2000 0 0 1 &mpic 3 1 | ||
264 | 2000 0 0 2 &mpic 4 1 | ||
265 | 2000 0 0 3 &mpic 1 1 | ||
266 | 2000 0 0 4 &mpic 2 1 | ||
267 | |||
268 | /* IDSEL 0x5 */ | ||
269 | 2800 0 0 1 &mpic 2 1 | ||
270 | 2800 0 0 2 &mpic 3 1 | ||
271 | 2800 0 0 3 &mpic 4 1 | ||
272 | 2800 0 0 4 &mpic 1 1 | ||
273 | |||
274 | /* IDSEL 12 */ | ||
275 | 6000 0 0 1 &mpic 1 1 | ||
276 | 6000 0 0 2 &mpic 2 1 | ||
277 | 6000 0 0 3 &mpic 3 1 | ||
278 | 6000 0 0 4 &mpic 4 1 | ||
279 | |||
280 | /* IDSEL 13 */ | ||
281 | 6800 0 0 1 &mpic 4 1 | ||
282 | 6800 0 0 2 &mpic 1 1 | ||
283 | 6800 0 0 3 &mpic 2 1 | ||
284 | 6800 0 0 4 &mpic 3 1 | ||
285 | |||
286 | /* IDSEL 14*/ | ||
287 | 7000 0 0 1 &mpic 3 1 | ||
288 | 7000 0 0 2 &mpic 4 1 | ||
289 | 7000 0 0 3 &mpic 1 1 | ||
290 | 7000 0 0 4 &mpic 2 1 | ||
291 | |||
292 | /* IDSEL 15 */ | ||
293 | 7800 0 0 1 &mpic 2 1 | ||
294 | 7800 0 0 2 &mpic 3 1 | ||
295 | 7800 0 0 3 &mpic 4 1 | ||
296 | 7800 0 0 4 &mpic 1 1 | ||
297 | |||
298 | /* IDSEL 18 */ | ||
299 | 9000 0 0 1 &mpic 1 1 | ||
300 | 9000 0 0 2 &mpic 2 1 | ||
301 | 9000 0 0 3 &mpic 3 1 | ||
302 | 9000 0 0 4 &mpic 4 1 | ||
303 | |||
304 | /* IDSEL 19 */ | ||
305 | 9800 0 0 1 &mpic 4 1 | ||
306 | 9800 0 0 2 &mpic 1 1 | ||
307 | 9800 0 0 3 &mpic 2 1 | ||
308 | 9800 0 0 4 &mpic 3 1 | ||
309 | |||
310 | /* IDSEL 20 */ | ||
311 | a000 0 0 1 &mpic 3 1 | ||
312 | a000 0 0 2 &mpic 4 1 | ||
313 | a000 0 0 3 &mpic 1 1 | ||
314 | a000 0 0 4 &mpic 2 1 | ||
315 | |||
316 | /* IDSEL 21 */ | ||
317 | a800 0 0 1 &mpic 2 1 | ||
318 | a800 0 0 2 &mpic 3 1 | ||
319 | a800 0 0 3 &mpic 4 1 | ||
320 | a800 0 0 4 &mpic 1 1>; | ||
321 | |||
322 | interrupt-parent = <&mpic>; | ||
323 | interrupts = <18 2>; | ||
324 | bus-range = <0 0>; | ||
325 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
326 | 01000000 0 00000000 e2000000 0 01000000>; | ||
327 | }; | ||
327 | }; | 328 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts index b1dcfbe8c1f8..54394372b12a 100644 --- a/arch/powerpc/boot/dts/mpc8568mds.dts +++ b/arch/powerpc/boot/dts/mpc8568mds.dts | |||
@@ -34,7 +34,6 @@ | |||
34 | timebase-frequency = <0>; | 34 | timebase-frequency = <0>; |
35 | bus-frequency = <0>; | 35 | bus-frequency = <0>; |
36 | clock-frequency = <0>; | 36 | clock-frequency = <0>; |
37 | 32-bit; | ||
38 | }; | 37 | }; |
39 | }; | 38 | }; |
40 | 39 | ||
@@ -51,10 +50,9 @@ | |||
51 | soc8568@e0000000 { | 50 | soc8568@e0000000 { |
52 | #address-cells = <1>; | 51 | #address-cells = <1>; |
53 | #size-cells = <1>; | 52 | #size-cells = <1>; |
54 | #interrupt-cells = <2>; | ||
55 | device_type = "soc"; | 53 | device_type = "soc"; |
56 | ranges = <0 e0000000 00100000>; | 54 | ranges = <0 e0000000 00100000>; |
57 | reg = <e0000000 00100000>; | 55 | reg = <e0000000 00001000>; |
58 | bus-frequency = <0>; | 56 | bus-frequency = <0>; |
59 | 57 | ||
60 | memory-controller@2000 { | 58 | memory-controller@2000 { |
@@ -74,15 +72,24 @@ | |||
74 | }; | 72 | }; |
75 | 73 | ||
76 | i2c@3000 { | 74 | i2c@3000 { |
75 | #address-cells = <1>; | ||
76 | #size-cells = <0>; | ||
77 | device_type = "i2c"; | 77 | device_type = "i2c"; |
78 | compatible = "fsl-i2c"; | 78 | compatible = "fsl-i2c"; |
79 | reg = <3000 100>; | 79 | reg = <3000 100>; |
80 | interrupts = <2b 2>; | 80 | interrupts = <2b 2>; |
81 | interrupt-parent = <&mpic>; | 81 | interrupt-parent = <&mpic>; |
82 | dfsrr; | 82 | dfsrr; |
83 | |||
84 | rtc@68 { | ||
85 | compatible = "dallas,ds1374"; | ||
86 | reg = <68>; | ||
87 | }; | ||
83 | }; | 88 | }; |
84 | 89 | ||
85 | i2c@3100 { | 90 | i2c@3100 { |
91 | #address-cells = <1>; | ||
92 | #size-cells = <0>; | ||
86 | device_type = "i2c"; | 93 | device_type = "i2c"; |
87 | compatible = "fsl-i2c"; | 94 | compatible = "fsl-i2c"; |
88 | reg = <3100 100>; | 95 | reg = <3100 100>; |
@@ -97,10 +104,10 @@ | |||
97 | device_type = "mdio"; | 104 | device_type = "mdio"; |
98 | compatible = "gianfar"; | 105 | compatible = "gianfar"; |
99 | reg = <24520 20>; | 106 | reg = <24520 20>; |
100 | phy0: ethernet-phy@0 { | 107 | phy0: ethernet-phy@7 { |
101 | interrupt-parent = <&mpic>; | 108 | interrupt-parent = <&mpic>; |
102 | interrupts = <1 1>; | 109 | interrupts = <1 1>; |
103 | reg = <0>; | 110 | reg = <7>; |
104 | device_type = "ethernet-phy"; | 111 | device_type = "ethernet-phy"; |
105 | }; | 112 | }; |
106 | phy1: ethernet-phy@1 { | 113 | phy1: ethernet-phy@1 { |
@@ -176,60 +183,6 @@ | |||
176 | fsl,has-rstcr; | 183 | fsl,has-rstcr; |
177 | }; | 184 | }; |
178 | 185 | ||
179 | pci@8000 { | ||
180 | interrupt-map-mask = <f800 0 0 7>; | ||
181 | interrupt-map = < | ||
182 | /* IDSEL 0x12 AD18 */ | ||
183 | 9000 0 0 1 &mpic 5 1 | ||
184 | 9000 0 0 2 &mpic 6 1 | ||
185 | 9000 0 0 3 &mpic 7 1 | ||
186 | 9000 0 0 4 &mpic 4 1 | ||
187 | |||
188 | /* IDSEL 0x13 AD19 */ | ||
189 | 9800 0 0 1 &mpic 6 1 | ||
190 | 9800 0 0 2 &mpic 7 1 | ||
191 | 9800 0 0 3 &mpic 4 1 | ||
192 | 9800 0 0 4 &mpic 5 1>; | ||
193 | |||
194 | interrupt-parent = <&mpic>; | ||
195 | interrupts = <18 2>; | ||
196 | bus-range = <0 ff>; | ||
197 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
198 | 01000000 0 00000000 e2000000 0 00800000>; | ||
199 | clock-frequency = <3f940aa>; | ||
200 | #interrupt-cells = <1>; | ||
201 | #size-cells = <2>; | ||
202 | #address-cells = <3>; | ||
203 | reg = <8000 1000>; | ||
204 | compatible = "fsl,mpc8540-pci"; | ||
205 | device_type = "pci"; | ||
206 | }; | ||
207 | |||
208 | /* PCI Express */ | ||
209 | pcie@a000 { | ||
210 | interrupt-map-mask = <f800 0 0 7>; | ||
211 | interrupt-map = < | ||
212 | |||
213 | /* IDSEL 0x0 (PEX) */ | ||
214 | 00000 0 0 1 &mpic 0 1 | ||
215 | 00000 0 0 2 &mpic 1 1 | ||
216 | 00000 0 0 3 &mpic 2 1 | ||
217 | 00000 0 0 4 &mpic 3 1>; | ||
218 | |||
219 | interrupt-parent = <&mpic>; | ||
220 | interrupts = <1a 2>; | ||
221 | bus-range = <0 ff>; | ||
222 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
223 | 01000000 0 00000000 e3000000 0 08000000>; | ||
224 | clock-frequency = <1fca055>; | ||
225 | #interrupt-cells = <1>; | ||
226 | #size-cells = <2>; | ||
227 | #address-cells = <3>; | ||
228 | reg = <a000 1000>; | ||
229 | compatible = "fsl,mpc8548-pcie"; | ||
230 | device_type = "pci"; | ||
231 | }; | ||
232 | |||
233 | serial@4600 { | 186 | serial@4600 { |
234 | device_type = "serial"; | 187 | device_type = "serial"; |
235 | compatible = "ns16550"; | 188 | compatible = "ns16550"; |
@@ -258,11 +211,11 @@ | |||
258 | #address-cells = <0>; | 211 | #address-cells = <0>; |
259 | #interrupt-cells = <2>; | 212 | #interrupt-cells = <2>; |
260 | reg = <40000 40000>; | 213 | reg = <40000 40000>; |
261 | built-in; | ||
262 | compatible = "chrp,open-pic"; | 214 | compatible = "chrp,open-pic"; |
263 | device_type = "open-pic"; | 215 | device_type = "open-pic"; |
264 | big-endian; | 216 | big-endian; |
265 | }; | 217 | }; |
218 | |||
266 | par_io@e0100 { | 219 | par_io@e0100 { |
267 | reg = <e0100 100>; | 220 | reg = <e0100 100>; |
268 | device_type = "par_io"; | 221 | device_type = "par_io"; |
@@ -289,12 +242,13 @@ | |||
289 | 4 1a 2 0 2 0 /* RxD7 */ | 242 | 4 1a 2 0 2 0 /* RxD7 */ |
290 | 4 0b 1 0 2 0 /* TX_EN */ | 243 | 4 0b 1 0 2 0 /* TX_EN */ |
291 | 4 18 1 0 2 0 /* TX_ER */ | 244 | 4 18 1 0 2 0 /* TX_ER */ |
292 | 4 0f 2 0 2 0 /* RX_DV */ | 245 | 4 10 2 0 2 0 /* RX_DV */ |
293 | 4 1e 2 0 2 0 /* RX_ER */ | 246 | 4 1e 2 0 2 0 /* RX_ER */ |
294 | 4 11 2 0 2 0 /* RX_CLK */ | 247 | 4 11 2 0 2 0 /* RX_CLK */ |
295 | 4 13 1 0 2 0 /* GTX_CLK */ | 248 | 4 13 1 0 2 0 /* GTX_CLK */ |
296 | 1 1f 2 0 3 0>; /* GTX125 */ | 249 | 1 1f 2 0 3 0>; /* GTX125 */ |
297 | }; | 250 | }; |
251 | |||
298 | pio2: ucc_pin@02 { | 252 | pio2: ucc_pin@02 { |
299 | pio-map = < | 253 | pio-map = < |
300 | /* port pin dir open_drain assignment has_irq */ | 254 | /* port pin dir open_drain assignment has_irq */ |
@@ -380,10 +334,10 @@ | |||
380 | mac-address = [ 00 00 00 00 00 00 ]; | 334 | mac-address = [ 00 00 00 00 00 00 ]; |
381 | local-mac-address = [ 00 00 00 00 00 00 ]; | 335 | local-mac-address = [ 00 00 00 00 00 00 ]; |
382 | rx-clock = <0>; | 336 | rx-clock = <0>; |
383 | tx-clock = <19>; | 337 | tx-clock = <20>; |
384 | phy-handle = <&qe_phy0>; | ||
385 | phy-connection-type = "gmii"; | ||
386 | pio-handle = <&pio1>; | 338 | pio-handle = <&pio1>; |
339 | phy-handle = <&phy0>; | ||
340 | phy-connection-type = "rgmii-id"; | ||
387 | }; | 341 | }; |
388 | 342 | ||
389 | ucc@3000 { | 343 | ucc@3000 { |
@@ -402,10 +356,10 @@ | |||
402 | mac-address = [ 00 00 00 00 00 00 ]; | 356 | mac-address = [ 00 00 00 00 00 00 ]; |
403 | local-mac-address = [ 00 00 00 00 00 00 ]; | 357 | local-mac-address = [ 00 00 00 00 00 00 ]; |
404 | rx-clock = <0>; | 358 | rx-clock = <0>; |
405 | tx-clock = <14>; | 359 | tx-clock = <20>; |
406 | phy-handle = <&qe_phy1>; | ||
407 | phy-connection-type = "gmii"; | ||
408 | pio-handle = <&pio2>; | 360 | pio-handle = <&pio2>; |
361 | phy-handle = <&phy1>; | ||
362 | phy-connection-type = "rgmii-id"; | ||
409 | }; | 363 | }; |
410 | 364 | ||
411 | mdio@2120 { | 365 | mdio@2120 { |
@@ -417,10 +371,10 @@ | |||
417 | 371 | ||
418 | /* These are the same PHYs as on | 372 | /* These are the same PHYs as on |
419 | * gianfar's MDIO bus */ | 373 | * gianfar's MDIO bus */ |
420 | qe_phy0: ethernet-phy@00 { | 374 | qe_phy0: ethernet-phy@07 { |
421 | interrupt-parent = <&mpic>; | 375 | interrupt-parent = <&mpic>; |
422 | interrupts = <1 1>; | 376 | interrupts = <1 1>; |
423 | reg = <0>; | 377 | reg = <7>; |
424 | device_type = "ethernet-phy"; | 378 | device_type = "ethernet-phy"; |
425 | }; | 379 | }; |
426 | qe_phy1: ethernet-phy@01 { | 380 | qe_phy1: ethernet-phy@01 { |
@@ -449,11 +403,77 @@ | |||
449 | #address-cells = <0>; | 403 | #address-cells = <0>; |
450 | #interrupt-cells = <1>; | 404 | #interrupt-cells = <1>; |
451 | reg = <80 80>; | 405 | reg = <80 80>; |
452 | built-in; | ||
453 | big-endian; | 406 | big-endian; |
454 | interrupts = <2e 2 2e 2>; //high:30 low:30 | 407 | interrupts = <2e 2 2e 2>; //high:30 low:30 |
455 | interrupt-parent = <&mpic>; | 408 | interrupt-parent = <&mpic>; |
456 | }; | 409 | }; |
457 | 410 | ||
458 | }; | 411 | }; |
412 | |||
413 | pci@e0008000 { | ||
414 | interrupt-map-mask = <f800 0 0 7>; | ||
415 | interrupt-map = < | ||
416 | /* IDSEL 0x12 AD18 */ | ||
417 | 9000 0 0 1 &mpic 5 1 | ||
418 | 9000 0 0 2 &mpic 6 1 | ||
419 | 9000 0 0 3 &mpic 7 1 | ||
420 | 9000 0 0 4 &mpic 4 1 | ||
421 | |||
422 | /* IDSEL 0x13 AD19 */ | ||
423 | 9800 0 0 1 &mpic 6 1 | ||
424 | 9800 0 0 2 &mpic 7 1 | ||
425 | 9800 0 0 3 &mpic 4 1 | ||
426 | 9800 0 0 4 &mpic 5 1>; | ||
427 | |||
428 | interrupt-parent = <&mpic>; | ||
429 | interrupts = <18 2>; | ||
430 | bus-range = <0 ff>; | ||
431 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
432 | 01000000 0 00000000 e2000000 0 00800000>; | ||
433 | clock-frequency = <3f940aa>; | ||
434 | #interrupt-cells = <1>; | ||
435 | #size-cells = <2>; | ||
436 | #address-cells = <3>; | ||
437 | reg = <e0008000 1000>; | ||
438 | compatible = "fsl,mpc8540-pci"; | ||
439 | device_type = "pci"; | ||
440 | }; | ||
441 | |||
442 | /* PCI Express */ | ||
443 | pcie@e000a000 { | ||
444 | interrupt-map-mask = <f800 0 0 7>; | ||
445 | interrupt-map = < | ||
446 | |||
447 | /* IDSEL 0x0 (PEX) */ | ||
448 | 00000 0 0 1 &mpic 0 1 | ||
449 | 00000 0 0 2 &mpic 1 1 | ||
450 | 00000 0 0 3 &mpic 2 1 | ||
451 | 00000 0 0 4 &mpic 3 1>; | ||
452 | |||
453 | interrupt-parent = <&mpic>; | ||
454 | interrupts = <1a 2>; | ||
455 | bus-range = <0 ff>; | ||
456 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | ||
457 | 01000000 0 00000000 e2800000 0 00800000>; | ||
458 | clock-frequency = <1fca055>; | ||
459 | #interrupt-cells = <1>; | ||
460 | #size-cells = <2>; | ||
461 | #address-cells = <3>; | ||
462 | reg = <e000a000 1000>; | ||
463 | compatible = "fsl,mpc8548-pcie"; | ||
464 | device_type = "pci"; | ||
465 | pcie@0 { | ||
466 | reg = <0 0 0 0 0>; | ||
467 | #size-cells = <2>; | ||
468 | #address-cells = <3>; | ||
469 | device_type = "pci"; | ||
470 | ranges = <02000000 0 a0000000 | ||
471 | 02000000 0 a0000000 | ||
472 | 0 10000000 | ||
473 | |||
474 | 01000000 0 00000000 | ||
475 | 01000000 0 00000000 | ||
476 | 0 00800000>; | ||
477 | }; | ||
478 | }; | ||
459 | }; | 479 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts new file mode 100644 index 000000000000..d638deec7652 --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8572ds.dts | |||
@@ -0,0 +1,404 @@ | |||
1 | /* | ||
2 | * MPC8572 DS Device Tree Source | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | / { | ||
13 | model = "fsl,MPC8572DS"; | ||
14 | compatible = "fsl,MPC8572DS"; | ||
15 | #address-cells = <1>; | ||
16 | #size-cells = <1>; | ||
17 | |||
18 | cpus { | ||
19 | #address-cells = <1>; | ||
20 | #size-cells = <0>; | ||
21 | |||
22 | PowerPC,8572@0 { | ||
23 | device_type = "cpu"; | ||
24 | reg = <0>; | ||
25 | d-cache-line-size = <20>; // 32 bytes | ||
26 | i-cache-line-size = <20>; // 32 bytes | ||
27 | d-cache-size = <8000>; // L1, 32K | ||
28 | i-cache-size = <8000>; // L1, 32K | ||
29 | timebase-frequency = <0>; | ||
30 | bus-frequency = <0>; | ||
31 | clock-frequency = <0>; | ||
32 | }; | ||
33 | }; | ||
34 | |||
35 | memory { | ||
36 | device_type = "memory"; | ||
37 | reg = <00000000 00000000>; // Filled by U-Boot | ||
38 | }; | ||
39 | |||
40 | soc8572@ffe00000 { | ||
41 | #address-cells = <1>; | ||
42 | #size-cells = <1>; | ||
43 | device_type = "soc"; | ||
44 | ranges = <00000000 ffe00000 00100000>; | ||
45 | reg = <ffe00000 00001000>; // CCSRBAR & soc regs, remove once parse code for immrbase fixed | ||
46 | bus-frequency = <0>; // Filled out by uboot. | ||
47 | |||
48 | memory-controller@2000 { | ||
49 | compatible = "fsl,mpc8572-memory-controller"; | ||
50 | reg = <2000 1000>; | ||
51 | interrupt-parent = <&mpic>; | ||
52 | interrupts = <12 2>; | ||
53 | }; | ||
54 | |||
55 | memory-controller@6000 { | ||
56 | compatible = "fsl,mpc8572-memory-controller"; | ||
57 | reg = <6000 1000>; | ||
58 | interrupt-parent = <&mpic>; | ||
59 | interrupts = <12 2>; | ||
60 | }; | ||
61 | |||
62 | l2-cache-controller@20000 { | ||
63 | compatible = "fsl,mpc8572-l2-cache-controller"; | ||
64 | reg = <20000 1000>; | ||
65 | cache-line-size = <20>; // 32 bytes | ||
66 | cache-size = <80000>; // L2, 512K | ||
67 | interrupt-parent = <&mpic>; | ||
68 | interrupts = <10 2>; | ||
69 | }; | ||
70 | |||
71 | i2c@3000 { | ||
72 | device_type = "i2c"; | ||
73 | compatible = "fsl-i2c"; | ||
74 | reg = <3000 100>; | ||
75 | interrupts = <2b 2>; | ||
76 | interrupt-parent = <&mpic>; | ||
77 | dfsrr; | ||
78 | }; | ||
79 | |||
80 | i2c@3100 { | ||
81 | device_type = "i2c"; | ||
82 | compatible = "fsl-i2c"; | ||
83 | reg = <3100 100>; | ||
84 | interrupts = <2b 2>; | ||
85 | interrupt-parent = <&mpic>; | ||
86 | dfsrr; | ||
87 | }; | ||
88 | |||
89 | mdio@24520 { | ||
90 | #address-cells = <1>; | ||
91 | #size-cells = <0>; | ||
92 | device_type = "mdio"; | ||
93 | compatible = "gianfar"; | ||
94 | reg = <24520 20>; | ||
95 | phy0: ethernet-phy@0 { | ||
96 | interrupt-parent = <&mpic>; | ||
97 | interrupts = <a 1>; | ||
98 | reg = <0>; | ||
99 | }; | ||
100 | phy1: ethernet-phy@1 { | ||
101 | interrupt-parent = <&mpic>; | ||
102 | interrupts = <a 1>; | ||
103 | reg = <1>; | ||
104 | }; | ||
105 | phy2: ethernet-phy@2 { | ||
106 | interrupt-parent = <&mpic>; | ||
107 | interrupts = <a 1>; | ||
108 | reg = <2>; | ||
109 | }; | ||
110 | phy3: ethernet-phy@3 { | ||
111 | interrupt-parent = <&mpic>; | ||
112 | interrupts = <a 1>; | ||
113 | reg = <3>; | ||
114 | }; | ||
115 | }; | ||
116 | |||
117 | ethernet@24000 { | ||
118 | #address-cells = <1>; | ||
119 | #size-cells = <0>; | ||
120 | device_type = "network"; | ||
121 | model = "eTSEC"; | ||
122 | compatible = "gianfar"; | ||
123 | reg = <24000 1000>; | ||
124 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
125 | interrupts = <1d 2 1e 2 22 2>; | ||
126 | interrupt-parent = <&mpic>; | ||
127 | phy-handle = <&phy0>; | ||
128 | phy-connection-type = "rgmii-id"; | ||
129 | }; | ||
130 | |||
131 | ethernet@25000 { | ||
132 | #address-cells = <1>; | ||
133 | #size-cells = <0>; | ||
134 | device_type = "network"; | ||
135 | model = "eTSEC"; | ||
136 | compatible = "gianfar"; | ||
137 | reg = <25000 1000>; | ||
138 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
139 | interrupts = <23 2 24 2 28 2>; | ||
140 | interrupt-parent = <&mpic>; | ||
141 | phy-handle = <&phy1>; | ||
142 | phy-connection-type = "rgmii-id"; | ||
143 | }; | ||
144 | |||
145 | ethernet@26000 { | ||
146 | #address-cells = <1>; | ||
147 | #size-cells = <0>; | ||
148 | device_type = "network"; | ||
149 | model = "eTSEC"; | ||
150 | compatible = "gianfar"; | ||
151 | reg = <26000 1000>; | ||
152 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
153 | interrupts = <1f 2 20 2 21 2>; | ||
154 | interrupt-parent = <&mpic>; | ||
155 | phy-handle = <&phy2>; | ||
156 | phy-connection-type = "rgmii-id"; | ||
157 | }; | ||
158 | |||
159 | ethernet@27000 { | ||
160 | #address-cells = <1>; | ||
161 | #size-cells = <0>; | ||
162 | device_type = "network"; | ||
163 | model = "eTSEC"; | ||
164 | compatible = "gianfar"; | ||
165 | reg = <27000 1000>; | ||
166 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
167 | interrupts = <25 2 26 2 27 2>; | ||
168 | interrupt-parent = <&mpic>; | ||
169 | phy-handle = <&phy3>; | ||
170 | phy-connection-type = "rgmii-id"; | ||
171 | }; | ||
172 | |||
173 | serial@4500 { | ||
174 | device_type = "serial"; | ||
175 | compatible = "ns16550"; | ||
176 | reg = <4500 100>; | ||
177 | clock-frequency = <0>; | ||
178 | interrupts = <2a 2>; | ||
179 | interrupt-parent = <&mpic>; | ||
180 | }; | ||
181 | |||
182 | serial@4600 { | ||
183 | device_type = "serial"; | ||
184 | compatible = "ns16550"; | ||
185 | reg = <4600 100>; | ||
186 | clock-frequency = <0>; | ||
187 | interrupts = <2a 2>; | ||
188 | interrupt-parent = <&mpic>; | ||
189 | }; | ||
190 | |||
191 | global-utilities@e0000 { //global utilities block | ||
192 | compatible = "fsl,mpc8572-guts"; | ||
193 | reg = <e0000 1000>; | ||
194 | fsl,has-rstcr; | ||
195 | }; | ||
196 | |||
197 | mpic: pic@40000 { | ||
198 | clock-frequency = <0>; | ||
199 | interrupt-controller; | ||
200 | #address-cells = <0>; | ||
201 | #interrupt-cells = <2>; | ||
202 | reg = <40000 40000>; | ||
203 | compatible = "chrp,open-pic"; | ||
204 | device_type = "open-pic"; | ||
205 | big-endian; | ||
206 | }; | ||
207 | }; | ||
208 | |||
209 | pcie@ffe08000 { | ||
210 | compatible = "fsl,mpc8548-pcie"; | ||
211 | device_type = "pci"; | ||
212 | #interrupt-cells = <1>; | ||
213 | #size-cells = <2>; | ||
214 | #address-cells = <3>; | ||
215 | reg = <ffe08000 1000>; | ||
216 | bus-range = <0 ff>; | ||
217 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
218 | 01000000 0 00000000 ffc00000 0 00010000>; | ||
219 | clock-frequency = <1fca055>; | ||
220 | interrupt-parent = <&mpic>; | ||
221 | interrupts = <18 2>; | ||
222 | interrupt-map-mask = <fb00 0 0 0>; | ||
223 | interrupt-map = < | ||
224 | /* IDSEL 0x11 - PCI slot 1 */ | ||
225 | 8800 0 0 1 &mpic 2 1 | ||
226 | 8800 0 0 2 &mpic 3 1 | ||
227 | 8800 0 0 3 &mpic 4 1 | ||
228 | 8800 0 0 4 &mpic 1 1 | ||
229 | |||
230 | /* IDSEL 0x12 - PCI slot 2 */ | ||
231 | 9000 0 0 1 &mpic 3 1 | ||
232 | 9000 0 0 2 &mpic 4 1 | ||
233 | 9000 0 0 3 &mpic 1 1 | ||
234 | 9000 0 0 4 &mpic 2 1 | ||
235 | |||
236 | // IDSEL 0x1c USB | ||
237 | e000 0 0 0 &i8259 c 2 | ||
238 | e100 0 0 0 &i8259 9 2 | ||
239 | e200 0 0 0 &i8259 a 2 | ||
240 | e300 0 0 0 &i8259 b 2 | ||
241 | |||
242 | // IDSEL 0x1d Audio | ||
243 | e800 0 0 0 &i8259 6 2 | ||
244 | |||
245 | // IDSEL 0x1e Legacy | ||
246 | f000 0 0 0 &i8259 7 2 | ||
247 | f100 0 0 0 &i8259 7 2 | ||
248 | |||
249 | // IDSEL 0x1f IDE/SATA | ||
250 | f800 0 0 0 &i8259 e 2 | ||
251 | f900 0 0 0 &i8259 5 2 | ||
252 | |||
253 | >; | ||
254 | |||
255 | pcie@0 { | ||
256 | reg = <0 0 0 0 0>; | ||
257 | #size-cells = <2>; | ||
258 | #address-cells = <3>; | ||
259 | device_type = "pci"; | ||
260 | ranges = <02000000 0 80000000 | ||
261 | 02000000 0 80000000 | ||
262 | 0 20000000 | ||
263 | |||
264 | 01000000 0 00000000 | ||
265 | 01000000 0 00000000 | ||
266 | 0 00100000>; | ||
267 | uli1575@0 { | ||
268 | reg = <0 0 0 0 0>; | ||
269 | #size-cells = <2>; | ||
270 | #address-cells = <3>; | ||
271 | ranges = <02000000 0 80000000 | ||
272 | 02000000 0 80000000 | ||
273 | 0 20000000 | ||
274 | |||
275 | 01000000 0 00000000 | ||
276 | 01000000 0 00000000 | ||
277 | 0 00100000>; | ||
278 | isa@1e { | ||
279 | device_type = "isa"; | ||
280 | #interrupt-cells = <2>; | ||
281 | #size-cells = <1>; | ||
282 | #address-cells = <2>; | ||
283 | reg = <f000 0 0 0 0>; | ||
284 | ranges = <1 0 01000000 0 0 | ||
285 | 00001000>; | ||
286 | interrupt-parent = <&i8259>; | ||
287 | |||
288 | i8259: interrupt-controller@20 { | ||
289 | reg = <1 20 2 | ||
290 | 1 a0 2 | ||
291 | 1 4d0 2>; | ||
292 | interrupt-controller; | ||
293 | device_type = "interrupt-controller"; | ||
294 | #address-cells = <0>; | ||
295 | #interrupt-cells = <2>; | ||
296 | compatible = "chrp,iic"; | ||
297 | interrupts = <9 2>; | ||
298 | interrupt-parent = <&mpic>; | ||
299 | }; | ||
300 | |||
301 | i8042@60 { | ||
302 | #size-cells = <0>; | ||
303 | #address-cells = <1>; | ||
304 | reg = <1 60 1 1 64 1>; | ||
305 | interrupts = <1 3 c 3>; | ||
306 | interrupt-parent = | ||
307 | <&i8259>; | ||
308 | |||
309 | keyboard@0 { | ||
310 | reg = <0>; | ||
311 | compatible = "pnpPNP,303"; | ||
312 | }; | ||
313 | |||
314 | mouse@1 { | ||
315 | reg = <1>; | ||
316 | compatible = "pnpPNP,f03"; | ||
317 | }; | ||
318 | }; | ||
319 | |||
320 | rtc@70 { | ||
321 | compatible = "pnpPNP,b00"; | ||
322 | reg = <1 70 2>; | ||
323 | }; | ||
324 | |||
325 | gpio@400 { | ||
326 | reg = <1 400 80>; | ||
327 | }; | ||
328 | }; | ||
329 | }; | ||
330 | }; | ||
331 | |||
332 | }; | ||
333 | |||
334 | pcie@ffe09000 { | ||
335 | compatible = "fsl,mpc8548-pcie"; | ||
336 | device_type = "pci"; | ||
337 | #interrupt-cells = <1>; | ||
338 | #size-cells = <2>; | ||
339 | #address-cells = <3>; | ||
340 | reg = <ffe09000 1000>; | ||
341 | bus-range = <0 ff>; | ||
342 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
343 | 01000000 0 00000000 ffc10000 0 00010000>; | ||
344 | clock-frequency = <1fca055>; | ||
345 | interrupt-parent = <&mpic>; | ||
346 | interrupts = <1a 2>; | ||
347 | interrupt-map-mask = <f800 0 0 7>; | ||
348 | interrupt-map = < | ||
349 | /* IDSEL 0x0 */ | ||
350 | 0000 0 0 1 &mpic 4 1 | ||
351 | 0000 0 0 2 &mpic 5 1 | ||
352 | 0000 0 0 3 &mpic 6 1 | ||
353 | 0000 0 0 4 &mpic 7 1 | ||
354 | >; | ||
355 | pcie@0 { | ||
356 | reg = <0 0 0 0 0>; | ||
357 | #size-cells = <2>; | ||
358 | #address-cells = <3>; | ||
359 | device_type = "pci"; | ||
360 | ranges = <02000000 0 a0000000 | ||
361 | 02000000 0 a0000000 | ||
362 | 0 20000000 | ||
363 | |||
364 | 01000000 0 00000000 | ||
365 | 01000000 0 00000000 | ||
366 | 0 00100000>; | ||
367 | }; | ||
368 | }; | ||
369 | |||
370 | pcie@ffe0a000 { | ||
371 | compatible = "fsl,mpc8548-pcie"; | ||
372 | device_type = "pci"; | ||
373 | #interrupt-cells = <1>; | ||
374 | #size-cells = <2>; | ||
375 | #address-cells = <3>; | ||
376 | reg = <ffe0a000 1000>; | ||
377 | bus-range = <0 ff>; | ||
378 | ranges = <02000000 0 c0000000 c0000000 0 20000000 | ||
379 | 01000000 0 00000000 ffc20000 0 00010000>; | ||
380 | clock-frequency = <1fca055>; | ||
381 | interrupt-parent = <&mpic>; | ||
382 | interrupts = <1b 2>; | ||
383 | interrupt-map = < | ||
384 | /* IDSEL 0x0 */ | ||
385 | 0000 0 0 1 &mpic 0 1 | ||
386 | 0000 0 0 2 &mpic 1 1 | ||
387 | 0000 0 0 3 &mpic 2 1 | ||
388 | 0000 0 0 4 &mpic 3 1 | ||
389 | >; | ||
390 | pcie@0 { | ||
391 | reg = <0 0 0 0 0>; | ||
392 | #size-cells = <2>; | ||
393 | #address-cells = <3>; | ||
394 | device_type = "pci"; | ||
395 | ranges = <02000000 0 c0000000 | ||
396 | 02000000 0 c0000000 | ||
397 | 0 20000000 | ||
398 | |||
399 | 01000000 0 00000000 | ||
400 | 01000000 0 00000000 | ||
401 | 0 00100000>; | ||
402 | }; | ||
403 | }; | ||
404 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts new file mode 100644 index 000000000000..966edf1161a6 --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts | |||
@@ -0,0 +1,191 @@ | |||
1 | /* | ||
2 | * MPC8610 HPCD Device Tree Source | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License Version 2 as published | ||
8 | * by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | |||
12 | / { | ||
13 | model = "MPC8610HPCD"; | ||
14 | compatible = "fsl,MPC8610HPCD"; | ||
15 | #address-cells = <1>; | ||
16 | #size-cells = <1>; | ||
17 | |||
18 | cpus { | ||
19 | #address-cells = <1>; | ||
20 | #size-cells = <0>; | ||
21 | |||
22 | PowerPC,8610@0 { | ||
23 | device_type = "cpu"; | ||
24 | reg = <0>; | ||
25 | d-cache-line-size = <d# 32>; // bytes | ||
26 | i-cache-line-size = <d# 32>; // bytes | ||
27 | d-cache-size = <8000>; // L1, 32K | ||
28 | i-cache-size = <8000>; // L1, 32K | ||
29 | timebase-frequency = <0>; // 33 MHz, from uboot | ||
30 | bus-frequency = <0>; // From uboot | ||
31 | clock-frequency = <0>; // From uboot | ||
32 | }; | ||
33 | }; | ||
34 | |||
35 | memory { | ||
36 | device_type = "memory"; | ||
37 | reg = <00000000 20000000>; // 512M at 0x0 | ||
38 | }; | ||
39 | |||
40 | soc@e0000000 { | ||
41 | #address-cells = <1>; | ||
42 | #size-cells = <1>; | ||
43 | #interrupt-cells = <2>; | ||
44 | device_type = "soc"; | ||
45 | ranges = <0 e0000000 00100000>; | ||
46 | reg = <e0000000 1000>; | ||
47 | bus-frequency = <0>; | ||
48 | |||
49 | i2c@3000 { | ||
50 | device_type = "i2c"; | ||
51 | compatible = "fsl-i2c"; | ||
52 | #address-cells = <1>; | ||
53 | #size-cells = <0>; | ||
54 | reg = <3000 100>; | ||
55 | interrupts = <2b 2>; | ||
56 | interrupt-parent = <&mpic>; | ||
57 | dfsrr; | ||
58 | }; | ||
59 | |||
60 | i2c@3100 { | ||
61 | device_type = "i2c"; | ||
62 | compatible = "fsl-i2c"; | ||
63 | #address-cells = <1>; | ||
64 | #size-cells = <0>; | ||
65 | reg = <3100 100>; | ||
66 | interrupts = <2b 2>; | ||
67 | interrupt-parent = <&mpic>; | ||
68 | dfsrr; | ||
69 | }; | ||
70 | |||
71 | serial@4500 { | ||
72 | device_type = "serial"; | ||
73 | compatible = "ns16550"; | ||
74 | reg = <4500 100>; | ||
75 | clock-frequency = <0>; | ||
76 | interrupts = <2a 2>; | ||
77 | interrupt-parent = <&mpic>; | ||
78 | }; | ||
79 | |||
80 | serial@4600 { | ||
81 | device_type = "serial"; | ||
82 | compatible = "ns16550"; | ||
83 | reg = <4600 100>; | ||
84 | clock-frequency = <0>; | ||
85 | interrupts = <1c 2>; | ||
86 | interrupt-parent = <&mpic>; | ||
87 | }; | ||
88 | |||
89 | |||
90 | mpic: interrupt-controller@40000 { | ||
91 | clock-frequency = <0>; | ||
92 | interrupt-controller; | ||
93 | #address-cells = <0>; | ||
94 | #interrupt-cells = <2>; | ||
95 | reg = <40000 40000>; | ||
96 | compatible = "chrp,open-pic"; | ||
97 | device_type = "open-pic"; | ||
98 | big-endian; | ||
99 | }; | ||
100 | |||
101 | global-utilities@e0000 { | ||
102 | compatible = "fsl,mpc8610-guts"; | ||
103 | reg = <e0000 1000>; | ||
104 | fsl,has-rstcr; | ||
105 | }; | ||
106 | }; | ||
107 | |||
108 | pci@e0008000 { | ||
109 | compatible = "fsl,mpc8610-pci"; | ||
110 | device_type = "pci"; | ||
111 | #interrupt-cells = <1>; | ||
112 | #size-cells = <2>; | ||
113 | #address-cells = <3>; | ||
114 | reg = <e0008000 1000>; | ||
115 | bus-range = <0 0>; | ||
116 | ranges = <02000000 0 80000000 80000000 0 10000000 | ||
117 | 01000000 0 00000000 e1000000 0 00100000>; | ||
118 | clock-frequency = <1fca055>; | ||
119 | interrupt-parent = <&mpic>; | ||
120 | interrupts = <18 2>; | ||
121 | interrupt-map-mask = <f800 0 0 7>; | ||
122 | interrupt-map = < | ||
123 | /* IDSEL 0x11 */ | ||
124 | 8800 0 0 1 &mpic 4 1 | ||
125 | 8800 0 0 2 &mpic 5 1 | ||
126 | 8800 0 0 3 &mpic 6 1 | ||
127 | 8800 0 0 4 &mpic 7 1 | ||
128 | |||
129 | /* IDSEL 0x12 */ | ||
130 | 9000 0 0 1 &mpic 5 1 | ||
131 | 9000 0 0 2 &mpic 6 1 | ||
132 | 9000 0 0 3 &mpic 7 1 | ||
133 | 9000 0 0 4 &mpic 4 1 | ||
134 | >; | ||
135 | }; | ||
136 | |||
137 | pcie@e000a000 { | ||
138 | compatible = "fsl,mpc8641-pcie"; | ||
139 | device_type = "pci"; | ||
140 | #interrupt-cells = <1>; | ||
141 | #size-cells = <2>; | ||
142 | #address-cells = <3>; | ||
143 | reg = <e000a000 1000>; | ||
144 | bus-range = <1 3>; | ||
145 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | ||
146 | 01000000 0 00000000 e3000000 0 00100000>; | ||
147 | clock-frequency = <1fca055>; | ||
148 | interrupt-parent = <&mpic>; | ||
149 | interrupts = <1a 2>; | ||
150 | interrupt-map-mask = <f800 0 0 7>; | ||
151 | |||
152 | interrupt-map = < | ||
153 | /* IDSEL 0x1b */ | ||
154 | d800 0 0 1 &mpic 2 1 | ||
155 | |||
156 | /* IDSEL 0x1c*/ | ||
157 | e000 0 0 1 &mpic 1 1 | ||
158 | e000 0 0 2 &mpic 1 1 | ||
159 | e000 0 0 3 &mpic 1 1 | ||
160 | e000 0 0 4 &mpic 1 1 | ||
161 | |||
162 | /* IDSEL 0x1f */ | ||
163 | f800 0 0 1 &mpic 3 0 | ||
164 | f800 0 0 2 &mpic 0 1 | ||
165 | >; | ||
166 | |||
167 | pcie@0 { | ||
168 | reg = <0 0 0 0 0>; | ||
169 | #size-cells = <2>; | ||
170 | #address-cells = <3>; | ||
171 | device_type = "pci"; | ||
172 | ranges = <02000000 0 a0000000 | ||
173 | 02000000 0 a0000000 | ||
174 | 0 10000000 | ||
175 | 01000000 0 00000000 | ||
176 | 01000000 0 00000000 | ||
177 | 0 00100000>; | ||
178 | uli1575@0 { | ||
179 | reg = <0 0 0 0 0>; | ||
180 | #size-cells = <2>; | ||
181 | #address-cells = <3>; | ||
182 | ranges = <02000000 0 a0000000 | ||
183 | 02000000 0 a0000000 | ||
184 | 0 10000000 | ||
185 | 01000000 0 00000000 | ||
186 | 01000000 0 00000000 | ||
187 | 0 00100000>; | ||
188 | }; | ||
189 | }; | ||
190 | }; | ||
191 | }; | ||
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index b0166e5c177e..367765937a06 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; // 33 MHz, from uboot | 30 | timebase-frequency = <0>; // 33 MHz, from uboot |
31 | bus-frequency = <0>; // From uboot | 31 | bus-frequency = <0>; // From uboot |
32 | clock-frequency = <0>; // From uboot | 32 | clock-frequency = <0>; // From uboot |
33 | 32-bit; | ||
34 | }; | 33 | }; |
35 | PowerPC,8641@1 { | 34 | PowerPC,8641@1 { |
36 | device_type = "cpu"; | 35 | device_type = "cpu"; |
@@ -42,7 +41,6 @@ | |||
42 | timebase-frequency = <0>; // 33 MHz, from uboot | 41 | timebase-frequency = <0>; // 33 MHz, from uboot |
43 | bus-frequency = <0>; // From uboot | 42 | bus-frequency = <0>; // From uboot |
44 | clock-frequency = <0>; // From uboot | 43 | clock-frequency = <0>; // From uboot |
45 | 32-bit; | ||
46 | }; | 44 | }; |
47 | }; | 45 | }; |
48 | 46 | ||
@@ -54,13 +52,8 @@ | |||
54 | soc8641@f8000000 { | 52 | soc8641@f8000000 { |
55 | #address-cells = <1>; | 53 | #address-cells = <1>; |
56 | #size-cells = <1>; | 54 | #size-cells = <1>; |
57 | #interrupt-cells = <2>; | ||
58 | device_type = "soc"; | 55 | device_type = "soc"; |
59 | ranges = <00001000 f8001000 000ff000 | 56 | ranges = <00000000 f8000000 00100000>; |
60 | 80000000 80000000 20000000 | ||
61 | e2000000 e2000000 00100000 | ||
62 | a0000000 a0000000 20000000 | ||
63 | e3000000 e3000000 00100000>; | ||
64 | reg = <f8000000 00001000>; // CCSRBAR | 57 | reg = <f8000000 00001000>; // CCSRBAR |
65 | bus-frequency = <0>; | 58 | bus-frequency = <0>; |
66 | 59 | ||
@@ -211,50 +204,81 @@ | |||
211 | interrupt-parent = <&mpic>; | 204 | interrupt-parent = <&mpic>; |
212 | }; | 205 | }; |
213 | 206 | ||
214 | pcie@8000 { | 207 | mpic: pic@40000 { |
215 | compatible = "fsl,mpc8641-pcie"; | 208 | clock-frequency = <0>; |
216 | device_type = "pci"; | 209 | interrupt-controller; |
217 | #interrupt-cells = <1>; | 210 | #address-cells = <0>; |
211 | #interrupt-cells = <2>; | ||
212 | reg = <40000 40000>; | ||
213 | compatible = "chrp,open-pic"; | ||
214 | device_type = "open-pic"; | ||
215 | big-endian; | ||
216 | }; | ||
217 | |||
218 | global-utilities@e0000 { | ||
219 | compatible = "fsl,mpc8641-guts"; | ||
220 | reg = <e0000 1000>; | ||
221 | fsl,has-rstcr; | ||
222 | }; | ||
223 | }; | ||
224 | |||
225 | pcie@f8008000 { | ||
226 | compatible = "fsl,mpc8641-pcie"; | ||
227 | device_type = "pci"; | ||
228 | #interrupt-cells = <1>; | ||
229 | #size-cells = <2>; | ||
230 | #address-cells = <3>; | ||
231 | reg = <f8008000 1000>; | ||
232 | bus-range = <0 ff>; | ||
233 | ranges = <02000000 0 80000000 80000000 0 20000000 | ||
234 | 01000000 0 00000000 e2000000 0 00100000>; | ||
235 | clock-frequency = <1fca055>; | ||
236 | interrupt-parent = <&mpic>; | ||
237 | interrupts = <18 2>; | ||
238 | interrupt-map-mask = <fb00 0 0 0>; | ||
239 | interrupt-map = < | ||
240 | /* IDSEL 0x11 */ | ||
241 | 8800 0 0 1 &i8259 9 2 | ||
242 | 8800 0 0 2 &i8259 a 2 | ||
243 | 8800 0 0 3 &i8259 b 2 | ||
244 | 8800 0 0 4 &i8259 c 2 | ||
245 | |||
246 | /* IDSEL 0x12 */ | ||
247 | 9000 0 0 1 &i8259 a 2 | ||
248 | 9000 0 0 2 &i8259 b 2 | ||
249 | 9000 0 0 3 &i8259 c 2 | ||
250 | 9000 0 0 4 &i8259 9 2 | ||
251 | |||
252 | // IDSEL 0x1c USB | ||
253 | e000 0 0 0 &i8259 c 2 | ||
254 | e100 0 0 0 &i8259 9 2 | ||
255 | e200 0 0 0 &i8259 a 2 | ||
256 | e300 0 0 0 &i8259 b 2 | ||
257 | |||
258 | // IDSEL 0x1d Audio | ||
259 | e800 0 0 0 &i8259 6 2 | ||
260 | |||
261 | // IDSEL 0x1e Legacy | ||
262 | f000 0 0 0 &i8259 7 2 | ||
263 | f100 0 0 0 &i8259 7 2 | ||
264 | |||
265 | // IDSEL 0x1f IDE/SATA | ||
266 | f800 0 0 0 &i8259 e 2 | ||
267 | f900 0 0 0 &i8259 5 2 | ||
268 | >; | ||
269 | |||
270 | pcie@0 { | ||
271 | reg = <0 0 0 0 0>; | ||
218 | #size-cells = <2>; | 272 | #size-cells = <2>; |
219 | #address-cells = <3>; | 273 | #address-cells = <3>; |
220 | reg = <8000 1000>; | 274 | device_type = "pci"; |
221 | bus-range = <0 ff>; | 275 | ranges = <02000000 0 80000000 |
222 | ranges = <02000000 0 80000000 80000000 0 20000000 | 276 | 02000000 0 80000000 |
223 | 01000000 0 00000000 e2000000 0 00100000>; | 277 | 0 20000000 |
224 | clock-frequency = <1fca055>; | 278 | |
225 | interrupt-parent = <&mpic>; | 279 | 01000000 0 00000000 |
226 | interrupts = <18 2>; | 280 | 01000000 0 00000000 |
227 | interrupt-map-mask = <fb00 0 0 0>; | 281 | 0 00100000>; |
228 | interrupt-map = < | ||
229 | /* IDSEL 0x11 */ | ||
230 | 8800 0 0 1 &i8259 9 2 | ||
231 | 8800 0 0 2 &i8259 a 2 | ||
232 | 8800 0 0 3 &i8259 b 2 | ||
233 | 8800 0 0 4 &i8259 c 2 | ||
234 | |||
235 | /* IDSEL 0x12 */ | ||
236 | 9000 0 0 1 &i8259 a 2 | ||
237 | 9000 0 0 2 &i8259 b 2 | ||
238 | 9000 0 0 3 &i8259 c 2 | ||
239 | 9000 0 0 4 &i8259 9 2 | ||
240 | |||
241 | // IDSEL 0x1c USB | ||
242 | e000 0 0 0 &i8259 c 2 | ||
243 | e100 0 0 0 &i8259 9 2 | ||
244 | e200 0 0 0 &i8259 a 2 | ||
245 | e300 0 0 0 &i8259 b 2 | ||
246 | |||
247 | // IDSEL 0x1d Audio | ||
248 | e800 0 0 0 &i8259 6 2 | ||
249 | |||
250 | // IDSEL 0x1e Legacy | ||
251 | f000 0 0 0 &i8259 7 2 | ||
252 | f100 0 0 0 &i8259 7 2 | ||
253 | |||
254 | // IDSEL 0x1f IDE/SATA | ||
255 | f800 0 0 0 &i8259 e 2 | ||
256 | f900 0 0 0 &i8259 5 2 | ||
257 | >; | ||
258 | uli1575@0 { | 282 | uli1575@0 { |
259 | reg = <0 0 0 0 0>; | 283 | reg = <0 0 0 0 0>; |
260 | #size-cells = <2>; | 284 | #size-cells = <2>; |
@@ -265,111 +289,96 @@ | |||
265 | 01000000 0 00000000 | 289 | 01000000 0 00000000 |
266 | 01000000 0 00000000 | 290 | 01000000 0 00000000 |
267 | 0 00100000>; | 291 | 0 00100000>; |
292 | isa@1e { | ||
293 | device_type = "isa"; | ||
294 | #interrupt-cells = <2>; | ||
295 | #size-cells = <1>; | ||
296 | #address-cells = <2>; | ||
297 | reg = <f000 0 0 0 0>; | ||
298 | ranges = <1 0 01000000 0 0 | ||
299 | 00001000>; | ||
300 | interrupt-parent = <&i8259>; | ||
268 | 301 | ||
269 | pci_bridge@0 { | 302 | i8259: interrupt-controller@20 { |
270 | reg = <0 0 0 0 0>; | 303 | reg = <1 20 2 |
271 | #size-cells = <2>; | 304 | 1 a0 2 |
272 | #address-cells = <3>; | 305 | 1 4d0 2>; |
273 | ranges = <02000000 0 80000000 | 306 | interrupt-controller; |
274 | 02000000 0 80000000 | 307 | device_type = "interrupt-controller"; |
275 | 0 20000000 | 308 | #address-cells = <0>; |
276 | 01000000 0 00000000 | ||
277 | 01000000 0 00000000 | ||
278 | 0 00100000>; | ||
279 | |||
280 | isa@1e { | ||
281 | device_type = "isa"; | ||
282 | #interrupt-cells = <2>; | 309 | #interrupt-cells = <2>; |
283 | #size-cells = <1>; | 310 | compatible = "chrp,iic"; |
284 | #address-cells = <2>; | 311 | interrupts = <9 2>; |
285 | reg = <f000 0 0 0 0>; | 312 | interrupt-parent = <&mpic>; |
286 | ranges = <1 0 01000000 0 0 | 313 | }; |
287 | 00001000>; | ||
288 | interrupt-parent = <&i8259>; | ||
289 | |||
290 | i8259: interrupt-controller@20 { | ||
291 | reg = <1 20 2 | ||
292 | 1 a0 2 | ||
293 | 1 4d0 2>; | ||
294 | clock-frequency = <0>; | ||
295 | interrupt-controller; | ||
296 | device_type = "interrupt-controller"; | ||
297 | #address-cells = <0>; | ||
298 | #interrupt-cells = <2>; | ||
299 | built-in; | ||
300 | compatible = "chrp,iic"; | ||
301 | interrupts = <9 2>; | ||
302 | interrupt-parent = | ||
303 | <&mpic>; | ||
304 | }; | ||
305 | 314 | ||
306 | i8042@60 { | 315 | i8042@60 { |
307 | #size-cells = <0>; | 316 | #size-cells = <0>; |
308 | #address-cells = <1>; | 317 | #address-cells = <1>; |
309 | reg = <1 60 1 1 64 1>; | 318 | reg = <1 60 1 1 64 1>; |
310 | interrupts = <1 3 c 3>; | 319 | interrupts = <1 3 c 3>; |
311 | interrupt-parent = | 320 | interrupt-parent = |
312 | <&i8259>; | 321 | <&i8259>; |
313 | |||
314 | keyboard@0 { | ||
315 | reg = <0>; | ||
316 | compatible = "pnpPNP,303"; | ||
317 | }; | ||
318 | |||
319 | mouse@1 { | ||
320 | reg = <1>; | ||
321 | compatible = "pnpPNP,f03"; | ||
322 | }; | ||
323 | }; | ||
324 | 322 | ||
325 | rtc@70 { | 323 | keyboard@0 { |
326 | compatible = | 324 | reg = <0>; |
327 | "pnpPNP,b00"; | 325 | compatible = "pnpPNP,303"; |
328 | reg = <1 70 2>; | ||
329 | }; | 326 | }; |
330 | 327 | ||
331 | gpio@400 { | 328 | mouse@1 { |
332 | reg = <1 400 80>; | 329 | reg = <1>; |
330 | compatible = "pnpPNP,f03"; | ||
333 | }; | 331 | }; |
334 | }; | 332 | }; |
333 | |||
334 | rtc@70 { | ||
335 | compatible = | ||
336 | "pnpPNP,b00"; | ||
337 | reg = <1 70 2>; | ||
338 | }; | ||
339 | |||
340 | gpio@400 { | ||
341 | reg = <1 400 80>; | ||
342 | }; | ||
335 | }; | 343 | }; |
336 | }; | 344 | }; |
337 | |||
338 | }; | 345 | }; |
339 | 346 | ||
340 | pcie@9000 { | 347 | }; |
341 | compatible = "fsl,mpc8641-pcie"; | 348 | |
342 | device_type = "pci"; | 349 | pcie@f8009000 { |
343 | #interrupt-cells = <1>; | 350 | compatible = "fsl,mpc8641-pcie"; |
351 | device_type = "pci"; | ||
352 | #interrupt-cells = <1>; | ||
353 | #size-cells = <2>; | ||
354 | #address-cells = <3>; | ||
355 | reg = <f8009000 1000>; | ||
356 | bus-range = <0 ff>; | ||
357 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | ||
358 | 01000000 0 00000000 e3000000 0 00100000>; | ||
359 | clock-frequency = <1fca055>; | ||
360 | interrupt-parent = <&mpic>; | ||
361 | interrupts = <19 2>; | ||
362 | interrupt-map-mask = <f800 0 0 7>; | ||
363 | interrupt-map = < | ||
364 | /* IDSEL 0x0 */ | ||
365 | 0000 0 0 1 &mpic 4 1 | ||
366 | 0000 0 0 2 &mpic 5 1 | ||
367 | 0000 0 0 3 &mpic 6 1 | ||
368 | 0000 0 0 4 &mpic 7 1 | ||
369 | >; | ||
370 | pcie@0 { | ||
371 | reg = <0 0 0 0 0>; | ||
344 | #size-cells = <2>; | 372 | #size-cells = <2>; |
345 | #address-cells = <3>; | 373 | #address-cells = <3>; |
346 | reg = <9000 1000>; | 374 | device_type = "pci"; |
347 | bus-range = <0 ff>; | 375 | ranges = <02000000 0 a0000000 |
348 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 376 | 02000000 0 a0000000 |
349 | 01000000 0 00000000 e3000000 0 00100000>; | 377 | 0 20000000 |
350 | clock-frequency = <1fca055>; | ||
351 | interrupt-parent = <&mpic>; | ||
352 | interrupts = <19 2>; | ||
353 | interrupt-map-mask = <f800 0 0 7>; | ||
354 | interrupt-map = < | ||
355 | /* IDSEL 0x0 */ | ||
356 | 0000 0 0 1 &mpic 4 1 | ||
357 | 0000 0 0 2 &mpic 5 1 | ||
358 | 0000 0 0 3 &mpic 6 1 | ||
359 | 0000 0 0 4 &mpic 7 1 | ||
360 | >; | ||
361 | }; | ||
362 | 378 | ||
363 | mpic: pic@40000 { | 379 | 01000000 0 00000000 |
364 | clock-frequency = <0>; | 380 | 01000000 0 00000000 |
365 | interrupt-controller; | 381 | 0 00100000>; |
366 | #address-cells = <0>; | ||
367 | #interrupt-cells = <2>; | ||
368 | reg = <40000 40000>; | ||
369 | built-in; | ||
370 | compatible = "chrp,open-pic"; | ||
371 | device_type = "open-pic"; | ||
372 | big-endian; | ||
373 | }; | 382 | }; |
374 | }; | 383 | }; |
375 | }; | 384 | }; |
diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts index e5e7726ddb03..90f2293ed3cd 100644 --- a/arch/powerpc/boot/dts/mpc866ads.dts +++ b/arch/powerpc/boot/dts/mpc866ads.dts | |||
@@ -30,7 +30,6 @@ | |||
30 | timebase-frequency = <0>; | 30 | timebase-frequency = <0>; |
31 | bus-frequency = <0>; | 31 | bus-frequency = <0>; |
32 | clock-frequency = <0>; | 32 | clock-frequency = <0>; |
33 | 32-bit; | ||
34 | interrupts = <f 2>; // decrementer interrupt | 33 | interrupts = <f 2>; // decrementer interrupt |
35 | interrupt-parent = <&Mpc8xx_pic>; | 34 | interrupt-parent = <&Mpc8xx_pic>; |
36 | }; | 35 | }; |
@@ -44,7 +43,6 @@ | |||
44 | soc866@ff000000 { | 43 | soc866@ff000000 { |
45 | #address-cells = <1>; | 44 | #address-cells = <1>; |
46 | #size-cells = <1>; | 45 | #size-cells = <1>; |
47 | #interrupt-cells = <2>; | ||
48 | device_type = "soc"; | 46 | device_type = "soc"; |
49 | ranges = <0 ff000000 00100000>; | 47 | ranges = <0 ff000000 00100000>; |
50 | reg = <ff000000 00000200>; | 48 | reg = <ff000000 00000200>; |
@@ -78,7 +76,6 @@ | |||
78 | #address-cells = <0>; | 76 | #address-cells = <0>; |
79 | #interrupt-cells = <2>; | 77 | #interrupt-cells = <2>; |
80 | reg = <0 24>; | 78 | reg = <0 24>; |
81 | built-in; | ||
82 | device_type = "mpc8xx-pic"; | 79 | device_type = "mpc8xx-pic"; |
83 | compatible = "CPM"; | 80 | compatible = "CPM"; |
84 | }; | 81 | }; |
@@ -86,7 +83,6 @@ | |||
86 | cpm@ff000000 { | 83 | cpm@ff000000 { |
87 | #address-cells = <1>; | 84 | #address-cells = <1>; |
88 | #size-cells = <1>; | 85 | #size-cells = <1>; |
89 | #interrupt-cells = <2>; | ||
90 | device_type = "cpm"; | 86 | device_type = "cpm"; |
91 | model = "CPM"; | 87 | model = "CPM"; |
92 | ranges = <0 0 4000>; | 88 | ranges = <0 0 4000>; |
@@ -103,7 +99,6 @@ | |||
103 | interrupts = <5 2 0 2>; | 99 | interrupts = <5 2 0 2>; |
104 | interrupt-parent = <&Mpc8xx_pic>; | 100 | interrupt-parent = <&Mpc8xx_pic>; |
105 | reg = <930 20>; | 101 | reg = <930 20>; |
106 | built-in; | ||
107 | device_type = "cpm-pic"; | 102 | device_type = "cpm-pic"; |
108 | compatible = "CPM"; | 103 | compatible = "CPM"; |
109 | }; | 104 | }; |
diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts index dc7ab9c80611..8848e637293e 100644 --- a/arch/powerpc/boot/dts/mpc885ads.dts +++ b/arch/powerpc/boot/dts/mpc885ads.dts | |||
@@ -2,6 +2,7 @@ | |||
2 | * MPC885 ADS Device Tree Source | 2 | * MPC885 ADS Device Tree Source |
3 | * | 3 | * |
4 | * Copyright 2006 MontaVista Software, Inc. | 4 | * Copyright 2006 MontaVista Software, Inc. |
5 | * Copyright 2007 Freescale Semiconductor, Inc. | ||
5 | * | 6 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 7 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 8 | * under the terms of the GNU General Public License as published by the |
@@ -12,7 +13,7 @@ | |||
12 | 13 | ||
13 | / { | 14 | / { |
14 | model = "MPC885ADS"; | 15 | model = "MPC885ADS"; |
15 | compatible = "mpc8xx"; | 16 | compatible = "fsl,mpc885ads"; |
16 | #address-cells = <1>; | 17 | #address-cells = <1>; |
17 | #size-cells = <1>; | 18 | #size-cells = <1>; |
18 | 19 | ||
@@ -23,161 +24,199 @@ | |||
23 | PowerPC,885@0 { | 24 | PowerPC,885@0 { |
24 | device_type = "cpu"; | 25 | device_type = "cpu"; |
25 | reg = <0>; | 26 | reg = <0>; |
26 | d-cache-line-size = <20>; // 32 bytes | 27 | d-cache-line-size = <d#16>; |
27 | i-cache-line-size = <20>; // 32 bytes | 28 | i-cache-line-size = <d#16>; |
28 | d-cache-size = <2000>; // L1, 8K | 29 | d-cache-size = <d#8192>; |
29 | i-cache-size = <2000>; // L1, 8K | 30 | i-cache-size = <d#8192>; |
30 | timebase-frequency = <0>; | 31 | timebase-frequency = <0>; |
31 | bus-frequency = <0>; | 32 | bus-frequency = <0>; |
32 | clock-frequency = <0>; | 33 | clock-frequency = <0>; |
33 | 32-bit; | ||
34 | interrupts = <f 2>; // decrementer interrupt | 34 | interrupts = <f 2>; // decrementer interrupt |
35 | interrupt-parent = <&Mpc8xx_pic>; | 35 | interrupt-parent = <&PIC>; |
36 | }; | 36 | }; |
37 | }; | 37 | }; |
38 | 38 | ||
39 | memory { | 39 | memory { |
40 | device_type = "memory"; | 40 | device_type = "memory"; |
41 | reg = <00000000 800000>; | 41 | reg = <0 0>; |
42 | }; | 42 | }; |
43 | 43 | ||
44 | soc885@ff000000 { | 44 | localbus@ff000100 { |
45 | compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus"; | ||
46 | #address-cells = <2>; | ||
47 | #size-cells = <1>; | ||
48 | reg = <ff000100 40>; | ||
49 | |||
50 | ranges = < | ||
51 | 0 0 fe000000 00800000 | ||
52 | 1 0 ff080000 00008000 | ||
53 | 5 0 ff0a0000 00008000 | ||
54 | >; | ||
55 | |||
56 | flash@0,0 { | ||
57 | compatible = "jedec-flash"; | ||
58 | reg = <0 0 800000>; | ||
59 | bank-width = <4>; | ||
60 | device-width = <1>; | ||
61 | }; | ||
62 | |||
63 | board-control@1,0 { | ||
64 | reg = <1 0 20 5 300 4>; | ||
65 | compatible = "fsl,mpc885ads-bcsr"; | ||
66 | }; | ||
67 | }; | ||
68 | |||
69 | soc@ff000000 { | ||
70 | compatible = "fsl,mpc885", "fsl,pq1-soc"; | ||
45 | #address-cells = <1>; | 71 | #address-cells = <1>; |
46 | #size-cells = <1>; | 72 | #size-cells = <1>; |
47 | #interrupt-cells = <2>; | ||
48 | device_type = "soc"; | 73 | device_type = "soc"; |
49 | ranges = <0 ff000000 00100000>; | 74 | ranges = <0 ff000000 00004000>; |
50 | reg = <ff000000 00000200>; | ||
51 | bus-frequency = <0>; | 75 | bus-frequency = <0>; |
52 | mdio@e80 { | 76 | |
53 | device_type = "mdio"; | 77 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). |
54 | compatible = "fs_enet"; | 78 | reg = <ff000000 4000>; |
55 | reg = <e80 8>; | 79 | |
80 | mdio@e00 { | ||
81 | compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio"; | ||
82 | reg = <e00 188>; | ||
56 | #address-cells = <1>; | 83 | #address-cells = <1>; |
57 | #size-cells = <0>; | 84 | #size-cells = <0>; |
58 | Phy0: ethernet-phy@0 { | 85 | |
86 | PHY0: ethernet-phy@0 { | ||
59 | reg = <0>; | 87 | reg = <0>; |
60 | device_type = "ethernet-phy"; | 88 | device_type = "ethernet-phy"; |
61 | }; | 89 | }; |
62 | Phy1: ethernet-phy@1 { | 90 | |
91 | PHY1: ethernet-phy@1 { | ||
63 | reg = <1>; | 92 | reg = <1>; |
64 | device_type = "ethernet-phy"; | 93 | device_type = "ethernet-phy"; |
65 | }; | 94 | }; |
66 | Phy2: ethernet-phy@2 { | 95 | |
96 | PHY2: ethernet-phy@2 { | ||
67 | reg = <2>; | 97 | reg = <2>; |
68 | device_type = "ethernet-phy"; | 98 | device_type = "ethernet-phy"; |
69 | }; | 99 | }; |
70 | }; | 100 | }; |
71 | 101 | ||
72 | fec@e00 { | 102 | ethernet@e00 { |
73 | device_type = "network"; | 103 | device_type = "network"; |
74 | compatible = "fs_enet"; | 104 | compatible = "fsl,mpc885-fec-enet", |
75 | model = "FEC"; | 105 | "fsl,pq1-fec-enet"; |
76 | device-id = <1>; | ||
77 | reg = <e00 188>; | 106 | reg = <e00 188>; |
78 | mac-address = [ 00 00 0C 00 01 FD ]; | 107 | local-mac-address = [ 00 00 00 00 00 00 ]; |
79 | interrupts = <3 1>; | 108 | interrupts = <3 1>; |
80 | interrupt-parent = <&Mpc8xx_pic>; | 109 | interrupt-parent = <&PIC>; |
81 | phy-handle = <&Phy1>; | 110 | phy-handle = <&PHY0>; |
111 | linux,network-index = <0>; | ||
82 | }; | 112 | }; |
83 | 113 | ||
84 | fec@1e00 { | 114 | ethernet@1e00 { |
85 | device_type = "network"; | 115 | device_type = "network"; |
86 | compatible = "fs_enet"; | 116 | compatible = "fsl,mpc885-fec-enet", |
87 | model = "FEC"; | 117 | "fsl,pq1-fec-enet"; |
88 | device-id = <2>; | ||
89 | reg = <1e00 188>; | 118 | reg = <1e00 188>; |
90 | mac-address = [ 00 00 0C 00 02 FD ]; | 119 | local-mac-address = [ 00 00 00 00 00 00 ]; |
91 | interrupts = <7 1>; | 120 | interrupts = <7 1>; |
92 | interrupt-parent = <&Mpc8xx_pic>; | 121 | interrupt-parent = <&PIC>; |
93 | phy-handle = <&Phy2>; | 122 | phy-handle = <&PHY1>; |
123 | linux,network-index = <1>; | ||
94 | }; | 124 | }; |
95 | 125 | ||
96 | Mpc8xx_pic: pic@ff000000 { | 126 | PIC: interrupt-controller@0 { |
97 | interrupt-controller; | 127 | interrupt-controller; |
98 | #address-cells = <0>; | ||
99 | #interrupt-cells = <2>; | 128 | #interrupt-cells = <2>; |
100 | reg = <0 24>; | 129 | reg = <0 24>; |
101 | built-in; | 130 | compatible = "fsl,mpc885-pic", "fsl,pq1-pic"; |
102 | device_type = "mpc8xx-pic"; | ||
103 | compatible = "CPM"; | ||
104 | }; | 131 | }; |
105 | 132 | ||
106 | pcmcia@0080 { | 133 | pcmcia@80 { |
107 | #address-cells = <3>; | 134 | #address-cells = <3>; |
108 | #interrupt-cells = <1>; | 135 | #interrupt-cells = <1>; |
109 | #size-cells = <2>; | 136 | #size-cells = <2>; |
110 | compatible = "fsl,pq-pcmcia"; | 137 | compatible = "fsl,pq-pcmcia"; |
111 | device_type = "pcmcia"; | 138 | device_type = "pcmcia"; |
112 | reg = <80 80>; | 139 | reg = <80 80>; |
113 | interrupt-parent = <&Mpc8xx_pic>; | 140 | interrupt-parent = <&PIC>; |
114 | interrupts = <d 1>; | 141 | interrupts = <d 1>; |
115 | }; | 142 | }; |
116 | 143 | ||
117 | cpm@ff000000 { | 144 | cpm@9c0 { |
118 | #address-cells = <1>; | 145 | #address-cells = <1>; |
119 | #size-cells = <1>; | 146 | #size-cells = <1>; |
120 | #interrupt-cells = <2>; | 147 | compatible = "fsl,mpc885-cpm", "fsl,cpm1"; |
121 | device_type = "cpm"; | ||
122 | model = "CPM"; | ||
123 | ranges = <0 0 4000>; | ||
124 | reg = <860 f0>; | ||
125 | command-proc = <9c0>; | 148 | command-proc = <9c0>; |
126 | brg-frequency = <0>; | 149 | interrupts = <0>; // cpm error interrupt |
127 | interrupts = <0 2>; // cpm error interrupt | 150 | interrupt-parent = <&CPM_PIC>; |
128 | interrupt-parent = <&Cpm_pic>; | 151 | reg = <9c0 40>; |
152 | ranges; | ||
153 | |||
154 | muram@2000 { | ||
155 | #address-cells = <1>; | ||
156 | #size-cells = <1>; | ||
157 | ranges = <0 2000 2000>; | ||
129 | 158 | ||
130 | Cpm_pic: pic@930 { | 159 | data@0 { |
160 | compatible = "fsl,cpm-muram-data"; | ||
161 | reg = <0 1c00>; | ||
162 | }; | ||
163 | }; | ||
164 | |||
165 | brg@9f0 { | ||
166 | compatible = "fsl,mpc885-brg", | ||
167 | "fsl,cpm1-brg", | ||
168 | "fsl,cpm-brg"; | ||
169 | reg = <9f0 10>; | ||
170 | }; | ||
171 | |||
172 | CPM_PIC: interrupt-controller@930 { | ||
131 | interrupt-controller; | 173 | interrupt-controller; |
132 | #address-cells = <0>; | 174 | #interrupt-cells = <1>; |
133 | #interrupt-cells = <2>; | ||
134 | interrupts = <5 2 0 2>; | 175 | interrupts = <5 2 0 2>; |
135 | interrupt-parent = <&Mpc8xx_pic>; | 176 | interrupt-parent = <&PIC>; |
136 | reg = <930 20>; | 177 | reg = <930 20>; |
137 | built-in; | 178 | compatible = "fsl,mpc885-cpm-pic", |
138 | device_type = "cpm-pic"; | 179 | "fsl,cpm1-pic"; |
139 | compatible = "CPM"; | ||
140 | }; | 180 | }; |
141 | 181 | ||
142 | smc@a80 { | 182 | serial@a80 { |
143 | device_type = "serial"; | 183 | device_type = "serial"; |
144 | compatible = "cpm_uart"; | 184 | compatible = "fsl,mpc885-smc-uart", |
145 | model = "SMC"; | 185 | "fsl,cpm1-smc-uart"; |
146 | device-id = <1>; | ||
147 | reg = <a80 10 3e80 40>; | 186 | reg = <a80 10 3e80 40>; |
148 | clock-setup = <00ffffff 0>; | 187 | interrupts = <4>; |
149 | rx-clock = <1>; | 188 | interrupt-parent = <&CPM_PIC>; |
150 | tx-clock = <1>; | 189 | fsl,cpm-brg = <1>; |
151 | current-speed = <0>; | 190 | fsl,cpm-command = <0090>; |
152 | interrupts = <4 3>; | ||
153 | interrupt-parent = <&Cpm_pic>; | ||
154 | }; | 191 | }; |
155 | 192 | ||
156 | smc@a90 { | 193 | serial@a90 { |
157 | device_type = "serial"; | 194 | device_type = "serial"; |
158 | compatible = "cpm_uart"; | 195 | compatible = "fsl,mpc885-smc-uart", |
159 | model = "SMC"; | 196 | "fsl,cpm1-smc-uart"; |
160 | device-id = <2>; | 197 | reg = <a90 10 3f80 40>; |
161 | reg = <a90 20 3f80 40>; | 198 | interrupts = <3>; |
162 | clock-setup = <ff00ffff 90000>; | 199 | interrupt-parent = <&CPM_PIC>; |
163 | rx-clock = <2>; | 200 | fsl,cpm-brg = <2>; |
164 | tx-clock = <2>; | 201 | fsl,cpm-command = <00d0>; |
165 | current-speed = <0>; | ||
166 | interrupts = <3 3>; | ||
167 | interrupt-parent = <&Cpm_pic>; | ||
168 | }; | 202 | }; |
169 | 203 | ||
170 | scc@a40 { | 204 | ethernet@a40 { |
171 | device_type = "network"; | 205 | device_type = "network"; |
172 | compatible = "fs_enet"; | 206 | compatible = "fsl,mpc885-scc-enet", |
173 | model = "SCC"; | 207 | "fsl,cpm1-scc-enet"; |
174 | device-id = <3>; | 208 | reg = <a40 18 3e00 100>; |
175 | reg = <a40 18 3e00 80>; | 209 | local-mac-address = [ 00 00 00 00 00 00 ]; |
176 | mac-address = [ 00 00 0C 00 03 FD ]; | 210 | interrupts = <1c>; |
177 | interrupts = <1c 3>; | 211 | interrupt-parent = <&CPM_PIC>; |
178 | interrupt-parent = <&Cpm_pic>; | 212 | phy-handle = <&PHY2>; |
179 | phy-handle = <&Phy2>; | 213 | fsl,cpm-command = <0080>; |
214 | linux,network-index = <2>; | ||
180 | }; | 215 | }; |
181 | }; | 216 | }; |
182 | }; | 217 | }; |
218 | |||
219 | chosen { | ||
220 | linux,stdout-path = "/soc/cpm/serial@a80"; | ||
221 | }; | ||
183 | }; | 222 | }; |
diff --git a/arch/powerpc/boot/dts/pq2fads.dts b/arch/powerpc/boot/dts/pq2fads.dts new file mode 100644 index 000000000000..2d564921897a --- /dev/null +++ b/arch/powerpc/boot/dts/pq2fads.dts | |||
@@ -0,0 +1,240 @@ | |||
1 | /* | ||
2 | * Device Tree for the PQ2FADS-ZU board with an MPC8280 chip. | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | / { | ||
13 | model = "pq2fads"; | ||
14 | compatible = "fsl,pq2fads"; | ||
15 | #address-cells = <1>; | ||
16 | #size-cells = <1>; | ||
17 | |||
18 | cpus { | ||
19 | #address-cells = <1>; | ||
20 | #size-cells = <0>; | ||
21 | |||
22 | cpu@0 { | ||
23 | device_type = "cpu"; | ||
24 | reg = <0>; | ||
25 | d-cache-line-size = <d#32>; | ||
26 | i-cache-line-size = <d#32>; | ||
27 | d-cache-size = <d#16384>; | ||
28 | i-cache-size = <d#16384>; | ||
29 | timebase-frequency = <0>; | ||
30 | clock-frequency = <0>; | ||
31 | }; | ||
32 | }; | ||
33 | |||
34 | memory { | ||
35 | device_type = "memory"; | ||
36 | reg = <0 0>; | ||
37 | }; | ||
38 | |||
39 | localbus@f0010100 { | ||
40 | compatible = "fsl,mpc8280-localbus", | ||
41 | "fsl,pq2-localbus"; | ||
42 | #address-cells = <2>; | ||
43 | #size-cells = <1>; | ||
44 | reg = <f0010100 60>; | ||
45 | |||
46 | ranges = <0 0 fe000000 00800000 | ||
47 | 1 0 f4500000 00008000 | ||
48 | 8 0 f8200000 00008000>; | ||
49 | |||
50 | flash@0,0 { | ||
51 | compatible = "jedec-flash"; | ||
52 | reg = <0 0 800000>; | ||
53 | bank-width = <4>; | ||
54 | device-width = <1>; | ||
55 | }; | ||
56 | |||
57 | bcsr@1,0 { | ||
58 | reg = <1 0 20>; | ||
59 | compatible = "fsl,pq2fads-bcsr"; | ||
60 | }; | ||
61 | |||
62 | PCI_PIC: pic@8,0 { | ||
63 | #interrupt-cells = <1>; | ||
64 | interrupt-controller; | ||
65 | reg = <8 0 8>; | ||
66 | compatible = "fsl,pq2ads-pci-pic"; | ||
67 | interrupt-parent = <&PIC>; | ||
68 | interrupts = <18 8>; | ||
69 | }; | ||
70 | }; | ||
71 | |||
72 | pci@f0010800 { | ||
73 | device_type = "pci"; | ||
74 | reg = <f0010800 10c f00101ac 8 f00101c4 8>; | ||
75 | compatible = "fsl,mpc8280-pci", "fsl,pq2-pci"; | ||
76 | #interrupt-cells = <1>; | ||
77 | #size-cells = <2>; | ||
78 | #address-cells = <3>; | ||
79 | clock-frequency = <d#66000000>; | ||
80 | interrupt-map-mask = <f800 0 0 7>; | ||
81 | interrupt-map = < | ||
82 | /* IDSEL 0x16 */ | ||
83 | b000 0 0 1 &PCI_PIC 0 | ||
84 | b000 0 0 2 &PCI_PIC 1 | ||
85 | b000 0 0 3 &PCI_PIC 2 | ||
86 | b000 0 0 4 &PCI_PIC 3 | ||
87 | |||
88 | /* IDSEL 0x17 */ | ||
89 | b800 0 0 1 &PCI_PIC 4 | ||
90 | b800 0 0 2 &PCI_PIC 5 | ||
91 | b800 0 0 3 &PCI_PIC 6 | ||
92 | b800 0 0 4 &PCI_PIC 7 | ||
93 | |||
94 | /* IDSEL 0x18 */ | ||
95 | c000 0 0 1 &PCI_PIC 8 | ||
96 | c000 0 0 2 &PCI_PIC 9 | ||
97 | c000 0 0 3 &PCI_PIC a | ||
98 | c000 0 0 4 &PCI_PIC b>; | ||
99 | |||
100 | interrupt-parent = <&PIC>; | ||
101 | interrupts = <12 8>; | ||
102 | ranges = <42000000 0 80000000 80000000 0 20000000 | ||
103 | 02000000 0 a0000000 a0000000 0 20000000 | ||
104 | 01000000 0 00000000 f6000000 0 02000000>; | ||
105 | }; | ||
106 | |||
107 | soc@f0000000 { | ||
108 | #address-cells = <1>; | ||
109 | #size-cells = <1>; | ||
110 | device_type = "soc"; | ||
111 | compatible = "fsl,mpc8280", "fsl,pq2-soc"; | ||
112 | ranges = <00000000 f0000000 00053000>; | ||
113 | |||
114 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | ||
115 | reg = <f0000000 00053000>; | ||
116 | |||
117 | cpm@119c0 { | ||
118 | #address-cells = <1>; | ||
119 | #size-cells = <1>; | ||
120 | #interrupt-cells = <2>; | ||
121 | compatible = "fsl,mpc8280-cpm", "fsl,cpm2"; | ||
122 | reg = <119c0 30>; | ||
123 | ranges; | ||
124 | |||
125 | muram@0 { | ||
126 | #address-cells = <1>; | ||
127 | #size-cells = <1>; | ||
128 | ranges = <0 0 10000>; | ||
129 | |||
130 | data@0 { | ||
131 | compatible = "fsl,cpm-muram-data"; | ||
132 | reg = <0 2000 9800 800>; | ||
133 | }; | ||
134 | }; | ||
135 | |||
136 | brg@119f0 { | ||
137 | compatible = "fsl,mpc8280-brg", | ||
138 | "fsl,cpm2-brg", | ||
139 | "fsl,cpm-brg"; | ||
140 | reg = <119f0 10 115f0 10>; | ||
141 | }; | ||
142 | |||
143 | serial@11a00 { | ||
144 | device_type = "serial"; | ||
145 | compatible = "fsl,mpc8280-scc-uart", | ||
146 | "fsl,cpm2-scc-uart"; | ||
147 | reg = <11a00 20 8000 100>; | ||
148 | interrupts = <28 8>; | ||
149 | interrupt-parent = <&PIC>; | ||
150 | fsl,cpm-brg = <1>; | ||
151 | fsl,cpm-command = <00800000>; | ||
152 | }; | ||
153 | |||
154 | serial@11a20 { | ||
155 | device_type = "serial"; | ||
156 | compatible = "fsl,mpc8280-scc-uart", | ||
157 | "fsl,cpm2-scc-uart"; | ||
158 | reg = <11a20 20 8100 100>; | ||
159 | interrupts = <29 8>; | ||
160 | interrupt-parent = <&PIC>; | ||
161 | fsl,cpm-brg = <2>; | ||
162 | fsl,cpm-command = <04a00000>; | ||
163 | }; | ||
164 | |||
165 | ethernet@11320 { | ||
166 | device_type = "network"; | ||
167 | compatible = "fsl,mpc8280-fcc-enet", | ||
168 | "fsl,cpm2-fcc-enet"; | ||
169 | reg = <11320 20 8500 100 113b0 1>; | ||
170 | interrupts = <21 8>; | ||
171 | interrupt-parent = <&PIC>; | ||
172 | phy-handle = <&PHY0>; | ||
173 | linux,network-index = <0>; | ||
174 | fsl,cpm-command = <16200300>; | ||
175 | }; | ||
176 | |||
177 | ethernet@11340 { | ||
178 | device_type = "network"; | ||
179 | compatible = "fsl,mpc8280-fcc-enet", | ||
180 | "fsl,cpm2-fcc-enet"; | ||
181 | reg = <11340 20 8600 100 113d0 1>; | ||
182 | interrupts = <22 8>; | ||
183 | interrupt-parent = <&PIC>; | ||
184 | phy-handle = <&PHY1>; | ||
185 | linux,network-index = <1>; | ||
186 | fsl,cpm-command = <1a400300>; | ||
187 | local-mac-address = [00 e0 0c 00 79 01]; | ||
188 | }; | ||
189 | |||
190 | mdio@10d40 { | ||
191 | device_type = "mdio"; | ||
192 | compatible = "fsl,pq2fads-mdio-bitbang", | ||
193 | "fsl,mpc8280-mdio-bitbang", | ||
194 | "fsl,cpm2-mdio-bitbang"; | ||
195 | #address-cells = <1>; | ||
196 | #size-cells = <0>; | ||
197 | reg = <10d40 14>; | ||
198 | fsl,mdio-pin = <9>; | ||
199 | fsl,mdc-pin = <a>; | ||
200 | |||
201 | PHY0: ethernet-phy@0 { | ||
202 | interrupt-parent = <&PIC>; | ||
203 | interrupts = <19 2>; | ||
204 | reg = <0>; | ||
205 | device_type = "ethernet-phy"; | ||
206 | }; | ||
207 | |||
208 | PHY1: ethernet-phy@1 { | ||
209 | interrupt-parent = <&PIC>; | ||
210 | interrupts = <19 2>; | ||
211 | reg = <3>; | ||
212 | device_type = "ethernet-phy"; | ||
213 | }; | ||
214 | }; | ||
215 | |||
216 | usb@11b60 { | ||
217 | #address-cells = <1>; | ||
218 | #size-cells = <0>; | ||
219 | compatible = "fsl,mpc8280-usb", | ||
220 | "fsl,cpm2-usb"; | ||
221 | reg = <11b60 18 8b00 100>; | ||
222 | interrupt-parent = <&PIC>; | ||
223 | interrupts = <b 8>; | ||
224 | fsl,cpm-command = <2e600000>; | ||
225 | }; | ||
226 | }; | ||
227 | |||
228 | PIC: interrupt-controller@10c00 { | ||
229 | #interrupt-cells = <2>; | ||
230 | interrupt-controller; | ||
231 | reg = <10c00 80>; | ||
232 | compatible = "fsl,mpc8280-pic", "fsl,cpm2-pic"; | ||
233 | }; | ||
234 | |||
235 | }; | ||
236 | |||
237 | chosen { | ||
238 | linux,stdout-path = "/soc/cpm/serial@11a00"; | ||
239 | }; | ||
240 | }; | ||
diff --git a/arch/powerpc/boot/dts/prpmc2800.dts b/arch/powerpc/boot/dts/prpmc2800.dts index 5300b50cdc2f..297dfa53fe9e 100644 --- a/arch/powerpc/boot/dts/prpmc2800.dts +++ b/arch/powerpc/boot/dts/prpmc2800.dts | |||
@@ -9,10 +9,6 @@ | |||
9 | * | 9 | * |
10 | * Property values that are labeled as "Default" will be updated by bootwrapper | 10 | * Property values that are labeled as "Default" will be updated by bootwrapper |
11 | * if it can determine the exact PrPMC type. | 11 | * if it can determine the exact PrPMC type. |
12 | * | ||
13 | * To build: | ||
14 | * dtc -I dts -O asm -o prpmc2800.S -b 0 prpmc2800.dts | ||
15 | * dtc -I dts -O dtb -o prpmc2800.dtb -b 0 prpmc2800.dts | ||
16 | */ | 12 | */ |
17 | 13 | ||
18 | / { | 14 | / { |
@@ -47,7 +43,6 @@ | |||
47 | mv64x60@f1000000 { /* Marvell Discovery */ | 43 | mv64x60@f1000000 { /* Marvell Discovery */ |
48 | #address-cells = <1>; | 44 | #address-cells = <1>; |
49 | #size-cells = <1>; | 45 | #size-cells = <1>; |
50 | #interrupt-cells = <1>; | ||
51 | model = "mv64360"; /* Default */ | 46 | model = "mv64360"; /* Default */ |
52 | compatible = "marvell,mv64x60"; | 47 | compatible = "marvell,mv64x60"; |
53 | clock-frequency = <7f28155>; /* 133.333333 MHz */ | 48 | clock-frequency = <7f28155>; /* 133.333333 MHz */ |
diff --git a/arch/powerpc/boot/dts/sequoia.dts b/arch/powerpc/boot/dts/sequoia.dts new file mode 100644 index 000000000000..36be75b04de1 --- /dev/null +++ b/arch/powerpc/boot/dts/sequoia.dts | |||
@@ -0,0 +1,302 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Sequoia | ||
3 | * | ||
4 | * Based on Bamboo code by Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
5 | * Copyright (c) 2006, 2007 IBM Corp. | ||
6 | * | ||
7 | * FIXME: Draft only! | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without | ||
11 | * any warranty of any kind, whether express or implied. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | / { | ||
16 | #address-cells = <2>; | ||
17 | #size-cells = <1>; | ||
18 | model = "amcc,sequoia"; | ||
19 | compatible = "amcc,sequoia"; | ||
20 | dcr-parent = <&/cpus/PowerPC,440EPx@0>; | ||
21 | |||
22 | cpus { | ||
23 | #address-cells = <1>; | ||
24 | #size-cells = <0>; | ||
25 | |||
26 | PowerPC,440EPx@0 { | ||
27 | device_type = "cpu"; | ||
28 | reg = <0>; | ||
29 | clock-frequency = <0>; /* Filled in by zImage */ | ||
30 | timebase-frequency = <0>; /* Filled in by zImage */ | ||
31 | i-cache-line-size = <20>; | ||
32 | d-cache-line-size = <20>; | ||
33 | i-cache-size = <8000>; | ||
34 | d-cache-size = <8000>; | ||
35 | dcr-controller; | ||
36 | dcr-access-method = "native"; | ||
37 | }; | ||
38 | }; | ||
39 | |||
40 | memory { | ||
41 | device_type = "memory"; | ||
42 | reg = <0 0 0>; /* Filled in by zImage */ | ||
43 | }; | ||
44 | |||
45 | UIC0: interrupt-controller0 { | ||
46 | compatible = "ibm,uic-440epx","ibm,uic"; | ||
47 | interrupt-controller; | ||
48 | cell-index = <0>; | ||
49 | dcr-reg = <0c0 009>; | ||
50 | #address-cells = <0>; | ||
51 | #size-cells = <0>; | ||
52 | #interrupt-cells = <2>; | ||
53 | }; | ||
54 | |||
55 | UIC1: interrupt-controller1 { | ||
56 | compatible = "ibm,uic-440epx","ibm,uic"; | ||
57 | interrupt-controller; | ||
58 | cell-index = <1>; | ||
59 | dcr-reg = <0d0 009>; | ||
60 | #address-cells = <0>; | ||
61 | #size-cells = <0>; | ||
62 | #interrupt-cells = <2>; | ||
63 | interrupts = <1e 4 1f 4>; /* cascade */ | ||
64 | interrupt-parent = <&UIC0>; | ||
65 | }; | ||
66 | |||
67 | UIC2: interrupt-controller2 { | ||
68 | compatible = "ibm,uic-440epx","ibm,uic"; | ||
69 | interrupt-controller; | ||
70 | cell-index = <2>; | ||
71 | dcr-reg = <0e0 009>; | ||
72 | #address-cells = <0>; | ||
73 | #size-cells = <0>; | ||
74 | #interrupt-cells = <2>; | ||
75 | interrupts = <1c 4 1d 4>; /* cascade */ | ||
76 | interrupt-parent = <&UIC0>; | ||
77 | }; | ||
78 | |||
79 | SDR0: sdr { | ||
80 | compatible = "ibm,sdr-440epx", "ibm,sdr-440ep"; | ||
81 | dcr-reg = <00e 002>; | ||
82 | }; | ||
83 | |||
84 | CPR0: cpr { | ||
85 | compatible = "ibm,cpr-440epx", "ibm,cpr-440ep"; | ||
86 | dcr-reg = <00c 002>; | ||
87 | }; | ||
88 | |||
89 | plb { | ||
90 | compatible = "ibm,plb-440epx", "ibm,plb4"; | ||
91 | #address-cells = <2>; | ||
92 | #size-cells = <1>; | ||
93 | ranges; | ||
94 | clock-frequency = <0>; /* Filled in by zImage */ | ||
95 | |||
96 | SDRAM0: sdram { | ||
97 | device_type = "memory-controller"; | ||
98 | compatible = "ibm,sdram-440epx", "ibm,sdram-44x-ddr2denali"; | ||
99 | dcr-reg = <010 2>; | ||
100 | }; | ||
101 | |||
102 | DMA0: dma { | ||
103 | compatible = "ibm,dma-440epx", "ibm,dma-4xx"; | ||
104 | dcr-reg = <100 027>; | ||
105 | }; | ||
106 | |||
107 | MAL0: mcmal { | ||
108 | compatible = "ibm,mcmal-440epx", "ibm,mcmal2"; | ||
109 | dcr-reg = <180 62>; | ||
110 | num-tx-chans = <2>; | ||
111 | num-rx-chans = <2>; | ||
112 | interrupt-parent = <&MAL0>; | ||
113 | interrupts = <0 1 2 3 4>; | ||
114 | #interrupt-cells = <1>; | ||
115 | #address-cells = <0>; | ||
116 | #size-cells = <0>; | ||
117 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 | ||
118 | /*RXEOB*/ 1 &UIC0 b 4 | ||
119 | /*SERR*/ 2 &UIC1 0 4 | ||
120 | /*TXDE*/ 3 &UIC1 1 4 | ||
121 | /*RXDE*/ 4 &UIC1 2 4>; | ||
122 | interrupt-map-mask = <ffffffff>; | ||
123 | }; | ||
124 | |||
125 | POB0: opb { | ||
126 | compatible = "ibm,opb-440epx", "ibm,opb"; | ||
127 | #address-cells = <1>; | ||
128 | #size-cells = <1>; | ||
129 | ranges = <00000000 1 00000000 80000000 | ||
130 | 80000000 1 80000000 80000000>; | ||
131 | interrupt-parent = <&UIC1>; | ||
132 | interrupts = <7 4>; | ||
133 | clock-frequency = <0>; /* Filled in by zImage */ | ||
134 | |||
135 | EBC0: ebc { | ||
136 | compatible = "ibm,ebc-440epx", "ibm,ebc"; | ||
137 | dcr-reg = <012 2>; | ||
138 | #address-cells = <2>; | ||
139 | #size-cells = <1>; | ||
140 | clock-frequency = <0>; /* Filled in by zImage */ | ||
141 | interrupts = <5 1>; | ||
142 | interrupt-parent = <&UIC1>; | ||
143 | |||
144 | nor_flash@0,0 { | ||
145 | compatible = "amd,s29gl256n", "cfi-flash"; | ||
146 | bank-width = <2>; | ||
147 | reg = <0 000000 4000000>; | ||
148 | #address-cells = <1>; | ||
149 | #size-cells = <1>; | ||
150 | partition@0 { | ||
151 | label = "Kernel"; | ||
152 | reg = <0 180000>; | ||
153 | }; | ||
154 | partition@180000 { | ||
155 | label = "ramdisk"; | ||
156 | reg = <180000 200000>; | ||
157 | }; | ||
158 | partition@380000 { | ||
159 | label = "file system"; | ||
160 | reg = <380000 3aa0000>; | ||
161 | }; | ||
162 | partition@3e20000 { | ||
163 | label = "kozio"; | ||
164 | reg = <3e20000 140000>; | ||
165 | }; | ||
166 | partition@3f60000 { | ||
167 | label = "env"; | ||
168 | reg = <3f60000 40000>; | ||
169 | }; | ||
170 | partition@3fa0000 { | ||
171 | label = "u-boot"; | ||
172 | reg = <3fa0000 60000>; | ||
173 | }; | ||
174 | }; | ||
175 | |||
176 | }; | ||
177 | |||
178 | UART0: serial@ef600300 { | ||
179 | device_type = "serial"; | ||
180 | compatible = "ns16550"; | ||
181 | reg = <ef600300 8>; | ||
182 | virtual-reg = <ef600300>; | ||
183 | clock-frequency = <0>; /* Filled in by zImage */ | ||
184 | current-speed = <1c200>; | ||
185 | interrupt-parent = <&UIC0>; | ||
186 | interrupts = <0 4>; | ||
187 | }; | ||
188 | |||
189 | UART1: serial@ef600400 { | ||
190 | device_type = "serial"; | ||
191 | compatible = "ns16550"; | ||
192 | reg = <ef600400 8>; | ||
193 | virtual-reg = <ef600400>; | ||
194 | clock-frequency = <0>; | ||
195 | current-speed = <0>; | ||
196 | interrupt-parent = <&UIC0>; | ||
197 | interrupts = <1 4>; | ||
198 | }; | ||
199 | |||
200 | UART2: serial@ef600500 { | ||
201 | device_type = "serial"; | ||
202 | compatible = "ns16550"; | ||
203 | reg = <ef600500 8>; | ||
204 | virtual-reg = <ef600500>; | ||
205 | clock-frequency = <0>; | ||
206 | current-speed = <0>; | ||
207 | interrupt-parent = <&UIC1>; | ||
208 | interrupts = <3 4>; | ||
209 | }; | ||
210 | |||
211 | UART3: serial@ef600600 { | ||
212 | device_type = "serial"; | ||
213 | compatible = "ns16550"; | ||
214 | reg = <ef600600 8>; | ||
215 | virtual-reg = <ef600600>; | ||
216 | clock-frequency = <0>; | ||
217 | current-speed = <0>; | ||
218 | interrupt-parent = <&UIC1>; | ||
219 | interrupts = <4 4>; | ||
220 | }; | ||
221 | |||
222 | IIC0: i2c@ef600700 { | ||
223 | device_type = "i2c"; | ||
224 | compatible = "ibm,iic-440epx", "ibm,iic"; | ||
225 | reg = <ef600700 14>; | ||
226 | interrupt-parent = <&UIC0>; | ||
227 | interrupts = <2 4>; | ||
228 | }; | ||
229 | |||
230 | IIC1: i2c@ef600800 { | ||
231 | device_type = "i2c"; | ||
232 | compatible = "ibm,iic-440epx", "ibm,iic"; | ||
233 | reg = <ef600800 14>; | ||
234 | interrupt-parent = <&UIC0>; | ||
235 | interrupts = <7 4>; | ||
236 | }; | ||
237 | |||
238 | ZMII0: emac-zmii@ef600d00 { | ||
239 | device_type = "zmii-interface"; | ||
240 | compatible = "ibm,zmii-440epx", "ibm,zmii"; | ||
241 | reg = <ef600d00 c>; | ||
242 | }; | ||
243 | |||
244 | EMAC0: ethernet@ef600e00 { | ||
245 | linux,network-index = <0>; | ||
246 | device_type = "network"; | ||
247 | compatible = "ibm,emac-440epx", "ibm,emac4"; | ||
248 | interrupt-parent = <&EMAC0>; | ||
249 | interrupts = <0 1>; | ||
250 | #interrupt-cells = <1>; | ||
251 | #address-cells = <0>; | ||
252 | #size-cells = <0>; | ||
253 | interrupt-map = </*Status*/ 0 &UIC0 18 4 | ||
254 | /*Wake*/ 1 &UIC1 1d 4>; | ||
255 | reg = <ef600e00 70>; | ||
256 | local-mac-address = [000000000000]; | ||
257 | mal-device = <&MAL0>; | ||
258 | mal-tx-channel = <0>; | ||
259 | mal-rx-channel = <0>; | ||
260 | cell-index = <0>; | ||
261 | max-frame-size = <5dc>; | ||
262 | rx-fifo-size = <1000>; | ||
263 | tx-fifo-size = <800>; | ||
264 | phy-mode = "rmii"; | ||
265 | phy-map = <00000000>; | ||
266 | zmii-device = <&ZMII0>; | ||
267 | zmii-channel = <0>; | ||
268 | }; | ||
269 | |||
270 | EMAC1: ethernet@ef600f00 { | ||
271 | linux,network-index = <1>; | ||
272 | device_type = "network"; | ||
273 | compatible = "ibm,emac-440epx", "ibm,emac4"; | ||
274 | interrupt-parent = <&EMAC1>; | ||
275 | interrupts = <0 1>; | ||
276 | #interrupt-cells = <1>; | ||
277 | #address-cells = <0>; | ||
278 | #size-cells = <0>; | ||
279 | interrupt-map = </*Status*/ 0 &UIC0 19 4 | ||
280 | /*Wake*/ 1 &UIC1 1f 4>; | ||
281 | reg = <ef600f00 70>; | ||
282 | local-mac-address = [000000000000]; | ||
283 | mal-device = <&MAL0>; | ||
284 | mal-tx-channel = <1>; | ||
285 | mal-rx-channel = <1>; | ||
286 | cell-index = <1>; | ||
287 | max-frame-size = <5dc>; | ||
288 | rx-fifo-size = <1000>; | ||
289 | tx-fifo-size = <800>; | ||
290 | phy-mode = "rmii"; | ||
291 | phy-map = <00000000>; | ||
292 | zmii-device = <&ZMII0>; | ||
293 | zmii-channel = <1>; | ||
294 | }; | ||
295 | }; | ||
296 | }; | ||
297 | |||
298 | chosen { | ||
299 | linux,stdout-path = "/plb/opb/serial@ef600300"; | ||
300 | bootargs = "console=ttyS0,115200"; | ||
301 | }; | ||
302 | }; | ||
diff --git a/arch/powerpc/boot/dts/walnut.dts b/arch/powerpc/boot/dts/walnut.dts new file mode 100644 index 000000000000..ec54f4e04ad6 --- /dev/null +++ b/arch/powerpc/boot/dts/walnut.dts | |||
@@ -0,0 +1,190 @@ | |||
1 | /* | ||
2 | * Device Tree Source for IBM Walnut | ||
3 | * | ||
4 | * Copyright 2007 IBM Corp. | ||
5 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public | ||
8 | * License version 2. This program is licensed "as is" without | ||
9 | * any warranty of any kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | / { | ||
13 | #address-cells = <1>; | ||
14 | #size-cells = <1>; | ||
15 | model = "ibm,walnut"; | ||
16 | compatible = "ibm,walnut"; | ||
17 | dcr-parent = <&/cpus/PowerPC,405GP@0>; | ||
18 | |||
19 | cpus { | ||
20 | #address-cells = <1>; | ||
21 | #size-cells = <0>; | ||
22 | |||
23 | PowerPC,405GP@0 { | ||
24 | device_type = "cpu"; | ||
25 | reg = <0>; | ||
26 | clock-frequency = <bebc200>; /* Filled in by zImage */ | ||
27 | timebase-frequency = <0>; /* Filled in by zImage */ | ||
28 | i-cache-line-size = <20>; | ||
29 | d-cache-line-size = <20>; | ||
30 | i-cache-size = <4000>; | ||
31 | d-cache-size = <4000>; | ||
32 | dcr-controller; | ||
33 | dcr-access-method = "native"; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | memory { | ||
38 | device_type = "memory"; | ||
39 | reg = <0 0>; /* Filled in by zImage */ | ||
40 | }; | ||
41 | |||
42 | UIC0: interrupt-controller { | ||
43 | compatible = "ibm,uic"; | ||
44 | interrupt-controller; | ||
45 | cell-index = <0>; | ||
46 | dcr-reg = <0c0 9>; | ||
47 | #address-cells = <0>; | ||
48 | #size-cells = <0>; | ||
49 | #interrupt-cells = <2>; | ||
50 | }; | ||
51 | |||
52 | plb { | ||
53 | compatible = "ibm,plb3"; | ||
54 | #address-cells = <1>; | ||
55 | #size-cells = <1>; | ||
56 | ranges; | ||
57 | clock-frequency = <0>; /* Filled in by zImage */ | ||
58 | |||
59 | SDRAM0: memory-controller { | ||
60 | compatible = "ibm,sdram-405gp"; | ||
61 | dcr-reg = <010 2>; | ||
62 | }; | ||
63 | |||
64 | MAL: mcmal { | ||
65 | compatible = "ibm,mcmal-405gp", "ibm,mcmal"; | ||
66 | dcr-reg = <180 62>; | ||
67 | num-tx-chans = <2>; | ||
68 | num-rx-chans = <1>; | ||
69 | interrupt-parent = <&UIC0>; | ||
70 | interrupts = <a 4 b 4 c 4 d 4 e 4>; | ||
71 | }; | ||
72 | |||
73 | POB0: opb { | ||
74 | compatible = "ibm,opb-405gp", "ibm,opb"; | ||
75 | #address-cells = <1>; | ||
76 | #size-cells = <1>; | ||
77 | ranges = <ef600000 ef600000 a00000>; | ||
78 | dcr-reg = <0a0 5>; | ||
79 | clock-frequency = <0>; /* Filled in by zImage */ | ||
80 | |||
81 | UART0: serial@ef600300 { | ||
82 | device_type = "serial"; | ||
83 | compatible = "ns16550"; | ||
84 | reg = <ef600300 8>; | ||
85 | virtual-reg = <ef600300>; | ||
86 | clock-frequency = <0>; /* Filled in by zImage */ | ||
87 | current-speed = <2580>; | ||
88 | interrupt-parent = <&UIC0>; | ||
89 | interrupts = <0 4>; | ||
90 | }; | ||
91 | |||
92 | UART1: serial@ef600400 { | ||
93 | device_type = "serial"; | ||
94 | compatible = "ns16550"; | ||
95 | reg = <ef600400 8>; | ||
96 | virtual-reg = <ef600400>; | ||
97 | clock-frequency = <0>; /* Filled in by zImage */ | ||
98 | current-speed = <2580>; | ||
99 | interrupt-parent = <&UIC0>; | ||
100 | interrupts = <1 4>; | ||
101 | }; | ||
102 | |||
103 | IIC: i2c@ef600500 { | ||
104 | compatible = "ibm,iic-405gp", "ibm,iic"; | ||
105 | reg = <ef600500 11>; | ||
106 | interrupt-parent = <&UIC0>; | ||
107 | interrupts = <2 4>; | ||
108 | }; | ||
109 | |||
110 | GPIO: gpio@ef600700 { | ||
111 | compatible = "ibm,gpio-405gp"; | ||
112 | reg = <ef600700 20>; | ||
113 | }; | ||
114 | |||
115 | EMAC: ethernet@ef600800 { | ||
116 | linux,network-index = <0>; | ||
117 | device_type = "network"; | ||
118 | compatible = "ibm,emac-405gp", "ibm,emac"; | ||
119 | interrupt-parent = <&UIC0>; | ||
120 | interrupts = <9 4 f 4>; | ||
121 | reg = <ef600800 70>; | ||
122 | mal-device = <&MAL>; | ||
123 | mal-tx-channel = <0 1>; | ||
124 | mal-rx-channel = <0>; | ||
125 | cell-index = <0>; | ||
126 | max-frame-size = <5dc>; | ||
127 | rx-fifo-size = <1000>; | ||
128 | tx-fifo-size = <800>; | ||
129 | phy-mode = "rmii"; | ||
130 | phy-map = <00000001>; | ||
131 | }; | ||
132 | |||
133 | }; | ||
134 | |||
135 | EBC0: ebc { | ||
136 | compatible = "ibm,ebc-405gp", "ibm,ebc"; | ||
137 | dcr-reg = <012 2>; | ||
138 | #address-cells = <2>; | ||
139 | #size-cells = <1>; | ||
140 | /* The ranges property is supplied by the bootwrapper | ||
141 | * and is based on the firmware's configuration of the | ||
142 | * EBC bridge | ||
143 | */ | ||
144 | clock-frequency = <0>; /* Filled in by zImage */ | ||
145 | |||
146 | sram@0,0 { | ||
147 | reg = <0 0 80000>; | ||
148 | }; | ||
149 | |||
150 | flash@0,80000 { | ||
151 | compatible = "jedec-flash"; | ||
152 | bank-width = <1>; | ||
153 | reg = <0 80000 80000>; | ||
154 | #address-cells = <1>; | ||
155 | #size-cells = <1>; | ||
156 | partition@0 { | ||
157 | label = "OpenBIOS"; | ||
158 | reg = <0 80000>; | ||
159 | read-only; | ||
160 | }; | ||
161 | }; | ||
162 | |||
163 | ds1743@1,0 { | ||
164 | /* NVRAM and RTC */ | ||
165 | compatible = "ds1743"; | ||
166 | reg = <1 0 2000>; | ||
167 | }; | ||
168 | |||
169 | keyboard@2,0 { | ||
170 | compatible = "intel,82C42PC"; | ||
171 | reg = <2 0 2>; | ||
172 | }; | ||
173 | |||
174 | ir@3,0 { | ||
175 | compatible = "ti,TIR2000PAG"; | ||
176 | reg = <3 0 10>; | ||
177 | }; | ||
178 | |||
179 | fpga@7,0 { | ||
180 | compatible = "Walnut-FPGA"; | ||
181 | reg = <7 0 10>; | ||
182 | virtual-reg = <f0300005>; | ||
183 | }; | ||
184 | }; | ||
185 | }; | ||
186 | |||
187 | chosen { | ||
188 | linux,stdout-path = "/plb/opb/serial@ef600300"; | ||
189 | }; | ||
190 | }; | ||
diff --git a/arch/powerpc/boot/ebony.c b/arch/powerpc/boot/ebony.c index 75daedafd0a4..86c0f5df0a86 100644 --- a/arch/powerpc/boot/ebony.c +++ b/arch/powerpc/boot/ebony.c | |||
@@ -24,12 +24,11 @@ | |||
24 | #include "page.h" | 24 | #include "page.h" |
25 | #include "ops.h" | 25 | #include "ops.h" |
26 | #include "reg.h" | 26 | #include "reg.h" |
27 | #include "io.h" | ||
27 | #include "dcr.h" | 28 | #include "dcr.h" |
29 | #include "4xx.h" | ||
28 | #include "44x.h" | 30 | #include "44x.h" |
29 | 31 | ||
30 | extern char _dtb_start[]; | ||
31 | extern char _dtb_end[]; | ||
32 | |||
33 | static u8 *ebony_mac0, *ebony_mac1; | 32 | static u8 *ebony_mac0, *ebony_mac1; |
34 | 33 | ||
35 | /* Calculate 440GP clocks */ | 34 | /* Calculate 440GP clocks */ |
@@ -92,15 +91,53 @@ void ibm440gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk) | |||
92 | dt_fixup_clock("/plb/opb/serial@40000300", uart1); | 91 | dt_fixup_clock("/plb/opb/serial@40000300", uart1); |
93 | } | 92 | } |
94 | 93 | ||
94 | #define EBONY_FPGA_PATH "/plb/opb/ebc/fpga" | ||
95 | #define EBONY_FPGA_FLASH_SEL 0x01 | ||
96 | #define EBONY_SMALL_FLASH_PATH "/plb/opb/ebc/small-flash" | ||
97 | |||
98 | static void ebony_flashsel_fixup(void) | ||
99 | { | ||
100 | void *devp; | ||
101 | u32 reg[3] = {0x0, 0x0, 0x80000}; | ||
102 | u8 *fpga; | ||
103 | u8 fpga_reg0 = 0x0; | ||
104 | |||
105 | devp = finddevice(EBONY_FPGA_PATH); | ||
106 | if (!devp) | ||
107 | fatal("Couldn't locate FPGA node %s\n\r", EBONY_FPGA_PATH); | ||
108 | |||
109 | if (getprop(devp, "virtual-reg", &fpga, sizeof(fpga)) != sizeof(fpga)) | ||
110 | fatal("%s has missing or invalid virtual-reg property\n\r", | ||
111 | EBONY_FPGA_PATH); | ||
112 | |||
113 | fpga_reg0 = in_8(fpga); | ||
114 | |||
115 | devp = finddevice(EBONY_SMALL_FLASH_PATH); | ||
116 | if (!devp) | ||
117 | fatal("Couldn't locate small flash node %s\n\r", | ||
118 | EBONY_SMALL_FLASH_PATH); | ||
119 | |||
120 | if (getprop(devp, "reg", reg, sizeof(reg)) != sizeof(reg)) | ||
121 | fatal("%s has reg property of unexpected size\n\r", | ||
122 | EBONY_SMALL_FLASH_PATH); | ||
123 | |||
124 | /* Invert address bit 14 (IBM-endian) if FLASH_SEL fpga bit is set */ | ||
125 | if (fpga_reg0 & EBONY_FPGA_FLASH_SEL) | ||
126 | reg[1] ^= 0x80000; | ||
127 | |||
128 | setprop(devp, "reg", reg, sizeof(reg)); | ||
129 | } | ||
130 | |||
95 | static void ebony_fixups(void) | 131 | static void ebony_fixups(void) |
96 | { | 132 | { |
97 | // FIXME: sysclk should be derived by reading the FPGA registers | 133 | // FIXME: sysclk should be derived by reading the FPGA registers |
98 | unsigned long sysclk = 33000000; | 134 | unsigned long sysclk = 33000000; |
99 | 135 | ||
100 | ibm440gp_fixup_clocks(sysclk, 6 * 1843200); | 136 | ibm440gp_fixup_clocks(sysclk, 6 * 1843200); |
101 | ibm44x_fixup_memsize(); | 137 | ibm4xx_fixup_memsize(); |
102 | dt_fixup_mac_addresses(ebony_mac0, ebony_mac1); | 138 | dt_fixup_mac_addresses(ebony_mac0, ebony_mac1); |
103 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); | 139 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
140 | ebony_flashsel_fixup(); | ||
104 | } | 141 | } |
105 | 142 | ||
106 | void ebony_init(void *mac0, void *mac1) | 143 | void ebony_init(void *mac0, void *mac1) |
diff --git a/arch/powerpc/boot/ep88xc.c b/arch/powerpc/boot/ep88xc.c new file mode 100644 index 000000000000..6b87cdce3fe7 --- /dev/null +++ b/arch/powerpc/boot/ep88xc.c | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * Embedded Planet EP88xC with PlanetCore firmware | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "ops.h" | ||
14 | #include "stdio.h" | ||
15 | #include "planetcore.h" | ||
16 | #include "mpc8xx.h" | ||
17 | |||
18 | static char *table; | ||
19 | static u64 mem_size; | ||
20 | |||
21 | static void platform_fixups(void) | ||
22 | { | ||
23 | u64 val; | ||
24 | |||
25 | dt_fixup_memory(0, mem_size); | ||
26 | planetcore_set_mac_addrs(table); | ||
27 | |||
28 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) { | ||
29 | printf("No PlanetCore crystal frequency key.\r\n"); | ||
30 | return; | ||
31 | } | ||
32 | |||
33 | mpc885_fixup_clocks(val); | ||
34 | } | ||
35 | |||
36 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
37 | unsigned long r6, unsigned long r7) | ||
38 | { | ||
39 | table = (char *)r3; | ||
40 | planetcore_prepare_table(table); | ||
41 | |||
42 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size)) | ||
43 | return; | ||
44 | |||
45 | mem_size *= 1024 * 1024; | ||
46 | simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64); | ||
47 | |||
48 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | ||
49 | |||
50 | planetcore_set_stdout_path(table); | ||
51 | |||
52 | serial_console_init(); | ||
53 | platform_ops.fixups = platform_fixups; | ||
54 | } | ||
diff --git a/arch/powerpc/boot/fixed-head.S b/arch/powerpc/boot/fixed-head.S new file mode 100644 index 000000000000..8e14cd9e1a54 --- /dev/null +++ b/arch/powerpc/boot/fixed-head.S | |||
@@ -0,0 +1,4 @@ | |||
1 | .text | ||
2 | .global _zimage_start | ||
3 | _zimage_start: | ||
4 | b _zimage_start_lib | ||
diff --git a/arch/powerpc/boot/flatdevtree.c b/arch/powerpc/boot/flatdevtree.c index 13761bf160c4..cf30675c6116 100644 --- a/arch/powerpc/boot/flatdevtree.c +++ b/arch/powerpc/boot/flatdevtree.c | |||
@@ -354,16 +354,21 @@ static void ft_put_bin(struct ft_cxt *cxt, const void *data, unsigned int sz) | |||
354 | cxt->p += sza; | 354 | cxt->p += sza; |
355 | } | 355 | } |
356 | 356 | ||
357 | int ft_begin_node(struct ft_cxt *cxt, const char *name) | 357 | char *ft_begin_node(struct ft_cxt *cxt, const char *name) |
358 | { | 358 | { |
359 | unsigned long nlen = strlen(name) + 1; | 359 | unsigned long nlen = strlen(name) + 1; |
360 | unsigned long len = 8 + _ALIGN(nlen, 4); | 360 | unsigned long len = 8 + _ALIGN(nlen, 4); |
361 | char *ret; | ||
361 | 362 | ||
362 | if (!ft_make_space(cxt, &cxt->p, FT_STRUCT, len)) | 363 | if (!ft_make_space(cxt, &cxt->p, FT_STRUCT, len)) |
363 | return -1; | 364 | return NULL; |
365 | |||
366 | ret = cxt->p; | ||
367 | |||
364 | ft_put_word(cxt, OF_DT_BEGIN_NODE); | 368 | ft_put_word(cxt, OF_DT_BEGIN_NODE); |
365 | ft_put_bin(cxt, name, strlen(name) + 1); | 369 | ft_put_bin(cxt, name, strlen(name) + 1); |
366 | return 0; | 370 | |
371 | return ret; | ||
367 | } | 372 | } |
368 | 373 | ||
369 | void ft_end_node(struct ft_cxt *cxt) | 374 | void ft_end_node(struct ft_cxt *cxt) |
@@ -625,25 +630,17 @@ void ft_end_tree(struct ft_cxt *cxt) | |||
625 | bph->dt_strings_size = cpu_to_be32(ssize); | 630 | bph->dt_strings_size = cpu_to_be32(ssize); |
626 | } | 631 | } |
627 | 632 | ||
628 | void *ft_find_device(struct ft_cxt *cxt, const char *srch_path) | 633 | void *ft_find_device(struct ft_cxt *cxt, const void *top, const char *srch_path) |
629 | { | ||
630 | char *node; | ||
631 | |||
632 | /* require absolute path */ | ||
633 | if (srch_path[0] != '/') | ||
634 | return NULL; | ||
635 | node = ft_find_descendent(cxt, ft_root_node(cxt), srch_path); | ||
636 | return ft_get_phandle(cxt, node); | ||
637 | } | ||
638 | |||
639 | void *ft_find_device_rel(struct ft_cxt *cxt, const void *top, | ||
640 | const char *srch_path) | ||
641 | { | 634 | { |
642 | char *node; | 635 | char *node; |
643 | 636 | ||
644 | node = ft_node_ph2node(cxt, top); | 637 | if (top) { |
645 | if (node == NULL) | 638 | node = ft_node_ph2node(cxt, top); |
646 | return NULL; | 639 | if (node == NULL) |
640 | return NULL; | ||
641 | } else { | ||
642 | node = ft_root_node(cxt); | ||
643 | } | ||
647 | 644 | ||
648 | node = ft_find_descendent(cxt, node, srch_path); | 645 | node = ft_find_descendent(cxt, node, srch_path); |
649 | return ft_get_phandle(cxt, node); | 646 | return ft_get_phandle(cxt, node); |
@@ -945,7 +942,7 @@ int ft_del_prop(struct ft_cxt *cxt, const void *phandle, const char *propname) | |||
945 | void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name) | 942 | void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name) |
946 | { | 943 | { |
947 | struct ft_atom atom; | 944 | struct ft_atom atom; |
948 | char *p, *next; | 945 | char *p, *next, *ret; |
949 | int depth = 0; | 946 | int depth = 0; |
950 | 947 | ||
951 | if (parent) { | 948 | if (parent) { |
@@ -970,11 +967,70 @@ void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name) | |||
970 | break; | 967 | break; |
971 | /* end of node, insert here */ | 968 | /* end of node, insert here */ |
972 | cxt->p = p; | 969 | cxt->p = p; |
973 | ft_begin_node(cxt, name); | 970 | ret = ft_begin_node(cxt, name); |
974 | ft_end_node(cxt); | 971 | ft_end_node(cxt); |
975 | return p; | 972 | return ft_get_phandle(cxt, ret); |
976 | } | 973 | } |
977 | p = next; | 974 | p = next; |
978 | } | 975 | } |
979 | return NULL; | 976 | return NULL; |
980 | } | 977 | } |
978 | |||
979 | /* Returns the start of the path within the provided buffer, or NULL on | ||
980 | * error. | ||
981 | */ | ||
982 | char *ft_get_path(struct ft_cxt *cxt, const void *phandle, | ||
983 | char *buf, int len) | ||
984 | { | ||
985 | const char *path_comp[FT_MAX_DEPTH]; | ||
986 | struct ft_atom atom; | ||
987 | char *p, *next, *pos; | ||
988 | int depth = 0, i; | ||
989 | void *node; | ||
990 | |||
991 | node = ft_node_ph2node(cxt, phandle); | ||
992 | if (node == NULL) | ||
993 | return NULL; | ||
994 | |||
995 | p = ft_root_node(cxt); | ||
996 | |||
997 | while ((next = ft_next(cxt, p, &atom)) != NULL) { | ||
998 | switch (atom.tag) { | ||
999 | case OF_DT_BEGIN_NODE: | ||
1000 | path_comp[depth++] = atom.name; | ||
1001 | if (p == node) | ||
1002 | goto found; | ||
1003 | |||
1004 | break; | ||
1005 | |||
1006 | case OF_DT_END_NODE: | ||
1007 | if (--depth == 0) | ||
1008 | return NULL; | ||
1009 | } | ||
1010 | |||
1011 | p = next; | ||
1012 | } | ||
1013 | |||
1014 | found: | ||
1015 | pos = buf; | ||
1016 | for (i = 1; i < depth; i++) { | ||
1017 | int this_len; | ||
1018 | |||
1019 | if (len <= 1) | ||
1020 | return NULL; | ||
1021 | |||
1022 | *pos++ = '/'; | ||
1023 | len--; | ||
1024 | |||
1025 | strncpy(pos, path_comp[i], len); | ||
1026 | |||
1027 | if (pos[len - 1] != 0) | ||
1028 | return NULL; | ||
1029 | |||
1030 | this_len = strlen(pos); | ||
1031 | len -= this_len; | ||
1032 | pos += this_len; | ||
1033 | } | ||
1034 | |||
1035 | return buf; | ||
1036 | } | ||
diff --git a/arch/powerpc/boot/flatdevtree.h b/arch/powerpc/boot/flatdevtree.h index cb26325d72db..b0957a2d967f 100644 --- a/arch/powerpc/boot/flatdevtree.h +++ b/arch/powerpc/boot/flatdevtree.h | |||
@@ -76,7 +76,7 @@ struct ft_cxt { | |||
76 | unsigned int nodes_used; | 76 | unsigned int nodes_used; |
77 | }; | 77 | }; |
78 | 78 | ||
79 | int ft_begin_node(struct ft_cxt *cxt, const char *name); | 79 | char *ft_begin_node(struct ft_cxt *cxt, const char *name); |
80 | void ft_end_node(struct ft_cxt *cxt); | 80 | void ft_end_node(struct ft_cxt *cxt); |
81 | 81 | ||
82 | void ft_begin_tree(struct ft_cxt *cxt); | 82 | void ft_begin_tree(struct ft_cxt *cxt); |
@@ -96,9 +96,8 @@ int ft_add_rsvmap(struct ft_cxt *cxt, u64 physaddr, u64 size); | |||
96 | 96 | ||
97 | void ft_dump_blob(const void *bphp); | 97 | void ft_dump_blob(const void *bphp); |
98 | void ft_merge_blob(struct ft_cxt *cxt, void *blob); | 98 | void ft_merge_blob(struct ft_cxt *cxt, void *blob); |
99 | void *ft_find_device(struct ft_cxt *cxt, const char *srch_path); | 99 | void *ft_find_device(struct ft_cxt *cxt, const void *top, |
100 | void *ft_find_device_rel(struct ft_cxt *cxt, const void *top, | 100 | const char *srch_path); |
101 | const char *srch_path); | ||
102 | void *ft_find_descendent(struct ft_cxt *cxt, void *top, const char *srch_path); | 101 | void *ft_find_descendent(struct ft_cxt *cxt, void *top, const char *srch_path); |
103 | int ft_get_prop(struct ft_cxt *cxt, const void *phandle, const char *propname, | 102 | int ft_get_prop(struct ft_cxt *cxt, const void *phandle, const char *propname, |
104 | void *buf, const unsigned int buflen); | 103 | void *buf, const unsigned int buflen); |
@@ -109,5 +108,6 @@ void *ft_find_node_by_prop_value(struct ft_cxt *cxt, const void *prev, | |||
109 | const char *propname, const char *propval, | 108 | const char *propname, const char *propval, |
110 | int proplen); | 109 | int proplen); |
111 | void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name); | 110 | void *ft_create_node(struct ft_cxt *cxt, const void *parent, const char *name); |
111 | char *ft_get_path(struct ft_cxt *cxt, const void *phandle, char *buf, int len); | ||
112 | 112 | ||
113 | #endif /* FLATDEVTREE_H */ | 113 | #endif /* FLATDEVTREE_H */ |
diff --git a/arch/powerpc/boot/flatdevtree_env.h b/arch/powerpc/boot/flatdevtree_env.h index 83bc1c718836..ad0420da8921 100644 --- a/arch/powerpc/boot/flatdevtree_env.h +++ b/arch/powerpc/boot/flatdevtree_env.h | |||
@@ -24,24 +24,4 @@ | |||
24 | #define be64_to_cpu(x) (x) | 24 | #define be64_to_cpu(x) (x) |
25 | #define cpu_to_be64(x) (x) | 25 | #define cpu_to_be64(x) (x) |
26 | 26 | ||
27 | static inline int strncmp(const char *cs, const char *ct, size_t count) | ||
28 | { | ||
29 | signed char __res = 0; | ||
30 | |||
31 | while (count) { | ||
32 | if ((__res = *cs - *ct++) != 0 || !*cs++) | ||
33 | break; | ||
34 | count--; | ||
35 | } | ||
36 | return __res; | ||
37 | } | ||
38 | |||
39 | static inline char *strchr(const char *s, int c) | ||
40 | { | ||
41 | for (; *s != (char)c; ++s) | ||
42 | if (*s == '\0') | ||
43 | return NULL; | ||
44 | return (char *)s; | ||
45 | } | ||
46 | |||
47 | #endif /* _PPC_BOOT_FLATDEVTREE_ENV_H_ */ | 27 | #endif /* _PPC_BOOT_FLATDEVTREE_ENV_H_ */ |
diff --git a/arch/powerpc/boot/flatdevtree_misc.c b/arch/powerpc/boot/flatdevtree_misc.c index 4341e6558c1a..b3670096fa71 100644 --- a/arch/powerpc/boot/flatdevtree_misc.c +++ b/arch/powerpc/boot/flatdevtree_misc.c | |||
@@ -18,7 +18,7 @@ static struct ft_cxt cxt; | |||
18 | 18 | ||
19 | static void *fdtm_finddevice(const char *name) | 19 | static void *fdtm_finddevice(const char *name) |
20 | { | 20 | { |
21 | return ft_find_device(&cxt, name); | 21 | return ft_find_device(&cxt, NULL, name); |
22 | } | 22 | } |
23 | 23 | ||
24 | static int fdtm_getprop(const void *phandle, const char *propname, | 24 | static int fdtm_getprop(const void *phandle, const char *propname, |
@@ -58,6 +58,11 @@ static unsigned long fdtm_finalize(void) | |||
58 | return (unsigned long)cxt.bph; | 58 | return (unsigned long)cxt.bph; |
59 | } | 59 | } |
60 | 60 | ||
61 | static char *fdtm_get_path(const void *phandle, char *buf, int len) | ||
62 | { | ||
63 | return ft_get_path(&cxt, phandle, buf, len); | ||
64 | } | ||
65 | |||
61 | int ft_init(void *dt_blob, unsigned int max_size, unsigned int max_find_device) | 66 | int ft_init(void *dt_blob, unsigned int max_size, unsigned int max_find_device) |
62 | { | 67 | { |
63 | dt_ops.finddevice = fdtm_finddevice; | 68 | dt_ops.finddevice = fdtm_finddevice; |
@@ -67,6 +72,7 @@ int ft_init(void *dt_blob, unsigned int max_size, unsigned int max_find_device) | |||
67 | dt_ops.create_node = fdtm_create_node; | 72 | dt_ops.create_node = fdtm_create_node; |
68 | dt_ops.find_node_by_prop_value = fdtm_find_node_by_prop_value; | 73 | dt_ops.find_node_by_prop_value = fdtm_find_node_by_prop_value; |
69 | dt_ops.finalize = fdtm_finalize; | 74 | dt_ops.finalize = fdtm_finalize; |
75 | dt_ops.get_path = fdtm_get_path; | ||
70 | 76 | ||
71 | return ft_open(&cxt, dt_blob, max_size, max_find_device, | 77 | return ft_open(&cxt, dt_blob, max_size, max_find_device, |
72 | platform_ops.realloc); | 78 | platform_ops.realloc); |
diff --git a/arch/powerpc/boot/fsl-soc.c b/arch/powerpc/boot/fsl-soc.c new file mode 100644 index 000000000000..b835ed69e1a1 --- /dev/null +++ b/arch/powerpc/boot/fsl-soc.c | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | * Freescale SOC support functions | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "ops.h" | ||
14 | #include "types.h" | ||
15 | #include "fsl-soc.h" | ||
16 | #include "stdio.h" | ||
17 | |||
18 | static u32 prop_buf[MAX_PROP_LEN / 4]; | ||
19 | |||
20 | u32 *fsl_get_immr(void) | ||
21 | { | ||
22 | void *soc; | ||
23 | unsigned long ret = 0; | ||
24 | |||
25 | soc = find_node_by_devtype(NULL, "soc"); | ||
26 | if (soc) { | ||
27 | int size; | ||
28 | u32 naddr; | ||
29 | |||
30 | size = getprop(soc, "#address-cells", prop_buf, MAX_PROP_LEN); | ||
31 | if (size == 4) | ||
32 | naddr = prop_buf[0]; | ||
33 | else | ||
34 | naddr = 2; | ||
35 | |||
36 | if (naddr != 1 && naddr != 2) | ||
37 | goto err; | ||
38 | |||
39 | size = getprop(soc, "ranges", prop_buf, MAX_PROP_LEN); | ||
40 | |||
41 | if (size < 12) | ||
42 | goto err; | ||
43 | if (prop_buf[0] != 0) | ||
44 | goto err; | ||
45 | if (naddr == 2 && prop_buf[1] != 0) | ||
46 | goto err; | ||
47 | |||
48 | if (!dt_xlate_addr(soc, prop_buf + naddr, 8, &ret)) | ||
49 | ret = 0; | ||
50 | } | ||
51 | |||
52 | err: | ||
53 | if (!ret) | ||
54 | printf("fsl_get_immr: Failed to find immr base\r\n"); | ||
55 | |||
56 | return (u32 *)ret; | ||
57 | } | ||
diff --git a/arch/powerpc/boot/fsl-soc.h b/arch/powerpc/boot/fsl-soc.h new file mode 100644 index 000000000000..5da26fc6e3cf --- /dev/null +++ b/arch/powerpc/boot/fsl-soc.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef _PPC_BOOT_FSL_SOC_H_ | ||
2 | #define _PPC_BOOT_FSL_SOC_H_ | ||
3 | |||
4 | #include "types.h" | ||
5 | |||
6 | u32 *fsl_get_immr(void); | ||
7 | |||
8 | #endif | ||
diff --git a/arch/powerpc/boot/gunzip_util.c b/arch/powerpc/boot/gunzip_util.c index df8ab07e9ff4..ef2aed0f63ca 100644 --- a/arch/powerpc/boot/gunzip_util.c +++ b/arch/powerpc/boot/gunzip_util.c | |||
@@ -78,6 +78,7 @@ void gunzip_start(struct gunzip_state *state, void *src, int srclen) | |||
78 | fatal("inflateInit2 returned %d\n\r", r); | 78 | fatal("inflateInit2 returned %d\n\r", r); |
79 | } | 79 | } |
80 | 80 | ||
81 | state->s.total_in = hdrlen; | ||
81 | state->s.next_in = src + hdrlen; | 82 | state->s.next_in = src + hdrlen; |
82 | state->s.avail_in = srclen - hdrlen; | 83 | state->s.avail_in = srclen - hdrlen; |
83 | } | 84 | } |
@@ -193,13 +194,10 @@ int gunzip_finish(struct gunzip_state *state, void *dst, int dstlen) | |||
193 | { | 194 | { |
194 | int len; | 195 | int len; |
195 | 196 | ||
197 | len = gunzip_partial(state, dst, dstlen); | ||
198 | |||
196 | if (state->s.workspace) { | 199 | if (state->s.workspace) { |
197 | len = gunzip_partial(state, dst, dstlen); | ||
198 | zlib_inflateEnd(&state->s); | 200 | zlib_inflateEnd(&state->s); |
199 | } else { | ||
200 | /* uncompressed image */ | ||
201 | len = min(state->s.avail_in, (unsigned)dstlen); | ||
202 | memcpy(dst, state->s.next_in, len); | ||
203 | } | 201 | } |
204 | 202 | ||
205 | return len; | 203 | return len; |
diff --git a/arch/powerpc/boot/holly.c b/arch/powerpc/boot/holly.c index 7d6539f5e22c..199e783aea4d 100644 --- a/arch/powerpc/boot/holly.c +++ b/arch/powerpc/boot/holly.c | |||
@@ -21,11 +21,6 @@ | |||
21 | #include "ops.h" | 21 | #include "ops.h" |
22 | #include "io.h" | 22 | #include "io.h" |
23 | 23 | ||
24 | extern char _start[]; | ||
25 | extern char _end[]; | ||
26 | extern char _dtb_start[]; | ||
27 | extern char _dtb_end[]; | ||
28 | |||
29 | BSS_STACK(4096); | 24 | BSS_STACK(4096); |
30 | 25 | ||
31 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5) | 26 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5) |
diff --git a/arch/powerpc/boot/io.h b/arch/powerpc/boot/io.h index 32974ed49e02..ccaedaec50d5 100644 --- a/arch/powerpc/boot/io.h +++ b/arch/powerpc/boot/io.h | |||
@@ -1,5 +1,8 @@ | |||
1 | #ifndef _IO_H | 1 | #ifndef _IO_H |
2 | #define __IO_H | 2 | #define __IO_H |
3 | |||
4 | #include "types.h" | ||
5 | |||
3 | /* | 6 | /* |
4 | * Low-level I/O routines. | 7 | * Low-level I/O routines. |
5 | * | 8 | * |
@@ -20,6 +23,37 @@ static inline void out_8(volatile unsigned char *addr, int val) | |||
20 | : "=m" (*addr) : "r" (val)); | 23 | : "=m" (*addr) : "r" (val)); |
21 | } | 24 | } |
22 | 25 | ||
26 | static inline unsigned in_le16(const volatile u16 *addr) | ||
27 | { | ||
28 | unsigned ret; | ||
29 | |||
30 | __asm__ __volatile__("lhbrx %0,0,%1; twi 0,%0,0; isync" | ||
31 | : "=r" (ret) : "r" (addr), "m" (*addr)); | ||
32 | |||
33 | return ret; | ||
34 | } | ||
35 | |||
36 | static inline unsigned in_be16(const volatile u16 *addr) | ||
37 | { | ||
38 | unsigned ret; | ||
39 | |||
40 | __asm__ __volatile__("lhz%U1%X1 %0,%1; twi 0,%0,0; isync" | ||
41 | : "=r" (ret) : "m" (*addr)); | ||
42 | return ret; | ||
43 | } | ||
44 | |||
45 | static inline void out_le16(volatile u16 *addr, int val) | ||
46 | { | ||
47 | __asm__ __volatile__("sthbrx %1,0,%2; sync" : "=m" (*addr) | ||
48 | : "r" (val), "r" (addr)); | ||
49 | } | ||
50 | |||
51 | static inline void out_be16(volatile u16 *addr, int val) | ||
52 | { | ||
53 | __asm__ __volatile__("sth%U0%X0 %1,%0; sync" | ||
54 | : "=m" (*addr) : "r" (val)); | ||
55 | } | ||
56 | |||
23 | static inline unsigned in_le32(const volatile unsigned *addr) | 57 | static inline unsigned in_le32(const volatile unsigned *addr) |
24 | { | 58 | { |
25 | unsigned ret; | 59 | unsigned ret; |
@@ -50,4 +84,19 @@ static inline void out_be32(volatile unsigned *addr, int val) | |||
50 | : "=m" (*addr) : "r" (val)); | 84 | : "=m" (*addr) : "r" (val)); |
51 | } | 85 | } |
52 | 86 | ||
87 | static inline void sync(void) | ||
88 | { | ||
89 | asm volatile("sync" : : : "memory"); | ||
90 | } | ||
91 | |||
92 | static inline void eieio(void) | ||
93 | { | ||
94 | asm volatile("eieio" : : : "memory"); | ||
95 | } | ||
96 | |||
97 | static inline void barrier(void) | ||
98 | { | ||
99 | asm volatile("" : : : "memory"); | ||
100 | } | ||
101 | |||
53 | #endif /* _IO_H */ | 102 | #endif /* _IO_H */ |
diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c index 416dc3857bfe..1b496b37eca0 100644 --- a/arch/powerpc/boot/main.c +++ b/arch/powerpc/boot/main.c | |||
@@ -19,16 +19,6 @@ | |||
19 | #include "flatdevtree.h" | 19 | #include "flatdevtree.h" |
20 | #include "reg.h" | 20 | #include "reg.h" |
21 | 21 | ||
22 | extern char _start[]; | ||
23 | extern char __bss_start[]; | ||
24 | extern char _end[]; | ||
25 | extern char _vmlinux_start[]; | ||
26 | extern char _vmlinux_end[]; | ||
27 | extern char _initrd_start[]; | ||
28 | extern char _initrd_end[]; | ||
29 | extern char _dtb_start[]; | ||
30 | extern char _dtb_end[]; | ||
31 | |||
32 | static struct gunzip_state gzstate; | 22 | static struct gunzip_state gzstate; |
33 | 23 | ||
34 | struct addr_range { | 24 | struct addr_range { |
diff --git a/arch/powerpc/boot/mpc52xx-psc.c b/arch/powerpc/boot/mpc52xx-psc.c new file mode 100644 index 000000000000..1074626e6a37 --- /dev/null +++ b/arch/powerpc/boot/mpc52xx-psc.c | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * MPC5200 PSC serial console support. | ||
3 | * | ||
4 | * Author: Grant Likely <grant.likely@secretlab.ca> | ||
5 | * | ||
6 | * Copyright (c) 2007 Secret Lab Technologies Ltd. | ||
7 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
8 | * | ||
9 | * It is assumed that the firmware (or the platform file) has already set | ||
10 | * up the port. | ||
11 | */ | ||
12 | |||
13 | #include "types.h" | ||
14 | #include "io.h" | ||
15 | #include "ops.h" | ||
16 | |||
17 | /* Programmable Serial Controller (PSC) status register bits */ | ||
18 | #define MPC52xx_PSC_SR 0x04 | ||
19 | #define MPC52xx_PSC_SR_RXRDY 0x0100 | ||
20 | #define MPC52xx_PSC_SR_RXFULL 0x0200 | ||
21 | #define MPC52xx_PSC_SR_TXRDY 0x0400 | ||
22 | #define MPC52xx_PSC_SR_TXEMP 0x0800 | ||
23 | |||
24 | #define MPC52xx_PSC_BUFFER 0x0C | ||
25 | |||
26 | static void *psc; | ||
27 | |||
28 | static int psc_open(void) | ||
29 | { | ||
30 | /* Assume the firmware has already configured the PSC into | ||
31 | * uart mode */ | ||
32 | return 0; | ||
33 | } | ||
34 | |||
35 | static void psc_putc(unsigned char c) | ||
36 | { | ||
37 | while (!(in_be16(psc + MPC52xx_PSC_SR) & MPC52xx_PSC_SR_TXRDY)) ; | ||
38 | out_8(psc + MPC52xx_PSC_BUFFER, c); | ||
39 | } | ||
40 | |||
41 | static unsigned char psc_tstc(void) | ||
42 | { | ||
43 | return (in_be16(psc + MPC52xx_PSC_SR) & MPC52xx_PSC_SR_RXRDY) != 0; | ||
44 | } | ||
45 | |||
46 | static unsigned char psc_getc(void) | ||
47 | { | ||
48 | while (!(in_be16(psc + MPC52xx_PSC_SR) & MPC52xx_PSC_SR_RXRDY)) ; | ||
49 | return in_8(psc + MPC52xx_PSC_BUFFER); | ||
50 | } | ||
51 | |||
52 | int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp) | ||
53 | { | ||
54 | int n; | ||
55 | |||
56 | /* Get the base address of the psc registers */ | ||
57 | n = getprop(devp, "virtual-reg", &psc, sizeof(psc)); | ||
58 | if (n != sizeof(psc)) { | ||
59 | if (!dt_xlate_reg(devp, 0, (void *)&psc, NULL)) | ||
60 | return -1; | ||
61 | } | ||
62 | |||
63 | scdp->open = psc_open; | ||
64 | scdp->putc = psc_putc; | ||
65 | scdp->getc = psc_getc; | ||
66 | scdp->tstc = psc_tstc; | ||
67 | |||
68 | return 0; | ||
69 | } | ||
diff --git a/arch/powerpc/boot/mpc8xx.c b/arch/powerpc/boot/mpc8xx.c new file mode 100644 index 000000000000..add55a7f184f --- /dev/null +++ b/arch/powerpc/boot/mpc8xx.c | |||
@@ -0,0 +1,82 @@ | |||
1 | /* | ||
2 | * MPC8xx support functions | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "ops.h" | ||
14 | #include "types.h" | ||
15 | #include "fsl-soc.h" | ||
16 | #include "mpc8xx.h" | ||
17 | #include "stdio.h" | ||
18 | #include "io.h" | ||
19 | |||
20 | #define MPC8XX_PLPRCR (0x284/4) /* PLL and Reset Control Register */ | ||
21 | |||
22 | /* Return system clock from crystal frequency */ | ||
23 | u32 mpc885_get_clock(u32 crystal) | ||
24 | { | ||
25 | u32 *immr; | ||
26 | u32 plprcr; | ||
27 | int mfi, mfn, mfd, pdf, div; | ||
28 | u32 ret; | ||
29 | |||
30 | immr = fsl_get_immr(); | ||
31 | if (!immr) { | ||
32 | printf("mpc885_get_clock: Couldn't get IMMR base.\r\n"); | ||
33 | return 0; | ||
34 | } | ||
35 | |||
36 | plprcr = in_be32(&immr[MPC8XX_PLPRCR]); | ||
37 | |||
38 | mfi = (plprcr >> 16) & 15; | ||
39 | if (mfi < 5) { | ||
40 | printf("Warning: PLPRCR[MFI] value of %d out-of-bounds\r\n", | ||
41 | mfi); | ||
42 | mfi = 5; | ||
43 | } | ||
44 | |||
45 | pdf = (plprcr >> 1) & 0xf; | ||
46 | div = (plprcr >> 20) & 3; | ||
47 | mfd = (plprcr >> 22) & 0x1f; | ||
48 | mfn = (plprcr >> 27) & 0x1f; | ||
49 | |||
50 | ret = crystal * mfi; | ||
51 | |||
52 | if (mfn != 0) | ||
53 | ret += crystal * mfn / (mfd + 1); | ||
54 | |||
55 | return ret / (pdf + 1); | ||
56 | } | ||
57 | |||
58 | /* Set common device tree fields based on the given clock frequencies. */ | ||
59 | void mpc8xx_set_clocks(u32 sysclk) | ||
60 | { | ||
61 | void *node; | ||
62 | |||
63 | dt_fixup_cpu_clocks(sysclk, sysclk / 16, sysclk); | ||
64 | |||
65 | node = finddevice("/soc/cpm"); | ||
66 | if (node) | ||
67 | setprop(node, "clock-frequency", &sysclk, 4); | ||
68 | |||
69 | node = finddevice("/soc/cpm/brg"); | ||
70 | if (node) | ||
71 | setprop(node, "clock-frequency", &sysclk, 4); | ||
72 | } | ||
73 | |||
74 | int mpc885_fixup_clocks(u32 crystal) | ||
75 | { | ||
76 | u32 sysclk = mpc885_get_clock(crystal); | ||
77 | if (!sysclk) | ||
78 | return 0; | ||
79 | |||
80 | mpc8xx_set_clocks(sysclk); | ||
81 | return 1; | ||
82 | } | ||
diff --git a/arch/powerpc/boot/mpc8xx.h b/arch/powerpc/boot/mpc8xx.h new file mode 100644 index 000000000000..3f59901ab1c0 --- /dev/null +++ b/arch/powerpc/boot/mpc8xx.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef _PPC_BOOT_MPC8xx_H_ | ||
2 | #define _PPC_BOOT_MPC8xx_H_ | ||
3 | |||
4 | #include "types.h" | ||
5 | |||
6 | void mpc8xx_set_clocks(u32 sysclk); | ||
7 | |||
8 | u32 mpc885_get_clock(u32 crystal); | ||
9 | int mpc885_fixup_clocks(u32 crystal); | ||
10 | |||
11 | #endif | ||
diff --git a/arch/powerpc/boot/mpsc.c b/arch/powerpc/boot/mpsc.c index f1c0e965e5ce..802ea53790d8 100644 --- a/arch/powerpc/boot/mpsc.c +++ b/arch/powerpc/boot/mpsc.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include "io.h" | 17 | #include "io.h" |
18 | #include "ops.h" | 18 | #include "ops.h" |
19 | 19 | ||
20 | extern void udelay(long delay); | ||
21 | 20 | ||
22 | #define MPSC_CHR_1 0x000c | 21 | #define MPSC_CHR_1 0x000c |
23 | 22 | ||
diff --git a/arch/powerpc/boot/mv64x60_i2c.c b/arch/powerpc/boot/mv64x60_i2c.c index 435fe8528680..d085377be3bc 100644 --- a/arch/powerpc/boot/mv64x60_i2c.c +++ b/arch/powerpc/boot/mv64x60_i2c.c | |||
@@ -21,8 +21,6 @@ | |||
21 | #include "ops.h" | 21 | #include "ops.h" |
22 | #include "mv64x60.h" | 22 | #include "mv64x60.h" |
23 | 23 | ||
24 | extern void udelay(long); | ||
25 | |||
26 | /* Register defines */ | 24 | /* Register defines */ |
27 | #define MV64x60_I2C_REG_SLAVE_ADDR 0x00 | 25 | #define MV64x60_I2C_REG_SLAVE_ADDR 0x00 |
28 | #define MV64x60_I2C_REG_DATA 0x04 | 26 | #define MV64x60_I2C_REG_DATA 0x04 |
diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c index 385e08b83b7e..61d9899aa0d0 100644 --- a/arch/powerpc/boot/of.c +++ b/arch/powerpc/boot/of.c | |||
@@ -17,8 +17,6 @@ | |||
17 | 17 | ||
18 | #include "of.h" | 18 | #include "of.h" |
19 | 19 | ||
20 | extern char _end[]; | ||
21 | |||
22 | /* Value picked to match that used by yaboot */ | 20 | /* Value picked to match that used by yaboot */ |
23 | #define PROG_START 0x01400000 /* only used on 64-bit systems */ | 21 | #define PROG_START 0x01400000 /* only used on 64-bit systems */ |
24 | #define RAM_END (512<<20) /* Fixme: use OF */ | 22 | #define RAM_END (512<<20) /* Fixme: use OF */ |
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h index 86077066cd7c..a180b6505f47 100644 --- a/arch/powerpc/boot/ops.h +++ b/arch/powerpc/boot/ops.h | |||
@@ -47,6 +47,7 @@ struct dt_ops { | |||
47 | const char *propname, | 47 | const char *propname, |
48 | const char *propval, int proplen); | 48 | const char *propval, int proplen); |
49 | unsigned long (*finalize)(void); | 49 | unsigned long (*finalize)(void); |
50 | char *(*get_path)(const void *phandle, char *buf, int len); | ||
50 | }; | 51 | }; |
51 | extern struct dt_ops dt_ops; | 52 | extern struct dt_ops dt_ops; |
52 | 53 | ||
@@ -82,11 +83,16 @@ int ft_init(void *dt_blob, unsigned int max_size, unsigned int max_find_device); | |||
82 | int serial_console_init(void); | 83 | int serial_console_init(void); |
83 | int ns16550_console_init(void *devp, struct serial_console_data *scdp); | 84 | int ns16550_console_init(void *devp, struct serial_console_data *scdp); |
84 | int mpsc_console_init(void *devp, struct serial_console_data *scdp); | 85 | int mpsc_console_init(void *devp, struct serial_console_data *scdp); |
86 | int cpm_console_init(void *devp, struct serial_console_data *scdp); | ||
87 | int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp); | ||
88 | int uartlite_console_init(void *devp, struct serial_console_data *scdp); | ||
85 | void *simple_alloc_init(char *base, unsigned long heap_size, | 89 | void *simple_alloc_init(char *base, unsigned long heap_size, |
86 | unsigned long granularity, unsigned long max_allocs); | 90 | unsigned long granularity, unsigned long max_allocs); |
87 | extern void flush_cache(void *, unsigned long); | 91 | extern void flush_cache(void *, unsigned long); |
88 | int dt_xlate_reg(void *node, int res, unsigned long *addr, unsigned long *size); | 92 | int dt_xlate_reg(void *node, int res, unsigned long *addr, unsigned long *size); |
89 | int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr); | 93 | int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr); |
94 | int dt_is_compatible(void *node, const char *compat); | ||
95 | void dt_get_reg_format(void *node, u32 *naddr, u32 *nsize); | ||
90 | 96 | ||
91 | static inline void *finddevice(const char *name) | 97 | static inline void *finddevice(const char *name) |
92 | { | 98 | { |
@@ -156,6 +162,7 @@ static inline void *find_node_by_devtype(const void *prev, | |||
156 | void dt_fixup_memory(u64 start, u64 size); | 162 | void dt_fixup_memory(u64 start, u64 size); |
157 | void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); | 163 | void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); |
158 | void dt_fixup_clock(const char *path, u32 freq); | 164 | void dt_fixup_clock(const char *path, u32 freq); |
165 | void dt_fixup_mac_address(u32 index, const u8 *addr); | ||
159 | void __dt_fixup_mac_addresses(u32 startindex, ...); | 166 | void __dt_fixup_mac_addresses(u32 startindex, ...); |
160 | #define dt_fixup_mac_addresses(...) \ | 167 | #define dt_fixup_mac_addresses(...) \ |
161 | __dt_fixup_mac_addresses(0, __VA_ARGS__, NULL) | 168 | __dt_fixup_mac_addresses(0, __VA_ARGS__, NULL) |
@@ -167,6 +174,14 @@ static inline void *find_node_by_linuxphandle(const u32 linuxphandle) | |||
167 | (char *)&linuxphandle, sizeof(u32)); | 174 | (char *)&linuxphandle, sizeof(u32)); |
168 | } | 175 | } |
169 | 176 | ||
177 | static inline char *get_path(const void *phandle, char *buf, int len) | ||
178 | { | ||
179 | if (dt_ops.get_path) | ||
180 | return dt_ops.get_path(phandle, buf, len); | ||
181 | |||
182 | return NULL; | ||
183 | } | ||
184 | |||
170 | static inline void *malloc(unsigned long size) | 185 | static inline void *malloc(unsigned long size) |
171 | { | 186 | { |
172 | return (platform_ops.malloc) ? platform_ops.malloc(size) : NULL; | 187 | return (platform_ops.malloc) ? platform_ops.malloc(size) : NULL; |
@@ -191,4 +206,25 @@ static inline void exit(void) | |||
191 | static char _bss_stack[size]; \ | 206 | static char _bss_stack[size]; \ |
192 | void *_platform_stack_top = _bss_stack + sizeof(_bss_stack); | 207 | void *_platform_stack_top = _bss_stack + sizeof(_bss_stack); |
193 | 208 | ||
209 | extern unsigned long timebase_period_ns; | ||
210 | void udelay(long delay); | ||
211 | |||
212 | extern char _start[]; | ||
213 | extern char __bss_start[]; | ||
214 | extern char _end[]; | ||
215 | extern char _vmlinux_start[]; | ||
216 | extern char _vmlinux_end[]; | ||
217 | extern char _initrd_start[]; | ||
218 | extern char _initrd_end[]; | ||
219 | extern char _dtb_start[]; | ||
220 | extern char _dtb_end[]; | ||
221 | |||
222 | static inline __attribute__((const)) | ||
223 | int __ilog2_u32(u32 n) | ||
224 | { | ||
225 | int bit; | ||
226 | asm ("cntlzw %0,%1" : "=r" (bit) : "r" (n)); | ||
227 | return 31 - bit; | ||
228 | } | ||
229 | |||
194 | #endif /* _PPC_BOOT_OPS_H_ */ | 230 | #endif /* _PPC_BOOT_OPS_H_ */ |
diff --git a/arch/powerpc/boot/planetcore.c b/arch/powerpc/boot/planetcore.c new file mode 100644 index 000000000000..0d8558a475bb --- /dev/null +++ b/arch/powerpc/boot/planetcore.c | |||
@@ -0,0 +1,166 @@ | |||
1 | /* | ||
2 | * PlanetCore configuration data support functions | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "stdio.h" | ||
14 | #include "stdlib.h" | ||
15 | #include "ops.h" | ||
16 | #include "planetcore.h" | ||
17 | #include "io.h" | ||
18 | |||
19 | /* PlanetCore passes information to the OS in the form of | ||
20 | * a table of key=value strings, separated by newlines. | ||
21 | * | ||
22 | * The list is terminated by an empty string (i.e. two | ||
23 | * consecutive newlines). | ||
24 | * | ||
25 | * To make it easier to parse, we first convert all the | ||
26 | * newlines into null bytes. | ||
27 | */ | ||
28 | |||
29 | void planetcore_prepare_table(char *table) | ||
30 | { | ||
31 | do { | ||
32 | if (*table == '\n') | ||
33 | *table = 0; | ||
34 | |||
35 | table++; | ||
36 | } while (*(table - 1) || *table != '\n'); | ||
37 | |||
38 | *table = 0; | ||
39 | } | ||
40 | |||
41 | const char *planetcore_get_key(const char *table, const char *key) | ||
42 | { | ||
43 | int keylen = strlen(key); | ||
44 | |||
45 | do { | ||
46 | if (!strncmp(table, key, keylen) && table[keylen] == '=') | ||
47 | return table + keylen + 1; | ||
48 | |||
49 | table += strlen(table) + 1; | ||
50 | } while (strlen(table) != 0); | ||
51 | |||
52 | return NULL; | ||
53 | } | ||
54 | |||
55 | int planetcore_get_decimal(const char *table, const char *key, u64 *val) | ||
56 | { | ||
57 | const char *str = planetcore_get_key(table, key); | ||
58 | if (!str) | ||
59 | return 0; | ||
60 | |||
61 | *val = strtoull(str, NULL, 10); | ||
62 | return 1; | ||
63 | } | ||
64 | |||
65 | int planetcore_get_hex(const char *table, const char *key, u64 *val) | ||
66 | { | ||
67 | const char *str = planetcore_get_key(table, key); | ||
68 | if (!str) | ||
69 | return 0; | ||
70 | |||
71 | *val = strtoull(str, NULL, 16); | ||
72 | return 1; | ||
73 | } | ||
74 | |||
75 | static u64 mac_table[4] = { | ||
76 | 0x000000000000, | ||
77 | 0x000000800000, | ||
78 | 0x000000400000, | ||
79 | 0x000000c00000, | ||
80 | }; | ||
81 | |||
82 | void planetcore_set_mac_addrs(const char *table) | ||
83 | { | ||
84 | u8 addr[4][6]; | ||
85 | u64 int_addr; | ||
86 | u32 i; | ||
87 | int j; | ||
88 | |||
89 | if (!planetcore_get_hex(table, PLANETCORE_KEY_MAC_ADDR, &int_addr)) | ||
90 | return; | ||
91 | |||
92 | for (i = 0; i < 4; i++) { | ||
93 | u64 this_dev_addr = (int_addr & ~0x000000c00000) | | ||
94 | mac_table[i]; | ||
95 | |||
96 | for (j = 5; j >= 0; j--) { | ||
97 | addr[i][j] = this_dev_addr & 0xff; | ||
98 | this_dev_addr >>= 8; | ||
99 | } | ||
100 | |||
101 | dt_fixup_mac_address(i, addr[i]); | ||
102 | } | ||
103 | } | ||
104 | |||
105 | static char prop_buf[MAX_PROP_LEN]; | ||
106 | |||
107 | void planetcore_set_stdout_path(const char *table) | ||
108 | { | ||
109 | char *path; | ||
110 | const char *label; | ||
111 | void *node, *chosen; | ||
112 | |||
113 | label = planetcore_get_key(table, PLANETCORE_KEY_SERIAL_PORT); | ||
114 | if (!label) | ||
115 | return; | ||
116 | |||
117 | node = find_node_by_prop_value_str(NULL, "linux,planetcore-label", | ||
118 | label); | ||
119 | if (!node) | ||
120 | return; | ||
121 | |||
122 | path = get_path(node, prop_buf, MAX_PROP_LEN); | ||
123 | if (!path) | ||
124 | return; | ||
125 | |||
126 | chosen = finddevice("/chosen"); | ||
127 | if (!chosen) | ||
128 | chosen = create_node(NULL, "chosen"); | ||
129 | if (!chosen) | ||
130 | return; | ||
131 | |||
132 | setprop_str(chosen, "linux,stdout-path", path); | ||
133 | } | ||
134 | |||
135 | void planetcore_set_serial_speed(const char *table) | ||
136 | { | ||
137 | void *chosen, *stdout; | ||
138 | u64 baud; | ||
139 | u32 baud32; | ||
140 | int len; | ||
141 | |||
142 | chosen = finddevice("/chosen"); | ||
143 | if (!chosen) | ||
144 | return; | ||
145 | |||
146 | len = getprop(chosen, "linux,stdout-path", prop_buf, MAX_PROP_LEN); | ||
147 | if (len <= 0) | ||
148 | return; | ||
149 | |||
150 | stdout = finddevice(prop_buf); | ||
151 | if (!stdout) { | ||
152 | printf("planetcore_set_serial_speed: " | ||
153 | "Bad /chosen/linux,stdout-path.\r\n"); | ||
154 | |||
155 | return; | ||
156 | } | ||
157 | |||
158 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_SERIAL_BAUD, | ||
159 | &baud)) { | ||
160 | printf("planetcore_set_serial_speed: No SB tag.\r\n"); | ||
161 | return; | ||
162 | } | ||
163 | |||
164 | baud32 = baud; | ||
165 | setprop(stdout, "current-speed", &baud32, 4); | ||
166 | } | ||
diff --git a/arch/powerpc/boot/planetcore.h b/arch/powerpc/boot/planetcore.h new file mode 100644 index 000000000000..0d4094f1771c --- /dev/null +++ b/arch/powerpc/boot/planetcore.h | |||
@@ -0,0 +1,49 @@ | |||
1 | #ifndef _PPC_BOOT_PLANETCORE_H_ | ||
2 | #define _PPC_BOOT_PLANETCORE_H_ | ||
3 | |||
4 | #include "types.h" | ||
5 | |||
6 | #define PLANETCORE_KEY_BOARD_TYPE "BO" | ||
7 | #define PLANETCORE_KEY_BOARD_REV "BR" | ||
8 | #define PLANETCORE_KEY_MB_RAM "D1" | ||
9 | #define PLANETCORE_KEY_MAC_ADDR "EA" | ||
10 | #define PLANETCORE_KEY_FLASH_SPEED "FS" | ||
11 | #define PLANETCORE_KEY_IP_ADDR "IP" | ||
12 | #define PLANETCORE_KEY_KB_NVRAM "NV" | ||
13 | #define PLANETCORE_KEY_PROCESSOR "PR" | ||
14 | #define PLANETCORE_KEY_PROC_VARIANT "PV" | ||
15 | #define PLANETCORE_KEY_SERIAL_BAUD "SB" | ||
16 | #define PLANETCORE_KEY_SERIAL_PORT "SP" | ||
17 | #define PLANETCORE_KEY_SWITCH "SW" | ||
18 | #define PLANETCORE_KEY_TEMP_OFFSET "TC" | ||
19 | #define PLANETCORE_KEY_TARGET_IP "TIP" | ||
20 | #define PLANETCORE_KEY_CRYSTAL_HZ "XT" | ||
21 | |||
22 | /* Prepare the table for processing, by turning all newlines | ||
23 | * into NULL bytes. | ||
24 | */ | ||
25 | void planetcore_prepare_table(char *table); | ||
26 | |||
27 | /* Return the value associated with a given key in text, | ||
28 | * decimal, or hex format. | ||
29 | * | ||
30 | * Returns zero/NULL on failure, non-zero on success. | ||
31 | */ | ||
32 | const char *planetcore_get_key(const char *table, const char *key); | ||
33 | int planetcore_get_decimal(const char *table, const char *key, u64 *val); | ||
34 | int planetcore_get_hex(const char *table, const char *key, u64 *val); | ||
35 | |||
36 | /* Updates the device tree local-mac-address properties based | ||
37 | * on the EA tag. | ||
38 | */ | ||
39 | void planetcore_set_mac_addrs(const char *table); | ||
40 | |||
41 | /* Sets the linux,stdout-path in the /chosen node. This requires the | ||
42 | * linux,planetcore-label property in each serial node. | ||
43 | */ | ||
44 | void planetcore_set_stdout_path(const char *table); | ||
45 | |||
46 | /* Sets the current-speed property in the serial node. */ | ||
47 | void planetcore_set_serial_speed(const char *table); | ||
48 | |||
49 | #endif | ||
diff --git a/arch/powerpc/boot/ppcboot.h b/arch/powerpc/boot/ppcboot.h index 5290ff2c2b2b..6ae6f9063952 100644 --- a/arch/powerpc/boot/ppcboot.h +++ b/arch/powerpc/boot/ppcboot.h | |||
@@ -78,17 +78,18 @@ typedef struct bd_info { | |||
78 | hymod_conf_t bi_hymod_conf; /* hymod configuration information */ | 78 | hymod_conf_t bi_hymod_conf; /* hymod configuration information */ |
79 | #endif | 79 | #endif |
80 | #if defined(TARGET_EVB64260) || defined(TARGET_405EP) || defined(TARGET_44x) || \ | 80 | #if defined(TARGET_EVB64260) || defined(TARGET_405EP) || defined(TARGET_44x) || \ |
81 | defined(TARGET_85xx) || defined(TARGET_83xx) | 81 | defined(TARGET_85xx) || defined(TARGET_83xx) || defined(TARGET_HAS_ETH1) |
82 | /* second onboard ethernet port */ | 82 | /* second onboard ethernet port */ |
83 | unsigned char bi_enet1addr[6]; | 83 | unsigned char bi_enet1addr[6]; |
84 | #define HAVE_ENET1ADDR | 84 | #define HAVE_ENET1ADDR |
85 | #endif | 85 | #endif |
86 | #if defined(TARGET_EVB64260) || defined(TARGET_440GX) || defined(TARGET_85xx) | 86 | #if defined(TARGET_EVB64260) || defined(TARGET_440GX) || \ |
87 | defined(TARGET_85xx) || defined(TARGET_HAS_ETH2) | ||
87 | /* third onboard ethernet ports */ | 88 | /* third onboard ethernet ports */ |
88 | unsigned char bi_enet2addr[6]; | 89 | unsigned char bi_enet2addr[6]; |
89 | #define HAVE_ENET2ADDR | 90 | #define HAVE_ENET2ADDR |
90 | #endif | 91 | #endif |
91 | #if defined(TARGET_440GX) | 92 | #if defined(TARGET_440GX) || defined(TARGET_HAS_ETH3) |
92 | /* fourth onboard ethernet ports */ | 93 | /* fourth onboard ethernet ports */ |
93 | unsigned char bi_enet3addr[6]; | 94 | unsigned char bi_enet3addr[6]; |
94 | #define HAVE_ENET3ADDR | 95 | #define HAVE_ENET3ADDR |
diff --git a/arch/powerpc/boot/pq2.c b/arch/powerpc/boot/pq2.c new file mode 100644 index 000000000000..f6d118558f1d --- /dev/null +++ b/arch/powerpc/boot/pq2.c | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * PowerQUICC II support functions | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "ops.h" | ||
14 | #include "types.h" | ||
15 | #include "fsl-soc.h" | ||
16 | #include "pq2.h" | ||
17 | #include "stdio.h" | ||
18 | #include "io.h" | ||
19 | |||
20 | #define PQ2_SCCR (0x10c80/4) /* System Clock Configuration Register */ | ||
21 | #define PQ2_SCMR (0x10c88/4) /* System Clock Mode Register */ | ||
22 | |||
23 | static int pq2_corecnf_map[] = { | ||
24 | 3, 2, 2, 2, 4, 4, 5, 9, 6, 11, 8, 10, 3, 12, 7, -1, | ||
25 | 6, 5, 13, 2, 14, 4, 15, 9, 0, 11, 8, 10, 16, 12, 7, -1 | ||
26 | }; | ||
27 | |||
28 | /* Get various clocks from crystal frequency. | ||
29 | * Returns zero on failure and non-zero on success. | ||
30 | */ | ||
31 | int pq2_get_clocks(u32 crystal, u32 *sysfreq, u32 *corefreq, | ||
32 | u32 *timebase, u32 *brgfreq) | ||
33 | { | ||
34 | u32 *immr; | ||
35 | u32 sccr, scmr, mainclk, busclk; | ||
36 | int corecnf, busdf, plldf, pllmf, dfbrg; | ||
37 | |||
38 | immr = fsl_get_immr(); | ||
39 | if (!immr) { | ||
40 | printf("pq2_get_clocks: Couldn't get IMMR base.\r\n"); | ||
41 | return 0; | ||
42 | } | ||
43 | |||
44 | sccr = in_be32(&immr[PQ2_SCCR]); | ||
45 | scmr = in_be32(&immr[PQ2_SCMR]); | ||
46 | |||
47 | dfbrg = sccr & 3; | ||
48 | corecnf = (scmr >> 24) & 0x1f; | ||
49 | busdf = (scmr >> 20) & 0xf; | ||
50 | plldf = (scmr >> 12) & 1; | ||
51 | pllmf = scmr & 0xfff; | ||
52 | |||
53 | mainclk = crystal * (pllmf + 1) / (plldf + 1); | ||
54 | busclk = mainclk / (busdf + 1); | ||
55 | |||
56 | if (sysfreq) | ||
57 | *sysfreq = mainclk / 2; | ||
58 | if (timebase) | ||
59 | *timebase = busclk / 4; | ||
60 | if (brgfreq) | ||
61 | *brgfreq = mainclk / (1 << ((dfbrg + 1) * 2)); | ||
62 | |||
63 | if (corefreq) { | ||
64 | int coremult = pq2_corecnf_map[corecnf]; | ||
65 | |||
66 | if (coremult < 0) | ||
67 | *corefreq = mainclk / 2; | ||
68 | else if (coremult == 0) | ||
69 | return 0; | ||
70 | else | ||
71 | *corefreq = busclk * coremult / 2; | ||
72 | } | ||
73 | |||
74 | return 1; | ||
75 | } | ||
76 | |||
77 | /* Set common device tree fields based on the given clock frequencies. */ | ||
78 | void pq2_set_clocks(u32 sysfreq, u32 corefreq, u32 timebase, u32 brgfreq) | ||
79 | { | ||
80 | void *node; | ||
81 | |||
82 | dt_fixup_cpu_clocks(corefreq, timebase, sysfreq); | ||
83 | |||
84 | node = finddevice("/soc/cpm"); | ||
85 | if (node) | ||
86 | setprop(node, "clock-frequency", &sysfreq, 4); | ||
87 | |||
88 | node = finddevice("/soc/cpm/brg"); | ||
89 | if (node) | ||
90 | setprop(node, "clock-frequency", &brgfreq, 4); | ||
91 | } | ||
92 | |||
93 | int pq2_fixup_clocks(u32 crystal) | ||
94 | { | ||
95 | u32 sysfreq, corefreq, timebase, brgfreq; | ||
96 | |||
97 | if (!pq2_get_clocks(crystal, &sysfreq, &corefreq, &timebase, &brgfreq)) | ||
98 | return 0; | ||
99 | |||
100 | pq2_set_clocks(sysfreq, corefreq, timebase, brgfreq); | ||
101 | return 1; | ||
102 | } | ||
diff --git a/arch/powerpc/boot/pq2.h b/arch/powerpc/boot/pq2.h new file mode 100644 index 000000000000..481698c7a51a --- /dev/null +++ b/arch/powerpc/boot/pq2.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef _PPC_BOOT_PQ2_H_ | ||
2 | #define _PPC_BOOT_PQ2_H_ | ||
3 | |||
4 | #include "types.h" | ||
5 | |||
6 | int pq2_get_clocks(u32 crystal, u32 *sysfreq, u32 *corefreq, | ||
7 | u32 *timebase, u32 *brgfreq); | ||
8 | void pq2_set_clocks(u32 sysfreq, u32 corefreq, u32 timebase, u32 brgfreq); | ||
9 | int pq2_fixup_clocks(u32 crystal); | ||
10 | |||
11 | #endif | ||
diff --git a/arch/powerpc/boot/prpmc2800.c b/arch/powerpc/boot/prpmc2800.c index f428bac10d4a..9614e1db9dae 100644 --- a/arch/powerpc/boot/prpmc2800.c +++ b/arch/powerpc/boot/prpmc2800.c | |||
@@ -21,12 +21,6 @@ | |||
21 | #include "gunzip_util.h" | 21 | #include "gunzip_util.h" |
22 | #include "mv64x60.h" | 22 | #include "mv64x60.h" |
23 | 23 | ||
24 | extern char _end[]; | ||
25 | extern char _vmlinux_start[], _vmlinux_end[]; | ||
26 | extern char _dtb_start[], _dtb_end[]; | ||
27 | |||
28 | extern void udelay(long delay); | ||
29 | |||
30 | #define KB 1024U | 24 | #define KB 1024U |
31 | #define MB (KB*KB) | 25 | #define MB (KB*KB) |
32 | #define GB (KB*MB) | 26 | #define GB (KB*MB) |
diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c index 893d59339c26..d6661151b494 100644 --- a/arch/powerpc/boot/ps3.c +++ b/arch/powerpc/boot/ps3.c | |||
@@ -120,10 +120,6 @@ void ps3_copy_vectors(void) | |||
120 | 120 | ||
121 | void platform_init(void) | 121 | void platform_init(void) |
122 | { | 122 | { |
123 | extern char _end[]; | ||
124 | extern char _dtb_start[]; | ||
125 | extern char _initrd_start[]; | ||
126 | extern char _initrd_end[]; | ||
127 | const u32 heapsize = 0x1000000 - (u32)_end; /* 16MiB */ | 123 | const u32 heapsize = 0x1000000 - (u32)_end; /* 16MiB */ |
128 | void *chosen; | 124 | void *chosen; |
129 | unsigned long ft_addr; | 125 | unsigned long ft_addr; |
diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c index eaa0d3ae3518..cafeece20ac7 100644 --- a/arch/powerpc/boot/serial.c +++ b/arch/powerpc/boot/serial.c | |||
@@ -19,8 +19,6 @@ | |||
19 | #include "io.h" | 19 | #include "io.h" |
20 | #include "ops.h" | 20 | #include "ops.h" |
21 | 21 | ||
22 | extern void udelay(long delay); | ||
23 | |||
24 | static int serial_open(void) | 22 | static int serial_open(void) |
25 | { | 23 | { |
26 | struct serial_console_data *scdp = console_ops.data; | 24 | struct serial_console_data *scdp = console_ops.data; |
@@ -114,29 +112,36 @@ int serial_console_init(void) | |||
114 | { | 112 | { |
115 | void *devp; | 113 | void *devp; |
116 | int rc = -1; | 114 | int rc = -1; |
117 | char compat[MAX_PROP_LEN]; | ||
118 | 115 | ||
119 | devp = serial_get_stdout_devp(); | 116 | devp = serial_get_stdout_devp(); |
120 | if (devp == NULL) | 117 | if (devp == NULL) |
121 | goto err_out; | 118 | goto err_out; |
122 | 119 | ||
123 | if (getprop(devp, "compatible", compat, sizeof(compat)) < 0) | 120 | if (dt_is_compatible(devp, "ns16550")) |
124 | goto err_out; | ||
125 | |||
126 | if (!strcmp(compat, "ns16550")) | ||
127 | rc = ns16550_console_init(devp, &serial_cd); | 121 | rc = ns16550_console_init(devp, &serial_cd); |
128 | else if (!strcmp(compat, "marvell,mpsc")) | 122 | else if (dt_is_compatible(devp, "marvell,mpsc")) |
129 | rc = mpsc_console_init(devp, &serial_cd); | 123 | rc = mpsc_console_init(devp, &serial_cd); |
124 | else if (dt_is_compatible(devp, "fsl,cpm1-scc-uart") || | ||
125 | dt_is_compatible(devp, "fsl,cpm1-smc-uart") || | ||
126 | dt_is_compatible(devp, "fsl,cpm2-scc-uart") || | ||
127 | dt_is_compatible(devp, "fsl,cpm2-smc-uart")) | ||
128 | rc = cpm_console_init(devp, &serial_cd); | ||
129 | else if (dt_is_compatible(devp, "mpc5200-psc-uart")) | ||
130 | rc = mpc5200_psc_console_init(devp, &serial_cd); | ||
131 | else if (dt_is_compatible(devp, "xilinx,uartlite")) | ||
132 | rc = uartlite_console_init(devp, &serial_cd); | ||
130 | 133 | ||
131 | /* Add other serial console driver calls here */ | 134 | /* Add other serial console driver calls here */ |
132 | 135 | ||
133 | if (!rc) { | 136 | if (!rc) { |
134 | console_ops.open = serial_open; | 137 | console_ops.open = serial_open; |
135 | console_ops.write = serial_write; | 138 | console_ops.write = serial_write; |
136 | console_ops.edit_cmdline = serial_edit_cmdline; | ||
137 | console_ops.close = serial_close; | 139 | console_ops.close = serial_close; |
138 | console_ops.data = &serial_cd; | 140 | console_ops.data = &serial_cd; |
139 | 141 | ||
142 | if (serial_cd.getc) | ||
143 | console_ops.edit_cmdline = serial_edit_cmdline; | ||
144 | |||
140 | return 0; | 145 | return 0; |
141 | } | 146 | } |
142 | err_out: | 147 | err_out: |
diff --git a/arch/powerpc/boot/stdlib.c b/arch/powerpc/boot/stdlib.c new file mode 100644 index 000000000000..e00d58c29eea --- /dev/null +++ b/arch/powerpc/boot/stdlib.c | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * stdlib functions | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * | ||
6 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify it | ||
9 | * under the terms of the GNU General Public License version 2 as published | ||
10 | * by the Free Software Foundation. | ||
11 | */ | ||
12 | |||
13 | #include "stdlib.h" | ||
14 | |||
15 | /* Not currently supported: leading whitespace, sign, 0x prefix, zero base */ | ||
16 | unsigned long long int strtoull(const char *ptr, char **end, int base) | ||
17 | { | ||
18 | unsigned long long ret = 0; | ||
19 | |||
20 | if (base > 36) | ||
21 | goto out; | ||
22 | |||
23 | while (*ptr) { | ||
24 | int digit; | ||
25 | |||
26 | if (*ptr >= '0' && *ptr <= '9' && *ptr < '0' + base) | ||
27 | digit = *ptr - '0'; | ||
28 | else if (*ptr >= 'A' && *ptr < 'A' + base - 10) | ||
29 | digit = *ptr - 'A' + 10; | ||
30 | else if (*ptr >= 'a' && *ptr < 'a' + base - 10) | ||
31 | digit = *ptr - 'a' + 10; | ||
32 | else | ||
33 | break; | ||
34 | |||
35 | ret *= base; | ||
36 | ret += digit; | ||
37 | ptr++; | ||
38 | } | ||
39 | |||
40 | out: | ||
41 | if (end) | ||
42 | *end = (char *)ptr; | ||
43 | |||
44 | return ret; | ||
45 | } | ||
diff --git a/arch/powerpc/boot/stdlib.h b/arch/powerpc/boot/stdlib.h new file mode 100644 index 000000000000..1bf01ac73aba --- /dev/null +++ b/arch/powerpc/boot/stdlib.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _PPC_BOOT_STDLIB_H_ | ||
2 | #define _PPC_BOOT_STDLIB_H_ | ||
3 | |||
4 | unsigned long long int strtoull(const char *ptr, char **end, int base); | ||
5 | |||
6 | #endif | ||
diff --git a/arch/powerpc/boot/string.S b/arch/powerpc/boot/string.S index ac3d43b6a324..643e4cb2f11d 100644 --- a/arch/powerpc/boot/string.S +++ b/arch/powerpc/boot/string.S | |||
@@ -49,6 +49,17 @@ strcat: | |||
49 | bne 1b | 49 | bne 1b |
50 | blr | 50 | blr |
51 | 51 | ||
52 | .globl strchr | ||
53 | strchr: | ||
54 | addi r3,r3,-1 | ||
55 | 1: lbzu r0,1(r3) | ||
56 | cmpw 0,r0,r4 | ||
57 | beqlr | ||
58 | cmpwi 0,r0,0 | ||
59 | bne 1b | ||
60 | li r3,0 | ||
61 | blr | ||
62 | |||
52 | .globl strcmp | 63 | .globl strcmp |
53 | strcmp: | 64 | strcmp: |
54 | addi r5,r3,-1 | 65 | addi r5,r3,-1 |
@@ -61,6 +72,19 @@ strcmp: | |||
61 | beq 1b | 72 | beq 1b |
62 | blr | 73 | blr |
63 | 74 | ||
75 | .globl strncmp | ||
76 | strncmp: | ||
77 | mtctr r5 | ||
78 | addi r5,r3,-1 | ||
79 | addi r4,r4,-1 | ||
80 | 1: lbzu r3,1(r5) | ||
81 | cmpwi 1,r3,0 | ||
82 | lbzu r0,1(r4) | ||
83 | subf. r3,r0,r3 | ||
84 | beqlr 1 | ||
85 | bdnzt eq,1b | ||
86 | blr | ||
87 | |||
64 | .globl strlen | 88 | .globl strlen |
65 | strlen: | 89 | strlen: |
66 | addi r4,r3,-1 | 90 | addi r4,r3,-1 |
@@ -195,6 +219,19 @@ backwards_memcpy: | |||
195 | mtctr r7 | 219 | mtctr r7 |
196 | b 1b | 220 | b 1b |
197 | 221 | ||
222 | .globl memchr | ||
223 | memchr: | ||
224 | cmpwi 0,r5,0 | ||
225 | blelr | ||
226 | mtctr r5 | ||
227 | addi r3,r3,-1 | ||
228 | 1: lbzu r0,1(r3) | ||
229 | cmpw r0,r4 | ||
230 | beqlr | ||
231 | bdnz 1b | ||
232 | li r3,0 | ||
233 | blr | ||
234 | |||
198 | .globl memcmp | 235 | .globl memcmp |
199 | memcmp: | 236 | memcmp: |
200 | cmpwi 0,r5,0 | 237 | cmpwi 0,r5,0 |
diff --git a/arch/powerpc/boot/string.h b/arch/powerpc/boot/string.h index 9fdff1cc0d70..50091cc0eed9 100644 --- a/arch/powerpc/boot/string.h +++ b/arch/powerpc/boot/string.h | |||
@@ -5,13 +5,16 @@ | |||
5 | extern char *strcpy(char *dest, const char *src); | 5 | extern char *strcpy(char *dest, const char *src); |
6 | extern char *strncpy(char *dest, const char *src, size_t n); | 6 | extern char *strncpy(char *dest, const char *src, size_t n); |
7 | extern char *strcat(char *dest, const char *src); | 7 | extern char *strcat(char *dest, const char *src); |
8 | extern char *strchr(const char *s, int c); | ||
8 | extern int strcmp(const char *s1, const char *s2); | 9 | extern int strcmp(const char *s1, const char *s2); |
10 | extern int strncmp(const char *s1, const char *s2, size_t n); | ||
9 | extern size_t strlen(const char *s); | 11 | extern size_t strlen(const char *s); |
10 | extern size_t strnlen(const char *s, size_t count); | 12 | extern size_t strnlen(const char *s, size_t count); |
11 | 13 | ||
12 | extern void *memset(void *s, int c, size_t n); | 14 | extern void *memset(void *s, int c, size_t n); |
13 | extern void *memmove(void *dest, const void *src, unsigned long n); | 15 | extern void *memmove(void *dest, const void *src, unsigned long n); |
14 | extern void *memcpy(void *dest, const void *src, unsigned long n); | 16 | extern void *memcpy(void *dest, const void *src, unsigned long n); |
17 | extern void *memchr(const void *s, int c, size_t n); | ||
15 | extern int memcmp(const void *s1, const void *s2, size_t n); | 18 | extern int memcmp(const void *s1, const void *s2, size_t n); |
16 | 19 | ||
17 | #endif /* _PPC_BOOT_STRING_H_ */ | 20 | #endif /* _PPC_BOOT_STRING_H_ */ |
diff --git a/arch/powerpc/boot/treeboot-bamboo.c b/arch/powerpc/boot/treeboot-bamboo.c new file mode 100644 index 000000000000..9eee48fc7114 --- /dev/null +++ b/arch/powerpc/boot/treeboot-bamboo.c | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corporation, 2007 | ||
3 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
4 | * | ||
5 | * Based on ebony wrapper: | ||
6 | * Copyright 2007 David Gibson, IBM Corporation. | ||
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 | ||
10 | * as published by the Free Software Foundation; version 2 of the License | ||
11 | */ | ||
12 | #include "ops.h" | ||
13 | #include "stdio.h" | ||
14 | #include "44x.h" | ||
15 | #include "stdlib.h" | ||
16 | |||
17 | BSS_STACK(4096); | ||
18 | |||
19 | #define PIBS_MAC0 0xfffc0400 | ||
20 | #define PIBS_MAC1 0xfffc0500 | ||
21 | char pibs_mac0[6]; | ||
22 | char pibs_mac1[6]; | ||
23 | |||
24 | static void read_pibs_mac(void) | ||
25 | { | ||
26 | unsigned long long mac64; | ||
27 | |||
28 | mac64 = strtoull((char *)PIBS_MAC0, 0, 16); | ||
29 | memcpy(&pibs_mac0, (char *)&mac64+2, 6); | ||
30 | |||
31 | mac64 = strtoull((char *)PIBS_MAC1, 0, 16); | ||
32 | memcpy(&pibs_mac1, (char *)&mac64+2, 6); | ||
33 | } | ||
34 | |||
35 | void platform_init(void) | ||
36 | { | ||
37 | unsigned long end_of_ram = 0x8000000; | ||
38 | unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
39 | |||
40 | simple_alloc_init(_end, avail_ram, 32, 64); | ||
41 | read_pibs_mac(); | ||
42 | bamboo_init((u8 *)&pibs_mac0, (u8 *)&pibs_mac1); | ||
43 | } | ||
diff --git a/arch/powerpc/boot/treeboot-ebony.c b/arch/powerpc/boot/treeboot-ebony.c index 8436a9c55192..21cc4834a384 100644 --- a/arch/powerpc/boot/treeboot-ebony.c +++ b/arch/powerpc/boot/treeboot-ebony.c | |||
@@ -16,8 +16,6 @@ | |||
16 | #include "stdio.h" | 16 | #include "stdio.h" |
17 | #include "44x.h" | 17 | #include "44x.h" |
18 | 18 | ||
19 | extern char _end[]; | ||
20 | |||
21 | BSS_STACK(4096); | 19 | BSS_STACK(4096); |
22 | 20 | ||
23 | #define OPENBIOS_MAC_BASE 0xfffffe0c | 21 | #define OPENBIOS_MAC_BASE 0xfffffe0c |
diff --git a/arch/powerpc/boot/treeboot-walnut.c b/arch/powerpc/boot/treeboot-walnut.c new file mode 100644 index 000000000000..3adf2d08a230 --- /dev/null +++ b/arch/powerpc/boot/treeboot-walnut.c | |||
@@ -0,0 +1,131 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for Walnut | ||
3 | * | ||
4 | * Author: Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
5 | * | ||
6 | * Copyright 2007 IBM Corporation | ||
7 | * Based on cuboot-83xx.c, which is: | ||
8 | * Copyright (c) 2007 Freescale Semiconductor, Inc. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License version 2 as published | ||
12 | * by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | #include "ops.h" | ||
16 | #include "stdio.h" | ||
17 | #include "dcr.h" | ||
18 | #include "4xx.h" | ||
19 | #include "io.h" | ||
20 | |||
21 | BSS_STACK(4096); | ||
22 | |||
23 | void ibm405gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk) | ||
24 | { | ||
25 | u32 pllmr = mfdcr(DCRN_CPC0_PLLMR); | ||
26 | u32 cpc0_cr0 = mfdcr(DCRN_405_CPC0_CR0); | ||
27 | u32 cpc0_cr1 = mfdcr(DCRN_405_CPC0_CR1); | ||
28 | u32 cpu, plb, opb, ebc, tb, uart0, uart1, m; | ||
29 | u32 fwdv, fbdv, cbdv, opdv, epdv, udiv; | ||
30 | |||
31 | fwdv = (8 - ((pllmr & 0xe0000000) >> 29)); | ||
32 | fbdv = (pllmr & 0x1e000000) >> 25; | ||
33 | cbdv = ((pllmr & 0x00060000) >> 17) + 1; | ||
34 | opdv = ((pllmr & 0x00018000) >> 15) + 1; | ||
35 | epdv = ((pllmr & 0x00001800) >> 13) + 2; | ||
36 | udiv = ((cpc0_cr0 & 0x3e) >> 1) + 1; | ||
37 | |||
38 | m = fwdv * fbdv * cbdv; | ||
39 | |||
40 | cpu = sysclk * m / fwdv; | ||
41 | plb = cpu / cbdv; | ||
42 | opb = plb / opdv; | ||
43 | ebc = plb / epdv; | ||
44 | |||
45 | if (cpc0_cr0 & 0x80) { | ||
46 | /* uart0 uses the external clock */ | ||
47 | uart0 = ser_clk; | ||
48 | } else { | ||
49 | uart0 = cpu / udiv; | ||
50 | } | ||
51 | |||
52 | if (cpc0_cr0 & 0x40) { | ||
53 | /* uart1 uses the external clock */ | ||
54 | uart1 = ser_clk; | ||
55 | } else { | ||
56 | uart1 = cpu / udiv; | ||
57 | } | ||
58 | |||
59 | /* setup the timebase clock to tick at the cpu frequency */ | ||
60 | cpc0_cr1 = cpc0_cr1 & ~ 0x00800000; | ||
61 | mtdcr(DCRN_CPC0_CR1, cpc0_cr1); | ||
62 | tb = cpu; | ||
63 | |||
64 | dt_fixup_cpu_clocks(cpu, tb, 0); | ||
65 | dt_fixup_clock("/plb", plb); | ||
66 | dt_fixup_clock("/plb/opb", opb); | ||
67 | dt_fixup_clock("/plb/ebc", ebc); | ||
68 | dt_fixup_clock("/plb/opb/serial@ef600300", uart0); | ||
69 | dt_fixup_clock("/plb/opb/serial@ef600400", uart1); | ||
70 | } | ||
71 | |||
72 | static void walnut_flashsel_fixup(void) | ||
73 | { | ||
74 | void *devp, *sram; | ||
75 | u32 reg_flash[3] = {0x0, 0x0, 0x80000}; | ||
76 | u32 reg_sram[3] = {0x0, 0x0, 0x80000}; | ||
77 | u8 *fpga; | ||
78 | u8 fpga_brds1 = 0x0; | ||
79 | |||
80 | devp = finddevice("/plb/ebc/fpga"); | ||
81 | if (!devp) | ||
82 | fatal("Couldn't locate FPGA node\n\r"); | ||
83 | |||
84 | if (getprop(devp, "virtual-reg", &fpga, sizeof(fpga)) != sizeof(fpga)) | ||
85 | fatal("no virtual-reg property\n\r"); | ||
86 | |||
87 | fpga_brds1 = in_8(fpga); | ||
88 | |||
89 | devp = finddevice("/plb/ebc/flash"); | ||
90 | if (!devp) | ||
91 | fatal("Couldn't locate flash node\n\r"); | ||
92 | |||
93 | if (getprop(devp, "reg", reg_flash, sizeof(reg_flash)) != sizeof(reg_flash)) | ||
94 | fatal("flash reg property has unexpected size\n\r"); | ||
95 | |||
96 | sram = finddevice("/plb/ebc/sram"); | ||
97 | if (!sram) | ||
98 | fatal("Couldn't locate sram node\n\r"); | ||
99 | |||
100 | if (getprop(sram, "reg", reg_sram, sizeof(reg_sram)) != sizeof(reg_sram)) | ||
101 | fatal("sram reg property has unexpected size\n\r"); | ||
102 | |||
103 | if (fpga_brds1 & 0x1) { | ||
104 | reg_flash[1] ^= 0x80000; | ||
105 | reg_sram[1] ^= 0x80000; | ||
106 | } | ||
107 | |||
108 | setprop(devp, "reg", reg_flash, sizeof(reg_flash)); | ||
109 | setprop(sram, "reg", reg_sram, sizeof(reg_sram)); | ||
110 | } | ||
111 | |||
112 | static void walnut_fixups(void) | ||
113 | { | ||
114 | ibm4xx_fixup_memsize(); | ||
115 | ibm405gp_fixup_clocks(33330000, 0xa8c000); | ||
116 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); | ||
117 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); | ||
118 | walnut_flashsel_fixup(); | ||
119 | } | ||
120 | |||
121 | void platform_init(void) | ||
122 | { | ||
123 | unsigned long end_of_ram = 0x2000000; | ||
124 | unsigned long avail_ram = end_of_ram - (unsigned long) _end; | ||
125 | |||
126 | simple_alloc_init(_end, avail_ram, 32, 32); | ||
127 | platform_ops.fixups = walnut_fixups; | ||
128 | platform_ops.exit = ibm40x_dbcr_reset; | ||
129 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | ||
130 | serial_console_init(); | ||
131 | } | ||
diff --git a/arch/powerpc/boot/uartlite.c b/arch/powerpc/boot/uartlite.c new file mode 100644 index 000000000000..46bed69b4169 --- /dev/null +++ b/arch/powerpc/boot/uartlite.c | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * Xilinx UARTLITE bootloader driver | ||
3 | * | ||
4 | * Copyright (C) 2007 Secret Lab Technologies Ltd. | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public License | ||
7 | * version 2. This program is licensed "as is" without any warranty of any | ||
8 | * kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | #include <stdarg.h> | ||
12 | #include <stddef.h> | ||
13 | #include "types.h" | ||
14 | #include "string.h" | ||
15 | #include "stdio.h" | ||
16 | #include "io.h" | ||
17 | #include "ops.h" | ||
18 | |||
19 | #define ULITE_RX 0x00 | ||
20 | #define ULITE_TX 0x04 | ||
21 | #define ULITE_STATUS 0x08 | ||
22 | #define ULITE_CONTROL 0x0c | ||
23 | |||
24 | #define ULITE_STATUS_RXVALID 0x01 | ||
25 | #define ULITE_STATUS_TXFULL 0x08 | ||
26 | |||
27 | #define ULITE_CONTROL_RST_RX 0x02 | ||
28 | |||
29 | static void * reg_base; | ||
30 | |||
31 | static int uartlite_open(void) | ||
32 | { | ||
33 | /* Clear the RX FIFO */ | ||
34 | out_be32(reg_base + ULITE_CONTROL, ULITE_CONTROL_RST_RX); | ||
35 | return 0; | ||
36 | } | ||
37 | |||
38 | static void uartlite_putc(unsigned char c) | ||
39 | { | ||
40 | u32 reg = ULITE_STATUS_TXFULL; | ||
41 | while (reg & ULITE_STATUS_TXFULL) /* spin on TXFULL bit */ | ||
42 | reg = in_be32(reg_base + ULITE_STATUS); | ||
43 | out_be32(reg_base + ULITE_TX, c); | ||
44 | } | ||
45 | |||
46 | static unsigned char uartlite_getc(void) | ||
47 | { | ||
48 | u32 reg = 0; | ||
49 | while (!(reg & ULITE_STATUS_RXVALID)) /* spin waiting for RXVALID bit */ | ||
50 | reg = in_be32(reg_base + ULITE_STATUS); | ||
51 | return in_be32(reg_base + ULITE_RX); | ||
52 | } | ||
53 | |||
54 | static u8 uartlite_tstc(void) | ||
55 | { | ||
56 | u32 reg = in_be32(reg_base + ULITE_STATUS); | ||
57 | return reg & ULITE_STATUS_RXVALID; | ||
58 | } | ||
59 | |||
60 | int uartlite_console_init(void *devp, struct serial_console_data *scdp) | ||
61 | { | ||
62 | int n; | ||
63 | unsigned long reg_phys; | ||
64 | |||
65 | n = getprop(devp, "virtual-reg", ®_base, sizeof(reg_base)); | ||
66 | if (n != sizeof(reg_base)) { | ||
67 | if (!dt_xlate_reg(devp, 0, ®_phys, NULL)) | ||
68 | return -1; | ||
69 | |||
70 | reg_base = (void *)reg_phys; | ||
71 | } | ||
72 | |||
73 | scdp->open = uartlite_open; | ||
74 | scdp->putc = uartlite_putc; | ||
75 | scdp->getc = uartlite_getc; | ||
76 | scdp->tstc = uartlite_tstc; | ||
77 | scdp->close = NULL; | ||
78 | return 0; | ||
79 | } | ||
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index 65f685479175..39b27e5ef6c1 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -29,6 +29,7 @@ initrd= | |||
29 | dtb= | 29 | dtb= |
30 | dts= | 30 | dts= |
31 | cacheit= | 31 | cacheit= |
32 | binary= | ||
32 | gzip=.gz | 33 | gzip=.gz |
33 | 34 | ||
34 | # cross-compilation prefix | 35 | # cross-compilation prefix |
@@ -142,17 +143,23 @@ miboot|uboot) | |||
142 | isection=initrd | 143 | isection=initrd |
143 | ;; | 144 | ;; |
144 | cuboot*) | 145 | cuboot*) |
146 | binary=y | ||
145 | gzip= | 147 | gzip= |
146 | ;; | 148 | ;; |
147 | ps3) | 149 | ps3) |
148 | platformo="$object/ps3-head.o $object/ps3-hvcall.o $object/ps3.o" | 150 | platformo="$object/ps3-head.o $object/ps3-hvcall.o $object/ps3.o" |
149 | lds=$object/zImage.ps3.lds | 151 | lds=$object/zImage.ps3.lds |
152 | binary=y | ||
150 | gzip= | 153 | gzip= |
151 | ext=bin | 154 | ext=bin |
152 | objflags="-O binary --set-section-flags=.bss=contents,alloc,load,data" | 155 | objflags="-O binary --set-section-flags=.bss=contents,alloc,load,data" |
153 | ksection=.kernel:vmlinux.bin | 156 | ksection=.kernel:vmlinux.bin |
154 | isection=.kernel:initrd | 157 | isection=.kernel:initrd |
155 | ;; | 158 | ;; |
159 | ep88xc) | ||
160 | platformo="$object/fixed-head.o $object/$platform.o" | ||
161 | binary=y | ||
162 | ;; | ||
156 | esac | 163 | esac |
157 | 164 | ||
158 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" | 165 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" |
@@ -224,6 +231,11 @@ fi | |||
224 | base=0x`${CROSS}nm "$ofile" | grep ' _start$' | cut -d' ' -f1` | 231 | base=0x`${CROSS}nm "$ofile" | grep ' _start$' | cut -d' ' -f1` |
225 | entry=`${CROSS}objdump -f "$ofile" | grep '^start address ' | cut -d' ' -f3` | 232 | entry=`${CROSS}objdump -f "$ofile" | grep '^start address ' | cut -d' ' -f3` |
226 | 233 | ||
234 | if [ -n "$binary" ]; then | ||
235 | mv "$ofile" "$ofile".elf | ||
236 | ${CROSS}objcopy -O binary "$ofile".elf "$ofile".bin | ||
237 | fi | ||
238 | |||
227 | # post-processing needed for some platforms | 239 | # post-processing needed for some platforms |
228 | case "$platform" in | 240 | case "$platform" in |
229 | pseries|chrp) | 241 | pseries|chrp) |
@@ -234,8 +246,6 @@ coff) | |||
234 | $object/hack-coff "$ofile" | 246 | $object/hack-coff "$ofile" |
235 | ;; | 247 | ;; |
236 | cuboot*) | 248 | cuboot*) |
237 | mv "$ofile" "$ofile".elf | ||
238 | ${CROSS}objcopy -O binary "$ofile".elf "$ofile".bin | ||
239 | gzip -f -9 "$ofile".bin | 249 | gzip -f -9 "$ofile".bin |
240 | mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \ | 250 | mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \ |
241 | $uboot_version -d "$ofile".bin.gz "$ofile" | 251 | $uboot_version -d "$ofile".bin.gz "$ofile" |
@@ -259,11 +269,11 @@ ps3) | |||
259 | # then copied to offset 0x100. At runtime the bootwrapper program | 269 | # then copied to offset 0x100. At runtime the bootwrapper program |
260 | # copies the 0x100 bytes at __system_reset_kernel to addr 0x100. | 270 | # copies the 0x100 bytes at __system_reset_kernel to addr 0x100. |
261 | 271 | ||
262 | system_reset_overlay=0x`${CROSS}nm "$ofile" \ | 272 | system_reset_overlay=0x`${CROSS}nm "$ofile".elf \ |
263 | | grep ' __system_reset_overlay$' \ | 273 | | grep ' __system_reset_overlay$' \ |
264 | | cut -d' ' -f1` | 274 | | cut -d' ' -f1` |
265 | system_reset_overlay=`printf "%d" $system_reset_overlay` | 275 | system_reset_overlay=`printf "%d" $system_reset_overlay` |
266 | system_reset_kernel=0x`${CROSS}nm "$ofile" \ | 276 | system_reset_kernel=0x`${CROSS}nm "$ofile".elf \ |
267 | | grep ' __system_reset_kernel$' \ | 277 | | grep ' __system_reset_kernel$' \ |
268 | | cut -d' ' -f1` | 278 | | cut -d' ' -f1` |
269 | system_reset_kernel=`printf "%d" $system_reset_kernel` | 279 | system_reset_kernel=`printf "%d" $system_reset_kernel` |
@@ -272,8 +282,6 @@ ps3) | |||
272 | 282 | ||
273 | rm -f "$object/otheros.bld" | 283 | rm -f "$object/otheros.bld" |
274 | 284 | ||
275 | ${CROSS}objcopy -O binary "$ofile" "$ofile.bin" | ||
276 | |||
277 | msg=$(dd if="$ofile.bin" of="$ofile.bin" conv=notrunc \ | 285 | msg=$(dd if="$ofile.bin" of="$ofile.bin" conv=notrunc \ |
278 | skip=$overlay_dest seek=$system_reset_kernel \ | 286 | skip=$overlay_dest seek=$system_reset_kernel \ |
279 | count=$overlay_size bs=1 2>&1) | 287 | count=$overlay_size bs=1 2>&1) |