diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-12-15 19:24:25 -0500 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-12-15 19:24:25 -0500 |
| commit | 1e7342e7789fa2ca9202701467428726cbcfd649 (patch) | |
| tree | e0ad000924e9875bd2ea17bd0e04382491765a09 | |
| parent | 78c5c68a4cf4329d17abfa469345ddf323d4fd62 (diff) | |
| parent | 228d55053397e6d5325ca179c7ffe331de2846d3 (diff) | |
Merge remote-tracking branch 'jwb/next' into next
Conflicts:
arch/powerpc/platforms/40x/ppc40x_simple.c
| -rw-r--r-- | MAINTAINERS | 2 | ||||
| -rw-r--r-- | arch/powerpc/boot/Makefile | 5 | ||||
| -rw-r--r-- | arch/powerpc/boot/dcr.h | 6 | ||||
| -rw-r--r-- | arch/powerpc/boot/div64.S | 52 | ||||
| -rw-r--r-- | arch/powerpc/boot/dts/currituck.dts | 237 | ||||
| -rw-r--r-- | arch/powerpc/boot/dts/klondike.dts | 227 | ||||
| -rw-r--r-- | arch/powerpc/boot/treeboot-currituck.c | 119 | ||||
| -rwxr-xr-x | arch/powerpc/boot/wrapper | 3 | ||||
| -rw-r--r-- | arch/powerpc/configs/40x/klondike_defconfig | 55 | ||||
| -rw-r--r-- | arch/powerpc/configs/44x/currituck_defconfig | 110 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/reg.h | 1 | ||||
| -rw-r--r-- | arch/powerpc/kernel/cputable.c | 27 | ||||
| -rw-r--r-- | arch/powerpc/kernel/head_44x.S | 2 | ||||
| -rw-r--r-- | arch/powerpc/mm/44x_mmu.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/platforms/40x/Kconfig | 11 | ||||
| -rw-r--r-- | arch/powerpc/platforms/40x/ppc40x_simple.c | 1 | ||||
| -rw-r--r-- | arch/powerpc/platforms/44x/Kconfig | 14 | ||||
| -rw-r--r-- | arch/powerpc/platforms/44x/Makefile | 1 | ||||
| -rw-r--r-- | arch/powerpc/platforms/44x/currituck.c | 204 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/ppc4xx_pci.c | 85 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/ppc4xx_pci.h | 7 |
21 files changed, 1159 insertions, 14 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 3523ab000f1f..3cdc8bc03133 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -4020,7 +4020,7 @@ M: Josh Boyer <jwboyer@gmail.com> | |||
| 4020 | M: Matt Porter <mporter@kernel.crashing.org> | 4020 | M: Matt Porter <mporter@kernel.crashing.org> |
| 4021 | W: http://www.penguinppc.org/ | 4021 | W: http://www.penguinppc.org/ |
| 4022 | L: linuxppc-dev@lists.ozlabs.org | 4022 | L: linuxppc-dev@lists.ozlabs.org |
| 4023 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git | 4023 | T: git git://git.infradead.org/users/jwboyer/powerpc-4xx.git |
| 4024 | S: Maintained | 4024 | S: Maintained |
| 4025 | F: arch/powerpc/platforms/40x/ | 4025 | F: arch/powerpc/platforms/40x/ |
| 4026 | F: arch/powerpc/platforms/44x/ | 4026 | F: arch/powerpc/platforms/44x/ |
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 80c133c88565..15986e70799c 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
| @@ -45,6 +45,7 @@ $(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405 | |||
| 45 | $(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405 | 45 | $(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405 |
| 46 | $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 | 46 | $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 |
| 47 | $(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405 | 47 | $(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405 |
| 48 | $(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405 | ||
| 48 | $(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 | 49 | $(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 |
| 49 | 50 | ||
| 50 | 51 | ||
| @@ -79,7 +80,8 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c | |||
| 79 | cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ | 80 | cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ |
| 80 | virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ | 81 | virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ |
| 81 | cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \ | 82 | cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \ |
| 82 | gamecube-head.S gamecube.c wii-head.S wii.c treeboot-iss4xx.c | 83 | gamecube-head.S gamecube.c wii-head.S wii.c treeboot-iss4xx.c \ |
| 84 | treeboot-currituck.c | ||
| 83 | src-boot := $(src-wlib) $(src-plat) empty.c | 85 | src-boot := $(src-wlib) $(src-plat) empty.c |
| 84 | 86 | ||
| 85 | src-boot := $(addprefix $(obj)/, $(src-boot)) | 87 | src-boot := $(addprefix $(obj)/, $(src-boot)) |
| @@ -213,6 +215,7 @@ image-$(CONFIG_WARP) += cuImage.warp | |||
| 213 | image-$(CONFIG_YOSEMITE) += cuImage.yosemite | 215 | image-$(CONFIG_YOSEMITE) += cuImage.yosemite |
| 214 | image-$(CONFIG_ISS4xx) += treeImage.iss4xx \ | 216 | image-$(CONFIG_ISS4xx) += treeImage.iss4xx \ |
| 215 | treeImage.iss4xx-mpic | 217 | treeImage.iss4xx-mpic |
| 218 | image-$(CONFIG_CURRITUCK) += treeImage.currituck | ||
| 216 | 219 | ||
| 217 | # Board ports in arch/powerpc/platform/8xx/Kconfig | 220 | # Board ports in arch/powerpc/platform/8xx/Kconfig |
| 218 | image-$(CONFIG_MPC86XADS) += cuImage.mpc866ads | 221 | image-$(CONFIG_MPC86XADS) += cuImage.mpc866ads |
diff --git a/arch/powerpc/boot/dcr.h b/arch/powerpc/boot/dcr.h index 645a7c964e5f..cc73f7a95e26 100644 --- a/arch/powerpc/boot/dcr.h +++ b/arch/powerpc/boot/dcr.h | |||
| @@ -9,6 +9,12 @@ | |||
| 9 | }) | 9 | }) |
| 10 | #define mtdcr(rn, val) \ | 10 | #define mtdcr(rn, val) \ |
| 11 | asm volatile("mtdcr %0,%1" : : "i"(rn), "r"(val)) | 11 | asm volatile("mtdcr %0,%1" : : "i"(rn), "r"(val)) |
| 12 | #define mfdcrx(rn) \ | ||
| 13 | ({ \ | ||
| 14 | unsigned long rval; \ | ||
| 15 | asm volatile("mfdcrx %0,%1" : "=r"(rval) : "r"(rn)); \ | ||
| 16 | rval; \ | ||
| 17 | }) | ||
| 12 | 18 | ||
| 13 | /* 440GP/440GX SDRAM controller DCRs */ | 19 | /* 440GP/440GX SDRAM controller DCRs */ |
| 14 | #define DCRN_SDRAM0_CFGADDR 0x010 | 20 | #define DCRN_SDRAM0_CFGADDR 0x010 |
diff --git a/arch/powerpc/boot/div64.S b/arch/powerpc/boot/div64.S index d271ab542673..bbcb8a4cc121 100644 --- a/arch/powerpc/boot/div64.S +++ b/arch/powerpc/boot/div64.S | |||
| @@ -57,3 +57,55 @@ __div64_32: | |||
| 57 | stw r8,4(r3) | 57 | stw r8,4(r3) |
| 58 | mr r3,r6 # return the remainder in r3 | 58 | mr r3,r6 # return the remainder in r3 |
| 59 | blr | 59 | blr |
| 60 | |||
| 61 | /* | ||
| 62 | * Extended precision shifts. | ||
| 63 | * | ||
| 64 | * Updated to be valid for shift counts from 0 to 63 inclusive. | ||
| 65 | * -- Gabriel | ||
| 66 | * | ||
| 67 | * R3/R4 has 64 bit value | ||
| 68 | * R5 has shift count | ||
| 69 | * result in R3/R4 | ||
| 70 | * | ||
| 71 | * ashrdi3: arithmetic right shift (sign propagation) | ||
| 72 | * lshrdi3: logical right shift | ||
| 73 | * ashldi3: left shift | ||
| 74 | */ | ||
| 75 | .globl __ashrdi3 | ||
| 76 | __ashrdi3: | ||
| 77 | subfic r6,r5,32 | ||
| 78 | srw r4,r4,r5 # LSW = count > 31 ? 0 : LSW >> count | ||
| 79 | addi r7,r5,32 # could be xori, or addi with -32 | ||
| 80 | slw r6,r3,r6 # t1 = count > 31 ? 0 : MSW << (32-count) | ||
| 81 | rlwinm r8,r7,0,32 # t3 = (count < 32) ? 32 : 0 | ||
| 82 | sraw r7,r3,r7 # t2 = MSW >> (count-32) | ||
| 83 | or r4,r4,r6 # LSW |= t1 | ||
| 84 | slw r7,r7,r8 # t2 = (count < 32) ? 0 : t2 | ||
| 85 | sraw r3,r3,r5 # MSW = MSW >> count | ||
| 86 | or r4,r4,r7 # LSW |= t2 | ||
| 87 | blr | ||
| 88 | |||
| 89 | .globl __ashldi3 | ||
| 90 | __ashldi3: | ||
| 91 | subfic r6,r5,32 | ||
| 92 | slw r3,r3,r5 # MSW = count > 31 ? 0 : MSW << count | ||
| 93 | addi r7,r5,32 # could be xori, or addi with -32 | ||
| 94 | srw r6,r4,r6 # t1 = count > 31 ? 0 : LSW >> (32-count) | ||
| 95 | slw r7,r4,r7 # t2 = count < 32 ? 0 : LSW << (count-32) | ||
| 96 | or r3,r3,r6 # MSW |= t1 | ||
| 97 | slw r4,r4,r5 # LSW = LSW << count | ||
| 98 | or r3,r3,r7 # MSW |= t2 | ||
| 99 | blr | ||
| 100 | |||
| 101 | .globl __lshrdi3 | ||
| 102 | __lshrdi3: | ||
| 103 | subfic r6,r5,32 | ||
| 104 | srw r4,r4,r5 # LSW = count > 31 ? 0 : LSW >> count | ||
| 105 | addi r7,r5,32 # could be xori, or addi with -32 | ||
| 106 | slw r6,r3,r6 # t1 = count > 31 ? 0 : MSW << (32-count) | ||
| 107 | srw r7,r3,r7 # t2 = count < 32 ? 0 : MSW >> (count-32) | ||
| 108 | or r4,r4,r6 # LSW |= t1 | ||
| 109 | srw r3,r3,r5 # MSW = MSW >> count | ||
| 110 | or r4,r4,r7 # LSW |= t2 | ||
| 111 | blr | ||
diff --git a/arch/powerpc/boot/dts/currituck.dts b/arch/powerpc/boot/dts/currituck.dts new file mode 100644 index 000000000000..b801dd06e573 --- /dev/null +++ b/arch/powerpc/boot/dts/currituck.dts | |||
| @@ -0,0 +1,237 @@ | |||
| 1 | /* | ||
| 2 | * Device Tree Source for IBM Embedded PPC 476 Platform | ||
| 3 | * | ||
| 4 | * Copyright © 2011 Tony Breeds IBM Corporation | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without | ||
| 8 | * any warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | /dts-v1/; | ||
| 12 | |||
| 13 | /memreserve/ 0x01f00000 0x00100000; // spin table | ||
| 14 | |||
| 15 | / { | ||
| 16 | #address-cells = <2>; | ||
| 17 | #size-cells = <2>; | ||
| 18 | model = "ibm,currituck"; | ||
| 19 | compatible = "ibm,currituck"; | ||
| 20 | dcr-parent = <&{/cpus/cpu@0}>; | ||
| 21 | |||
| 22 | aliases { | ||
| 23 | serial0 = &UART0; | ||
| 24 | }; | ||
| 25 | |||
| 26 | cpus { | ||
| 27 | #address-cells = <1>; | ||
| 28 | #size-cells = <0>; | ||
| 29 | |||
| 30 | cpu@0 { | ||
| 31 | device_type = "cpu"; | ||
| 32 | model = "PowerPC,476"; | ||
| 33 | reg = <0>; | ||
| 34 | clock- | ||
