diff options
author | Scott Wood <scottwood@freescale.com> | 2008-01-17 17:32:05 -0500 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2008-01-23 20:34:43 -0500 |
commit | 0dde1a1df9ab0615ed08558fb7144e7739e9f565 (patch) | |
tree | aa7de7a3acedc0407649b53811962b62ebed47cc /arch/powerpc/boot | |
parent | b09c16440eb39c12cc91aea5b572c753a5567d57 (diff) |
[POWERPC] 82xx: Embedded Planet EP8248E support
This board is also resold by Freescale under the names
"QUICCStart MPC8248 Evaluation System" and "CWH-PPC-8248N-VE".
Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/boot')
-rw-r--r-- | arch/powerpc/boot/Makefile | 3 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/ep8248e.dts | 207 | ||||
-rw-r--r-- | arch/powerpc/boot/ep8248e.c | 55 | ||||
-rwxr-xr-x | arch/powerpc/boot/wrapper | 2 |
4 files changed, 265 insertions, 2 deletions
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 08bf7aa85c54..fcca455a8c02 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -62,7 +62,7 @@ src-plat := of.c cuboot-52xx.c cuboot-83xx.c cuboot-85xx.c holly.c \ | |||
62 | ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ | 62 | ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ |
63 | cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ | 63 | cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ |
64 | fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c \ | 64 | fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c \ |
65 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c | 65 | cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c |
66 | src-boot := $(src-wlib) $(src-plat) empty.c | 66 | src-boot := $(src-wlib) $(src-plat) empty.c |
67 | 67 | ||
68 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 68 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
@@ -195,6 +195,7 @@ image-$(CONFIG_PPC_8xx) += cuImage.8xx | |||
195 | image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc | 195 | image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc |
196 | image-$(CONFIG_EP405) += zImage.ep405 | 196 | image-$(CONFIG_EP405) += zImage.ep405 |
197 | image-$(CONFIG_8260) += cuImage.pq2 | 197 | image-$(CONFIG_8260) += cuImage.pq2 |
198 | image-$(CONFIG_EP8248E) += zImage.ep8248e | ||
198 | image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx | 199 | image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx |
199 | image-$(CONFIG_PPC_83xx) += cuImage.83xx | 200 | image-$(CONFIG_PPC_83xx) += cuImage.83xx |
200 | image-$(CONFIG_PPC_85xx) += cuImage.85xx | 201 | image-$(CONFIG_PPC_85xx) += cuImage.85xx |
diff --git a/arch/powerpc/boot/dts/ep8248e.dts b/arch/powerpc/boot/dts/ep8248e.dts new file mode 100644 index 000000000000..5d2fb76a72c1 --- /dev/null +++ b/arch/powerpc/boot/dts/ep8248e.dts | |||
@@ -0,0 +1,207 @@ | |||
1 | /* | ||
2 | * Device Tree for the Embedded Planet EP8248E board running PlanetCore. | ||
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 | /dts-v1/; | ||
13 | / { | ||
14 | model = "EP8248E"; | ||
15 | compatible = "fsl,ep8248e"; | ||
16 | #address-cells = <1>; | ||
17 | #size-cells = <1>; | ||
18 | |||
19 | aliases { | ||
20 | planetcore-SMC1 = &smc1; | ||
21 | planetcore-SCC1 = &scc1; | ||
22 | ethernet0 = ð0; | ||
23 | ethernet1 = ð1; | ||
24 | serial0 = &smc1; | ||
25 | serial1 = &scc1; | ||
26 | }; | ||
27 | |||
28 | cpus { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | PowerPC,8248@0 { | ||
33 | device_type = "cpu"; | ||
34 | reg = <0>; | ||
35 | d-cache-line-size = <32>; | ||
36 | i-cache-line-size = <32>; | ||
37 | d-cache-size = <16384>; | ||
38 | i-cache-size = <16384>; | ||
39 | timebase-frequency = <0>; | ||
40 | clock-frequency = <0>; | ||
41 | }; | ||
42 | }; | ||
43 | |||
44 | localbus@f0010100 { | ||
45 | compatible = "fsl,mpc8248-localbus", | ||
46 | "fsl,pq2-localbus", | ||
47 | "simple-bus"; | ||
48 | #address-cells = <2>; | ||
49 | #size-cells = <1>; | ||
50 | reg = <0xf0010100 0x40>; | ||
51 | |||
52 | ranges = <0 0 0xfc000000 0x04000000 | ||
53 | 1 0 0xfa000000 0x00008000>; | ||
54 | |||
55 | flash@0,3800000 { | ||
56 | compatible = "cfi-flash"; | ||
57 | reg = <0 0x3800000 0x800000>; | ||
58 | bank-width = <4>; | ||
59 | device-width = <2>; | ||
60 | }; | ||
61 | |||
62 | bcsr@1,0 { | ||
63 | #address-cells = <2>; | ||
64 | #size-cells = <1>; | ||
65 | reg = <1 0 0x10>; | ||
66 | compatible = "fsl,ep8248e-bcsr"; | ||
67 | ranges; | ||
68 | |||
69 | mdio { | ||
70 | device_type = "mdio"; | ||
71 | compatible = "fsl,ep8248e-mdio-bitbang"; | ||
72 | #address-cells = <1>; | ||
73 | #size-cells = <0>; | ||
74 | reg = <1 8 1>; | ||
75 | |||
76 | PHY0: ethernet-phy@0 { | ||
77 | interrupt-parent = <&PIC>; | ||
78 | reg = <0>; | ||
79 | device_type = "ethernet-phy"; | ||
80 | }; | ||
81 | |||
82 | PHY1: ethernet-phy@1 { | ||
83 | interrupt-parent = <&PIC>; | ||
84 | reg = <1>; | ||
85 | device_type = "ethernet-phy"; | ||
86 | }; | ||
87 | }; | ||
88 | }; | ||
89 | }; | ||
90 | |||
91 | memory { | ||
92 | device_type = "memory"; | ||
93 | reg = <0 0>; | ||
94 | }; | ||
95 | |||
96 | soc@f0000000 { | ||
97 | #address-cells = <1>; | ||
98 | #size-cells = <1>; | ||
99 | compatible = "fsl,mpc8248-immr", "fsl,pq2-soc", "simple-bus"; | ||
100 | ranges = <0x00000000 0xf0000000 0x00053000>; | ||
101 | |||
102 | // Temporary until code stops depending on it. | ||
103 | device_type = "soc"; | ||
104 | |||
105 | // Temporary -- will go away once kernel uses ranges for get_immrbase(). | ||
106 | reg = <0xf0000000 0x00053000>; | ||
107 | |||
108 | cpm@119c0 { | ||
109 | #address-cells = <1>; | ||
110 | #size-cells = <1>; | ||
111 | #interrupt-cells = <2>; | ||
112 | compatible = "fsl,mpc8248-cpm", "fsl,cpm2", | ||
113 | "simple-bus"; | ||
114 | reg = <0x119c0 0x30>; | ||
115 | ranges; | ||
116 | |||
117 | muram { | ||
118 | #address-cells = <1>; | ||
119 | #size-cells = <1>; | ||
120 | ranges = <0 0 0x10000>; | ||
121 | |||
122 | data@0 { | ||
123 | compatible = "fsl,cpm-muram-data"; | ||
124 | reg = <0 0x1100 0x1140 | ||
125 | 0xec0 0x9800 0x800>; | ||
126 | }; | ||
127 | }; | ||
128 | |||
129 | brg@119f0 { | ||
130 | compatible = "fsl,mpc8248-brg", | ||
131 | "fsl,cpm2-brg", | ||
132 | "fsl,cpm-brg"; | ||
133 | reg = <0x119f0 0x10 0x115f0 0x10>; | ||
134 | }; | ||
135 | |||
136 | /* Monitor port/SMC1 */ | ||
137 | smc1: serial@11a80 { | ||
138 | device_type = "serial"; | ||
139 | compatible = "fsl,mpc8248-smc-uart", | ||
140 | "fsl,cpm2-smc-uart"; | ||
141 | reg = <0x11a80 0x20 0x1100 0x40>; | ||
142 | interrupts = <4 8>; | ||
143 | interrupt-parent = <&PIC>; | ||
144 | fsl,cpm-brg = <7>; | ||
145 | fsl,cpm-command = <0x1d000000>; | ||
146 | linux,planetcore-label = "SMC1"; | ||
147 | }; | ||
148 | |||
149 | /* "Serial" port/SCC1 */ | ||
150 | scc1: serial@11a00 { | ||
151 | device_type = "serial"; | ||
152 | compatible = "fsl,mpc8248-scc-uart", | ||
153 | "fsl,cpm2-scc-uart"; | ||
154 | reg = <0x11a00 0x20 0x8000 0x100>; | ||
155 | interrupts = <40 8>; | ||
156 | interrupt-parent = <&PIC>; | ||
157 | fsl,cpm-brg = <1>; | ||
158 | fsl,cpm-command = <0x00800000>; | ||
159 | linux,planetcore-label = "SCC1"; | ||
160 | }; | ||
161 | |||
162 | eth0: ethernet@11300 { | ||
163 | device_type = "network"; | ||
164 | compatible = "fsl,mpc8248-fcc-enet", | ||
165 | "fsl,cpm2-fcc-enet"; | ||
166 | reg = <0x11300 0x20 0x8400 0x100 0x11390 1>; | ||
167 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
168 | interrupts = <32 8>; | ||
169 | interrupt-parent = <&PIC>; | ||
170 | phy-handle = <&PHY0>; | ||
171 | linux,network-index = <0>; | ||
172 | fsl,cpm-command = <0x12000300>; | ||
173 | }; | ||
174 | |||
175 | eth1: ethernet@11320 { | ||
176 | device_type = "network"; | ||
177 | compatible = "fsl,mpc8248-fcc-enet", | ||
178 | "fsl,cpm2-fcc-enet"; | ||
179 | reg = <0x11320 0x20 0x8500 0x100 0x113b0 1>; | ||
180 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
181 | interrupts = <33 8>; | ||
182 | interrupt-parent = <&PIC>; | ||
183 | phy-handle = <&PHY1>; | ||
184 | linux,network-index = <1>; | ||
185 | fsl,cpm-command = <0x16200300>; | ||
186 | }; | ||
187 | |||
188 | usb@11b60 { | ||
189 | #address-cells = <1>; | ||
190 | #size-cells = <0>; | ||
191 | compatible = "fsl,mpc8248-usb", | ||
192 | "fsl,cpm2-usb"; | ||
193 | reg = <0x11b60 0x18 0x8b00 0x100>; | ||
194 | interrupt-parent = <&PIC>; | ||
195 | interrupts = <11 8>; | ||
196 | fsl,cpm-command = <0x2e600000>; | ||
197 | }; | ||
198 | }; | ||
199 | |||
200 | PIC: interrupt-controller@10c00 { | ||
201 | #interrupt-cells = <2>; | ||
202 | interrupt-controller; | ||
203 | reg = <0x10c00 0x80>; | ||
204 | compatible = "fsl,mpc8248-pic", "fsl,pq2-pic"; | ||
205 | }; | ||
206 | }; | ||
207 | }; | ||
diff --git a/arch/powerpc/boot/ep8248e.c b/arch/powerpc/boot/ep8248e.c new file mode 100644 index 000000000000..f57d14d0272b --- /dev/null +++ b/arch/powerpc/boot/ep8248e.c | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | * Embedded Planet EP8248E 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 "pq2.h" | ||
17 | |||
18 | static char *table; | ||
19 | static u64 mem_size; | ||
20 | |||
21 | #include <io.h> | ||
22 | |||
23 | static void platform_fixups(void) | ||
24 | { | ||
25 | u64 val; | ||
26 | |||
27 | dt_fixup_memory(0, mem_size); | ||
28 | planetcore_set_mac_addrs(table); | ||
29 | |||
30 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) { | ||
31 | printf("No PlanetCore crystal frequency key.\r\n"); | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | pq2_fixup_clocks(val); | ||
36 | } | ||
37 | |||
38 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | ||
39 | unsigned long r6, unsigned long r7) | ||
40 | { | ||
41 | table = (char *)r3; | ||
42 | planetcore_prepare_table(table); | ||
43 | |||
44 | if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size)) | ||
45 | return; | ||
46 | |||
47 | mem_size *= 1024 * 1024; | ||
48 | simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64); | ||
49 | |||
50 | fdt_init(_dtb_start); | ||
51 | |||
52 | planetcore_set_stdout_path(table); | ||
53 | serial_console_init(); | ||
54 | platform_ops.fixups = platform_fixups; | ||
55 | } | ||
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index a7c46715af10..763a0c46f441 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -168,7 +168,7 @@ ps3) | |||
168 | ksection=.kernel:vmlinux.bin | 168 | ksection=.kernel:vmlinux.bin |
169 | isection=.kernel:initrd | 169 | isection=.kernel:initrd |
170 | ;; | 170 | ;; |
171 | ep88xc|ep405|redboot*) | 171 | ep88xc|ep405|redboot*|ep8248e) |
172 | platformo="$object/fixed-head.o $object/$platform.o" | 172 | platformo="$object/fixed-head.o $object/$platform.o" |
173 | binary=y | 173 | binary=y |
174 | ;; | 174 | ;; |