aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/boot
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2008-01-17 17:32:05 -0500
committerKumar Gala <galak@kernel.crashing.org>2008-01-23 20:34:43 -0500
commit0dde1a1df9ab0615ed08558fb7144e7739e9f565 (patch)
treeaa7de7a3acedc0407649b53811962b62ebed47cc /arch/powerpc/boot
parentb09c16440eb39c12cc91aea5b572c753a5567d57 (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/Makefile3
-rw-r--r--arch/powerpc/boot/dts/ep8248e.dts207
-rw-r--r--arch/powerpc/boot/ep8248e.c55
-rwxr-xr-xarch/powerpc/boot/wrapper2
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
66src-boot := $(src-wlib) $(src-plat) empty.c 66src-boot := $(src-wlib) $(src-plat) empty.c
67 67
68src-boot := $(addprefix $(obj)/, $(src-boot)) 68src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -195,6 +195,7 @@ image-$(CONFIG_PPC_8xx) += cuImage.8xx
195image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc 195image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc
196image-$(CONFIG_EP405) += zImage.ep405 196image-$(CONFIG_EP405) += zImage.ep405
197image-$(CONFIG_8260) += cuImage.pq2 197image-$(CONFIG_8260) += cuImage.pq2
198image-$(CONFIG_EP8248E) += zImage.ep8248e
198image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx 199image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx
199image-$(CONFIG_PPC_83xx) += cuImage.83xx 200image-$(CONFIG_PPC_83xx) += cuImage.83xx
200image-$(CONFIG_PPC_85xx) += cuImage.85xx 201image-$(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 = &eth0;
23 ethernet1 = &eth1;
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
18static char *table;
19static u64 mem_size;
20
21#include <io.h>
22
23static 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
38void 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 ;;
171ep88xc|ep405|redboot*) 171ep88xc|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 ;;