diff options
author | Paul Mackerras <paulus@samba.org> | 2007-07-10 23:28:26 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-07-10 23:28:26 -0400 |
commit | bf22f6fe2d72b4d7e9035be8ceb340414cf490e3 (patch) | |
tree | 14085d90de0428316479fe6de8a0c6d32e6e65e2 /arch/powerpc/boot | |
parent | 4eb6bf6bfb580afaf1e1a1d30cba17a078530cf4 (diff) | |
parent | 93ab471889c6662b42ce7da257f31f24c08d7d9e (diff) |
Merge branch 'for-2.6.23' into merge
Diffstat (limited to 'arch/powerpc/boot')
45 files changed, 1717 insertions, 767 deletions
diff --git a/arch/powerpc/boot/44x.c b/arch/powerpc/boot/44x.c index d51377d9024f..9f64e840bef6 100644 --- a/arch/powerpc/boot/44x.c +++ b/arch/powerpc/boot/44x.c | |||
@@ -38,3 +38,48 @@ void ibm44x_fixup_memsize(void) | |||
38 | 38 | ||
39 | dt_fixup_memory(0, memsize); | 39 | dt_fixup_memory(0, memsize); |
40 | } | 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 7b129ad043e1..577982c9a3cd 100644 --- a/arch/powerpc/boot/44x.h +++ b/arch/powerpc/boot/44x.h | |||
@@ -11,6 +11,9 @@ | |||
11 | #define _PPC_BOOT_44X_H_ | 11 | #define _PPC_BOOT_44X_H_ |
12 | 12 | ||
13 | void ibm44x_fixup_memsize(void); | 13 | void ibm44x_fixup_memsize(void); |
14 | void ibm4xx_fixup_ebc_ranges(const char *ebc); | ||
15 | |||
16 | void ibm44x_dbcr_reset(void); | ||
14 | void ebony_init(void *mac0, void *mac1); | 17 | void ebony_init(void *mac0, void *mac1); |
15 | 18 | ||
16 | #endif /* _PPC_BOOT_44X_H_ */ | 19 | #endif /* _PPC_BOOT_44X_H_ */ |
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index ff2701949ee1..61a6f34ca5ed 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -43,10 +43,11 @@ $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \ | |||
43 | 43 | ||
44 | src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \ | 44 | 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 \ | 45 | ns16550.c serial.c simple_alloc.c div64.S util.S \ |
46 | gunzip_util.c elf_util.c $(zlib) devtree.c \ | 46 | 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 | 47 | 44x.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c |
48 | src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \ | 48 | src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \ |
49 | cuboot-ebony.c treeboot-ebony.c prpmc2800.c | 49 | cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ |
50 | ps3-head.S ps3-hvcall.S ps3.c | ||
50 | src-boot := $(src-wlib) $(src-plat) empty.c | 51 | src-boot := $(src-wlib) $(src-plat) empty.c |
51 | 52 | ||
52 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 53 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
@@ -75,11 +76,11 @@ $(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/% | |||
75 | $(obj)/empty.c: | 76 | $(obj)/empty.c: |
76 | @touch $@ | 77 | @touch $@ |
77 | 78 | ||
78 | $(obj)/zImage.lds $(obj)/zImage.coff.lds: $(obj)/%: $(srctree)/$(src)/%.S | 79 | $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds: $(obj)/%: $(srctree)/$(src)/%.S |
79 | @cp $< $@ | 80 | @cp $< $@ |
80 | 81 | ||
81 | clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ | 82 | clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ |
82 | empty.c zImage.coff.lds zImage.lds | 83 | empty.c zImage zImage.coff.lds zImage.ps3.lds zImage.lds |
83 | 84 | ||
84 | quiet_cmd_bootcc = BOOTCC $@ | 85 | quiet_cmd_bootcc = BOOTCC $@ |
85 | cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< | 86 | cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< |
@@ -102,7 +103,7 @@ hostprogs-y := addnote addRamDisk hack-coff mktree | |||
102 | 103 | ||
103 | targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) | 104 | targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) |
104 | extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \ | 105 | extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \ |
105 | $(obj)/zImage.lds $(obj)/zImage.coff.lds | 106 | $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds |
106 | 107 | ||
107 | wrapper :=$(srctree)/$(src)/wrapper | 108 | wrapper :=$(srctree)/$(src)/wrapper |
108 | wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \ | 109 | wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \ |
@@ -132,7 +133,7 @@ image-$(CONFIG_PPC_CELLEB) += zImage.pseries | |||
132 | image-$(CONFIG_PPC_CHRP) += zImage.chrp | 133 | image-$(CONFIG_PPC_CHRP) += zImage.chrp |
133 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp | 134 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp |
134 | image-$(CONFIG_PPC_PMAC) += zImage.pmac | 135 | image-$(CONFIG_PPC_PMAC) += zImage.pmac |
135 | image-$(CONFIG_PPC_HOLLY) += zImage.holly-elf | 136 | image-$(CONFIG_PPC_HOLLY) += zImage.holly |
136 | image-$(CONFIG_PPC_PRPMC2800) += zImage.prpmc2800 | 137 | image-$(CONFIG_PPC_PRPMC2800) += zImage.prpmc2800 |
137 | image-$(CONFIG_PPC_ISERIES) += zImage.iseries | 138 | image-$(CONFIG_PPC_ISERIES) += zImage.iseries |
138 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage | 139 | image-$(CONFIG_DEFAULT_UIMAGE) += uImage |
@@ -157,55 +158,43 @@ targets += $(image-y) $(initrd-y) | |||
157 | 158 | ||
158 | $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz | 159 | $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz |
159 | 160 | ||
160 | dts- := $(patsubst zImage%, zImage.dts%, $(image-n) $(image-)) | 161 | # If CONFIG_WANT_DEVICE_TREE is set and CONFIG_DEVICE_TREE isn't an |
161 | dts-y := $(patsubst zImage%, zImage.dts%, $(image-y)) | 162 | # empty string, define 'dts' to be path to the dts |
162 | dts-y := $(filter-out $(image-y), $(dts-y)) | 163 | # CONFIG_DEVICE_TREE will have "" around it, make sure to strip them |
163 | targets += $(image-y) $(dts-y) | 164 | ifeq ($(CONFIG_WANT_DEVICE_TREE),y) |
164 | 165 | ifneq ($(CONFIG_DEVICE_TREE),"") | |
165 | dts_initrd- := $(patsubst zImage%, zImage.dts_initrd%, $(image-n) $(image-)) | 166 | dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\ |
166 | dts_initrd-y := $(patsubst zImage%, zImage.dts_initrd%, $(image-y)) | 167 | ,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE:"%"=%) |
167 | dts_initrd-y := $(filter-out $(image-y), $(dts_initrd-y)) | 168 | endif |
168 | targets += $(image-y) $(dts_initrd-y) | 169 | endif |
169 | |||
170 | $(addprefix $(obj)/, $(dts_initrd-y)): $(obj)/ramdisk.image.gz | ||
171 | 170 | ||
172 | # Don't put the ramdisk on the pattern rule; when its missing make will try | 171 | # Don't put the ramdisk on the pattern rule; when its missing make will try |
173 | # the pattern rule with less dependencies that also matches (even with the | 172 | # the pattern rule with less dependencies that also matches (even with the |
174 | # hard dependency listed). | 173 | # hard dependency listed). |
175 | $(obj)/zImage.dts_initrd.%: vmlinux $(wrapperbits) $(dts) $(obj)/ramdisk.image.gz | 174 | $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) $(dts) |
176 | $(call if_changed,wrap,$*,$(dts),,$(obj)/ramdisk.image.gz) | 175 | $(call if_changed,wrap,$*,$(dts),,$(obj)/ramdisk.image.gz) |
177 | 176 | ||
178 | $(obj)/zImage.dts.%: vmlinux $(wrapperbits) $(dts) | 177 | $(obj)/zImage.%: vmlinux $(wrapperbits) $(dts) |
179 | $(call if_changed,wrap,$*,$(dts)) | 178 | $(call if_changed,wrap,$*,$(dts)) |
180 | 179 | ||
181 | $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) | 180 | # This cannot be in the root of $(src) as the zImage rule always adds a $(obj) |
182 | $(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz) | 181 | # prefix |
183 | 182 | $(obj)/vmlinux.strip: vmlinux | |
184 | $(obj)/zImage.%: vmlinux $(wrapperbits) | ||
185 | $(call if_changed,wrap,$*) | ||
186 | |||
187 | $(obj)/zImage.iseries: vmlinux | ||
188 | $(STRIP) -s -R .comment $< -o $@ | 183 | $(STRIP) -s -R .comment $< -o $@ |
189 | 184 | ||
190 | $(obj)/zImage.ps3: vmlinux | 185 | $(obj)/zImage.iseries: vmlinux |
191 | $(STRIP) -s -R .comment $< -o $@ | 186 | $(STRIP) -s -R .comment $< -o $@ |
192 | 187 | ||
193 | $(obj)/zImage.initrd.ps3: vmlinux | 188 | $(obj)/zImage.ps3: vmlinux $(wrapper) $(wrapperbits) $(srctree)/$(src)/dts/ps3.dts |
194 | @echo " WARNING zImage.initrd.ps3 not supported (yet)" | 189 | $(STRIP) -s -R .comment $< -o vmlinux.strip |
195 | 190 | $(call cmd,wrap,ps3,$(srctree)/$(src)/dts/ps3.dts,,) | |
196 | $(obj)/zImage.holly-elf: vmlinux $(wrapperbits) | ||
197 | $(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,) | ||
198 | 191 | ||
199 | $(obj)/zImage.initrd.holly-elf: vmlinux $(wrapperbits) $(obj)/ramdisk.image.gz | 192 | $(obj)/zImage.initrd.ps3: vmlinux $(wrapper) $(wrapperbits) $(srctree)/$(src)/dts/ps3.dts $(obj)/ramdisk.image.gz |
200 | $(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,$(obj)/ramdisk.image.gz) | 193 | $(call cmd,wrap,ps3,$(srctree)/$(src)/dts/ps3.dts,,$(obj)/ramdisk.image.gz) |
201 | 194 | ||
202 | $(obj)/uImage: vmlinux $(wrapperbits) | 195 | $(obj)/uImage: vmlinux $(wrapperbits) |
203 | $(call if_changed,wrap,uboot) | 196 | $(call if_changed,wrap,uboot) |
204 | 197 | ||
205 | # CONFIG_DEVICE_TREE will have "" around it, make sure to strip them | ||
206 | dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\ | ||
207 | ,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE:"%"=%) | ||
208 | |||
209 | $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits) | 198 | $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits) |
210 | $(call if_changed,wrap,cuboot-$*,$(dts)) | 199 | $(call if_changed,wrap,cuboot-$*,$(dts)) |
211 | 200 | ||
@@ -215,22 +204,22 @@ $(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits) | |||
215 | $(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits) | 204 | $(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits) |
216 | $(call if_changed,wrap,treeboot-$*,$(dts)) | 205 | $(call if_changed,wrap,treeboot-$*,$(dts)) |
217 | 206 | ||
207 | # If there isn't a platform selected then just strip the vmlinux. | ||
208 | ifeq (,$(image-y)) | ||
209 | image-y := vmlinux.strip | ||
210 | endif | ||
211 | |||
218 | $(obj)/zImage: $(addprefix $(obj)/, $(image-y)) | 212 | $(obj)/zImage: $(addprefix $(obj)/, $(image-y)) |
219 | @rm -f $@; ln $< $@ | 213 | @rm -f $@; ln $< $@ |
220 | $(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y)) | 214 | $(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y)) |
221 | @rm -f $@; ln $< $@ | 215 | @rm -f $@; ln $< $@ |
222 | $(obj)/zImage.dts: $(addprefix $(obj)/, $(dts-y)) | ||
223 | @rm -f $@; ln $< $@ | ||
224 | $(obj)/zImage.dts_initrd: $(addprefix $(obj)/, $(dts_initrd-y)) | ||
225 | @rm -f $@; ln $< $@ | ||
226 | |||
227 | 216 | ||
228 | install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) | 217 | install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) |
229 | sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< | 218 | sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< |
230 | 219 | ||
231 | # anything not in $(targets) | 220 | # anything not in $(targets) |
232 | clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* \ | 221 | clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ |
233 | treeImage.* zImage.dts zImage.dts_initrd | 222 | otheros.bld |
234 | 223 | ||
235 | # clean up files cached by wrapper | 224 | # clean up files cached by wrapper |
236 | clean-kernel := vmlinux.strip vmlinux.bin | 225 | clean-kernel := vmlinux.strip vmlinux.bin |
diff --git a/arch/powerpc/boot/cuboot-83xx.c b/arch/powerpc/boot/cuboot-83xx.c index 9af554eea54b..296025d8b295 100644 --- a/arch/powerpc/boot/cuboot-83xx.c +++ b/arch/powerpc/boot/cuboot-83xx.c | |||
@@ -12,12 +12,12 @@ | |||
12 | 12 | ||
13 | #include "ops.h" | 13 | #include "ops.h" |
14 | #include "stdio.h" | 14 | #include "stdio.h" |
15 | #include "cuboot.h" | ||
15 | 16 | ||
16 | #define TARGET_83xx | 17 | #define TARGET_83xx |
17 | #include "ppcboot.h" | 18 | #include "ppcboot.h" |
18 | 19 | ||
19 | static bd_t bd; | 20 | static bd_t bd; |
20 | extern char _end[]; | ||
21 | extern char _dtb_start[], _dtb_end[]; | 21 | extern char _dtb_start[], _dtb_end[]; |
22 | 22 | ||
23 | static void platform_fixups(void) | 23 | static void platform_fixups(void) |
@@ -52,16 +52,7 @@ static void platform_fixups(void) | |||
52 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | 52 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, |
53 | unsigned long r6, unsigned long r7) | 53 | unsigned long r6, unsigned long r7) |
54 | { | 54 | { |
55 | unsigned long end_of_ram = bd.bi_memstart + bd.bi_memsize; | 55 | CUBOOT_INIT(); |
56 | unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
57 | |||
58 | memcpy(&bd, (bd_t *)r3, sizeof(bd)); | ||
59 | loader_info.initrd_addr = r4; | ||
60 | loader_info.initrd_size = r4 ? r5 - r4 : 0; | ||
61 | loader_info.cmdline = (char *)r6; | ||
62 | loader_info.cmdline_len = r7 - r6; | ||
63 | |||
64 | simple_alloc_init(_end, avail_ram - 1024*1024, 32, 64); | ||
65 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | 56 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); |
66 | serial_console_init(); | 57 | serial_console_init(); |
67 | platform_ops.fixups = platform_fixups; | 58 | platform_ops.fixups = platform_fixups; |
diff --git a/arch/powerpc/boot/cuboot-85xx.c b/arch/powerpc/boot/cuboot-85xx.c index e2560317f278..10f0f697c935 100644 --- a/arch/powerpc/boot/cuboot-85xx.c +++ b/arch/powerpc/boot/cuboot-85xx.c | |||
@@ -12,12 +12,12 @@ | |||
12 | 12 | ||
13 | #include "ops.h" | 13 | #include "ops.h" |
14 | #include "stdio.h" | 14 | #include "stdio.h" |
15 | #include "cuboot.h" | ||
15 | 16 | ||
16 | #define TARGET_85xx | 17 | #define TARGET_85xx |
17 | #include "ppcboot.h" | 18 | #include "ppcboot.h" |
18 | 19 | ||
19 | static bd_t bd; | 20 | static bd_t bd; |
20 | extern char _end[]; | ||
21 | extern char _dtb_start[], _dtb_end[]; | 21 | extern char _dtb_start[], _dtb_end[]; |
22 | 22 | ||
23 | static void platform_fixups(void) | 23 | static void platform_fixups(void) |
@@ -53,16 +53,7 @@ static void platform_fixups(void) | |||
53 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | 53 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, |
54 | unsigned long r6, unsigned long r7) | 54 | unsigned long r6, unsigned long r7) |
55 | { | 55 | { |
56 | unsigned long end_of_ram = bd.bi_memstart + bd.bi_memsize; | 56 | CUBOOT_INIT(); |
57 | unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
58 | |||
59 | memcpy(&bd, (bd_t *)r3, sizeof(bd)); | ||
60 | loader_info.initrd_addr = r4; | ||
61 | loader_info.initrd_size = r4 ? r5 - r4 : 0; | ||
62 | loader_info.cmdline = (char *)r6; | ||
63 | loader_info.cmdline_len = r7 - r6; | ||
64 | |||
65 | simple_alloc_init(_end, avail_ram - 1024*1024, 32, 64); | ||
66 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | 57 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); |
67 | serial_console_init(); | 58 | serial_console_init(); |
68 | platform_ops.fixups = platform_fixups; | 59 | platform_ops.fixups = platform_fixups; |
diff --git a/arch/powerpc/boot/cuboot-ebony.c b/arch/powerpc/boot/cuboot-ebony.c index 4464c5f67acb..c5f37ce172ea 100644 --- a/arch/powerpc/boot/cuboot-ebony.c +++ b/arch/powerpc/boot/cuboot-ebony.c | |||
@@ -15,28 +15,16 @@ | |||
15 | #include "ops.h" | 15 | #include "ops.h" |
16 | #include "stdio.h" | 16 | #include "stdio.h" |
17 | #include "44x.h" | 17 | #include "44x.h" |
18 | #include "cuboot.h" | ||
18 | 19 | ||
19 | #define TARGET_44x | 20 | #define TARGET_44x |
20 | #include "ppcboot.h" | 21 | #include "ppcboot.h" |
21 | 22 | ||
22 | static bd_t bd; | 23 | static bd_t bd; |
23 | extern char _end[]; | ||
24 | |||
25 | BSS_STACK(4096); | ||
26 | 24 | ||
27 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, | 25 | void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, |
28 | unsigned long r6, unsigned long r7) | 26 | unsigned long r6, unsigned long r7) |
29 | { | 27 | { |
30 | unsigned long end_of_ram = bd.bi_memstart + bd.bi_memsize; | 28 | CUBOOT_INIT(); |
31 | unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
32 | |||
33 | memcpy(&bd, (bd_t *)r3, sizeof(bd)); | ||
34 | loader_info.initrd_addr = r4; | ||
35 | loader_info.initrd_size = r4 ? r5 : 0; | ||
36 | loader_info.cmdline = (char *)r6; | ||
37 | loader_info.cmdline_len = r7 - r6; | ||
38 | |||
39 | simple_alloc_init(_end, avail_ram, 32, 64); | ||
40 | |||
41 | ebony_init(&bd.bi_enetaddr, &bd.bi_enet1addr); | 29 | ebony_init(&bd.bi_enetaddr, &bd.bi_enet1addr); |
42 | } | 30 | } |
diff --git a/arch/powerpc/boot/cuboot.c b/arch/powerpc/boot/cuboot.c new file mode 100644 index 000000000000..65795468ad6f --- /dev/null +++ b/arch/powerpc/boot/cuboot.c | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * Compatibility for old (not device tree aware) U-Boot versions | ||
3 | * | ||
4 | * Author: Scott Wood <scottwood@freescale.com> | ||
5 | * Consolidated using macros by David Gibson <david@gibson.dropbear.id.au> | ||
6 | * | ||
7 | * Copyright 2007 David Gibson, IBM Corporation. | ||
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 | |||
18 | #include "ppcboot.h" | ||
19 | |||
20 | extern char _end[]; | ||
21 | extern char _dtb_start[], _dtb_end[]; | ||
22 | |||
23 | void cuboot_init(unsigned long r4, unsigned long r5, | ||
24 | unsigned long r6, unsigned long r7, | ||
25 | unsigned long end_of_ram) | ||
26 | { | ||
27 | unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
28 | |||
29 | loader_info.initrd_addr = r4; | ||
30 | loader_info.initrd_size = r4 ? r5 - r4 : 0; | ||
31 | loader_info.cmdline = (char *)r6; | ||
32 | loader_info.cmdline_len = r7 - r6; | ||
33 | |||
34 | simple_alloc_init(_end, avail_ram - 1024*1024, 32, 64); | ||
35 | } | ||
diff --git a/arch/powerpc/boot/cuboot.h b/arch/powerpc/boot/cuboot.h new file mode 100644 index 000000000000..cd2aa7f348f3 --- /dev/null +++ b/arch/powerpc/boot/cuboot.h | |||
@@ -0,0 +1,14 @@ | |||
1 | #ifndef _PPC_BOOT_CUBOOT_H_ | ||
2 | #define _PPC_BOOT_CUBOOT_H_ | ||
3 | |||
4 | void cuboot_init(unsigned long r4, unsigned long r5, | ||
5 | unsigned long r6, unsigned long r7, | ||
6 | unsigned long end_of_ram); | ||
7 | |||
8 | #define CUBOOT_INIT() \ | ||
9 | do { \ | ||
10 | memcpy(&bd, (bd_t *)r3, sizeof(bd)); \ | ||
11 | cuboot_init(r4, r5, r6, r7, bd.bi_memstart + bd.bi_memsize); \ | ||
12 | } while (0) | ||
13 | |||
14 | #endif /* _PPC_BOOT_CUBOOT_H_ */ | ||
diff --git a/arch/powerpc/boot/dcr.h b/arch/powerpc/boot/dcr.h index 877bc97b1e97..14b44aa96fea 100644 --- a/arch/powerpc/boot/dcr.h +++ b/arch/powerpc/boot/dcr.h | |||
@@ -26,6 +26,43 @@ static const unsigned long sdram_bxcr[] = { SDRAM0_B0CR, SDRAM0_B1CR, SDRAM0_B2C | |||
26 | #define SDRAM_CONFIG_BANK_SIZE(reg) \ | 26 | #define SDRAM_CONFIG_BANK_SIZE(reg) \ |
27 | (0x00400000 << ((reg & SDRAM_CONFIG_SIZE_MASK) >> 17)) | 27 | (0x00400000 << ((reg & SDRAM_CONFIG_SIZE_MASK) >> 17)) |
28 | 28 | ||
29 | /* 440GP External Bus Controller (EBC) */ | ||
30 | #define DCRN_EBC0_CFGADDR 0x012 | ||
31 | #define DCRN_EBC0_CFGDATA 0x013 | ||
32 | #define EBC_NUM_BANKS 8 | ||
33 | #define EBC_B0CR 0x00 | ||
34 | #define EBC_B1CR 0x01 | ||
35 | #define EBC_B2CR 0x02 | ||
36 | #define EBC_B3CR 0x03 | ||
37 | #define EBC_B4CR 0x04 | ||
38 | #define EBC_B5CR 0x05 | ||
39 | #define EBC_B6CR 0x06 | ||
40 | #define EBC_B7CR 0x07 | ||
41 | #define EBC_BXCR(n) (n) | ||
42 | #define EBC_BXCR_BAS 0xfff00000 | ||
43 | #define EBC_BXCR_BS 0x000e0000 | ||
44 | #define EBC_BXCR_BANK_SIZE(reg) \ | ||
45 | (0x100000 << (((reg) & EBC_BXCR_BS) >> 17)) | ||
46 | #define EBC_BXCR_BU 0x00018000 | ||
47 | #define EBC_BXCR_BU_OFF 0x00000000 | ||
48 | #define EBC_BXCR_BU_RO 0x00008000 | ||
49 | #define EBC_BXCR_BU_WO 0x00010000 | ||
50 | #define EBC_BXCR_BU_RW 0x00018000 | ||
51 | #define EBC_BXCR_BW 0x00006000 | ||
52 | #define EBC_B0AP 0x10 | ||
53 | #define EBC_B1AP 0x11 | ||
54 | #define EBC_B2AP 0x12 | ||
55 | #define EBC_B3AP 0x13 | ||
56 | #define EBC_B4AP 0x14 | ||
57 | #define EBC_B5AP 0x15 | ||
58 | #define EBC_B6AP 0x16 | ||
59 | #define EBC_B7AP 0x17 | ||
60 | #define EBC_BXAP(n) (0x10+(n)) | ||
61 | #define EBC_BEAR 0x20 | ||
62 | #define EBC_BESR 0x21 | ||
63 | #define EBC_CFG 0x23 | ||
64 | #define EBC_CID 0x24 | ||
65 | |||
29 | /* 440GP Clock, PM, chip control */ | 66 | /* 440GP Clock, PM, chip control */ |
30 | #define DCRN_CPC0_SR 0x0b0 | 67 | #define DCRN_CPC0_SR 0x0b0 |
31 | #define DCRN_CPC0_ER 0x0b1 | 68 | #define DCRN_CPC0_ER 0x0b1 |
diff --git a/arch/powerpc/boot/dts/ebony.dts b/arch/powerpc/boot/dts/ebony.dts index 0ec02f4726b5..c5f99613fc7b 100644 --- a/arch/powerpc/boot/dts/ebony.dts +++ b/arch/powerpc/boot/dts/ebony.dts | |||
@@ -31,8 +31,8 @@ | |||
31 | reg = <0>; | 31 | reg = <0>; |
32 | clock-frequency = <0>; // Filled in by zImage | 32 | clock-frequency = <0>; // Filled in by zImage |
33 | timebase-frequency = <0>; // Filled in by zImage | 33 | timebase-frequency = <0>; // Filled in by zImage |
34 | i-cache-line-size = <32>; | 34 | i-cache-line-size = <20>; |
35 | d-cache-line-size = <32>; | 35 | d-cache-line-size = <20>; |
36 | i-cache-size = <8000>; /* 32 kB */ | 36 | i-cache-size = <8000>; /* 32 kB */ |
37 | d-cache-size = <8000>; /* 32 kB */ | 37 | d-cache-size = <8000>; /* 32 kB */ |
38 | dcr-controller; | 38 | dcr-controller; |
@@ -135,11 +135,9 @@ | |||
135 | #address-cells = <2>; | 135 | #address-cells = <2>; |
136 | #size-cells = <1>; | 136 | #size-cells = <1>; |
137 | clock-frequency = <0>; // Filled in by zImage | 137 | clock-frequency = <0>; // Filled in by zImage |
138 | ranges = <0 00000000 fff00000 100000 | 138 | // ranges property is supplied by zImage |
139 | 1 00000000 48000000 100000 | 139 | // based on firmware's configuration of the |
140 | 2 00000000 ff800000 400000 | 140 | // EBC bridge |
141 | 3 00000000 48200000 100000 | ||
142 | 7 00000000 48300000 100000>; | ||
143 | interrupts = <5 4>; | 141 | interrupts = <5 4>; |
144 | interrupt-parent = <&UIC1>; | 142 | interrupt-parent = <&UIC1>; |
145 | 143 | ||
diff --git a/arch/powerpc/boot/dts/holly.dts b/arch/powerpc/boot/dts/holly.dts index 254499b107f4..80a4fab8ee37 100644 --- a/arch/powerpc/boot/dts/holly.dts +++ b/arch/powerpc/boot/dts/holly.dts | |||
@@ -46,7 +46,7 @@ | |||
46 | 46 | ||
47 | tsi109@c0000000 { | 47 | tsi109@c0000000 { |
48 | device_type = "tsi-bridge"; | 48 | device_type = "tsi-bridge"; |
49 | compatible = "tsi-bridge"; | 49 | compatible = "tsi109-bridge", "tsi108-bridge"; |
50 | #address-cells = <1>; | 50 | #address-cells = <1>; |
51 | #size-cells = <1>; | 51 | #size-cells = <1>; |
52 | ranges = <00000000 c0000000 00010000>; | 52 | ranges = <00000000 c0000000 00010000>; |
@@ -54,52 +54,55 @@ | |||
54 | 54 | ||
55 | i2c@7000 { | 55 | i2c@7000 { |
56 | device_type = "i2c"; | 56 | device_type = "i2c"; |
57 | compatible = "tsi-i2c"; | 57 | compatible = "tsi109-i2c", "tsi108-i2c"; |
58 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 58 | interrupt-parent = <&MPIC>; |
59 | interrupts = <e 2>; | 59 | interrupts = <e 2>; |
60 | reg = <7000 400>; | 60 | reg = <7000 400>; |
61 | }; | 61 | }; |
62 | 62 | ||
63 | mdio@6000 { | 63 | MDIO: mdio@6000 { |
64 | device_type = "mdio"; | 64 | device_type = "mdio"; |
65 | compatible = "tsi-ethernet"; | 65 | compatible = "tsi109-mdio", "tsi108-mdio"; |
66 | reg = <6000 50>; | ||
67 | #address-cells = <1>; | ||
68 | #size-cells = <0>; | ||
66 | 69 | ||
67 | PHY1: ethernet-phy@6000 { | 70 | PHY1: ethernet-phy@1 { |
68 | device_type = "ethernet-phy"; | 71 | compatible = "bcm5461a"; |
69 | compatible = "bcm54xx"; | 72 | reg = <1>; |
70 | reg = <6000 50>; | 73 | txc-rxc-delay-disable; |
71 | phy-id = <1>; | ||
72 | }; | 74 | }; |
73 | 75 | ||
74 | PHY2: ethernet-phy@6400 { | 76 | PHY2: ethernet-phy@2 { |
75 | device_type = "ethernet-phy"; | 77 | compatible = "bcm5461a"; |
76 | compatible = "bcm54xx"; | 78 | reg = <2>; |
77 | reg = <6000 50>; | 79 | txc-rxc-delay-disable; |
78 | phy-id = <2>; | ||
79 | }; | 80 | }; |
80 | }; | 81 | }; |
81 | 82 | ||
82 | ethernet@6200 { | 83 | ethernet@6200 { |
83 | device_type = "network"; | 84 | device_type = "network"; |
84 | compatible = "tsi-ethernet"; | 85 | compatible = "tsi109-ethernet", "tsi108-ethernet"; |
85 | #address-cells = <1>; | 86 | #address-cells = <1>; |
86 | #size-cells = <0>; | 87 | #size-cells = <0>; |
87 | reg = <6000 200>; | 88 | reg = <6000 200>; |
88 | local-mac-address = [ 00 00 00 00 00 00 ]; | 89 | local-mac-address = [ 00 00 00 00 00 00 ]; |
89 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 90 | interrupt-parent = <&MPIC>; |
90 | interrupts = <10 2>; | 91 | interrupts = <10 2>; |
92 | mdio-handle = <&MDIO>; | ||
91 | phy-handle = <&PHY1>; | 93 | phy-handle = <&PHY1>; |
92 | }; | 94 | }; |
93 | 95 | ||
94 | ethernet@6600 { | 96 | ethernet@6600 { |
95 | device_type = "network"; | 97 | device_type = "network"; |
96 | compatible = "tsi-ethernet"; | 98 | compatible = "tsi109-ethernet", "tsi108-ethernet"; |
97 | #address-cells = <1>; | 99 | #address-cells = <1>; |
98 | #size-cells = <0>; | 100 | #size-cells = <0>; |
99 | reg = <6400 200>; | 101 | reg = <6400 200>; |
100 | local-mac-address = [ 00 00 00 00 00 00 ]; | 102 | local-mac-address = [ 00 00 00 00 00 00 ]; |
101 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 103 | interrupt-parent = <&MPIC>; |
102 | interrupts = <11 2>; | 104 | interrupts = <11 2>; |
105 | mdio-handle = <&MDIO>; | ||
103 | phy-handle = <&PHY2>; | 106 | phy-handle = <&PHY2>; |
104 | }; | 107 | }; |
105 | 108 | ||
@@ -110,7 +113,7 @@ | |||
110 | virtual-reg = <c0007808>; | 113 | virtual-reg = <c0007808>; |
111 | clock-frequency = <3F9C6000>; | 114 | clock-frequency = <3F9C6000>; |
112 | current-speed = <1c200>; | 115 | current-speed = <1c200>; |
113 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 116 | interrupt-parent = <&MPIC>; |
114 | interrupts = <c 2>; | 117 | interrupts = <c 2>; |
115 | }; | 118 | }; |
116 | 119 | ||
@@ -121,7 +124,7 @@ | |||
121 | virtual-reg = <c0007c08>; | 124 | virtual-reg = <c0007c08>; |
122 | clock-frequency = <3F9C6000>; | 125 | clock-frequency = <3F9C6000>; |
123 | current-speed = <1c200>; | 126 | current-speed = <1c200>; |
124 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 127 | interrupt-parent = <&MPIC>; |
125 | interrupts = <d 2>; | 128 | interrupts = <d 2>; |
126 | }; | 129 | }; |
127 | 130 | ||
@@ -136,7 +139,7 @@ | |||
136 | 139 | ||
137 | pci@1000 { | 140 | pci@1000 { |
138 | device_type = "pci"; | 141 | device_type = "pci"; |
139 | compatible = "tsi109"; | 142 | compatible = "tsi109-pci", "tsi108-pci"; |
140 | #interrupt-cells = <1>; | 143 | #interrupt-cells = <1>; |
141 | #size-cells = <2>; | 144 | #size-cells = <2>; |
142 | #address-cells = <3>; | 145 | #address-cells = <3>; |
@@ -150,7 +153,7 @@ | |||
150 | ranges = <02000000 0 40000000 40000000 0 10000000 | 153 | ranges = <02000000 0 40000000 40000000 0 10000000 |
151 | 01000000 0 00000000 7e000000 0 00010000>; | 154 | 01000000 0 00000000 7e000000 0 00010000>; |
152 | clock-frequency = <7f28154>; | 155 | clock-frequency = <7f28154>; |
153 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 156 | interrupt-parent = <&MPIC>; |
154 | interrupts = <17 2>; | 157 | interrupts = <17 2>; |
155 | interrupt-map-mask = <f800 0 0 7>; | 158 | interrupt-map-mask = <f800 0 0 7>; |
156 | /*----------------------------------------------------+ | 159 | /*----------------------------------------------------+ |
@@ -186,13 +189,12 @@ | |||
186 | #address-cells = <0>; | 189 | #address-cells = <0>; |
187 | #interrupt-cells = <2>; | 190 | #interrupt-cells = <2>; |
188 | interrupts = <17 2>; | 191 | interrupts = <17 2>; |
189 | interrupt-parent = < &/tsi109@c0000000/pic@7400 >; | 192 | interrupt-parent = <&MPIC>; |
190 | }; | 193 | }; |
191 | }; | 194 | }; |
192 | }; | 195 | }; |
193 | 196 | ||
194 | chosen { | 197 | chosen { |
195 | linux,stdout-path = "/tsi109@c0000000/serial@7808"; | 198 | linux,stdout-path = "/tsi109@c0000000/serial@7808"; |
196 | bootargs = "console=ttyS0,115200"; | ||
197 | }; | 199 | }; |
198 | }; | 200 | }; |
diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts index 765c306ecf80..0e3d314a7158 100644 --- a/arch/powerpc/boot/dts/mpc7448hpc2.dts +++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts | |||
@@ -45,7 +45,7 @@ | |||
45 | #address-cells = <1>; | 45 | #address-cells = <1>; |
46 | #size-cells = <1>; | 46 | #size-cells = <1>; |
47 | #interrupt-cells = <2>; | 47 | #interrupt-cells = <2>; |
48 | device_type = "tsi-bridge"; | 48 | device_type = "tsi108-bridge"; |
49 | ranges = <00000000 c0000000 00010000>; | 49 | ranges = <00000000 c0000000 00010000>; |
50 | reg = <c0000000 00010000>; | 50 | reg = <c0000000 00010000>; |
51 | bus-frequency = <0>; | 51 | bus-frequency = <0>; |
@@ -55,27 +55,26 @@ | |||
55 | interrupts = <E 0>; | 55 | interrupts = <E 0>; |
56 | reg = <7000 400>; | 56 | reg = <7000 400>; |
57 | device_type = "i2c"; | 57 | device_type = "i2c"; |
58 | compatible = "tsi-i2c"; | 58 | compatible = "tsi108-i2c"; |
59 | }; | 59 | }; |
60 | 60 | ||
61 | mdio@6000 { | 61 | MDIO: mdio@6000 { |
62 | device_type = "mdio"; | 62 | device_type = "mdio"; |
63 | compatible = "tsi-ethernet"; | 63 | compatible = "tsi108-mdio"; |
64 | reg = <6000 50>; | ||
65 | #address-cells = <1>; | ||
66 | #size-cells = <0>; | ||
64 | 67 | ||
65 | phy8: ethernet-phy@6000 { | 68 | phy8: ethernet-phy@8 { |
66 | interrupt-parent = <&mpic>; | 69 | interrupt-parent = <&mpic>; |
67 | interrupts = <2 1>; | 70 | interrupts = <2 1>; |
68 | reg = <6000 50>; | 71 | reg = <8>; |
69 | phy-id = <8>; | ||
70 | device_type = "ethernet-phy"; | ||
71 | }; | 72 | }; |
72 | 73 | ||
73 | phy9: ethernet-phy@6400 { | 74 | phy9: ethernet-phy@9 { |
74 | interrupt-parent = <&mpic>; | 75 | interrupt-parent = <&mpic>; |
75 | interrupts = <2 1>; | 76 | interrupts = <2 1>; |
76 | reg = <6000 50>; | 77 | reg = <9>; |
77 | phy-id = <9>; | ||
78 | device_type = "ethernet-phy"; | ||
79 | }; | 78 | }; |
80 | 79 | ||
81 | }; | 80 | }; |
@@ -83,12 +82,12 @@ | |||
83 | ethernet@6200 { | 82 | ethernet@6200 { |
84 | #size-cells = <0>; | 83 | #size-cells = <0>; |
85 | device_type = "network"; | 84 | device_type = "network"; |
86 | model = "TSI-ETH"; | 85 | compatible = "tsi108-ethernet"; |
87 | compatible = "tsi-ethernet"; | ||
88 | reg = <6000 200>; | 86 | reg = <6000 200>; |
89 | address = [ 00 06 D2 00 00 01 ]; | 87 | address = [ 00 06 D2 00 00 01 ]; |
90 | interrupts = <10 2>; | 88 | interrupts = <10 2>; |
91 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
90 | mdio-handle = <&MDIO>; | ||
92 | phy-handle = <&phy8>; | 91 | phy-handle = <&phy8>; |
93 | }; | 92 | }; |
94 | 93 | ||
@@ -96,12 +95,12 @@ | |||
96 | #address-cells = <1>; | 95 | #address-cells = <1>; |
97 | #size-cells = <0>; | 96 | #size-cells = <0>; |
98 | device_type = "network"; | 97 | device_type = "network"; |
99 | model = "TSI-ETH"; | 98 | compatible = "tsi108-ethernet"; |
100 | compatible = "tsi-ethernet"; | ||
101 | reg = <6400 200>; | 99 | reg = <6400 200>; |
102 | address = [ 00 06 D2 00 00 02 ]; | 100 | address = [ 00 06 D2 00 00 02 ]; |
103 | interrupts = <11 2>; | 101 | interrupts = <11 2>; |
104 | interrupt-parent = <&mpic>; | 102 | interrupt-parent = <&mpic>; |
103 | mdio-handle = <&MDIO>; | ||
105 | phy-handle = <&phy9>; | 104 | phy-handle = <&phy9>; |
106 | }; | 105 | }; |
107 | 106 | ||
@@ -135,7 +134,7 @@ | |||
135 | big-endian; | 134 | big-endian; |
136 | }; | 135 | }; |
137 | pci@1000 { | 136 | pci@1000 { |
138 | compatible = "tsi10x"; | 137 | compatible = "tsi108-pci"; |
139 | device_type = "pci"; | 138 | device_type = "pci"; |
140 | #interrupt-cells = <1>; | 139 | #interrupt-cells = <1>; |
141 | #size-cells = <2>; | 140 | #size-cells = <2>; |
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts index 423eedcf634f..1934b800278e 100644 --- a/arch/powerpc/boot/dts/mpc8272ads.dts +++ b/arch/powerpc/boot/dts/mpc8272ads.dts | |||
@@ -14,12 +14,10 @@ | |||
14 | compatible = "MPC8260ADS"; | 14 | compatible = "MPC8260ADS"; |
15 | #address-cells = <1>; | 15 | #address-cells = <1>; |
16 | #size-cells = <1>; | 16 | #size-cells = <1>; |
17 | linux,phandle = <100>; | ||
18 | 17 | ||
19 | cpus { | 18 | cpus { |
20 | #address-cells = <1>; | 19 | #address-cells = <1>; |
21 | #size-cells = <0>; | 20 | #size-cells = <0>; |
22 | linux,phandle = <200>; | ||
23 | 21 | ||
24 | PowerPC,8272@0 { | 22 | PowerPC,8272@0 { |
25 | device_type = "cpu"; | 23 | device_type = "cpu"; |
@@ -32,12 +30,10 @@ | |||
32 | bus-frequency = <0>; | 30 | bus-frequency = <0>; |
33 | clock-frequency = <0>; | 31 | clock-frequency = <0>; |
34 | 32-bit; | 32 | 32-bit; |
35 | linux,phandle = <201>; | ||
36 | }; | 33 | }; |
37 | }; | 34 | }; |
38 | 35 | ||
39 | interrupt-controller@f8200000 { | 36 | pci_pic: interrupt-controller@f8200000 { |
40 | linux,phandle = <f8200000>; | ||
41 | #address-cells = <0>; | 37 | #address-cells = <0>; |
42 | #interrupt-cells = <2>; | 38 | #interrupt-cells = <2>; |
43 | interrupt-controller; | 39 | interrupt-controller; |
@@ -47,15 +43,13 @@ | |||
47 | }; | 43 | }; |
48 | memory { | 44 | memory { |
49 | device_type = "memory"; | 45 | device_type = "memory"; |
50 | linux,phandle = <300>; | ||
51 | reg = <00000000 4000000 f4500000 00000020>; | 46 | reg = <00000000 4000000 f4500000 00000020>; |
52 | }; | 47 | }; |
53 | 48 | ||
54 | chosen { | 49 | chosen { |
55 | name = "chosen"; | 50 | name = "chosen"; |
56 | linux,platform = <0>; | 51 | linux,platform = <0>; |
57 | interrupt-controller = <10c00>; | 52 | interrupt-controller = <&Cpm_pic>; |
58 | linux,phandle = <400>; | ||
59 | }; | 53 | }; |
60 | 54 | ||
61 | soc8272@f0000000 { | 55 | soc8272@f0000000 { |
@@ -70,20 +64,17 @@ | |||
70 | device_type = "mdio"; | 64 | device_type = "mdio"; |
71 | compatible = "fs_enet"; | 65 | compatible = "fs_enet"; |
72 | reg = <0 0>; | 66 | reg = <0 0>; |
73 | linux,phandle = <24520>; | ||
74 | #address-cells = <1>; | 67 | #address-cells = <1>; |
75 | #size-cells = <0>; | 68 | #size-cells = <0>; |
76 | ethernet-phy@0 { | 69 | phy0:ethernet-phy@0 { |
77 | linux,phandle = <2452000>; | 70 | interrupt-parent = <&Cpm_pic>; |
78 | interrupt-parent = <10c00>; | ||
79 | interrupts = <17 4>; | 71 | interrupts = <17 4>; |
80 | reg = <0>; | 72 | reg = <0>; |
81 | bitbang = [ 12 12 13 02 02 01 ]; | 73 | bitbang = [ 12 12 13 02 02 01 ]; |
82 | device_type = "ethernet-phy"; | 74 | device_type = "ethernet-phy"; |
83 | }; | 75 | }; |
84 | ethernet-phy@1 { | 76 | phy1:ethernet-phy@1 { |
85 | linux,phandle = <2452001>; | 77 | interrupt-parent = <&Cpm_pic>; |
86 | interrupt-parent = <10c00>; | ||
87 | interrupts = <17 4>; | 78 | interrupts = <17 4>; |
88 | bitbang = [ 12 12 13 02 02 01 ]; | 79 | bitbang = [ 12 12 13 02 02 01 ]; |
89 | reg = <3>; | 80 | reg = <3>; |
@@ -101,8 +92,8 @@ | |||
101 | reg = <11300 20 8400 100 11380 30>; | 92 | reg = <11300 20 8400 100 11380 30>; |
102 | mac-address = [ 00 11 2F 99 43 54 ]; | 93 | mac-address = [ 00 11 2F 99 43 54 ]; |
103 | interrupts = <20 2>; | 94 | interrupts = <20 2>; |
104 | interrupt-parent = <10c00>; | 95 | interrupt-parent = <&Cpm_pic>; |
105 | phy-handle = <2452000>; | 96 | phy-handle = <&Phy0>; |
106 | rx-clock = <13>; | 97 | rx-clock = <13>; |
107 | tx-clock = <12>; | 98 | tx-clock = <12>; |
108 | }; | 99 | }; |
@@ -115,14 +106,13 @@ | |||
115 | reg = <11320 20 8500 100 113b0 30>; | 106 | reg = <11320 20 8500 100 113b0 30>; |
116 | mac-address = [ 00 11 2F 99 44 54 ]; | 107 | mac-address = [ 00 11 2F 99 44 54 ]; |
117 | interrupts = <21 2>; | 108 | interrupts = <21 2>; |
118 | interrupt-parent = <10c00>; | 109 | interrupt-parent = <&Cpm_pic>; |
119 | phy-handle = <2452001>; | 110 | phy-handle = <&Phy1>; |
120 | rx-clock = <17>; | 111 | rx-clock = <17>; |
121 | tx-clock = <18>; | 112 | tx-clock = <18>; |
122 | }; | 113 | }; |
123 | 114 | ||
124 | cpm@f0000000 { | 115 | cpm@f0000000 { |
125 | linux,phandle = <f0000000>; | ||
126 | #address-cells = <1>; | 116 | #address-cells = <1>; |
127 | #size-cells = <1>; | 117 | #size-cells = <1>; |
128 | #interrupt-cells = <2>; | 118 | #interrupt-cells = <2>; |
@@ -142,7 +132,7 @@ | |||
142 | reg = <11a00 20 8000 100>; | 132 | reg = <11a00 20 8000 100>; |
143 | current-speed = <1c200>; | 133 | current-speed = <1c200>; |
144 | interrupts = <28 2>; | 134 | interrupts = <28 2>; |
145 | interrupt-parent = <10c00>; | 135 | interrupt-parent = <&Cpm_pic>; |
146 | clock-setup = <0 00ffffff>; | 136 | clock-setup = <0 00ffffff>; |
147 | rx-clock = <1>; | 137 | rx-clock = <1>; |
148 | tx-clock = <1>; | 138 | tx-clock = <1>; |
@@ -156,15 +146,14 @@ | |||
156 | reg = <11a60 20 8300 100>; | 146 | reg = <11a60 20 8300 100>; |
157 | current-speed = <1c200>; | 147 | current-speed = <1c200>; |
158 | interrupts = <2b 2>; | 148 | interrupts = <2b 2>; |
159 | interrupt-parent = <10c00>; | 149 | interrupt-parent = <&Cpm_pic>; |
160 | clock-setup = <1b ffffff00>; | 150 | clock-setup = <1b ffffff00>; |
161 | rx-clock = <4>; | 151 | rx-clock = <4>; |
162 | tx-clock = <4>; | 152 | tx-clock = <4>; |
163 | }; | 153 | }; |
164 | 154 | ||
165 | }; | 155 | }; |
166 | interrupt-controller@10c00 { | 156 | cpm_pic:interrupt-controller@10c00 { |
167 | linux,phandle = <10c00>; | ||
168 | #address-cells = <0>; | 157 | #address-cells = <0>; |
169 | #interrupt-cells = <2>; | 158 | #interrupt-cells = <2>; |
170 | interrupt-controller; | 159 | interrupt-controller; |
@@ -174,7 +163,6 @@ | |||
174 | compatible = "CPM2"; | 163 | compatible = "CPM2"; |
175 | }; | 164 | }; |
176 | pci@0500 { | 165 | pci@0500 { |
177 | linux,phandle = <0500>; | ||
178 | #interrupt-cells = <1>; | 166 | #interrupt-cells = <1>; |
179 | #size-cells = <2>; | 167 | #size-cells = <2>; |
180 | #address-cells = <3>; | 168 | #address-cells = <3>; |
@@ -202,7 +190,7 @@ | |||
202 | c000 0 0 2 f8200000 43 8 | 190 | c000 0 0 2 f8200000 43 8 |
203 | c000 0 0 3 f8200000 40 8 | 191 | c000 0 0 3 f8200000 40 8 |
204 | c000 0 0 4 f8200000 41 8>; | 192 | c000 0 0 4 f8200000 41 8>; |
205 | interrupt-parent = <10c00>; | 193 | interrupt-parent = <&Cpm_pic>; |
206 | interrupts = <14 8>; | 194 | interrupts = <14 8>; |
207 | bus-range = <0 0>; | 195 | bus-range = <0 0>; |
208 | ranges = <02000000 0 80000000 80000000 0 40000000 | 196 | ranges = <02000000 0 80000000 80000000 0 40000000 |
@@ -216,7 +204,7 @@ | |||
216 | compatible = "talitos"; | 204 | compatible = "talitos"; |
217 | reg = <30000 10000>; | 205 | reg = <30000 10000>; |
218 | interrupts = <b 2>; | 206 | interrupts = <b 2>; |
219 | interrupt-parent = <10c00>; | 207 | interrupt-parent = <&Cpm_pic>; |
220 | num-channels = <4>; | 208 | num-channels = <4>; |
221 | channel-fifo-len = <18>; | 209 | channel-fifo-len = <18>; |
222 | exec-units-mask = <0000007e>; | 210 | exec-units-mask = <0000007e>; |
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index 112dd5198fe2..4fc0c4d34aa8 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts | |||
@@ -272,7 +272,13 @@ | |||
272 | reg = <2200 200>; | 272 | reg = <2200 200>; |
273 | interrupts = <22>; | 273 | interrupts = <22>; |
274 | interrupt-parent = < &qeic >; | 274 | interrupt-parent = < &qeic >; |
275 | mac-address = [ 00 04 9f 00 23 23 ]; | 275 | /* |
276 | * mac-address is deprecated and will be removed | ||
277 | * in 2.6.25. Only recent versions of | ||
278 | * U-Boot support local-mac-address, however. | ||
279 | */ | ||
280 | mac-address = [ 00 00 00 00 00 00 ]; | ||
281 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
276 | rx-clock = <19>; | 282 | rx-clock = <19>; |
277 | tx-clock = <1a>; | 283 | tx-clock = <1a>; |
278 | phy-handle = < &phy3 >; | 284 | phy-handle = < &phy3 >; |
@@ -287,7 +293,13 @@ | |||
287 | reg = <3000 200>; | 293 | reg = <3000 200>; |
288 | interrupts = <23>; | 294 | interrupts = <23>; |
289 | interrupt-parent = < &qeic >; | 295 | interrupt-parent = < &qeic >; |
290 | mac-address = [ 00 11 22 33 44 55 ]; | 296 | /* |
297 | * mac-address is deprecated and will be removed | ||
298 | * in 2.6.25. Only recent versions of | ||
299 | * U-Boot support local-mac-address, however. | ||
300 | */ | ||
301 | mac-address = [ 00 00 00 00 00 00 ]; | ||
302 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
291 | rx-clock = <17>; | 303 | rx-clock = <17>; |
292 | tx-clock = <18>; | 304 | tx-clock = <18>; |
293 | phy-handle = < &phy4 >; | 305 | phy-handle = < &phy4 >; |
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts index be4c35784e49..447c03ffabbc 100644 --- a/arch/powerpc/boot/dts/mpc832x_rdb.dts +++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts | |||
@@ -231,7 +231,13 @@ | |||
231 | reg = <3000 200>; | 231 | reg = <3000 200>; |
232 | interrupts = <21>; | 232 | interrupts = <21>; |
233 | interrupt-parent = <&qeic>; | 233 | interrupt-parent = <&qeic>; |
234 | mac-address = [ 00 04 9f ef 03 02 ]; | 234 | /* |
235 | * mac-address is deprecated and will be removed | ||
236 | * in 2.6.25. Only recent versions of | ||
237 | * U-Boot support local-mac-address, however. | ||
238 | */ | ||
239 | mac-address = [ 00 00 00 00 00 00 ]; | ||
240 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
235 | rx-clock = <20>; | 241 | rx-clock = <20>; |
236 | tx-clock = <13>; | 242 | tx-clock = <13>; |
237 | phy-handle = <&phy00>; | 243 | phy-handle = <&phy00>; |
@@ -246,7 +252,13 @@ | |||
246 | reg = <2200 200>; | 252 | reg = <2200 200>; |
247 | interrupts = <22>; | 253 | interrupts = <22>; |
248 | interrupt-parent = <&qeic>; | 254 | interrupt-parent = <&qeic>; |
249 | mac-address = [ 00 04 9f ef 03 01 ]; | 255 | /* |
256 | * mac-address is deprecated and will be removed | ||
257 | * in 2.6.25. Only recent versions of | ||
258 | * U-Boot support local-mac-address, however. | ||
259 | */ | ||
260 | mac-address = [ 00 00 00 00 00 00 ]; | ||
261 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
250 | rx-clock = <19>; | 262 | rx-clock = <19>; |
251 | tx-clock = <1a>; | 263 | tx-clock = <1a>; |
252 | phy-handle = <&phy04>; | 264 | phy-handle = <&phy04>; |
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts index db0d00303275..ae9bca575453 100644 --- a/arch/powerpc/boot/dts/mpc8349emitx.dts +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts | |||
@@ -131,6 +131,11 @@ | |||
131 | model = "TSEC"; | 131 | model = "TSEC"; |
132 | compatible = "gianfar"; | 132 | compatible = "gianfar"; |
133 | reg = <24000 1000>; | 133 | reg = <24000 1000>; |
134 | /* | ||
135 | * address is deprecated and will be removed | ||
136 | * in 2.6.25. Only recent versions of | ||
137 | * U-Boot support local-mac-address, however. | ||
138 | */ | ||
134 | address = [ 00 00 00 00 00 00 ]; | 139 | address = [ 00 00 00 00 00 00 ]; |
135 | local-mac-address = [ 00 00 00 00 00 00 ]; | 140 | local-mac-address = [ 00 00 00 00 00 00 ]; |
136 | interrupts = <20 8 21 8 22 8>; | 141 | interrupts = <20 8 21 8 22 8>; |
@@ -145,6 +150,11 @@ | |||
145 | model = "TSEC"; | 150 | model = "TSEC"; |
146 | compatible = "gianfar"; | 151 | compatible = "gianfar"; |
147 | reg = <25000 1000>; | 152 | reg = <25000 1000>; |
153 | /* | ||
154 | * address is deprecated and will be removed | ||
155 | * in 2.6.25. Only recent versions of | ||
156 | * U-Boot support local-mac-address, however. | ||
157 | */ | ||
148 | address = [ 00 00 00 00 00 00 ]; | 158 | address = [ 00 00 00 00 00 00 ]; |
149 | local-mac-address = [ 00 00 00 00 00 00 ]; | 159 | local-mac-address = [ 00 00 00 00 00 00 ]; |
150 | interrupts = <23 8 24 8 25 8>; | 160 | interrupts = <23 8 24 8 25 8>; |
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index df773fafe9d1..310e877826b4 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -136,6 +136,11 @@ | |||
136 | model = "TSEC"; | 136 | model = "TSEC"; |
137 | compatible = "gianfar"; | 137 | compatible = "gianfar"; |
138 | reg = <24000 1000>; | 138 | reg = <24000 1000>; |
139 | /* | ||
140 | * address is deprecated and will be removed | ||
141 | * in 2.6.25. Only recent versions of | ||
142 | * U-Boot support local-mac-address, however. | ||
143 | */ | ||
139 | address = [ 00 00 00 00 00 00 ]; | 144 | address = [ 00 00 00 00 00 00 ]; |
140 | local-mac-address = [ 00 00 00 00 00 00 ]; | 145 | local-mac-address = [ 00 00 00 00 00 00 ]; |
141 | interrupts = <20 8 21 8 22 8>; | 146 | interrupts = <20 8 21 8 22 8>; |
@@ -150,6 +155,11 @@ | |||
150 | model = "TSEC"; | 155 | model = "TSEC"; |
151 | compatible = "gianfar"; | 156 | compatible = "gianfar"; |
152 | reg = <25000 1000>; | 157 | reg = <25000 1000>; |
158 | /* | ||
159 | * address is deprecated and will be removed | ||
160 | * in 2.6.25. Only recent versions of | ||
161 | * U-Boot support local-mac-address, however. | ||
162 | */ | ||
153 | address = [ 00 00 00 00 00 00 ]; | 163 | address = [ 00 00 00 00 00 00 ]; |
154 | local-mac-address = [ 00 00 00 00 00 00 ]; | 164 | local-mac-address = [ 00 00 00 00 00 00 ]; |
155 | interrupts = <23 8 24 8 25 8>; | 165 | interrupts = <23 8 24 8 25 8>; |
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index 38c8594df3a4..1e914f31dd92 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts | |||
@@ -301,7 +301,13 @@ | |||
301 | reg = <2000 200>; | 301 | reg = <2000 200>; |
302 | interrupts = <20>; | 302 | interrupts = <20>; |
303 | interrupt-parent = < &qeic >; | 303 | interrupt-parent = < &qeic >; |
304 | mac-address = [ 00 04 9f 00 23 23 ]; | 304 | /* |
305 | * mac-address is deprecated and will be removed | ||
306 | * in 2.6.25. Only recent versions of | ||
307 | * U-Boot support local-mac-address, however. | ||
308 | */ | ||
309 | mac-address = [ 00 00 00 00 00 00 ]; | ||
310 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
305 | rx-clock = <0>; | 311 | rx-clock = <0>; |
306 | tx-clock = <19>; | 312 | tx-clock = <19>; |
307 | phy-handle = < &phy0 >; | 313 | phy-handle = < &phy0 >; |
@@ -317,7 +323,13 @@ | |||
317 | reg = <3000 200>; | 323 | reg = <3000 200>; |
318 | interrupts = <21>; | 324 | interrupts = <21>; |
319 | interrupt-parent = < &qeic >; | 325 | interrupt-parent = < &qeic >; |
320 | mac-address = [ 00 11 22 33 44 55 ]; | 326 | /* |
327 | * mac-address is deprecated and will be removed | ||
328 | * in 2.6.25. Only recent versions of | ||
329 | * U-Boot support local-mac-address, however. | ||
330 | */ | ||
331 | mac-address = [ 00 00 00 00 00 00 ]; | ||
332 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
321 | rx-clock = <0>; | 333 | rx-clock = <0>; |
322 | tx-clock = <14>; | 334 | tx-clock = <14>; |
323 | phy-handle = < &phy1 >; | 335 | phy-handle = < &phy1 >; |
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts index d91e81c009f5..364a969f5c2f 100644 --- a/arch/powerpc/boot/dts/mpc8540ads.dts +++ b/arch/powerpc/boot/dts/mpc8540ads.dts | |||
@@ -52,7 +52,7 @@ | |||
52 | compatible = "fsl,8540-memory-controller"; | 52 | compatible = "fsl,8540-memory-controller"; |
53 | reg = <2000 1000>; | 53 | reg = <2000 1000>; |
54 | interrupt-parent = <&mpic>; | 54 | interrupt-parent = <&mpic>; |
55 | interrupts = <2 2>; | 55 | interrupts = <12 2>; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | l2-cache-controller@20000 { | 58 | l2-cache-controller@20000 { |
@@ -61,14 +61,14 @@ | |||
61 | cache-line-size = <20>; // 32 bytes | 61 | cache-line-size = <20>; // 32 bytes |
62 | cache-size = <40000>; // L2, 256K | 62 | cache-size = <40000>; // L2, 256K |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <0 2>; | 64 | interrupts = <10 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | i2c@3000 { | 67 | i2c@3000 { |
68 | device_type = "i2c"; | 68 | device_type = "i2c"; |
69 | compatible = "fsl-i2c"; | 69 | compatible = "fsl-i2c"; |
70 | reg = <3000 100>; | 70 | reg = <3000 100>; |
71 | interrupts = <1b 2>; | 71 | interrupts = <2b 2>; |
72 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
73 | dfsrr; | 73 | dfsrr; |
74 | }; | 74 | }; |
@@ -81,19 +81,19 @@ | |||
81 | reg = <24520 20>; | 81 | reg = <24520 20>; |
82 | phy0: ethernet-phy@0 { | 82 | phy0: ethernet-phy@0 { |
83 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
84 | interrupts = <35 1>; | 84 | interrupts = <5 1>; |
85 | reg = <0>; | 85 | reg = <0>; |
86 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
87 | }; | 87 | }; |
88 | phy1: ethernet-phy@1 { | 88 | phy1: ethernet-phy@1 { |
89 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
90 | interrupts = <35 1>; | 90 | interrupts = <5 1>; |
91 | reg = <1>; | 91 | reg = <1>; |
92 | device_type = "ethernet-phy"; | 92 | device_type = "ethernet-phy"; |
93 | }; | 93 | }; |
94 | phy3: ethernet-phy@3 { | 94 | phy3: ethernet-phy@3 { |
95 | interrupt-parent = <&mpic>; | 95 | interrupt-parent = <&mpic>; |
96 | interrupts = <37 1>; | 96 | interrupts = <7 1>; |
97 | reg = <3>; | 97 | reg = <3>; |
98 | device_type = "ethernet-phy"; | 98 | device_type = "ethernet-phy"; |
99 | }; | 99 | }; |
@@ -106,9 +106,14 @@ | |||
106 | model = "TSEC"; | 106 | model = "TSEC"; |
107 | compatible = "gianfar"; | 107 | compatible = "gianfar"; |
108 | reg = <24000 1000>; | 108 | reg = <24000 1000>; |
109 | address = [ 00 E0 0C 00 73 00 ]; | 109 | /* |
110 | local-mac-address = [ 00 E0 0C 00 73 00 ]; | 110 | * address is deprecated and will be removed |
111 | interrupts = <d 2 e 2 12 2>; | 111 | * in 2.6.25. Only recent versions of |
112 | * U-Boot support local-mac-address, however. | ||
113 | */ | ||
114 | address = [ 00 00 00 00 00 00 ]; | ||
115 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
116 | interrupts = <1d 2 1e 2 22 2>; | ||
112 | interrupt-parent = <&mpic>; | 117 | interrupt-parent = <&mpic>; |
113 | phy-handle = <&phy0>; | 118 | phy-handle = <&phy0>; |
114 | }; | 119 | }; |
@@ -120,9 +125,14 @@ | |||
120 | model = "TSEC"; | 125 | model = "TSEC"; |
121 | compatible = "gianfar"; | 126 | compatible = "gianfar"; |
122 | reg = <25000 1000>; | 127 | reg = <25000 1000>; |
123 | address = [ 00 E0 0C 00 73 01 ]; | 128 | /* |
124 | local-mac-address = [ 00 E0 0C 00 73 01 ]; | 129 | * address is deprecated and will be removed |
125 | interrupts = <13 2 14 2 18 2>; | 130 | * in 2.6.25. Only recent versions of |
131 | * U-Boot support local-mac-address, however. | ||
132 | */ | ||
133 | address = [ 00 00 00 00 00 00 ]; | ||
134 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
135 | interrupts = <23 2 24 2 28 2>; | ||
126 | interrupt-parent = <&mpic>; | 136 | interrupt-parent = <&mpic>; |
127 | phy-handle = <&phy1>; | 137 | phy-handle = <&phy1>; |
128 | }; | 138 | }; |
@@ -134,9 +144,14 @@ | |||
134 | model = "FEC"; | 144 | model = "FEC"; |
135 | compatible = "gianfar"; | 145 | compatible = "gianfar"; |
136 | reg = <26000 1000>; | 146 | reg = <26000 1000>; |
137 | address = [ 00 E0 0C 00 73 02 ]; | 147 | /* |
138 | local-mac-address = [ 00 E0 0C 00 73 02 ]; | 148 | * address is deprecated and will be removed |
139 | interrupts = <19 2>; | 149 | * in 2.6.25. Only recent versions of |
150 | * U-Boot support local-mac-address, however. | ||
151 | */ | ||
152 | address = [ 00 00 00 00 00 00 ]; | ||
153 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
154 | interrupts = <29 2>; | ||
140 | interrupt-parent = <&mpic>; | 155 | interrupt-parent = <&mpic>; |
141 | phy-handle = <&phy3>; | 156 | phy-handle = <&phy3>; |
142 | }; | 157 | }; |
@@ -146,7 +161,7 @@ | |||
146 | compatible = "ns16550"; | 161 | compatible = "ns16550"; |
147 | reg = <4500 100>; // reg base, size | 162 | reg = <4500 100>; // reg base, size |
148 | clock-frequency = <0>; // should we fill in in uboot? | 163 | clock-frequency = <0>; // should we fill in in uboot? |
149 | interrupts = <1a 2>; | 164 | interrupts = <2a 2>; |
150 | interrupt-parent = <&mpic>; | 165 | interrupt-parent = <&mpic>; |
151 | }; | 166 | }; |
152 | 167 | ||
@@ -155,7 +170,7 @@ | |||
155 | compatible = "ns16550"; | 170 | compatible = "ns16550"; |
156 | reg = <4600 100>; // reg base, size | 171 | reg = <4600 100>; // reg base, size |
157 | clock-frequency = <0>; // should we fill in in uboot? | 172 | clock-frequency = <0>; // should we fill in in uboot? |
158 | interrupts = <1a 2>; | 173 | interrupts = <2a 2>; |
159 | interrupt-parent = <&mpic>; | 174 | interrupt-parent = <&mpic>; |
160 | }; | 175 | }; |
161 | pci@8000 { | 176 | pci@8000 { |
@@ -163,78 +178,78 @@ | |||
163 | interrupt-map = < | 178 | interrupt-map = < |
164 | 179 | ||
165 | /* IDSEL 0x02 */ | 180 | /* IDSEL 0x02 */ |
166 | 1000 0 0 1 &mpic 31 1 | 181 | 1000 0 0 1 &mpic 1 1 |
167 | 1000 0 0 2 &mpic 32 1 | 182 | 1000 0 0 2 &mpic 2 1 |
168 | 1000 0 0 3 &mpic 33 1 | 183 | 1000 0 0 3 &mpic 3 1 |
169 | 1000 0 0 4 &mpic 34 1 | 184 | 1000 0 0 4 &mpic 4 1 |
170 | 185 | ||
171 | /* IDSEL 0x03 */ | 186 | /* IDSEL 0x03 */ |
172 | 1800 0 0 1 &mpic 34 1 | 187 | 1800 0 0 1 &mpic 4 1 |
173 | 1800 0 0 2 &mpic 31 1 | 188 | 1800 0 0 2 &mpic 1 1 |
174 | 1800 0 0 3 &mpic 32 1 | 189 | 1800 0 0 3 &mpic 2 1 |
175 | 1800 0 0 4 &mpic 33 1 | 190 | 1800 0 0 4 &mpic 3 1 |
176 | 191 | ||
177 | /* IDSEL 0x04 */ | 192 | /* IDSEL 0x04 */ |
178 | 2000 0 0 1 &mpic 33 1 | 193 | 2000 0 0 1 &mpic 3 1 |
179 | 2000 0 0 2 &mpic 34 1 | 194 | 2000 0 0 2 &mpic 4 1 |
180 | 2000 0 0 3 &mpic 31 1 | 195 | 2000 0 0 3 &mpic 1 1 |
181 | 2000 0 0 4 &mpic 32 1 | 196 | 2000 0 0 4 &mpic 2 1 |
182 | 197 | ||
183 | /* IDSEL 0x05 */ | 198 | /* IDSEL 0x05 */ |
184 | 2800 0 0 1 &mpic 32 1 | 199 | 2800 0 0 1 &mpic 2 1 |
185 | 2800 0 0 2 &mpic 33 1 | 200 | 2800 0 0 2 &mpic 3 1 |
186 | 2800 0 0 3 &mpic 34 1 | 201 | 2800 0 0 3 &mpic 4 1 |
187 | 2800 0 0 4 &mpic 31 1 | 202 | 2800 0 0 4 &mpic 1 1 |
188 | 203 | ||
189 | /* IDSEL 0x0c */ | 204 | /* IDSEL 0x0c */ |
190 | 6000 0 0 1 &mpic 31 1 | 205 | 6000 0 0 1 &mpic 1 1 |
191 | 6000 0 0 2 &mpic 32 1 | 206 | 6000 0 0 2 &mpic 2 1 |
192 | 6000 0 0 3 &mpic 33 1 | 207 | 6000 0 0 3 &mpic 3 1 |
193 | 6000 0 0 4 &mpic 34 1 | 208 | 6000 0 0 4 &mpic 4 1 |
194 | 209 | ||
195 | /* IDSEL 0x0d */ | 210 | /* IDSEL 0x0d */ |
196 | 6800 0 0 1 &mpic 34 1 | 211 | 6800 0 0 1 &mpic 4 1 |
197 | 6800 0 0 2 &mpic 31 1 | 212 | 6800 0 0 2 &mpic 1 1 |
198 | 6800 0 0 3 &mpic 32 1 | 213 | 6800 0 0 3 &mpic 2 1 |
199 | 6800 0 0 4 &mpic 33 1 | 214 | 6800 0 0 4 &mpic 3 1 |
200 | 215 | ||
201 | /* IDSEL 0x0e */ | 216 | /* IDSEL 0x0e */ |
202 | 7000 0 0 1 &mpic 33 1 | 217 | 7000 0 0 1 &mpic 3 1 |
203 | 7000 0 0 2 &mpic 34 1 | 218 | 7000 0 0 2 &mpic 4 1 |
204 | 7000 0 0 3 &mpic 31 1 | 219 | 7000 0 0 3 &mpic 1 1 |
205 | 7000 0 0 4 &mpic 32 1 | 220 | 7000 0 0 4 &mpic 2 1 |
206 | 221 | ||
207 | /* IDSEL 0x0f */ | 222 | /* IDSEL 0x0f */ |
208 | 7800 0 0 1 &mpic 32 1 | 223 | 7800 0 0 1 &mpic 2 1 |
209 | 7800 0 0 2 &mpic 33 1 | 224 | 7800 0 0 2 &mpic 3 1 |
210 | 7800 0 0 3 &mpic 34 1 | 225 | 7800 0 0 3 &mpic 4 1 |
211 | 7800 0 0 4 &mpic 31 1 | 226 | 7800 0 0 4 &mpic 1 1 |
212 | 227 | ||
213 | /* IDSEL 0x12 */ | 228 | /* IDSEL 0x12 */ |
214 | 9000 0 0 1 &mpic 31 1 | 229 | 9000 0 0 1 &mpic 1 1 |
215 | 9000 0 0 2 &mpic 32 1 | 230 | 9000 0 0 2 &mpic 2 1 |
216 | 9000 0 0 3 &mpic 33 1 | 231 | 9000 0 0 3 &mpic 3 1 |
217 | 9000 0 0 4 &mpic 34 1 | 232 | 9000 0 0 4 &mpic 4 1 |
218 | 233 | ||
219 | /* IDSEL 0x13 */ | 234 | /* IDSEL 0x13 */ |
220 | 9800 0 0 1 &mpic 34 1 | 235 | 9800 0 0 1 &mpic 4 1 |
221 | 9800 0 0 2 &mpic 31 1 | 236 | 9800 0 0 2 &mpic 1 1 |
222 | 9800 0 0 3 &mpic 32 1 | 237 | 9800 0 0 3 &mpic 2 1 |
223 | 9800 0 0 4 &mpic 33 1 | 238 | 9800 0 0 4 &mpic 3 1 |
224 | 239 | ||
225 | /* IDSEL 0x14 */ | 240 | /* IDSEL 0x14 */ |
226 | a000 0 0 1 &mpic 33 1 | 241 | a000 0 0 1 &mpic 3 1 |
227 | a000 0 0 2 &mpic 34 1 | 242 | a000 0 0 2 &mpic 4 1 |
228 | a000 0 0 3 &mpic 31 1 | 243 | a000 0 0 3 &mpic 1 1 |
229 | a000 0 0 4 &mpic 32 1 | 244 | a000 0 0 4 &mpic 2 1 |
230 | 245 | ||
231 | /* IDSEL 0x15 */ | 246 | /* IDSEL 0x15 */ |
232 | a800 0 0 1 &mpic 32 1 | 247 | a800 0 0 1 &mpic 2 1 |
233 | a800 0 0 2 &mpic 33 1 | 248 | a800 0 0 2 &mpic 3 1 |
234 | a800 0 0 3 &mpic 34 1 | 249 | a800 0 0 3 &mpic 4 1 |
235 | a800 0 0 4 &mpic 31 1>; | 250 | a800 0 0 4 &mpic 1 1>; |
236 | interrupt-parent = <&mpic>; | 251 | interrupt-parent = <&mpic>; |
237 | interrupts = <08 2>; | 252 | interrupts = <18 2>; |
238 | bus-range = <0 0>; | 253 | bus-range = <0 0>; |
239 | ranges = <02000000 0 80000000 80000000 0 20000000 | 254 | ranges = <02000000 0 80000000 80000000 0 20000000 |
240 | 01000000 0 00000000 e2000000 0 00100000>; | 255 | 01000000 0 00000000 e2000000 0 00100000>; |
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts index 4f2c3af2e052..070206fffe88 100644 --- a/arch/powerpc/boot/dts/mpc8541cds.dts +++ b/arch/powerpc/boot/dts/mpc8541cds.dts | |||
@@ -52,7 +52,7 @@ | |||
52 | compatible = "fsl,8541-memory-controller"; | 52 | compatible = "fsl,8541-memory-controller"; |
53 | reg = <2000 1000>; | 53 | reg = <2000 1000>; |
54 | interrupt-parent = <&mpic>; | 54 | interrupt-parent = <&mpic>; |
55 | interrupts = <2 2>; | 55 | interrupts = <12 2>; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | l2-cache-controller@20000 { | 58 | l2-cache-controller@20000 { |
@@ -61,14 +61,14 @@ | |||
61 | cache-line-size = <20>; // 32 bytes | 61 | cache-line-size = <20>; // 32 bytes |
62 | cache-size = <40000>; // L2, 256K | 62 | cache-size = <40000>; // L2, 256K |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <0 2>; | 64 | interrupts = <10 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | i2c@3000 { | 67 | i2c@3000 { |
68 | device_type = "i2c"; | 68 | device_type = "i2c"; |
69 | compatible = "fsl-i2c"; | 69 | compatible = "fsl-i2c"; |
70 | reg = <3000 100>; | 70 | reg = <3000 100>; |
71 | interrupts = <1b 2>; | 71 | interrupts = <2b 2>; |
72 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
73 | dfsrr; | 73 | dfsrr; |
74 | }; | 74 | }; |
@@ -81,13 +81,13 @@ | |||
81 | reg = <24520 20>; | 81 | reg = <24520 20>; |
82 | phy0: ethernet-phy@0 { | 82 | phy0: ethernet-phy@0 { |
83 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
84 | interrupts = <35 0>; | 84 | interrupts = <5 1>; |
85 | reg = <0>; | 85 | reg = <0>; |
86 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
87 | }; | 87 | }; |
88 | phy1: ethernet-phy@1 { | 88 | phy1: ethernet-phy@1 { |
89 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
90 | interrupts = <35 0>; | 90 | interrupts = <5 1>; |
91 | reg = <1>; | 91 | reg = <1>; |
92 | device_type = "ethernet-phy"; | 92 | device_type = "ethernet-phy"; |
93 | }; | 93 | }; |
@@ -100,8 +100,8 @@ | |||
100 | model = "TSEC"; | 100 | model = "TSEC"; |
101 | compatible = "gianfar"; | 101 | compatible = "gianfar"; |
102 | reg = <24000 1000>; | 102 | reg = <24000 1000>; |
103 | local-mac-address = [ 00 E0 0C 00 73 00 ]; | 103 | local-mac-address = [ 00 00 00 00 00 00 ]; |
104 | interrupts = <d 2 e 2 12 2>; | 104 | interrupts = <1d 2 1e 2 22 2>; |
105 | interrupt-parent = <&mpic>; | 105 | interrupt-parent = <&mpic>; |
106 | phy-handle = <&phy0>; | 106 | phy-handle = <&phy0>; |
107 | }; | 107 | }; |
@@ -113,8 +113,8 @@ | |||
113 | model = "TSEC"; | 113 | model = "TSEC"; |
114 | compatible = "gianfar"; | 114 | compatible = "gianfar"; |
115 | reg = <25000 1000>; | 115 | reg = <25000 1000>; |
116 | local-mac-address = [ 00 E0 0C 00 73 01 ]; | 116 | local-mac-address = [ 00 00 00 00 00 00 ]; |
117 | interrupts = <13 2 14 2 18 2>; | 117 | interrupts = <23 2 24 2 28 2>; |
118 | interrupt-parent = <&mpic>; | 118 | interrupt-parent = <&mpic>; |
119 | phy-handle = <&phy1>; | 119 | phy-handle = <&phy1>; |
120 | }; | 120 | }; |
@@ -124,7 +124,7 @@ | |||
124 | compatible = "ns16550"; | 124 | compatible = "ns16550"; |
125 | reg = <4500 100>; // reg base, size | 125 | reg = <4500 100>; // reg base, size |
126 | clock-frequency = <0>; // should we fill in in uboot? | 126 | clock-frequency = <0>; // should we fill in in uboot? |
127 | interrupts = <1a 2>; | 127 | interrupts = <2a 2>; |
128 | interrupt-parent = <&mpic>; | 128 | interrupt-parent = <&mpic>; |
129 | }; | 129 | }; |
130 | 130 | ||
@@ -133,7 +133,7 @@ | |||
133 | compatible = "ns16550"; | 133 | compatible = "ns16550"; |
134 | reg = <4600 100>; // reg base, size | 134 | reg = <4600 100>; // reg base, size |
135 | clock-frequency = <0>; // should we fill in in uboot? | 135 | clock-frequency = <0>; // should we fill in in uboot? |
136 | interrupts = <1a 2>; | 136 | interrupts = <2a 2>; |
137 | interrupt-parent = <&mpic>; | 137 | interrupt-parent = <&mpic>; |
138 | }; | 138 | }; |
139 | 139 | ||
@@ -142,49 +142,49 @@ | |||
142 | interrupt-map = < | 142 | interrupt-map = < |
143 | 143 | ||
144 | /* IDSEL 0x10 */ | 144 | /* IDSEL 0x10 */ |
145 | 08000 0 0 1 &mpic 30 1 | 145 | 08000 0 0 1 &mpic 0 1 |
146 | 08000 0 0 2 &mpic 31 1 | 146 | 08000 0 0 2 &mpic 1 1 |
147 | 08000 0 0 3 &mpic 32 1 | 147 | 08000 0 0 3 &mpic 2 1 |
148 | 08000 0 0 4 &mpic 33 1 | 148 | 08000 0 0 4 &mpic 3 1 |
149 | 149 | ||
150 | /* IDSEL 0x11 */ | 150 | /* IDSEL 0x11 */ |
151 | 08800 0 0 1 &mpic 30 1 | 151 | 08800 0 0 1 &mpic 0 1 |
152 | 08800 0 0 2 &mpic 31 1 | 152 | 08800 0 0 2 &mpic 1 1 |
153 | 08800 0 0 3 &mpic 32 1 | 153 | 08800 0 0 3 &mpic 2 1 |
154 | 08800 0 0 4 &mpic 33 1 | 154 | 08800 0 0 4 &mpic 3 1 |
155 | 155 | ||
156 | /* IDSEL 0x12 (Slot 1) */ | 156 | /* IDSEL 0x12 (Slot 1) */ |
157 | 09000 0 0 1 &mpic 30 1 | 157 | 09000 0 0 1 &mpic 0 1 |
158 | 09000 0 0 2 &mpic 31 1 | 158 | 09000 0 0 2 &mpic 1 1 |
159 | 09000 0 0 3 &mpic 32 1 | 159 | 09000 0 0 3 &mpic 2 1 |
160 | 09000 0 0 4 &mpic 33 1 | 160 | 09000 0 0 4 &mpic 3 1 |
161 | 161 | ||
162 | /* IDSEL 0x13 (Slot 2) */ | 162 | /* IDSEL 0x13 (Slot 2) */ |
163 | 09800 0 0 1 &mpic 31 1 | 163 | 09800 0 0 1 &mpic 1 1 |
164 | 09800 0 0 2 &mpic 32 1 | 164 | 09800 0 0 2 &mpic 2 1 |
165 | 09800 0 0 3 &mpic 33 1 | 165 | 09800 0 0 3 &mpic 3 1 |
166 | 09800 0 0 4 &mpic 30 1 | 166 | 09800 0 0 4 &mpic 0 1 |
167 | 167 | ||
168 | /* IDSEL 0x14 (Slot 3) */ | 168 | /* IDSEL 0x14 (Slot 3) */ |
169 | 0a000 0 0 1 &mpic 32 1 | 169 | 0a000 0 0 1 &mpic 2 1 |
170 | 0a000 0 0 2 &mpic 33 1 | 170 | 0a000 0 0 2 &mpic 3 1 |
171 | 0a000 0 0 3 &mpic 30 1 | 171 | 0a000 0 0 3 &mpic 0 1 |
172 | 0a000 0 0 4 &mpic 31 1 | 172 | 0a000 0 0 4 &mpic 1 1 |
173 | 173 | ||
174 | /* IDSEL 0x15 (Slot 4) */ | 174 | /* IDSEL 0x15 (Slot 4) */ |
175 | 0a800 0 0 1 &mpic 33 1 | 175 | 0a800 0 0 1 &mpic 3 1 |
176 | 0a800 0 0 2 &mpic 30 1 | 176 | 0a800 0 0 2 &mpic 0 1 |
177 | 0a800 0 0 3 &mpic 31 1 | 177 | 0a800 0 0 3 &mpic 1 1 |
178 | 0a800 0 0 4 &mpic 32 1 | 178 | 0a800 0 0 4 &mpic 2 1 |
179 | 179 | ||
180 | /* Bus 1 (Tundra Bridge) */ | 180 | /* Bus 1 (Tundra Bridge) */ |
181 | /* IDSEL 0x12 (ISA bridge) */ | 181 | /* IDSEL 0x12 (ISA bridge) */ |
182 | 19000 0 0 1 &mpic 30 1 | 182 | 19000 0 0 1 &mpic 0 1 |
183 | 19000 0 0 2 &mpic 31 1 | 183 | 19000 0 0 2 &mpic 1 1 |
184 | 19000 0 0 3 &mpic 32 1 | 184 | 19000 0 0 3 &mpic 2 1 |
185 | 19000 0 0 4 &mpic 33 1>; | 185 | 19000 0 0 4 &mpic 3 1>; |
186 | interrupt-parent = <&mpic>; | 186 | interrupt-parent = <&mpic>; |
187 | interrupts = <08 2>; | 187 | interrupts = <18 2>; |
188 | bus-range = <0 0>; | 188 | bus-range = <0 0>; |
189 | ranges = <02000000 0 80000000 80000000 0 20000000 | 189 | ranges = <02000000 0 80000000 80000000 0 20000000 |
190 | 01000000 0 00000000 e2000000 0 00100000>; | 190 | 01000000 0 00000000 e2000000 0 00100000>; |
@@ -216,12 +216,12 @@ | |||
216 | interrupt-map = < | 216 | interrupt-map = < |
217 | 217 | ||
218 | /* IDSEL 0x15 */ | 218 | /* IDSEL 0x15 */ |
219 | a800 0 0 1 &mpic 3b 1 | 219 | a800 0 0 1 &mpic b 1 |
220 | a800 0 0 2 &mpic 3b 1 | 220 | a800 0 0 2 &mpic b 1 |
221 | a800 0 0 3 &mpic 3b 1 | 221 | a800 0 0 3 &mpic b 1 |
222 | a800 0 0 4 &mpic 3b 1>; | 222 | a800 0 0 4 &mpic b 1>; |
223 | interrupt-parent = <&mpic>; | 223 | interrupt-parent = <&mpic>; |
224 | interrupts = <09 2>; | 224 | interrupts = <19 2>; |
225 | bus-range = <0 0>; | 225 | bus-range = <0 0>; |
226 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 226 | ranges = <02000000 0 a0000000 a0000000 0 20000000 |
227 | 01000000 0 00000000 e3000000 0 00100000>; | 227 | 01000000 0 00000000 e3000000 0 00100000>; |
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 3033599e74e8..828592592460 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -52,7 +52,7 @@ | |||
52 | compatible = "fsl,8544-memory-controller"; | 52 | compatible = "fsl,8544-memory-controller"; |
53 | reg = <2000 1000>; | 53 | reg = <2000 1000>; |
54 | interrupt-parent = <&mpic>; | 54 | interrupt-parent = <&mpic>; |
55 | interrupts = <2 2>; | 55 | interrupts = <12 2>; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | l2-cache-controller@20000 { | 58 | l2-cache-controller@20000 { |
@@ -61,14 +61,14 @@ | |||
61 | cache-line-size = <20>; // 32 bytes | 61 | cache-line-size = <20>; // 32 bytes |
62 | cache-size = <40000>; // L2, 256K | 62 | cache-size = <40000>; // L2, 256K |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <0 2>; | 64 | interrupts = <10 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | i2c@3000 { | 67 | i2c@3000 { |
68 | device_type = "i2c"; | 68 | device_type = "i2c"; |
69 | compatible = "fsl-i2c"; | 69 | compatible = "fsl-i2c"; |
70 | reg = <3000 100>; | 70 | reg = <3000 100>; |
71 | interrupts = <1b 2>; | 71 | interrupts = <2b 2>; |
72 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
73 | dfsrr; | 73 | dfsrr; |
74 | }; | 74 | }; |
@@ -81,13 +81,13 @@ | |||
81 | reg = <24520 20>; | 81 | reg = <24520 20>; |
82 | phy0: ethernet-phy@0 { | 82 | phy0: ethernet-phy@0 { |
83 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
84 | interrupts = <3a 1>; | 84 | interrupts = <a 1>; |
85 | reg = <0>; | 85 | reg = <0>; |
86 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
87 | }; | 87 | }; |
88 | phy1: ethernet-phy@1 { | 88 | phy1: ethernet-phy@1 { |
89 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
90 | interrupts = <3a 1>; | 90 | interrupts = <a 1>; |
91 | reg = <1>; | 91 | reg = <1>; |
92 | device_type = "ethernet-phy"; | 92 | device_type = "ethernet-phy"; |
93 | }; | 93 | }; |
@@ -101,7 +101,7 @@ | |||
101 | compatible = "gianfar"; | 101 | compatible = "gianfar"; |
102 | reg = <24000 1000>; | 102 | reg = <24000 1000>; |
103 | local-mac-address = [ 00 00 00 00 00 00 ]; | 103 | local-mac-address = [ 00 00 00 00 00 00 ]; |
104 | interrupts = <d 2 e 2 12 2>; | 104 | interrupts = <1d 2 1e 2 22 2>; |
105 | interrupt-parent = <&mpic>; | 105 | interrupt-parent = <&mpic>; |
106 | phy-handle = <&phy0>; | 106 | phy-handle = <&phy0>; |
107 | }; | 107 | }; |
@@ -114,7 +114,7 @@ | |||
114 | compatible = "gianfar"; | 114 | compatible = "gianfar"; |
115 | reg = <26000 1000>; | 115 | reg = <26000 1000>; |
116 | local-mac-address = [ 00 00 00 00 00 00 ]; | 116 | local-mac-address = [ 00 00 00 00 00 00 ]; |
117 | interrupts = <f 2 10 2 11 2>; | 117 | interrupts = <1f 2 20 2 21 2>; |
118 | interrupt-parent = <&mpic>; | 118 | interrupt-parent = <&mpic>; |
119 | phy-handle = <&phy1>; | 119 | phy-handle = <&phy1>; |
120 | }; | 120 | }; |
@@ -124,7 +124,7 @@ | |||
124 | compatible = "ns16550"; | 124 | compatible = "ns16550"; |
125 | reg = <4500 100>; | 125 | reg = <4500 100>; |
126 | clock-frequency = <0>; | 126 | clock-frequency = <0>; |
127 | interrupts = <1a 2>; | 127 | interrupts = <2a 2>; |
128 | interrupt-parent = <&mpic>; | 128 | interrupt-parent = <&mpic>; |
129 | }; | 129 | }; |
130 | 130 | ||
@@ -133,7 +133,7 @@ | |||
133 | compatible = "ns16550"; | 133 | compatible = "ns16550"; |
134 | reg = <4600 100>; | 134 | reg = <4600 100>; |
135 | clock-frequency = <0>; | 135 | clock-frequency = <0>; |
136 | interrupts = <1a 2>; | 136 | interrupts = <2a 2>; |
137 | interrupt-parent = <&mpic>; | 137 | interrupt-parent = <&mpic>; |
138 | }; | 138 | }; |
139 | 139 | ||
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts index ad96381033c0..9d0b84b66cd4 100644 --- a/arch/powerpc/boot/dts/mpc8548cds.dts +++ b/arch/powerpc/boot/dts/mpc8548cds.dts | |||
@@ -52,7 +52,7 @@ | |||
52 | compatible = "fsl,8548-memory-controller"; | 52 | compatible = "fsl,8548-memory-controller"; |
53 | reg = <2000 1000>; | 53 | reg = <2000 1000>; |
54 | interrupt-parent = <&mpic>; | 54 | interrupt-parent = <&mpic>; |
55 | interrupts = <2 2>; | 55 | interrupts = <12 2>; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | l2-cache-controller@20000 { | 58 | l2-cache-controller@20000 { |
@@ -61,14 +61,14 @@ | |||
61 | cache-line-size = <20>; // 32 bytes | 61 | cache-line-size = <20>; // 32 bytes |
62 | cache-size = <80000>; // L2, 512K | 62 | cache-size = <80000>; // L2, 512K |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <0 2>; | 64 | interrupts = <10 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | i2c@3000 { | 67 | i2c@3000 { |
68 | device_type = "i2c"; | 68 | device_type = "i2c"; |
69 | compatible = "fsl-i2c"; | 69 | compatible = "fsl-i2c"; |
70 | reg = <3000 100>; | 70 | reg = <3000 100>; |
71 | interrupts = <1b 2>; | 71 | interrupts = <2b 2>; |
72 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
73 | dfsrr; | 73 | dfsrr; |
74 | }; | 74 | }; |
@@ -81,25 +81,25 @@ | |||
81 | reg = <24520 20>; | 81 | reg = <24520 20>; |
82 | phy0: ethernet-phy@0 { | 82 | phy0: ethernet-phy@0 { |
83 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
84 | interrupts = <35 0>; | 84 | interrupts = <5 1>; |
85 | reg = <0>; | 85 | reg = <0>; |
86 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
87 | }; | 87 | }; |
88 | phy1: ethernet-phy@1 { | 88 | phy1: ethernet-phy@1 { |
89 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
90 | interrupts = <35 0>; | 90 | interrupts = <5 1>; |
91 | reg = <1>; | 91 | reg = <1>; |
92 | device_type = "ethernet-phy"; | 92 | device_type = "ethernet-phy"; |
93 | }; | 93 | }; |
94 | phy2: ethernet-phy@2 { | 94 | phy2: ethernet-phy@2 { |
95 | interrupt-parent = <&mpic>; | 95 | interrupt-parent = <&mpic>; |
96 | interrupts = <35 0>; | 96 | interrupts = <5 1>; |
97 | reg = <2>; | 97 | reg = <2>; |
98 | device_type = "ethernet-phy"; | 98 | device_type = "ethernet-phy"; |
99 | }; | 99 | }; |
100 | phy3: ethernet-phy@3 { | 100 | phy3: ethernet-phy@3 { |
101 | interrupt-parent = <&mpic>; | 101 | interrupt-parent = <&mpic>; |
102 | interrupts = <35 0>; | 102 | interrupts = <5 1>; |
103 | reg = <3>; | 103 | reg = <3>; |
104 | device_type = "ethernet-phy"; | 104 | device_type = "ethernet-phy"; |
105 | }; | 105 | }; |
@@ -112,8 +112,8 @@ | |||
112 | model = "eTSEC"; | 112 | model = "eTSEC"; |
113 | compatible = "gianfar"; | 113 | compatible = "gianfar"; |
114 | reg = <24000 1000>; | 114 | reg = <24000 1000>; |
115 | local-mac-address = [ 00 E0 0C 00 73 00 ]; | 115 | local-mac-address = [ 00 00 00 00 00 00 ]; |
116 | interrupts = <d 2 e 2 12 2>; | 116 | interrupts = <1d 2 1e 2 22 2>; |
117 | interrupt-parent = <&mpic>; | 117 | interrupt-parent = <&mpic>; |
118 | phy-handle = <&phy0>; | 118 | phy-handle = <&phy0>; |
119 | }; | 119 | }; |
@@ -125,8 +125,8 @@ | |||
125 | model = "eTSEC"; | 125 | model = "eTSEC"; |
126 | compatible = "gianfar"; | 126 | compatible = "gianfar"; |
127 | reg = <25000 1000>; | 127 | reg = <25000 1000>; |
128 | local-mac-address = [ 00 E0 0C 00 73 01 ]; | 128 | local-mac-address = [ 00 00 00 00 00 00 ]; |
129 | interrupts = <13 2 14 2 18 2>; | 129 | interrupts = <23 2 24 2 28 2>; |
130 | interrupt-parent = <&mpic>; | 130 | interrupt-parent = <&mpic>; |
131 | phy-handle = <&phy1>; | 131 | phy-handle = <&phy1>; |
132 | }; | 132 | }; |
@@ -139,8 +139,8 @@ | |||
139 | model = "eTSEC"; | 139 | model = "eTSEC"; |
140 | compatible = "gianfar"; | 140 | compatible = "gianfar"; |
141 | reg = <26000 1000>; | 141 | reg = <26000 1000>; |
142 | local-mac-address = [ 00 E0 0C 00 73 02 ]; | 142 | local-mac-address = [ 00 00 00 00 00 00 ]; |
143 | interrupts = <f 2 10 2 11 2>; | 143 | interrupts = <1f 2 20 2 21 2>; |
144 | interrupt-parent = <&mpic>; | 144 | interrupt-parent = <&mpic>; |
145 | phy-handle = <&phy2>; | 145 | phy-handle = <&phy2>; |
146 | }; | 146 | }; |
@@ -152,8 +152,8 @@ | |||
152 | model = "eTSEC"; | 152 | model = "eTSEC"; |
153 | compatible = "gianfar"; | 153 | compatible = "gianfar"; |
154 | reg = <27000 1000>; | 154 | reg = <27000 1000>; |
155 | local-mac-address = [ 00 E0 0C 00 73 03 ]; | 155 | local-mac-address = [ 00 00 00 00 00 00 ]; |
156 | interrupts = <15 2 16 2 17 2>; | 156 | interrupts = <25 2 26 2 27 2>; |
157 | interrupt-parent = <&mpic>; | 157 | interrupt-parent = <&mpic>; |
158 | phy-handle = <&phy3>; | 158 | phy-handle = <&phy3>; |
159 | }; | 159 | }; |
@@ -164,7 +164,7 @@ | |||
164 | compatible = "ns16550"; | 164 | compatible = "ns16550"; |
165 | reg = <4500 100>; // reg base, size | 165 | reg = <4500 100>; // reg base, size |
166 | clock-frequency = <0>; // should we fill in in uboot? | 166 | clock-frequency = <0>; // should we fill in in uboot? |
167 | interrupts = <1a 2>; | 167 | interrupts = <2a 2>; |
168 | interrupt-parent = <&mpic>; | 168 | interrupt-parent = <&mpic>; |
169 | }; | 169 | }; |
170 | 170 | ||
@@ -173,58 +173,64 @@ | |||
173 | compatible = "ns16550"; | 173 | compatible = "ns16550"; |
174 | reg = <4600 100>; // reg base, size | 174 | reg = <4600 100>; // reg base, size |
175 | clock-frequency = <0>; // should we fill in in uboot? | 175 | clock-frequency = <0>; // should we fill in in uboot? |
176 | interrupts = <1a 2>; | 176 | interrupts = <2a 2>; |
177 | interrupt-parent = <&mpic>; | 177 | interrupt-parent = <&mpic>; |
178 | }; | 178 | }; |
179 | 179 | ||
180 | global-utilities@e0000 { //global utilities reg | ||
181 | compatible = "fsl,mpc8548-guts"; | ||
182 | reg = <e0000 1000>; | ||
183 | fsl,has-rstcr; | ||
184 | }; | ||
185 | |||
180 | pci1: pci@8000 { | 186 | pci1: pci@8000 { |
181 | interrupt-map-mask = <1f800 0 0 7>; | 187 | interrupt-map-mask = <1f800 0 0 7>; |
182 | interrupt-map = < | 188 | interrupt-map = < |
183 | 189 | ||
184 | /* IDSEL 0x10 */ | 190 | /* IDSEL 0x10 */ |
185 | 08000 0 0 1 &mpic 30 1 | 191 | 08000 0 0 1 &mpic 0 1 |
186 | 08000 0 0 2 &mpic 31 1 | 192 | 08000 0 0 2 &mpic 1 1 |
187 | 08000 0 0 3 &mpic 32 1 | 193 | 08000 0 0 3 &mpic 2 1 |
188 | 08000 0 0 4 &mpic 33 1 | 194 | 08000 0 0 4 &mpic 3 1 |
189 | 195 | ||
190 | /* IDSEL 0x11 */ | 196 | /* IDSEL 0x11 */ |
191 | 08800 0 0 1 &mpic 30 1 | 197 | 08800 0 0 1 &mpic 0 1 |
192 | 08800 0 0 2 &mpic 31 1 | 198 | 08800 0 0 2 &mpic 1 1 |
193 | 08800 0 0 3 &mpic 32 1 | 199 | 08800 0 0 3 &mpic 2 1 |
194 | 08800 0 0 4 &mpic 33 1 | 200 | 08800 0 0 4 &mpic 3 1 |
195 | 201 | ||
196 | /* IDSEL 0x12 (Slot 1) */ | 202 | /* IDSEL 0x12 (Slot 1) */ |
197 | 09000 0 0 1 &mpic 30 1 | 203 | 09000 0 0 1 &mpic 0 1 |
198 | 09000 0 0 2 &mpic 31 1 | 204 | 09000 0 0 2 &mpic 1 1 |
199 | 09000 0 0 3 &mpic 32 1 | 205 | 09000 0 0 3 &mpic 2 1 |
200 | 09000 0 0 4 &mpic 33 1 | 206 | 09000 0 0 4 &mpic 3 1 |
201 | 207 | ||
202 | /* IDSEL 0x13 (Slot 2) */ | 208 | /* IDSEL 0x13 (Slot 2) */ |
203 | 09800 0 0 1 &mpic 31 1 | 209 | 09800 0 0 1 &mpic 1 1 |
204 | 09800 0 0 2 &mpic 32 1 | 210 | 09800 0 0 2 &mpic 2 1 |
205 | 09800 0 0 3 &mpic 33 1 | 211 | 09800 0 0 3 &mpic 3 1 |
206 | 09800 0 0 4 &mpic 30 1 | 212 | 09800 0 0 4 &mpic 0 1 |
207 | 213 | ||
208 | /* IDSEL 0x14 (Slot 3) */ | 214 | /* IDSEL 0x14 (Slot 3) */ |
209 | 0a000 0 0 1 &mpic 32 1 | 215 | 0a000 0 0 1 &mpic 2 1 |
210 | 0a000 0 0 2 &mpic 33 1 | 216 | 0a000 0 0 2 &mpic 3 1 |
211 | 0a000 0 0 3 &mpic 30 1 | 217 | 0a000 0 0 3 &mpic 0 1 |
212 | 0a000 0 0 4 &mpic 31 1 | 218 | 0a000 0 0 4 &mpic 1 1 |
213 | 219 | ||
214 | /* IDSEL 0x15 (Slot 4) */ | 220 | /* IDSEL 0x15 (Slot 4) */ |
215 | 0a800 0 0 1 &mpic 33 1 | 221 | 0a800 0 0 1 &mpic 3 1 |
216 | 0a800 0 0 2 &mpic 30 1 | 222 | 0a800 0 0 2 &mpic 0 1 |
217 | 0a800 0 0 3 &mpic 31 1 | 223 | 0a800 0 0 3 &mpic 1 1 |
218 | 0a800 0 0 4 &mpic 32 1 | 224 | 0a800 0 0 4 &mpic 2 1 |
219 | 225 | ||
220 | /* Bus 1 (Tundra Bridge) */ | 226 | /* Bus 1 (Tundra Bridge) */ |
221 | /* IDSEL 0x12 (ISA bridge) */ | 227 | /* IDSEL 0x12 (ISA bridge) */ |
222 | 19000 0 0 1 &mpic 30 1 | 228 | 19000 0 0 1 &mpic 0 1 |
223 | 19000 0 0 2 &mpic 31 1 | 229 | 19000 0 0 2 &mpic 1 1 |
224 | 19000 0 0 3 &mpic 32 1 | 230 | 19000 0 0 3 &mpic 2 1 |
225 | 19000 0 0 4 &mpic 33 1>; | 231 | 19000 0 0 4 &mpic 3 1>; |
226 | interrupt-parent = <&mpic>; | 232 | interrupt-parent = <&mpic>; |
227 | interrupts = <08 2>; | 233 | interrupts = <18 2>; |
228 | bus-range = <0 0>; | 234 | bus-range = <0 0>; |
229 | ranges = <02000000 0 80000000 80000000 0 20000000 | 235 | ranges = <02000000 0 80000000 80000000 0 20000000 |
230 | 01000000 0 00000000 e2000000 0 00100000>; | 236 | 01000000 0 00000000 e2000000 0 00100000>; |
@@ -256,12 +262,12 @@ | |||
256 | interrupt-map = < | 262 | interrupt-map = < |
257 | 263 | ||
258 | /* IDSEL 0x15 */ | 264 | /* IDSEL 0x15 */ |
259 | a800 0 0 1 &mpic 3b 1 | 265 | a800 0 0 1 &mpic b 1 |
260 | a800 0 0 2 &mpic 3b 1 | 266 | a800 0 0 2 &mpic b 1 |
261 | a800 0 0 3 &mpic 3b 1 | 267 | a800 0 0 3 &mpic b 1 |
262 | a800 0 0 4 &mpic 3b 1>; | 268 | a800 0 0 4 &mpic b 1>; |
263 | interrupt-parent = <&mpic>; | 269 | interrupt-parent = <&mpic>; |
264 | interrupts = <09 2>; | 270 | interrupts = <19 2>; |
265 | bus-range = <0 0>; | 271 | bus-range = <0 0>; |
266 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 272 | ranges = <02000000 0 a0000000 a0000000 0 20000000 |
267 | 01000000 0 00000000 e3000000 0 00100000>; | 273 | 01000000 0 00000000 e3000000 0 00100000>; |
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts index 951ed92f1154..17e45d9a382a 100644 --- a/arch/powerpc/boot/dts/mpc8555cds.dts +++ b/arch/powerpc/boot/dts/mpc8555cds.dts | |||
@@ -52,7 +52,7 @@ | |||
52 | compatible = "fsl,8555-memory-controller"; | 52 | compatible = "fsl,8555-memory-controller"; |
53 | reg = <2000 1000>; | 53 | reg = <2000 1000>; |
54 | interrupt-parent = <&mpic>; | 54 | interrupt-parent = <&mpic>; |
55 | interrupts = <2 2>; | 55 | interrupts = <12 2>; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | l2-cache-controller@20000 { | 58 | l2-cache-controller@20000 { |
@@ -61,14 +61,14 @@ | |||
61 | cache-line-size = <20>; // 32 bytes | 61 | cache-line-size = <20>; // 32 bytes |
62 | cache-size = <40000>; // L2, 256K | 62 | cache-size = <40000>; // L2, 256K |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <0 2>; | 64 | interrupts = <10 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | i2c@3000 { | 67 | i2c@3000 { |
68 | device_type = "i2c"; | 68 | device_type = "i2c"; |
69 | compatible = "fsl-i2c"; | 69 | compatible = "fsl-i2c"; |
70 | reg = <3000 100>; | 70 | reg = <3000 100>; |
71 | interrupts = <1b 2>; | 71 | interrupts = <2b 2>; |
72 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
73 | dfsrr; | 73 | dfsrr; |
74 | }; | 74 | }; |
@@ -81,13 +81,13 @@ | |||
81 | reg = <24520 20>; | 81 | reg = <24520 20>; |
82 | phy0: ethernet-phy@0 { | 82 | phy0: ethernet-phy@0 { |
83 | interrupt-parent = <&mpic>; | 83 | interrupt-parent = <&mpic>; |
84 | interrupts = <35 0>; | 84 | interrupts = <5 1>; |
85 | reg = <0>; | 85 | reg = <0>; |
86 | device_type = "ethernet-phy"; | 86 | device_type = "ethernet-phy"; |
87 | }; | 87 | }; |
88 | phy1: ethernet-phy@1 { | 88 | phy1: ethernet-phy@1 { |
89 | interrupt-parent = <&mpic>; | 89 | interrupt-parent = <&mpic>; |
90 | interrupts = <35 0>; | 90 | interrupts = <5 1>; |
91 | reg = <1>; | 91 | reg = <1>; |
92 | device_type = "ethernet-phy"; | 92 | device_type = "ethernet-phy"; |
93 | }; | 93 | }; |
@@ -100,8 +100,8 @@ | |||
100 | model = "TSEC"; | 100 | model = "TSEC"; |
101 | compatible = "gianfar"; | 101 | compatible = "gianfar"; |
102 | reg = <24000 1000>; | 102 | reg = <24000 1000>; |
103 | local-mac-address = [ 00 E0 0C 00 73 00 ]; | 103 | local-mac-address = [ 00 00 00 00 00 00 ]; |
104 | interrupts = <0d 2 0e 2 12 2>; | 104 | interrupts = <1d 2 1e 2 22 2>; |
105 | interrupt-parent = <&mpic>; | 105 | interrupt-parent = <&mpic>; |
106 | phy-handle = <&phy0>; | 106 | phy-handle = <&phy0>; |
107 | }; | 107 | }; |
@@ -113,8 +113,8 @@ | |||
113 | model = "TSEC"; | 113 | model = "TSEC"; |
114 | compatible = "gianfar"; | 114 | compatible = "gianfar"; |
115 | reg = <25000 1000>; | 115 | reg = <25000 1000>; |
116 | local-mac-address = [ 00 E0 0C 00 73 01 ]; | 116 | local-mac-address = [ 00 00 00 00 00 00 ]; |
117 | interrupts = <13 2 14 2 18 2>; | 117 | interrupts = <23 2 24 2 28 2>; |
118 | interrupt-parent = <&mpic>; | 118 | interrupt-parent = <&mpic>; |
119 | phy-handle = <&phy1>; | 119 | phy-handle = <&phy1>; |
120 | }; | 120 | }; |
@@ -124,7 +124,7 @@ | |||
124 | compatible = "ns16550"; | 124 | compatible = "ns16550"; |
125 | reg = <4500 100>; // reg base, size | 125 | reg = <4500 100>; // reg base, size |
126 | clock-frequency = <0>; // should we fill in in uboot? | 126 | clock-frequency = <0>; // should we fill in in uboot? |
127 | interrupts = <1a 2>; | 127 | interrupts = <2a 2>; |
128 | interrupt-parent = <&mpic>; | 128 | interrupt-parent = <&mpic>; |
129 | }; | 129 | }; |
130 | 130 | ||
@@ -133,7 +133,7 @@ | |||
133 | compatible = "ns16550"; | 133 | compatible = "ns16550"; |
134 | reg = <4600 100>; // reg base, size | 134 | reg = <4600 100>; // reg base, size |
135 | clock-frequency = <0>; // should we fill in in uboot? | 135 | clock-frequency = <0>; // should we fill in in uboot? |
136 | interrupts = <1a 2>; | 136 | interrupts = <2a 2>; |
137 | interrupt-parent = <&mpic>; | 137 | interrupt-parent = <&mpic>; |
138 | }; | 138 | }; |
139 | 139 | ||
@@ -142,49 +142,49 @@ | |||
142 | interrupt-map = < | 142 | interrupt-map = < |
143 | 143 | ||
144 | /* IDSEL 0x10 */ | 144 | /* IDSEL 0x10 */ |
145 | 08000 0 0 1 &mpic 30 1 | 145 | 08000 0 0 1 &mpic 0 1 |
146 | 08000 0 0 2 &mpic 31 1 | 146 | 08000 0 0 2 &mpic 1 1 |
147 | 08000 0 0 3 &mpic 32 1 | 147 | 08000 0 0 3 &mpic 2 1 |
148 | 08000 0 0 4 &mpic 33 1 | 148 | 08000 0 0 4 &mpic 3 1 |
149 | 149 | ||
150 | /* IDSEL 0x11 */ | 150 | /* IDSEL 0x11 */ |
151 | 08800 0 0 1 &mpic 30 1 | 151 | 08800 0 0 1 &mpic 0 1 |
152 | 08800 0 0 2 &mpic 31 1 | 152 | 08800 0 0 2 &mpic 1 1 |
153 | 08800 0 0 3 &mpic 32 1 | 153 | 08800 0 0 3 &mpic 2 1 |
154 | 08800 0 0 4 &mpic 33 1 | 154 | 08800 0 0 4 &mpic 3 1 |
155 | 155 | ||
156 | /* IDSEL 0x12 (Slot 1) */ | 156 | /* IDSEL 0x12 (Slot 1) */ |
157 | 09000 0 0 1 &mpic 30 1 | 157 | 09000 0 0 1 &mpic 0 1 |
158 | 09000 0 0 2 &mpic 31 1 | 158 | 09000 0 0 2 &mpic 1 1 |
159 | 09000 0 0 3 &mpic 32 1 | 159 | 09000 0 0 3 &mpic 2 1 |
160 | 09000 0 0 4 &mpic 33 1 | 160 | 09000 0 0 4 &mpic 3 1 |
161 | 161 | ||
162 | /* IDSEL 0x13 (Slot 2) */ | 162 | /* IDSEL 0x13 (Slot 2) */ |
163 | 09800 0 0 1 &mpic 31 1 | 163 | 09800 0 0 1 &mpic 1 1 |
164 | 09800 0 0 2 &mpic 32 1 | 164 | 09800 0 0 2 &mpic 2 1 |
165 | 09800 0 0 3 &mpic 33 1 | 165 | 09800 0 0 3 &mpic 3 1 |
166 | 09800 0 0 4 &mpic 30 1 | 166 | 09800 0 0 4 &mpic 0 1 |
167 | 167 | ||
168 | /* IDSEL 0x14 (Slot 3) */ | 168 | /* IDSEL 0x14 (Slot 3) */ |
169 | 0a000 0 0 1 &mpic 32 1 | 169 | 0a000 0 0 1 &mpic 2 1 |
170 | 0a000 0 0 2 &mpic 33 1 | 170 | 0a000 0 0 2 &mpic 3 1 |
171 | 0a000 0 0 3 &mpic 30 1 | 171 | 0a000 0 0 3 &mpic 0 1 |
172 | 0a000 0 0 4 &mpic 31 1 | 172 | 0a000 0 0 4 &mpic 1 1 |
173 | 173 | ||
174 | /* IDSEL 0x15 (Slot 4) */ | 174 | /* IDSEL 0x15 (Slot 4) */ |
175 | 0a800 0 0 1 &mpic 33 1 | 175 | 0a800 0 0 1 &mpic 3 1 |
176 | 0a800 0 0 2 &mpic 30 1 | 176 | 0a800 0 0 2 &mpic 0 1 |
177 | 0a800 0 0 3 &mpic 31 1 | 177 | 0a800 0 0 3 &mpic 1 1 |
178 | 0a800 0 0 4 &mpic 32 1 | 178 | 0a800 0 0 4 &mpic 2 1 |
179 | 179 | ||
180 | /* Bus 1 (Tundra Bridge) */ | 180 | /* Bus 1 (Tundra Bridge) */ |
181 | /* IDSEL 0x12 (ISA bridge) */ | 181 | /* IDSEL 0x12 (ISA bridge) */ |
182 | 19000 0 0 1 &mpic 30 1 | 182 | 19000 0 0 1 &mpic 0 1 |
183 | 19000 0 0 2 &mpic 31 1 | 183 | 19000 0 0 2 &mpic 1 1 |
184 | 19000 0 0 3 &mpic 32 1 | 184 | 19000 0 0 3 &mpic 2 1 |
185 | 19000 0 0 4 &mpic 33 1>; | 185 | 19000 0 0 4 &mpic 3 1>; |
186 | interrupt-parent = <&mpic>; | 186 | interrupt-parent = <&mpic>; |
187 | interrupts = <08 2>; | 187 | interrupts = <18 2>; |
188 | bus-range = <0 0>; | 188 | bus-range = <0 0>; |
189 | ranges = <02000000 0 80000000 80000000 0 20000000 | 189 | ranges = <02000000 0 80000000 80000000 0 20000000 |
190 | 01000000 0 00000000 e2000000 0 00100000>; | 190 | 01000000 0 00000000 e2000000 0 00100000>; |
@@ -216,12 +216,12 @@ | |||
216 | interrupt-map = < | 216 | interrupt-map = < |
217 | 217 | ||
218 | /* IDSEL 0x15 */ | 218 | /* IDSEL 0x15 */ |
219 | a800 0 0 1 &mpic 3b 1 | 219 | a800 0 0 1 &mpic b 1 |
220 | a800 0 0 2 &mpic 3b 1 | 220 | a800 0 0 2 &mpic b 1 |
221 | a800 0 0 3 &mpic 3b 1 | 221 | a800 0 0 3 &mpic b 1 |
222 | a800 0 0 4 &mpic 3b 1>; | 222 | a800 0 0 4 &mpic b 1>; |
223 | interrupt-parent = <&mpic>; | 223 | interrupt-parent = <&mpic>; |
224 | interrupts = <09 2>; | 224 | interrupts = <19 2>; |
225 | bus-range = <0 0>; | 225 | bus-range = <0 0>; |
226 | ranges = <02000000 0 a0000000 a0000000 0 20000000 | 226 | ranges = <02000000 0 a0000000 a0000000 0 20000000 |
227 | 01000000 0 00000000 e3000000 0 00100000>; | 227 | 01000000 0 00000000 e3000000 0 00100000>; |
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts index 80682152b0cf..21ccaaa27993 100644 --- a/arch/powerpc/boot/dts/mpc8560ads.dts +++ b/arch/powerpc/boot/dts/mpc8560ads.dts | |||
@@ -52,7 +52,7 @@ | |||
52 | compatible = "fsl,8540-memory-controller"; | 52 | compatible = "fsl,8540-memory-controller"; |
53 | reg = <2000 1000>; | 53 | reg = <2000 1000>; |
54 | interrupt-parent = <&mpic>; | 54 | interrupt-parent = <&mpic>; |
55 | interrupts = <2 2>; | 55 | interrupts = <12 2>; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | l2-cache-controller@20000 { | 58 | l2-cache-controller@20000 { |
@@ -61,7 +61,7 @@ | |||
61 | cache-line-size = <20>; // 32 bytes | 61 | cache-line-size = <20>; // 32 bytes |
62 | cache-size = <40000>; // L2, 256K | 62 | cache-size = <40000>; // L2, 256K |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <0 2>; | 64 | interrupts = <10 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | mdio@24520 { | 67 | mdio@24520 { |
@@ -72,25 +72,25 @@ | |||
72 | #size-cells = <0>; | 72 | #size-cells = <0>; |
73 | phy0: ethernet-phy@0 { | 73 | phy0: ethernet-phy@0 { |
74 | interrupt-parent = <&mpic>; | 74 | interrupt-parent = <&mpic>; |
75 | interrupts = <35 1>; | 75 | interrupts = <5 1>; |
76 | reg = <0>; | 76 | reg = <0>; |
77 | device_type = "ethernet-phy"; | 77 | device_type = "ethernet-phy"; |
78 | }; | 78 | }; |
79 | phy1: ethernet-phy@1 { | 79 | phy1: ethernet-phy@1 { |
80 | interrupt-parent = <&mpic>; | 80 | interrupt-parent = <&mpic>; |
81 | interrupts = <35 1>; | 81 | interrupts = <5 1>; |
82 | reg = <1>; | 82 | reg = <1>; |
83 | device_type = "ethernet-phy"; | 83 | device_type = "ethernet-phy"; |
84 | }; | 84 | }; |
85 | phy2: ethernet-phy@2 { | 85 | phy2: ethernet-phy@2 { |
86 | interrupt-parent = <&mpic>; | 86 | interrupt-parent = <&mpic>; |
87 | interrupts = <37 1>; | 87 | interrupts = <7 1>; |
88 | reg = <2>; | 88 | reg = <2>; |
89 | device_type = "ethernet-phy"; | 89 | device_type = "ethernet-phy"; |
90 | }; | 90 | }; |
91 | phy3: ethernet-phy@3 { | 91 | phy3: ethernet-phy@3 { |
92 | interrupt-parent = <&mpic>; | 92 | interrupt-parent = <&mpic>; |
93 | interrupts = <37 1>; | 93 | interrupts = <7 1>; |
94 | reg = <3>; | 94 | reg = <3>; |
95 | device_type = "ethernet-phy"; | 95 | device_type = "ethernet-phy"; |
96 | }; | 96 | }; |
@@ -101,8 +101,14 @@ | |||
101 | model = "TSEC"; | 101 | model = "TSEC"; |
102 | compatible = "gianfar"; | 102 | compatible = "gianfar"; |
103 | reg = <24000 1000>; | 103 | reg = <24000 1000>; |
104 | address = [ 00 00 0C 00 00 FD ]; | 104 | /* |
105 | interrupts = <d 2 e 2 12 2>; | 105 | * address is deprecated and will be removed |
106 | * in 2.6.25. Only recent versions of | ||
107 | * U-Boot support local-mac-address, however. | ||
108 | */ | ||
109 | address = [ 00 00 00 00 00 00 ]; | ||
110 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
111 | interrupts = <1d 2 1e 2 22 2>; | ||
106 | interrupt-parent = <&mpic>; | 112 | interrupt-parent = <&mpic>; |
107 | phy-handle = <&phy0>; | 113 | phy-handle = <&phy0>; |
108 | }; | 114 | }; |
@@ -114,8 +120,14 @@ | |||
114 | model = "TSEC"; | 120 | model = "TSEC"; |
115 | compatible = "gianfar"; | 121 | compatible = "gianfar"; |
116 | reg = <25000 1000>; | 122 | reg = <25000 1000>; |
117 | address = [ 00 00 0C 00 01 FD ]; | 123 | /* |
118 | interrupts = <13 2 14 2 18 2>; | 124 | * address is deprecated and will be removed |
125 | * in 2.6.25. Only recent versions of | ||
126 | * U-Boot support local-mac-address, however. | ||
127 | */ | ||
128 | address = [ 00 00 00 00 00 00 ]; | ||
129 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
130 | interrupts = <23 2 24 2 28 2>; | ||
119 | interrupt-parent = <&mpic>; | 131 | interrupt-parent = <&mpic>; |
120 | phy-handle = <&phy1>; | 132 | phy-handle = <&phy1>; |
121 | }; | 133 | }; |
@@ -132,79 +144,79 @@ | |||
132 | interrupt-map = < | 144 | interrupt-map = < |
133 | 145 | ||
134 | /* IDSEL 0x2 */ | 146 | /* IDSEL 0x2 */ |
135 | 1000 0 0 1 &mpic 31 1 | 147 | 1000 0 0 1 &mpic 1 1 |
136 | 1000 0 0 2 &mpic 32 1 | 148 | 1000 0 0 2 &mpic 2 1 |
137 | 1000 0 0 3 &mpic 33 1 | 149 | 1000 0 0 3 &mpic 3 1 |
138 | 1000 0 0 4 &mpic 34 1 | 150 | 1000 0 0 4 &mpic 4 1 |
139 | 151 | ||
140 | /* IDSEL 0x3 */ | 152 | /* IDSEL 0x3 */ |
141 | 1800 0 0 1 &mpic 34 1 | 153 | 1800 0 0 1 &mpic 4 1 |
142 | 1800 0 0 2 &mpic 31 1 | 154 | 1800 0 0 2 &mpic 1 1 |
143 | 1800 0 0 3 &mpic 32 1 | 155 | 1800 0 0 3 &mpic 2 1 |
144 | 1800 0 0 4 &mpic 33 1 | 156 | 1800 0 0 4 &mpic 3 1 |
145 | 157 | ||
146 | /* IDSEL 0x4 */ | 158 | /* IDSEL 0x4 */ |
147 | 2000 0 0 1 &mpic 33 1 | 159 | 2000 0 0 1 &mpic 3 1 |
148 | 2000 0 0 2 &mpic 34 1 | 160 | 2000 0 0 2 &mpic 4 1 |
149 | 2000 0 0 3 &mpic 31 1 | 161 | 2000 0 0 3 &mpic 1 1 |
150 | 2000 0 0 4 &mpic 32 1 | 162 | 2000 0 0 4 &mpic 2 1 |
151 | 163 | ||
152 | /* IDSEL 0x5 */ | 164 | /* IDSEL 0x5 */ |
153 | 2800 0 0 1 &mpic 32 1 | 165 | 2800 0 0 1 &mpic 2 1 |
154 | 2800 0 0 2 &mpic 33 1 | 166 | 2800 0 0 2 &mpic 3 1 |
155 | 2800 0 0 3 &mpic 34 1 | 167 | 2800 0 0 3 &mpic 4 1 |
156 | 2800 0 0 4 &mpic 31 1 | 168 | 2800 0 0 4 &mpic 1 1 |
157 | 169 | ||
158 | /* IDSEL 12 */ | 170 | /* IDSEL 12 */ |
159 | 6000 0 0 1 &mpic 31 1 | 171 | 6000 0 0 1 &mpic 1 1 |
160 | 6000 0 0 2 &mpic 32 1 | 172 | 6000 0 0 2 &mpic 2 1 |
161 | 6000 0 0 3 &mpic 33 1 | 173 | 6000 0 0 3 &mpic 3 1 |
162 | 6000 0 0 4 &mpic 34 1 | 174 | 6000 0 0 4 &mpic 4 1 |
163 | 175 | ||
164 | /* IDSEL 13 */ | 176 | /* IDSEL 13 */ |
165 | 6800 0 0 1 &mpic 34 1 | 177 | 6800 0 0 1 &mpic 4 1 |
166 | 6800 0 0 2 &mpic 31 1 | 178 | 6800 0 0 2 &mpic 1 1 |
167 | 6800 0 0 3 &mpic 32 1 | 179 | 6800 0 0 3 &mpic 2 1 |
168 | 6800 0 0 4 &mpic 33 1 | 180 | 6800 0 0 4 &mpic 3 1 |
169 | 181 | ||
170 | /* IDSEL 14*/ | 182 | /* IDSEL 14*/ |
171 | 7000 0 0 1 &mpic 33 1 | 183 | 7000 0 0 1 &mpic 3 1 |
172 | 7000 0 0 2 &mpic 34 1 | 184 | 7000 0 0 2 &mpic 4 1 |
173 | 7000 0 0 3 &mpic 31 1 | 185 | 7000 0 0 3 &mpic 1 1 |
174 | 7000 0 0 4 &mpic 32 1 | 186 | 7000 0 0 4 &mpic 2 1 |
175 | 187 | ||
176 | /* IDSEL 15 */ | 188 | /* IDSEL 15 */ |
177 | 7800 0 0 1 &mpic 32 1 | 189 | 7800 0 0 1 &mpic 2 1 |
178 | 7800 0 0 2 &mpic 33 1 | 190 | 7800 0 0 2 &mpic 3 1 |
179 | 7800 0 0 3 &mpic 34 1 | 191 | 7800 0 0 3 &mpic 4 1 |
180 | 7800 0 0 4 &mpic 31 1 | 192 | 7800 0 0 4 &mpic 1 1 |
181 | 193 | ||
182 | /* IDSEL 18 */ | 194 | /* IDSEL 18 */ |
183 | 9000 0 0 1 &mpic 31 1 | 195 | 9000 0 0 1 &mpic 1 1 |
184 | 9000 0 0 2 &mpic 32 1 | 196 | 9000 0 0 2 &mpic 2 1 |
185 | 9000 0 0 3 &mpic 33 1 | 197 | 9000 0 0 3 &mpic 3 1 |
186 | 9000 0 0 4 &mpic 34 1 | 198 | 9000 0 0 4 &mpic 4 1 |
187 | 199 | ||
188 | /* IDSEL 19 */ | 200 | /* IDSEL 19 */ |
189 | 9800 0 0 1 &mpic 34 1 | 201 | 9800 0 0 1 &mpic 4 1 |
190 | 9800 0 0 2 &mpic 31 1 | 202 | 9800 0 0 2 &mpic 1 1 |
191 | 9800 0 0 3 &mpic 32 1 | 203 | 9800 0 0 3 &mpic 2 1 |
192 | 9800 0 0 4 &mpic 33 1 | 204 | 9800 0 0 4 &mpic 3 1 |
193 | 205 | ||
194 | /* IDSEL 20 */ | 206 | /* IDSEL 20 */ |
195 | a000 0 0 1 &mpic 33 1 | 207 | a000 0 0 1 &mpic 3 1 |
196 | a000 0 0 2 &mpic 34 1 | 208 | a000 0 0 2 &mpic 4 1 |
197 | a000 0 0 3 &mpic 31 1 | 209 | a000 0 0 3 &mpic 1 1 |
198 | a000 0 0 4 &mpic 32 1 | 210 | a000 0 0 4 &mpic 2 1 |
199 | 211 | ||
200 | /* IDSEL 21 */ | 212 | /* IDSEL 21 */ |
201 | a800 0 0 1 &mpic 32 1 | 213 | a800 0 0 1 &mpic 2 1 |
202 | a800 0 0 2 &mpic 33 1 | 214 | a800 0 0 2 &mpic 3 1 |
203 | a800 0 0 3 &mpic 34 1 | 215 | a800 0 0 3 &mpic 4 1 |
204 | a800 0 0 4 &mpic 31 1>; | 216 | a800 0 0 4 &mpic 1 1>; |
205 | 217 | ||
206 | interrupt-parent = <&mpic>; | 218 | interrupt-parent = <&mpic>; |
207 | interrupts = <8 0>; | 219 | interrupts = <18 2>; |
208 | bus-range = <0 0>; | 220 | bus-range = <0 0>; |
209 | ranges = <02000000 0 80000000 80000000 0 20000000 | 221 | ranges = <02000000 0 80000000 80000000 0 20000000 |
210 | 01000000 0 00000000 e2000000 0 01000000>; | 222 | 01000000 0 00000000 e2000000 0 01000000>; |
@@ -234,7 +246,7 @@ | |||
234 | interrupt-controller; | 246 | interrupt-controller; |
235 | #address-cells = <0>; | 247 | #address-cells = <0>; |
236 | #interrupt-cells = <2>; | 248 | #interrupt-cells = <2>; |
237 | interrupts = <1e 0>; | 249 | interrupts = <2e 2>; |
238 | interrupt-parent = <&mpic>; | 250 | interrupt-parent = <&mpic>; |
239 | reg = <90c00 80>; | 251 | reg = <90c00 80>; |
240 | built-in; | 252 | built-in; |
@@ -275,7 +287,13 @@ | |||
275 | model = "FCC"; | 287 | model = "FCC"; |
276 | device-id = <2>; | 288 | device-id = <2>; |
277 | reg = <91320 20 88500 100 913a0 30>; | 289 | reg = <91320 20 88500 100 913a0 30>; |
278 | mac-address = [ 00 00 0C 00 02 FD ]; | 290 | /* |
291 | * mac-address is deprecated and will be removed | ||
292 | * in 2.6.25. Only recent versions of | ||
293 | * U-Boot support local-mac-address, however. | ||
294 | */ | ||
295 | mac-address = [ 00 00 00 00 00 00 ]; | ||
296 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
279 | clock-setup = <ff00ffff 250000>; | 297 | clock-setup = <ff00ffff 250000>; |
280 | rx-clock = <15>; | 298 | rx-clock = <15>; |
281 | tx-clock = <16>; | 299 | tx-clock = <16>; |
@@ -290,7 +308,13 @@ | |||
290 | model = "FCC"; | 308 | model = "FCC"; |
291 | device-id = <3>; | 309 | device-id = <3>; |
292 | reg = <91340 20 88600 100 913d0 30>; | 310 | reg = <91340 20 88600 100 913d0 30>; |
293 | mac-address = [ 00 00 0C 00 03 FD ]; | 311 | /* |
312 | * mac-address is deprecated and will be removed | ||
313 | * in 2.6.25. Only recent versions of | ||
314 | * U-Boot support local-mac-address, however. | ||
315 | */ | ||
316 | mac-address = [ 00 00 00 00 00 00 ]; | ||
317 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
294 | clock-setup = <ffff00ff 3700>; | 318 | clock-setup = <ffff00ff 3700>; |
295 | rx-clock = <17>; | 319 | rx-clock = <17>; |
296 | tx-clock = <18>; | 320 | tx-clock = <18>; |
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts index a123ec9456bc..6bb18f2807a8 100644 --- a/arch/powerpc/boot/dts/mpc8568mds.dts +++ b/arch/powerpc/boot/dts/mpc8568mds.dts | |||
@@ -61,7 +61,7 @@ | |||
61 | compatible = "fsl,8568-memory-controller"; | 61 | compatible = "fsl,8568-memory-controller"; |
62 | reg = <2000 1000>; | 62 | reg = <2000 1000>; |
63 | interrupt-parent = <&mpic>; | 63 | interrupt-parent = <&mpic>; |
64 | interrupts = <2 2>; | 64 | interrupts = <12 2>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | l2-cache-controller@20000 { | 67 | l2-cache-controller@20000 { |
@@ -70,14 +70,14 @@ | |||
70 | cache-line-size = <20>; // 32 bytes | 70 | cache-line-size = <20>; // 32 bytes |
71 | cache-size = <80000>; // L2, 512K | 71 | cache-size = <80000>; // L2, 512K |
72 | interrupt-parent = <&mpic>; | 72 | interrupt-parent = <&mpic>; |
73 | interrupts = <0 2>; | 73 | interrupts = <10 2>; |
74 | }; | 74 | }; |
75 | 75 | ||
76 | i2c@3000 { | 76 | i2c@3000 { |
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 = <1b 2>; | 80 | interrupts = <2b 2>; |
81 | interrupt-parent = <&mpic>; | 81 | interrupt-parent = <&mpic>; |
82 | dfsrr; | 82 | dfsrr; |
83 | }; | 83 | }; |
@@ -86,7 +86,7 @@ | |||
86 | device_type = "i2c"; | 86 | device_type = "i2c"; |
87 | compatible = "fsl-i2c"; | 87 | compatible = "fsl-i2c"; |
88 | reg = <3100 100>; | 88 | reg = <3100 100>; |
89 | interrupts = <1b 2>; | 89 | interrupts = <2b 2>; |
90 | interrupt-parent = <&mpic>; | 90 | interrupt-parent = <&mpic>; |
91 | dfsrr; | 91 | dfsrr; |
92 | }; | 92 | }; |
@@ -99,25 +99,25 @@ | |||
99 | reg = <24520 20>; | 99 | reg = <24520 20>; |
100 | phy0: ethernet-phy@0 { | 100 | phy0: ethernet-phy@0 { |
101 | interrupt-parent = <&mpic>; | 101 | interrupt-parent = <&mpic>; |
102 | interrupts = <31 1>; | 102 | interrupts = <1 1>; |
103 | reg = <0>; | 103 | reg = <0>; |
104 | device_type = "ethernet-phy"; | 104 | device_type = "ethernet-phy"; |
105 | }; | 105 | }; |
106 | phy1: ethernet-phy@1 { | 106 | phy1: ethernet-phy@1 { |
107 | interrupt-parent = <&mpic>; | 107 | interrupt-parent = <&mpic>; |
108 | interrupts = <32 1>; | 108 | interrupts = <2 1>; |
109 | reg = <1>; | 109 | reg = <1>; |
110 | device_type = "ethernet-phy"; | 110 | device_type = "ethernet-phy"; |
111 | }; | 111 | }; |
112 | phy2: ethernet-phy@2 { | 112 | phy2: ethernet-phy@2 { |
113 | interrupt-parent = <&mpic>; | 113 | interrupt-parent = <&mpic>; |
114 | interrupts = <31 1>; | 114 | interrupts = <1 1>; |
115 | reg = <2>; | 115 | reg = <2>; |
116 | device_type = "ethernet-phy"; | 116 | device_type = "ethernet-phy"; |
117 | }; | 117 | }; |
118 | phy3: ethernet-phy@3 { | 118 | phy3: ethernet-phy@3 { |
119 | interrupt-parent = <&mpic>; | 119 | interrupt-parent = <&mpic>; |
120 | interrupts = <32 1>; | 120 | interrupts = <2 1>; |
121 | reg = <3>; | 121 | reg = <3>; |
122 | device_type = "ethernet-phy"; | 122 | device_type = "ethernet-phy"; |
123 | }; | 123 | }; |
@@ -130,8 +130,14 @@ | |||
130 | model = "eTSEC"; | 130 | model = "eTSEC"; |
131 | compatible = "gianfar"; | 131 | compatible = "gianfar"; |
132 | reg = <24000 1000>; | 132 | reg = <24000 1000>; |
133 | /* | ||
134 | * mac-address is deprecated and will be removed | ||
135 | * in 2.6.25. Only recent versions of | ||
136 | * U-Boot support local-mac-address, however. | ||
137 | */ | ||
133 | mac-address = [ 00 00 00 00 00 00 ]; | 138 | mac-address = [ 00 00 00 00 00 00 ]; |
134 | interrupts = <d 2 e 2 12 2>; | 139 | local-mac-address = [ 00 00 00 00 00 00 ]; |
140 | interrupts = <1d 2 1e 2 22 2>; | ||
135 | interrupt-parent = <&mpic>; | 141 | interrupt-parent = <&mpic>; |
136 | phy-handle = <&phy2>; | 142 | phy-handle = <&phy2>; |
137 | }; | 143 | }; |
@@ -143,8 +149,14 @@ | |||
143 | model = "eTSEC"; | 149 | model = "eTSEC"; |
144 | compatible = "gianfar"; | 150 | compatible = "gianfar"; |
145 | reg = <25000 1000>; | 151 | reg = <25000 1000>; |
146 | mac-address = [ 00 00 00 00 00 00]; | 152 | /* |
147 | interrupts = <13 2 14 2 18 2>; | 153 | * mac-address is deprecated and will be removed |
154 | * in 2.6.25. Only recent versions of | ||
155 | * U-Boot support local-mac-address, however. | ||
156 | */ | ||
157 | mac-address = [ 00 00 00 00 00 00 ]; | ||
158 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
159 | interrupts = <23 2 24 2 28 2>; | ||
148 | interrupt-parent = <&mpic>; | 160 | interrupt-parent = <&mpic>; |
149 | phy-handle = <&phy3>; | 161 | phy-handle = <&phy3>; |
150 | }; | 162 | }; |
@@ -154,7 +166,7 @@ | |||
154 | compatible = "ns16550"; | 166 | compatible = "ns16550"; |
155 | reg = <4500 100>; | 167 | reg = <4500 100>; |
156 | clock-frequency = <0>; | 168 | clock-frequency = <0>; |
157 | interrupts = <1a 2>; | 169 | interrupts = <2a 2>; |
158 | interrupt-parent = <&mpic>; | 170 | interrupt-parent = <&mpic>; |
159 | }; | 171 | }; |
160 | 172 | ||
@@ -163,7 +175,7 @@ | |||
163 | compatible = "ns16550"; | 175 | compatible = "ns16550"; |
164 | reg = <4600 100>; | 176 | reg = <4600 100>; |
165 | clock-frequency = <0>; | 177 | clock-frequency = <0>; |
166 | interrupts = <1a 2>; | 178 | interrupts = <2a 2>; |
167 | interrupt-parent = <&mpic>; | 179 | interrupt-parent = <&mpic>; |
168 | }; | 180 | }; |
169 | 181 | ||
@@ -172,7 +184,7 @@ | |||
172 | model = "SEC2"; | 184 | model = "SEC2"; |
173 | compatible = "talitos"; | 185 | compatible = "talitos"; |
174 | reg = <30000 f000>; | 186 | reg = <30000 f000>; |
175 | interrupts = <1d 2>; | 187 | interrupts = <2d 2>; |
176 | interrupt-parent = <&mpic>; | 188 | interrupt-parent = <&mpic>; |
177 | num-channels = <4>; | 189 | num-channels = <4>; |
178 | channel-fifo-len = <18>; | 190 | channel-fifo-len = <18>; |
@@ -300,7 +312,13 @@ | |||
300 | reg = <2000 200>; | 312 | reg = <2000 200>; |
301 | interrupts = <20>; | 313 | interrupts = <20>; |
302 | interrupt-parent = <&qeic>; | 314 | interrupt-parent = <&qeic>; |
303 | mac-address = [ 00 04 9f 00 23 23 ]; | 315 | /* |
316 | * mac-address is deprecated and will be removed | ||
317 | * in 2.6.25. Only recent versions of | ||
318 | * U-Boot support local-mac-address, however. | ||
319 | */ | ||
320 | mac-address = [ 00 00 00 00 00 00 ]; | ||
321 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
304 | rx-clock = <0>; | 322 | rx-clock = <0>; |
305 | tx-clock = <19>; | 323 | tx-clock = <19>; |
306 | phy-handle = <&qe_phy0>; | 324 | phy-handle = <&qe_phy0>; |
@@ -316,7 +334,13 @@ | |||
316 | reg = <3000 200>; | 334 | reg = <3000 200>; |
317 | interrupts = <21>; | 335 | interrupts = <21>; |
318 | interrupt-parent = <&qeic>; | 336 | interrupt-parent = <&qeic>; |
319 | mac-address = [ 00 11 22 33 44 55 ]; | 337 | /* |
338 | * mac-address is deprecated and will be removed | ||
339 | * in 2.6.25. Only recent versions of | ||
340 | * U-Boot support local-mac-address, however. | ||
341 | */ | ||
342 | mac-address = [ 00 00 00 00 00 00 ]; | ||
343 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
320 | rx-clock = <0>; | 344 | rx-clock = <0>; |
321 | tx-clock = <14>; | 345 | tx-clock = <14>; |
322 | phy-handle = <&qe_phy1>; | 346 | phy-handle = <&qe_phy1>; |
@@ -335,25 +359,25 @@ | |||
335 | * gianfar's MDIO bus */ | 359 | * gianfar's MDIO bus */ |
336 | qe_phy0: ethernet-phy@00 { | 360 | qe_phy0: ethernet-phy@00 { |
337 | interrupt-parent = <&mpic>; | 361 | interrupt-parent = <&mpic>; |
338 | interrupts = <31 1>; | 362 | interrupts = <1 1>; |
339 | reg = <0>; | 363 | reg = <0>; |
340 | device_type = "ethernet-phy"; | 364 | device_type = "ethernet-phy"; |
341 | }; | 365 | }; |
342 | qe_phy1: ethernet-phy@01 { | 366 | qe_phy1: ethernet-phy@01 { |
343 | interrupt-parent = <&mpic>; | 367 | interrupt-parent = <&mpic>; |
344 | interrupts = <32 1>; | 368 | interrupts = <2 1>; |
345 | reg = <1>; | 369 | reg = <1>; |
346 | device_type = "ethernet-phy"; | 370 | device_type = "ethernet-phy"; |
347 | }; | 371 | }; |
348 | qe_phy2: ethernet-phy@02 { | 372 | qe_phy2: ethernet-phy@02 { |
349 | interrupt-parent = <&mpic>; | 373 | interrupt-parent = <&mpic>; |
350 | interrupts = <31 1>; | 374 | interrupts = <1 1>; |
351 | reg = <2>; | 375 | reg = <2>; |
352 | device_type = "ethernet-phy"; | 376 | device_type = "ethernet-phy"; |
353 | }; | 377 | }; |
354 | qe_phy3: ethernet-phy@03 { | 378 | qe_phy3: ethernet-phy@03 { |
355 | interrupt-parent = <&mpic>; | 379 | interrupt-parent = <&mpic>; |
356 | interrupts = <32 1>; | 380 | interrupts = <2 1>; |
357 | reg = <3>; | 381 | reg = <3>; |
358 | device_type = "ethernet-phy"; | 382 | device_type = "ethernet-phy"; |
359 | }; | 383 | }; |
@@ -367,7 +391,7 @@ | |||
367 | reg = <80 80>; | 391 | reg = <80 80>; |
368 | built-in; | 392 | built-in; |
369 | big-endian; | 393 | big-endian; |
370 | interrupts = <1e 2 1e 2>; //high:30 low:30 | 394 | interrupts = <2e 2 2e 2>; //high:30 low:30 |
371 | interrupt-parent = <&mpic>; | 395 | interrupt-parent = <&mpic>; |
372 | }; | 396 | }; |
373 | 397 | ||
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 260b264c869e..db56a02b748f 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -56,8 +56,12 @@ | |||
56 | #size-cells = <1>; | 56 | #size-cells = <1>; |
57 | #interrupt-cells = <2>; | 57 | #interrupt-cells = <2>; |
58 | device_type = "soc"; | 58 | device_type = "soc"; |
59 | ranges = <0 f8000000 00100000>; | 59 | ranges = <00001000 f8001000 000ff000 |
60 | reg = <f8000000 00100000>; // CCSRBAR 1M | 60 | 80000000 80000000 20000000 |
61 | e2000000 e2000000 00100000 | ||
62 | a0000000 a0000000 20000000 | ||
63 | e3000000 e3000000 00100000>; | ||
64 | reg = <f8000000 00001000>; // CCSRBAR | ||
61 | bus-frequency = <0>; | 65 | bus-frequency = <0>; |
62 | 66 | ||
63 | i2c@3000 { | 67 | i2c@3000 { |
@@ -86,25 +90,25 @@ | |||
86 | reg = <24520 20>; | 90 | reg = <24520 20>; |
87 | phy0: ethernet-phy@0 { | 91 | phy0: ethernet-phy@0 { |
88 | interrupt-parent = <&mpic>; | 92 | interrupt-parent = <&mpic>; |
89 | interrupts = <4a 1>; | 93 | interrupts = <a 1>; |
90 | reg = <0>; | 94 | reg = <0>; |
91 | device_type = "ethernet-phy"; | 95 | device_type = "ethernet-phy"; |
92 | }; | 96 | }; |
93 | phy1: ethernet-phy@1 { | 97 | phy1: ethernet-phy@1 { |
94 | interrupt-parent = <&mpic>; | 98 | interrupt-parent = <&mpic>; |
95 | interrupts = <4a 1>; | 99 | interrupts = <a 1>; |
96 | reg = <1>; | 100 | reg = <1>; |
97 | device_type = "ethernet-phy"; | 101 | device_type = "ethernet-phy"; |
98 | }; | 102 | }; |
99 | phy2: ethernet-phy@2 { | 103 | phy2: ethernet-phy@2 { |
100 | interrupt-parent = <&mpic>; | 104 | interrupt-parent = <&mpic>; |
101 | interrupts = <4a 1>; | 105 | interrupts = <a 1>; |
102 | reg = <2>; | 106 | reg = <2>; |
103 | device_type = "ethernet-phy"; | 107 | device_type = "ethernet-phy"; |
104 | }; | 108 | }; |
105 | phy3: ethernet-phy@3 { | 109 | phy3: ethernet-phy@3 { |
106 | interrupt-parent = <&mpic>; | 110 | interrupt-parent = <&mpic>; |
107 | interrupts = <4a 1>; | 111 | interrupts = <a 1>; |
108 | reg = <3>; | 112 | reg = <3>; |
109 | device_type = "ethernet-phy"; | 113 | device_type = "ethernet-phy"; |
110 | }; | 114 | }; |
@@ -117,7 +121,13 @@ | |||
117 | model = "TSEC"; | 121 | model = "TSEC"; |
118 | compatible = "gianfar"; | 122 | compatible = "gianfar"; |
119 | reg = <24000 1000>; | 123 | reg = <24000 1000>; |
120 | mac-address = [ 00 E0 0C 00 73 00 ]; | 124 | /* |
125 | * mac-address is deprecated and will be removed | ||
126 | * in 2.6.25. Only recent versions of | ||
127 | * U-Boot support local-mac-address, however. | ||
128 | */ | ||
129 | mac-address = [ 00 00 00 00 00 00 ]; | ||
130 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
121 | interrupts = <1d 2 1e 2 22 2>; | 131 | interrupts = <1d 2 1e 2 22 2>; |
122 | interrupt-parent = <&mpic>; | 132 | interrupt-parent = <&mpic>; |
123 | phy-handle = <&phy0>; | 133 | phy-handle = <&phy0>; |
@@ -130,7 +140,13 @@ | |||
130 | model = "TSEC"; | 140 | model = "TSEC"; |
131 | compatible = "gianfar"; | 141 | compatible = "gianfar"; |
132 | reg = <25000 1000>; | 142 | reg = <25000 1000>; |
133 | mac-address = [ 00 E0 0C 00 73 01 ]; | 143 | /* |
144 | * mac-address is deprecated and will be removed | ||
145 | * in 2.6.25. Only recent versions of | ||
146 | * U-Boot support local-mac-address, however. | ||
147 | */ | ||
148 | mac-address = [ 00 00 00 00 00 00 ]; | ||
149 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
134 | interrupts = <23 2 24 2 28 2>; | 150 | interrupts = <23 2 24 2 28 2>; |
135 | interrupt-parent = <&mpic>; | 151 | interrupt-parent = <&mpic>; |
136 | phy-handle = <&phy1>; | 152 | phy-handle = <&phy1>; |
@@ -143,7 +159,13 @@ | |||
143 | model = "TSEC"; | 159 | model = "TSEC"; |
144 | compatible = "gianfar"; | 160 | compatible = "gianfar"; |
145 | reg = <26000 1000>; | 161 | reg = <26000 1000>; |
146 | mac-address = [ 00 E0 0C 00 02 FD ]; | 162 | /* |
163 | * mac-address is deprecated and will be removed | ||
164 | * in 2.6.25. Only recent versions of | ||
165 | * U-Boot support local-mac-address, however. | ||
166 | */ | ||
167 | mac-address = [ 00 00 00 00 00 00 ]; | ||
168 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
147 | interrupts = <1F 2 20 2 21 2>; | 169 | interrupts = <1F 2 20 2 21 2>; |
148 | interrupt-parent = <&mpic>; | 170 | interrupt-parent = <&mpic>; |
149 | phy-handle = <&phy2>; | 171 | phy-handle = <&phy2>; |
@@ -156,7 +178,13 @@ | |||
156 | model = "TSEC"; | 178 | model = "TSEC"; |
157 | compatible = "gianfar"; | 179 | compatible = "gianfar"; |
158 | reg = <27000 1000>; | 180 | reg = <27000 1000>; |
159 | mac-address = [ 00 E0 0C 00 03 FD ]; | 181 | /* |
182 | * mac-address is deprecated and will be removed | ||
183 | * in 2.6.25. Only recent versions of | ||
184 | * U-Boot support local-mac-address, however. | ||
185 | */ | ||
186 | mac-address = [ 00 00 00 00 00 00 ]; | ||
187 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
160 | interrupts = <25 2 26 2 27 2>; | 188 | interrupts = <25 2 26 2 27 2>; |
161 | interrupt-parent = <&mpic>; | 189 | interrupt-parent = <&mpic>; |
162 | phy-handle = <&phy3>; | 190 | phy-handle = <&phy3>; |
@@ -186,7 +214,7 @@ | |||
186 | #size-cells = <2>; | 214 | #size-cells = <2>; |
187 | #address-cells = <3>; | 215 | #address-cells = <3>; |
188 | reg = <8000 1000>; | 216 | reg = <8000 1000>; |
189 | bus-range = <0 fe>; | 217 | bus-range = <0 ff>; |
190 | ranges = <02000000 0 80000000 80000000 0 20000000 | 218 | ranges = <02000000 0 80000000 80000000 0 20000000 |
191 | 01000000 0 00000000 e2000000 0 00100000>; | 219 | 01000000 0 00000000 e2000000 0 00100000>; |
192 | clock-frequency = <1fca055>; | 220 | clock-frequency = <1fca055>; |
@@ -285,17 +313,84 @@ | |||
285 | f800 0 0 3 &i8259 0 0 | 313 | f800 0 0 3 &i8259 0 0 |
286 | f800 0 0 4 &i8259 0 0 | 314 | f800 0 0 4 &i8259 0 0 |
287 | >; | 315 | >; |
288 | i8259: i8259@4d0 { | 316 | uli1575@0 { |
289 | clock-frequency = <0>; | 317 | reg = <0 0 0 0 0>; |
290 | interrupt-controller; | 318 | #size-cells = <2>; |
291 | device_type = "interrupt-controller"; | 319 | #address-cells = <3>; |
292 | #address-cells = <0>; | 320 | ranges = <02000000 0 80000000 |
293 | #interrupt-cells = <2>; | 321 | 02000000 0 80000000 |
294 | built-in; | 322 | 0 20000000 |
295 | compatible = "chrp,iic"; | 323 | 01000000 0 00000000 |
296 | big-endian; | 324 | 01000000 0 00000000 |
297 | interrupts = <49 2>; | 325 | 0 00100000>; |
298 | interrupt-parent = <&mpic>; | 326 | |
327 | pci_bridge@0 { | ||
328 | reg = <0 0 0 0 0>; | ||
329 | #size-cells = <2>; | ||
330 | #address-cells = <3>; | ||
331 | ranges = <02000000 0 80000000 | ||
332 | 02000000 0 80000000 | ||
333 | 0 20000000 | ||
334 | 01000000 0 00000000 | ||
335 | 01000000 0 00000000 | ||
336 | 0 00100000>; | ||
337 | |||
338 | isa@1e { | ||
339 | device_type = "isa"; | ||
340 | #interrupt-cells = <2>; | ||
341 | #size-cells = <1>; | ||
342 | #address-cells = <2>; | ||
343 | reg = <f000 0 0 0 0>; | ||
344 | ranges = <1 0 01000000 0 0 | ||
345 | 00001000>; | ||
346 | interrupt-parent = <&i8259>; | ||
347 | |||
348 | i8259: interrupt-controller@20 { | ||
349 | reg = <1 20 2 | ||
350 | 1 a0 2 | ||
351 | 1 4d0 2>; | ||
352 | clock-frequency = <0>; | ||
353 | interrupt-controller; | ||
354 | device_type = "interrupt-controller"; | ||
355 | #address-cells = <0>; | ||
356 | #interrupt-cells = <2>; | ||
357 | built-in; | ||
358 | compatible = "chrp,iic"; | ||
359 | interrupts = <9 2>; | ||
360 | interrupt-parent = | ||
361 | <&mpic>; | ||
362 | }; | ||
363 | |||
364 | i8042@60 { | ||
365 | #size-cells = <0>; | ||
366 | #address-cells = <1>; | ||
367 | reg = <1 60 1 1 64 1>; | ||
368 | interrupts = <1 3 c 3>; | ||
369 | interrupt-parent = | ||
370 | <&i8259>; | ||
371 | |||
372 | keyboard@0 { | ||
373 | reg = <0>; | ||
374 | compatible = "pnpPNP,303"; | ||
375 | }; | ||
376 | |||
377 | mouse@1 { | ||
378 | reg = <1>; | ||
379 | compatible = "pnpPNP,f03"; | ||
380 | }; | ||
381 | }; | ||
382 | |||
383 | rtc@70 { | ||
384 | compatible = | ||
385 | "pnpPNP,b00"; | ||
386 | reg = <1 70 2>; | ||
387 | }; | ||
388 | |||
389 | gpio@400 { | ||
390 | reg = <1 400 80>; | ||
391 | }; | ||
392 | }; | ||
393 | }; | ||
299 | }; | 394 | }; |
300 | 395 | ||
301 | }; | 396 | }; |
@@ -316,10 +411,10 @@ | |||
316 | interrupt-map-mask = <f800 0 0 7>; | 411 | interrupt-map-mask = <f800 0 0 7>; |
317 | interrupt-map = < | 412 | interrupt-map = < |
318 | /* IDSEL 0x0 */ | 413 | /* IDSEL 0x0 */ |
319 | 0000 0 0 1 &mpic 44 1 | 414 | 0000 0 0 1 &mpic 4 1 |
320 | 0000 0 0 2 &mpic 45 1 | 415 | 0000 0 0 2 &mpic 5 1 |
321 | 0000 0 0 3 &mpic 46 1 | 416 | 0000 0 0 3 &mpic 6 1 |
322 | 0000 0 0 4 &mpic 47 1 | 417 | 0000 0 0 4 &mpic 7 1 |
323 | >; | 418 | >; |
324 | }; | 419 | }; |
325 | 420 | ||
diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts index c0d06fd12927..e5e7726ddb03 100644 --- a/arch/powerpc/boot/dts/mpc866ads.dts +++ b/arch/powerpc/boot/dts/mpc866ads.dts | |||
@@ -15,12 +15,10 @@ | |||
15 | compatible = "mpc8xx"; | 15 | compatible = "mpc8xx"; |
16 | #address-cells = <1>; | 16 | #address-cells = <1>; |
17 | #size-cells = <1>; | 17 | #size-cells = <1>; |
18 | linux,phandle = <100>; | ||
19 | 18 | ||
20 | cpus { | 19 | cpus { |
21 | #address-cells = <1>; | 20 | #address-cells = <1>; |
22 | #size-cells = <0>; | 21 | #size-cells = <0>; |
23 | linux,phandle = <200>; | ||
24 | 22 | ||
25 | PowerPC,866@0 { | 23 | PowerPC,866@0 { |
26 | device_type = "cpu"; | 24 | device_type = "cpu"; |
@@ -34,14 +32,12 @@ | |||
34 | clock-frequency = <0>; | 32 | clock-frequency = <0>; |
35 | 32-bit; | 33 | 32-bit; |
36 | interrupts = <f 2>; // decrementer interrupt | 34 | interrupts = <f 2>; // decrementer interrupt |
37 | interrupt-parent = <ff000000>; | 35 | interrupt-parent = <&Mpc8xx_pic>; |
38 | linux,phandle = <201>; | ||
39 | }; | 36 | }; |
40 | }; | 37 | }; |
41 | 38 | ||
42 | memory { | 39 | memory { |
43 | device_type = "memory"; | 40 | device_type = "memory"; |
44 | linux,phandle = <300>; | ||
45 | reg = <00000000 800000>; | 41 | reg = <00000000 800000>; |
46 | }; | 42 | }; |
47 | 43 | ||
@@ -57,11 +53,9 @@ | |||
57 | device_type = "mdio"; | 53 | device_type = "mdio"; |
58 | compatible = "fs_enet"; | 54 | compatible = "fs_enet"; |
59 | reg = <e80 8>; | 55 | reg = <e80 8>; |
60 | linux,phandle = <e80>; | ||
61 | #address-cells = <1>; | 56 | #address-cells = <1>; |
62 | #size-cells = <0>; | 57 | #size-cells = <0>; |
63 | ethernet-phy@f { | 58 | phy: ethernet-phy@f { |
64 | linux,phandle = <e800f>; | ||
65 | reg = <f>; | 59 | reg = <f>; |
66 | device_type = "ethernet-phy"; | 60 | device_type = "ethernet-phy"; |
67 | }; | 61 | }; |
@@ -75,12 +69,11 @@ | |||
75 | reg = <e00 188>; | 69 | reg = <e00 188>; |
76 | mac-address = [ 00 00 0C 00 01 FD ]; | 70 | mac-address = [ 00 00 0C 00 01 FD ]; |
77 | interrupts = <3 1>; | 71 | interrupts = <3 1>; |
78 | interrupt-parent = <ff000000>; | 72 | interrupt-parent = <&Mpc8xx_pic>; |
79 | phy-handle = <e800f>; | 73 | phy-handle = <&Phy>; |
80 | }; | 74 | }; |
81 | 75 | ||
82 | pic@ff000000 { | 76 | mpc8xx_pic: pic@ff000000 { |
83 | linux,phandle = <ff000000>; | ||
84 | interrupt-controller; | 77 | interrupt-controller; |
85 | #address-cells = <0>; | 78 | #address-cells = <0>; |
86 | #interrupt-cells = <2>; | 79 | #interrupt-cells = <2>; |
@@ -91,7 +84,6 @@ | |||
91 | }; | 84 | }; |
92 | 85 | ||
93 | cpm@ff000000 { | 86 | cpm@ff000000 { |
94 | linux,phandle = <ff000000>; | ||
95 | #address-cells = <1>; | 87 | #address-cells = <1>; |
96 | #size-cells = <1>; | 88 | #size-cells = <1>; |
97 | #interrupt-cells = <2>; | 89 | #interrupt-cells = <2>; |
@@ -102,15 +94,14 @@ | |||
102 | command-proc = <9c0>; | 94 | command-proc = <9c0>; |
103 | brg-frequency = <0>; | 95 | brg-frequency = <0>; |
104 | interrupts = <0 2>; // cpm error interrupt | 96 | interrupts = <0 2>; // cpm error interrupt |
105 | interrupt-parent = <930>; | 97 | interrupt-parent = <&Cpm_pic>; |
106 | 98 | ||
107 | pic@930 { | 99 | cpm_pic: pic@930 { |
108 | linux,phandle = <930>; | ||
109 | interrupt-controller; | 100 | interrupt-controller; |
110 | #address-cells = <0>; | 101 | #address-cells = <0>; |
111 | #interrupt-cells = <2>; | 102 | #interrupt-cells = <2>; |
112 | interrupts = <5 2 0 2>; | 103 | interrupts = <5 2 0 2>; |
113 | interrupt-parent = <ff000000>; | 104 | interrupt-parent = <&Mpc8xx_pic>; |
114 | reg = <930 20>; | 105 | reg = <930 20>; |
115 | built-in; | 106 | built-in; |
116 | device_type = "cpm-pic"; | 107 | device_type = "cpm-pic"; |
@@ -128,7 +119,7 @@ | |||
128 | tx-clock = <1>; | 119 | tx-clock = <1>; |
129 | current-speed = <0>; | 120 | current-speed = <0>; |
130 | interrupts = <4 3>; | 121 | interrupts = <4 3>; |
131 | interrupt-parent = <930>; | 122 | interrupt-parent = <&Cpm_pic>; |
132 | }; | 123 | }; |
133 | 124 | ||
134 | smc@a90 { | 125 | smc@a90 { |
@@ -142,7 +133,7 @@ | |||
142 | tx-clock = <2>; | 133 | tx-clock = <2>; |
143 | current-speed = <0>; | 134 | current-speed = <0>; |
144 | interrupts = <3 3>; | 135 | interrupts = <3 3>; |
145 | interrupt-parent = <930>; | 136 | interrupt-parent = <&Cpm_pic>; |
146 | }; | 137 | }; |
147 | 138 | ||
148 | scc@a00 { | 139 | scc@a00 { |
@@ -153,7 +144,7 @@ | |||
153 | reg = <a00 18 3c00 80>; | 144 | reg = <a00 18 3c00 80>; |
154 | mac-address = [ 00 00 0C 00 03 FD ]; | 145 | mac-address = [ 00 00 0C 00 03 FD ]; |
155 | interrupts = <1e 3>; | 146 | interrupts = <1e 3>; |
156 | interrupt-parent = <930>; | 147 | interrupt-parent = <&Cpm_pic>; |
157 | }; | 148 | }; |
158 | }; | 149 | }; |
159 | }; | 150 | }; |
diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts index 110bf6170603..dc7ab9c80611 100644 --- a/arch/powerpc/boot/dts/mpc885ads.dts +++ b/arch/powerpc/boot/dts/mpc885ads.dts | |||
@@ -15,12 +15,10 @@ | |||
15 | compatible = "mpc8xx"; | 15 | compatible = "mpc8xx"; |
16 | #address-cells = <1>; | 16 | #address-cells = <1>; |
17 | #size-cells = <1>; | 17 | #size-cells = <1>; |
18 | linux,phandle = <100>; | ||
19 | 18 | ||
20 | cpus { | 19 | cpus { |
21 | #address-cells = <1>; | 20 | #address-cells = <1>; |
22 | #size-cells = <0>; | 21 | #size-cells = <0>; |
23 | linux,phandle = <200>; | ||
24 | 22 | ||
25 | PowerPC,885@0 { | 23 | PowerPC,885@0 { |
26 | device_type = "cpu"; | 24 | device_type = "cpu"; |
@@ -34,14 +32,12 @@ | |||
34 | clock-frequency = <0>; | 32 | clock-frequency = <0>; |
35 | 32-bit; | 33 | 32-bit; |
36 | interrupts = <f 2>; // decrementer interrupt | 34 | interrupts = <f 2>; // decrementer interrupt |
37 | interrupt-parent = <ff000000>; | 35 | interrupt-parent = <&Mpc8xx_pic>; |
38 | linux,phandle = <201>; | ||
39 | }; | 36 | }; |
40 | }; | 37 | }; |
41 | 38 | ||
42 | memory { | 39 | memory { |
43 | device_type = "memory"; | 40 | device_type = "memory"; |
44 | linux,phandle = <300>; | ||
45 | reg = <00000000 800000>; | 41 | reg = <00000000 800000>; |
46 | }; | 42 | }; |
47 | 43 | ||
@@ -57,21 +53,17 @@ | |||
57 | device_type = "mdio"; | 53 | device_type = "mdio"; |
58 | compatible = "fs_enet"; | 54 | compatible = "fs_enet"; |
59 | reg = <e80 8>; | 55 | reg = <e80 8>; |
60 | linux,phandle = <e80>; | ||
61 | #address-cells = <1>; | 56 | #address-cells = <1>; |
62 | #size-cells = <0>; | 57 | #size-cells = <0>; |
63 | ethernet-phy@0 { | 58 | Phy0: ethernet-phy@0 { |
64 | linux,phandle = <e8000>; | ||
65 | reg = <0>; | 59 | reg = <0>; |
66 | device_type = "ethernet-phy"; | 60 | device_type = "ethernet-phy"; |
67 | }; | 61 | }; |
68 | ethernet-phy@1 { | 62 | Phy1: ethernet-phy@1 { |
69 | linux,phandle = <e8001>; | ||
70 | reg = <1>; | 63 | reg = <1>; |
71 | device_type = "ethernet-phy"; | 64 | device_type = "ethernet-phy"; |
72 | }; | 65 | }; |
73 | ethernet-phy@2 { | 66 | Phy2: ethernet-phy@2 { |
74 | linux,phandle = <e8002>; | ||
75 | reg = <2>; | 67 | reg = <2>; |
76 | device_type = "ethernet-phy"; | 68 | device_type = "ethernet-phy"; |
77 | }; | 69 | }; |
@@ -85,8 +77,8 @@ | |||
85 | reg = <e00 188>; | 77 | reg = <e00 188>; |
86 | mac-address = [ 00 00 0C 00 01 FD ]; | 78 | mac-address = [ 00 00 0C 00 01 FD ]; |
87 | interrupts = <3 1>; | 79 | interrupts = <3 1>; |
88 | interrupt-parent = <ff000000>; | 80 | interrupt-parent = <&Mpc8xx_pic>; |
89 | phy-handle = <e8000>; | 81 | phy-handle = <&Phy1>; |
90 | }; | 82 | }; |
91 | 83 | ||
92 | fec@1e00 { | 84 | fec@1e00 { |
@@ -97,12 +89,11 @@ | |||
97 | reg = <1e00 188>; | 89 | reg = <1e00 188>; |
98 | mac-address = [ 00 00 0C 00 02 FD ]; | 90 | mac-address = [ 00 00 0C 00 02 FD ]; |
99 | interrupts = <7 1>; | 91 | interrupts = <7 1>; |
100 | interrupt-parent = <ff000000>; | 92 | interrupt-parent = <&Mpc8xx_pic>; |
101 | phy-handle = <e8001>; | 93 | phy-handle = <&Phy2>; |
102 | }; | 94 | }; |
103 | 95 | ||
104 | pic@ff000000 { | 96 | Mpc8xx_pic: pic@ff000000 { |
105 | linux,phandle = <ff000000>; | ||
106 | interrupt-controller; | 97 | interrupt-controller; |
107 | #address-cells = <0>; | 98 | #address-cells = <0>; |
108 | #interrupt-cells = <2>; | 99 | #interrupt-cells = <2>; |
@@ -112,8 +103,18 @@ | |||
112 | compatible = "CPM"; | 103 | compatible = "CPM"; |
113 | }; | 104 | }; |
114 | 105 | ||
106 | pcmcia@0080 { | ||
107 | #address-cells = <3>; | ||
108 | #interrupt-cells = <1>; | ||
109 | #size-cells = <2>; | ||
110 | compatible = "fsl,pq-pcmcia"; | ||
111 | device_type = "pcmcia"; | ||
112 | reg = <80 80>; | ||
113 | interrupt-parent = <&Mpc8xx_pic>; | ||
114 | interrupts = <d 1>; | ||
115 | }; | ||
116 | |||
115 | cpm@ff000000 { | 117 | cpm@ff000000 { |
116 | linux,phandle = <ff000000>; | ||
117 | #address-cells = <1>; | 118 | #address-cells = <1>; |
118 | #size-cells = <1>; | 119 | #size-cells = <1>; |
119 | #interrupt-cells = <2>; | 120 | #interrupt-cells = <2>; |
@@ -124,15 +125,14 @@ | |||
124 | command-proc = <9c0>; | 125 | command-proc = <9c0>; |
125 | brg-frequency = <0>; | 126 | brg-frequency = <0>; |
126 | interrupts = <0 2>; // cpm error interrupt | 127 | interrupts = <0 2>; // cpm error interrupt |
127 | interrupt-parent = <930>; | 128 | interrupt-parent = <&Cpm_pic>; |
128 | 129 | ||
129 | pic@930 { | 130 | Cpm_pic: pic@930 { |
130 | linux,phandle = <930>; | ||
131 | interrupt-controller; | 131 | interrupt-controller; |
132 | #address-cells = <0>; | 132 | #address-cells = <0>; |
133 | #interrupt-cells = <2>; | 133 | #interrupt-cells = <2>; |
134 | interrupts = <5 2 0 2>; | 134 | interrupts = <5 2 0 2>; |
135 | interrupt-parent = <ff000000>; | 135 | interrupt-parent = <&Mpc8xx_pic>; |
136 | reg = <930 20>; | 136 | reg = <930 20>; |
137 | built-in; | 137 | built-in; |
138 | device_type = "cpm-pic"; | 138 | device_type = "cpm-pic"; |
@@ -150,7 +150,7 @@ | |||
150 | tx-clock = <1>; | 150 | tx-clock = <1>; |
151 | current-speed = <0>; | 151 | current-speed = <0>; |
152 | interrupts = <4 3>; | 152 | interrupts = <4 3>; |
153 | interrupt-parent = <930>; | 153 | interrupt-parent = <&Cpm_pic>; |
154 | }; | 154 | }; |
155 | 155 | ||
156 | smc@a90 { | 156 | smc@a90 { |
@@ -164,7 +164,7 @@ | |||
164 | tx-clock = <2>; | 164 | tx-clock = <2>; |
165 | current-speed = <0>; | 165 | current-speed = <0>; |
166 | interrupts = <3 3>; | 166 | interrupts = <3 3>; |
167 | interrupt-parent = <930>; | 167 | interrupt-parent = <&Cpm_pic>; |
168 | }; | 168 | }; |
169 | 169 | ||
170 | scc@a40 { | 170 | scc@a40 { |
@@ -175,8 +175,8 @@ | |||
175 | reg = <a40 18 3e00 80>; | 175 | reg = <a40 18 3e00 80>; |
176 | mac-address = [ 00 00 0C 00 03 FD ]; | 176 | mac-address = [ 00 00 0C 00 03 FD ]; |
177 | interrupts = <1c 3>; | 177 | interrupts = <1c 3>; |
178 | interrupt-parent = <930>; | 178 | interrupt-parent = <&Cpm_pic>; |
179 | phy-handle = <e8002>; | 179 | phy-handle = <&Phy2>; |
180 | }; | 180 | }; |
181 | }; | 181 | }; |
182 | }; | 182 | }; |
diff --git a/arch/powerpc/boot/dts/prpmc2800.dts b/arch/powerpc/boot/dts/prpmc2800.dts index 568965a022b9..699d0df574d5 100644 --- a/arch/powerpc/boot/dts/prpmc2800.dts +++ b/arch/powerpc/boot/dts/prpmc2800.dts | |||
@@ -309,7 +309,7 @@ | |||
309 | }; | 309 | }; |
310 | 310 | ||
311 | chosen { | 311 | chosen { |
312 | bootargs = "ip=on console=ttyMM0"; | 312 | bootargs = "ip=on"; |
313 | linux,stdout-path = "/mv64x60@f1000000/mpsc@8000"; | 313 | linux,stdout-path = "/mv64x60@f1000000/mpsc@8000"; |
314 | }; | 314 | }; |
315 | }; | 315 | }; |
diff --git a/arch/powerpc/boot/dts/ps3.dts b/arch/powerpc/boot/dts/ps3.dts new file mode 100644 index 000000000000..379ded282d5e --- /dev/null +++ b/arch/powerpc/boot/dts/ps3.dts | |||
@@ -0,0 +1,68 @@ | |||
1 | /* | ||
2 | * PS3 Game Console device tree. | ||
3 | * | ||
4 | * Copyright (C) 2007 Sony Computer Entertainment Inc. | ||
5 | * Copyright 2007 Sony Corp. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; version 2 of the License. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | / { | ||
22 | model = "SonyPS3"; | ||
23 | compatible = "sony,ps3"; | ||
24 | #size-cells = <2>; | ||
25 | #address-cells = <2>; | ||
26 | |||
27 | chosen { | ||
28 | }; | ||
29 | |||
30 | /* | ||
31 | * We'll get the size of the bootmem block from lv1 after startup, | ||
32 | * so we'll put a null entry here. | ||
33 | */ | ||
34 | |||
35 | memory { | ||
36 | device_type = "memory"; | ||
37 | reg = <0 0 0 0>; | ||
38 | }; | ||
39 | |||
40 | /* | ||
41 | * The boot cpu is always zero for PS3. | ||
42 | * | ||
43 | * dtc expects a clock-frequency and timebase-frequency entries, so | ||
44 | * we'll put a null entries here. These will be initialized after | ||
45 | * startup with data from lv1. | ||
46 | * | ||
47 | * Seems the only way currently to indicate a processor has multiple | ||
48 | * threads is with an ibm,ppc-interrupt-server#s entry. We'll put one | ||
49 | * here so we can bring up both of ours. See smp_setup_cpu_maps(). | ||
50 | */ | ||
51 | |||
52 | cpus { | ||
53 | #size-cells = <0>; | ||
54 | #address-cells = <1>; | ||
55 | |||
56 | cpu@0 { | ||
57 | device_type = "cpu"; | ||
58 | reg = <0>; | ||
59 | ibm,ppc-interrupt-server#s = <0 1>; | ||
60 | clock-frequency = <0>; | ||
61 | timebase-frequency = <0>; | ||
62 | i-cache-size = <8000>; | ||
63 | d-cache-size = <8000>; | ||
64 | i-cache-line-size = <80>; | ||
65 | d-cache-line-size = <80>; | ||
66 | }; | ||
67 | }; | ||
68 | }; | ||
diff --git a/arch/powerpc/boot/ebony.c b/arch/powerpc/boot/ebony.c index b1251ee7a102..75daedafd0a4 100644 --- a/arch/powerpc/boot/ebony.c +++ b/arch/powerpc/boot/ebony.c | |||
@@ -100,28 +100,13 @@ static void ebony_fixups(void) | |||
100 | ibm440gp_fixup_clocks(sysclk, 6 * 1843200); | 100 | ibm440gp_fixup_clocks(sysclk, 6 * 1843200); |
101 | ibm44x_fixup_memsize(); | 101 | ibm44x_fixup_memsize(); |
102 | dt_fixup_mac_addresses(ebony_mac0, ebony_mac1); | 102 | dt_fixup_mac_addresses(ebony_mac0, ebony_mac1); |
103 | } | 103 | ibm4xx_fixup_ebc_ranges("/plb/opb/ebc"); |
104 | |||
105 | #define SPRN_DBCR0 0x134 | ||
106 | #define DBCR0_RST_SYSTEM 0x30000000 | ||
107 | |||
108 | static void ebony_exit(void) | ||
109 | { | ||
110 | unsigned long tmp; | ||
111 | |||
112 | asm volatile ( | ||
113 | "mfspr %0,%1\n" | ||
114 | "oris %0,%0,%2@h\n" | ||
115 | "mtspr %1,%0" | ||
116 | : "=&r"(tmp) : "i"(SPRN_DBCR0), "i"(DBCR0_RST_SYSTEM) | ||
117 | ); | ||
118 | |||
119 | } | 104 | } |
120 | 105 | ||
121 | void ebony_init(void *mac0, void *mac1) | 106 | void ebony_init(void *mac0, void *mac1) |
122 | { | 107 | { |
123 | platform_ops.fixups = ebony_fixups; | 108 | platform_ops.fixups = ebony_fixups; |
124 | platform_ops.exit = ebony_exit; | 109 | platform_ops.exit = ibm44x_dbcr_reset; |
125 | ebony_mac0 = mac0; | 110 | ebony_mac0 = mac0; |
126 | ebony_mac1 = mac1; | 111 | ebony_mac1 = mac1; |
127 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); | 112 | ft_init(_dtb_start, _dtb_end - _dtb_start, 32); |
diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c index 56b56a8d4b23..416dc3857bfe 100644 --- a/arch/powerpc/boot/main.c +++ b/arch/powerpc/boot/main.c | |||
@@ -36,8 +36,6 @@ struct addr_range { | |||
36 | unsigned long size; | 36 | unsigned long size; |
37 | }; | 37 | }; |
38 | 38 | ||
39 | typedef void (*kernel_entry_t)(unsigned long, unsigned long, void *); | ||
40 | |||
41 | #undef DEBUG | 39 | #undef DEBUG |
42 | 40 | ||
43 | static struct addr_range prep_kernel(void) | 41 | static struct addr_range prep_kernel(void) |
diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c index d16ee3e3f868..385e08b83b7e 100644 --- a/arch/powerpc/boot/of.c +++ b/arch/powerpc/boot/of.c | |||
@@ -15,8 +15,7 @@ | |||
15 | #include "page.h" | 15 | #include "page.h" |
16 | #include "ops.h" | 16 | #include "ops.h" |
17 | 17 | ||
18 | typedef void *ihandle; | 18 | #include "of.h" |
19 | typedef void *phandle; | ||
20 | 19 | ||
21 | extern char _end[]; | 20 | extern char _end[]; |
22 | 21 | ||
@@ -25,154 +24,10 @@ extern char _end[]; | |||
25 | #define RAM_END (512<<20) /* Fixme: use OF */ | 24 | #define RAM_END (512<<20) /* Fixme: use OF */ |
26 | #define ONE_MB 0x100000 | 25 | #define ONE_MB 0x100000 |
27 | 26 | ||
28 | int (*prom) (void *); | ||
29 | 27 | ||
30 | 28 | ||
31 | static unsigned long claim_base; | 29 | static unsigned long claim_base; |
32 | 30 | ||
33 | static int call_prom(const char *service, int nargs, int nret, ...) | ||
34 | { | ||
35 | int i; | ||
36 | struct prom_args { | ||
37 | const char *service; | ||
38 | int nargs; | ||
39 | int nret; | ||
40 | unsigned int args[12]; | ||
41 | } args; | ||
42 | va_list list; | ||
43 | |||
44 | args.service = service; | ||
45 | args.nargs = nargs; | ||
46 | args.nret = nret; | ||
47 | |||
48 | va_start(list, nret); | ||
49 | for (i = 0; i < nargs; i++) | ||
50 | args.args[i] = va_arg(list, unsigned int); | ||
51 | va_end(list); | ||
52 | |||
53 | for (i = 0; i < nret; i++) | ||
54 | args.args[nargs+i] = 0; | ||
55 | |||
56 | if (prom(&args) < 0) | ||
57 | return -1; | ||
58 | |||
59 | return (nret > 0)? args.args[nargs]: 0; | ||
60 | } | ||
61 | |||
62 | static int call_prom_ret(const char *service, int nargs, int nret, | ||
63 | unsigned int *rets, ...) | ||
64 | { | ||
65 | int i; | ||
66 | struct prom_args { | ||
67 | const char *service; | ||
68 | int nargs; | ||
69 | int nret; | ||
70 | unsigned int args[12]; | ||
71 | } args; | ||
72 | va_list list; | ||
73 | |||
74 | args.service = service; | ||
75 | args.nargs = nargs; | ||
76 | args.nret = nret; | ||
77 | |||
78 | va_start(list, rets); | ||
79 | for (i = 0; i < nargs; i++) | ||
80 | args.args[i] = va_arg(list, unsigned int); | ||
81 | va_end(list); | ||
82 | |||
83 | for (i = 0; i < nret; i++) | ||
84 | args.args[nargs+i] = 0; | ||
85 | |||
86 | if (prom(&args) < 0) | ||
87 | return -1; | ||
88 | |||
89 | if (rets != (void *) 0) | ||
90 | for (i = 1; i < nret; ++i) | ||
91 | rets[i-1] = args.args[nargs+i]; | ||
92 | |||
93 | return (nret > 0)? args.args[nargs]: 0; | ||
94 | } | ||
95 | |||
96 | /* | ||
97 | * Older OF's require that when claiming a specific range of addresses, | ||
98 | * we claim the physical space in the /memory node and the virtual | ||
99 | * space in the chosen mmu node, and then do a map operation to | ||
100 | * map virtual to physical. | ||
101 | */ | ||
102 | static int need_map = -1; | ||
103 | static ihandle chosen_mmu; | ||
104 | static phandle memory; | ||
105 | |||
106 | /* returns true if s2 is a prefix of s1 */ | ||
107 | static int string_match(const char *s1, const char *s2) | ||
108 | { | ||
109 | for (; *s2; ++s2) | ||
110 | if (*s1++ != *s2) | ||
111 | return 0; | ||
112 | return 1; | ||
113 | } | ||
114 | |||
115 | static int check_of_version(void) | ||
116 | { | ||
117 | phandle oprom, chosen; | ||
118 | char version[64]; | ||
119 | |||
120 | oprom = finddevice("/openprom"); | ||
121 | if (oprom == (phandle) -1) | ||
122 | return 0; | ||
123 | if (getprop(oprom, "model", version, sizeof(version)) <= 0) | ||
124 | return 0; | ||
125 | version[sizeof(version)-1] = 0; | ||
126 | printf("OF version = '%s'\r\n", version); | ||
127 | if (!string_match(version, "Open Firmware, 1.") | ||
128 | && !string_match(version, "FirmWorks,3.")) | ||
129 | return 0; | ||
130 | chosen = finddevice("/chosen"); | ||
131 | if (chosen == (phandle) -1) { | ||
132 | chosen = finddevice("/chosen@0"); | ||
133 | if (chosen == (phandle) -1) { | ||
134 | printf("no chosen\n"); | ||
135 | return 0; | ||
136 | } | ||
137 | } | ||
138 | if (getprop(chosen, "mmu", &chosen_mmu, sizeof(chosen_mmu)) <= 0) { | ||
139 | printf("no mmu\n"); | ||
140 | return 0; | ||
141 | } | ||
142 | memory = (ihandle) call_prom("open", 1, 1, "/memory"); | ||
143 | if (memory == (ihandle) -1) { | ||
144 | memory = (ihandle) call_prom("open", 1, 1, "/memory@0"); | ||
145 | if (memory == (ihandle) -1) { | ||
146 | printf("no memory node\n"); | ||
147 | return 0; | ||
148 | } | ||
149 | } | ||
150 | printf("old OF detected\r\n"); | ||
151 | return 1; | ||
152 | } | ||
153 | |||
154 | static void *claim(unsigned long virt, unsigned long size, unsigned long align) | ||
155 | { | ||
156 | int ret; | ||
157 | unsigned int result; | ||
158 | |||
159 | if (need_map < 0) | ||
160 | need_map = check_of_version(); | ||
161 | if (align || !need_map) | ||
162 | return (void *) call_prom("claim", 3, 1, virt, size, align); | ||
163 | |||
164 | ret = call_prom_ret("call-method", 5, 2, &result, "claim", memory, | ||
165 | align, size, virt); | ||
166 | if (ret != 0 || result == -1) | ||
167 | return (void *) -1; | ||
168 | ret = call_prom_ret("call-method", 5, 2, &result, "claim", chosen_mmu, | ||
169 | align, size, virt); | ||
170 | /* 0x12 == coherent + read/write */ | ||
171 | ret = call_prom("call-method", 6, 1, "map", chosen_mmu, | ||
172 | 0x12, size, virt, virt); | ||
173 | return (void *) virt; | ||
174 | } | ||
175 | |||
176 | static void *of_try_claim(unsigned long size) | 31 | static void *of_try_claim(unsigned long size) |
177 | { | 32 | { |
178 | unsigned long addr = 0; | 33 | unsigned long addr = 0; |
@@ -184,7 +39,7 @@ static void *of_try_claim(unsigned long size) | |||
184 | #ifdef DEBUG | 39 | #ifdef DEBUG |
185 | printf(" trying: 0x%08lx\n\r", claim_base); | 40 | printf(" trying: 0x%08lx\n\r", claim_base); |
186 | #endif | 41 | #endif |
187 | addr = (unsigned long)claim(claim_base, size, 0); | 42 | addr = (unsigned long)of_claim(claim_base, size, 0); |
188 | if ((void *)addr != (void *)-1) | 43 | if ((void *)addr != (void *)-1) |
189 | break; | 44 | break; |
190 | } | 45 | } |
@@ -208,64 +63,6 @@ static void of_image_hdr(const void *hdr) | |||
208 | } | 63 | } |
209 | } | 64 | } |
210 | 65 | ||
211 | static void *of_vmlinux_alloc(unsigned long size) | ||
212 | { | ||
213 | void *p = malloc(size); | ||
214 | |||
215 | if (!p) | ||
216 | fatal("Can't allocate memory for kernel image!\n\r"); | ||
217 | |||
218 | return p; | ||
219 | } | ||
220 | |||
221 | static void of_exit(void) | ||
222 | { | ||
223 | call_prom("exit", 0, 0); | ||
224 | } | ||
225 | |||
226 | /* | ||
227 | * OF device tree routines | ||
228 | */ | ||
229 | static void *of_finddevice(const char *name) | ||
230 | { | ||
231 | return (phandle) call_prom("finddevice", 1, 1, name); | ||
232 | } | ||
233 | |||
234 | static int of_getprop(const void *phandle, const char *name, void *buf, | ||
235 | const int buflen) | ||
236 | { | ||
237 | return call_prom("getprop", 4, 1, phandle, name, buf, buflen); | ||
238 | } | ||
239 | |||
240 | static int of_setprop(const void *phandle, const char *name, const void *buf, | ||
241 | const int buflen) | ||
242 | { | ||
243 | return call_prom("setprop", 4, 1, phandle, name, buf, buflen); | ||
244 | } | ||
245 | |||
246 | /* | ||
247 | * OF console routines | ||
248 | */ | ||
249 | static void *of_stdout_handle; | ||
250 | |||
251 | static int of_console_open(void) | ||
252 | { | ||
253 | void *devp; | ||
254 | |||
255 | if (((devp = finddevice("/chosen")) != NULL) | ||
256 | && (getprop(devp, "stdout", &of_stdout_handle, | ||
257 | sizeof(of_stdout_handle)) | ||
258 | == sizeof(of_stdout_handle))) | ||
259 | return 0; | ||
260 | |||
261 | return -1; | ||
262 | } | ||
263 | |||
264 | static void of_console_write(char *buf, int len) | ||
265 | { | ||
266 | call_prom("write", 3, 1, of_stdout_handle, buf, len); | ||
267 | } | ||
268 | |||
269 | void platform_init(unsigned long a1, unsigned long a2, void *promptr) | 66 | void platform_init(unsigned long a1, unsigned long a2, void *promptr) |
270 | { | 67 | { |
271 | platform_ops.image_hdr = of_image_hdr; | 68 | platform_ops.image_hdr = of_image_hdr; |
@@ -277,10 +74,9 @@ void platform_init(unsigned long a1, unsigned long a2, void *promptr) | |||
277 | dt_ops.getprop = of_getprop; | 74 | dt_ops.getprop = of_getprop; |
278 | dt_ops.setprop = of_setprop; | 75 | dt_ops.setprop = of_setprop; |
279 | 76 | ||
280 | console_ops.open = of_console_open; | 77 | of_console_init(); |
281 | console_ops.write = of_console_write; | ||
282 | 78 | ||
283 | prom = (int (*)(void *))promptr; | 79 | of_init(promptr); |
284 | loader_info.promptr = promptr; | 80 | loader_info.promptr = promptr; |
285 | if (a1 && a2 && a2 != 0xdeadbeef) { | 81 | if (a1 && a2 && a2 != 0xdeadbeef) { |
286 | loader_info.initrd_addr = a1; | 82 | loader_info.initrd_addr = a1; |
diff --git a/arch/powerpc/boot/of.h b/arch/powerpc/boot/of.h new file mode 100644 index 000000000000..e4c68f7391c5 --- /dev/null +++ b/arch/powerpc/boot/of.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifndef _PPC_BOOT_OF_H_ | ||
2 | #define _PPC_BOOT_OF_H_ | ||
3 | |||
4 | typedef void *phandle; | ||
5 | typedef void *ihandle; | ||
6 | |||
7 | void of_init(void *promptr); | ||
8 | int of_call_prom(const char *service, int nargs, int nret, ...); | ||
9 | void *of_claim(unsigned long virt, unsigned long size, unsigned long align); | ||
10 | void *of_vmlinux_alloc(unsigned long size); | ||
11 | void of_exit(void); | ||
12 | void *of_finddevice(const char *name); | ||
13 | int of_getprop(const void *phandle, const char *name, void *buf, | ||
14 | const int buflen); | ||
15 | int of_setprop(const void *phandle, const char *name, const void *buf, | ||
16 | const int buflen); | ||
17 | |||
18 | /* Console functions */ | ||
19 | void of_console_init(void); | ||
20 | |||
21 | #endif /* _PPC_BOOT_OF_H_ */ | ||
diff --git a/arch/powerpc/boot/ofconsole.c b/arch/powerpc/boot/ofconsole.c new file mode 100644 index 000000000000..ce0e02424453 --- /dev/null +++ b/arch/powerpc/boot/ofconsole.c | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * OF console routines | ||
3 | * | ||
4 | * Copyright (C) Paul Mackerras 1997. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public License | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the License, or (at your option) any later version. | ||
10 | */ | ||
11 | #include <stddef.h> | ||
12 | #include "types.h" | ||
13 | #include "elf.h" | ||
14 | #include "string.h" | ||
15 | #include "stdio.h" | ||
16 | #include "page.h" | ||
17 | #include "ops.h" | ||
18 | |||
19 | #include "of.h" | ||
20 | |||
21 | static void *of_stdout_handle; | ||
22 | |||
23 | static int of_console_open(void) | ||
24 | { | ||
25 | void *devp; | ||
26 | |||
27 | if (((devp = of_finddevice("/chosen")) != NULL) | ||
28 | && (of_getprop(devp, "stdout", &of_stdout_handle, | ||
29 | sizeof(of_stdout_handle)) | ||
30 | == sizeof(of_stdout_handle))) | ||
31 | return 0; | ||
32 | |||
33 | return -1; | ||
34 | } | ||
35 | |||
36 | static void of_console_write(const char *buf, int len) | ||
37 | { | ||
38 | of_call_prom("write", 3, 1, of_stdout_handle, buf, len); | ||
39 | } | ||
40 | |||
41 | void of_console_init(void) | ||
42 | { | ||
43 | console_ops.open = of_console_open; | ||
44 | console_ops.write = of_console_write; | ||
45 | } | ||
diff --git a/arch/powerpc/boot/oflib.c b/arch/powerpc/boot/oflib.c new file mode 100644 index 000000000000..95b8fd69a403 --- /dev/null +++ b/arch/powerpc/boot/oflib.c | |||
@@ -0,0 +1,202 @@ | |||
1 | /* | ||
2 | * Copyright (C) Paul Mackerras 1997. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation; either version | ||
7 | * 2 of the License, or (at your option) any later version. | ||
8 | */ | ||
9 | #include <stddef.h> | ||
10 | #include "types.h" | ||
11 | #include "elf.h" | ||
12 | #include "string.h" | ||
13 | #include "stdio.h" | ||
14 | #include "page.h" | ||
15 | #include "ops.h" | ||
16 | |||
17 | #include "of.h" | ||
18 | |||
19 | static int (*prom) (void *); | ||
20 | |||
21 | void of_init(void *promptr) | ||
22 | { | ||
23 | prom = (int (*)(void *))promptr; | ||
24 | } | ||
25 | |||
26 | int of_call_prom(const char *service, int nargs, int nret, ...) | ||
27 | { | ||
28 | int i; | ||
29 | struct prom_args { | ||
30 | const char *service; | ||
31 | int nargs; | ||
32 | int nret; | ||
33 | unsigned int args[12]; | ||
34 | } args; | ||
35 | va_list list; | ||
36 | |||
37 | args.service = service; | ||
38 | args.nargs = nargs; | ||
39 | args.nret = nret; | ||
40 | |||
41 | va_start(list, nret); | ||
42 | for (i = 0; i < nargs; i++) | ||
43 | args.args[i] = va_arg(list, unsigned int); | ||
44 | va_end(list); | ||
45 | |||
46 | for (i = 0; i < nret; i++) | ||
47 | args.args[nargs+i] = 0; | ||
48 | |||
49 | if (prom(&args) < 0) | ||
50 | return -1; | ||
51 | |||
52 | return (nret > 0)? args.args[nargs]: 0; | ||
53 | } | ||
54 | |||
55 | static int of_call_prom_ret(const char *service, int nargs, int nret, | ||
56 | unsigned int *rets, ...) | ||
57 | { | ||
58 | int i; | ||
59 | struct prom_args { | ||
60 | const char *service; | ||
61 | int nargs; | ||
62 | int nret; | ||
63 | unsigned int args[12]; | ||
64 | } args; | ||
65 | va_list list; | ||
66 | |||
67 | args.service = service; | ||
68 | args.nargs = nargs; | ||
69 | args.nret = nret; | ||
70 | |||
71 | va_start(list, rets); | ||
72 | for (i = 0; i < nargs; i++) | ||
73 | args.args[i] = va_arg(list, unsigned int); | ||
74 | va_end(list); | ||
75 | |||
76 | for (i = 0; i < nret; i++) | ||
77 | args.args[nargs+i] = 0; | ||
78 | |||
79 | if (prom(&args) < 0) | ||
80 | return -1; | ||
81 | |||
82 | if (rets != (void *) 0) | ||
83 | for (i = 1; i < nret; ++i) | ||
84 | rets[i-1] = args.args[nargs+i]; | ||
85 | |||
86 | return (nret > 0)? args.args[nargs]: 0; | ||
87 | } | ||
88 | |||
89 | /* returns true if s2 is a prefix of s1 */ | ||
90 | static int string_match(const char *s1, const char *s2) | ||
91 | { | ||
92 | for (; *s2; ++s2) | ||
93 | if (*s1++ != *s2) | ||
94 | return 0; | ||
95 | return 1; | ||
96 | } | ||
97 | |||
98 | /* | ||
99 | * Older OF's require that when claiming a specific range of addresses, | ||
100 | * we claim the physical space in the /memory node and the virtual | ||
101 | * space in the chosen mmu node, and then do a map operation to | ||
102 | * map virtual to physical. | ||
103 | */ | ||
104 | static int need_map = -1; | ||
105 | static ihandle chosen_mmu; | ||
106 | static phandle memory; | ||
107 | |||
108 | static int check_of_version(void) | ||
109 | { | ||
110 | phandle oprom, chosen; | ||
111 | char version[64]; | ||
112 | |||
113 | oprom = of_finddevice("/openprom"); | ||
114 | if (oprom == (phandle) -1) | ||
115 | return 0; | ||
116 | if (of_getprop(oprom, "model", version, sizeof(version)) <= 0) | ||
117 | return 0; | ||
118 | version[sizeof(version)-1] = 0; | ||
119 | printf("OF version = '%s'\r\n", version); | ||
120 | if (!string_match(version, "Open Firmware, 1.") | ||
121 | && !string_match(version, "FirmWorks,3.")) | ||
122 | return 0; | ||
123 | chosen = of_finddevice("/chosen"); | ||
124 | if (chosen == (phandle) -1) { | ||
125 | chosen = of_finddevice("/chosen@0"); | ||
126 | if (chosen == (phandle) -1) { | ||
127 | printf("no chosen\n"); | ||
128 | return 0; | ||
129 | } | ||
130 | } | ||
131 | if (of_getprop(chosen, "mmu", &chosen_mmu, sizeof(chosen_mmu)) <= 0) { | ||
132 | printf("no mmu\n"); | ||
133 | return 0; | ||
134 | } | ||
135 | memory = (ihandle) of_call_prom("open", 1, 1, "/memory"); | ||
136 | if (memory == (ihandle) -1) { | ||
137 | memory = (ihandle) of_call_prom("open", 1, 1, "/memory@0"); | ||
138 | if (memory == (ihandle) -1) { | ||
139 | printf("no memory node\n"); | ||
140 | return 0; | ||
141 | } | ||
142 | } | ||
143 | printf("old OF detected\r\n"); | ||
144 | return 1; | ||
145 | } | ||
146 | |||
147 | void *of_claim(unsigned long virt, unsigned long size, unsigned long align) | ||
148 | { | ||
149 | int ret; | ||
150 | unsigned int result; | ||
151 | |||
152 | if (need_map < 0) | ||
153 | need_map = check_of_version(); | ||
154 | if (align || !need_map) | ||
155 | return (void *) of_call_prom("claim", 3, 1, virt, size, align); | ||
156 | |||
157 | ret = of_call_prom_ret("call-method", 5, 2, &result, "claim", memory, | ||
158 | align, size, virt); | ||
159 | if (ret != 0 || result == -1) | ||
160 | return (void *) -1; | ||
161 | ret = of_call_prom_ret("call-method", 5, 2, &result, "claim", chosen_mmu, | ||
162 | align, size, virt); | ||
163 | /* 0x12 == coherent + read/write */ | ||
164 | ret = of_call_prom("call-method", 6, 1, "map", chosen_mmu, | ||
165 | 0x12, size, virt, virt); | ||
166 | return (void *) virt; | ||
167 | } | ||
168 | |||
169 | void *of_vmlinux_alloc(unsigned long size) | ||
170 | { | ||
171 | void *p = malloc(size); | ||
172 | |||
173 | if (!p) | ||
174 | fatal("Can't allocate memory for kernel image!\n\r"); | ||
175 | |||
176 | return p; | ||
177 | } | ||
178 | |||
179 | void of_exit(void) | ||
180 | { | ||
181 | of_call_prom("exit", 0, 0); | ||
182 | } | ||
183 | |||
184 | /* | ||
185 | * OF device tree routines | ||
186 | */ | ||
187 | void *of_finddevice(const char *name) | ||
188 | { | ||
189 | return (phandle) of_call_prom("finddevice", 1, 1, name); | ||
190 | } | ||
191 | |||
192 | int of_getprop(const void *phandle, const char *name, void *buf, | ||
193 | const int buflen) | ||
194 | { | ||
195 | return of_call_prom("getprop", 4, 1, phandle, name, buf, buflen); | ||
196 | } | ||
197 | |||
198 | int of_setprop(const void *phandle, const char *name, const void *buf, | ||
199 | const int buflen) | ||
200 | { | ||
201 | return of_call_prom("setprop", 4, 1, phandle, name, buf, buflen); | ||
202 | } | ||
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h index 959124f3f9af..86077066cd7c 100644 --- a/arch/powerpc/boot/ops.h +++ b/arch/powerpc/boot/ops.h | |||
@@ -19,6 +19,8 @@ | |||
19 | #define MAX_PATH_LEN 256 | 19 | #define MAX_PATH_LEN 256 |
20 | #define MAX_PROP_LEN 256 /* What should this be? */ | 20 | #define MAX_PROP_LEN 256 /* What should this be? */ |
21 | 21 | ||
22 | typedef void (*kernel_entry_t)(unsigned long r3, unsigned long r4, void *r5); | ||
23 | |||
22 | /* Platform specific operations */ | 24 | /* Platform specific operations */ |
23 | struct platform_ops { | 25 | struct platform_ops { |
24 | void (*fixups)(void); | 26 | void (*fixups)(void); |
@@ -51,7 +53,7 @@ extern struct dt_ops dt_ops; | |||
51 | /* Console operations */ | 53 | /* Console operations */ |
52 | struct console_ops { | 54 | struct console_ops { |
53 | int (*open)(void); | 55 | int (*open)(void); |
54 | void (*write)(char *buf, int len); | 56 | void (*write)(const char *buf, int len); |
55 | void (*edit_cmdline)(char *buf, int len); | 57 | void (*edit_cmdline)(char *buf, int len); |
56 | void (*close)(void); | 58 | void (*close)(void); |
57 | void *data; | 59 | void *data; |
diff --git a/arch/powerpc/boot/ps3-head.S b/arch/powerpc/boot/ps3-head.S new file mode 100644 index 000000000000..1a6d64a68df5 --- /dev/null +++ b/arch/powerpc/boot/ps3-head.S | |||
@@ -0,0 +1,80 @@ | |||
1 | /* | ||
2 | * PS3 bootwrapper entry. | ||
3 | * | ||
4 | * Copyright (C) 2007 Sony Computer Entertainment Inc. | ||
5 | * Copyright 2007 Sony Corp. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; version 2 of the License. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #include "ppc_asm.h" | ||
22 | |||
23 | .text | ||
24 | |||
25 | /* | ||
26 | * __system_reset_overlay - The PS3 first stage entry. | ||
27 | * | ||
28 | * The bootwraper build script copies the 0x100 bytes at symbol | ||
29 | * __system_reset_overlay to offset 0x100 of the rom image. | ||
30 | * | ||
31 | * The PS3 has a single processor with two threads. | ||
32 | */ | ||
33 | |||
34 | .globl __system_reset_overlay | ||
35 | __system_reset_overlay: | ||
36 | |||
37 | /* Switch to 32-bit mode. */ | ||
38 | |||
39 | mfmsr r9 | ||
40 | clrldi r9,r9,1 | ||
41 | mtmsrd r9 | ||
42 | nop | ||
43 | |||
44 | /* Get thread number in r3 and branch. */ | ||
45 | |||
46 | mfspr r3, 0x88 | ||
47 | cntlzw. r3, r3 | ||
48 | li r4, 0 | ||
49 | li r5, 0 | ||
50 | beq 1f | ||
51 | |||
52 | /* Secondary goes to __secondary_hold in kernel. */ | ||
53 | |||
54 | li r4, 0x60 | ||
55 | mtctr r4 | ||
56 | bctr | ||
57 | |||
58 | /* Primary delays then goes to _zimage_start in wrapper. */ | ||
59 | 1: | ||
60 | or 31, 31, 31 /* db16cyc */ | ||
61 | or 31, 31, 31 /* db16cyc */ | ||
62 | |||
63 | lis r4, _zimage_start@ha | ||
64 | addi r4, r4, _zimage_start@l | ||
65 | mtctr r4 | ||
66 | bctr | ||
67 | |||
68 | /* | ||
69 | * __system_reset_kernel - Place holder for the kernel reset vector. | ||
70 | * | ||
71 | * The bootwrapper build script copies 0x100 bytes from offset 0x100 | ||
72 | * of the rom image to the symbol __system_reset_kernel. At runtime | ||
73 | * the bootwrapper program copies the 0x100 bytes at __system_reset_kernel | ||
74 | * to ram address 0x100. This symbol must occupy 0x100 bytes. | ||
75 | */ | ||
76 | |||
77 | .globl __system_reset_kernel | ||
78 | __system_reset_kernel: | ||
79 | |||
80 | . = __system_reset_kernel + 0x100 | ||
diff --git a/arch/powerpc/boot/ps3-hvcall.S b/arch/powerpc/boot/ps3-hvcall.S new file mode 100644 index 000000000000..c8b7df3210d1 --- /dev/null +++ b/arch/powerpc/boot/ps3-hvcall.S | |||
@@ -0,0 +1,184 @@ | |||
1 | /* | ||
2 | * PS3 bootwrapper hvcalls. | ||
3 | * | ||
4 | * Copyright (C) 2007 Sony Computer Entertainment Inc. | ||
5 | * Copyright 2007 Sony Corp. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; version 2 of the License. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #include "ppc_asm.h" | ||
22 | |||
23 | /* | ||
24 | * The PS3 hypervisor uses a 64 bit "C" language calling convention. | ||
25 | * The routines here marshal arguments between the 32 bit wrapper | ||
26 | * program and the 64 bit hvcalls. | ||
27 | * | ||
28 | * wrapper lv1 | ||
29 | * 32-bit (h,l) 64-bit | ||
30 | * | ||
31 | * 1: r3,r4 <-> r3 | ||
32 | * 2: r5,r6 <-> r4 | ||
33 | * 3: r7,r8 <-> r5 | ||
34 | * 4: r9,r10 <-> r6 | ||
35 | * 5: 8(r1),12(r1) <-> r7 | ||
36 | * 6: 16(r1),20(r1) <-> r8 | ||
37 | * 7: 24(r1),28(r1) <-> r9 | ||
38 | * 8: 32(r1),36(r1) <-> r10 | ||
39 | * | ||
40 | */ | ||
41 | |||
42 | .macro GLOBAL name | ||
43 | .section ".text" | ||
44 | .balign 4 | ||
45 | .globl \name | ||
46 | \name: | ||
47 | .endm | ||
48 | |||
49 | .macro NO_SUPPORT name | ||
50 | GLOBAL \name | ||
51 | b ps3_no_support | ||
52 | .endm | ||
53 | |||
54 | .macro HVCALL num | ||
55 | li r11, \num | ||
56 | .long 0x44000022 | ||
57 | extsw r3, r3 | ||
58 | .endm | ||
59 | |||
60 | .macro SAVE_LR offset=4 | ||
61 | mflr r0 | ||
62 | stw r0, \offset(r1) | ||
63 | .endm | ||
64 | |||
65 | .macro LOAD_LR offset=4 | ||
66 | lwz r0, \offset(r1) | ||
67 | mtlr r0 | ||
68 | .endm | ||
69 | |||
70 | .macro LOAD_64_REG target,high,low | ||
71 | sldi r11, \high, 32 | ||
72 | or \target, r11, \low | ||
73 | .endm | ||
74 | |||
75 | .macro LOAD_64_STACK target,offset | ||
76 | ld \target, \offset(r1) | ||
77 | .endm | ||
78 | |||
79 | .macro LOAD_R3 | ||
80 | LOAD_64_REG r3,r3,r4 | ||
81 | .endm | ||
82 | |||
83 | .macro LOAD_R4 | ||
84 | LOAD_64_REG r4,r5,r6 | ||
85 | .endm | ||
86 | |||
87 | .macro LOAD_R5 | ||
88 | LOAD_64_REG r5,r7,r8 | ||
89 | .endm | ||
90 | |||
91 | .macro LOAD_R6 | ||
92 | LOAD_64_REG r6,r9,r10 | ||
93 | .endm | ||
94 | |||
95 | .macro LOAD_R7 | ||
96 | LOAD_64_STACK r7,8 | ||
97 | .endm | ||
98 | |||
99 | .macro LOAD_R8 | ||
100 | LOAD_64_STACK r8,16 | ||
101 | .endm | ||
102 | |||
103 | .macro LOAD_R9 | ||
104 | LOAD_64_STACK r9,24 | ||
105 | .endm | ||
106 | |||
107 | .macro LOAD_R10 | ||
108 | LOAD_64_STACK r10,32 | ||
109 | .endm | ||
110 | |||
111 | .macro LOAD_REGS_0 | ||
112 | stwu 1,-16(1) | ||
113 | stw 3, 8(1) | ||
114 | .endm | ||
115 | |||
116 | .macro LOAD_REGS_5 | ||
117 | LOAD_R3 | ||
118 | LOAD_R4 | ||
119 | LOAD_R5 | ||
120 | LOAD_R6 | ||
121 | LOAD_R7 | ||
122 | .endm | ||
123 | |||
124 | .macro LOAD_REGS_6 | ||
125 | LOAD_REGS_5 | ||
126 | LOAD_R8 | ||
127 | .endm | ||
128 | |||
129 | .macro LOAD_REGS_8 | ||
130 | LOAD_REGS_6 | ||
131 | LOAD_R9 | ||
132 | LOAD_R10 | ||
133 | .endm | ||
134 | |||
135 | .macro STORE_REGS_0_1 | ||
136 | lwz r11, 8(r1) | ||
137 | std r4, 0(r11) | ||
138 | mr r4, r3 | ||
139 | li r3, 0 | ||
140 | addi r1,r1,16 | ||
141 | .endm | ||
142 | |||
143 | .macro STORE_REGS_5_2 | ||
144 | lwz r11, 16(r1) | ||
145 | std r4, 0(r11) | ||
146 | lwz r11, 24(r1) | ||
147 | std r5, 0(r11) | ||
148 | .endm | ||
149 | |||
150 | .macro STORE_REGS_6_1 | ||
151 | lwz r11, 24(r1) | ||
152 | std r4, 0(r11) | ||
153 | .endm | ||
154 | |||
155 | GLOBAL lv1_get_logical_ppe_id | ||
156 | SAVE_LR | ||
157 | LOAD_REGS_0 | ||
158 | HVCALL 69 | ||
159 | STORE_REGS_0_1 | ||
160 | LOAD_LR | ||
161 | blr | ||
162 | |||
163 | GLOBAL lv1_get_logical_partition_id | ||
164 | SAVE_LR | ||
165 | LOAD_REGS_0 | ||
166 | HVCALL 74 | ||
167 | STORE_REGS_0_1 | ||
168 | LOAD_LR | ||
169 | blr | ||
170 | |||
171 | GLOBAL lv1_get_repository_node_value | ||
172 | SAVE_LR | ||
173 | LOAD_REGS_5 | ||
174 | HVCALL 91 | ||
175 | STORE_REGS_5_2 | ||
176 | LOAD_LR | ||
177 | blr | ||
178 | |||
179 | GLOBAL lv1_panic | ||
180 | SAVE_LR | ||
181 | LOAD_REGS_8 | ||
182 | HVCALL 255 | ||
183 | LOAD_LR | ||
184 | blr | ||
diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c new file mode 100644 index 000000000000..893d59339c26 --- /dev/null +++ b/arch/powerpc/boot/ps3.c | |||
@@ -0,0 +1,161 @@ | |||
1 | /* | ||
2 | * PS3 bootwrapper support. | ||
3 | * | ||
4 | * Copyright (C) 2007 Sony Computer Entertainment Inc. | ||
5 | * Copyright 2007 Sony Corp. | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; version 2 of the License. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #include <stdarg.h> | ||
22 | #include <stddef.h> | ||
23 | #include "types.h" | ||
24 | #include "elf.h" | ||
25 | #include "string.h" | ||
26 | #include "stdio.h" | ||
27 | #include "page.h" | ||
28 | #include "ops.h" | ||
29 | |||
30 | extern s64 lv1_panic(u64 in_1); | ||
31 | extern s64 lv1_get_logical_partition_id(u64 *out_1); | ||
32 | extern s64 lv1_get_logical_ppe_id(u64 *out_1); | ||
33 | extern s64 lv1_get_repository_node_value(u64 in_1, u64 in_2, u64 in_3, | ||
34 | u64 in_4, u64 in_5, u64 *out_1, u64 *out_2); | ||
35 | |||
36 | #ifdef DEBUG | ||
37 | #define DBG(fmt...) printf(fmt) | ||
38 | #else | ||
39 | static inline int __attribute__ ((format (printf, 1, 2))) DBG( | ||
40 | const char *fmt, ...) {return 0;} | ||
41 | #endif | ||
42 | |||
43 | BSS_STACK(4096); | ||
44 | |||
45 | /* A buffer that may be edited by tools operating on a zImage binary so as to | ||
46 | * edit the command line passed to vmlinux (by setting /chosen/bootargs). | ||
47 | * The buffer is put in it's own section so that tools may locate it easier. | ||
48 | */ | ||
49 | static char cmdline[COMMAND_LINE_SIZE] | ||
50 | __attribute__((__section__("__builtin_cmdline"))); | ||
51 | |||
52 | static void prep_cmdline(void *chosen) | ||
53 | { | ||
54 | if (cmdline[0] == '\0') | ||
55 | getprop(chosen, "bootargs", cmdline, COMMAND_LINE_SIZE-1); | ||
56 | else | ||
57 | setprop_str(chosen, "bootargs", cmdline); | ||
58 | |||
59 | printf("cmdline: '%s'\n", cmdline); | ||
60 | } | ||
61 | |||
62 | static void ps3_console_write(const char *buf, int len) | ||
63 | { | ||
64 | } | ||
65 | |||
66 | static void ps3_exit(void) | ||
67 | { | ||
68 | printf("ps3_exit\n"); | ||
69 | |||
70 | /* lv1_panic will shutdown the lpar. */ | ||
71 | |||
72 | lv1_panic(0); /* zero = do not reboot */ | ||
73 | while (1); | ||
74 | } | ||
75 | |||
76 | static int ps3_repository_read_rm_size(u64 *rm_size) | ||
77 | { | ||
78 | s64 result; | ||
79 | u64 lpar_id; | ||
80 | u64 ppe_id; | ||
81 | u64 v2; | ||
82 | |||
83 | result = lv1_get_logical_partition_id(&lpar_id); | ||
84 | |||
85 | if (result) | ||
86 | return -1; | ||
87 | |||
88 | result = lv1_get_logical_ppe_id(&ppe_id); | ||
89 | |||
90 | if (result) | ||
91 | return -1; | ||
92 | |||
93 | /* | ||
94 | * n1: 0000000062690000 : ....bi.. | ||
95 | * n2: 7075000000000000 : pu...... | ||
96 | * n3: 0000000000000001 : ........ | ||
97 | * n4: 726d5f73697a6500 : rm_size. | ||
98 | */ | ||
99 | |||
100 | result = lv1_get_repository_node_value(lpar_id, 0x0000000062690000ULL, | ||
101 | 0x7075000000000000ULL, ppe_id, 0x726d5f73697a6500ULL, rm_size, | ||
102 | &v2); | ||
103 | |||
104 | printf("%s:%d: ppe_id %lu \n", __func__, __LINE__, | ||
105 | (unsigned long)ppe_id); | ||
106 | printf("%s:%d: lpar_id %lu \n", __func__, __LINE__, | ||
107 | (unsigned long)lpar_id); | ||
108 | printf("%s:%d: rm_size %llxh \n", __func__, __LINE__, *rm_size); | ||
109 | |||
110 | return result ? -1 : 0; | ||
111 | } | ||
112 | |||
113 | void ps3_copy_vectors(void) | ||
114 | { | ||
115 | extern char __system_reset_kernel[]; | ||
116 | |||
117 | memcpy((void *)0x100, __system_reset_kernel, 0x100); | ||
118 | flush_cache((void *)0x100, 0x100); | ||
119 | } | ||
120 | |||
121 | void platform_init(void) | ||
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 */ | ||
128 | void *chosen; | ||
129 | unsigned long ft_addr; | ||
130 | u64 rm_size; | ||
131 | |||
132 | console_ops.write = ps3_console_write; | ||
133 | platform_ops.exit = ps3_exit; | ||
134 | |||
135 | printf("\n-- PS3 bootwrapper --\n"); | ||
136 | |||
137 | simple_alloc_init(_end, heapsize, 32, 64); | ||
138 | ft_init(_dtb_start, 0, 4); | ||
139 | |||
140 | chosen = finddevice("/chosen"); | ||
141 | |||
142 | ps3_repository_read_rm_size(&rm_size); | ||
143 | dt_fixup_memory(0, rm_size); | ||
144 | |||
145 | if (_initrd_end > _initrd_start) { | ||
146 | setprop_val(chosen, "linux,initrd-start", (u32)(_initrd_start)); | ||
147 | setprop_val(chosen, "linux,initrd-end", (u32)(_initrd_end)); | ||
148 | } | ||
149 | |||
150 | prep_cmdline(chosen); | ||
151 | |||
152 | ft_addr = dt_ops.finalize(); | ||
153 | |||
154 | ps3_copy_vectors(); | ||
155 | |||
156 | printf(" flat tree at 0x%lx\n\r", ft_addr); | ||
157 | |||
158 | ((kernel_entry_t)0)(ft_addr, 0, NULL); | ||
159 | |||
160 | ps3_exit(); | ||
161 | } | ||
diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c index 7fd32330a9a5..eaa0d3ae3518 100644 --- a/arch/powerpc/boot/serial.c +++ b/arch/powerpc/boot/serial.c | |||
@@ -27,7 +27,7 @@ static int serial_open(void) | |||
27 | return scdp->open(); | 27 | return scdp->open(); |
28 | } | 28 | } |
29 | 29 | ||
30 | static void serial_write(char *buf, int len) | 30 | static void serial_write(const char *buf, int len) |
31 | { | 31 | { |
32 | struct serial_console_data *scdp = console_ops.data; | 32 | struct serial_console_data *scdp = console_ops.data; |
33 | 33 | ||
diff --git a/arch/powerpc/boot/stdio.c b/arch/powerpc/boot/stdio.c index 0a9feeb98342..5b57800bbc67 100644 --- a/arch/powerpc/boot/stdio.c +++ b/arch/powerpc/boot/stdio.c | |||
@@ -190,7 +190,11 @@ int vsprintf(char *buf, const char *fmt, va_list args) | |||
190 | 190 | ||
191 | /* get the conversion qualifier */ | 191 | /* get the conversion qualifier */ |
192 | qualifier = -1; | 192 | qualifier = -1; |
193 | if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt =='Z') { | 193 | if (*fmt == 'l' && *(fmt + 1) == 'l') { |
194 | qualifier = 'q'; | ||
195 | fmt += 2; | ||
196 | } else if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' | ||
197 | || *fmt == 'Z') { | ||
194 | qualifier = *fmt; | 198 | qualifier = *fmt; |
195 | ++fmt; | 199 | ++fmt; |
196 | } | 200 | } |
@@ -281,6 +285,10 @@ int vsprintf(char *buf, const char *fmt, va_list args) | |||
281 | num = va_arg(args, unsigned long); | 285 | num = va_arg(args, unsigned long); |
282 | if (flags & SIGN) | 286 | if (flags & SIGN) |
283 | num = (signed long) num; | 287 | num = (signed long) num; |
288 | } else if (qualifier == 'q') { | ||
289 | num = va_arg(args, unsigned long long); | ||
290 | if (flags & SIGN) | ||
291 | num = (signed long long) num; | ||
284 | } else if (qualifier == 'Z') { | 292 | } else if (qualifier == 'Z') { |
285 | num = va_arg(args, size_t); | 293 | num = va_arg(args, size_t); |
286 | } else if (qualifier == 'h') { | 294 | } else if (qualifier == 'h') { |
diff --git a/arch/powerpc/boot/types.h b/arch/powerpc/boot/types.h index 79d26e708677..31393d17a9c1 100644 --- a/arch/powerpc/boot/types.h +++ b/arch/powerpc/boot/types.h | |||
@@ -7,6 +7,10 @@ typedef unsigned char u8; | |||
7 | typedef unsigned short u16; | 7 | typedef unsigned short u16; |
8 | typedef unsigned int u32; | 8 | typedef unsigned int u32; |
9 | typedef unsigned long long u64; | 9 | typedef unsigned long long u64; |
10 | typedef signed char s8; | ||
11 | typedef short s16; | ||
12 | typedef int s32; | ||
13 | typedef long long s64; | ||
10 | 14 | ||
11 | #define min(x,y) ({ \ | 15 | #define min(x,y) ({ \ |
12 | typeof(x) _x = (x); \ | 16 | typeof(x) _x = (x); \ |
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index da77adc73078..65f685479175 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -144,6 +144,15 @@ miboot|uboot) | |||
144 | cuboot*) | 144 | cuboot*) |
145 | gzip= | 145 | gzip= |
146 | ;; | 146 | ;; |
147 | ps3) | ||
148 | platformo="$object/ps3-head.o $object/ps3-hvcall.o $object/ps3.o" | ||
149 | lds=$object/zImage.ps3.lds | ||
150 | gzip= | ||
151 | ext=bin | ||
152 | objflags="-O binary --set-section-flags=.bss=contents,alloc,load,data" | ||
153 | ksection=.kernel:vmlinux.bin | ||
154 | isection=.kernel:initrd | ||
155 | ;; | ||
147 | esac | 156 | esac |
148 | 157 | ||
149 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" | 158 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" |
@@ -239,4 +248,50 @@ treeboot*) | |||
239 | fi | 248 | fi |
240 | exit 0 | 249 | exit 0 |
241 | ;; | 250 | ;; |
251 | ps3) | ||
252 | # The ps3's loader supports loading gzipped binary images from flash | ||
253 | # rom to addr zero. The loader enters the image at addr 0x100. A | ||
254 | # bootwrapper overlay is use to arrange for the kernel to be loaded | ||
255 | # to addr zero and to have a suitable bootwrapper entry at 0x100. | ||
256 | # To construct the rom image, 0x100 bytes from offset 0x100 in the | ||
257 | # kernel is copied to the bootwrapper symbol __system_reset_kernel. | ||
258 | # The 0x100 bytes at the bootwrapper symbol __system_reset_overlay is | ||
259 | # then copied to offset 0x100. At runtime the bootwrapper program | ||
260 | # copies the 0x100 bytes at __system_reset_kernel to addr 0x100. | ||
261 | |||
262 | system_reset_overlay=0x`${CROSS}nm "$ofile" \ | ||
263 | | grep ' __system_reset_overlay$' \ | ||
264 | | cut -d' ' -f1` | ||
265 | system_reset_overlay=`printf "%d" $system_reset_overlay` | ||
266 | system_reset_kernel=0x`${CROSS}nm "$ofile" \ | ||
267 | | grep ' __system_reset_kernel$' \ | ||
268 | | cut -d' ' -f1` | ||
269 | system_reset_kernel=`printf "%d" $system_reset_kernel` | ||
270 | overlay_dest="256" | ||
271 | overlay_size="256" | ||
272 | |||
273 | rm -f "$object/otheros.bld" | ||
274 | |||
275 | ${CROSS}objcopy -O binary "$ofile" "$ofile.bin" | ||
276 | |||
277 | msg=$(dd if="$ofile.bin" of="$ofile.bin" conv=notrunc \ | ||
278 | skip=$overlay_dest seek=$system_reset_kernel \ | ||
279 | count=$overlay_size bs=1 2>&1) | ||
280 | |||
281 | if [ $? -ne "0" ]; then | ||
282 | echo $msg | ||
283 | exit 1 | ||
284 | fi | ||
285 | |||
286 | msg=$(dd if="$ofile.bin" of="$ofile.bin" conv=notrunc \ | ||
287 | skip=$system_reset_overlay seek=$overlay_dest \ | ||
288 | count=$overlay_size bs=1 2>&1) | ||
289 | |||
290 | if [ $? -ne "0" ]; then | ||
291 | echo $msg | ||
292 | exit 2 | ||
293 | fi | ||
294 | |||
295 | gzip --force -9 --stdout "$ofile.bin" > "$object/otheros.bld" | ||
296 | ;; | ||
242 | esac | 297 | esac |
diff --git a/arch/powerpc/boot/zImage.ps3.lds.S b/arch/powerpc/boot/zImage.ps3.lds.S new file mode 100644 index 000000000000..aaa469c1e60d --- /dev/null +++ b/arch/powerpc/boot/zImage.ps3.lds.S | |||
@@ -0,0 +1,50 @@ | |||
1 | OUTPUT_ARCH(powerpc:common) | ||
2 | ENTRY(_zimage_start) | ||
3 | EXTERN(_zimage_start) | ||
4 | SECTIONS | ||
5 | { | ||
6 | _vmlinux_start = .; | ||
7 | .kernel:vmlinux.bin : { *(.kernel:vmlinux.bin) } | ||
8 | _vmlinux_end = .; | ||
9 | |||
10 | . = ALIGN(4096); | ||
11 | _dtb_start = .; | ||
12 | .kernel:dtb : { *(.kernel:dtb) } | ||
13 | _dtb_end = .; | ||
14 | |||
15 | . = ALIGN(4096); | ||
16 | _initrd_start = .; | ||
17 | .kernel:initrd : { *(.kernel:initrd) } | ||
18 | _initrd_end = .; | ||
19 | |||
20 | _start = .; | ||
21 | .text : | ||
22 | { | ||
23 | *(.text) | ||
24 | *(.fixup) | ||
25 | } | ||
26 | _etext = .; | ||
27 | . = ALIGN(4096); | ||
28 | .data : | ||
29 | { | ||
30 | *(.rodata*) | ||
31 | *(.data*) | ||
32 | *(.sdata*) | ||
33 | __got2_start = .; | ||
34 | *(.got2) | ||
35 | __got2_end = .; | ||
36 | } | ||
37 | |||
38 | . = ALIGN(4096); | ||
39 | _edata = .; | ||
40 | |||
41 | . = ALIGN(4096); | ||
42 | __bss_start = .; | ||
43 | .bss : | ||
44 | { | ||
45 | *(.sbss) | ||
46 | *(.bss) | ||
47 | } | ||
48 | . = ALIGN(4096); | ||
49 | _end = . ; | ||
50 | } | ||