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 | } | ||
