aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2008-07-14 21:54:57 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2008-07-14 21:54:57 -0400
commit930074b6b9c4895d20cdadba5aff97907e28728d (patch)
tree3725eca121188f2e9c3b8bb4d4b8ba35e92640c7
parent3fd44736db9a5bf33e4a216b9cd43c9cfd57c459 (diff)
parent2bf3016f89344d4cd8b2c96bbec2b642a2bde413 (diff)
Merge commit 'jwb/jwb-next'
-rw-r--r--Documentation/powerpc/bootwrapper.txt141
-rw-r--r--arch/powerpc/Kconfig13
-rw-r--r--arch/powerpc/Makefile15
-rw-r--r--arch/powerpc/boot/Makefile5
-rw-r--r--arch/powerpc/boot/dts/virtex440-ml507.dts296
-rw-r--r--arch/powerpc/boot/simpleboot.c6
-rw-r--r--arch/powerpc/boot/virtex.c100
-rwxr-xr-xarch/powerpc/boot/wrapper10
-rw-r--r--arch/powerpc/configs/44x/virtex5_defconfig1107
-rw-r--r--arch/powerpc/configs/ppc44x_defconfig149
-rw-r--r--arch/powerpc/kernel/cputable.c10
-rw-r--r--arch/powerpc/kernel/head_44x.S286
-rw-r--r--arch/powerpc/kernel/head_booke.h8
-rw-r--r--arch/powerpc/mm/44x_mmu.c29
-rw-r--r--arch/powerpc/mm/fault.c3
-rw-r--r--arch/powerpc/mm/init_32.c4
-rw-r--r--arch/powerpc/mm/mem.c8
-rw-r--r--arch/powerpc/mm/mmu_decl.h4
-rw-r--r--arch/powerpc/platforms/44x/Kconfig26
-rw-r--r--arch/powerpc/platforms/44x/Makefile1
-rw-r--r--arch/powerpc/platforms/44x/virtex.c60
-rw-r--r--arch/powerpc/platforms/44x/warp-nand.c9
-rw-r--r--include/asm-powerpc/pgtable-ppc32.h61
23 files changed, 2086 insertions, 265 deletions
diff --git a/Documentation/powerpc/bootwrapper.txt b/Documentation/powerpc/bootwrapper.txt
new file mode 100644
index 00000000000..d60fced5e1c
--- /dev/null
+++ b/Documentation/powerpc/bootwrapper.txt
@@ -0,0 +1,141 @@
1The PowerPC boot wrapper
2------------------------
3Copyright (C) Secret Lab Technologies Ltd.
4
5PowerPC image targets compresses and wraps the kernel image (vmlinux) with
6a boot wrapper to make it usable by the system firmware. There is no
7standard PowerPC firmware interface, so the boot wrapper is designed to
8be adaptable for each kind of image that needs to be built.
9
10The boot wrapper can be found in the arch/powerpc/boot/ directory. The
11Makefile in that directory has targets for all the available image types.
12The different image types are used to support all of the various firmware
13interfaces found on PowerPC platforms. OpenFirmware is the most commonly
14used firmware type on general purpose PowerPC systems from Apple, IBM and
15others. U-Boot is typically found on embedded PowerPC hardware, but there
16are a handful of other firmware implementations which are also popular. Each
17firmware interface requires a different image format.
18
19The boot wrapper is built from the makefile in arch/powerpc/boot/Makefile and
20it uses the wrapper script (arch/powerpc/boot/wrapper) to generate target
21image. The details of the build system is discussed in the next section.
22Currently, the following image format targets exist:
23
24 cuImage.%: Backwards compatible uImage for older version of
25 U-Boot (for versions that don't understand the device
26 tree). This image embeds a device tree blob inside
27 the image. The boot wrapper, kernel and device tree
28 are all embedded inside the U-Boot uImage file format
29 with boot wrapper code that extracts data from the old
30 bd_info structure and loads the data into the device
31 tree before jumping into the kernel.
32 Because of the series of #ifdefs found in the
33 bd_info structure used in the old U-Boot interfaces,
34 cuImages are platform specific. Each specific
35 U-Boot platform has a different platform init file
36 which populates the embedded device tree with data
37 from the platform specific bd_info file. The platform
38 specific cuImage platform init code can be found in
39 arch/powerpc/boot/cuboot.*.c. Selection of the correct
40 cuImage init code for a specific board can be found in
41 the wrapper structure.
42 dtbImage.%: Similar to zImage, except device tree blob is embedded
43 inside the image instead of provided by firmware. The
44 output image file can be either an elf file or a flat
45 binary depending on the platform.
46 dtbImages are used on systems which do not have an
47 interface for passing a device tree directly.
48 dtbImages are similar to simpleImages except that
49 dtbImages have platform specific code for extracting
50 data from the board firmware, but simpleImages do not
51 talk to the firmware at all.
52 PlayStation 3 support uses dtbImage. So do Embedded
53 Planet boards using the PlanetCore firmware. Board
54 specific initialization code is typically found in a
55 file named arch/powerpc/boot/<platform>.c; but this
56 can be overridden by the wrapper script.
57 simpleImage.%: Firmware independent compressed image that does not
58 depend on any particular firmware interface and embeds
59 a device tree blob. This image is a flat binary that
60 can be loaded to any location in RAM and jumped to.
61 Firmware cannot pass any configuration data to the
62 kernel with this image type and it depends entirely on
63 the embedded device tree for all information.
64 The simpleImage is useful for booting systems with
65 an unknown firmware interface or for booting from
66 a debugger when no firmware is present (such as on
67 the Xilinx Virtex platform). The only assumption that
68 simpleImage makes is that RAM is correctly initialized
69 and that the MMU is either off or has RAM mapped to
70 base address 0.
71 simpleImage also supports inserting special platform
72 specific initialization code to the start of the bootup
73 sequence. The virtex405 platform uses this feature to
74 ensure that the cache is invalidated before caching
75 is enabled. Platform specific initialization code is
76 added as part of the wrapper script and is keyed on
77 the image target name. For example, all
78 simpleImage.virtex405-* targets will add the
79 virtex405-head.S initialization code (This also means
80 that the dts file for virtex405 targets should be
81 named (virtex405-<board>.dts). Search the wrapper
82 script for 'virtex405' and see the file
83 arch/powerpc/boot/virtex405-head.S for details.
84 treeImage.%; Image format for used with OpenBIOS firmware found
85 on some ppc4xx hardware. This image embeds a device
86 tree blob inside the image.
87 uImage: Native image format used by U-Boot. The uImage target
88 does not add any boot code. It just wraps a compressed
89 vmlinux in the uImage data structure. This image
90 requires a version of U-Boot that is able to pass
91 a device tree to the kernel at boot. If using an older
92 version of U-Boot, then you need to use a cuImage
93 instead.
94 zImage.%: Image format which does not embed a device tree.
95 Used by OpenFirmware and other firmware interfaces
96 which are able to supply a device tree. This image
97 expects firmware to provide the device tree at boot.
98 Typically, if you have general purpose PowerPC
99 hardware then you want this image format.
100
101Image types which embed a device tree blob (simpleImage, dtbImage, treeImage,
102and cuImage) all generate the device tree blob from a file in the
103arch/powerpc/boot/dts/ directory. The Makefile selects the correct device
104tree source based on the name of the target. Therefore, if the kernel is
105built with 'make treeImage.walnut simpleImage.virtex405-ml403', then the
106build system will use arch/powerpc/boot/dts/walnut.dts to build
107treeImage.walnut and arch/powerpc/boot/dts/virtex405-ml403.dts to build
108the simpleImage.virtex405-ml403.
109
110Two special targets called 'zImage' and 'zImage.initrd' also exist. These
111targets build all the default images as selected by the kernel configuration.
112Default images are selected by the boot wrapper Makefile
113(arch/powerpc/boot/Makefile) by adding targets to the $image-y variable. Look
114at the Makefile to see which default image targets are available.
115
116How it is built
117---------------
118arch/powerpc is designed to support multiplatform kernels, which means
119that a single vmlinux image can be booted on many different target boards.
120It also means that the boot wrapper must be able to wrap for many kinds of
121images on a single build. The design decision was made to not use any
122conditional compilation code (#ifdef, etc) in the boot wrapper source code.
123All of the boot wrapper pieces are buildable at any time regardless of the
124kernel configuration. Building all the wrapper bits on every kernel build
125also ensures that obscure parts of the wrapper are at the very least compile
126tested in a large variety of environments.
127
128The wrapper is adapted for different image types at link time by linking in
129just the wrapper bits that are appropriate for the image type. The 'wrapper
130script' (found in arch/powerpc/boot/wrapper) is called by the Makefile and
131is responsible for selecting the correct wrapper bits for the image type.
132The arguments are well documented in the script's comment block, so they
133are not repeated here. However, it is worth mentioning that the script
134uses the -p (platform) argument as the main method of deciding which wrapper
135bits to compile in. Look for the large 'case "$platform" in' block in the
136middle of the script. This is also the place where platform specific fixups
137can be selected by changing the link order.
138
139In particular, care should be taken when working with cuImages. cuImage
140wrapper bits are very board specific and care should be taken to make sure
141the target you are trying to build is supported by the wrapper bits.
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 462c86a4eef..aaf99892d1b 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -459,6 +459,19 @@ config CMDLINE
459 some command-line options at build time by entering them here. In 459 some command-line options at build time by entering them here. In
460 most cases you will need to specify the root device here. 460 most cases you will need to specify the root device here.
461 461
462config EXTRA_TARGETS
463 string "Additional default image types"
464 help
465 List additional targets to be built by the bootwrapper here (separated
466 by spaces). This is useful for targets that depend of device tree
467 files in the .dts directory.
468
469 Targets in this list will be build as part of the default build
470 target, or when the user does a 'make zImage' or a
471 'make zImage.initrd'.
472
473 If unsure, leave blank
474
462if !44x || BROKEN 475if !44x || BROKEN
463config ARCH_WANTS_FREEZER_CONTROL 476config ARCH_WANTS_FREEZER_CONTROL
464 def_bool y 477 def_bool y
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 59ae7d9cdcc..9155c9312c1 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -163,12 +163,25 @@ bootwrapper_install %.dtb:
163 $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) 163 $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
164 164
165define archhelp 165define archhelp
166 @echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)' 166 @echo '* zImage - Build default images selected by kernel config'
167 @echo ' zImage.* - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)'
168 @echo ' uImage - U-Boot native image format'
169 @echo ' cuImage.<dt> - Backwards compatible U-Boot image for older'
170 @echo ' versions which do not support device trees'
171 @echo ' dtbImage.<dt> - zImage with an embedded device tree blob'
172 @echo ' simpleImage.<dt> - Firmware independent image.'
173 @echo ' treeImage.<dt> - Support for older IBM 4xx firmware (not U-Boot)'
167 @echo ' install - Install kernel using' 174 @echo ' install - Install kernel using'
168 @echo ' (your) ~/bin/installkernel or' 175 @echo ' (your) ~/bin/installkernel or'
169 @echo ' (distribution) /sbin/installkernel or' 176 @echo ' (distribution) /sbin/installkernel or'
170 @echo ' install to $$(INSTALL_PATH) and run lilo' 177 @echo ' install to $$(INSTALL_PATH) and run lilo'
171 @echo ' *_defconfig - Select default config from arch/$(ARCH)/configs' 178 @echo ' *_defconfig - Select default config from arch/$(ARCH)/configs'
179 @echo ''
180 @echo ' Targets with <dt> embed a device tree blob inside the image'
181 @echo ' These targets support board with firmware that does not'
182 @echo ' support passing a device tree directly. Replace <dt> with the'
183 @echo ' name of a dts file from the arch/$(ARCH)/boot/dts/ directory'
184 @echo ' (minus the .dts extension).'
172endef 185endef
173 186
174install: 187install:
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 0055edbc774..19f83c8f219 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -68,7 +68,7 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
68 fixed-head.S ep88xc.c ep405.c cuboot-c2k.c \ 68 fixed-head.S ep88xc.c ep405.c cuboot-c2k.c \
69 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ 69 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \
70 cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ 70 cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \
71 virtex405-head.S redboot-83xx.c cuboot-sam440ep.c 71 virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c
72src-boot := $(src-wlib) $(src-plat) empty.c 72src-boot := $(src-wlib) $(src-plat) empty.c
73 73
74src-boot := $(addprefix $(obj)/, $(src-boot)) 74src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -276,6 +276,9 @@ ifeq ($(CONFIG_PPC32),y)
276image-$(CONFIG_PPC_PMAC) += zImage.coff zImage.miboot 276image-$(CONFIG_PPC_PMAC) += zImage.coff zImage.miboot
277endif 277endif
278 278
279# Allow extra targets to be added to the defconfig
280image-y += $(subst ",,$(CONFIG_EXTRA_TARGETS))
281
279initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) 282initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
280initrd-y := $(patsubst zImage%, zImage.initrd%, \ 283initrd-y := $(patsubst zImage%, zImage.initrd%, \
281 $(patsubst dtbImage%, dtbImage.initrd%, \ 284 $(patsubst dtbImage%, dtbImage.initrd%, \
diff --git a/arch/powerpc/boot/dts/virtex440-ml507.dts b/arch/powerpc/boot/dts/virtex440-ml507.dts
new file mode 100644
index 00000000000..dc8e78e2dce
--- /dev/null
+++ b/arch/powerpc/boot/dts/virtex440-ml507.dts
@@ -0,0 +1,296 @@
1/*
2 * This file supports the Xilinx ML507 board with the 440 processor.
3 * A reference design for the FPGA is provided at http://git.xilinx.com.
4 *
5 * (C) Copyright 2008 Xilinx, Inc.
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2. This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11
12/dts-v1/;
13
14/ {
15 #address-cells = <1>;
16 #size-cells = <1>;
17 compatible = "xlnx,virtex440";
18 dcr-parent = <&ppc440_0>;
19 model = "testing";
20 DDR2_SDRAM: memory@0 {
21 device_type = "memory";
22 reg = < 0 0x10000000 >;
23 } ;
24 chosen {
25 bootargs = "console=ttyS0 ip=on root=/dev/ram";
26 linux,stdout-path = "/plb@0/serial@83e00000";
27 } ;
28 cpus {
29 #address-cells = <1>;
30 #cpus = <1>;
31 #size-cells = <0>;
32 ppc440_0: cpu@0 {
33 clock-frequency = <400000000>;
34 compatible = "PowerPC,440", "ibm,ppc440";
35 d-cache-line-size = <0x20>;
36 d-cache-size = <0x8000>;
37 dcr-access-method = "native";
38 dcr-controller ;
39 device_type = "cpu";
40 i-cache-line-size = <0x20>;
41 i-cache-size = <0x8000>;
42 model = "PowerPC,440";
43 reg = <0>;
44 timebase-frequency = <400000000>;
45 xlnx,apu-control = <1>;
46 xlnx,apu-udi-0 = <0>;
47 xlnx,apu-udi-1 = <0>;
48 xlnx,apu-udi-10 = <0>;
49 xlnx,apu-udi-11 = <0>;
50 xlnx,apu-udi-12 = <0>;
51 xlnx,apu-udi-13 = <0>;
52 xlnx,apu-udi-14 = <0>;
53 xlnx,apu-udi-15 = <0>;
54 xlnx,apu-udi-2 = <0>;
55 xlnx,apu-udi-3 = <0>;
56 xlnx,apu-udi-4 = <0>;
57 xlnx,apu-udi-5 = <0>;
58 xlnx,apu-udi-6 = <0>;
59 xlnx,apu-udi-7 = <0>;
60 xlnx,apu-udi-8 = <0>;
61 xlnx,apu-udi-9 = <0>;
62 xlnx,dcr-autolock-enable = <1>;
63 xlnx,dcu-rd-ld-cache-plb-prio = <0>;
64 xlnx,dcu-rd-noncache-plb-prio = <0>;
65 xlnx,dcu-rd-touch-plb-prio = <0>;
66 xlnx,dcu-rd-urgent-plb-prio = <0>;
67 xlnx,dcu-wr-flush-plb-prio = <0>;
68 xlnx,dcu-wr-store-plb-prio = <0>;
69 xlnx,dcu-wr-urgent-plb-prio = <0>;
70 xlnx,dma0-control = <0>;
71 xlnx,dma0-plb-prio = <0>;
72 xlnx,dma0-rxchannelctrl = <0x1010000>;
73 xlnx,dma0-rxirqtimer = <0x3ff>;
74 xlnx,dma0-txchannelctrl = <0x1010000>;
75 xlnx,dma0-txirqtimer = <0x3ff>;
76 xlnx,dma1-control = <0>;
77 xlnx,dma1-plb-prio = <0>;
78 xlnx,dma1-rxchannelctrl = <0x1010000>;
79 xlnx,dma1-rxirqtimer = <0x3ff>;
80 xlnx,dma1-txchannelctrl = <0x1010000>;
81 xlnx,dma1-txirqtimer = <0x3ff>;
82 xlnx,dma2-control = <0>;
83 xlnx,dma2-plb-prio = <0>;
84 xlnx,dma2-rxchannelctrl = <0x1010000>;
85 xlnx,dma2-rxirqtimer = <0x3ff>;
86 xlnx,dma2-txchannelctrl = <0x1010000>;
87 xlnx,dma2-txirqtimer = <0x3ff>;
88 xlnx,dma3-control = <0>;
89 xlnx,dma3-plb-prio = <0>;
90 xlnx,dma3-rxchannelctrl = <0x1010000>;
91 xlnx,dma3-rxirqtimer = <0x3ff>;
92 xlnx,dma3-txchannelctrl = <0x1010000>;
93 xlnx,dma3-txirqtimer = <0x3ff>;
94 xlnx,endian-reset = <0>;
95 xlnx,generate-plb-timespecs = <1>;
96 xlnx,icu-rd-fetch-plb-prio = <0>;
97 xlnx,icu-rd-spec-plb-prio = <0>;
98 xlnx,icu-rd-touch-plb-prio = <0>;
99 xlnx,interconnect-imask = <0xffffffff>;
100 xlnx,mplb-allow-lock-xfer = <1>;
101 xlnx,mplb-arb-mode = <0>;
102 xlnx,mplb-awidth = <0x20>;
103 xlnx,mplb-counter = <0x500>;
104 xlnx,mplb-dwidth = <0x80>;
105 xlnx,mplb-max-burst = <8>;
106 xlnx,mplb-native-dwidth = <0x80>;
107 xlnx,mplb-p2p = <0>;
108 xlnx,mplb-prio-dcur = <2>;
109 xlnx,mplb-prio-dcuw = <3>;
110 xlnx,mplb-prio-icu = <4>;
111 xlnx,mplb-prio-splb0 = <1>;
112 xlnx,mplb-prio-splb1 = <0>;
113 xlnx,mplb-read-pipe-enable = <1>;
114 xlnx,mplb-sync-tattribute = <0>;
115 xlnx,mplb-wdog-enable = <1>;
116 xlnx,mplb-write-pipe-enable = <1>;
117 xlnx,mplb-write-post-enable = <1>;
118 xlnx,num-dma = <1>;
119 xlnx,pir = <0xf>;
120 xlnx,ppc440mc-addr-base = <0>;
121 xlnx,ppc440mc-addr-high = <0xfffffff>;
122 xlnx,ppc440mc-arb-mode = <0>;
123 xlnx,ppc440mc-bank-conflict-mask = <0xc00000>;
124 xlnx,ppc440mc-control = <0xf810008f>;
125 xlnx,ppc440mc-max-burst = <8>;
126 xlnx,ppc440mc-prio-dcur = <2>;
127 xlnx,ppc440mc-prio-dcuw = <3>;
128 xlnx,ppc440mc-prio-icu = <4>;
129 xlnx,ppc440mc-prio-splb0 = <1>;
130 xlnx,ppc440mc-prio-splb1 = <0>;
131 xlnx,ppc440mc-row-conflict-mask = <0x3ffe00>;
132 xlnx,ppcdm-asyncmode = <0>;
133 xlnx,ppcds-asyncmode = <0>;
134 xlnx,user-reset = <0>;
135 DMA0: sdma@80 {
136 compatible = "xlnx,ll-dma-1.00.a";
137 dcr-reg = < 0x80 0x11 >;
138 interrupt-parent = <&xps_intc_0>;
139 interrupts = < 9 2 0xa 2 >;
140 } ;
141 } ;
142 } ;
143 plb_v46_0: plb@0 {
144 #address-cells = <1>;
145 #size-cells = <1>;
146 compatible = "xlnx,plb-v46-1.02.a", "simple-bus";
147 ranges ;
148 DIP_Switches_8Bit: gpio@81460000 {
149 compatible = "xlnx,xps-gpio-1.00.a";
150 interrupt-parent = <&xps_intc_0>;
151 interrupts = < 6 2 >;
152 reg = < 0x81460000 0x10000 >;
153 xlnx,all-inputs = <1>;
154 xlnx,all-inputs-2 = <0>;
155 xlnx,dout-default = <0>;
156 xlnx,dout-default-2 = <0>;
157 xlnx,family = "virtex5";
158 xlnx,gpio-width = <8>;
159 xlnx,interrupt-present = <1>;
160 xlnx,is-bidir = <1>;
161 xlnx,is-bidir-2 = <1>;
162 xlnx,is-dual = <0>;
163 xlnx,tri-default = <0xffffffff>;
164 xlnx,tri-default-2 = <0xffffffff>;
165 } ;
166 Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
167 #address-cells = <1>;
168 #size-cells = <1>;
169 compatible = "xlnx,compound";
170 ethernet@81c00000 {
171 compatible = "xlnx,xps-ll-temac-1.01.b";
172 device_type = "network";
173 interrupt-parent = <&xps_intc_0>;
174 interrupts = < 5 2 >;
175 llink-connected = <&DMA0>;
176 local-mac-address = [ 02 00 00 00 00 00 ];
177 reg = < 0x81c00000 0x40 >;
178 xlnx,bus2core-clk-ratio = <1>;
179 xlnx,phy-type = <1>;
180 xlnx,phyaddr = <1>;
181 xlnx,rxcsum = <1>;
182 xlnx,rxfifo = <0x1000>;
183 xlnx,temac-type = <0>;
184 xlnx,txcsum = <1>;
185 xlnx,txfifo = <0x1000>;
186 } ;
187 } ;
188 LEDs_8Bit: gpio@81400000 {
189 compatible = "xlnx,xps-gpio-1.00.a";
190 reg = < 0x81400000 0x10000 >;
191 xlnx,all-inputs = <0>;
192 xlnx,all-inputs-2 = <0>;
193 xlnx,dout-default = <0>;
194 xlnx,dout-default-2 = <0>;
195 xlnx,family = "virtex5";
196 xlnx,gpio-width = <8>;
197 xlnx,interrupt-present = <0>;
198 xlnx,is-bidir = <1>;
199 xlnx,is-bidir-2 = <1>;
200 xlnx,is-dual = <0>;
201 xlnx,tri-default = <0xffffffff>;
202 xlnx,tri-default-2 = <0xffffffff>;
203 } ;
204 LEDs_Positions: gpio@81420000 {
205 compatible = "xlnx,xps-gpio-1.00.a";
206 reg = < 0x81420000 0x10000 >;
207 xlnx,all-inputs = <0>;
208 xlnx,all-inputs-2 = <0>;
209 xlnx,dout-default = <0>;
210 xlnx,dout-default-2 = <0>;
211 xlnx,family = "virtex5";
212 xlnx,gpio-width = <5>;
213 xlnx,interrupt-present = <0>;
214 xlnx,is-bidir = <1>;
215 xlnx,is-bidir-2 = <1>;
216 xlnx,is-dual = <0>;
217 xlnx,tri-default = <0xffffffff>;
218 xlnx,tri-default-2 = <0xffffffff>;
219 } ;
220 Push_Buttons_5Bit: gpio@81440000 {
221 compatible = "xlnx,xps-gpio-1.00.a";
222 interrupt-parent = <&xps_intc_0>;
223 interrupts = < 7 2 >;
224 reg = < 0x81440000 0x10000 >;
225 xlnx,all-inputs = <1>;
226 xlnx,all-inputs-2 = <0>;
227 xlnx,dout-default = <0>;
228 xlnx,dout-default-2 = <0>;
229 xlnx,family = "virtex5";
230 xlnx,gpio-width = <5>;
231 xlnx,interrupt-present = <1>;
232 xlnx,is-bidir = <1>;
233 xlnx,is-bidir-2 = <1>;
234 xlnx,is-dual = <0>;
235 xlnx,tri-default = <0xffffffff>;
236 xlnx,tri-default-2 = <0xffffffff>;
237 } ;
238 RS232_Uart_1: serial@83e00000 {
239 clock-frequency = <100000000>;
240 compatible = "xlnx,xps-uart16550-2.00.a", "ns16550";
241 current-speed = <0x2580>;
242 device_type = "serial";
243 interrupt-parent = <&xps_intc_0>;
244 interrupts = < 8 2 >;
245 reg = < 0x83e00000 0x10000 >;
246 reg-offset = <3>;
247 reg-shift = <2>;
248 xlnx,family = "virtex5";
249 xlnx,has-external-rclk = <0>;
250 xlnx,has-external-xin = <0>;
251 xlnx,is-a-16550 = <1>;
252 } ;
253 SysACE_CompactFlash: sysace@83600000 {
254 compatible = "xlnx,xps-sysace-1.00.a";
255 interrupt-parent = <&xps_intc_0>;
256 interrupts = < 4 2 >;
257 reg = < 0x83600000 0x10000 >;
258 xlnx,family = "virtex5";
259 xlnx,mem-width = <0x10>;
260 } ;
261 xps_bram_if_cntlr_1: xps-bram-if-cntlr@ffff0000 {
262 compatible = "xlnx,xps-bram-if-cntlr-1.00.a";
263 reg = < 0xffff0000 0x10000 >;
264 xlnx,family = "virtex5";
265 } ;
266 xps_intc_0: interrupt-controller@81800000 {
267 #interrupt-cells = <2>;
268 compatible = "xlnx,xps-intc-1.00.a";
269 interrupt-controller ;
270 reg = < 0x81800000 0x10000 >;
271 xlnx,num-intr-inputs = <0xb>;
272 } ;
273 xps_timebase_wdt_1: xps-timebase-wdt@83a00000 {
274 compatible = "xlnx,xps-timebase-wdt-1.00.b";
275 interrupt-parent = <&xps_intc_0>;
276 interrupts = < 2 0 1 2 >;
277 reg = < 0x83a00000 0x10000 >;
278 xlnx,family = "virtex5";
279 xlnx,wdt-enable-once = <0>;
280 xlnx,wdt-interval = <0x1e>;
281 } ;
282 xps_timer_1: timer@83c00000 {
283 compatible = "xlnx,xps-timer-1.00.a";
284 interrupt-parent = <&xps_intc_0>;
285 interrupts = < 3 2 >;
286 reg = < 0x83c00000 0x10000 >;
287 xlnx,count-width = <0x20>;
288 xlnx,family = "virtex5";
289 xlnx,gen0-assert = <1>;
290 xlnx,gen1-assert = <1>;
291 xlnx,one-timer-only = <1>;
292 xlnx,trig0-assert = <1>;
293 xlnx,trig1-assert = <1>;
294 } ;
295 } ;
296} ;
diff --git a/arch/powerpc/boot/simpleboot.c b/arch/powerpc/boot/simpleboot.c
index 86cd285bccc..c58a0dada99 100644
--- a/arch/powerpc/boot/simpleboot.c
+++ b/arch/powerpc/boot/simpleboot.c
@@ -23,6 +23,8 @@
23 23
24BSS_STACK(4*1024); 24BSS_STACK(4*1024);
25 25
26extern int platform_specific_init(void) __attribute__((weak));
27
26void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, 28void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
27 unsigned long r6, unsigned long r7) 29 unsigned long r6, unsigned long r7)
28{ 30{
@@ -80,5 +82,9 @@ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
80 82
81 /* prepare the device tree and find the console */ 83 /* prepare the device tree and find the console */
82 fdt_init(_dtb_start); 84 fdt_init(_dtb_start);
85
86 if (platform_specific_init)
87 platform_specific_init();
88
83 serial_console_init(); 89 serial_console_init();
84} 90}
diff --git a/arch/powerpc/boot/virtex.c b/arch/powerpc/boot/virtex.c
new file mode 100644
index 00000000000..f622805f800
--- /dev/null
+++ b/arch/powerpc/boot/virtex.c
@@ -0,0 +1,100 @@
1/*
2 * The platform specific code for virtex devices since a boot loader is not
3 * always used.
4 *
5 * (C) Copyright 2008 Xilinx, Inc.
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published
9 * by the Free Software Foundation.
10 */
11
12#include "ops.h"
13#include "io.h"
14#include "stdio.h"
15
16#define UART_DLL 0 /* Out: Divisor Latch Low */
17#define UART_DLM 1 /* Out: Divisor Latch High */
18#define UART_FCR 2 /* Out: FIFO Control Register */
19#define UART_FCR_CLEAR_RCVR 0x02 /* Clear the RCVR FIFO */
20#define UART_FCR_CLEAR_XMIT 0x04 /* Clear the XMIT FIFO */
21#define UART_LCR 3 /* Out: Line Control Register */
22#define UART_MCR 4 /* Out: Modem Control Register */
23#define UART_MCR_RTS 0x02 /* RTS complement */
24#define UART_MCR_DTR 0x01 /* DTR complement */
25#define UART_LCR_DLAB 0x80 /* Divisor latch access bit */
26#define UART_LCR_WLEN8 0x03 /* Wordlength: 8 bits */
27
28static int virtex_ns16550_console_init(void *devp)
29{
30 unsigned char *reg_base;
31 u32 reg_shift, reg_offset, clk, spd;
32 u16 divisor;
33 int n;
34
35 if (dt_get_virtual_reg(devp, (void **)&reg_base, 1) < 1)
36 return -1;
37
38 n = getprop(devp, "reg-offset", &reg_offset, sizeof(reg_offset));
39 if (n == sizeof(reg_offset))
40 reg_base += reg_offset;
41
42 n = getprop(devp, "reg-shift", &reg_shift, sizeof(reg_shift));
43 if (n != sizeof(reg_shift))
44 reg_shift = 0;
45
46 n = getprop(devp, "current-speed", (void *)&spd, sizeof(spd));
47 if (n != sizeof(spd))
48 spd = 9600;
49
50 /* should there be a default clock rate?*/
51 n = getprop(devp, "clock-frequency", (void *)&clk, sizeof(clk));
52 if (n != sizeof(clk))
53 return -1;
54
55 divisor = clk / (16 * spd);
56
57 /* Access baud rate */
58 out_8(reg_base + (UART_LCR << reg_shift), UART_LCR_DLAB);
59
60 /* Baud rate based on input clock */
61 out_8(reg_base + (UART_DLL << reg_shift), divisor & 0xFF);
62 out_8(reg_base + (UART_DLM << reg_shift), divisor >> 8);
63
64 /* 8 data, 1 stop, no parity */
65 out_8(reg_base + (UART_LCR << reg_shift), UART_LCR_WLEN8);
66
67 /* RTS/DTR */
68 out_8(reg_base + (UART_MCR << reg_shift), UART_MCR_RTS | UART_MCR_DTR);
69
70 /* Clear transmitter and receiver */
71 out_8(reg_base + (UART_FCR << reg_shift),
72 UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR);
73 return 0;
74}
75
76/* For virtex, the kernel may be loaded without using a bootloader and if so
77 some UARTs need more setup than is provided in the normal console init
78*/
79int platform_specific_init(void)
80{
81 void *devp;
82 char devtype[MAX_PROP_LEN];
83 char path[MAX_PATH_LEN];
84
85 devp = finddevice("/chosen");
86 if (devp == NULL)
87 return -1;
88
89 if (getprop(devp, "linux,stdout-path", path, MAX_PATH_LEN) > 0) {
90 devp = finddevice(path);
91 if (devp == NULL)
92 return -1;
93
94 if ((getprop(devp, "device_type", devtype, sizeof(devtype)) > 0)
95 && !strcmp(devtype, "serial")
96 && (dt_is_compatible(devp, "ns16550")))
97 virtex_ns16550_console_init(devp);
98 }
99 return 0;
100}
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index df2358e9f1c..644bf9d4ea0 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -207,7 +207,15 @@ adder875-redboot)
207 binary=y 207 binary=y
208 ;; 208 ;;
209simpleboot-virtex405-*) 209simpleboot-virtex405-*)
210 platformo="$object/virtex405-head.o $object/simpleboot.o" 210 platformo="$object/virtex405-head.o $object/simpleboot.o $object/virtex.o"
211 binary=y
212 ;;
213simpleboot-virtex440-*)
214 platformo="$object/simpleboot.o $object/virtex.o"
215 binary=y
216 ;;
217simpleboot-*)
218 platformo="$object/simpleboot.o"
211 binary=y 219 binary=y
212 ;; 220 ;;
213asp834x-redboot) 221asp834x-redboot)
diff --git a/arch/powerpc/configs/44x/virtex5_defconfig b/arch/powerpc/configs/44x/virtex5_defconfig
new file mode 100644
index 00000000000..9c41f66b5a7
--- /dev/null
+++ b/arch/powerpc/configs/44x/virtex5_defconfig
@@ -0,0 +1,1107 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc8
4# Wed Jul 2 15:36:41 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15CONFIG_44x=y
16# CONFIG_E200 is not set
17CONFIG_4xx=y
18CONFIG_BOOKE=y
19CONFIG_PTE_64BIT=y
20CONFIG_PHYS_64BIT=y
21# CONFIG_PPC_MM_SLICES is not set
22CONFIG_NOT_COHERENT_CACHE=y
23CONFIG_PPC32=y
24CONFIG_WORD_SIZE=32
25CONFIG_PPC_MERGE=y
26CONFIG_MMU=y
27CONFIG_GENERIC_CMOS_UPDATE=y
28CONFIG_GENERIC_TIME=y
29CONFIG_GENERIC_TIME_VSYSCALL=y
30CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
37CONFIG_ARCH_HAS_ILOG2_U32=y
38CONFIG_GENERIC_HWEIGHT=y
39CONFIG_GENERIC_CALIBRATE_DELAY=y
40CONFIG_GENERIC_FIND_NEXT_BIT=y
41# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
42CONFIG_PPC=y
43CONFIG_EARLY_PRINTK=y
44CONFIG_GENERIC_NVRAM=y
45CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
46CONFIG_ARCH_MAY_HAVE_PC_FDC=y
47CONFIG_PPC_OF=y
48CONFIG_OF=y
49CONFIG_PPC_UDBG_16550=y
50# CONFIG_GENERIC_TBSYNC is not set
51CONFIG_AUDIT_ARCH=y
52CONFIG_GENERIC_BUG=y
53# CONFIG_DEFAULT_UIMAGE is not set
54CONFIG_PPC_DCR_NATIVE=y
55# CONFIG_PPC_DCR_MMIO is not set
56CONFIG_PPC_DCR=y
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58
59#
60# General setup
61#
62CONFIG_EXPERIMENTAL=y
63CONFIG_BROKEN_ON_SMP=y
64CONFIG_LOCK_KERNEL=y
65CONFIG_INIT_ENV_ARG_LIMIT=32
66CONFIG_LOCALVERSION=""
67# CONFIG_LOCALVERSION_AUTO is not set
68CONFIG_SWAP=y
69CONFIG_SYSVIPC=y
70CONFIG_SYSVIPC_SYSCTL=y
71CONFIG_POSIX_MQUEUE=y
72# CONFIG_BSD_PROCESS_ACCT is not set
73# CONFIG_TASKSTATS is not set
74# CONFIG_AUDIT is not set
75CONFIG_IKCONFIG=y
76CONFIG_IKCONFIG_PROC=y
77CONFIG_LOG_BUF_SHIFT=14
78# CONFIG_CGROUPS is not set
79# CONFIG_GROUP_SCHED is not set
80CONFIG_SYSFS_DEPRECATED=y
81CONFIG_SYSFS_DEPRECATED_V2=y
82# CONFIG_RELAY is not set
83CONFIG_NAMESPACES=y
84# CONFIG_UTS_NS is not set
85# CONFIG_IPC_NS is not set
86# CONFIG_USER_NS is not set
87# CONFIG_PID_NS is not set
88CONFIG_BLK_DEV_INITRD=y
89CONFIG_INITRAMFS_SOURCE=""
90# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
91CONFIG_SYSCTL=y
92# CONFIG_EMBEDDED is not set
93CONFIG_SYSCTL_SYSCALL=y
94CONFIG_SYSCTL_SYSCALL_CHECK=y
95CONFIG_KALLSYMS=y
96# CONFIG_KALLSYMS_EXTRA_PASS is not set
97CONFIG_HOTPLUG=y
98CONFIG_PRINTK=y
99CONFIG_BUG=y
100CONFIG_ELF_CORE=y
101CONFIG_COMPAT_BRK=y
102CONFIG_BASE_FULL=y
103CONFIG_FUTEX=y
104CONFIG_ANON_INODES=y
105CONFIG_EPOLL=y
106CONFIG_SIGNALFD=y
107CONFIG_TIMERFD=y
108CONFIG_EVENTFD=y
109CONFIG_SHMEM=y
110CONFIG_VM_EVENT_COUNTERS=y
111CONFIG_SLAB=y
112# CONFIG_SLUB is not set
113# CONFIG_SLOB is not set
114# CONFIG_PROFILING is not set
115# CONFIG_MARKERS is not set
116CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y
120# CONFIG_HAVE_DMA_ATTRS is not set
121CONFIG_PROC_PAGE_MONITOR=y
122CONFIG_SLABINFO=y
123CONFIG_RT_MUTEXES=y
124# CONFIG_TINY_SHMEM is not set
125CONFIG_BASE_SMALL=0
126CONFIG_MODULES=y
127# CONFIG_MODULE_FORCE_LOAD is not set
128CONFIG_MODULE_UNLOAD=y
129CONFIG_MODULE_FORCE_UNLOAD=y
130CONFIG_MODVERSIONS=y
131# CONFIG_MODULE_SRCVERSION_ALL is not set
132CONFIG_KMOD=y
133CONFIG_BLOCK=y
134# CONFIG_LBD is not set
135# CONFIG_BLK_DEV_IO_TRACE is not set
136# CONFIG_LSF is not set
137# CONFIG_BLK_DEV_BSG is not set
138
139#
140# IO Schedulers
141#
142CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y
146# CONFIG_DEFAULT_AS is not set
147# CONFIG_DEFAULT_DEADLINE is not set
148CONFIG_DEFAULT_CFQ=y
149# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="cfq"
151CONFIG_CLASSIC_RCU=y
152# CONFIG_PPC4xx_PCI_EXPRESS is not set
153
154#
155# Platform support
156#
157# CONFIG_PPC_MPC512x is not set
158# CONFIG_PPC_MPC5121 is not set
159# CONFIG_PPC_CELL is not set
160# CONFIG_PPC_CELL_NATIVE is not set
161# CONFIG_PQ2ADS is not set
162# CONFIG_BAMBOO is not set
163# CONFIG_EBONY is not set
164# CONFIG_SEQUOIA is not set
165# CONFIG_TAISHAN is not set
166# CONFIG_KATMAI is not set
167# CONFIG_RAINIER is not set
168# CONFIG_WARP is not set
169# CONFIG_CANYONLANDS is not set
170# CONFIG_YOSEMITE is not set
171CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y
172CONFIG_XILINX_VIRTEX=y
173CONFIG_XILINX_VIRTEX_5_FXT=y
174# CONFIG_IPIC is not set
175# CONFIG_MPIC is not set
176# CONFIG_MPIC_WEIRD is not set
177# CONFIG_PPC_I8259 is not set
178# CONFIG_PPC_RTAS is not set
179# CONFIG_MMIO_NVRAM is not set
180# CONFIG_PPC_MPC106 is not set
181# CONFIG_PPC_970_NAP is not set
182# CONFIG_PPC_INDIRECT_IO is not set
183# CONFIG_GENERIC_IOMAP is not set
184# CONFIG_CPU_FREQ is not set
185# CONFIG_FSL_ULI1575 is not set
186
187#
188# Kernel options
189#
190# CONFIG_HIGHMEM is not set
191# CONFIG_TICK_ONESHOT is not set
192# CONFIG_NO_HZ is not set
193# CONFIG_HIGH_RES_TIMERS is not set
194CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
195# CONFIG_HZ_100 is not set
196CONFIG_HZ_250=y
197# CONFIG_HZ_300 is not set
198# CONFIG_HZ_1000 is not set
199CONFIG_HZ=250
200# CONFIG_SCHED_HRTICK is not set
201# CONFIG_PREEMPT_NONE is not set
202# CONFIG_PREEMPT_VOLUNTARY is not set
203CONFIG_PREEMPT=y
204# CONFIG_PREEMPT_RCU is not set
205CONFIG_BINFMT_ELF=y
206# CONFIG_BINFMT_MISC is not set
207CONFIG_MATH_EMULATION=y
208# CONFIG_IOMMU_HELPER is not set
209CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
210CONFIG_ARCH_HAS_WALK_MEMORY=y
211CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
212CONFIG_ARCH_FLATMEM_ENABLE=y
213CONFIG_ARCH_POPULATES_NODE_MAP=y
214CONFIG_SELECT_MEMORY_MODEL=y
215CONFIG_FLATMEM_MANUAL=y
216# CONFIG_DISCONTIGMEM_MANUAL is not set
217# CONFIG_SPARSEMEM_MANUAL is not set
218CONFIG_FLATMEM=y
219CONFIG_FLAT_NODE_MEM_MAP=y
220# CONFIG_SPARSEMEM_STATIC is not set
221# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
222CONFIG_PAGEFLAGS_EXTENDED=y
223CONFIG_SPLIT_PTLOCK_CPUS=4
224CONFIG_RESOURCES_64BIT=y
225CONFIG_ZONE_DMA_FLAG=1
226CONFIG_BOUNCE=y
227CONFIG_VIRT_TO_BUS=y
228CONFIG_FORCE_MAX_ZONEORDER=11
229CONFIG_PROC_DEVICETREE=y
230CONFIG_CMDLINE_BOOL=y
231CONFIG_CMDLINE=""
232CONFIG_EXTRA_TARGETS=""
233CONFIG_SECCOMP=y
234CONFIG_ISA_DMA_API=y
235
236#
237# Bus options
238#
239CONFIG_ZONE_DMA=y
240CONFIG_PPC_INDIRECT_PCI=y
241CONFIG_4xx_SOC=y
242CONFIG_PCI=y
243CONFIG_PCI_DOMAINS=y
244CONFIG_PCI_SYSCALL=y
245# CONFIG_PCIEPORTBUS is not set
246CONFIG_ARCH_SUPPORTS_MSI=y
247# CONFIG_PCI_MSI is not set
248CONFIG_PCI_LEGACY=y
249# CONFIG_PCCARD is not set
250# CONFIG_HOTPLUG_PCI is not set
251# CONFIG_HAS_RAPIDIO is not set
252
253#
254# Advanced setup
255#
256# CONFIG_ADVANCED_OPTIONS is not set
257
258#
259# Default settings for advanced configuration options are used
260#
261CONFIG_LOWMEM_SIZE=0x30000000
262CONFIG_PAGE_OFFSET=0xc0000000
263CONFIG_KERNEL_START=0xc0000000
264CONFIG_PHYSICAL_START=0x00000000
265CONFIG_TASK_SIZE=0xc0000000
266CONFIG_CONSISTENT_START=0xff100000
267CONFIG_CONSISTENT_SIZE=0x00200000
268
269#
270# Networking
271#
272CONFIG_NET=y
273
274#
275# Networking options
276#
277CONFIG_PACKET=y
278# CONFIG_PACKET_MMAP is not set
279CONFIG_UNIX=y
280CONFIG_XFRM=y
281# CONFIG_XFRM_USER is not set
282# CONFIG_XFRM_SUB_POLICY is not set
283# CONFIG_XFRM_MIGRATE is not set
284# CONFIG_XFRM_STATISTICS is not set
285# CONFIG_NET_KEY is not set
286CONFIG_INET=y
287CONFIG_IP_MULTICAST=y
288# CONFIG_IP_ADVANCED_ROUTER is not set
289CONFIG_IP_FIB_HASH=y
290CONFIG_IP_PNP=y
291CONFIG_IP_PNP_DHCP=y
292CONFIG_IP_PNP_BOOTP=y
293# CONFIG_IP_PNP_RARP is not set
294# CONFIG_NET_IPIP is not set
295# CONFIG_NET_IPGRE is not set
296# CONFIG_IP_MROUTE is not set
297# CONFIG_ARPD is not set
298# CONFIG_SYN_COOKIES is not set
299# CONFIG_INET_AH is not set
300# CONFIG_INET_ESP is not set
301# CONFIG_INET_IPCOMP is not set
302# CONFIG_INET_XFRM_TUNNEL is not set
303CONFIG_INET_TUNNEL=m
304CONFIG_INET_XFRM_MODE_TRANSPORT=y
305CONFIG_INET_XFRM_MODE_TUNNEL=y
306CONFIG_INET_XFRM_MODE_BEET=y
307# CONFIG_INET_LRO is not set
308CONFIG_INET_DIAG=y
309CONFIG_INET_TCP_DIAG=y
310# CONFIG_TCP_CONG_ADVANCED is not set
311CONFIG_TCP_CONG_CUBIC=y
312CONFIG_DEFAULT_TCP_CONG="cubic"
313# CONFIG_TCP_MD5SIG is not set
314# CONFIG_IP_VS is not set
315CONFIG_IPV6=m
316# CONFIG_IPV6_PRIVACY is not set
317# CONFIG_IPV6_ROUTER_PREF is not set
318# CONFIG_IPV6_OPTIMISTIC_DAD is not set
319# CONFIG_INET6_AH is not set
320# CONFIG_INET6_ESP is not set
321# CONFIG_INET6_IPCOMP is not set
322# CONFIG_IPV6_MIP6 is not set
323# CONFIG_INET6_XFRM_TUNNEL is not set
324# CONFIG_INET6_TUNNEL is not set
325CONFIG_INET6_XFRM_MODE_TRANSPORT=m
326CONFIG_INET6_XFRM_MODE_TUNNEL=m
327CONFIG_INET6_XFRM_MODE_BEET=m
328# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
329CONFIG_IPV6_SIT=m
330CONFIG_IPV6_NDISC_NODETYPE=y
331# CONFIG_IPV6_TUNNEL is not set
332# CONFIG_IPV6_MULTIPLE_TABLES is not set
333# CONFIG_IPV6_MROUTE is not set
334# CONFIG_NETWORK_SECMARK is not set
335CONFIG_NETFILTER=y
336# CONFIG_NETFILTER_DEBUG is not set
337CONFIG_NETFILTER_ADVANCED=y
338
339#
340# Core Netfilter Configuration
341#
342# CONFIG_NETFILTER_NETLINK_QUEUE is not set
343# CONFIG_NETFILTER_NETLINK_LOG is not set
344# CONFIG_NF_CONNTRACK is not set
345CONFIG_NETFILTER_XTABLES=m
346# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
347# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
348# CONFIG_NETFILTER_XT_TARGET_MARK is not set
349# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
350# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
351# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
352# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
353# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
354# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
355# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
356# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
357# CONFIG_NETFILTER_XT_MATCH_ESP is not set
358# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
359# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
360# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
361# CONFIG_NETFILTER_XT_MATCH_MAC is not set
362# CONFIG_NETFILTER_XT_MATCH_MARK is not set
363# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
364# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
365# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
366# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
367# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
368# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
369# CONFIG_NETFILTER_XT_MATCH_REALM is not set
370# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
371# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
372# CONFIG_NETFILTER_XT_MATCH_STRING is not set
373# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
374# CONFIG_NETFILTER_XT_MATCH_TIME is not set
375# CONFIG_NETFILTER_XT_MATCH_U32 is not set
376# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
377
378#
379# IP: Netfilter Configuration
380#
381# CONFIG_IP_NF_QUEUE is not set
382CONFIG_IP_NF_IPTABLES=m
383# CONFIG_IP_NF_MATCH_RECENT is not set
384# CONFIG_IP_NF_MATCH_ECN is not set
385# CONFIG_IP_NF_MATCH_AH is not set
386# CONFIG_IP_NF_MATCH_TTL is not set
387# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
388CONFIG_IP_NF_FILTER=m
389# CONFIG_IP_NF_TARGET_REJECT is not set
390# CONFIG_IP_NF_TARGET_LOG is not set
391# CONFIG_IP_NF_TARGET_ULOG is not set
392CONFIG_IP_NF_MANGLE=m
393# CONFIG_IP_NF_TARGET_ECN is not set
394# CONFIG_IP_NF_TARGET_TTL is not set
395# CONFIG_IP_NF_RAW is not set
396# CONFIG_IP_NF_ARPTABLES is not set
397
398#
399# IPv6: Netfilter Configuration
400#
401# CONFIG_IP6_NF_QUEUE is not set
402# CONFIG_IP6_NF_IPTABLES is not set
403# CONFIG_IP_DCCP is not set
404# CONFIG_IP_SCTP is not set
405# CONFIG_TIPC is not set
406# CONFIG_ATM is not set
407# CONFIG_BRIDGE is not set
408# CONFIG_VLAN_8021Q is not set
409# CONFIG_DECNET is not set
410# CONFIG_LLC2 is not set
411# CONFIG_IPX is not set
412# CONFIG_ATALK is not set
413# CONFIG_X25 is not set
414# CONFIG_LAPB is not set
415# CONFIG_ECONET is not set
416# CONFIG_WAN_ROUTER is not set
417# CONFIG_NET_SCHED is not set
418
419#
420# Network testing
421#
422# CONFIG_NET_PKTGEN is not set
423# CONFIG_HAMRADIO is not set
424# CONFIG_CAN is not set
425# CONFIG_IRDA is not set
426# CONFIG_BT is not set
427# CONFIG_AF_RXRPC is not set
428
429#
430# Wireless
431#
432# CONFIG_CFG80211 is not set
433# CONFIG_WIRELESS_EXT is not set
434# CONFIG_MAC80211 is not set
435# CONFIG_IEEE80211 is not set
436# CONFIG_RFKILL is not set
437# CONFIG_NET_9P is not set
438
439#
440# Device Drivers
441#
442
443#
444# Generic Driver Options
445#
446CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
447CONFIG_STANDALONE=y
448CONFIG_PREVENT_FIRMWARE_BUILD=y
449# CONFIG_FW_LOADER is not set
450# CONFIG_SYS_HYPERVISOR is not set
451# CONFIG_CONNECTOR is not set
452# CONFIG_MTD is not set
453CONFIG_OF_DEVICE=y
454CONFIG_OF_I2C=y
455# CONFIG_PARPORT is not set
456CONFIG_BLK_DEV=y
457# CONFIG_BLK_DEV_FD is not set
458# CONFIG_BLK_CPQ_DA is not set
459# CONFIG_BLK_CPQ_CISS_DA is not set
460# CONFIG_BLK_DEV_DAC960 is not set
461# CONFIG_BLK_DEV_UMEM is not set
462# CONFIG_BLK_DEV_COW_COMMON is not set
463CONFIG_BLK_DEV_LOOP=y
464# CONFIG_BLK_DEV_CRYPTOLOOP is not set
465# CONFIG_BLK_DEV_NBD is not set
466# CONFIG_BLK_DEV_SX8 is not set
467CONFIG_BLK_DEV_RAM=y
468CONFIG_BLK_DEV_RAM_COUNT=16
469CONFIG_BLK_DEV_RAM_SIZE=8192
470# CONFIG_BLK_DEV_XIP is not set
471# CONFIG_CDROM_PKTCDVD is not set
472# CONFIG_ATA_OVER_ETH is not set
473# CONFIG_XILINX_SYSACE is not set
474CONFIG_MISC_DEVICES=y
475# CONFIG_PHANTOM is not set
476# CONFIG_EEPROM_93CX6 is not set
477# CONFIG_SGI_IOC4 is not set
478# CONFIG_TIFM_CORE is not set
479# CONFIG_ENCLOSURE_SERVICES is not set
480CONFIG_HAVE_IDE=y
481# CONFIG_IDE is not set
482
483#
484# SCSI device support
485#
486# CONFIG_RAID_ATTRS is not set
487# CONFIG_SCSI is not set
488# CONFIG_SCSI_DMA is not set
489# CONFIG_SCSI_NETLINK is not set
490# CONFIG_ATA is not set
491# CONFIG_MD is not set
492# CONFIG_FUSION is not set
493
494#
495# IEEE 1394 (FireWire) support
496#
497
498#
499# Enable only one of the two stacks, unless you know what you are doing
500#
501# CONFIG_FIREWIRE is not set
502# CONFIG_IEEE1394 is not set
503# CONFIG_I2O is not set
504# CONFIG_MACINTOSH_DRIVERS is not set
505CONFIG_NETDEVICES=y
506# CONFIG_NETDEVICES_MULTIQUEUE is not set
507# CONFIG_DUMMY is not set
508# CONFIG_BONDING is not set
509# CONFIG_MACVLAN is not set
510# CONFIG_EQUALIZER is not set
511# CONFIG_TUN is not set
512# CONFIG_VETH is not set
513# CONFIG_ARCNET is not set
514# CONFIG_PHYLIB is not set
515CONFIG_NET_ETHERNET=y
516CONFIG_MII=y
517# CONFIG_HAPPYMEAL is not set
518# CONFIG_SUNGEM is not set
519# CONFIG_CASSINI is not set
520# CONFIG_NET_VENDOR_3COM is not set
521# CONFIG_NET_TULIP is not set
522# CONFIG_HP100 is not set
523# CONFIG_IBM_NEW_EMAC is not set
524# CONFIG_IBM_NEW_EMAC_ZMII is not set
525# CONFIG_IBM_NEW_EMAC_RGMII is not set
526# CONFIG_IBM_NEW_EMAC_TAH is not set
527# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
528# CONFIG_NET_PCI is not set
529# CONFIG_B44 is not set
530CONFIG_NETDEV_1000=y
531# CONFIG_ACENIC is not set
532# CONFIG_DL2K is not set
533# CONFIG_E1000 is not set
534# CONFIG_E1000E is not set
535# CONFIG_E1000E_ENABLED is not set
536# CONFIG_IP1000 is not set
537# CONFIG_IGB is not set
538# CONFIG_NS83820 is not set
539# CONFIG_HAMACHI is not set
540# CONFIG_YELLOWFIN is not set
541# CONFIG_R8169 is not set
542# CONFIG_SIS190 is not set
543# CONFIG_SKGE is not set
544# CONFIG_SKY2 is not set
545# CONFIG_VIA_VELOCITY is not set
546# CONFIG_TIGON3 is not set
547# CONFIG_BNX2 is not set
548# CONFIG_QLA3XXX is not set
549# CONFIG_ATL1 is not set
550# CONFIG_NETDEV_10000 is not set
551# CONFIG_TR is not set
552
553#
554# Wireless LAN
555#
556# CONFIG_WLAN_PRE80211 is not set
557# CONFIG_WLAN_80211 is not set
558# CONFIG_IWLWIFI_LEDS is not set
559# CONFIG_WAN is not set
560# CONFIG_FDDI is not set
561# CONFIG_HIPPI is not set
562# CONFIG_PPP is not set
563# CONFIG_SLIP is not set
564# CONFIG_NETCONSOLE is not set
565# CONFIG_NETPOLL is not set
566# CONFIG_NET_POLL_CONTROLLER is not set
567# CONFIG_ISDN is not set
568# CONFIG_PHONE is not set
569
570#
571# Input device support
572#
573CONFIG_INPUT=y
574# CONFIG_INPUT_FF_MEMLESS is not set
575# CONFIG_INPUT_POLLDEV is not set
576
577#
578# Userland interfaces
579#
580CONFIG_INPUT_MOUSEDEV=y
581CONFIG_INPUT_MOUSEDEV_PSAUX=y
582CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
583CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
584# CONFIG_INPUT_JOYDEV is not set
585# CONFIG_INPUT_EVDEV is not set
586# CONFIG_INPUT_EVBUG is not set
587
588#
589# Input Device Drivers
590#
591CONFIG_INPUT_KEYBOARD=y
592CONFIG_KEYBOARD_ATKBD=y
593# CONFIG_KEYBOARD_SUNKBD is not set
594# CONFIG_KEYBOARD_LKKBD is not set
595# CONFIG_KEYBOARD_XTKBD is not set
596# CONFIG_KEYBOARD_NEWTON is not set
597# CONFIG_KEYBOARD_STOWAWAY is not set
598CONFIG_INPUT_MOUSE=y
599CONFIG_MOUSE_PS2=y
600CONFIG_MOUSE_PS2_ALPS=y
601CONFIG_MOUSE_PS2_LOGIPS2PP=y
602CONFIG_MOUSE_PS2_SYNAPTICS=y
603CONFIG_MOUSE_PS2_LIFEBOOK=y
604CONFIG_MOUSE_PS2_TRACKPOINT=y
605# CONFIG_MOUSE_PS2_TOUCHKIT is not set
606# CONFIG_MOUSE_SERIAL is not set
607# CONFIG_MOUSE_VSXXXAA is not set
608# CONFIG_INPUT_JOYSTICK is not set
609# CONFIG_INPUT_TABLET is not set
610# CONFIG_INPUT_TOUCHSCREEN is not set
611# CONFIG_INPUT_MISC is not set
612
613#
614# Hardware I/O ports
615#
616CONFIG_SERIO=y
617# CONFIG_SERIO_I8042 is not set
618CONFIG_SERIO_SERPORT=y
619# CONFIG_SERIO_PCIPS2 is not set
620CONFIG_SERIO_LIBPS2=y
621# CONFIG_SERIO_RAW is not set
622# CONFIG_GAMEPORT is not set
623
624#
625# Character devices
626#
627CONFIG_VT=y
628CONFIG_VT_CONSOLE=y
629CONFIG_HW_CONSOLE=y
630# CONFIG_VT_HW_CONSOLE_BINDING is not set
631CONFIG_DEVKMEM=y
632# CONFIG_SERIAL_NONSTANDARD is not set
633# CONFIG_NOZOMI is not set
634
635#
636# Serial drivers
637#
638CONFIG_SERIAL_8250=y
639CONFIG_SERIAL_8250_CONSOLE=y
640CONFIG_SERIAL_8250_PCI=y
641CONFIG_SERIAL_8250_NR_UARTS=4
642CONFIG_SERIAL_8250_RUNTIME_UARTS=4
643# CONFIG_SERIAL_8250_EXTENDED is not set
644
645#
646# Non-8250 serial port support
647#
648# CONFIG_SERIAL_UARTLITE is not set
649CONFIG_SERIAL_CORE=y
650CONFIG_SERIAL_CORE_CONSOLE=y
651# CONFIG_SERIAL_JSM is not set
652CONFIG_SERIAL_OF_PLATFORM=y
653CONFIG_UNIX98_PTYS=y
654CONFIG_LEGACY_PTYS=y
655CONFIG_LEGACY_PTY_COUNT=256
656# CONFIG_IPMI_HANDLER is not set
657CONFIG_HW_RANDOM=m
658# CONFIG_NVRAM is not set
659# CONFIG_GEN_RTC is not set
660CONFIG_XILINX_HWICAP=y
661# CONFIG_R3964 is not set
662# CONFIG_APPLICOM is not set
663# CONFIG_RAW_DRIVER is not set
664# CONFIG_TCG_TPM is not set
665CONFIG_DEVPORT=y
666CONFIG_I2C=y
667CONFIG_I2C_BOARDINFO=y
668CONFIG_I2C_CHARDEV=y
669
670#
671# I2C Hardware Bus support
672#
673# CONFIG_I2C_ALI1535 is not set
674# CONFIG_I2C_ALI1563 is not set
675# CONFIG_I2C_ALI15X3 is not set
676# CONFIG_I2C_AMD756 is not set
677# CONFIG_I2C_AMD8111 is not set
678# CONFIG_I2C_I801 is not set
679# CONFIG_I2C_I810 is not set
680# CONFIG_I2C_PIIX4 is not set
681# CONFIG_I2C_IBM_IIC is not set
682# CONFIG_I2C_MPC is not set
683# CONFIG_I2C_NFORCE2 is not set
684# CONFIG_I2C_OCORES is not set
685# CONFIG_I2C_PARPORT_LIGHT is not set
686# CONFIG_I2C_PROSAVAGE is not set
687# CONFIG_I2C_SAVAGE4 is not set
688# CONFIG_I2C_SIMTEC is not set
689# CONFIG_I2C_SIS5595 is not set
690# CONFIG_I2C_SIS630 is not set
691# CONFIG_I2C_SIS96X is not set
692# CONFIG_I2C_TAOS_EVM is not set
693# CONFIG_I2C_STUB is not set
694# CONFIG_I2C_VIA is not set
695# CONFIG_I2C_VIAPRO is not set
696# CONFIG_I2C_VOODOO3 is not set
697# CONFIG_I2C_PCA_PLATFORM is not set
698
699#
700# Miscellaneous I2C Chip support
701#
702# CONFIG_DS1682 is not set
703# CONFIG_SENSORS_EEPROM is not set
704# CONFIG_SENSORS_PCF8574 is not set
705# CONFIG_PCF8575 is not set
706# CONFIG_SENSORS_PCF8591 is not set
707# CONFIG_SENSORS_MAX6875 is not set
708# CONFIG_SENSORS_TSL2550 is not set
709CONFIG_I2C_DEBUG_CORE=y
710CONFIG_I2C_DEBUG_ALGO=y
711# CONFIG_I2C_DEBUG_BUS is not set
712# CONFIG_I2C_DEBUG_CHIP is not set
713# CONFIG_SPI is not set
714# CONFIG_W1 is not set
715# CONFIG_POWER_SUPPLY is not set
716# CONFIG_HWMON is not set
717# CONFIG_THERMAL is not set
718# CONFIG_WATCHDOG is not set
719
720#
721# Sonics Silicon Backplane
722#
723CONFIG_SSB_POSSIBLE=y
724# CONFIG_SSB is not set
725
726#
727# Multifunction device drivers
728#
729# CONFIG_MFD_SM501 is not set
730# CONFIG_HTC_PASIC3 is not set
731
732#
733# Multimedia devices
734#
735
736#
737# Multimedia core support
738#
739# CONFIG_VIDEO_DEV is not set
740# CONFIG_DVB_CORE is not set
741# CONFIG_VIDEO_MEDIA is not set
742
743#
744# Multimedia drivers
745#
746# CONFIG_DAB is not set
747
748#
749# Graphics support
750#
751# CONFIG_AGP is not set
752# CONFIG_DRM is not set
753# CONFIG_VGASTATE is not set
754# CONFIG_VIDEO_OUTPUT_CONTROL is not set
755CONFIG_FB=y
756# CONFIG_FIRMWARE_EDID is not set
757# CONFIG_FB_DDC is not set
758CONFIG_FB_CFB_FILLRECT=y
759CONFIG_FB_CFB_COPYAREA=y
760CONFIG_FB_CFB_IMAGEBLIT=y
761# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
762# CONFIG_FB_SYS_FILLRECT is not set
763# CONFIG_FB_SYS_COPYAREA is not set
764# CONFIG_FB_SYS_IMAGEBLIT is not set
765# CONFIG_FB_FOREIGN_ENDIAN is not set
766# CONFIG_FB_SYS_FOPS is not set
767# CONFIG_FB_SVGALIB is not set
768# CONFIG_FB_MACMODES is not set
769# CONFIG_FB_BACKLIGHT is not set
770# CONFIG_FB_MODE_HELPERS is not set
771# CONFIG_FB_TILEBLITTING is not set
772
773#
774# Frame buffer hardware drivers
775#
776# CONFIG_FB_CIRRUS is not set
777# CONFIG_FB_PM2 is not set
778# CONFIG_FB_CYBER2000 is not set
779# CONFIG_FB_OF is not set
780# CONFIG_FB_CT65550 is not set
781# CONFIG_FB_ASILIANT is not set
782# CONFIG_FB_IMSTT is not set
783# CONFIG_FB_VGA16 is not set
784# CONFIG_FB_S1D13XXX is not set
785# CONFIG_FB_NVIDIA is not set
786# CONFIG_FB_RIVA is not set
787# CONFIG_FB_MATROX is not set
788# CONFIG_FB_RADEON is not set
789# CONFIG_FB_ATY128 is not set
790# CONFIG_FB_ATY is not set
791# CONFIG_FB_S3 is not set
792# CONFIG_FB_SAVAGE is not set
793# CONFIG_FB_SIS is not set
794# CONFIG_FB_NEOMAGIC is not set
795# CONFIG_FB_KYRO is not set
796# CONFIG_FB_3DFX is not set
797# CONFIG_FB_VOODOO1 is not set
798# CONFIG_FB_VT8623 is not set
799# CONFIG_FB_TRIDENT is not set
800# CONFIG_FB_ARK is not set
801# CONFIG_FB_PM3 is not set
802# CONFIG_FB_IBM_GXT4500 is not set
803CONFIG_FB_XILINX=y
804# CONFIG_FB_VIRTUAL is not set
805# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
806
807#
808# Display device support
809#
810# CONFIG_DISPLAY_SUPPORT is not set
811
812#
813# Console display driver support
814#
815CONFIG_DUMMY_CONSOLE=y
816CONFIG_FRAMEBUFFER_CONSOLE=y
817# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
818# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
819CONFIG_FONTS=y
820CONFIG_FONT_8x8=y
821CONFIG_FONT_8x16=y
822# CONFIG_FONT_6x11 is not set
823# CONFIG_FONT_7x14 is not set
824# CONFIG_FONT_PEARL_8x8 is not set
825# CONFIG_FONT_ACORN_8x8 is not set
826# CONFIG_FONT_MINI_4x6 is not set
827# CONFIG_FONT_SUN8x16 is not set
828# CONFIG_FONT_SUN12x22 is not set
829# CONFIG_FONT_10x18 is not set
830CONFIG_LOGO=y
831CONFIG_LOGO_LINUX_MONO=y
832CONFIG_LOGO_LINUX_VGA16=y
833CONFIG_LOGO_LINUX_CLUT224=y
834
835#
836# Sound
837#
838# CONFIG_SOUND is not set
839# CONFIG_HID_SUPPORT is not set
840# CONFIG_USB_SUPPORT is not set
841# CONFIG_MMC is not set
842# CONFIG_MEMSTICK is not set
843# CONFIG_NEW_LEDS is not set
844# CONFIG_ACCESSIBILITY is not set
845# CONFIG_INFINIBAND is not set
846# CONFIG_EDAC is not set
847# CONFIG_RTC_CLASS is not set
848# CONFIG_DMADEVICES is not set
849# CONFIG_UIO is not set
850
851#
852# File systems
853#
854CONFIG_EXT2_FS=y
855# CONFIG_EXT2_FS_XATTR is not set
856# CONFIG_EXT2_FS_XIP is not set
857# CONFIG_EXT3_FS is not set
858# CONFIG_EXT4DEV_FS is not set
859# CONFIG_REISERFS_FS is not set
860# CONFIG_JFS_FS is not set
861# CONFIG_FS_POSIX_ACL is not set
862# CONFIG_XFS_FS is not set
863# CONFIG_OCFS2_FS is not set
864CONFIG_DNOTIFY=y
865CONFIG_INOTIFY=y
866CONFIG_INOTIFY_USER=y
867# CONFIG_QUOTA is not set
868CONFIG_AUTOFS_FS=y
869CONFIG_AUTOFS4_FS=y
870CONFIG_FUSE_FS=m
871
872#
873# CD-ROM/DVD Filesystems
874#
875# CONFIG_ISO9660_FS is not set
876# CONFIG_UDF_FS is not set
877
878#
879# DOS/FAT/NT Filesystems
880#
881CONFIG_FAT_FS=y
882CONFIG_MSDOS_FS=y
883CONFIG_VFAT_FS=y
884CONFIG_FAT_DEFAULT_CODEPAGE=437
885CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
886# CONFIG_NTFS_FS is not set
887
888#
889# Pseudo filesystems
890#
891CONFIG_PROC_FS=y
892# CONFIG_PROC_KCORE is not set
893CONFIG_PROC_SYSCTL=y
894CONFIG_SYSFS=y
895CONFIG_TMPFS=y
896# CONFIG_TMPFS_POSIX_ACL is not set
897# CONFIG_HUGETLB_PAGE is not set
898# CONFIG_CONFIGFS_FS is not set
899
900#
901# Miscellaneous filesystems
902#
903# CONFIG_ADFS_FS is not set
904# CONFIG_AFFS_FS is not set
905# CONFIG_HFS_FS is not set
906# CONFIG_HFSPLUS_FS is not set
907# CONFIG_BEFS_FS is not set
908# CONFIG_BFS_FS is not set
909# CONFIG_EFS_FS is not set
910CONFIG_CRAMFS=y
911# CONFIG_VXFS_FS is not set
912# CONFIG_MINIX_FS is not set
913# CONFIG_HPFS_FS is not set
914# CONFIG_QNX4FS_FS is not set
915CONFIG_ROMFS_FS=y
916# CONFIG_SYSV_FS is not set
917# CONFIG_UFS_FS is not set
918CONFIG_NETWORK_FILESYSTEMS=y
919CONFIG_NFS_FS=y
920CONFIG_NFS_V3=y
921# CONFIG_NFS_V3_ACL is not set
922# CONFIG_NFS_V4 is not set
923CONFIG_NFSD=y
924CONFIG_NFSD_V3=y
925# CONFIG_NFSD_V3_ACL is not set
926# CONFIG_NFSD_V4 is not set
927CONFIG_ROOT_NFS=y
928CONFIG_LOCKD=y
929CONFIG_LOCKD_V4=y
930CONFIG_EXPORTFS=y
931CONFIG_NFS_COMMON=y
932CONFIG_SUNRPC=y
933# CONFIG_SUNRPC_BIND34 is not set
934# CONFIG_RPCSEC_GSS_KRB5 is not set
935# CONFIG_RPCSEC_GSS_SPKM3 is not set
936CONFIG_SMB_FS=y
937# CONFIG_SMB_NLS_DEFAULT is not set
938# CONFIG_CIFS is not set
939# CONFIG_NCP_FS is not set
940# CONFIG_CODA_FS is not set
941# CONFIG_AFS_FS is not set
942
943#
944# Partition Types
945#
946# CONFIG_PARTITION_ADVANCED is not set
947CONFIG_MSDOS_PARTITION=y
948CONFIG_NLS=y
949CONFIG_NLS_DEFAULT="iso8859-1"
950CONFIG_NLS_CODEPAGE_437=y
951# CONFIG_NLS_CODEPAGE_737 is not set
952# CONFIG_NLS_CODEPAGE_775 is not set
953# CONFIG_NLS_CODEPAGE_850 is not set
954# CONFIG_NLS_CODEPAGE_852 is not set
955# CONFIG_NLS_CODEPAGE_855 is not set
956# CONFIG_NLS_CODEPAGE_857 is not set
957# CONFIG_NLS_CODEPAGE_860 is not set
958# CONFIG_NLS_CODEPAGE_861 is not set
959# CONFIG_NLS_CODEPAGE_862 is not set
960# CONFIG_NLS_CODEPAGE_863 is not set
961# CONFIG_NLS_CODEPAGE_864 is not set
962# CONFIG_NLS_CODEPAGE_865 is not set
963# CONFIG_NLS_CODEPAGE_866 is not set
964# CONFIG_NLS_CODEPAGE_869 is not set
965# CONFIG_NLS_CODEPAGE_936 is not set
966# CONFIG_NLS_CODEPAGE_950 is not set
967# CONFIG_NLS_CODEPAGE_932 is not set
968# CONFIG_NLS_CODEPAGE_949 is not set
969# CONFIG_NLS_CODEPAGE_874 is not set
970# CONFIG_NLS_ISO8859_8 is not set
971# CONFIG_NLS_CODEPAGE_1250 is not set
972# CONFIG_NLS_CODEPAGE_1251 is not set
973CONFIG_NLS_ASCII=m
974CONFIG_NLS_ISO8859_1=m
975# CONFIG_NLS_ISO8859_2 is not set
976# CONFIG_NLS_ISO8859_3 is not set
977# CONFIG_NLS_ISO8859_4 is not set
978# CONFIG_NLS_ISO8859_5 is not set
979# CONFIG_NLS_ISO8859_6 is not set
980# CONFIG_NLS_ISO8859_7 is not set
981# CONFIG_NLS_ISO8859_9 is not set
982# CONFIG_NLS_ISO8859_13 is not set
983# CONFIG_NLS_ISO8859_14 is not set
984# CONFIG_NLS_ISO8859_15 is not set
985# CONFIG_NLS_KOI8_R is not set
986# CONFIG_NLS_KOI8_U is not set
987CONFIG_NLS_UTF8=m
988# CONFIG_DLM is not set
989
990#
991# Library routines
992#
993CONFIG_BITREVERSE=y
994# CONFIG_GENERIC_FIND_FIRST_BIT is not set
995CONFIG_CRC_CCITT=y
996# CONFIG_CRC16 is not set
997# CONFIG_CRC_ITU_T is not set
998CONFIG_CRC32=y
999# CONFIG_CRC7 is not set
1000# CONFIG_LIBCRC32C is not set
1001CONFIG_ZLIB_INFLATE=y
1002CONFIG_PLIST=y
1003CONFIG_HAS_IOMEM=y
1004CONFIG_HAS_IOPORT=y
1005CONFIG_HAS_DMA=y
1006CONFIG_HAVE_LMB=y
1007
1008#
1009# Kernel hacking
1010#
1011# CONFIG_PRINTK_TIME is not set
1012CONFIG_ENABLE_WARN_DEPRECATED=y
1013CONFIG_ENABLE_MUST_CHECK=y
1014CONFIG_FRAME_WARN=1024
1015# CONFIG_MAGIC_SYSRQ is not set
1016# CONFIG_UNUSED_SYMBOLS is not set
1017# CONFIG_DEBUG_FS is not set
1018# CONFIG_HEADERS_CHECK is not set
1019# CONFIG_DEBUG_KERNEL is not set
1020CONFIG_DEBUG_BUGVERBOSE=y
1021# CONFIG_SAMPLES is not set
1022# CONFIG_IRQSTACKS is not set
1023# CONFIG_PPC_EARLY_DEBUG is not set
1024
1025#
1026# Security options
1027#
1028# CONFIG_KEYS is not set
1029# CONFIG_SECURITY is not set
1030# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1031CONFIG_CRYPTO=y
1032
1033#
1034# Crypto core or helper
1035#
1036# CONFIG_CRYPTO_MANAGER is not set
1037# CONFIG_CRYPTO_GF128MUL is not set
1038# CONFIG_CRYPTO_NULL is not set
1039# CONFIG_CRYPTO_CRYPTD is not set
1040# CONFIG_CRYPTO_AUTHENC is not set
1041# CONFIG_CRYPTO_TEST is not set
1042
1043#
1044# Authenticated Encryption with Associated Data
1045#
1046# CONFIG_CRYPTO_CCM is not set
1047# CONFIG_CRYPTO_GCM is not set
1048# CONFIG_CRYPTO_SEQIV is not set
1049
1050#
1051# Block modes
1052#
1053# CONFIG_CRYPTO_CBC is not set
1054# CONFIG_CRYPTO_CTR is not set
1055# CONFIG_CRYPTO_CTS is not set
1056# CONFIG_CRYPTO_ECB is not set
1057# CONFIG_CRYPTO_LRW is not set
1058# CONFIG_CRYPTO_PCBC is not set
1059# CONFIG_CRYPTO_XTS is not set
1060
1061#
1062# Hash modes
1063#
1064# CONFIG_CRYPTO_HMAC is not set
1065# CONFIG_CRYPTO_XCBC is not set
1066
1067#
1068# Digest
1069#
1070# CONFIG_CRYPTO_CRC32C is not set
1071# CONFIG_CRYPTO_MD4 is not set
1072# CONFIG_CRYPTO_MD5 is not set
1073# CONFIG_CRYPTO_MICHAEL_MIC is not set
1074# CONFIG_CRYPTO_SHA1 is not set
1075# CONFIG_CRYPTO_SHA256 is not set
1076# CONFIG_CRYPTO_SHA512 is not set
1077# CONFIG_CRYPTO_TGR192 is not set
1078# CONFIG_CRYPTO_WP512 is not set
1079
1080#
1081# Ciphers
1082#
1083# CONFIG_CRYPTO_AES is not set
1084# CONFIG_CRYPTO_ANUBIS is not set
1085# CONFIG_CRYPTO_ARC4 is not set
1086# CONFIG_CRYPTO_BLOWFISH is not set
1087# CONFIG_CRYPTO_CAMELLIA is not set
1088# CONFIG_CRYPTO_CAST5 is not set
1089# CONFIG_CRYPTO_CAST6 is not set
1090# CONFIG_CRYPTO_DES is not set
1091# CONFIG_CRYPTO_FCRYPT is not set
1092# CONFIG_CRYPTO_KHAZAD is not set
1093# CONFIG_CRYPTO_SALSA20 is not set
1094# CONFIG_CRYPTO_SEED is not set
1095# CONFIG_CRYPTO_SERPENT is not set
1096# CONFIG_CRYPTO_TEA is not set
1097# CONFIG_CRYPTO_TWOFISH is not set
1098
1099#
1100# Compression
1101#
1102# CONFIG_CRYPTO_DEFLATE is not set
1103# CONFIG_CRYPTO_LZO is not set
1104CONFIG_CRYPTO_HW=y
1105# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1106# CONFIG_PPC_CLOCK is not set
1107# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/ppc44x_defconfig b/arch/powerpc/configs/ppc44x_defconfig
index 12f9b5a8022..f9d279bb700 100644
--- a/arch/powerpc/configs/ppc44x_defconfig
+++ b/arch/powerpc/configs/ppc44x_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.25-rc6 3# Linux kernel version: 2.6.26-rc8
4# Sat Apr 5 09:35:48 2008 4# Wed Jul 9 13:50:48 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set 33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y 34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
35CONFIG_RWSEM_XCHGADD_ALGORITHM=y 37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
36CONFIG_ARCH_HAS_ILOG2_U32=y 38CONFIG_ARCH_HAS_ILOG2_U32=y
37CONFIG_GENERIC_HWEIGHT=y 39CONFIG_GENERIC_HWEIGHT=y
@@ -88,6 +90,7 @@ CONFIG_INITRAMFS_SOURCE=""
88CONFIG_SYSCTL=y 90CONFIG_SYSCTL=y
89CONFIG_EMBEDDED=y 91CONFIG_EMBEDDED=y
90CONFIG_SYSCTL_SYSCALL=y 92CONFIG_SYSCTL_SYSCALL=y
93CONFIG_SYSCTL_SYSCALL_CHECK=y
91CONFIG_KALLSYMS=y 94CONFIG_KALLSYMS=y
92CONFIG_KALLSYMS_ALL=y 95CONFIG_KALLSYMS_ALL=y
93CONFIG_KALLSYMS_EXTRA_PASS=y 96CONFIG_KALLSYMS_EXTRA_PASS=y
@@ -115,12 +118,14 @@ CONFIG_HAVE_OPROFILE=y
115# CONFIG_KPROBES is not set 118# CONFIG_KPROBES is not set
116CONFIG_HAVE_KPROBES=y 119CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y 120CONFIG_HAVE_KRETPROBES=y
121# CONFIG_HAVE_DMA_ATTRS is not set
118CONFIG_PROC_PAGE_MONITOR=y 122CONFIG_PROC_PAGE_MONITOR=y
119CONFIG_SLABINFO=y 123CONFIG_SLABINFO=y
120CONFIG_RT_MUTEXES=y 124CONFIG_RT_MUTEXES=y
121# CONFIG_TINY_SHMEM is not set 125# CONFIG_TINY_SHMEM is not set
122CONFIG_BASE_SMALL=0 126CONFIG_BASE_SMALL=0
123CONFIG_MODULES=y 127CONFIG_MODULES=y
128# CONFIG_MODULE_FORCE_LOAD is not set
124CONFIG_MODULE_UNLOAD=y 129CONFIG_MODULE_UNLOAD=y
125# CONFIG_MODULE_FORCE_UNLOAD is not set 130# CONFIG_MODULE_FORCE_UNLOAD is not set
126# CONFIG_MODVERSIONS is not set 131# CONFIG_MODVERSIONS is not set
@@ -157,6 +162,7 @@ CONFIG_PPC4xx_PCI_EXPRESS=y
157# CONFIG_PQ2ADS is not set 162# CONFIG_PQ2ADS is not set
158CONFIG_BAMBOO=y 163CONFIG_BAMBOO=y
159CONFIG_EBONY=y 164CONFIG_EBONY=y
165CONFIG_SAM440EP=y
160CONFIG_SEQUOIA=y 166CONFIG_SEQUOIA=y
161CONFIG_TAISHAN=y 167CONFIG_TAISHAN=y
162CONFIG_KATMAI=y 168CONFIG_KATMAI=y
@@ -164,6 +170,7 @@ CONFIG_RAINIER=y
164CONFIG_WARP=y 170CONFIG_WARP=y
165CONFIG_CANYONLANDS=y 171CONFIG_CANYONLANDS=y
166CONFIG_YOSEMITE=y 172CONFIG_YOSEMITE=y
173CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y
167CONFIG_440EP=y 174CONFIG_440EP=y
168CONFIG_440EPX=y 175CONFIG_440EPX=y
169CONFIG_440GRX=y 176CONFIG_440GRX=y
@@ -172,6 +179,8 @@ CONFIG_440GX=y
172CONFIG_440SPe=y 179CONFIG_440SPe=y
173CONFIG_460EX=y 180CONFIG_460EX=y
174CONFIG_IBM440EP_ERR42=y 181CONFIG_IBM440EP_ERR42=y
182CONFIG_XILINX_VIRTEX=y
183CONFIG_XILINX_VIRTEX_5_FXT=y
175# CONFIG_IPIC is not set 184# CONFIG_IPIC is not set
176# CONFIG_MPIC is not set 185# CONFIG_MPIC is not set
177# CONFIG_MPIC_WEIRD is not set 186# CONFIG_MPIC_WEIRD is not set
@@ -220,13 +229,16 @@ CONFIG_FLATMEM=y
220CONFIG_FLAT_NODE_MEM_MAP=y 229CONFIG_FLAT_NODE_MEM_MAP=y
221# CONFIG_SPARSEMEM_STATIC is not set 230# CONFIG_SPARSEMEM_STATIC is not set
222# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set 231# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
232CONFIG_PAGEFLAGS_EXTENDED=y
223CONFIG_SPLIT_PTLOCK_CPUS=4 233CONFIG_SPLIT_PTLOCK_CPUS=4
224CONFIG_RESOURCES_64BIT=y 234CONFIG_RESOURCES_64BIT=y
225CONFIG_ZONE_DMA_FLAG=1 235CONFIG_ZONE_DMA_FLAG=1
226CONFIG_BOUNCE=y 236CONFIG_BOUNCE=y
227CONFIG_VIRT_TO_BUS=y 237CONFIG_VIRT_TO_BUS=y
238CONFIG_FORCE_MAX_ZONEORDER=11
228CONFIG_PROC_DEVICETREE=y 239CONFIG_PROC_DEVICETREE=y
229# CONFIG_CMDLINE_BOOL is not set 240# CONFIG_CMDLINE_BOOL is not set
241CONFIG_EXTRA_TARGETS=""
230CONFIG_SECCOMP=y 242CONFIG_SECCOMP=y
231CONFIG_ISA_DMA_API=y 243CONFIG_ISA_DMA_API=y
232 244
@@ -246,6 +258,7 @@ CONFIG_PCI_LEGACY=y
246# CONFIG_PCI_DEBUG is not set 258# CONFIG_PCI_DEBUG is not set
247# CONFIG_PCCARD is not set 259# CONFIG_PCCARD is not set
248# CONFIG_HOTPLUG_PCI is not set 260# CONFIG_HOTPLUG_PCI is not set
261# CONFIG_HAS_RAPIDIO is not set
249 262
250# 263#
251# Advanced setup 264# Advanced setup
@@ -255,13 +268,13 @@ CONFIG_PCI_LEGACY=y
255# 268#
256# Default settings for advanced configuration options are used 269# Default settings for advanced configuration options are used
257# 270#
258CONFIG_HIGHMEM_START=0xfe000000
259CONFIG_LOWMEM_SIZE=0x30000000 271CONFIG_LOWMEM_SIZE=0x30000000
272CONFIG_PAGE_OFFSET=0xc0000000
260CONFIG_KERNEL_START=0xc0000000 273CONFIG_KERNEL_START=0xc0000000
274CONFIG_PHYSICAL_START=0x00000000
261CONFIG_TASK_SIZE=0xc0000000 275CONFIG_TASK_SIZE=0xc0000000
262CONFIG_CONSISTENT_START=0xff100000 276CONFIG_CONSISTENT_START=0xff100000
263CONFIG_CONSISTENT_SIZE=0x00200000 277CONFIG_CONSISTENT_SIZE=0x00200000
264CONFIG_BOOT_LOAD=0x01000000
265 278
266# 279#
267# Networking 280# Networking
@@ -303,8 +316,6 @@ CONFIG_TCP_CONG_CUBIC=y
303CONFIG_DEFAULT_TCP_CONG="cubic" 316CONFIG_DEFAULT_TCP_CONG="cubic"
304# CONFIG_TCP_MD5SIG is not set 317# CONFIG_TCP_MD5SIG is not set
305# CONFIG_IPV6 is not set 318# CONFIG_IPV6 is not set
306# CONFIG_INET6_XFRM_TUNNEL is not set
307# CONFIG_INET6_TUNNEL is not set
308# CONFIG_NETWORK_SECMARK is not set 319# CONFIG_NETWORK_SECMARK is not set
309# CONFIG_NETFILTER is not set 320# CONFIG_NETFILTER is not set
310# CONFIG_IP_DCCP is not set 321# CONFIG_IP_DCCP is not set
@@ -366,6 +377,7 @@ CONFIG_MTD_PARTITIONS=y
366# CONFIG_MTD_REDBOOT_PARTS is not set 377# CONFIG_MTD_REDBOOT_PARTS is not set
367# CONFIG_MTD_CMDLINE_PARTS is not set 378# CONFIG_MTD_CMDLINE_PARTS is not set
368CONFIG_MTD_OF_PARTS=y 379CONFIG_MTD_OF_PARTS=y
380# CONFIG_MTD_AR7_PARTS is not set
369 381
370# 382#
371# User Modules And Translation Layers 383# User Modules And Translation Layers
@@ -478,6 +490,10 @@ CONFIG_HAVE_IDE=y
478# 490#
479# IEEE 1394 (FireWire) support 491# IEEE 1394 (FireWire) support
480# 492#
493
494#
495# Enable only one of the two stacks, unless you know what you are doing
496#
481# CONFIG_FIREWIRE is not set 497# CONFIG_FIREWIRE is not set
482# CONFIG_IEEE1394 is not set 498# CONFIG_IEEE1394 is not set
483# CONFIG_I2O is not set 499# CONFIG_I2O is not set
@@ -528,7 +544,6 @@ CONFIG_NETDEV_1000=y
528# CONFIG_SIS190 is not set 544# CONFIG_SIS190 is not set
529# CONFIG_SKGE is not set 545# CONFIG_SKGE is not set
530# CONFIG_SKY2 is not set 546# CONFIG_SKY2 is not set
531# CONFIG_SK98LIN is not set
532# CONFIG_VIA_VELOCITY is not set 547# CONFIG_VIA_VELOCITY is not set
533# CONFIG_TIGON3 is not set 548# CONFIG_TIGON3 is not set
534# CONFIG_BNX2 is not set 549# CONFIG_BNX2 is not set
@@ -546,6 +561,7 @@ CONFIG_NETDEV_10000=y
546# CONFIG_MLX4_CORE is not set 561# CONFIG_MLX4_CORE is not set
547# CONFIG_TEHUTI is not set 562# CONFIG_TEHUTI is not set
548# CONFIG_BNX2X is not set 563# CONFIG_BNX2X is not set
564# CONFIG_SFC is not set
549# CONFIG_TR is not set 565# CONFIG_TR is not set
550 566
551# 567#
@@ -553,6 +569,7 @@ CONFIG_NETDEV_10000=y
553# 569#
554# CONFIG_WLAN_PRE80211 is not set 570# CONFIG_WLAN_PRE80211 is not set
555# CONFIG_WLAN_80211 is not set 571# CONFIG_WLAN_80211 is not set
572# CONFIG_IWLWIFI_LEDS is not set
556# CONFIG_WAN is not set 573# CONFIG_WAN is not set
557# CONFIG_FDDI is not set 574# CONFIG_FDDI is not set
558# CONFIG_HIPPI is not set 575# CONFIG_HIPPI is not set
@@ -579,6 +596,7 @@ CONFIG_NETDEV_10000=y
579# Character devices 596# Character devices
580# 597#
581# CONFIG_VT is not set 598# CONFIG_VT is not set
599CONFIG_DEVKMEM=y
582# CONFIG_SERIAL_NONSTANDARD is not set 600# CONFIG_SERIAL_NONSTANDARD is not set
583# CONFIG_NOZOMI is not set 601# CONFIG_NOZOMI is not set
584 602
@@ -611,22 +629,19 @@ CONFIG_LEGACY_PTY_COUNT=256
611# CONFIG_HW_RANDOM is not set 629# CONFIG_HW_RANDOM is not set
612# CONFIG_NVRAM is not set 630# CONFIG_NVRAM is not set
613# CONFIG_GEN_RTC is not set 631# CONFIG_GEN_RTC is not set
632CONFIG_XILINX_HWICAP=m
614# CONFIG_R3964 is not set 633# CONFIG_R3964 is not set
615# CONFIG_APPLICOM is not set 634# CONFIG_APPLICOM is not set
616# CONFIG_RAW_DRIVER is not set 635# CONFIG_RAW_DRIVER is not set
617# CONFIG_TCG_TPM is not set 636# CONFIG_TCG_TPM is not set
618CONFIG_DEVPORT=y 637CONFIG_DEVPORT=y
619# CONFIG_I2C is not set 638# CONFIG_I2C is not set
620
621#
622# SPI support
623#
624# CONFIG_SPI is not set 639# CONFIG_SPI is not set
625# CONFIG_SPI_MASTER is not set
626# CONFIG_W1 is not set 640# CONFIG_W1 is not set
627# CONFIG_POWER_SUPPLY is not set 641# CONFIG_POWER_SUPPLY is not set
628# CONFIG_HWMON is not set 642# CONFIG_HWMON is not set
629# CONFIG_THERMAL is not set 643# CONFIG_THERMAL is not set
644# CONFIG_THERMAL_HWMON is not set
630# CONFIG_WATCHDOG is not set 645# CONFIG_WATCHDOG is not set
631 646
632# 647#
@@ -639,12 +654,22 @@ CONFIG_SSB_POSSIBLE=y
639# Multifunction device drivers 654# Multifunction device drivers
640# 655#
641# CONFIG_MFD_SM501 is not set 656# CONFIG_MFD_SM501 is not set
657# CONFIG_HTC_PASIC3 is not set
642 658
643# 659#
644# Multimedia devices 660# Multimedia devices
645# 661#
662
663#
664# Multimedia core support
665#
646# CONFIG_VIDEO_DEV is not set 666# CONFIG_VIDEO_DEV is not set
647# CONFIG_DVB_CORE is not set 667# CONFIG_DVB_CORE is not set
668# CONFIG_VIDEO_MEDIA is not set
669
670#
671# Multimedia drivers
672#
648# CONFIG_DAB is not set 673# CONFIG_DAB is not set
649 674
650# 675#
@@ -671,6 +696,8 @@ CONFIG_USB_ARCH_HAS_HCD=y
671CONFIG_USB_ARCH_HAS_OHCI=y 696CONFIG_USB_ARCH_HAS_OHCI=y
672CONFIG_USB_ARCH_HAS_EHCI=y 697CONFIG_USB_ARCH_HAS_EHCI=y
673# CONFIG_USB is not set 698# CONFIG_USB is not set
699# CONFIG_USB_OTG_WHITELIST is not set
700# CONFIG_USB_OTG_BLACKLIST_HUB is not set
674 701
675# 702#
676# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 703# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -679,14 +706,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y
679# CONFIG_MMC is not set 706# CONFIG_MMC is not set
680# CONFIG_MEMSTICK is not set 707# CONFIG_MEMSTICK is not set
681# CONFIG_NEW_LEDS is not set 708# CONFIG_NEW_LEDS is not set
709# CONFIG_ACCESSIBILITY is not set
682# CONFIG_INFINIBAND is not set 710# CONFIG_INFINIBAND is not set
683# CONFIG_EDAC is not set 711# CONFIG_EDAC is not set
684# CONFIG_RTC_CLASS is not set 712# CONFIG_RTC_CLASS is not set
685# CONFIG_DMADEVICES is not set 713# CONFIG_DMADEVICES is not set
686
687#
688# Userspace I/O
689#
690# CONFIG_UIO is not set 714# CONFIG_UIO is not set
691 715
692# 716#
@@ -701,7 +725,6 @@ CONFIG_EXT2_FS=y
701# CONFIG_JFS_FS is not set 725# CONFIG_JFS_FS is not set
702# CONFIG_FS_POSIX_ACL is not set 726# CONFIG_FS_POSIX_ACL is not set
703# CONFIG_XFS_FS is not set 727# CONFIG_XFS_FS is not set
704# CONFIG_GFS2_FS is not set
705# CONFIG_OCFS2_FS is not set 728# CONFIG_OCFS2_FS is not set
706CONFIG_DNOTIFY=y 729CONFIG_DNOTIFY=y
707CONFIG_INOTIFY=y 730CONFIG_INOTIFY=y
@@ -770,7 +793,6 @@ CONFIG_NFS_FS=y
770CONFIG_NFS_V3=y 793CONFIG_NFS_V3=y
771# CONFIG_NFS_V3_ACL is not set 794# CONFIG_NFS_V3_ACL is not set
772# CONFIG_NFS_V4 is not set 795# CONFIG_NFS_V4 is not set
773# CONFIG_NFS_DIRECTIO is not set
774# CONFIG_NFSD is not set 796# CONFIG_NFSD is not set
775CONFIG_ROOT_NFS=y 797CONFIG_ROOT_NFS=y
776CONFIG_LOCKD=y 798CONFIG_LOCKD=y
@@ -798,6 +820,7 @@ CONFIG_MSDOS_PARTITION=y
798# Library routines 820# Library routines
799# 821#
800CONFIG_BITREVERSE=y 822CONFIG_BITREVERSE=y
823# CONFIG_GENERIC_FIND_FIRST_BIT is not set
801# CONFIG_CRC_CCITT is not set 824# CONFIG_CRC_CCITT is not set
802# CONFIG_CRC16 is not set 825# CONFIG_CRC16 is not set
803# CONFIG_CRC_ITU_T is not set 826# CONFIG_CRC_ITU_T is not set
@@ -818,6 +841,7 @@ CONFIG_HAVE_LMB=y
818# CONFIG_PRINTK_TIME is not set 841# CONFIG_PRINTK_TIME is not set
819CONFIG_ENABLE_WARN_DEPRECATED=y 842CONFIG_ENABLE_WARN_DEPRECATED=y
820CONFIG_ENABLE_MUST_CHECK=y 843CONFIG_ENABLE_MUST_CHECK=y
844CONFIG_FRAME_WARN=1024
821CONFIG_MAGIC_SYSRQ=y 845CONFIG_MAGIC_SYSRQ=y
822# CONFIG_UNUSED_SYMBOLS is not set 846# CONFIG_UNUSED_SYMBOLS is not set
823# CONFIG_DEBUG_FS is not set 847# CONFIG_DEBUG_FS is not set
@@ -828,6 +852,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
828CONFIG_SCHED_DEBUG=y 852CONFIG_SCHED_DEBUG=y
829# CONFIG_SCHEDSTATS is not set 853# CONFIG_SCHEDSTATS is not set
830# CONFIG_TIMER_STATS is not set 854# CONFIG_TIMER_STATS is not set
855# CONFIG_DEBUG_OBJECTS is not set
831# CONFIG_SLUB_DEBUG_ON is not set 856# CONFIG_SLUB_DEBUG_ON is not set
832# CONFIG_SLUB_STATS is not set 857# CONFIG_SLUB_STATS is not set
833# CONFIG_DEBUG_RT_MUTEXES is not set 858# CONFIG_DEBUG_RT_MUTEXES is not set
@@ -840,6 +865,7 @@ CONFIG_SCHED_DEBUG=y
840CONFIG_DEBUG_BUGVERBOSE=y 865CONFIG_DEBUG_BUGVERBOSE=y
841# CONFIG_DEBUG_INFO is not set 866# CONFIG_DEBUG_INFO is not set
842# CONFIG_DEBUG_VM is not set 867# CONFIG_DEBUG_VM is not set
868# CONFIG_DEBUG_WRITECOUNT is not set
843# CONFIG_DEBUG_LIST is not set 869# CONFIG_DEBUG_LIST is not set
844# CONFIG_DEBUG_SG is not set 870# CONFIG_DEBUG_SG is not set
845# CONFIG_BOOT_PRINTK_DELAY is not set 871# CONFIG_BOOT_PRINTK_DELAY is not set
@@ -851,6 +877,9 @@ CONFIG_DEBUG_BUGVERBOSE=y
851# CONFIG_DEBUG_STACK_USAGE is not set 877# CONFIG_DEBUG_STACK_USAGE is not set
852# CONFIG_DEBUG_PAGEALLOC is not set 878# CONFIG_DEBUG_PAGEALLOC is not set
853# CONFIG_DEBUGGER is not set 879# CONFIG_DEBUGGER is not set
880# CONFIG_CODE_PATCHING_SELFTEST is not set
881# CONFIG_FTR_FIXUP_SELFTEST is not set
882# CONFIG_IRQSTACKS is not set
854# CONFIG_BDI_SWITCH is not set 883# CONFIG_BDI_SWITCH is not set
855# CONFIG_PPC_EARLY_DEBUG is not set 884# CONFIG_PPC_EARLY_DEBUG is not set
856 885
@@ -861,50 +890,80 @@ CONFIG_DEBUG_BUGVERBOSE=y
861# CONFIG_SECURITY is not set 890# CONFIG_SECURITY is not set
862# CONFIG_SECURITY_FILE_CAPABILITIES is not set 891# CONFIG_SECURITY_FILE_CAPABILITIES is not set
863CONFIG_CRYPTO=y 892CONFIG_CRYPTO=y
893
894#
895# Crypto core or helper
896#
864CONFIG_CRYPTO_ALGAPI=y 897CONFIG_CRYPTO_ALGAPI=y
865CONFIG_CRYPTO_BLKCIPHER=y 898CONFIG_CRYPTO_BLKCIPHER=y
866# CONFIG_CRYPTO_SEQIV is not set
867CONFIG_CRYPTO_MANAGER=y 899CONFIG_CRYPTO_MANAGER=y
900# CONFIG_CRYPTO_GF128MUL is not set
901# CONFIG_CRYPTO_NULL is not set
902# CONFIG_CRYPTO_CRYPTD is not set
903# CONFIG_CRYPTO_AUTHENC is not set
904# CONFIG_CRYPTO_TEST is not set
905
906#
907# Authenticated Encryption with Associated Data
908#
909# CONFIG_CRYPTO_CCM is not set
910# CONFIG_CRYPTO_GCM is not set
911# CONFIG_CRYPTO_SEQIV is not set
912
913#
914# Block modes
915#
916CONFIG_CRYPTO_CBC=y
917# CONFIG_CRYPTO_CTR is not set
918# CONFIG_CRYPTO_CTS is not set
919CONFIG_CRYPTO_ECB=y
920# CONFIG_CRYPTO_LRW is not set
921CONFIG_CRYPTO_PCBC=y
922# CONFIG_CRYPTO_XTS is not set
923
924#
925# Hash modes
926#
868# CONFIG_CRYPTO_HMAC is not set 927# CONFIG_CRYPTO_HMAC is not set
869# CONFIG_CRYPTO_XCBC is not set 928# CONFIG_CRYPTO_XCBC is not set
870# CONFIG_CRYPTO_NULL is not set 929
930#
931# Digest
932#
933# CONFIG_CRYPTO_CRC32C is not set
871# CONFIG_CRYPTO_MD4 is not set 934# CONFIG_CRYPTO_MD4 is not set
872CONFIG_CRYPTO_MD5=y 935CONFIG_CRYPTO_MD5=y
936# CONFIG_CRYPTO_MICHAEL_MIC is not set
873# CONFIG_CRYPTO_SHA1 is not set 937# CONFIG_CRYPTO_SHA1 is not set
874# CONFIG_CRYPTO_SHA256 is not set 938# CONFIG_CRYPTO_SHA256 is not set
875# CONFIG_CRYPTO_SHA512 is not set 939# CONFIG_CRYPTO_SHA512 is not set
876# CONFIG_CRYPTO_WP512 is not set
877# CONFIG_CRYPTO_TGR192 is not set 940# CONFIG_CRYPTO_TGR192 is not set
878# CONFIG_CRYPTO_GF128MUL is not set 941# CONFIG_CRYPTO_WP512 is not set
879CONFIG_CRYPTO_ECB=y 942
880CONFIG_CRYPTO_CBC=y 943#
881CONFIG_CRYPTO_PCBC=y 944# Ciphers
882# CONFIG_CRYPTO_LRW is not set 945#
883# CONFIG_CRYPTO_XTS is not set
884# CONFIG_CRYPTO_CTR is not set
885# CONFIG_CRYPTO_GCM is not set
886# CONFIG_CRYPTO_CCM is not set
887# CONFIG_CRYPTO_CRYPTD is not set
888CONFIG_CRYPTO_DES=y
889# CONFIG_CRYPTO_FCRYPT is not set
890# CONFIG_CRYPTO_BLOWFISH is not set
891# CONFIG_CRYPTO_TWOFISH is not set
892# CONFIG_CRYPTO_SERPENT is not set
893# CONFIG_CRYPTO_AES is not set 946# CONFIG_CRYPTO_AES is not set
947# CONFIG_CRYPTO_ANUBIS is not set
948# CONFIG_CRYPTO_ARC4 is not set
949# CONFIG_CRYPTO_BLOWFISH is not set
950# CONFIG_CRYPTO_CAMELLIA is not set
894# CONFIG_CRYPTO_CAST5 is not set 951# CONFIG_CRYPTO_CAST5 is not set
895# CONFIG_CRYPTO_CAST6 is not set 952# CONFIG_CRYPTO_CAST6 is not set
896# CONFIG_CRYPTO_TEA is not set 953CONFIG_CRYPTO_DES=y
897# CONFIG_CRYPTO_ARC4 is not set 954# CONFIG_CRYPTO_FCRYPT is not set
898# CONFIG_CRYPTO_KHAZAD is not set 955# CONFIG_CRYPTO_KHAZAD is not set
899# CONFIG_CRYPTO_ANUBIS is not set
900# CONFIG_CRYPTO_SEED is not set
901# CONFIG_CRYPTO_SALSA20 is not set 956# CONFIG_CRYPTO_SALSA20 is not set
957# CONFIG_CRYPTO_SEED is not set
958# CONFIG_CRYPTO_SERPENT is not set
959# CONFIG_CRYPTO_TEA is not set
960# CONFIG_CRYPTO_TWOFISH is not set
961
962#
963# Compression
964#
902# CONFIG_CRYPTO_DEFLATE is not set 965# CONFIG_CRYPTO_DEFLATE is not set
903# CONFIG_CRYPTO_MICHAEL_MIC is not set
904# CONFIG_CRYPTO_CRC32C is not set
905# CONFIG_CRYPTO_CAMELLIA is not set
906# CONFIG_CRYPTO_TEST is not set
907# CONFIG_CRYPTO_AUTHENC is not set
908# CONFIG_CRYPTO_LZO is not set 966# CONFIG_CRYPTO_LZO is not set
909# CONFIG_CRYPTO_HW is not set 967# CONFIG_CRYPTO_HW is not set
910# CONFIG_PPC_CLOCK is not set 968# CONFIG_PPC_CLOCK is not set
969# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 817cea1b5ad..72adb19a204 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -1447,6 +1447,16 @@ static struct cpu_spec __initdata cpu_specs[] = {
1447 .machine_check = machine_check_440A, 1447 .machine_check = machine_check_440A,
1448 .platform = "ppc440", 1448 .platform = "ppc440",
1449 }, 1449 },
1450 { /* 440 in Xilinx Virtex-5 FXT */
1451 .pvr_mask = 0xfffffff0,
1452 .pvr_value = 0x7ff21910,
1453 .cpu_name = "440 in Virtex-5 FXT",
1454 .cpu_features = CPU_FTRS_44X,
1455 .cpu_user_features = COMMON_USER_BOOKE,
1456 .icache_bsize = 32,
1457 .dcache_bsize = 32,
1458 .platform = "ppc440",
1459 },
1450 { /* 460EX */ 1460 { /* 460EX */
1451 .pvr_mask = 0xffff0002, 1461 .pvr_mask = 0xffff0002,
1452 .pvr_value = 0x13020002, 1462 .pvr_value = 0x13020002,
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index 2944529e8bf..f3a1ea9d7fe 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -293,119 +293,9 @@ interrupt_base:
293 MCHECK_EXCEPTION(0x0210, MachineCheckA, machine_check_exception) 293 MCHECK_EXCEPTION(0x0210, MachineCheckA, machine_check_exception)
294 294
295 /* Data Storage Interrupt */ 295 /* Data Storage Interrupt */
296 START_EXCEPTION(DataStorage) 296 DATA_STORAGE_EXCEPTION
297 mtspr SPRN_SPRG0, r10 /* Save some working registers */
298 mtspr SPRN_SPRG1, r11
299 mtspr SPRN_SPRG4W, r12
300 mtspr SPRN_SPRG5W, r13
301 mfcr r11
302 mtspr SPRN_SPRG7W, r11
303
304 /*
305 * Check if it was a store fault, if not then bail
306 * because a user tried to access a kernel or
307 * read-protected page. Otherwise, get the
308 * offending address and handle it.
309 */
310 mfspr r10, SPRN_ESR
311 andis. r10, r10, ESR_ST@h
312 beq 2f
313
314 mfspr r10, SPRN_DEAR /* Get faulting address */
315
316 /* If we are faulting a kernel address, we have to use the
317 * kernel page tables.
318 */
319 lis r11, PAGE_OFFSET@h
320 cmplw r10, r11
321 blt+ 3f
322 lis r11, swapper_pg_dir@h
323 ori r11, r11, swapper_pg_dir@l
324
325 mfspr r12,SPRN_MMUCR
326 rlwinm r12,r12,0,0,23 /* Clear TID */
327
328 b 4f
329
330 /* Get the PGD for the current thread */
3313:
332 mfspr r11,SPRN_SPRG3
333 lwz r11,PGDIR(r11)
334
335 /* Load PID into MMUCR TID */
336 mfspr r12,SPRN_MMUCR /* Get MMUCR */
337 mfspr r13,SPRN_PID /* Get PID */
338 rlwimi r12,r13,0,24,31 /* Set TID */
339
3404:
341 mtspr SPRN_MMUCR,r12
342
343 rlwinm r12, r10, 13, 19, 29 /* Compute pgdir/pmd offset */
344 lwzx r11, r12, r11 /* Get pgd/pmd entry */
345 rlwinm. r12, r11, 0, 0, 20 /* Extract pt base address */
346 beq 2f /* Bail if no table */
347
348 rlwimi r12, r10, 23, 20, 28 /* Compute pte address */
349 lwz r11, 4(r12) /* Get pte entry */
350
351 andi. r13, r11, _PAGE_RW /* Is it writeable? */
352 beq 2f /* Bail if not */
353
354 /* Update 'changed'.
355 */
356 ori r11, r11, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
357 stw r11, 4(r12) /* Update Linux page table */
358
359 li r13, PPC44x_TLB_SR@l /* Set SR */
360 rlwimi r13, r11, 29, 29, 29 /* SX = _PAGE_HWEXEC */
361 rlwimi r13, r11, 0, 30, 30 /* SW = _PAGE_RW */
362 rlwimi r13, r11, 29, 28, 28 /* UR = _PAGE_USER */
363 rlwimi r12, r11, 31, 26, 26 /* (_PAGE_USER>>1)->r12 */
364 rlwimi r12, r11, 29, 30, 30 /* (_PAGE_USER>>3)->r12 */
365 and r12, r12, r11 /* HWEXEC/RW & USER */
366 rlwimi r13, r12, 0, 26, 26 /* UX = HWEXEC & USER */
367 rlwimi r13, r12, 3, 27, 27 /* UW = RW & USER */
368
369 rlwimi r11,r13,0,26,31 /* Insert static perms */
370
371 /*
372 * Clear U0-U3 and WL1 IL1I IL1D IL2I IL2D bits which are added
373 * on newer 440 cores like the 440x6 used on AMCC 460EX/460GT (see
374 * include/asm-powerpc/pgtable-ppc32.h for details).
375 */
376 rlwinm r11,r11,0,20,10
377
378 /* find the TLB index that caused the fault. It has to be here. */
379 tlbsx r10, 0, r10
380
381 tlbwe r11, r10, PPC44x_TLB_ATTRIB /* Write ATTRIB */
382
383 /* Done...restore registers and get out of here.
384 */
385 mfspr r11, SPRN_SPRG7R
386 mtcr r11
387 mfspr r13, SPRN_SPRG5R
388 mfspr r12, SPRN_SPRG4R
389 297
390 mfspr r11, SPRN_SPRG1 298 /* Instruction Storage Interrupt */
391 mfspr r10, SPRN_SPRG0
392 rfi /* Force context change */
393
3942:
395 /*
396 * The bailout. Restore registers to pre-exception conditions
397 * and call the heavyweights to help us out.
398 */
399 mfspr r11, SPRN_SPRG7R
400 mtcr r11
401 mfspr r13, SPRN_SPRG5R
402 mfspr r12, SPRN_SPRG4R
403
404 mfspr r11, SPRN_SPRG1
405 mfspr r10, SPRN_SPRG0
406 b data_access
407
408 /* Instruction Storage Interrupt */
409 INSTRUCTION_STORAGE_EXCEPTION 299 INSTRUCTION_STORAGE_EXCEPTION
410 300
411 /* External Input Interrupt */ 301 /* External Input Interrupt */
@@ -423,7 +313,6 @@ interrupt_base:
423#else 313#else
424 EXCEPTION(0x2010, FloatingPointUnavailable, unknown_exception, EXC_XFER_EE) 314 EXCEPTION(0x2010, FloatingPointUnavailable, unknown_exception, EXC_XFER_EE)
425#endif 315#endif
426
427 /* System Call Interrupt */ 316 /* System Call Interrupt */
428 START_EXCEPTION(SystemCall) 317 START_EXCEPTION(SystemCall)
429 NORMAL_EXCEPTION_PROLOG 318 NORMAL_EXCEPTION_PROLOG
@@ -484,18 +373,57 @@ interrupt_base:
4844: 3734:
485 mtspr SPRN_MMUCR,r12 374 mtspr SPRN_MMUCR,r12
486 375
376 /* Mask of required permission bits. Note that while we
377 * do copy ESR:ST to _PAGE_RW position as trying to write
378 * to an RO page is pretty common, we don't do it with
379 * _PAGE_DIRTY. We could do it, but it's a fairly rare
380 * event so I'd rather take the overhead when it happens
381 * rather than adding an instruction here. We should measure
382 * whether the whole thing is worth it in the first place
383 * as we could avoid loading SPRN_ESR completely in the first
384 * place...
385 *
386 * TODO: Is it worth doing that mfspr & rlwimi in the first
387 * place or can we save a couple of instructions here ?
388 */
389 mfspr r12,SPRN_ESR
390 li r13,_PAGE_PRESENT|_PAGE_ACCESSED
391 rlwimi r13,r12,10,30,30
392
393 /* Load the PTE */
487 rlwinm r12, r10, 13, 19, 29 /* Compute pgdir/pmd offset */ 394 rlwinm r12, r10, 13, 19, 29 /* Compute pgdir/pmd offset */
488 lwzx r11, r12, r11 /* Get pgd/pmd entry */ 395 lwzx r11, r12, r11 /* Get pgd/pmd entry */
489 rlwinm. r12, r11, 0, 0, 20 /* Extract pt base address */ 396 rlwinm. r12, r11, 0, 0, 20 /* Extract pt base address */
490 beq 2f /* Bail if no table */ 397 beq 2f /* Bail if no table */
491 398
492 rlwimi r12, r10, 23, 20, 28 /* Compute pte address */ 399 rlwimi r12, r10, 23, 20, 28 /* Compute pte address */
493 lwz r11, 4(r12) /* Get pte entry */ 400 lwz r11, 0(r12) /* Get high word of pte entry */
494 andi. r13, r11, _PAGE_PRESENT /* Is the page present? */ 401 lwz r12, 4(r12) /* Get low word of pte entry */
495 beq 2f /* Bail if not present */
496 402
497 ori r11, r11, _PAGE_ACCESSED 403 lis r10,tlb_44x_index@ha
498 stw r11, 4(r12) 404
405 andc. r13,r13,r12 /* Check permission */
406
407 /* Load the next available TLB index */
408 lwz r13,tlb_44x_index@l(r10)
409
410 bne 2f /* Bail if permission mismach */
411
412 /* Increment, rollover, and store TLB index */
413 addi r13,r13,1
414
415 /* Compare with watermark (instruction gets patched) */
416 .globl tlb_44x_patch_hwater_D
417tlb_44x_patch_hwater_D:
418 cmpwi 0,r13,1 /* reserve entries */
419 ble 5f
420 li r13,0
4215:
422 /* Store the next available TLB index */
423 stw r13,tlb_44x_index@l(r10)
424
425 /* Re-load the faulting address */
426 mfspr r10,SPRN_DEAR
499 427
500 /* Jump to common tlb load */ 428 /* Jump to common tlb load */
501 b finish_tlb_load 429 b finish_tlb_load
@@ -510,7 +438,7 @@ interrupt_base:
510 mfspr r12, SPRN_SPRG4R 438 mfspr r12, SPRN_SPRG4R
511 mfspr r11, SPRN_SPRG1 439 mfspr r11, SPRN_SPRG1
512 mfspr r10, SPRN_SPRG0 440 mfspr r10, SPRN_SPRG0
513 b data_access 441 b DataStorage
514 442
515 /* Instruction TLB Error Interrupt */ 443 /* Instruction TLB Error Interrupt */
516 /* 444 /*
@@ -554,18 +482,42 @@ interrupt_base:
5544: 4824:
555 mtspr SPRN_MMUCR,r12 483 mtspr SPRN_MMUCR,r12
556 484
485 /* Make up the required permissions */
486 li r13,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_HWEXEC
487
557 rlwinm r12, r10, 13, 19, 29 /* Compute pgdir/pmd offset */ 488 rlwinm r12, r10, 13, 19, 29 /* Compute pgdir/pmd offset */
558 lwzx r11, r12, r11 /* Get pgd/pmd entry */ 489 lwzx r11, r12, r11 /* Get pgd/pmd entry */
559 rlwinm. r12, r11, 0, 0, 20 /* Extract pt base address */ 490 rlwinm. r12, r11, 0, 0, 20 /* Extract pt base address */
560 beq 2f /* Bail if no table */ 491 beq 2f /* Bail if no table */
561 492
562 rlwimi r12, r10, 23, 20, 28 /* Compute pte address */ 493 rlwimi r12, r10, 23, 20, 28 /* Compute pte address */
563 lwz r11, 4(r12) /* Get pte entry */ 494 lwz r11, 0(r12) /* Get high word of pte entry */
564 andi. r13, r11, _PAGE_PRESENT /* Is the page present? */ 495 lwz r12, 4(r12) /* Get low word of pte entry */
565 beq 2f /* Bail if not present */
566 496
567 ori r11, r11, _PAGE_ACCESSED 497 lis r10,tlb_44x_index@ha
568 stw r11, 4(r12) 498
499 andc. r13,r13,r12 /* Check permission */
500
501 /* Load the next available TLB index */
502 lwz r13,tlb_44x_index@l(r10)
503
504 bne 2f /* Bail if permission mismach */
505
506 /* Increment, rollover, and store TLB index */
507 addi r13,r13,1
508
509 /* Compare with watermark (instruction gets patched) */
510 .globl tlb_44x_patch_hwater_I
511tlb_44x_patch_hwater_I:
512 cmpwi 0,r13,1 /* reserve entries */
513 ble 5f
514 li r13,0
5155:
516 /* Store the next available TLB index */
517 stw r13,tlb_44x_index@l(r10)
518
519 /* Re-load the faulting address */
520 mfspr r10,SPRN_SRR0
569 521
570 /* Jump to common TLB load point */ 522 /* Jump to common TLB load point */
571 b finish_tlb_load 523 b finish_tlb_load
@@ -587,86 +539,40 @@ interrupt_base:
587 539
588/* 540/*
589 * Local functions 541 * Local functions
590 */ 542 */
591 /*
592 * Data TLB exceptions will bail out to this point
593 * if they can't resolve the lightweight TLB fault.
594 */
595data_access:
596 NORMAL_EXCEPTION_PROLOG
597 mfspr r5,SPRN_ESR /* Grab the ESR, save it, pass arg3 */
598 stw r5,_ESR(r11)
599 mfspr r4,SPRN_DEAR /* Grab the DEAR, save it, pass arg2 */
600 EXC_XFER_EE_LITE(0x0300, handle_page_fault)
601 543
602/* 544/*
603 545
604 * Both the instruction and data TLB miss get to this 546 * Both the instruction and data TLB miss get to this
605 * point to load the TLB. 547 * point to load the TLB.
606 * r10 - EA of fault 548 * r10 - EA of fault
607 * r11 - available to use 549 * r11 - PTE high word value
608 * r12 - Pointer to the 64-bit PTE 550 * r12 - PTE low word value
609 * r13 - available to use 551 * r13 - TLB index
610 * MMUCR - loaded with proper value when we get here 552 * MMUCR - loaded with proper value when we get here
611 * Upon exit, we reload everything and RFI. 553 * Upon exit, we reload everything and RFI.
612 */ 554 */
613finish_tlb_load: 555finish_tlb_load:
614 /* 556 /* Combine RPN & ERPN an write WS 0 */
615 * We set execute, because we don't have the granularity to 557 rlwimi r11,r12,0,0,19
616 * properly set this at the page level (Linux problem). 558 tlbwe r11,r13,PPC44x_TLB_XLAT
617 * If shared is set, we cause a zero PID->TID load.
618 * Many of these bits are software only. Bits we don't set
619 * here we (properly should) assume have the appropriate value.
620 */
621
622 /* Load the next available TLB index */
623 lis r13, tlb_44x_index@ha
624 lwz r13, tlb_44x_index@l(r13)
625 /* Load the TLB high watermark */
626 lis r11, tlb_44x_hwater@ha
627 lwz r11, tlb_44x_hwater@l(r11)
628
629 /* Increment, rollover, and store TLB index */
630 addi r13, r13, 1
631 cmpw 0, r13, r11 /* reserve entries */
632 ble 7f
633 li r13, 0
6347:
635 /* Store the next available TLB index */
636 lis r11, tlb_44x_index@ha
637 stw r13, tlb_44x_index@l(r11)
638
639 lwz r11, 0(r12) /* Get MS word of PTE */
640 lwz r12, 4(r12) /* Get LS word of PTE */
641 rlwimi r11, r12, 0, 0 , 19 /* Insert RPN */
642 tlbwe r11, r13, PPC44x_TLB_XLAT /* Write XLAT */
643 559
644 /* 560 /*
645 * Create PAGEID. This is the faulting address, 561 * Create WS1. This is the faulting address (EPN),
646 * page size, and valid flag. 562 * page size, and valid flag.
647 */ 563 */
648 li r11, PPC44x_TLB_VALID | PPC44x_TLB_4K 564 li r11,PPC44x_TLB_VALID | PPC44x_TLB_4K
649 rlwimi r10, r11, 0, 20, 31 /* Insert valid and page size */ 565 rlwimi r10,r11,0,20,31 /* Insert valid and page size*/
650 tlbwe r10, r13, PPC44x_TLB_PAGEID /* Write PAGEID */ 566 tlbwe r10,r13,PPC44x_TLB_PAGEID /* Write PAGEID */
651 567
652 li r10, PPC44x_TLB_SR@l /* Set SR */ 568 /* And WS 2 */
653 rlwimi r10, r12, 0, 30, 30 /* Set SW = _PAGE_RW */ 569 li r10,0xf85 /* Mask to apply from PTE */
654 rlwimi r10, r12, 29, 29, 29 /* SX = _PAGE_HWEXEC */ 570 rlwimi r10,r12,29,30,30 /* DIRTY -> SW position */
655 rlwimi r10, r12, 29, 28, 28 /* UR = _PAGE_USER */ 571 and r11,r12,r10 /* Mask PTE bits to keep */
656 rlwimi r11, r12, 31, 26, 26 /* (_PAGE_USER>>1)->r12 */ 572 andi. r10,r12,_PAGE_USER /* User page ? */
657 and r11, r12, r11 /* HWEXEC & USER */ 573 beq 1f /* nope, leave U bits empty */
658 rlwimi r10, r11, 0, 26, 26 /* UX = HWEXEC & USER */ 574 rlwimi r11,r11,3,26,28 /* yes, copy S bits to U */
659 5751: tlbwe r11,r13,PPC44x_TLB_ATTRIB /* Write ATTRIB */
660 rlwimi r12, r10, 0, 26, 31 /* Insert static perms */
661
662 /*
663 * Clear U0-U3 and WL1 IL1I IL1D IL2I IL2D bits which are added
664 * on newer 440 cores like the 440x6 used on AMCC 460EX/460GT (see
665 * include/asm-powerpc/pgtable-ppc32.h for details).
666 */
667 rlwinm r12, r12, 0, 20, 10
668
669 tlbwe r12, r13, PPC44x_TLB_ATTRIB /* Write ATTRIB */
670 576
671 /* Done...restore registers and get out of here. 577 /* Done...restore registers and get out of here.
672 */ 578 */
diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h
index b0461be1c92..fce2df98850 100644
--- a/arch/powerpc/kernel/head_booke.h
+++ b/arch/powerpc/kernel/head_booke.h
@@ -340,6 +340,14 @@ label:
340 addi r3,r1,STACK_FRAME_OVERHEAD; \ 340 addi r3,r1,STACK_FRAME_OVERHEAD; \
341 EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, crit_transfer_to_handler, ret_from_crit_exc) 341 EXC_XFER_TEMPLATE(DebugException, 0x2002, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, crit_transfer_to_handler, ret_from_crit_exc)
342 342
343#define DATA_STORAGE_EXCEPTION \
344 START_EXCEPTION(DataStorage) \
345 NORMAL_EXCEPTION_PROLOG; \
346 mfspr r5,SPRN_ESR; /* Grab the ESR and save it */ \
347 stw r5,_ESR(r11); \
348 mfspr r4,SPRN_DEAR; /* Grab the DEAR */ \
349 EXC_XFER_EE_LITE(0x0300, handle_page_fault)
350
343#define INSTRUCTION_STORAGE_EXCEPTION \ 351#define INSTRUCTION_STORAGE_EXCEPTION \
344 START_EXCEPTION(InstructionStorage) \ 352 START_EXCEPTION(InstructionStorage) \
345 NORMAL_EXCEPTION_PROLOG; \ 353 NORMAL_EXCEPTION_PROLOG; \
diff --git a/arch/powerpc/mm/44x_mmu.c b/arch/powerpc/mm/44x_mmu.c
index 953fb919eb0..98052ac9658 100644
--- a/arch/powerpc/mm/44x_mmu.c
+++ b/arch/powerpc/mm/44x_mmu.c
@@ -27,6 +27,7 @@
27#include <asm/mmu.h> 27#include <asm/mmu.h>
28#include <asm/system.h> 28#include <asm/system.h>
29#include <asm/page.h> 29#include <asm/page.h>
30#include <asm/cacheflush.h>
30 31
31#include "mmu_decl.h" 32#include "mmu_decl.h"
32 33
@@ -37,11 +38,35 @@ unsigned int tlb_44x_index; /* = 0 */
37unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS; 38unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS;
38int icache_44x_need_flush; 39int icache_44x_need_flush;
39 40
41static void __init ppc44x_update_tlb_hwater(void)
42{
43 extern unsigned int tlb_44x_patch_hwater_D[];
44 extern unsigned int tlb_44x_patch_hwater_I[];
45
46 /* The TLB miss handlers hard codes the watermark in a cmpli
47 * instruction to improve performances rather than loading it
48 * from the global variable. Thus, we patch the instructions
49 * in the 2 TLB miss handlers when updating the value
50 */
51 tlb_44x_patch_hwater_D[0] = (tlb_44x_patch_hwater_D[0] & 0xffff0000) |
52 tlb_44x_hwater;
53 flush_icache_range((unsigned long)&tlb_44x_patch_hwater_D[0],
54 (unsigned long)&tlb_44x_patch_hwater_D[1]);
55 tlb_44x_patch_hwater_I[0] = (tlb_44x_patch_hwater_I[0] & 0xffff0000) |
56 tlb_44x_hwater;
57 flush_icache_range((unsigned long)&tlb_44x_patch_hwater_I[0],
58 (unsigned long)&tlb_44x_patch_hwater_I[1]);
59}
60
40/* 61/*
41 * "Pins" a 256MB TLB entry in AS0 for kernel lowmem 62 * "Pins" a 256MB TLB entry in AS0 for kernel lowmem
42 */ 63 */
43static void __init ppc44x_pin_tlb(unsigned int virt, unsigned int phys) 64static void __init ppc44x_pin_tlb(unsigned int virt, unsigned int phys)
44{ 65{
66 unsigned int entry = tlb_44x_hwater--;
67
68 ppc44x_update_tlb_hwater();
69
45 __asm__ __volatile__( 70 __asm__ __volatile__(
46 "tlbwe %2,%3,%4\n" 71 "tlbwe %2,%3,%4\n"
47 "tlbwe %1,%3,%5\n" 72 "tlbwe %1,%3,%5\n"
@@ -50,7 +75,7 @@ static void __init ppc44x_pin_tlb(unsigned int virt, unsigned int phys)
50 : "r" (PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_SX | PPC44x_TLB_G), 75 : "r" (PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_SX | PPC44x_TLB_G),
51 "r" (phys), 76 "r" (phys),
52 "r" (virt | PPC44x_TLB_VALID | PPC44x_TLB_256M), 77 "r" (virt | PPC44x_TLB_VALID | PPC44x_TLB_256M),
53 "r" (tlb_44x_hwater--), /* slot for this TLB entry */ 78 "r" (entry),
54 "i" (PPC44x_TLB_PAGEID), 79 "i" (PPC44x_TLB_PAGEID),
55 "i" (PPC44x_TLB_XLAT), 80 "i" (PPC44x_TLB_XLAT),
56 "i" (PPC44x_TLB_ATTRIB)); 81 "i" (PPC44x_TLB_ATTRIB));
@@ -58,6 +83,8 @@ static void __init ppc44x_pin_tlb(unsigned int virt, unsigned int phys)
58 83
59void __init MMU_init_hw(void) 84void __init MMU_init_hw(void)
60{ 85{
86 ppc44x_update_tlb_hwater();
87
61 flush_instruction_cache(); 88 flush_instruction_cache();
62} 89}
63 90
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index 7b251079926..1707d00331f 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -306,7 +306,8 @@ good_area:
306 flush_dcache_icache_page(page); 306 flush_dcache_icache_page(page);
307 set_bit(PG_arch_1, &page->flags); 307 set_bit(PG_arch_1, &page->flags);
308 } 308 }
309 pte_update(ptep, 0, _PAGE_HWEXEC); 309 pte_update(ptep, 0, _PAGE_HWEXEC |
310 _PAGE_ACCESSED);
310 _tlbie(address, mm->context.id); 311 _tlbie(address, mm->context.id);
311 pte_unmap_unlock(ptep, ptl); 312 pte_unmap_unlock(ptep, ptl);
312 up_read(&mm->mmap_sem); 313 up_read(&mm->mmap_sem);
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
index 45418590b6a..388ceda632f 100644
--- a/arch/powerpc/mm/init_32.c
+++ b/arch/powerpc/mm/init_32.c
@@ -57,8 +57,8 @@
57 57
58DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); 58DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
59 59
60unsigned long total_memory; 60phys_addr_t total_memory;
61unsigned long total_lowmem; 61phys_addr_t total_lowmem;
62 62
63phys_addr_t memstart_addr = (phys_addr_t)~0ull; 63phys_addr_t memstart_addr = (phys_addr_t)~0ull;
64EXPORT_SYMBOL(memstart_addr); 64EXPORT_SYMBOL(memstart_addr);
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 776ba6ad5e1..1ca2235f096 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -330,7 +330,7 @@ static int __init mark_nonram_nosave(void)
330void __init paging_init(void) 330void __init paging_init(void)
331{ 331{
332 unsigned long total_ram = lmb_phys_mem_size(); 332 unsigned long total_ram = lmb_phys_mem_size();
333 unsigned long top_of_ram = lmb_end_of_DRAM(); 333 phys_addr_t top_of_ram = lmb_end_of_DRAM();
334 unsigned long max_zone_pfns[MAX_NR_ZONES]; 334 unsigned long max_zone_pfns[MAX_NR_ZONES];
335 335
336#ifdef CONFIG_PPC32 336#ifdef CONFIG_PPC32
@@ -349,10 +349,10 @@ void __init paging_init(void)
349 kmap_prot = PAGE_KERNEL; 349 kmap_prot = PAGE_KERNEL;
350#endif /* CONFIG_HIGHMEM */ 350#endif /* CONFIG_HIGHMEM */
351 351
352 printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n", 352 printk(KERN_DEBUG "Top of RAM: 0x%llx, Total RAM: 0x%lx\n",
353 top_of_ram, total_ram); 353 (u64)top_of_ram, total_ram);
354 printk(KERN_DEBUG "Memory hole size: %ldMB\n", 354 printk(KERN_DEBUG "Memory hole size: %ldMB\n",
355 (top_of_ram - total_ram) >> 20); 355 (long int)((top_of_ram - total_ram) >> 20));
356 memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); 356 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
357#ifdef CONFIG_HIGHMEM 357#ifdef CONFIG_HIGHMEM
358 max_zone_pfns[ZONE_DMA] = lowmem_end_addr >> PAGE_SHIFT; 358 max_zone_pfns[ZONE_DMA] = lowmem_end_addr >> PAGE_SHIFT;
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
index 46585b7bb19..fab3cfad409 100644
--- a/arch/powerpc/mm/mmu_decl.h
+++ b/arch/powerpc/mm/mmu_decl.h
@@ -49,8 +49,8 @@ extern unsigned int num_tlbcam_entries;
49extern unsigned long ioremap_bot; 49extern unsigned long ioremap_bot;
50extern unsigned long __max_low_memory; 50extern unsigned long __max_low_memory;
51extern phys_addr_t __initial_memory_limit_addr; 51extern phys_addr_t __initial_memory_limit_addr;
52extern unsigned long total_memory; 52extern phys_addr_t total_memory;
53extern unsigned long total_lowmem; 53extern phys_addr_t total_lowmem;
54extern phys_addr_t memstart_addr; 54extern phys_addr_t memstart_addr;
55extern phys_addr_t lowmem_end_addr; 55extern phys_addr_t lowmem_end_addr;
56 56
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
index bee49ca704e..249ba01c667 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -111,6 +111,22 @@ config YOSEMITE
111# help 111# help
112# This option enables support for the IBM PPC440GX evaluation board. 112# This option enables support for the IBM PPC440GX evaluation board.
113 113
114config XILINX_VIRTEX440_GENERIC_BOARD
115 bool "Generic Xilinx Virtex 440 board"
116 depends on 44x
117 default n
118 select XILINX_VIRTEX_5_FXT
119 help
120 This option enables generic support for Xilinx Virtex based boards
121 that use a 440 based processor in the Virtex 5 FXT FPGA architecture.
122
123 The generic virtex board support matches any device tree which
124 specifies 'xlnx,virtex440' in its compatible field. This includes
125 the Xilinx ML5xx reference designs using the powerpc core.
126
127 Most Virtex 5 designs should use this unless it needs to do some
128 special configuration at board probe time.
129
114# 44x specific CPU modules, selected based on the board above. 130# 44x specific CPU modules, selected based on the board above.
115config 440EP 131config 440EP
116 bool 132 bool
@@ -161,3 +177,13 @@ config 460EX
161# 44x errata/workaround config symbols, selected by the CPU models above 177# 44x errata/workaround config symbols, selected by the CPU models above
162config IBM440EP_ERR42 178config IBM440EP_ERR42
163 bool 179 bool
180
181# Xilinx specific config options.
182config XILINX_VIRTEX
183 bool
184
185# Xilinx Virtex 5 FXT FPGA architecture, selected by a Xilinx board above
186config XILINX_VIRTEX_5_FXT
187 bool
188 select XILINX_VIRTEX
189
diff --git a/arch/powerpc/platforms/44x/Makefile b/arch/powerpc/platforms/44x/Makefile
index 4e71e77f9a2..8d0b1a192d6 100644
--- a/arch/powerpc/platforms/44x/Makefile
+++ b/arch/powerpc/platforms/44x/Makefile
@@ -10,3 +10,4 @@ obj-$(CONFIG_RAINIER) += rainier.o
10obj-$(CONFIG_WARP) += warp.o 10obj-$(CONFIG_WARP) += warp.o
11obj-$(CONFIG_WARP) += warp-nand.o 11obj-$(CONFIG_WARP) += warp-nand.o
12obj-$(CONFIG_CANYONLANDS) += canyonlands.o 12obj-$(CONFIG_CANYONLANDS) += canyonlands.o
13obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o
diff --git a/arch/powerpc/platforms/44x/virtex.c b/arch/powerpc/platforms/44x/virtex.c
new file mode 100644
index 00000000000..68637faf70a
--- /dev/null
+++ b/arch/powerpc/platforms/44x/virtex.c
@@ -0,0 +1,60 @@
1/*
2 * Xilinx Virtex 5FXT based board support, derived from
3 * the Xilinx Virtex (IIpro & 4FX) based board support
4 *
5 * Copyright 2007 Secret Lab Technologies Ltd.
6 * Copyright 2008 Xilinx, Inc.
7 *
8 * This file is licensed under the terms of the GNU General Public License
9 * version 2. This program is licensed "as is" without any warranty of any
10 * kind, whether express or implied.
11 */
12
13#include <linux/init.h>
14#include <linux/of_platform.h>
15#include <asm/machdep.h>
16#include <asm/prom.h>
17#include <asm/time.h>
18#include <asm/xilinx_intc.h>
19#include <asm/reg.h>
20#include <asm/ppc4xx.h>
21#include "44x.h"
22
23static struct of_device_id xilinx_of_bus_ids[] __initdata = {
24 { .compatible = "simple-bus", },
25 { .compatible = "xlnx,plb-v46-1.00.a", },
26 { .compatible = "xlnx,plb-v46-1.02.a", },
27 { .compatible = "xlnx,plb-v34-1.01.a", },
28 { .compatible = "xlnx,plb-v34-1.02.a", },
29 { .compatible = "xlnx,opb-v20-1.10.c", },
30 { .compatible = "xlnx,dcr-v29-1.00.a", },
31 { .compatible = "xlnx,compound", },
32 {}
33};
34
35static int __init virtex_device_probe(void)
36{
37 of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);
38
39 return 0;
40}
41machine_device_initcall(virtex, virtex_device_probe);
42
43static int __init virtex_probe(void)
44{
45 unsigned long root = of_get_flat_dt_root();
46
47 if (!of_flat_dt_is_compatible(root, "xlnx,virtex440"))
48 return 0;
49
50 return 1;
51}
52
53define_machine(virtex) {
54 .name = "Xilinx Virtex440",
55 .probe = virtex_probe,
56 .init_IRQ = xilinx_intc_init_tree,
57 .get_irq = xilinx_intc_get_irq,
58 .calibrate_decr = generic_calibrate_decr,
59 .restart = ppc4xx_reset_system,
60};
diff --git a/arch/powerpc/platforms/44x/warp-nand.c b/arch/powerpc/platforms/44x/warp-nand.c
index 7bec2815771..e55746b824b 100644
--- a/arch/powerpc/platforms/44x/warp-nand.c
+++ b/arch/powerpc/platforms/44x/warp-nand.c
@@ -113,9 +113,14 @@ static int warp_setup_nand_flash(void)
113 pp = of_find_property(np, "reg", NULL); 113 pp = of_find_property(np, "reg", NULL);
114 if (pp && (pp->length == 12)) { 114 if (pp && (pp->length == 12)) {
115 u32 *v = pp->value; 115 u32 *v = pp->value;
116 if (v[2] == 0x4000000) 116 if (v[2] == 0x4000000) {
117 /* Rev A = 64M NAND */ 117 /* Rev A = 64M NAND */
118 warp_nand_chip0.nr_partitions = 2; 118 warp_nand_chip0.nr_partitions = 3;
119
120 nand_parts[1].size = 0x3000000;
121 nand_parts[2].offset = 0x3200000;
122 nand_parts[2].size = 0x0e00000;
123 }
119 } 124 }
120 of_node_put(np); 125 of_node_put(np);
121 } 126 }
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h
index e1d2bb57f1d..11eede4a290 100644
--- a/include/asm-powerpc/pgtable-ppc32.h
+++ b/include/asm-powerpc/pgtable-ppc32.h
@@ -182,6 +182,9 @@ extern int icache_44x_need_flush;
182#define _PMD_SIZE_16M 0x0e0 182#define _PMD_SIZE_16M 0x0e0
183#define PMD_PAGE_SIZE(pmdval) (1024 << (((pmdval) & _PMD_SIZE) >> 4)) 183#define PMD_PAGE_SIZE(pmdval) (1024 << (((pmdval) & _PMD_SIZE) >> 4))
184 184
185/* Until my rework is finished, 40x still needs atomic PTE updates */
186#define PTE_ATOMIC_UPDATES 1
187
185#elif defined(CONFIG_44x) 188#elif defined(CONFIG_44x)
186/* 189/*
187 * Definitions for PPC440 190 * Definitions for PPC440
@@ -253,17 +256,17 @@ extern int icache_44x_need_flush;
253 */ 256 */
254 257
255#define _PAGE_PRESENT 0x00000001 /* S: PTE valid */ 258#define _PAGE_PRESENT 0x00000001 /* S: PTE valid */
256#define _PAGE_RW 0x00000002 /* S: Write permission */ 259#define _PAGE_RW 0x00000002 /* S: Write permission */
257#define _PAGE_FILE 0x00000004 /* S: nonlinear file mapping */ 260#define _PAGE_FILE 0x00000004 /* S: nonlinear file mapping */
261#define _PAGE_HWEXEC 0x00000004 /* H: Execute permission */
258#define _PAGE_ACCESSED 0x00000008 /* S: Page referenced */ 262#define _PAGE_ACCESSED 0x00000008 /* S: Page referenced */
259#define _PAGE_HWWRITE 0x00000010 /* H: Dirty & RW */ 263#define _PAGE_DIRTY 0x00000010 /* S: Page dirty */
260#define _PAGE_HWEXEC 0x00000020 /* H: Execute permission */ 264#define _PAGE_USER 0x00000040 /* S: User page */
261#define _PAGE_USER 0x00000040 /* S: User page */ 265#define _PAGE_ENDIAN 0x00000080 /* H: E bit */
262#define _PAGE_ENDIAN 0x00000080 /* H: E bit */ 266#define _PAGE_GUARDED 0x00000100 /* H: G bit */
263#define _PAGE_GUARDED 0x00000100 /* H: G bit */ 267#define _PAGE_COHERENT 0x00000200 /* H: M bit */
264#define _PAGE_DIRTY 0x00000200 /* S: Page dirty */ 268#define _PAGE_NO_CACHE 0x00000400 /* H: I bit */
265#define _PAGE_NO_CACHE 0x00000400 /* H: I bit */ 269#define _PAGE_WRITETHRU 0x00000800 /* H: W bit */
266#define _PAGE_WRITETHRU 0x00000800 /* H: W bit */
267 270
268/* TODO: Add large page lowmem mapping support */ 271/* TODO: Add large page lowmem mapping support */
269#define _PMD_PRESENT 0 272#define _PMD_PRESENT 0
@@ -273,6 +276,7 @@ extern int icache_44x_need_flush;
273/* ERPN in a PTE never gets cleared, ignore it */ 276/* ERPN in a PTE never gets cleared, ignore it */
274#define _PTE_NONE_MASK 0xffffffff00000000ULL 277#define _PTE_NONE_MASK 0xffffffff00000000ULL
275 278
279
276#elif defined(CONFIG_FSL_BOOKE) 280#elif defined(CONFIG_FSL_BOOKE)
277/* 281/*
278 MMU Assist Register 3: 282 MMU Assist Register 3:
@@ -315,6 +319,9 @@ extern int icache_44x_need_flush;
315#define _PMD_PRESENT_MASK (PAGE_MASK) 319#define _PMD_PRESENT_MASK (PAGE_MASK)
316#define _PMD_BAD (~PAGE_MASK) 320#define _PMD_BAD (~PAGE_MASK)
317 321
322/* Until my rework is finished, FSL BookE still needs atomic PTE updates */
323#define PTE_ATOMIC_UPDATES 1
324
318#elif defined(CONFIG_8xx) 325#elif defined(CONFIG_8xx)
319/* Definitions for 8xx embedded chips. */ 326/* Definitions for 8xx embedded chips. */
320#define _PAGE_PRESENT 0x0001 /* Page is valid */ 327#define _PAGE_PRESENT 0x0001 /* Page is valid */
@@ -345,6 +352,9 @@ extern int icache_44x_need_flush;
345 352
346#define _PTE_NONE_MASK _PAGE_ACCESSED 353#define _PTE_NONE_MASK _PAGE_ACCESSED
347 354
355/* Until my rework is finished, 8xx still needs atomic PTE updates */
356#define PTE_ATOMIC_UPDATES 1
357
348#else /* CONFIG_6xx */ 358#else /* CONFIG_6xx */
349/* Definitions for 60x, 740/750, etc. */ 359/* Definitions for 60x, 740/750, etc. */
350#define _PAGE_PRESENT 0x001 /* software: pte contains a translation */ 360#define _PAGE_PRESENT 0x001 /* software: pte contains a translation */
@@ -365,6 +375,10 @@ extern int icache_44x_need_flush;
365#define _PMD_PRESENT 0 375#define _PMD_PRESENT 0
366#define _PMD_PRESENT_MASK (PAGE_MASK) 376#define _PMD_PRESENT_MASK (PAGE_MASK)
367#define _PMD_BAD (~PAGE_MASK) 377#define _PMD_BAD (~PAGE_MASK)
378
379/* Hash table based platforms need atomic updates of the linux PTE */
380#define PTE_ATOMIC_UPDATES 1
381
368#endif 382#endif
369 383
370/* 384/*
@@ -557,9 +571,11 @@ extern void add_hash_page(unsigned context, unsigned long va,
557 * low PTE word since we expect ALL flag bits to be there 571 * low PTE word since we expect ALL flag bits to be there
558 */ 572 */
559#ifndef CONFIG_PTE_64BIT 573#ifndef CONFIG_PTE_64BIT
560static inline unsigned long pte_update(pte_t *p, unsigned long clr, 574static inline unsigned long pte_update(pte_t *p,
575 unsigned long clr,
561 unsigned long set) 576 unsigned long set)
562{ 577{
578#ifdef PTE_ATOMIC_UPDATES
563 unsigned long old, tmp; 579 unsigned long old, tmp;
564 580
565 __asm__ __volatile__("\ 581 __asm__ __volatile__("\
@@ -572,16 +588,26 @@ static inline unsigned long pte_update(pte_t *p, unsigned long clr,
572 : "=&r" (old), "=&r" (tmp), "=m" (*p) 588 : "=&r" (old), "=&r" (tmp), "=m" (*p)
573 : "r" (p), "r" (clr), "r" (set), "m" (*p) 589 : "r" (p), "r" (clr), "r" (set), "m" (*p)
574 : "cc" ); 590 : "cc" );
591#else /* PTE_ATOMIC_UPDATES */
592 unsigned long old = pte_val(*p);
593 *p = __pte((old & ~clr) | set);
594#endif /* !PTE_ATOMIC_UPDATES */
595
575#ifdef CONFIG_44x 596#ifdef CONFIG_44x
576 if ((old & _PAGE_USER) && (old & _PAGE_HWEXEC)) 597 if ((old & _PAGE_USER) && (old & _PAGE_HWEXEC))
577 icache_44x_need_flush = 1; 598 icache_44x_need_flush = 1;
578#endif 599#endif
579 return old; 600 return old;
580} 601}
581#else 602#else /* CONFIG_PTE_64BIT */
582static inline unsigned long long pte_update(pte_t *p, unsigned long clr, 603/* TODO: Change that to only modify the low word and move set_pte_at()
583 unsigned long set) 604 * out of line
605 */
606static inline unsigned long long pte_update(pte_t *p,
607 unsigned long clr,
608 unsigned long set)
584{ 609{
610#ifdef PTE_ATOMIC_UPDATES
585 unsigned long long old; 611 unsigned long long old;
586 unsigned long tmp; 612 unsigned long tmp;
587 613
@@ -596,13 +622,18 @@ static inline unsigned long long pte_update(pte_t *p, unsigned long clr,
596 : "=&r" (old), "=&r" (tmp), "=m" (*p) 622 : "=&r" (old), "=&r" (tmp), "=m" (*p)
597 : "r" (p), "r" ((unsigned long)(p) + 4), "r" (clr), "r" (set), "m" (*p) 623 : "r" (p), "r" ((unsigned long)(p) + 4), "r" (clr), "r" (set), "m" (*p)
598 : "cc" ); 624 : "cc" );
625#else /* PTE_ATOMIC_UPDATES */
626 unsigned long long old = pte_val(*p);
627 *p = __pte((old & ~clr) | set);
628#endif /* !PTE_ATOMIC_UPDATES */
629
599#ifdef CONFIG_44x 630#ifdef CONFIG_44x
600 if ((old & _PAGE_USER) && (old & _PAGE_HWEXEC)) 631 if ((old & _PAGE_USER) && (old & _PAGE_HWEXEC))
601 icache_44x_need_flush = 1; 632 icache_44x_need_flush = 1;
602#endif 633#endif
603 return old; 634 return old;
604} 635}
605#endif 636#endif /* CONFIG_PTE_64BIT */
606 637
607/* 638/*
608 * set_pte stores a linux PTE into the linux page table. 639 * set_pte stores a linux PTE into the linux page table.
@@ -671,7 +702,7 @@ static inline void __ptep_set_access_flags(pte_t *ptep, pte_t entry, int dirty)
671({ \ 702({ \
672 int __changed = !pte_same(*(__ptep), __entry); \ 703 int __changed = !pte_same(*(__ptep), __entry); \
673 if (__changed) { \ 704 if (__changed) { \
674 __ptep_set_access_flags(__ptep, __entry, __dirty); \ 705 __ptep_set_access_flags(__ptep, __entry, __dirty); \
675 flush_tlb_page_nohash(__vma, __address); \ 706 flush_tlb_page_nohash(__vma, __address); \
676 } \ 707 } \
677 __changed; \ 708 __changed; \