diff options
author | Paul Mackerras <paulus@samba.org> | 2008-06-29 19:57:05 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-06-29 19:57:05 -0400 |
commit | 441dbb500b4344a8e3125e5aabab4f9dbf72514f (patch) | |
tree | 3bb8fb1a88db3f5d03062a4887312f25c2e8041d /arch/powerpc/boot | |
parent | dee805532a30183c4462305b4614e58bd83a7bc1 (diff) | |
parent | 5ce4b59653b2c2053cd9a011918ac1e4747f24cc (diff) |
Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx
Diffstat (limited to 'arch/powerpc/boot')
-rw-r--r-- | arch/powerpc/boot/Makefile | 3 | ||||
-rw-r--r-- | arch/powerpc/boot/cuboot-sam440ep.c | 49 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/sam440ep.dts | 293 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/taishan.dts | 29 |
4 files changed, 372 insertions, 2 deletions
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 25d9fb0433f..3463253893f 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -66,7 +66,7 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c | |||
66 | fixed-head.S ep88xc.c ep405.c cuboot-c2k.c \ | 66 | fixed-head.S ep88xc.c ep405.c cuboot-c2k.c \ |
67 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ | 67 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ |
68 | cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ | 68 | cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ |
69 | virtex405-head.S redboot-83xx.c | 69 | virtex405-head.S redboot-83xx.c cuboot-sam440ep.c |
70 | src-boot := $(src-wlib) $(src-plat) empty.c | 70 | src-boot := $(src-wlib) $(src-plat) empty.c |
71 | 71 | ||
72 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 72 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
@@ -213,6 +213,7 @@ image-$(CONFIG_WALNUT) += treeImage.walnut | |||
213 | # Board ports in arch/powerpc/platform/44x/Kconfig | 213 | # Board ports in arch/powerpc/platform/44x/Kconfig |
214 | image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony | 214 | image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony |
215 | image-$(CONFIG_BAMBOO) += treeImage.bamboo cuImage.bamboo | 215 | image-$(CONFIG_BAMBOO) += treeImage.bamboo cuImage.bamboo |
216 | image-$(CONFIG_SAM440EP) += cuImage.sam440ep | ||
216 | image-$(CONFIG_SEQUOIA) += cuImage.sequoia | 217 | image-$(CONFIG_SEQUOIA) += cuImage.sequoia |
217 | image-$(CONFIG_RAINIER) += cuImage.rainier | 218 | image-$(CONFIG_RAINIER) += cuImage.rainier |
218 | image-$(CONFIG_TAISHAN) += cuImage.taishan | 219 | image-$(CONFIG_TAISHAN) += cuImage.taishan |
diff --git a/arch/powerpc/boot/cuboot-sam440ep.c b/arch/powerpc/boot/cuboot-sam440ep.c new file mode 100644 index 00000000000..ec10a47460d --- /dev/null +++ b/arch/powerpc/boot/cuboot-sam440ep.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * Old U-boot compatibility for Sam440ep based off bamboo.c code | ||
3 | * original copyrights below | ||
4 | * | ||
5 | * Author: Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
6 | * | ||
7 | * Copyright 2007 IBM Corporation | ||
8 | * | ||
9 | * Based on cuboot-ebony.c | ||
10 | * | ||
11 | * Modified from cuboot-bamboo.c for sam440ep: | ||
12 | * Copyright 2008 Giuseppe Coviello <gicoviello@gmail.com> | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify it | ||
15 | * under the terms of the GNU General Public License version 2 as published | ||
16 | * by the Free Software Foundation. | ||
17 | */ | ||
18 | |||
19 | #include "ops.h" | ||
20 | #include "stdio.h" | ||
21 | #include "44x.h" | ||
22 | #include "4xx.h" | ||
23 | #include "cuboot.h" | ||
24 | |||
25 | #define TARGET_4xx | ||
26 | #define TARGET_44x | ||
27 | #include "ppcboot.h" | ||
28 | |||
29 | static bd_t bd; | ||
30 | |||
31 | static void sam440ep_fixups(void) | ||
32 | { | ||
33 | unsigned long sysclk = 66666666; | ||
34 | |||
35 | ibm440ep_fixup_clocks(sysclk, 11059200, 25000000); | ||
36 | ibm4xx_sdram_fixup_memsize(); | ||
37 | ibm4xx_quiesce_eth((u32 *)0xef600e00, (u32 *)0xef600f00); | ||
38 | dt_fixup_mac_addresses(&bd.bi_enetaddr, &bd.bi_enet1addr); | ||
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 | platform_ops.fixups = sam440ep_fixups; | ||
46 | platform_ops.exit = ibm44x_dbcr_reset; | ||
47 | fdt_init(_dtb_start); | ||
48 | serial_console_init(); | ||
49 | } | ||
diff --git a/arch/powerpc/boot/dts/sam440ep.dts b/arch/powerpc/boot/dts/sam440ep.dts new file mode 100644 index 00000000000..f0663be1042 --- /dev/null +++ b/arch/powerpc/boot/dts/sam440ep.dts | |||
@@ -0,0 +1,293 @@ | |||
1 | /* | ||
2 | * Device Tree Source for ACube Sam440ep based off bamboo.dts code | ||
3 | * original copyrights below | ||
4 | * | ||
5 | * Copyright (c) 2006, 2007 IBM Corp. | ||
6 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
7 | * | ||
8 | * Modified from bamboo.dts for sam440ep: | ||
9 | * Copyright 2008 Giuseppe Coviello <gicoviello@gmail.com> | ||
10 | * | ||
11 | * This file is licensed under the terms of the GNU General Public | ||
12 | * License version 2. This program is licensed "as is" without | ||
13 | * any warranty of any kind, whether express or implied. | ||
14 | */ | ||
15 | |||
16 | /dts-v1/; | ||
17 | |||
18 | / { | ||
19 | #address-cells = <2>; | ||
20 | #size-cells = <1>; | ||
21 | model = "acube,sam440ep"; | ||
22 | compatible = "acube,sam440ep"; | ||
23 | |||
24 | aliases { | ||
25 | ethernet0 = &EMAC0; | ||
26 | ethernet1 = &EMAC1; | ||
27 | serial0 = &UART0; | ||
28 | serial1 = &UART1; | ||
29 | serial2 = &UART2; | ||
30 | serial3 = &UART3; | ||
31 | }; | ||
32 | |||
33 | cpus { | ||
34 | #address-cells = <1>; | ||
35 | #size-cells = <0>; | ||
36 | |||
37 | cpu@0 { | ||
38 | device_type = "cpu"; | ||
39 | model = "PowerPC,440EP"; | ||
40 | reg = <0>; | ||
41 | clock-frequency = <0>; /* Filled in by zImage */ | ||
42 | timebase-frequency = <0>; /* Filled in by zImage */ | ||
43 | i-cache-line-size = <32>; | ||
44 | d-cache-line-size = <32>; | ||
45 | i-cache-size = <32768>; | ||
46 | d-cache-size = <32768>; | ||
47 | dcr-controller; | ||
48 | dcr-access-method = "native"; | ||
49 | }; | ||
50 | }; | ||
51 | |||
52 | memory { | ||
53 | device_type = "memory"; | ||
54 | reg = <0 0 0>; /* Filled in by zImage */ | ||
55 | }; | ||
56 | |||
57 | UIC0: interrupt-controller0 { | ||
58 | compatible = "ibm,uic-440ep","ibm,uic"; | ||
59 | interrupt-controller; | ||
60 | cell-index = <0>; | ||
61 | dcr-reg = <0x0c0 9>; | ||
62 | #address-cells = <0>; | ||
63 | #size-cells = <0>; | ||
64 | #interrupt-cells = <2>; | ||
65 | }; | ||
66 | |||
67 | UIC1: interrupt-controller1 { | ||
68 | compatible = "ibm,uic-440ep","ibm,uic"; | ||
69 | interrupt-controller; | ||
70 | cell-index = <1>; | ||
71 | dcr-reg = <0x0d0 9>; | ||
72 | #address-cells = <0>; | ||
73 | #size-cells = <0>; | ||
74 | #interrupt-cells = <2>; | ||
75 | interrupts = <0x1e 4 0x1f 4>; /* cascade */ | ||
76 | interrupt-parent = <&UIC0>; | ||
77 | }; | ||
78 | |||
79 | SDR0: sdr { | ||
80 | compatible = "ibm,sdr-440ep"; | ||
81 | dcr-reg = <0x00e 2>; | ||
82 | }; | ||
83 | |||
84 | CPR0: cpr { | ||
85 | compatible = "ibm,cpr-440ep"; | ||
86 | dcr-reg = <0x00c 2>; | ||
87 | }; | ||
88 | |||
89 | plb { | ||
90 | compatible = "ibm,plb-440ep", "ibm,plb-440gp", "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 | compatible = "ibm,sdram-440ep", "ibm,sdram-405gp"; | ||
98 | dcr-reg = <0x010 2>; | ||
99 | }; | ||
100 | |||
101 | DMA0: dma { | ||
102 | compatible = "ibm,dma-440ep", "ibm,dma-440gp"; | ||
103 | dcr-reg = <0x100 0x027>; | ||
104 | }; | ||
105 | |||
106 | MAL0: mcmal { | ||
107 | compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal"; | ||
108 | dcr-reg = <0x180 0x062>; | ||
109 | num-tx-chans = <4>; | ||
110 | num-rx-chans = <2>; | ||
111 | interrupt-parent = <&MAL0>; | ||
112 | interrupts = <0 1 2 3 4>; | ||
113 | #interrupt-cells = <1>; | ||
114 | #address-cells = <0>; | ||
115 | #size-cells = <0>; | ||
116 | interrupt-map = </*TXEOB*/ 0 &UIC0 10 4 | ||
117 | /*RXEOB*/ 1 &UIC0 11 4 | ||
118 | /*SERR*/ 2 &UIC1 0 4 | ||
119 | /*TXDE*/ 3 &UIC1 1 4 | ||
120 | /*RXDE*/ 4 &UIC1 2 4>; | ||
121 | }; | ||
122 | |||
123 | POB0: opb { | ||
124 | compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb"; | ||
125 | #address-cells = <1>; | ||
126 | #size-cells = <1>; | ||
127 | /* Bamboo is oddball in the 44x world and doesn't use the ERPN | ||
128 | * bits. | ||
129 | */ | ||
130 | ranges = <0x00000000 0 0x00000000 0x80000000 | ||
131 | 0x80000000 0 0x80000000 0x80000000>; | ||
132 | interrupt-parent = <&UIC1>; | ||
133 | interrupts = <7 4>; | ||
134 | clock-frequency = <0>; /* Filled in by zImage */ | ||
135 | |||
136 | EBC0: ebc { | ||
137 | compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc"; | ||
138 | dcr-reg = <0x012 2>; | ||
139 | #address-cells = <2>; | ||
140 | #size-cells = <1>; | ||
141 | clock-frequency = <0>; /* Filled in by zImage */ | ||
142 | interrupts = <5 1>; | ||
143 | interrupt-parent = <&UIC1>; | ||
144 | }; | ||
145 | |||
146 | UART0: serial@ef600300 { | ||
147 | device_type = "serial"; | ||
148 | compatible = "ns16550"; | ||
149 | reg = <0xef600300 8>; | ||
150 | virtual-reg = <0xef600300>; | ||
151 | clock-frequency = <0>; /* Filled in by zImage */ | ||
152 | current-speed = <0x1c200>; | ||
153 | interrupt-parent = <&UIC0>; | ||
154 | interrupts = <0 4>; | ||
155 | }; | ||
156 | |||
157 | UART1: serial@ef600400 { | ||
158 | device_type = "serial"; | ||
159 | compatible = "ns16550"; | ||
160 | reg = <0xef600400 8>; | ||
161 | virtual-reg = <0xef600400>; | ||
162 | clock-frequency = <0>; | ||
163 | current-speed = <0>; | ||
164 | interrupt-parent = <&UIC0>; | ||
165 | interrupts = <1 4>; | ||
166 | }; | ||
167 | |||
168 | UART2: serial@ef600500 { | ||
169 | device_type = "serial"; | ||
170 | compatible = "ns16550"; | ||
171 | reg = <0xef600500 8>; | ||
172 | virtual-reg = <0xef600500>; | ||
173 | clock-frequency = <0>; | ||
174 | current-speed = <0>; | ||
175 | interrupt-parent = <&UIC0>; | ||
176 | interrupts = <3 4>; | ||
177 | }; | ||
178 | |||
179 | UART3: serial@ef600600 { | ||
180 | device_type = "serial"; | ||
181 | compatible = "ns16550"; | ||
182 | reg = <0xef600600 8>; | ||
183 | virtual-reg = <0xef600600>; | ||
184 | clock-frequency = <0>; | ||
185 | current-speed = <0>; | ||
186 | interrupt-parent = <&UIC0>; | ||
187 | interrupts = <4 4>; | ||
188 | }; | ||
189 | |||
190 | IIC0: i2c@ef600700 { | ||
191 | #address-cells = <1>; | ||
192 | #size-cells = <0>; | ||
193 | compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; | ||
194 | index = <0>; | ||
195 | reg = <0xef600700 0x14>; | ||
196 | interrupt-parent = <&UIC0>; | ||
197 | interrupts = <2 4>; | ||
198 | rtc@68 { | ||
199 | compatible = "stm,m41t80"; | ||
200 | reg = <0x68>; | ||
201 | }; | ||
202 | }; | ||
203 | |||
204 | IIC1: i2c@ef600800 { | ||
205 | compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic"; | ||
206 | index = <5>; | ||
207 | reg = <0xef600800 0x14>; | ||
208 | interrupt-parent = <&UIC0>; | ||
209 | interrupts = <7 4>; | ||
210 | }; | ||
211 | |||
212 | ZMII0: emac-zmii@ef600d00 { | ||
213 | compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii"; | ||
214 | reg = <0xef600d00 0xc>; | ||
215 | }; | ||
216 | |||
217 | EMAC0: ethernet@ef600e00 { | ||
218 | linux,network-index = <0>; | ||
219 | device_type = "network"; | ||
220 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | ||
221 | interrupt-parent = <&UIC1>; | ||
222 | interrupts = <0x1c 4 0x1d 4>; | ||
223 | reg = <0xef600e00 0x70>; | ||
224 | local-mac-address = [000000000000]; | ||
225 | mal-device = <&MAL0>; | ||
226 | mal-tx-channel = <0 1>; | ||
227 | mal-rx-channel = <0>; | ||
228 | cell-index = <0>; | ||
229 | max-frame-size = <0x5dc>; | ||
230 | rx-fifo-size = <0x1000>; | ||
231 | tx-fifo-size = <0x800>; | ||
232 | phy-mode = "rmii"; | ||
233 | phy-map = <00000000>; | ||
234 | zmii-device = <&ZMII0>; | ||
235 | zmii-channel = <0>; | ||
236 | }; | ||
237 | |||
238 | EMAC1: ethernet@ef600f00 { | ||
239 | linux,network-index = <1>; | ||
240 | device_type = "network"; | ||
241 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | ||
242 | interrupt-parent = <&UIC1>; | ||
243 | interrupts = <0x1e 4 0x1f 4>; | ||
244 | reg = <0xef600f00 0x70>; | ||
245 | local-mac-address = [000000000000]; | ||
246 | mal-device = <&MAL0>; | ||
247 | mal-tx-channel = <2 3>; | ||
248 | mal-rx-channel = <1>; | ||
249 | cell-index = <1>; | ||
250 | max-frame-size = <0x5dc>; | ||
251 | rx-fifo-size = <0x1000>; | ||
252 | tx-fifo-size = <0x800>; | ||
253 | phy-mode = "rmii"; | ||
254 | phy-map = <00000000>; | ||
255 | zmii-device = <&ZMII0>; | ||
256 | zmii-channel = <1>; | ||
257 | }; | ||
258 | usb@ef601000 { | ||
259 | compatible = "ohci-be"; | ||
260 | reg = <0xef601000 0x80>; | ||
261 | interrupts = <8 4 9 4>; | ||
262 | interrupt-parent = <&UIC1>; | ||
263 | }; | ||
264 | }; | ||
265 | |||
266 | PCI0: pci@ec000000 { | ||
267 | device_type = "pci"; | ||
268 | #interrupt-cells = <1>; | ||
269 | #size-cells = <2>; | ||
270 | #address-cells = <3>; | ||
271 | compatible = "ibm,plb440ep-pci", "ibm,plb-pci"; | ||
272 | primary; | ||
273 | reg = <0 0xeec00000 8 /* Config space access */ | ||
274 | 0 0xeed00000 4 /* IACK */ | ||
275 | 0 0xeed00000 4 /* Special cycle */ | ||
276 | 0 0xef400000 0x40>; /* Internal registers */ | ||
277 | |||
278 | /* Outbound ranges, one memory and one IO, | ||
279 | * later cannot be changed. Chip supports a second | ||
280 | * IO range but we don't use it for now | ||
281 | */ | ||
282 | ranges = <0x02000000 0 0xa0000000 0 0xa0000000 0 0x20000000 | ||
283 | 0x01000000 0 0x00000000 0 0xe8000000 0 0x00010000>; | ||
284 | |||
285 | /* Inbound 2GB range starting at 0 */ | ||
286 | dma-ranges = <0x42000000 0 0 0 0 0 0x80000000>; | ||
287 | }; | ||
288 | }; | ||
289 | |||
290 | chosen { | ||
291 | linux,stdout-path = "/plb/opb/serial@ef600300"; | ||
292 | }; | ||
293 | }; | ||
diff --git a/arch/powerpc/boot/dts/taishan.dts b/arch/powerpc/boot/dts/taishan.dts index dcb749884b6..d4867ded869 100644 --- a/arch/powerpc/boot/dts/taishan.dts +++ b/arch/powerpc/boot/dts/taishan.dts | |||
@@ -186,7 +186,34 @@ | |||
186 | interrupts = <0x5 0x4>; | 186 | interrupts = <0x5 0x4>; |
187 | interrupt-parent = <&UIC1>; | 187 | interrupt-parent = <&UIC1>; |
188 | 188 | ||
189 | /* TODO: Add other EBC devices */ | 189 | nor_flash@0,0 { |
190 | compatible = "cfi-flash"; | ||
191 | bank-width = <4>; | ||
192 | device-width = <2>; | ||
193 | reg = <0x0 0x0 0x4000000>; | ||
194 | #address-cells = <1>; | ||
195 | #size-cells = <1>; | ||
196 | partition@0 { | ||
197 | label = "kernel"; | ||
198 | reg = <0x0 0x180000>; | ||
199 | }; | ||
200 | partition@180000 { | ||
201 | label = "root"; | ||
202 | reg = <0x180000 0x200000>; | ||
203 | }; | ||
204 | partition@380000 { | ||
205 | label = "user"; | ||
206 | reg = <0x380000 0x3bc0000>; | ||
207 | }; | ||
208 | partition@3f40000 { | ||
209 | label = "env"; | ||
210 | reg = <0x3f40000 0x80000>; | ||
211 | }; | ||
212 | partition@3fc0000 { | ||
213 | label = "u-boot"; | ||
214 | reg = <0x3fc0000 0x40000>; | ||
215 | }; | ||
216 | }; | ||
190 | }; | 217 | }; |
191 | 218 | ||
192 | 219 | ||