aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 16:26:53 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 16:26:53 -0500
commita73611b6aafa3b902524dad2d68e378c4ec9f4db (patch)
tree5dc4877055a2297d9f7f5db4cf6a5a7aad392dd0
parent5fa3577b1a1202972e6e419040438c29f39f59cc (diff)
parentae4cec4736969ec2196a6bbce4ab263ff7cb7eef (diff)
Merge branch 'next' of git://git.secretlab.ca/git/linux-2.6
* 'next' of git://git.secretlab.ca/git/linux-2.6: (23 commits) powerpc: fix up for mmu_mapin_ram api change powerpc: wii: allow ioremap within the memory hole powerpc: allow ioremap within reserved memory regions wii: use both mem1 and mem2 as ram wii: bootwrapper: add fixup to calc useable mem2 powerpc: gamecube/wii: early debugging using usbgecko powerpc: reserve fixmap entries for early debug powerpc: wii: default config powerpc: wii: platform support powerpc: wii: hollywood interrupt controller support powerpc: broadway processor support powerpc: wii: bootwrapper bits powerpc: wii: device tree powerpc: gamecube: default config powerpc: gamecube: platform support powerpc: gamecube/wii: flipper interrupt controller support powerpc: gamecube/wii: udbg support for usbgecko powerpc: gamecube/wii: do not include PCI support powerpc: gamecube/wii: declare as non-coherent platforms powerpc: gamecube/wii: introduce GAMECUBE_COMMON ... Fix up conflicts in arch/powerpc/mm/fsl_booke_mmu.c. Hopefully even close to correctly.
-rw-r--r--Documentation/powerpc/dts-bindings/nintendo/gamecube.txt109
-rw-r--r--Documentation/powerpc/dts-bindings/nintendo/wii.txt184
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/Kconfig.debug8
-rw-r--r--arch/powerpc/boot/Makefile7
-rw-r--r--arch/powerpc/boot/dts/gamecube.dts114
-rw-r--r--arch/powerpc/boot/dts/wii.dts218
-rw-r--r--arch/powerpc/boot/gamecube-head.S111
-rw-r--r--arch/powerpc/boot/gamecube.c35
-rw-r--r--arch/powerpc/boot/ugecon.c147
-rw-r--r--arch/powerpc/boot/ugecon.h24
-rw-r--r--arch/powerpc/boot/wii-head.S142
-rw-r--r--arch/powerpc/boot/wii.c158
-rwxr-xr-xarch/powerpc/boot/wrapper4
-rw-r--r--arch/powerpc/configs/gamecube_defconfig1061
-rw-r--r--arch/powerpc/configs/wii_defconfig1406
-rw-r--r--arch/powerpc/include/asm/fixmap.h3
-rw-r--r--arch/powerpc/include/asm/udbg.h1
-rw-r--r--arch/powerpc/kernel/cputable.c6
-rw-r--r--arch/powerpc/kernel/head_32.S25
-rw-r--r--arch/powerpc/kernel/udbg.c2
-rw-r--r--arch/powerpc/mm/40x_mmu.c2
-rw-r--r--arch/powerpc/mm/44x_mmu.c2
-rw-r--r--arch/powerpc/mm/fsl_booke_mmu.c2
-rw-r--r--arch/powerpc/mm/init_32.c9
-rw-r--r--arch/powerpc/mm/mmu_decl.h17
-rw-r--r--arch/powerpc/mm/pgtable_32.c36
-rw-r--r--arch/powerpc/mm/ppc_mmu_32.c4
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype2
-rw-r--r--arch/powerpc/platforms/embedded6xx/Kconfig33
-rw-r--r--arch/powerpc/platforms/embedded6xx/Makefile4
-rw-r--r--arch/powerpc/platforms/embedded6xx/flipper-pic.c263
-rw-r--r--arch/powerpc/platforms/embedded6xx/flipper-pic.h25
-rw-r--r--arch/powerpc/platforms/embedded6xx/gamecube.c118
-rw-r--r--arch/powerpc/platforms/embedded6xx/hlwd-pic.c241
-rw-r--r--arch/powerpc/platforms/embedded6xx/hlwd-pic.h22
-rw-r--r--arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c328
-rw-r--r--arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h32
-rw-r--r--arch/powerpc/platforms/embedded6xx/wii.c268
-rw-r--r--include/linux/lmb.h1
-rw-r--r--lib/lmb.c7
41 files changed, 5161 insertions, 22 deletions
diff --git a/Documentation/powerpc/dts-bindings/nintendo/gamecube.txt b/Documentation/powerpc/dts-bindings/nintendo/gamecube.txt
new file mode 100644
index 000000000000..b558585b1aaf
--- /dev/null
+++ b/Documentation/powerpc/dts-bindings/nintendo/gamecube.txt
@@ -0,0 +1,109 @@
1
2Nintendo GameCube device tree
3=============================
4
51) The "flipper" node
6
7 This node represents the multi-function "Flipper" chip, which packages
8 many of the devices found in the Nintendo GameCube.
9
10 Required properties:
11
12 - compatible : Should be "nintendo,flipper"
13
141.a) The Video Interface (VI) node
15
16 Represents the interface between the graphics processor and a external
17 video encoder.
18
19 Required properties:
20
21 - compatible : should be "nintendo,flipper-vi"
22 - reg : should contain the VI registers location and length
23 - interrupts : should contain the VI interrupt
24
251.b) The Processor Interface (PI) node
26
27 Represents the data and control interface between the main processor
28 and graphics and audio processor.
29
30 Required properties:
31
32 - compatible : should be "nintendo,flipper-pi"
33 - reg : should contain the PI registers location and length
34
351.b.i) The "Flipper" interrupt controller node
36
37 Represents the interrupt controller within the "Flipper" chip.
38 The node for the "Flipper" interrupt controller must be placed under
39 the PI node.
40
41 Required properties:
42
43 - compatible : should be "nintendo,flipper-pic"
44
451.c) The Digital Signal Procesor (DSP) node
46
47 Represents the digital signal processor interface, designed to offload
48 audio related tasks.
49
50 Required properties:
51
52 - compatible : should be "nintendo,flipper-dsp"
53 - reg : should contain the DSP registers location and length
54 - interrupts : should contain the DSP interrupt
55
561.c.i) The Auxiliary RAM (ARAM) node
57
58 Represents the non cpu-addressable ram designed mainly to store audio
59 related information.
60 The ARAM node must be placed under the DSP node.
61
62 Required properties:
63
64 - compatible : should be "nintendo,flipper-aram"
65 - reg : should contain the ARAM start (zero-based) and length
66
671.d) The Disk Interface (DI) node
68
69 Represents the interface used to communicate with mass storage devices.
70
71 Required properties:
72
73 - compatible : should be "nintendo,flipper-di"
74 - reg : should contain the DI registers location and length
75 - interrupts : should contain the DI interrupt
76
771.e) The Audio Interface (AI) node
78
79 Represents the interface to the external 16-bit stereo digital-to-analog
80 converter.
81
82 Required properties:
83
84 - compatible : should be "nintendo,flipper-ai"
85 - reg : should contain the AI registers location and length
86 - interrupts : should contain the AI interrupt
87
881.f) The Serial Interface (SI) node
89
90 Represents the interface to the four single bit serial interfaces.
91 The SI is a proprietary serial interface used normally to control gamepads.
92 It's NOT a RS232-type interface.
93
94 Required properties:
95
96 - compatible : should be "nintendo,flipper-si"
97 - reg : should contain the SI registers location and length
98 - interrupts : should contain the SI interrupt
99
1001.g) The External Interface (EXI) node
101
102 Represents the multi-channel SPI-like interface.
103
104 Required properties:
105
106 - compatible : should be "nintendo,flipper-exi"
107 - reg : should contain the EXI registers location and length
108 - interrupts : should contain the EXI interrupt
109
diff --git a/Documentation/powerpc/dts-bindings/nintendo/wii.txt b/Documentation/powerpc/dts-bindings/nintendo/wii.txt
new file mode 100644
index 000000000000..a7e155a023b8
--- /dev/null
+++ b/Documentation/powerpc/dts-bindings/nintendo/wii.txt
@@ -0,0 +1,184 @@
1
2Nintendo Wii device tree
3========================
4
50) The root node
6
7 This node represents the Nintendo Wii video game console.
8
9 Required properties:
10
11 - model : Should be "nintendo,wii"
12 - compatible : Should be "nintendo,wii"
13
141) The "hollywood" node
15
16 This node represents the multi-function "Hollywood" chip, which packages
17 many of the devices found in the Nintendo Wii.
18
19 Required properties:
20
21 - compatible : Should be "nintendo,hollywood"
22
231.a) The Video Interface (VI) node
24
25 Represents the interface between the graphics processor and a external
26 video encoder.
27
28 Required properties:
29
30 - compatible : should be "nintendo,hollywood-vi","nintendo,flipper-vi"
31 - reg : should contain the VI registers location and length
32 - interrupts : should contain the VI interrupt
33
341.b) The Processor Interface (PI) node
35
36 Represents the data and control interface between the main processor
37 and graphics and audio processor.
38
39 Required properties:
40
41 - compatible : should be "nintendo,hollywood-pi","nintendo,flipper-pi"
42 - reg : should contain the PI registers location and length
43
441.b.i) The "Flipper" interrupt controller node
45
46 Represents the "Flipper" interrupt controller within the "Hollywood" chip.
47 The node for the "Flipper" interrupt controller must be placed under
48 the PI node.
49
50 Required properties:
51
52 - #interrupt-cells : <1>
53 - compatible : should be "nintendo,flipper-pic"
54 - interrupt-controller
55
561.c) The Digital Signal Procesor (DSP) node
57
58 Represents the digital signal processor interface, designed to offload
59 audio related tasks.
60
61 Required properties:
62
63 - compatible : should be "nintendo,hollywood-dsp","nintendo,flipper-dsp"
64 - reg : should contain the DSP registers location and length
65 - interrupts : should contain the DSP interrupt
66
671.d) The Serial Interface (SI) node
68
69 Represents the interface to the four single bit serial interfaces.
70 The SI is a proprietary serial interface used normally to control gamepads.
71 It's NOT a RS232-type interface.
72
73 Required properties:
74
75 - compatible : should be "nintendo,hollywood-si","nintendo,flipper-si"
76 - reg : should contain the SI registers location and length
77 - interrupts : should contain the SI interrupt
78
791.e) The Audio Interface (AI) node
80
81 Represents the interface to the external 16-bit stereo digital-to-analog
82 converter.
83
84 Required properties:
85
86 - compatible : should be "nintendo,hollywood-ai","nintendo,flipper-ai"
87 - reg : should contain the AI registers location and length
88 - interrupts : should contain the AI interrupt
89
901.f) The External Interface (EXI) node
91
92 Represents the multi-channel SPI-like interface.
93
94 Required properties:
95
96 - compatible : should be "nintendo,hollywood-exi","nintendo,flipper-exi"
97 - reg : should contain the EXI registers location and length
98 - interrupts : should contain the EXI interrupt
99
1001.g) The Open Host Controller Interface (OHCI) nodes
101
102 Represent the USB 1.x Open Host Controller Interfaces.
103
104 Required properties:
105
106 - compatible : should be "nintendo,hollywood-usb-ohci","usb-ohci"
107 - reg : should contain the OHCI registers location and length
108 - interrupts : should contain the OHCI interrupt
109
1101.h) The Enhanced Host Controller Interface (EHCI) node
111
112 Represents the USB 2.0 Enhanced Host Controller Interface.
113
114 Required properties:
115
116 - compatible : should be "nintendo,hollywood-usb-ehci","usb-ehci"
117 - reg : should contain the EHCI registers location and length
118 - interrupts : should contain the EHCI interrupt
119
1201.i) The Secure Digital Host Controller Interface (SDHCI) nodes
121
122 Represent the Secure Digital Host Controller Interfaces.
123
124 Required properties:
125
126 - compatible : should be "nintendo,hollywood-sdhci","sdhci"
127 - reg : should contain the SDHCI registers location and length
128 - interrupts : should contain the SDHCI interrupt
129
1301.j) The Inter-Processsor Communication (IPC) node
131
132 Represent the Inter-Processor Communication interface. This interface
133 enables communications between the Broadway and the Starlet processors.
134
135 - compatible : should be "nintendo,hollywood-ipc"
136 - reg : should contain the IPC registers location and length
137 - interrupts : should contain the IPC interrupt
138
1391.k) The "Hollywood" interrupt controller node
140
141 Represents the "Hollywood" interrupt controller within the
142 "Hollywood" chip.
143
144 Required properties:
145
146 - #interrupt-cells : <1>
147 - compatible : should be "nintendo,hollywood-pic"
148 - reg : should contain the controller registers location and length
149 - interrupt-controller
150 - interrupts : should contain the cascade interrupt of the "flipper" pic
151 - interrupt-parent: should contain the phandle of the "flipper" pic
152
1531.l) The General Purpose I/O (GPIO) controller node
154
155 Represents the dual access 32 GPIO controller interface.
156
157 Required properties:
158
159 - #gpio-cells : <2>
160 - compatible : should be "nintendo,hollywood-gpio"
161 - reg : should contain the IPC registers location and length
162 - gpio-controller
163
1641.m) The control node
165
166 Represents the control interface used to setup several miscellaneous
167 settings of the "Hollywood" chip like boot memory mappings, resets,
168 disk interface mode, etc.
169
170 Required properties:
171
172 - compatible : should be "nintendo,hollywood-control"
173 - reg : should contain the control registers location and length
174
1751.n) The Disk Interface (DI) node
176
177 Represents the interface used to communicate with mass storage devices.
178
179 Required properties:
180
181 - compatible : should be "nintendo,hollywood-di"
182 - reg : should contain the DI registers location and length
183 - interrupts : should contain the DI interrupt
184
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 0df57466e783..ba3948c70072 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -704,7 +704,7 @@ config PPC_PCI_CHOICE
704config PCI 704config PCI
705 bool "PCI support" if PPC_PCI_CHOICE 705 bool "PCI support" if PPC_PCI_CHOICE
706 default y if !40x && !CPM2 && !8xx && !PPC_83xx \ 706 default y if !40x && !CPM2 && !8xx && !PPC_83xx \
707 && !PPC_85xx && !PPC_86xx 707 && !PPC_85xx && !PPC_86xx && !GAMECUBE_COMMON
708 default PCI_PERMEDIA if !4xx && !CPM2 && !8xx 708 default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
709 default PCI_QSPAN if !4xx && !CPM2 && 8xx 709 default PCI_QSPAN if !4xx && !CPM2 && 8xx
710 select ARCH_SUPPORTS_MSI 710 select ARCH_SUPPORTS_MSI
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
index bf3382f1904d..5cdd7ed9a12e 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -254,6 +254,14 @@ config PPC_EARLY_DEBUG_CPM
254 using a CPM-based serial port. This assumes that the bootwrapper 254 using a CPM-based serial port. This assumes that the bootwrapper
255 has run, and set up the CPM in a particular way. 255 has run, and set up the CPM in a particular way.
256 256
257config PPC_EARLY_DEBUG_USBGECKO
258 bool "Early debugging through the USB Gecko adapter"
259 depends on GAMECUBE_COMMON
260 select USBGECKO_UDBG
261 help
262 Select this to enable early debugging for Nintendo GameCube/Wii
263 consoles via an external USB Gecko adapter.
264
257endchoice 265endchoice
258 266
259config PPC_EARLY_DEBUG_44x_PHYSLOW 267config PPC_EARLY_DEBUG_44x_PHYSLOW
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 7bfc8ad87798..bb2465bcb327 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -66,7 +66,7 @@ src-wlib := string.S crt0.S crtsavres.S stdio.c main.c \
66 gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \ 66 gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \
67 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ 67 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
68 cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ 68 cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \
69 fsl-soc.c mpc8xx.c pq2.c 69 fsl-soc.c mpc8xx.c pq2.c ugecon.c
70src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \ 70src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \
71 cuboot-ebony.c cuboot-hotfoot.c treeboot-ebony.c prpmc2800.c \ 71 cuboot-ebony.c cuboot-hotfoot.c treeboot-ebony.c prpmc2800.c \
72 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ 72 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
@@ -76,7 +76,8 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
76 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \ 76 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c \
77 cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ 77 cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \
78 virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ 78 virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \
79 cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c 79 cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \
80 gamecube-head.S gamecube.c wii-head.S wii.c
80src-boot := $(src-wlib) $(src-plat) empty.c 81src-boot := $(src-wlib) $(src-plat) empty.c
81 82
82src-boot := $(addprefix $(obj)/, $(src-boot)) 83src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -254,6 +255,8 @@ image-$(CONFIG_KSI8560) += cuImage.ksi8560
254image-$(CONFIG_STORCENTER) += cuImage.storcenter 255image-$(CONFIG_STORCENTER) += cuImage.storcenter
255image-$(CONFIG_MPC7448HPC2) += cuImage.mpc7448hpc2 256image-$(CONFIG_MPC7448HPC2) += cuImage.mpc7448hpc2
256image-$(CONFIG_PPC_C2K) += cuImage.c2k 257image-$(CONFIG_PPC_C2K) += cuImage.c2k
258image-$(CONFIG_GAMECUBE) += dtbImage.gamecube
259image-$(CONFIG_WII) += dtbImage.wii
257 260
258# Board port in arch/powerpc/platform/amigaone/Kconfig 261# Board port in arch/powerpc/platform/amigaone/Kconfig
259image-$(CONFIG_AMIGAONE) += cuImage.amigaone 262image-$(CONFIG_AMIGAONE) += cuImage.amigaone
diff --git a/arch/powerpc/boot/dts/gamecube.dts b/arch/powerpc/boot/dts/gamecube.dts
new file mode 100644
index 000000000000..ef3be0e58b02
--- /dev/null
+++ b/arch/powerpc/boot/dts/gamecube.dts
@@ -0,0 +1,114 @@
1/*
2 * arch/powerpc/boot/dts/gamecube.dts
3 *
4 * Nintendo GameCube platform device tree source
5 * Copyright (C) 2007-2009 The GameCube Linux Team
6 * Copyright (C) 2007,2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15/dts-v1/;
16
17/ {
18 model = "nintendo,gamecube";
19 compatible = "nintendo,gamecube";
20 #address-cells = <1>;
21 #size-cells = <1>;
22
23 chosen {
24 bootargs = "root=/dev/gcnsda2 rootwait udbg-immortal";
25 };
26
27 memory {
28 device_type = "memory";
29 reg = <0x00000000 0x01800000>;
30 };
31
32 cpus {
33 #address-cells = <1>;
34 #size-cells = <0>;
35
36 PowerPC,gekko@0 {
37 device_type = "cpu";
38 reg = <0>;
39 clock-frequency = <486000000>; /* 486MHz */
40 bus-frequency = <162000000>; /* 162MHz core-to-bus 3x */
41 timebase-frequency = <40500000>; /* 162MHz / 4 */
42 i-cache-line-size = <32>;
43 d-cache-line-size = <32>;
44 i-cache-size = <32768>;
45 d-cache-size = <32768>;
46 };
47 };
48
49 /* devices contained int the flipper chipset */
50 flipper {
51 #address-cells = <1>;
52 #size-cells = <1>;
53 compatible = "nintendo,flipper";
54 ranges = <0x0c000000 0x0c000000 0x00010000>;
55 interrupt-parent = <&PIC>;
56
57 video@0c002000 {
58 compatible = "nintendo,flipper-vi";
59 reg = <0x0c002000 0x100>;
60 interrupts = <8>;
61 };
62
63 processor-interface@0c003000 {
64 compatible = "nintendo,flipper-pi";
65 reg = <0x0c003000 0x100>;
66
67 PIC: pic {
68 #interrupt-cells = <1>;
69 compatible = "nintendo,flipper-pic";
70 interrupt-controller;
71 };
72 };
73
74 dsp@0c005000 {
75 #address-cells = <1>;
76 #size-cells = <1>;
77 compatible = "nintendo,flipper-dsp";
78 reg = <0x0c005000 0x200>;
79 interrupts = <6>;
80
81 memory@0 {
82 compatible = "nintendo,flipper-aram";
83 reg = <0 0x1000000>; /* 16MB */
84 };
85 };
86
87 disk@0c006000 {
88 compatible = "nintendo,flipper-di";
89 reg = <0x0c006000 0x40>;
90 interrupts = <2>;
91 };
92
93 audio@0c006c00 {
94 compatible = "nintendo,flipper-ai";
95 reg = <0x0c006c00 0x20>;
96 interrupts = <6>;
97 };
98
99 gamepad-controller@0c006400 {
100 compatible = "nintendo,flipper-si";
101 reg = <0x0c006400 0x100>;
102 interrupts = <3>;
103 };
104
105 /* External Interface bus */
106 exi@0c006800 {
107 compatible = "nintendo,flipper-exi";
108 reg = <0x0c006800 0x40>;
109 virtual-reg = <0x0c006800>;
110 interrupts = <4>;
111 };
112 };
113};
114
diff --git a/arch/powerpc/boot/dts/wii.dts b/arch/powerpc/boot/dts/wii.dts
new file mode 100644
index 000000000000..77528c9a8dbd
--- /dev/null
+++ b/arch/powerpc/boot/dts/wii.dts
@@ -0,0 +1,218 @@
1/*
2 * arch/powerpc/boot/dts/wii.dts
3 *
4 * Nintendo Wii platform device tree source
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15/dts-v1/;
16
17/*
18 * This is commented-out for now.
19 * Until a later patch is merged, the kernel can use only the first
20 * contiguous RAM range and will BUG() if the memreserve is outside
21 * that range.
22 */
23/*/memreserve/ 0x10000000 0x0004000;*/ /* DSP RAM */
24
25/ {
26 model = "nintendo,wii";
27 compatible = "nintendo,wii";
28 #address-cells = <1>;
29 #size-cells = <1>;
30
31 chosen {
32 bootargs = "root=/dev/mmcblk0p2 rootwait udbg-immortal";
33 };
34
35 memory {
36 device_type = "memory";
37 reg = <0x00000000 0x01800000 /* MEM1 24MB 1T-SRAM */
38 0x10000000 0x04000000>; /* MEM2 64MB GDDR3 */
39 };
40
41 cpus {
42 #address-cells = <1>;
43 #size-cells = <0>;
44
45 PowerPC,broadway@0 {
46 device_type = "cpu";
47 reg = <0>;
48 clock-frequency = <729000000>; /* 729MHz */
49 bus-frequency = <243000000>; /* 243MHz core-to-bus 3x */
50 timebase-frequency = <60750000>; /* 243MHz / 4 */
51 i-cache-line-size = <32>;
52 d-cache-line-size = <32>;
53 i-cache-size = <32768>;
54 d-cache-size = <32768>;
55 };
56 };
57
58 /* devices contained in the hollywood chipset */
59 hollywood {
60 #address-cells = <1>;
61 #size-cells = <1>;
62 compatible = "nintendo,hollywood";
63 ranges = <0x0c000000 0x0c000000 0x01000000
64 0x0d000000 0x0d000000 0x00800000
65 0x0d800000 0x0d800000 0x00800000>;
66 interrupt-parent = <&PIC0>;
67
68 video@0c002000 {
69 compatible = "nintendo,hollywood-vi",
70 "nintendo,flipper-vi";
71 reg = <0x0c002000 0x100>;
72 interrupts = <8>;
73 };
74
75 processor-interface@0c003000 {
76 compatible = "nintendo,hollywood-pi",
77 "nintendo,flipper-pi";
78 reg = <0x0c003000 0x100>;
79
80 PIC0: pic0 {
81 #interrupt-cells = <1>;
82 compatible = "nintendo,flipper-pic";
83 interrupt-controller;
84 };
85 };
86
87 dsp@0c005000 {
88 #address-cells = <1>;
89 #size-cells = <1>;
90 compatible = "nintendo,hollywood-dsp",
91 "nintendo,flipper-dsp";
92 reg = <0x0c005000 0x200>;
93 interrupts = <6>;
94 };
95
96 gamepad-controller@0d006400 {
97 compatible = "nintendo,hollywood-si",
98 "nintendo,flipper-si";
99 reg = <0x0d006400 0x100>;
100 interrupts = <3>;
101 };
102
103 audio@0c006c00 {
104 compatible = "nintendo,hollywood-ai",
105 "nintendo,flipper-ai";
106 reg = <0x0d006c00 0x20>;
107 interrupts = <6>;
108 };
109
110 /* External Interface bus */
111 exi@0d006800 {
112 compatible = "nintendo,hollywood-exi",
113 "nintendo,flipper-exi";
114 reg = <0x0d006800 0x40>;
115 virtual-reg = <0x0d006800>;
116 interrupts = <4>;
117 };
118
119 usb@0d040000 {
120 compatible = "nintendo,hollywood-usb-ehci",
121 "usb-ehci";
122 reg = <0x0d040000 0x100>;
123 interrupts = <4>;
124 interrupt-parent = <&PIC1>;
125 };
126
127 usb@0d050000 {
128 compatible = "nintendo,hollywood-usb-ohci",
129 "usb-ohci";
130 reg = <0x0d050000 0x100>;
131 interrupts = <5>;
132 interrupt-parent = <&PIC1>;
133 };
134
135 usb@0d060000 {
136 compatible = "nintendo,hollywood-usb-ohci",
137 "usb-ohci";
138 reg = <0x0d060000 0x100>;
139 interrupts = <6>;
140 interrupt-parent = <&PIC1>;
141 };
142
143 sd@0d070000 {
144 compatible = "nintendo,hollywood-sdhci",
145 "sdhci";
146 reg = <0x0d070000 0x200>;
147 interrupts = <7>;
148 interrupt-parent = <&PIC1>;
149 };
150
151 sdio@0d080000 {
152 compatible = "nintendo,hollywood-sdhci",
153 "sdhci";
154 reg = <0x0d080000 0x200>;
155 interrupts = <8>;
156 interrupt-parent = <&PIC1>;
157 };
158
159 ipc@0d000000 {
160 compatible = "nintendo,hollywood-ipc";
161 reg = <0x0d000000 0x10>;
162 interrupts = <30>;
163 interrupt-parent = <&PIC1>;
164 };
165
166 PIC1: pic1@0d800030 {
167 #interrupt-cells = <1>;
168 compatible = "nintendo,hollywood-pic";
169 reg = <0x0d800030 0x10>;
170 interrupt-controller;
171 interrupts = <14>;
172 };
173
174 GPIO: gpio@0d8000c0 {
175 #gpio-cells = <2>;
176 compatible = "nintendo,hollywood-gpio";
177 reg = <0x0d8000c0 0x40>;
178 gpio-controller;
179
180 /*
181 * This is commented out while a standard binding
182 * for i2c over gpio is defined.
183 */
184 /*
185 i2c-video {
186 #address-cells = <1>;
187 #size-cells = <0>;
188 compatible = "i2c-gpio";
189
190 gpios = <&GPIO 15 0
191 &GPIO 14 0>;
192 clock-frequency = <250000>;
193 no-clock-stretching;
194 scl-is-open-drain;
195 sda-is-open-drain;
196 sda-enforce-dir;
197
198 AVE: audio-video-encoder@70 {
199 compatible = "nintendo,wii-audio-video-encoder";
200 reg = <0x70>;
201 };
202 };
203 */
204 };
205
206 control@0d800100 {
207 compatible = "nintendo,hollywood-control";
208 reg = <0x0d800100 0x300>;
209 };
210
211 disk@0d806000 {
212 compatible = "nintendo,hollywood-di";
213 reg = <0x0d806000 0x40>;
214 interrupts = <2>;
215 };
216 };
217};
218
diff --git a/arch/powerpc/boot/gamecube-head.S b/arch/powerpc/boot/gamecube-head.S
new file mode 100644
index 000000000000..65a9b2a3bf33
--- /dev/null
+++ b/arch/powerpc/boot/gamecube-head.S
@@ -0,0 +1,111 @@
1/*
2 * arch/powerpc/boot/gamecube-head.S
3 *
4 * Nintendo GameCube bootwrapper entry.
5 * Copyright (C) 2004-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include "ppc_asm.h"
16
17/*
18 * The entry code does no assumptions regarding:
19 * - if the data and instruction caches are enabled or not
20 * - if the MMU is enabled or not
21 *
22 * We enable the caches if not already enabled, enable the MMU with an
23 * identity mapping scheme and jump to the start code.
24 */
25
26 .text
27
28 .globl _zimage_start
29_zimage_start:
30
31 /* turn the MMU off */
32 mfmsr 9
33 rlwinm 9, 9, 0, ~((1<<4)|(1<<5)) /* MSR_DR|MSR_IR */
34 bcl 20, 31, 1f
351:
36 mflr 8
37 clrlwi 8, 8, 3 /* convert to a real address */
38 addi 8, 8, _mmu_off - 1b
39 mtsrr0 8
40 mtsrr1 9
41 rfi
42_mmu_off:
43 /* MMU disabled */
44
45 /* setup BATs */
46 isync
47 li 8, 0
48 mtspr 0x210, 8 /* IBAT0U */
49 mtspr 0x212, 8 /* IBAT1U */
50 mtspr 0x214, 8 /* IBAT2U */
51 mtspr 0x216, 8 /* IBAT3U */
52 mtspr 0x218, 8 /* DBAT0U */
53 mtspr 0x21a, 8 /* DBAT1U */
54 mtspr 0x21c, 8 /* DBAT2U */
55 mtspr 0x21e, 8 /* DBAT3U */
56
57 li 8, 0x01ff /* first 16MiB */
58 li 9, 0x0002 /* rw */
59 mtspr 0x211, 9 /* IBAT0L */
60 mtspr 0x210, 8 /* IBAT0U */
61 mtspr 0x219, 9 /* DBAT0L */
62 mtspr 0x218, 8 /* DBAT0U */
63
64 lis 8, 0x0c00 /* I/O mem */
65 ori 8, 8, 0x3ff /* 32MiB */
66 lis 9, 0x0c00
67 ori 9, 9, 0x002a /* uncached, guarded, rw */
68 mtspr 0x21b, 9 /* DBAT1L */
69 mtspr 0x21a, 8 /* DBAT1U */
70
71 lis 8, 0x0100 /* next 8MiB */
72 ori 8, 8, 0x00ff /* 8MiB */
73 lis 9, 0x0100
74 ori 9, 9, 0x0002 /* rw */
75 mtspr 0x215, 9 /* IBAT2L */
76 mtspr 0x214, 8 /* IBAT2U */
77 mtspr 0x21d, 9 /* DBAT2L */
78 mtspr 0x21c, 8 /* DBAT2U */
79
80 /* enable and invalidate the caches if not already enabled */
81 mfspr 8, 0x3f0 /* HID0 */
82 andi. 0, 8, (1<<15) /* HID0_ICE */
83 bne 1f
84 ori 8, 8, (1<<15)|(1<<11) /* HID0_ICE|HID0_ICFI*/
851:
86 andi. 0, 8, (1<<14) /* HID0_DCE */
87 bne 1f
88 ori 8, 8, (1<<14)|(1<<10) /* HID0_DCE|HID0_DCFI*/
891:
90 mtspr 0x3f0, 8 /* HID0 */
91 isync
92
93 /* initialize arguments */
94 li 3, 0
95 li 4, 0
96 li 5, 0
97
98 /* turn the MMU on */
99 bcl 20, 31, 1f
1001:
101 mflr 8
102 addi 8, 8, _mmu_on - 1b
103 mfmsr 9
104 ori 9, 9, (1<<4)|(1<<5) /* MSR_DR|MSR_IR */
105 mtsrr0 8
106 mtsrr1 9
107 sync
108 rfi
109_mmu_on:
110 b _zimage_start_lib
111
diff --git a/arch/powerpc/boot/gamecube.c b/arch/powerpc/boot/gamecube.c
new file mode 100644
index 000000000000..28ae7057be5e
--- /dev/null
+++ b/arch/powerpc/boot/gamecube.c
@@ -0,0 +1,35 @@
1/*
2 * arch/powerpc/boot/gamecube.c
3 *
4 * Nintendo GameCube bootwrapper support
5 * Copyright (C) 2004-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include <stddef.h>
16#include "stdio.h"
17#include "types.h"
18#include "io.h"
19#include "ops.h"
20
21#include "ugecon.h"
22
23BSS_STACK(8192);
24
25void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
26{
27 u32 heapsize = 16*1024*1024 - (u32)_end;
28
29 simple_alloc_init(_end, heapsize, 32, 64);
30 fdt_init(_dtb_start);
31
32 if (ug_probe())
33 console_ops.write = ug_console_write;
34}
35
diff --git a/arch/powerpc/boot/ugecon.c b/arch/powerpc/boot/ugecon.c
new file mode 100644
index 000000000000..50609ea6ddf8
--- /dev/null
+++ b/arch/powerpc/boot/ugecon.c
@@ -0,0 +1,147 @@
1/*
2 * arch/powerpc/boot/ugecon.c
3 *
4 * USB Gecko bootwrapper console.
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include <stddef.h>
16#include "stdio.h"
17#include "types.h"
18#include "io.h"
19#include "ops.h"
20
21
22#define EXI_CLK_32MHZ 5
23
24#define EXI_CSR 0x00
25#define EXI_CSR_CLKMASK (0x7<<4)
26#define EXI_CSR_CLK_32MHZ (EXI_CLK_32MHZ<<4)
27#define EXI_CSR_CSMASK (0x7<<7)
28#define EXI_CSR_CS_0 (0x1<<7) /* Chip Select 001 */
29
30#define EXI_CR 0x0c
31#define EXI_CR_TSTART (1<<0)
32#define EXI_CR_WRITE (1<<2)
33#define EXI_CR_READ_WRITE (2<<2)
34#define EXI_CR_TLEN(len) (((len)-1)<<4)
35
36#define EXI_DATA 0x10
37
38
39/* virtual address base for input/output, retrieved from device tree */
40static void *ug_io_base;
41
42
43static u32 ug_io_transaction(u32 in)
44{
45 u32 *csr_reg = ug_io_base + EXI_CSR;
46 u32 *data_reg = ug_io_base + EXI_DATA;
47 u32 *cr_reg = ug_io_base + EXI_CR;
48 u32 csr, data, cr;
49
50 /* select */
51 csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0;
52 out_be32(csr_reg, csr);
53
54 /* read/write */
55 data = in;
56 out_be32(data_reg, data);
57 cr = EXI_CR_TLEN(2) | EXI_CR_READ_WRITE | EXI_CR_TSTART;
58 out_be32(cr_reg, cr);
59
60 while (in_be32(cr_reg) & EXI_CR_TSTART)
61 barrier();
62
63 /* deselect */
64 out_be32(csr_reg, 0);
65
66 data = in_be32(data_reg);
67 return data;
68}
69
70static int ug_is_txfifo_ready(void)
71{
72 return ug_io_transaction(0xc0000000) & 0x04000000;
73}
74
75static void ug_raw_putc(char ch)
76{
77 ug_io_transaction(0xb0000000 | (ch << 20));
78}
79
80static void ug_putc(char ch)
81{
82 int count = 16;
83
84 if (!ug_io_base)
85 return;
86
87 while (!ug_is_txfifo_ready() && count--)
88 barrier();
89 if (count)
90 ug_raw_putc(ch);
91}
92
93void ug_console_write(const char *buf, int len)
94{
95 char *b = (char *)buf;
96
97 while (len--) {
98 if (*b == '\n')
99 ug_putc('\r');
100 ug_putc(*b++);
101 }
102}
103
104static int ug_is_adapter_present(void)
105{
106 if (!ug_io_base)
107 return 0;
108 return ug_io_transaction(0x90000000) == 0x04700000;
109}
110
111static void *ug_grab_exi_io_base(void)
112{
113 u32 v;
114 void *devp;
115
116 devp = find_node_by_compatible(NULL, "nintendo,flipper-exi");
117 if (devp == NULL)
118 goto err_out;
119 if (getprop(devp, "virtual-reg", &v, sizeof(v)) != sizeof(v))
120 goto err_out;
121
122 return (void *)v;
123
124err_out:
125 return NULL;
126}
127
128void *ug_probe(void)
129{
130 void *exi_io_base;
131 int i;
132
133 exi_io_base = ug_grab_exi_io_base();
134 if (!exi_io_base)
135 return NULL;
136
137 /* look for a usbgecko on memcard slots A and B */
138 for (i = 0; i < 2; i++) {
139 ug_io_base = exi_io_base + 0x14 * i;
140 if (ug_is_adapter_present())
141 break;
142 }
143 if (i == 2)
144 ug_io_base = NULL;
145 return ug_io_base;
146}
147
diff --git a/arch/powerpc/boot/ugecon.h b/arch/powerpc/boot/ugecon.h
new file mode 100644
index 000000000000..43737539169b
--- /dev/null
+++ b/arch/powerpc/boot/ugecon.h
@@ -0,0 +1,24 @@
1/*
2 * arch/powerpc/boot/ugecon.h
3 *
4 * USB Gecko early bootwrapper console.
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#ifndef __UGECON_H
16#define __UGECON_H
17
18extern void *ug_probe(void);
19
20extern void ug_putc(char ch);
21extern void ug_console_write(const char *buf, int len);
22
23#endif /* __UGECON_H */
24
diff --git a/arch/powerpc/boot/wii-head.S b/arch/powerpc/boot/wii-head.S
new file mode 100644
index 000000000000..edd79b836fcf
--- /dev/null
+++ b/arch/powerpc/boot/wii-head.S
@@ -0,0 +1,142 @@
1/*
2 * arch/powerpc/boot/wii-head.S
3 *
4 * Nintendo Wii bootwrapper entry.
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include "ppc_asm.h"
16
17/*
18 * The entry code does no assumptions regarding:
19 * - if the data and instruction caches are enabled or not
20 * - if the MMU is enabled or not
21 * - if the high BATs are enabled or not
22 *
23 * We enable the high BATs, enable the caches if not already enabled,
24 * enable the MMU with an identity mapping scheme and jump to the start code.
25 */
26
27 .text
28
29 .globl _zimage_start
30_zimage_start:
31
32 /* turn the MMU off */
33 mfmsr 9
34 rlwinm 9, 9, 0, ~((1<<4)|(1<<5)) /* MSR_DR|MSR_IR */
35 bcl 20, 31, 1f
361:
37 mflr 8
38 clrlwi 8, 8, 3 /* convert to a real address */
39 addi 8, 8, _mmu_off - 1b
40 mtsrr0 8
41 mtsrr1 9
42 rfi
43_mmu_off:
44 /* MMU disabled */
45
46 /* setup BATs */
47 isync
48 li 8, 0
49 mtspr 0x210, 8 /* IBAT0U */
50 mtspr 0x212, 8 /* IBAT1U */
51 mtspr 0x214, 8 /* IBAT2U */
52 mtspr 0x216, 8 /* IBAT3U */
53 mtspr 0x218, 8 /* DBAT0U */
54 mtspr 0x21a, 8 /* DBAT1U */
55 mtspr 0x21c, 8 /* DBAT2U */
56 mtspr 0x21e, 8 /* DBAT3U */
57
58 mtspr 0x230, 8 /* IBAT4U */
59 mtspr 0x232, 8 /* IBAT5U */
60 mtspr 0x234, 8 /* IBAT6U */
61 mtspr 0x236, 8 /* IBAT7U */
62 mtspr 0x238, 8 /* DBAT4U */
63 mtspr 0x23a, 8 /* DBAT5U */
64 mtspr 0x23c, 8 /* DBAT6U */
65 mtspr 0x23e, 8 /* DBAT7U */
66
67 li 8, 0x01ff /* first 16MiB */
68 li 9, 0x0002 /* rw */
69 mtspr 0x211, 9 /* IBAT0L */
70 mtspr 0x210, 8 /* IBAT0U */
71 mtspr 0x219, 9 /* DBAT0L */
72 mtspr 0x218, 8 /* DBAT0U */
73
74 lis 8, 0x0c00 /* I/O mem */
75 ori 8, 8, 0x3ff /* 32MiB */
76 lis 9, 0x0c00
77 ori 9, 9, 0x002a /* uncached, guarded, rw */
78 mtspr 0x21b, 9 /* DBAT1L */
79 mtspr 0x21a, 8 /* DBAT1U */
80
81 lis 8, 0x0100 /* next 8MiB */
82 ori 8, 8, 0x00ff /* 8MiB */
83 lis 9, 0x0100
84 ori 9, 9, 0x0002 /* rw */
85 mtspr 0x215, 9 /* IBAT2L */
86 mtspr 0x214, 8 /* IBAT2U */
87 mtspr 0x21d, 9 /* DBAT2L */
88 mtspr 0x21c, 8 /* DBAT2U */
89
90 lis 8, 0x1000 /* MEM2 */
91 ori 8, 8, 0x07ff /* 64MiB */
92 lis 9, 0x1000
93 ori 9, 9, 0x0002 /* rw */
94 mtspr 0x216, 8 /* IBAT3U */
95 mtspr 0x217, 9 /* IBAT3L */
96 mtspr 0x21e, 8 /* DBAT3U */
97 mtspr 0x21f, 9 /* DBAT3L */
98
99 /* enable the high BATs */
100 mfspr 8, 0x3f3 /* HID4 */
101 oris 8, 8, 0x0200
102 mtspr 0x3f3, 8 /* HID4 */
103
104 /* enable and invalidate the caches if not already enabled */
105 mfspr 8, 0x3f0 /* HID0 */
106 andi. 0, 8, (1<<15) /* HID0_ICE */
107 bne 1f
108 ori 8, 8, (1<<15)|(1<<11) /* HID0_ICE|HID0_ICFI*/
1091:
110 andi. 0, 8, (1<<14) /* HID0_DCE */
111 bne 1f
112 ori 8, 8, (1<<14)|(1<<10) /* HID0_DCE|HID0_DCFI*/
1131:
114 mtspr 0x3f0, 8 /* HID0 */
115 isync
116
117 /* initialize arguments */
118 li 3, 0
119 li 4, 0
120 li 5, 0
121
122 /* turn the MMU on */
123 bcl 20, 31, 1f
1241:
125 mflr 8
126 addi 8, 8, _mmu_on - 1b
127 mfmsr 9
128 ori 9, 9, (1<<4)|(1<<5) /* MSR_DR|MSR_IR */
129 mtsrr0 8
130 mtsrr1 9
131 sync
132 rfi
133_mmu_on:
134 /* turn on the front blue led (aka: yay! we got here!) */
135 lis 8, 0x0d00
136 ori 8, 8, 0x00c0
137 lwz 9, 0(8)
138 ori 9, 9, 0x20
139 stw 9, 0(8)
140
141 b _zimage_start_lib
142
diff --git a/arch/powerpc/boot/wii.c b/arch/powerpc/boot/wii.c
new file mode 100644
index 000000000000..2ebaec0344dd
--- /dev/null
+++ b/arch/powerpc/boot/wii.c
@@ -0,0 +1,158 @@
1/*
2 * arch/powerpc/boot/wii.c
3 *
4 * Nintendo Wii bootwrapper support
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include <stddef.h>
16#include "stdio.h"
17#include "types.h"
18#include "io.h"
19#include "ops.h"
20
21#include "ugecon.h"
22
23BSS_STACK(8192);
24
25#define HW_REG(x) ((void *)(x))
26
27#define EXI_CTRL HW_REG(0x0d800070)
28#define EXI_CTRL_ENABLE (1<<0)
29
30#define MEM2_TOP (0x10000000 + 64*1024*1024)
31#define FIRMWARE_DEFAULT_SIZE (12*1024*1024)
32
33
34struct mipc_infohdr {
35 char magic[3];
36 u8 version;
37 u32 mem2_boundary;
38 u32 ipc_in;
39 size_t ipc_in_size;
40 u32 ipc_out;
41 size_t ipc_out_size;
42};
43
44static int mipc_check_address(u32 pa)
45{
46 /* only MEM2 addresses */
47 if (pa < 0x10000000 || pa > 0x14000000)
48 return -EINVAL;
49 return 0;
50}
51
52static struct mipc_infohdr *mipc_get_infohdr(void)
53{
54 struct mipc_infohdr **hdrp, *hdr;
55
56 /* 'mini' header pointer is the last word of MEM2 memory */
57 hdrp = (struct mipc_infohdr **)0x13fffffc;
58 if (mipc_check_address((u32)hdrp)) {
59 printf("mini: invalid hdrp %08X\n", (u32)hdrp);
60 hdr = NULL;
61 goto out;
62 }
63
64 hdr = *hdrp;
65 if (mipc_check_address((u32)hdr)) {
66 printf("mini: invalid hdr %08X\n", (u32)hdr);
67 hdr = NULL;
68 goto out;
69 }
70 if (memcmp(hdr->magic, "IPC", 3)) {
71 printf("mini: invalid magic\n");
72 hdr = NULL;
73 goto out;
74 }
75
76out:
77 return hdr;
78}
79
80static int mipc_get_mem2_boundary(u32 *mem2_boundary)
81{
82 struct mipc_infohdr *hdr;
83 int error;
84
85 hdr = mipc_get_infohdr();
86 if (!hdr) {
87 error = -1;
88 goto out;
89 }
90
91 if (mipc_check_address(hdr->mem2_boundary)) {
92 printf("mini: invalid mem2_boundary %08X\n",
93 hdr->mem2_boundary);
94 error = -EINVAL;
95 goto out;
96 }
97 *mem2_boundary = hdr->mem2_boundary;
98 error = 0;
99out:
100 return error;
101
102}
103
104static void platform_fixups(void)
105{
106 void *mem;
107 u32 reg[4];
108 u32 mem2_boundary;
109 int len;
110 int error;
111
112 mem = finddevice("/memory");
113 if (!mem)
114 fatal("Can't find memory node\n");
115
116 /* two ranges of (address, size) words */
117 len = getprop(mem, "reg", reg, sizeof(reg));
118 if (len != sizeof(reg)) {
119 /* nothing to do */
120 goto out;
121 }
122
123 /* retrieve MEM2 boundary from 'mini' */
124 error = mipc_get_mem2_boundary(&mem2_boundary);
125 if (error) {
126 /* if that fails use a sane value */
127 mem2_boundary = MEM2_TOP - FIRMWARE_DEFAULT_SIZE;
128 }
129
130 if (mem2_boundary > reg[2] && mem2_boundary < reg[2] + reg[3]) {
131 reg[3] = mem2_boundary - reg[2];
132 printf("top of MEM2 @ %08X\n", reg[2] + reg[3]);
133 setprop(mem, "reg", reg, sizeof(reg));
134 }
135
136out:
137 return;
138}
139
140void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
141{
142 u32 heapsize = 24*1024*1024 - (u32)_end;
143
144 simple_alloc_init(_end, heapsize, 32, 64);
145 fdt_init(_dtb_start);
146
147 /*
148 * 'mini' boots the Broadway processor with EXI disabled.
149 * We need it enabled before probing for the USB Gecko.
150 */
151 out_be32(EXI_CTRL, in_be32(EXI_CTRL) | EXI_CTRL_ENABLE);
152
153 if (ug_probe())
154 console_ops.write = ug_console_write;
155
156 platform_ops.fixups = platform_fixups;
157}
158
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index ac9e9a58b2b0..390512ae7f86 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -230,6 +230,10 @@ xpedite52*)
230 link_address='0x1400000' 230 link_address='0x1400000'
231 platformo=$object/cuboot-85xx.o 231 platformo=$object/cuboot-85xx.o
232 ;; 232 ;;
233gamecube|wii)
234 link_address='0x600000'
235 platformo="$object/$platform-head.o $object/$platform.o"
236 ;;
233esac 237esac
234 238
235vmz="$tmpdir/`basename \"$kernel\"`.$ext" 239vmz="$tmpdir/`basename \"$kernel\"`.$ext"
diff --git a/arch/powerpc/configs/gamecube_defconfig b/arch/powerpc/configs/gamecube_defconfig
new file mode 100644
index 000000000000..942e1193e9e4
--- /dev/null
+++ b/arch/powerpc/configs/gamecube_defconfig
@@ -0,0 +1,1061 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32-rc8
4# Sun Nov 22 21:07:30 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
19CONFIG_PPC_FPU=y
20# CONFIG_ALTIVEC is not set
21CONFIG_PPC_STD_MMU=y
22CONFIG_PPC_STD_MMU_32=y
23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
25CONFIG_PPC_PERF_CTRS=y
26# CONFIG_SMP is not set
27CONFIG_NOT_COHERENT_CACHE=y
28CONFIG_PPC32=y
29CONFIG_WORD_SIZE=32
30# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
31CONFIG_MMU=y
32CONFIG_GENERIC_CMOS_UPDATE=y
33CONFIG_GENERIC_TIME=y
34CONFIG_GENERIC_TIME_VSYSCALL=y
35CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y
41CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
44CONFIG_LOCKDEP_SUPPORT=y
45CONFIG_RWSEM_XCHGADD_ALGORITHM=y
46CONFIG_ARCH_HAS_ILOG2_U32=y
47CONFIG_GENERIC_HWEIGHT=y
48CONFIG_GENERIC_FIND_NEXT_BIT=y
49# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
50CONFIG_PPC=y
51CONFIG_EARLY_PRINTK=y
52CONFIG_GENERIC_NVRAM=y
53CONFIG_SCHED_OMIT_FRAME_POINTER=y
54CONFIG_ARCH_MAY_HAVE_PC_FDC=y
55CONFIG_PPC_OF=y
56CONFIG_OF=y
57# CONFIG_PPC_UDBG_16550 is not set
58# CONFIG_GENERIC_TBSYNC is not set
59CONFIG_AUDIT_ARCH=y
60CONFIG_GENERIC_BUG=y
61CONFIG_DTC=y
62# CONFIG_DEFAULT_UIMAGE is not set
63# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67CONFIG_CONSTRUCTORS=y
68
69#
70# General setup
71#
72CONFIG_EXPERIMENTAL=y
73CONFIG_BROKEN_ON_SMP=y
74CONFIG_LOCK_KERNEL=y
75CONFIG_INIT_ENV_ARG_LIMIT=32
76CONFIG_LOCALVERSION="-gcn"
77CONFIG_LOCALVERSION_AUTO=y
78CONFIG_SWAP=y
79CONFIG_SYSVIPC=y
80CONFIG_SYSVIPC_SYSCTL=y
81# CONFIG_POSIX_MQUEUE is not set
82# CONFIG_BSD_PROCESS_ACCT is not set
83# CONFIG_TASKSTATS is not set
84# CONFIG_AUDIT is not set
85
86#
87# RCU Subsystem
88#
89CONFIG_TREE_RCU=y
90# CONFIG_TREE_PREEMPT_RCU is not set
91# CONFIG_RCU_TRACE is not set
92CONFIG_RCU_FANOUT=32
93# CONFIG_RCU_FANOUT_EXACT is not set
94# CONFIG_TREE_RCU_TRACE is not set
95CONFIG_IKCONFIG=y
96CONFIG_IKCONFIG_PROC=y
97CONFIG_LOG_BUF_SHIFT=14
98CONFIG_GROUP_SCHED=y
99CONFIG_FAIR_GROUP_SCHED=y
100# CONFIG_RT_GROUP_SCHED is not set
101CONFIG_USER_SCHED=y
102# CONFIG_CGROUP_SCHED is not set
103# CONFIG_CGROUPS is not set
104CONFIG_SYSFS_DEPRECATED=y
105CONFIG_SYSFS_DEPRECATED_V2=y
106# CONFIG_RELAY is not set
107# CONFIG_NAMESPACES is not set
108CONFIG_BLK_DEV_INITRD=y
109CONFIG_INITRAMFS_SOURCE=""
110CONFIG_RD_GZIP=y
111# CONFIG_RD_BZIP2 is not set
112# CONFIG_RD_LZMA is not set
113# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
114CONFIG_SYSCTL=y
115CONFIG_ANON_INODES=y
116CONFIG_EMBEDDED=y
117CONFIG_SYSCTL_SYSCALL=y
118CONFIG_KALLSYMS=y
119CONFIG_KALLSYMS_ALL=y
120# CONFIG_KALLSYMS_EXTRA_PASS is not set
121CONFIG_HOTPLUG=y
122CONFIG_PRINTK=y
123CONFIG_BUG=y
124# CONFIG_ELF_CORE is not set
125CONFIG_BASE_FULL=y
126CONFIG_FUTEX=y
127CONFIG_EPOLL=y
128CONFIG_SIGNALFD=y
129CONFIG_TIMERFD=y
130CONFIG_EVENTFD=y
131CONFIG_SHMEM=y
132CONFIG_AIO=y
133CONFIG_HAVE_PERF_EVENTS=y
134
135#
136# Kernel Performance Events And Counters
137#
138CONFIG_PERF_EVENTS=y
139CONFIG_EVENT_PROFILE=y
140CONFIG_PERF_COUNTERS=y
141# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
142# CONFIG_VM_EVENT_COUNTERS is not set
143CONFIG_COMPAT_BRK=y
144CONFIG_SLAB=y
145# CONFIG_SLUB is not set
146# CONFIG_SLOB is not set
147# CONFIG_PROFILING is not set
148CONFIG_TRACEPOINTS=y
149CONFIG_HAVE_OPROFILE=y
150# CONFIG_KPROBES is not set
151CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
152CONFIG_HAVE_IOREMAP_PROT=y
153CONFIG_HAVE_KPROBES=y
154CONFIG_HAVE_KRETPROBES=y
155CONFIG_HAVE_ARCH_TRACEHOOK=y
156CONFIG_HAVE_DMA_ATTRS=y
157CONFIG_HAVE_DMA_API_DEBUG=y
158
159#
160# GCOV-based kernel profiling
161#
162# CONFIG_GCOV_KERNEL is not set
163CONFIG_SLOW_WORK=y
164# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
165CONFIG_SLABINFO=y
166CONFIG_RT_MUTEXES=y
167CONFIG_BASE_SMALL=0
168CONFIG_MODULES=y
169# CONFIG_MODULE_FORCE_LOAD is not set
170CONFIG_MODULE_UNLOAD=y
171# CONFIG_MODULE_FORCE_UNLOAD is not set
172# CONFIG_MODVERSIONS is not set
173# CONFIG_MODULE_SRCVERSION_ALL is not set
174CONFIG_BLOCK=y
175CONFIG_LBDAF=y
176# CONFIG_BLK_DEV_BSG is not set
177# CONFIG_BLK_DEV_INTEGRITY is not set
178
179#
180# IO Schedulers
181#
182CONFIG_IOSCHED_NOOP=y
183CONFIG_IOSCHED_AS=y
184CONFIG_IOSCHED_DEADLINE=y
185CONFIG_IOSCHED_CFQ=y
186CONFIG_DEFAULT_AS=y
187# CONFIG_DEFAULT_DEADLINE is not set
188# CONFIG_DEFAULT_CFQ is not set
189# CONFIG_DEFAULT_NOOP is not set
190CONFIG_DEFAULT_IOSCHED="anticipatory"
191# CONFIG_FREEZER is not set
192
193#
194# Platform support
195#
196# CONFIG_PPC_CHRP is not set
197# CONFIG_MPC5121_ADS is not set
198# CONFIG_MPC5121_GENERIC is not set
199# CONFIG_PPC_MPC52xx is not set
200# CONFIG_PPC_PMAC is not set
201# CONFIG_PPC_CELL is not set
202# CONFIG_PPC_CELL_NATIVE is not set
203# CONFIG_PPC_82xx is not set
204# CONFIG_PQ2ADS is not set
205# CONFIG_PPC_83xx is not set
206# CONFIG_PPC_86xx is not set
207CONFIG_EMBEDDED6xx=y
208# CONFIG_LINKSTATION is not set
209# CONFIG_STORCENTER is not set
210# CONFIG_MPC7448HPC2 is not set
211# CONFIG_PPC_HOLLY is not set
212# CONFIG_PPC_PRPMC2800 is not set
213# CONFIG_PPC_C2K is not set
214CONFIG_GAMECUBE_COMMON=y
215CONFIG_USBGECKO_UDBG=y
216CONFIG_FLIPPER_PIC=y
217CONFIG_GAMECUBE=y
218# CONFIG_WII is not set
219# CONFIG_AMIGAONE is not set
220# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
221# CONFIG_IPIC is not set
222# CONFIG_MPIC is not set
223# CONFIG_MPIC_WEIRD is not set
224# CONFIG_PPC_I8259 is not set
225# CONFIG_PPC_RTAS is not set
226# CONFIG_MMIO_NVRAM is not set
227# CONFIG_PPC_MPC106 is not set
228# CONFIG_PPC_970_NAP is not set
229# CONFIG_PPC_INDIRECT_IO is not set
230# CONFIG_GENERIC_IOMAP is not set
231# CONFIG_CPU_FREQ is not set
232# CONFIG_TAU is not set
233# CONFIG_FSL_ULI1575 is not set
234# CONFIG_SIMPLE_GPIO is not set
235
236#
237# Kernel options
238#
239# CONFIG_HIGHMEM is not set
240# CONFIG_NO_HZ is not set
241# CONFIG_HIGH_RES_TIMERS is not set
242CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
243# CONFIG_HZ_100 is not set
244CONFIG_HZ_250=y
245# CONFIG_HZ_300 is not set
246# CONFIG_HZ_1000 is not set
247CONFIG_HZ=250
248# CONFIG_SCHED_HRTICK is not set
249# CONFIG_PREEMPT_NONE is not set
250# CONFIG_PREEMPT_VOLUNTARY is not set
251CONFIG_PREEMPT=y
252CONFIG_BINFMT_ELF=y
253# CONFIG_HAVE_AOUT is not set
254CONFIG_BINFMT_MISC=m
255# CONFIG_IOMMU_HELPER is not set
256# CONFIG_SWIOTLB is not set
257CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
258CONFIG_ARCH_HAS_WALK_MEMORY=y
259CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
260CONFIG_KEXEC=y
261# CONFIG_CRASH_DUMP is not set
262CONFIG_MAX_ACTIVE_REGIONS=32
263CONFIG_ARCH_FLATMEM_ENABLE=y
264CONFIG_ARCH_POPULATES_NODE_MAP=y
265CONFIG_SELECT_MEMORY_MODEL=y
266CONFIG_FLATMEM_MANUAL=y
267# CONFIG_DISCONTIGMEM_MANUAL is not set
268# CONFIG_SPARSEMEM_MANUAL is not set
269CONFIG_FLATMEM=y
270CONFIG_FLAT_NODE_MEM_MAP=y
271CONFIG_PAGEFLAGS_EXTENDED=y
272CONFIG_SPLIT_PTLOCK_CPUS=4
273# CONFIG_MIGRATION is not set
274# CONFIG_PHYS_ADDR_T_64BIT is not set
275CONFIG_ZONE_DMA_FLAG=1
276CONFIG_BOUNCE=y
277CONFIG_VIRT_TO_BUS=y
278CONFIG_HAVE_MLOCK=y
279CONFIG_HAVE_MLOCKED_PAGE_BIT=y
280# CONFIG_KSM is not set
281CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
282CONFIG_PPC_4K_PAGES=y
283# CONFIG_PPC_16K_PAGES is not set
284# CONFIG_PPC_64K_PAGES is not set
285# CONFIG_PPC_256K_PAGES is not set
286CONFIG_FORCE_MAX_ZONEORDER=11
287CONFIG_PROC_DEVICETREE=y
288# CONFIG_CMDLINE_BOOL is not set
289CONFIG_EXTRA_TARGETS=""
290# CONFIG_PM is not set
291# CONFIG_SECCOMP is not set
292CONFIG_ISA_DMA_API=y
293
294#
295# Bus options
296#
297CONFIG_ZONE_DMA=y
298CONFIG_GENERIC_ISA_DMA=y
299# CONFIG_PCI is not set
300# CONFIG_PCI_DOMAINS is not set
301# CONFIG_PCI_SYSCALL is not set
302# CONFIG_ARCH_SUPPORTS_MSI is not set
303# CONFIG_PCCARD is not set
304# CONFIG_HAS_RAPIDIO is not set
305
306#
307# Advanced setup
308#
309CONFIG_ADVANCED_OPTIONS=y
310# CONFIG_LOWMEM_SIZE_BOOL is not set
311CONFIG_LOWMEM_SIZE=0x30000000
312# CONFIG_PAGE_OFFSET_BOOL is not set
313CONFIG_PAGE_OFFSET=0xc0000000
314# CONFIG_KERNEL_START_BOOL is not set
315CONFIG_KERNEL_START=0xc0000000
316CONFIG_PHYSICAL_START=0x00000000
317# CONFIG_TASK_SIZE_BOOL is not set
318CONFIG_TASK_SIZE=0xc0000000
319# CONFIG_CONSISTENT_SIZE_BOOL is not set
320CONFIG_CONSISTENT_SIZE=0x00200000
321CONFIG_NET=y
322
323#
324# Networking options
325#
326CONFIG_PACKET=y
327# CONFIG_PACKET_MMAP is not set
328CONFIG_UNIX=y
329# CONFIG_NET_KEY is not set
330CONFIG_INET=y
331# CONFIG_IP_MULTICAST is not set
332# CONFIG_IP_ADVANCED_ROUTER is not set
333CONFIG_IP_FIB_HASH=y
334CONFIG_IP_PNP=y
335CONFIG_IP_PNP_DHCP=y
336# CONFIG_IP_PNP_BOOTP is not set
337CONFIG_IP_PNP_RARP=y
338# CONFIG_NET_IPIP is not set
339# CONFIG_NET_IPGRE is not set
340# CONFIG_ARPD is not set
341# CONFIG_SYN_COOKIES is not set
342# CONFIG_INET_AH is not set
343# CONFIG_INET_ESP is not set
344# CONFIG_INET_IPCOMP is not set
345# CONFIG_INET_XFRM_TUNNEL is not set
346# CONFIG_INET_TUNNEL is not set
347# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
348# CONFIG_INET_XFRM_MODE_TUNNEL is not set
349# CONFIG_INET_XFRM_MODE_BEET is not set
350# CONFIG_INET_LRO is not set
351# CONFIG_INET_DIAG is not set
352# CONFIG_TCP_CONG_ADVANCED is not set
353CONFIG_TCP_CONG_CUBIC=y
354CONFIG_DEFAULT_TCP_CONG="cubic"
355# CONFIG_TCP_MD5SIG is not set
356# CONFIG_IPV6 is not set
357# CONFIG_NETWORK_SECMARK is not set
358# CONFIG_NETFILTER is not set
359# CONFIG_IP_DCCP is not set
360# CONFIG_IP_SCTP is not set
361# CONFIG_RDS is not set
362# CONFIG_TIPC is not set
363# CONFIG_ATM is not set
364# CONFIG_BRIDGE is not set
365# CONFIG_NET_DSA is not set
366# CONFIG_VLAN_8021Q is not set
367# CONFIG_DECNET is not set
368# CONFIG_LLC2 is not set
369# CONFIG_IPX is not set
370# CONFIG_ATALK is not set
371# CONFIG_X25 is not set
372# CONFIG_LAPB is not set
373# CONFIG_ECONET is not set
374# CONFIG_WAN_ROUTER is not set
375# CONFIG_PHONET is not set
376# CONFIG_IEEE802154 is not set
377# CONFIG_NET_SCHED is not set
378# CONFIG_DCB is not set
379
380#
381# Network testing
382#
383# CONFIG_NET_PKTGEN is not set
384# CONFIG_NET_DROP_MONITOR is not set
385# CONFIG_HAMRADIO is not set
386# CONFIG_CAN is not set
387# CONFIG_IRDA is not set
388# CONFIG_BT is not set
389# CONFIG_AF_RXRPC is not set
390# CONFIG_WIRELESS is not set
391# CONFIG_WIMAX is not set
392# CONFIG_RFKILL is not set
393# CONFIG_NET_9P is not set
394
395#
396# Device Drivers
397#
398
399#
400# Generic Driver Options
401#
402CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
403# CONFIG_DEVTMPFS is not set
404# CONFIG_STANDALONE is not set
405CONFIG_PREVENT_FIRMWARE_BUILD=y
406# CONFIG_FW_LOADER is not set
407# CONFIG_DEBUG_DRIVER is not set
408# CONFIG_DEBUG_DEVRES is not set
409# CONFIG_SYS_HYPERVISOR is not set
410# CONFIG_CONNECTOR is not set
411# CONFIG_MTD is not set
412CONFIG_OF_DEVICE=y
413# CONFIG_PARPORT is not set
414CONFIG_BLK_DEV=y
415# CONFIG_BLK_DEV_FD is not set
416# CONFIG_BLK_DEV_COW_COMMON is not set
417CONFIG_BLK_DEV_LOOP=y
418# CONFIG_BLK_DEV_CRYPTOLOOP is not set
419CONFIG_BLK_DEV_NBD=m
420CONFIG_BLK_DEV_RAM=y
421CONFIG_BLK_DEV_RAM_COUNT=2
422CONFIG_BLK_DEV_RAM_SIZE=4096
423# CONFIG_BLK_DEV_XIP is not set
424# CONFIG_CDROM_PKTCDVD is not set
425# CONFIG_ATA_OVER_ETH is not set
426# CONFIG_BLK_DEV_HD is not set
427CONFIG_MISC_DEVICES=y
428# CONFIG_ENCLOSURE_SERVICES is not set
429# CONFIG_C2PORT is not set
430
431#
432# EEPROM support
433#
434# CONFIG_EEPROM_93CX6 is not set
435CONFIG_HAVE_IDE=y
436# CONFIG_IDE is not set
437
438#
439# SCSI device support
440#
441# CONFIG_RAID_ATTRS is not set
442# CONFIG_SCSI is not set
443# CONFIG_SCSI_DMA is not set
444# CONFIG_SCSI_NETLINK is not set
445# CONFIG_ATA is not set
446# CONFIG_MD is not set
447# CONFIG_MACINTOSH_DRIVERS is not set
448CONFIG_NETDEVICES=y
449# CONFIG_DUMMY is not set
450# CONFIG_BONDING is not set
451# CONFIG_MACVLAN is not set
452# CONFIG_EQUALIZER is not set
453# CONFIG_TUN is not set
454# CONFIG_VETH is not set
455# CONFIG_PHYLIB is not set
456CONFIG_NET_ETHERNET=y
457# CONFIG_MII is not set
458# CONFIG_ETHOC is not set
459# CONFIG_DNET is not set
460# CONFIG_IBM_NEW_EMAC_ZMII is not set
461# CONFIG_IBM_NEW_EMAC_RGMII is not set
462# CONFIG_IBM_NEW_EMAC_TAH is not set
463# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
464# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
465# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
466# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
467# CONFIG_B44 is not set
468# CONFIG_KS8842 is not set
469# CONFIG_KS8851_MLL is not set
470# CONFIG_XILINX_EMACLITE is not set
471# CONFIG_NETDEV_1000 is not set
472# CONFIG_NETDEV_10000 is not set
473# CONFIG_WLAN is not set
474
475#
476# Enable WiMAX (Networking options) to see the WiMAX drivers
477#
478# CONFIG_WAN is not set
479# CONFIG_PPP is not set
480# CONFIG_SLIP is not set
481# CONFIG_NETCONSOLE is not set
482# CONFIG_NETPOLL is not set
483# CONFIG_NET_POLL_CONTROLLER is not set
484# CONFIG_ISDN is not set
485# CONFIG_PHONE is not set
486
487#
488# Input device support
489#
490CONFIG_INPUT=y
491CONFIG_INPUT_FF_MEMLESS=m
492# CONFIG_INPUT_POLLDEV is not set
493
494#
495# Userland interfaces
496#
497# CONFIG_INPUT_MOUSEDEV is not set
498CONFIG_INPUT_JOYDEV=y
499CONFIG_INPUT_EVDEV=y
500# CONFIG_INPUT_EVBUG is not set
501
502#
503# Input Device Drivers
504#
505CONFIG_INPUT_KEYBOARD=y
506# CONFIG_KEYBOARD_ATKBD is not set
507# CONFIG_KEYBOARD_LKKBD is not set
508# CONFIG_KEYBOARD_NEWTON is not set
509# CONFIG_KEYBOARD_OPENCORES is not set
510# CONFIG_KEYBOARD_STOWAWAY is not set
511# CONFIG_KEYBOARD_SUNKBD is not set
512# CONFIG_KEYBOARD_XTKBD is not set
513# CONFIG_INPUT_MOUSE is not set
514CONFIG_INPUT_JOYSTICK=y
515# CONFIG_JOYSTICK_ANALOG is not set
516# CONFIG_JOYSTICK_A3D is not set
517# CONFIG_JOYSTICK_ADI is not set
518# CONFIG_JOYSTICK_COBRA is not set
519# CONFIG_JOYSTICK_GF2K is not set
520# CONFIG_JOYSTICK_GRIP is not set
521# CONFIG_JOYSTICK_GRIP_MP is not set
522# CONFIG_JOYSTICK_GUILLEMOT is not set
523# CONFIG_JOYSTICK_INTERACT is not set
524# CONFIG_JOYSTICK_SIDEWINDER is not set
525# CONFIG_JOYSTICK_TMDC is not set
526# CONFIG_JOYSTICK_IFORCE is not set
527# CONFIG_JOYSTICK_WARRIOR is not set
528# CONFIG_JOYSTICK_MAGELLAN is not set
529# CONFIG_JOYSTICK_SPACEORB is not set
530# CONFIG_JOYSTICK_SPACEBALL is not set
531# CONFIG_JOYSTICK_STINGER is not set
532# CONFIG_JOYSTICK_TWIDJOY is not set
533# CONFIG_JOYSTICK_ZHENHUA is not set
534# CONFIG_JOYSTICK_JOYDUMP is not set
535# CONFIG_INPUT_TABLET is not set
536# CONFIG_INPUT_TOUCHSCREEN is not set
537# CONFIG_INPUT_MISC is not set
538
539#
540# Hardware I/O ports
541#
542CONFIG_SERIO=y
543# CONFIG_SERIO_I8042 is not set
544# CONFIG_SERIO_SERPORT is not set
545# CONFIG_SERIO_LIBPS2 is not set
546# CONFIG_SERIO_RAW is not set
547# CONFIG_SERIO_XILINX_XPS_PS2 is not set
548# CONFIG_GAMEPORT is not set
549
550#
551# Character devices
552#
553CONFIG_VT=y
554CONFIG_CONSOLE_TRANSLATIONS=y
555CONFIG_VT_CONSOLE=y
556CONFIG_HW_CONSOLE=y
557# CONFIG_VT_HW_CONSOLE_BINDING is not set
558# CONFIG_DEVKMEM is not set
559# CONFIG_SERIAL_NONSTANDARD is not set
560
561#
562# Serial drivers
563#
564# CONFIG_SERIAL_8250 is not set
565
566#
567# Non-8250 serial port support
568#
569# CONFIG_SERIAL_UARTLITE is not set
570CONFIG_UNIX98_PTYS=y
571# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
572CONFIG_LEGACY_PTYS=y
573CONFIG_LEGACY_PTY_COUNT=64
574# CONFIG_HVC_UDBG is not set
575# CONFIG_IPMI_HANDLER is not set
576# CONFIG_HW_RANDOM is not set
577# CONFIG_NVRAM is not set
578# CONFIG_R3964 is not set
579# CONFIG_RAW_DRIVER is not set
580# CONFIG_TCG_TPM is not set
581# CONFIG_I2C is not set
582# CONFIG_SPI is not set
583
584#
585# PPS support
586#
587# CONFIG_PPS is not set
588CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
589# CONFIG_GPIOLIB is not set
590# CONFIG_W1 is not set
591# CONFIG_POWER_SUPPLY is not set
592# CONFIG_HWMON is not set
593# CONFIG_THERMAL is not set
594# CONFIG_WATCHDOG is not set
595CONFIG_SSB_POSSIBLE=y
596
597#
598# Sonics Silicon Backplane
599#
600# CONFIG_SSB is not set
601
602#
603# Multifunction device drivers
604#
605# CONFIG_MFD_CORE is not set
606# CONFIG_MFD_SM501 is not set
607# CONFIG_HTC_PASIC3 is not set
608# CONFIG_MFD_TMIO is not set
609# CONFIG_REGULATOR is not set
610# CONFIG_MEDIA_SUPPORT is not set
611
612#
613# Graphics support
614#
615# CONFIG_VGASTATE is not set
616# CONFIG_VIDEO_OUTPUT_CONTROL is not set
617CONFIG_FB=y
618# CONFIG_FIRMWARE_EDID is not set
619# CONFIG_FB_DDC is not set
620# CONFIG_FB_BOOT_VESA_SUPPORT is not set
621# CONFIG_FB_CFB_FILLRECT is not set
622# CONFIG_FB_CFB_COPYAREA is not set
623# CONFIG_FB_CFB_IMAGEBLIT is not set
624# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
625# CONFIG_FB_SYS_FILLRECT is not set
626# CONFIG_FB_SYS_COPYAREA is not set
627# CONFIG_FB_SYS_IMAGEBLIT is not set
628# CONFIG_FB_FOREIGN_ENDIAN is not set
629# CONFIG_FB_SYS_FOPS is not set
630# CONFIG_FB_SVGALIB is not set
631# CONFIG_FB_MACMODES is not set
632# CONFIG_FB_BACKLIGHT is not set
633# CONFIG_FB_MODE_HELPERS is not set
634# CONFIG_FB_TILEBLITTING is not set
635
636#
637# Frame buffer hardware drivers
638#
639# CONFIG_FB_OF is not set
640# CONFIG_FB_VGA16 is not set
641# CONFIG_FB_S1D13XXX is not set
642# CONFIG_FB_IBM_GXT4500 is not set
643# CONFIG_FB_VIRTUAL is not set
644# CONFIG_FB_METRONOME is not set
645# CONFIG_FB_MB862XX is not set
646# CONFIG_FB_BROADSHEET is not set
647# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
648
649#
650# Display device support
651#
652# CONFIG_DISPLAY_SUPPORT is not set
653
654#
655# Console display driver support
656#
657# CONFIG_VGA_CONSOLE is not set
658CONFIG_DUMMY_CONSOLE=y
659CONFIG_FRAMEBUFFER_CONSOLE=y
660# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
661# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
662# CONFIG_FONTS is not set
663CONFIG_FONT_8x8=y
664CONFIG_FONT_8x16=y
665CONFIG_LOGO=y
666# CONFIG_LOGO_LINUX_MONO is not set
667# CONFIG_LOGO_LINUX_VGA16 is not set
668# CONFIG_LOGO_LINUX_CLUT224 is not set
669CONFIG_SOUND=y
670CONFIG_SOUND_OSS_CORE=y
671CONFIG_SOUND_OSS_CORE_PRECLAIM=y
672CONFIG_SND=y
673CONFIG_SND_TIMER=y
674CONFIG_SND_PCM=y
675CONFIG_SND_SEQUENCER=y
676# CONFIG_SND_SEQ_DUMMY is not set
677CONFIG_SND_OSSEMUL=y
678CONFIG_SND_MIXER_OSS=y
679CONFIG_SND_PCM_OSS=y
680CONFIG_SND_PCM_OSS_PLUGINS=y
681CONFIG_SND_SEQUENCER_OSS=y
682# CONFIG_SND_DYNAMIC_MINORS is not set
683CONFIG_SND_SUPPORT_OLD_API=y
684# CONFIG_SND_VERBOSE_PROCFS is not set
685# CONFIG_SND_VERBOSE_PRINTK is not set
686# CONFIG_SND_DEBUG is not set
687# CONFIG_SND_RAWMIDI_SEQ is not set
688# CONFIG_SND_OPL3_LIB_SEQ is not set
689# CONFIG_SND_OPL4_LIB_SEQ is not set
690# CONFIG_SND_SBAWE_SEQ is not set
691# CONFIG_SND_EMU10K1_SEQ is not set
692CONFIG_SND_DRIVERS=y
693# CONFIG_SND_DUMMY is not set
694# CONFIG_SND_VIRMIDI is not set
695# CONFIG_SND_MTPAV is not set
696# CONFIG_SND_SERIAL_U16550 is not set
697# CONFIG_SND_MPU401 is not set
698CONFIG_SND_PPC=y
699# CONFIG_SND_SOC is not set
700# CONFIG_SOUND_PRIME is not set
701CONFIG_HID_SUPPORT=y
702CONFIG_HID=y
703# CONFIG_HIDRAW is not set
704# CONFIG_HID_PID is not set
705
706#
707# Special HID drivers
708#
709# CONFIG_USB_SUPPORT is not set
710# CONFIG_MMC is not set
711# CONFIG_MEMSTICK is not set
712# CONFIG_NEW_LEDS is not set
713# CONFIG_ACCESSIBILITY is not set
714# CONFIG_EDAC is not set
715CONFIG_RTC_LIB=y
716CONFIG_RTC_CLASS=y
717CONFIG_RTC_HCTOSYS=y
718CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
719# CONFIG_RTC_DEBUG is not set
720
721#
722# RTC interfaces
723#
724CONFIG_RTC_INTF_SYSFS=y
725CONFIG_RTC_INTF_PROC=y
726CONFIG_RTC_INTF_DEV=y
727# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
728# CONFIG_RTC_DRV_TEST is not set
729
730#
731# SPI RTC drivers
732#
733
734#
735# Platform RTC drivers
736#
737# CONFIG_RTC_DRV_CMOS is not set
738# CONFIG_RTC_DRV_DS1286 is not set
739# CONFIG_RTC_DRV_DS1511 is not set
740# CONFIG_RTC_DRV_DS1553 is not set
741# CONFIG_RTC_DRV_DS1742 is not set
742# CONFIG_RTC_DRV_STK17TA8 is not set
743# CONFIG_RTC_DRV_M48T86 is not set
744# CONFIG_RTC_DRV_M48T35 is not set
745# CONFIG_RTC_DRV_M48T59 is not set
746# CONFIG_RTC_DRV_BQ4802 is not set
747# CONFIG_RTC_DRV_V3020 is not set
748
749#
750# on-CPU RTC drivers
751#
752CONFIG_RTC_DRV_GENERIC=y
753# CONFIG_DMADEVICES is not set
754# CONFIG_AUXDISPLAY is not set
755# CONFIG_UIO is not set
756
757#
758# TI VLYNQ
759#
760# CONFIG_STAGING is not set
761
762#
763# File systems
764#
765CONFIG_EXT2_FS=y
766# CONFIG_EXT2_FS_XATTR is not set
767# CONFIG_EXT2_FS_XIP is not set
768CONFIG_EXT3_FS=y
769# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
770# CONFIG_EXT3_FS_XATTR is not set
771# CONFIG_EXT4_FS is not set
772CONFIG_JBD=y
773# CONFIG_JBD_DEBUG is not set
774# CONFIG_REISERFS_FS is not set
775# CONFIG_JFS_FS is not set
776# CONFIG_FS_POSIX_ACL is not set
777# CONFIG_XFS_FS is not set
778# CONFIG_GFS2_FS is not set
779# CONFIG_OCFS2_FS is not set
780# CONFIG_BTRFS_FS is not set
781# CONFIG_NILFS2_FS is not set
782CONFIG_FILE_LOCKING=y
783CONFIG_FSNOTIFY=y
784CONFIG_DNOTIFY=y
785CONFIG_INOTIFY=y
786CONFIG_INOTIFY_USER=y
787# CONFIG_QUOTA is not set
788# CONFIG_AUTOFS_FS is not set
789# CONFIG_AUTOFS4_FS is not set
790# CONFIG_FUSE_FS is not set
791
792#
793# Caches
794#
795# CONFIG_FSCACHE is not set
796
797#
798# CD-ROM/DVD Filesystems
799#
800CONFIG_ISO9660_FS=y
801CONFIG_JOLIET=y
802# CONFIG_ZISOFS is not set
803# CONFIG_UDF_FS is not set
804
805#
806# DOS/FAT/NT Filesystems
807#
808CONFIG_FAT_FS=y
809CONFIG_MSDOS_FS=y
810CONFIG_VFAT_FS=y
811CONFIG_FAT_DEFAULT_CODEPAGE=437
812CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
813# CONFIG_NTFS_FS is not set
814
815#
816# Pseudo filesystems
817#
818CONFIG_PROC_FS=y
819CONFIG_PROC_KCORE=y
820CONFIG_PROC_SYSCTL=y
821# CONFIG_PROC_PAGE_MONITOR is not set
822CONFIG_SYSFS=y
823CONFIG_TMPFS=y
824# CONFIG_TMPFS_POSIX_ACL is not set
825# CONFIG_HUGETLB_PAGE is not set
826# CONFIG_CONFIGFS_FS is not set
827CONFIG_MISC_FILESYSTEMS=y
828# CONFIG_ADFS_FS is not set
829# CONFIG_AFFS_FS is not set
830# CONFIG_HFS_FS is not set
831# CONFIG_HFSPLUS_FS is not set
832# CONFIG_BEFS_FS is not set
833# CONFIG_BFS_FS is not set
834# CONFIG_EFS_FS is not set
835# CONFIG_CRAMFS is not set
836# CONFIG_SQUASHFS is not set
837# CONFIG_VXFS_FS is not set
838# CONFIG_MINIX_FS is not set
839# CONFIG_OMFS_FS is not set
840# CONFIG_HPFS_FS is not set
841# CONFIG_QNX4FS_FS is not set
842# CONFIG_ROMFS_FS is not set
843# CONFIG_SYSV_FS is not set
844# CONFIG_UFS_FS is not set
845CONFIG_NETWORK_FILESYSTEMS=y
846CONFIG_NFS_FS=y
847CONFIG_NFS_V3=y
848# CONFIG_NFS_V3_ACL is not set
849# CONFIG_NFS_V4 is not set
850CONFIG_ROOT_NFS=y
851# CONFIG_NFSD is not set
852CONFIG_LOCKD=y
853CONFIG_LOCKD_V4=y
854CONFIG_NFS_COMMON=y
855CONFIG_SUNRPC=y
856# CONFIG_RPCSEC_GSS_KRB5 is not set
857# CONFIG_RPCSEC_GSS_SPKM3 is not set
858# CONFIG_SMB_FS is not set
859CONFIG_CIFS=y
860# CONFIG_CIFS_STATS is not set
861# CONFIG_CIFS_WEAK_PW_HASH is not set
862# CONFIG_CIFS_XATTR is not set
863# CONFIG_CIFS_DEBUG2 is not set
864# CONFIG_CIFS_EXPERIMENTAL is not set
865# CONFIG_NCP_FS is not set
866# CONFIG_CODA_FS is not set
867# CONFIG_AFS_FS is not set
868
869#
870# Partition Types
871#
872# CONFIG_PARTITION_ADVANCED is not set
873CONFIG_MSDOS_PARTITION=y
874CONFIG_NLS=y
875CONFIG_NLS_DEFAULT="iso8859-1"
876CONFIG_NLS_CODEPAGE_437=y
877# CONFIG_NLS_CODEPAGE_737 is not set
878# CONFIG_NLS_CODEPAGE_775 is not set
879# CONFIG_NLS_CODEPAGE_850 is not set
880# CONFIG_NLS_CODEPAGE_852 is not set
881# CONFIG_NLS_CODEPAGE_855 is not set
882# CONFIG_NLS_CODEPAGE_857 is not set
883# CONFIG_NLS_CODEPAGE_860 is not set
884# CONFIG_NLS_CODEPAGE_861 is not set
885# CONFIG_NLS_CODEPAGE_862 is not set
886# CONFIG_NLS_CODEPAGE_863 is not set
887# CONFIG_NLS_CODEPAGE_864 is not set
888# CONFIG_NLS_CODEPAGE_865 is not set
889# CONFIG_NLS_CODEPAGE_866 is not set
890# CONFIG_NLS_CODEPAGE_869 is not set
891# CONFIG_NLS_CODEPAGE_936 is not set
892# CONFIG_NLS_CODEPAGE_950 is not set
893# CONFIG_NLS_CODEPAGE_932 is not set
894# CONFIG_NLS_CODEPAGE_949 is not set
895# CONFIG_NLS_CODEPAGE_874 is not set
896# CONFIG_NLS_ISO8859_8 is not set
897# CONFIG_NLS_CODEPAGE_1250 is not set
898# CONFIG_NLS_CODEPAGE_1251 is not set
899# CONFIG_NLS_ASCII is not set
900CONFIG_NLS_ISO8859_1=y
901# CONFIG_NLS_ISO8859_2 is not set
902# CONFIG_NLS_ISO8859_3 is not set
903# CONFIG_NLS_ISO8859_4 is not set
904# CONFIG_NLS_ISO8859_5 is not set
905# CONFIG_NLS_ISO8859_6 is not set
906# CONFIG_NLS_ISO8859_7 is not set
907# CONFIG_NLS_ISO8859_9 is not set
908# CONFIG_NLS_ISO8859_13 is not set
909# CONFIG_NLS_ISO8859_14 is not set
910# CONFIG_NLS_ISO8859_15 is not set
911# CONFIG_NLS_KOI8_R is not set
912# CONFIG_NLS_KOI8_U is not set
913# CONFIG_NLS_UTF8 is not set
914# CONFIG_DLM is not set
915CONFIG_BINARY_PRINTF=y
916
917#
918# Library routines
919#
920CONFIG_BITREVERSE=y
921CONFIG_GENERIC_FIND_LAST_BIT=y
922CONFIG_CRC_CCITT=y
923# CONFIG_CRC16 is not set
924# CONFIG_CRC_T10DIF is not set
925# CONFIG_CRC_ITU_T is not set
926CONFIG_CRC32=y
927# CONFIG_CRC7 is not set
928# CONFIG_LIBCRC32C is not set
929CONFIG_ZLIB_INFLATE=y
930CONFIG_DECOMPRESS_GZIP=y
931CONFIG_HAS_IOMEM=y
932CONFIG_HAS_IOPORT=y
933CONFIG_HAS_DMA=y
934CONFIG_HAVE_LMB=y
935CONFIG_NLATTR=y
936CONFIG_GENERIC_ATOMIC64=y
937
938#
939# Kernel hacking
940#
941CONFIG_PRINTK_TIME=y
942CONFIG_ENABLE_WARN_DEPRECATED=y
943CONFIG_ENABLE_MUST_CHECK=y
944CONFIG_FRAME_WARN=1024
945# CONFIG_MAGIC_SYSRQ is not set
946# CONFIG_STRIP_ASM_SYMS is not set
947# CONFIG_UNUSED_SYMBOLS is not set
948CONFIG_DEBUG_FS=y
949# CONFIG_HEADERS_CHECK is not set
950CONFIG_DEBUG_KERNEL=y
951# CONFIG_DEBUG_SHIRQ is not set
952CONFIG_DETECT_SOFTLOCKUP=y
953# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
954CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
955# CONFIG_DETECT_HUNG_TASK is not set
956CONFIG_SCHED_DEBUG=y
957CONFIG_SCHEDSTATS=y
958# CONFIG_TIMER_STATS is not set
959# CONFIG_DEBUG_OBJECTS is not set
960# CONFIG_DEBUG_SLAB is not set
961# CONFIG_DEBUG_KMEMLEAK is not set
962CONFIG_DEBUG_PREEMPT=y
963# CONFIG_DEBUG_RT_MUTEXES is not set
964# CONFIG_RT_MUTEX_TESTER is not set
965CONFIG_DEBUG_SPINLOCK=y
966CONFIG_DEBUG_MUTEXES=y
967# CONFIG_DEBUG_LOCK_ALLOC is not set
968# CONFIG_PROVE_LOCKING is not set
969# CONFIG_LOCK_STAT is not set
970CONFIG_DEBUG_SPINLOCK_SLEEP=y
971# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
972CONFIG_STACKTRACE=y
973# CONFIG_DEBUG_KOBJECT is not set
974CONFIG_DEBUG_BUGVERBOSE=y
975# CONFIG_DEBUG_INFO is not set
976# CONFIG_DEBUG_VM is not set
977# CONFIG_DEBUG_WRITECOUNT is not set
978# CONFIG_DEBUG_MEMORY_INIT is not set
979# CONFIG_DEBUG_LIST is not set
980# CONFIG_DEBUG_SG is not set
981# CONFIG_DEBUG_NOTIFIERS is not set
982# CONFIG_DEBUG_CREDENTIALS is not set
983# CONFIG_RCU_TORTURE_TEST is not set
984# CONFIG_RCU_CPU_STALL_DETECTOR is not set
985# CONFIG_BACKTRACE_SELF_TEST is not set
986# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
987# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
988# CONFIG_FAULT_INJECTION is not set
989CONFIG_LATENCYTOP=y
990CONFIG_SYSCTL_SYSCALL_CHECK=y
991# CONFIG_DEBUG_PAGEALLOC is not set
992CONFIG_NOP_TRACER=y
993CONFIG_HAVE_FUNCTION_TRACER=y
994CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
995CONFIG_HAVE_DYNAMIC_FTRACE=y
996CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
997CONFIG_TRACER_MAX_TRACE=y
998CONFIG_RING_BUFFER=y
999CONFIG_EVENT_TRACING=y
1000CONFIG_CONTEXT_SWITCH_TRACER=y
1001CONFIG_TRACING=y
1002CONFIG_GENERIC_TRACER=y
1003CONFIG_TRACING_SUPPORT=y
1004CONFIG_FTRACE=y
1005# CONFIG_FUNCTION_TRACER is not set
1006# CONFIG_IRQSOFF_TRACER is not set
1007# CONFIG_PREEMPT_TRACER is not set
1008CONFIG_SCHED_TRACER=y
1009CONFIG_BOOT_TRACER=y
1010CONFIG_BRANCH_PROFILE_NONE=y
1011# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1012# CONFIG_PROFILE_ALL_BRANCHES is not set
1013# CONFIG_STACK_TRACER is not set
1014# CONFIG_KMEMTRACE is not set
1015# CONFIG_WORKQUEUE_TRACER is not set
1016# CONFIG_BLK_DEV_IO_TRACE is not set
1017# CONFIG_FTRACE_STARTUP_TEST is not set
1018# CONFIG_RING_BUFFER_BENCHMARK is not set
1019# CONFIG_DYNAMIC_DEBUG is not set
1020CONFIG_DMA_API_DEBUG=y
1021# CONFIG_SAMPLES is not set
1022CONFIG_HAVE_ARCH_KGDB=y
1023# CONFIG_KGDB is not set
1024# CONFIG_PPC_DISABLE_WERROR is not set
1025CONFIG_PPC_WERROR=y
1026CONFIG_PRINT_STACK_DEPTH=64
1027# CONFIG_DEBUG_STACKOVERFLOW is not set
1028# CONFIG_DEBUG_STACK_USAGE is not set
1029# CONFIG_PPC_EMULATED_STATS is not set
1030# CONFIG_CODE_PATCHING_SELFTEST is not set
1031# CONFIG_FTR_FIXUP_SELFTEST is not set
1032# CONFIG_MSI_BITMAP_SELFTEST is not set
1033# CONFIG_XMON is not set
1034# CONFIG_IRQSTACKS is not set
1035# CONFIG_VIRQ_DEBUG is not set
1036# CONFIG_BDI_SWITCH is not set
1037# CONFIG_BOOTX_TEXT is not set
1038CONFIG_PPC_EARLY_DEBUG=y
1039# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1040# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1041# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
1042# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
1043# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1044# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1045# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
1046# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
1047# CONFIG_PPC_EARLY_DEBUG_44x is not set
1048# CONFIG_PPC_EARLY_DEBUG_40x is not set
1049# CONFIG_PPC_EARLY_DEBUG_CPM is not set
1050CONFIG_PPC_EARLY_DEBUG_USBGECKO=y
1051
1052#
1053# Security options
1054#
1055# CONFIG_KEYS is not set
1056# CONFIG_SECURITY is not set
1057# CONFIG_SECURITYFS is not set
1058# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1059# CONFIG_CRYPTO is not set
1060# CONFIG_PPC_CLOCK is not set
1061# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/wii_defconfig b/arch/powerpc/configs/wii_defconfig
new file mode 100644
index 000000000000..c386828c639a
--- /dev/null
+++ b/arch/powerpc/configs/wii_defconfig
@@ -0,0 +1,1406 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.32-rc8
4# Sun Nov 22 20:37:21 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11CONFIG_PPC_BOOK3S_32=y
12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_PPC_BOOK3S=y
18CONFIG_6xx=y
19CONFIG_PPC_FPU=y
20# CONFIG_ALTIVEC is not set
21CONFIG_PPC_STD_MMU=y
22CONFIG_PPC_STD_MMU_32=y
23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC_HAVE_PMU_SUPPORT=y
25CONFIG_PPC_PERF_CTRS=y
26# CONFIG_SMP is not set
27CONFIG_NOT_COHERENT_CACHE=y
28CONFIG_PPC32=y
29CONFIG_WORD_SIZE=32
30# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
31CONFIG_MMU=y
32CONFIG_GENERIC_CMOS_UPDATE=y
33CONFIG_GENERIC_TIME=y
34CONFIG_GENERIC_TIME_VSYSCALL=y
35CONFIG_GENERIC_CLOCKEVENTS=y
36CONFIG_GENERIC_HARDIRQS=y
37CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
40CONFIG_IRQ_PER_CPU=y
41CONFIG_STACKTRACE_SUPPORT=y
42CONFIG_HAVE_LATENCYTOP_SUPPORT=y
43CONFIG_TRACE_IRQFLAGS_SUPPORT=y
44CONFIG_LOCKDEP_SUPPORT=y
45CONFIG_RWSEM_XCHGADD_ALGORITHM=y
46CONFIG_ARCH_HAS_ILOG2_U32=y
47CONFIG_GENERIC_HWEIGHT=y
48CONFIG_GENERIC_FIND_NEXT_BIT=y
49CONFIG_GENERIC_GPIO=y
50# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
51CONFIG_PPC=y
52CONFIG_EARLY_PRINTK=y
53CONFIG_GENERIC_NVRAM=y
54CONFIG_SCHED_OMIT_FRAME_POINTER=y
55CONFIG_ARCH_MAY_HAVE_PC_FDC=y
56CONFIG_PPC_OF=y
57CONFIG_OF=y
58# CONFIG_PPC_UDBG_16550 is not set
59# CONFIG_GENERIC_TBSYNC is not set
60CONFIG_AUDIT_ARCH=y
61CONFIG_GENERIC_BUG=y
62CONFIG_DTC=y
63# CONFIG_DEFAULT_UIMAGE is not set
64# CONFIG_PPC_DCR_NATIVE is not set
65# CONFIG_PPC_DCR_MMIO is not set
66CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
67CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
68CONFIG_CONSTRUCTORS=y
69
70#
71# General setup
72#
73CONFIG_EXPERIMENTAL=y
74CONFIG_BROKEN_ON_SMP=y
75CONFIG_LOCK_KERNEL=y
76CONFIG_INIT_ENV_ARG_LIMIT=32
77CONFIG_LOCALVERSION="-wii"
78# CONFIG_LOCALVERSION_AUTO is not set
79CONFIG_SWAP=y
80CONFIG_SYSVIPC=y
81CONFIG_SYSVIPC_SYSCTL=y
82# CONFIG_POSIX_MQUEUE is not set
83# CONFIG_BSD_PROCESS_ACCT is not set
84# CONFIG_TASKSTATS is not set
85# CONFIG_AUDIT is not set
86
87#
88# RCU Subsystem
89#
90CONFIG_TREE_RCU=y
91# CONFIG_TREE_PREEMPT_RCU is not set
92# CONFIG_RCU_TRACE is not set
93CONFIG_RCU_FANOUT=32
94# CONFIG_RCU_FANOUT_EXACT is not set
95# CONFIG_TREE_RCU_TRACE is not set
96CONFIG_IKCONFIG=y
97CONFIG_IKCONFIG_PROC=y
98CONFIG_LOG_BUF_SHIFT=14
99CONFIG_GROUP_SCHED=y
100CONFIG_FAIR_GROUP_SCHED=y
101# CONFIG_RT_GROUP_SCHED is not set
102CONFIG_USER_SCHED=y
103# CONFIG_CGROUP_SCHED is not set
104# CONFIG_CGROUPS is not set
105CONFIG_SYSFS_DEPRECATED=y
106CONFIG_SYSFS_DEPRECATED_V2=y
107CONFIG_RELAY=y
108# CONFIG_NAMESPACES is not set
109CONFIG_BLK_DEV_INITRD=y
110CONFIG_INITRAMFS_SOURCE=""
111CONFIG_RD_GZIP=y
112# CONFIG_RD_BZIP2 is not set
113# CONFIG_RD_LZMA is not set
114# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
115CONFIG_SYSCTL=y
116CONFIG_ANON_INODES=y
117CONFIG_EMBEDDED=y
118CONFIG_SYSCTL_SYSCALL=y
119CONFIG_KALLSYMS=y
120CONFIG_KALLSYMS_ALL=y
121# CONFIG_KALLSYMS_EXTRA_PASS is not set
122CONFIG_HOTPLUG=y
123CONFIG_PRINTK=y
124CONFIG_BUG=y
125# CONFIG_ELF_CORE is not set
126CONFIG_BASE_FULL=y
127CONFIG_FUTEX=y
128CONFIG_EPOLL=y
129CONFIG_SIGNALFD=y
130CONFIG_TIMERFD=y
131CONFIG_EVENTFD=y
132CONFIG_SHMEM=y
133CONFIG_AIO=y
134CONFIG_HAVE_PERF_EVENTS=y
135
136#
137# Kernel Performance Events And Counters
138#
139CONFIG_PERF_EVENTS=y
140CONFIG_EVENT_PROFILE=y
141CONFIG_PERF_COUNTERS=y
142# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
143# CONFIG_VM_EVENT_COUNTERS is not set
144CONFIG_COMPAT_BRK=y
145CONFIG_SLAB=y
146# CONFIG_SLUB is not set
147# CONFIG_SLOB is not set
148# CONFIG_PROFILING is not set
149CONFIG_TRACEPOINTS=y
150CONFIG_HAVE_OPROFILE=y
151# CONFIG_KPROBES is not set
152CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
153CONFIG_HAVE_IOREMAP_PROT=y
154CONFIG_HAVE_KPROBES=y
155CONFIG_HAVE_KRETPROBES=y
156CONFIG_HAVE_ARCH_TRACEHOOK=y
157CONFIG_HAVE_DMA_ATTRS=y
158CONFIG_HAVE_DMA_API_DEBUG=y
159
160#
161# GCOV-based kernel profiling
162#
163# CONFIG_GCOV_KERNEL is not set
164CONFIG_SLOW_WORK=y
165# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
166CONFIG_SLABINFO=y
167CONFIG_RT_MUTEXES=y
168CONFIG_BASE_SMALL=0
169CONFIG_MODULES=y
170# CONFIG_MODULE_FORCE_LOAD is not set
171CONFIG_MODULE_UNLOAD=y
172# CONFIG_MODULE_FORCE_UNLOAD is not set
173# CONFIG_MODVERSIONS is not set
174# CONFIG_MODULE_SRCVERSION_ALL is not set
175CONFIG_BLOCK=y
176CONFIG_LBDAF=y
177CONFIG_BLK_DEV_BSG=y
178# CONFIG_BLK_DEV_INTEGRITY is not set
179
180#
181# IO Schedulers
182#
183CONFIG_IOSCHED_NOOP=y
184CONFIG_IOSCHED_AS=y
185CONFIG_IOSCHED_DEADLINE=y
186CONFIG_IOSCHED_CFQ=y
187CONFIG_DEFAULT_AS=y
188# CONFIG_DEFAULT_DEADLINE is not set
189# CONFIG_DEFAULT_CFQ is not set
190# CONFIG_DEFAULT_NOOP is not set
191CONFIG_DEFAULT_IOSCHED="anticipatory"
192# CONFIG_FREEZER is not set
193
194#
195# Platform support
196#
197# CONFIG_PPC_CHRP is not set
198# CONFIG_MPC5121_ADS is not set
199# CONFIG_MPC5121_GENERIC is not set
200# CONFIG_PPC_MPC52xx is not set
201# CONFIG_PPC_PMAC is not set
202# CONFIG_PPC_CELL is not set
203# CONFIG_PPC_CELL_NATIVE is not set
204# CONFIG_PPC_82xx is not set
205# CONFIG_PQ2ADS is not set
206# CONFIG_PPC_83xx is not set
207# CONFIG_PPC_86xx is not set
208CONFIG_EMBEDDED6xx=y
209# CONFIG_LINKSTATION is not set
210# CONFIG_STORCENTER is not set
211# CONFIG_MPC7448HPC2 is not set
212# CONFIG_PPC_HOLLY is not set
213# CONFIG_PPC_PRPMC2800 is not set
214# CONFIG_PPC_C2K is not set
215CONFIG_GAMECUBE_COMMON=y
216CONFIG_USBGECKO_UDBG=y
217CONFIG_FLIPPER_PIC=y
218# CONFIG_GAMECUBE is not set
219CONFIG_HLWD_PIC=y
220CONFIG_STARLET_MINI=y
221CONFIG_WII=y
222# CONFIG_AMIGAONE is not set
223# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
224# CONFIG_IPIC is not set
225# CONFIG_MPIC is not set
226# CONFIG_MPIC_WEIRD is not set
227# CONFIG_PPC_I8259 is not set
228# CONFIG_PPC_RTAS is not set
229# CONFIG_MMIO_NVRAM is not set
230# CONFIG_PPC_MPC106 is not set
231# CONFIG_PPC_970_NAP is not set
232# CONFIG_PPC_INDIRECT_IO is not set
233# CONFIG_GENERIC_IOMAP is not set
234# CONFIG_CPU_FREQ is not set
235# CONFIG_TAU is not set
236# CONFIG_FSL_ULI1575 is not set
237# CONFIG_SIMPLE_GPIO is not set
238
239#
240# Kernel options
241#
242# CONFIG_HIGHMEM is not set
243# CONFIG_NO_HZ is not set
244# CONFIG_HIGH_RES_TIMERS is not set
245CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
246# CONFIG_HZ_100 is not set
247CONFIG_HZ_250=y
248# CONFIG_HZ_300 is not set
249# CONFIG_HZ_1000 is not set
250CONFIG_HZ=250
251# CONFIG_SCHED_HRTICK is not set
252# CONFIG_PREEMPT_NONE is not set
253# CONFIG_PREEMPT_VOLUNTARY is not set
254CONFIG_PREEMPT=y
255CONFIG_BINFMT_ELF=y
256# CONFIG_HAVE_AOUT is not set
257CONFIG_BINFMT_MISC=m
258# CONFIG_IOMMU_HELPER is not set
259# CONFIG_SWIOTLB is not set
260CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
261CONFIG_ARCH_HAS_WALK_MEMORY=y
262CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
263CONFIG_KEXEC=y
264# CONFIG_CRASH_DUMP is not set
265CONFIG_MAX_ACTIVE_REGIONS=32
266CONFIG_ARCH_FLATMEM_ENABLE=y
267CONFIG_ARCH_POPULATES_NODE_MAP=y
268CONFIG_SELECT_MEMORY_MODEL=y
269CONFIG_FLATMEM_MANUAL=y
270# CONFIG_DISCONTIGMEM_MANUAL is not set
271# CONFIG_SPARSEMEM_MANUAL is not set
272CONFIG_FLATMEM=y
273CONFIG_FLAT_NODE_MEM_MAP=y
274CONFIG_PAGEFLAGS_EXTENDED=y
275CONFIG_SPLIT_PTLOCK_CPUS=4
276# CONFIG_MIGRATION is not set
277# CONFIG_PHYS_ADDR_T_64BIT is not set
278CONFIG_ZONE_DMA_FLAG=1
279CONFIG_BOUNCE=y
280CONFIG_VIRT_TO_BUS=y
281CONFIG_HAVE_MLOCK=y
282CONFIG_HAVE_MLOCKED_PAGE_BIT=y
283# CONFIG_KSM is not set
284CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
285CONFIG_PPC_4K_PAGES=y
286# CONFIG_PPC_16K_PAGES is not set
287# CONFIG_PPC_64K_PAGES is not set
288# CONFIG_PPC_256K_PAGES is not set
289CONFIG_FORCE_MAX_ZONEORDER=11
290CONFIG_PROC_DEVICETREE=y
291# CONFIG_CMDLINE_BOOL is not set
292CONFIG_EXTRA_TARGETS=""
293# CONFIG_PM is not set
294# CONFIG_SECCOMP is not set
295CONFIG_ISA_DMA_API=y
296
297#
298# Bus options
299#
300CONFIG_ZONE_DMA=y
301CONFIG_GENERIC_ISA_DMA=y
302# CONFIG_PCI is not set
303# CONFIG_PCI_DOMAINS is not set
304# CONFIG_PCI_SYSCALL is not set
305# CONFIG_ARCH_SUPPORTS_MSI is not set
306# CONFIG_PCCARD is not set
307# CONFIG_HAS_RAPIDIO is not set
308
309#
310# Advanced setup
311#
312CONFIG_ADVANCED_OPTIONS=y
313# CONFIG_LOWMEM_SIZE_BOOL is not set
314CONFIG_LOWMEM_SIZE=0x30000000
315# CONFIG_PAGE_OFFSET_BOOL is not set
316CONFIG_PAGE_OFFSET=0xc0000000
317# CONFIG_KERNEL_START_BOOL is not set
318CONFIG_KERNEL_START=0xc0000000
319CONFIG_PHYSICAL_START=0x00000000
320# CONFIG_TASK_SIZE_BOOL is not set
321CONFIG_TASK_SIZE=0xc0000000
322# CONFIG_CONSISTENT_SIZE_BOOL is not set
323CONFIG_CONSISTENT_SIZE=0x00200000
324CONFIG_NET=y
325
326#
327# Networking options
328#
329CONFIG_PACKET=y
330# CONFIG_PACKET_MMAP is not set
331CONFIG_UNIX=y
332# CONFIG_NET_KEY is not set
333CONFIG_INET=y
334# CONFIG_IP_MULTICAST is not set
335# CONFIG_IP_ADVANCED_ROUTER is not set
336CONFIG_IP_FIB_HASH=y
337CONFIG_IP_PNP=y
338CONFIG_IP_PNP_DHCP=y
339# CONFIG_IP_PNP_BOOTP is not set
340CONFIG_IP_PNP_RARP=y
341# CONFIG_NET_IPIP is not set
342# CONFIG_NET_IPGRE is not set
343# CONFIG_ARPD is not set
344# CONFIG_SYN_COOKIES is not set
345# CONFIG_INET_AH is not set
346# CONFIG_INET_ESP is not set
347# CONFIG_INET_IPCOMP is not set
348# CONFIG_INET_XFRM_TUNNEL is not set
349# CONFIG_INET_TUNNEL is not set
350# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
351# CONFIG_INET_XFRM_MODE_TUNNEL is not set
352# CONFIG_INET_XFRM_MODE_BEET is not set
353# CONFIG_INET_LRO is not set
354# CONFIG_INET_DIAG is not set
355# CONFIG_TCP_CONG_ADVANCED is not set
356CONFIG_TCP_CONG_CUBIC=y
357CONFIG_DEFAULT_TCP_CONG="cubic"
358# CONFIG_TCP_MD5SIG is not set
359# CONFIG_IPV6 is not set
360# CONFIG_NETWORK_SECMARK is not set
361# CONFIG_NETFILTER is not set
362# CONFIG_IP_DCCP is not set
363# CONFIG_IP_SCTP is not set
364# CONFIG_RDS is not set
365# CONFIG_TIPC is not set
366# CONFIG_ATM is not set
367# CONFIG_BRIDGE is not set
368# CONFIG_NET_DSA is not set
369# CONFIG_VLAN_8021Q is not set
370# CONFIG_DECNET is not set
371# CONFIG_LLC2 is not set
372# CONFIG_IPX is not set
373# CONFIG_ATALK is not set
374# CONFIG_X25 is not set
375# CONFIG_LAPB is not set
376# CONFIG_ECONET is not set
377# CONFIG_WAN_ROUTER is not set
378# CONFIG_PHONET is not set
379# CONFIG_IEEE802154 is not set
380# CONFIG_NET_SCHED is not set
381# CONFIG_DCB is not set
382
383#
384# Network testing
385#
386# CONFIG_NET_PKTGEN is not set
387# CONFIG_NET_DROP_MONITOR is not set
388# CONFIG_HAMRADIO is not set
389# CONFIG_CAN is not set
390# CONFIG_IRDA is not set
391CONFIG_BT=y
392CONFIG_BT_L2CAP=y
393# CONFIG_BT_SCO is not set
394CONFIG_BT_RFCOMM=y
395# CONFIG_BT_RFCOMM_TTY is not set
396CONFIG_BT_BNEP=y
397CONFIG_BT_BNEP_MC_FILTER=y
398# CONFIG_BT_BNEP_PROTO_FILTER is not set
399CONFIG_BT_HIDP=y
400
401#
402# Bluetooth device drivers
403#
404# CONFIG_BT_HCIBTSDIO is not set
405# CONFIG_BT_HCIUART is not set
406# CONFIG_BT_HCIVHCI is not set
407# CONFIG_BT_MRVL is not set
408# CONFIG_AF_RXRPC is not set
409CONFIG_WIRELESS=y
410CONFIG_CFG80211=y
411# CONFIG_NL80211_TESTMODE is not set
412# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
413# CONFIG_CFG80211_REG_DEBUG is not set
414CONFIG_CFG80211_DEFAULT_PS=y
415CONFIG_CFG80211_DEFAULT_PS_VALUE=1
416# CONFIG_CFG80211_DEBUGFS is not set
417CONFIG_WIRELESS_OLD_REGULATORY=y
418CONFIG_WIRELESS_EXT=y
419CONFIG_WIRELESS_EXT_SYSFS=y
420# CONFIG_LIB80211 is not set
421CONFIG_MAC80211=y
422# CONFIG_MAC80211_RC_PID is not set
423CONFIG_MAC80211_RC_MINSTREL=y
424# CONFIG_MAC80211_RC_DEFAULT_PID is not set
425CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
426CONFIG_MAC80211_RC_DEFAULT="minstrel"
427# CONFIG_MAC80211_MESH is not set
428# CONFIG_MAC80211_LEDS is not set
429# CONFIG_MAC80211_DEBUGFS is not set
430# CONFIG_MAC80211_DEBUG_MENU is not set
431# CONFIG_WIMAX is not set
432# CONFIG_RFKILL is not set
433# CONFIG_NET_9P is not set
434
435#
436# Device Drivers
437#
438
439#
440# Generic Driver Options
441#
442CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
443# CONFIG_DEVTMPFS is not set
444# CONFIG_STANDALONE is not set
445CONFIG_PREVENT_FIRMWARE_BUILD=y
446CONFIG_FW_LOADER=y
447# CONFIG_FIRMWARE_IN_KERNEL is not set
448CONFIG_EXTRA_FIRMWARE=""
449# CONFIG_DEBUG_DRIVER is not set
450# CONFIG_DEBUG_DEVRES is not set
451# CONFIG_SYS_HYPERVISOR is not set
452# CONFIG_CONNECTOR is not set
453# CONFIG_MTD is not set
454CONFIG_OF_DEVICE=y
455CONFIG_OF_GPIO=y
456CONFIG_OF_I2C=y
457# CONFIG_PARPORT is not set
458CONFIG_BLK_DEV=y
459# CONFIG_BLK_DEV_FD is not set
460# CONFIG_BLK_DEV_COW_COMMON is not set
461CONFIG_BLK_DEV_LOOP=y
462# CONFIG_BLK_DEV_CRYPTOLOOP is not set
463# CONFIG_BLK_DEV_NBD is not set
464CONFIG_BLK_DEV_RAM=y
465CONFIG_BLK_DEV_RAM_COUNT=2
466CONFIG_BLK_DEV_RAM_SIZE=4096
467# CONFIG_BLK_DEV_XIP is not set
468# CONFIG_CDROM_PKTCDVD is not set
469# CONFIG_ATA_OVER_ETH is not set
470# CONFIG_BLK_DEV_HD is not set
471CONFIG_MISC_DEVICES=y
472# CONFIG_ICS932S401 is not set
473# CONFIG_ENCLOSURE_SERVICES is not set
474# CONFIG_ISL29003 is not set
475# CONFIG_C2PORT is not set
476
477#
478# EEPROM support
479#
480# CONFIG_EEPROM_AT24 is not set
481# CONFIG_EEPROM_LEGACY is not set
482# CONFIG_EEPROM_MAX6875 is not set
483# CONFIG_EEPROM_93CX6 is not set
484CONFIG_HAVE_IDE=y
485# CONFIG_IDE is not set
486
487#
488# SCSI device support
489#
490# CONFIG_RAID_ATTRS is not set
491CONFIG_SCSI=y
492CONFIG_SCSI_DMA=y
493# CONFIG_SCSI_TGT is not set
494# CONFIG_SCSI_NETLINK is not set
495CONFIG_SCSI_PROC_FS=y
496
497#
498# SCSI support type (disk, tape, CD-ROM)
499#
500CONFIG_BLK_DEV_SD=y
501# CONFIG_CHR_DEV_ST is not set
502# CONFIG_CHR_DEV_OSST is not set
503# CONFIG_BLK_DEV_SR is not set
504# CONFIG_CHR_DEV_SG is not set
505# CONFIG_CHR_DEV_SCH is not set
506CONFIG_SCSI_MULTI_LUN=y
507# CONFIG_SCSI_CONSTANTS is not set
508# CONFIG_SCSI_LOGGING is not set
509# CONFIG_SCSI_SCAN_ASYNC is not set
510CONFIG_SCSI_WAIT_SCAN=m
511
512#
513# SCSI Transports
514#
515# CONFIG_SCSI_SPI_ATTRS is not set
516# CONFIG_SCSI_FC_ATTRS is not set
517# CONFIG_SCSI_ISCSI_ATTRS is not set
518# CONFIG_SCSI_SAS_ATTRS is not set
519# CONFIG_SCSI_SAS_LIBSAS is not set
520# CONFIG_SCSI_SRP_ATTRS is not set
521CONFIG_SCSI_LOWLEVEL=y
522# CONFIG_ISCSI_TCP is not set
523# CONFIG_LIBFC is not set
524# CONFIG_LIBFCOE is not set
525# CONFIG_SCSI_DEBUG is not set
526# CONFIG_SCSI_DH is not set
527# CONFIG_SCSI_OSD_INITIATOR is not set
528# CONFIG_ATA is not set
529# CONFIG_MD is not set
530# CONFIG_MACINTOSH_DRIVERS is not set
531CONFIG_NETDEVICES=y
532# CONFIG_DUMMY is not set
533# CONFIG_BONDING is not set
534# CONFIG_MACVLAN is not set
535# CONFIG_EQUALIZER is not set
536# CONFIG_TUN is not set
537# CONFIG_VETH is not set
538# CONFIG_PHYLIB is not set
539CONFIG_NET_ETHERNET=y
540CONFIG_MII=y
541# CONFIG_ETHOC is not set
542# CONFIG_DNET is not set
543# CONFIG_IBM_NEW_EMAC_ZMII is not set
544# CONFIG_IBM_NEW_EMAC_RGMII is not set
545# CONFIG_IBM_NEW_EMAC_TAH is not set
546# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
547# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
548# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
549# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
550# CONFIG_B44 is not set
551# CONFIG_KS8842 is not set
552# CONFIG_KS8851_MLL is not set
553# CONFIG_XILINX_EMACLITE is not set
554# CONFIG_NETDEV_1000 is not set
555# CONFIG_NETDEV_10000 is not set
556CONFIG_WLAN=y
557# CONFIG_WLAN_PRE80211 is not set
558CONFIG_WLAN_80211=y
559# CONFIG_LIBERTAS is not set
560# CONFIG_LIBERTAS_THINFIRM is not set
561# CONFIG_MAC80211_HWSIM is not set
562# CONFIG_P54_COMMON is not set
563# CONFIG_ATH_COMMON is not set
564# CONFIG_HOSTAP is not set
565CONFIG_B43=y
566CONFIG_B43_SDIO=y
567CONFIG_B43_PIO=y
568# CONFIG_B43_PHY_LP is not set
569CONFIG_B43_DEBUG=y
570# CONFIG_B43_FORCE_PIO is not set
571# CONFIG_B43LEGACY is not set
572# CONFIG_RT2X00 is not set
573# CONFIG_WL12XX is not set
574# CONFIG_IWM is not set
575
576#
577# Enable WiMAX (Networking options) to see the WiMAX drivers
578#
579# CONFIG_WAN is not set
580# CONFIG_PPP is not set
581# CONFIG_SLIP is not set
582# CONFIG_NETCONSOLE is not set
583# CONFIG_NETPOLL is not set
584# CONFIG_NET_POLL_CONTROLLER is not set
585# CONFIG_ISDN is not set
586# CONFIG_PHONE is not set
587
588#
589# Input device support
590#
591CONFIG_INPUT=y
592CONFIG_INPUT_FF_MEMLESS=m
593# CONFIG_INPUT_POLLDEV is not set
594
595#
596# Userland interfaces
597#
598CONFIG_INPUT_MOUSEDEV=y
599# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
600CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
601CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
602CONFIG_INPUT_JOYDEV=y
603CONFIG_INPUT_EVDEV=y
604# CONFIG_INPUT_EVBUG is not set
605
606#
607# Input Device Drivers
608#
609CONFIG_INPUT_KEYBOARD=y
610# CONFIG_KEYBOARD_ADP5588 is not set
611# CONFIG_KEYBOARD_ATKBD is not set
612# CONFIG_QT2160 is not set
613# CONFIG_KEYBOARD_LKKBD is not set
614# CONFIG_KEYBOARD_GPIO is not set
615# CONFIG_KEYBOARD_MATRIX is not set
616# CONFIG_KEYBOARD_MAX7359 is not set
617# CONFIG_KEYBOARD_NEWTON is not set
618# CONFIG_KEYBOARD_OPENCORES is not set
619# CONFIG_KEYBOARD_STOWAWAY is not set
620# CONFIG_KEYBOARD_SUNKBD is not set
621# CONFIG_KEYBOARD_XTKBD is not set
622CONFIG_INPUT_MOUSE=y
623# CONFIG_MOUSE_PS2 is not set
624# CONFIG_MOUSE_SERIAL is not set
625# CONFIG_MOUSE_VSXXXAA is not set
626# CONFIG_MOUSE_GPIO is not set
627# CONFIG_MOUSE_SYNAPTICS_I2C is not set
628CONFIG_INPUT_JOYSTICK=y
629# CONFIG_JOYSTICK_ANALOG is not set
630# CONFIG_JOYSTICK_A3D is not set
631# CONFIG_JOYSTICK_ADI is not set
632# CONFIG_JOYSTICK_COBRA is not set
633# CONFIG_JOYSTICK_GF2K is not set
634# CONFIG_JOYSTICK_GRIP is not set
635# CONFIG_JOYSTICK_GRIP_MP is not set
636# CONFIG_JOYSTICK_GUILLEMOT is not set
637# CONFIG_JOYSTICK_INTERACT is not set
638# CONFIG_JOYSTICK_SIDEWINDER is not set
639# CONFIG_JOYSTICK_TMDC is not set
640# CONFIG_JOYSTICK_IFORCE is not set
641# CONFIG_JOYSTICK_WARRIOR is not set
642# CONFIG_JOYSTICK_MAGELLAN is not set
643# CONFIG_JOYSTICK_SPACEORB is not set
644# CONFIG_JOYSTICK_SPACEBALL is not set
645# CONFIG_JOYSTICK_STINGER is not set
646# CONFIG_JOYSTICK_TWIDJOY is not set
647# CONFIG_JOYSTICK_ZHENHUA is not set
648# CONFIG_JOYSTICK_JOYDUMP is not set
649# CONFIG_INPUT_TABLET is not set
650# CONFIG_INPUT_TOUCHSCREEN is not set
651CONFIG_INPUT_MISC=y
652CONFIG_INPUT_UINPUT=y
653# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
654
655#
656# Hardware I/O ports
657#
658CONFIG_SERIO=y
659# CONFIG_SERIO_I8042 is not set
660# CONFIG_SERIO_SERPORT is not set
661# CONFIG_SERIO_LIBPS2 is not set
662# CONFIG_SERIO_RAW is not set
663# CONFIG_SERIO_XILINX_XPS_PS2 is not set
664# CONFIG_GAMEPORT is not set
665
666#
667# Character devices
668#
669CONFIG_VT=y
670CONFIG_CONSOLE_TRANSLATIONS=y
671CONFIG_VT_CONSOLE=y
672CONFIG_HW_CONSOLE=y
673# CONFIG_VT_HW_CONSOLE_BINDING is not set
674# CONFIG_DEVKMEM is not set
675# CONFIG_SERIAL_NONSTANDARD is not set
676
677#
678# Serial drivers
679#
680# CONFIG_SERIAL_8250 is not set
681
682#
683# Non-8250 serial port support
684#
685# CONFIG_SERIAL_UARTLITE is not set
686CONFIG_UNIX98_PTYS=y
687# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
688CONFIG_LEGACY_PTYS=y
689CONFIG_LEGACY_PTY_COUNT=64
690# CONFIG_HVC_UDBG is not set
691# CONFIG_IPMI_HANDLER is not set
692# CONFIG_HW_RANDOM is not set
693CONFIG_NVRAM=y
694# CONFIG_R3964 is not set
695# CONFIG_RAW_DRIVER is not set
696# CONFIG_TCG_TPM is not set
697CONFIG_I2C=y
698CONFIG_I2C_BOARDINFO=y
699CONFIG_I2C_COMPAT=y
700CONFIG_I2C_CHARDEV=y
701CONFIG_I2C_HELPER_AUTO=y
702CONFIG_I2C_ALGOBIT=y
703
704#
705# I2C Hardware Bus support
706#
707
708#
709# I2C system bus drivers (mostly embedded / system-on-chip)
710#
711CONFIG_I2C_GPIO=y
712# CONFIG_I2C_MPC is not set
713# CONFIG_I2C_OCORES is not set
714# CONFIG_I2C_SIMTEC is not set
715
716#
717# External I2C/SMBus adapter drivers
718#
719# CONFIG_I2C_PARPORT_LIGHT is not set
720# CONFIG_I2C_TAOS_EVM is not set
721
722#
723# Other I2C/SMBus bus drivers
724#
725# CONFIG_I2C_PCA_PLATFORM is not set
726# CONFIG_I2C_STUB is not set
727
728#
729# Miscellaneous I2C Chip support
730#
731# CONFIG_DS1682 is not set
732# CONFIG_SENSORS_TSL2550 is not set
733# CONFIG_I2C_DEBUG_CORE is not set
734# CONFIG_I2C_DEBUG_ALGO is not set
735# CONFIG_I2C_DEBUG_BUS is not set
736# CONFIG_I2C_DEBUG_CHIP is not set
737# CONFIG_SPI is not set
738
739#
740# PPS support
741#
742# CONFIG_PPS is not set
743CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
744CONFIG_GPIOLIB=y
745# CONFIG_DEBUG_GPIO is not set
746CONFIG_GPIO_SYSFS=y
747
748#
749# Memory mapped GPIO expanders:
750#
751# CONFIG_GPIO_XILINX is not set
752
753#
754# I2C GPIO expanders:
755#
756# CONFIG_GPIO_MAX732X is not set
757# CONFIG_GPIO_PCA953X is not set
758# CONFIG_GPIO_PCF857X is not set
759
760#
761# PCI GPIO expanders:
762#
763
764#
765# SPI GPIO expanders:
766#
767
768#
769# AC97 GPIO expanders:
770#
771# CONFIG_W1 is not set
772# CONFIG_POWER_SUPPLY is not set
773# CONFIG_HWMON is not set
774# CONFIG_THERMAL is not set
775# CONFIG_WATCHDOG is not set
776CONFIG_SSB_POSSIBLE=y
777
778#
779# Sonics Silicon Backplane
780#
781CONFIG_SSB=y
782CONFIG_SSB_BLOCKIO=y
783CONFIG_SSB_SDIOHOST_POSSIBLE=y
784CONFIG_SSB_SDIOHOST=y
785# CONFIG_SSB_SILENT is not set
786CONFIG_SSB_DEBUG=y
787
788#
789# Multifunction device drivers
790#
791# CONFIG_MFD_CORE is not set
792# CONFIG_MFD_SM501 is not set
793# CONFIG_HTC_PASIC3 is not set
794# CONFIG_TPS65010 is not set
795# CONFIG_TWL4030_CORE is not set
796# CONFIG_MFD_TMIO is not set
797# CONFIG_PMIC_DA903X is not set
798# CONFIG_MFD_WM8400 is not set
799# CONFIG_MFD_WM831X is not set
800# CONFIG_MFD_WM8350_I2C is not set
801# CONFIG_MFD_PCF50633 is not set
802# CONFIG_AB3100_CORE is not set
803# CONFIG_REGULATOR is not set
804# CONFIG_MEDIA_SUPPORT is not set
805
806#
807# Graphics support
808#
809# CONFIG_VGASTATE is not set
810# CONFIG_VIDEO_OUTPUT_CONTROL is not set
811CONFIG_FB=y
812# CONFIG_FIRMWARE_EDID is not set
813# CONFIG_FB_DDC is not set
814# CONFIG_FB_BOOT_VESA_SUPPORT is not set
815# CONFIG_FB_CFB_FILLRECT is not set
816# CONFIG_FB_CFB_COPYAREA is not set
817# CONFIG_FB_CFB_IMAGEBLIT is not set
818# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
819# CONFIG_FB_SYS_FILLRECT is not set
820# CONFIG_FB_SYS_COPYAREA is not set
821# CONFIG_FB_SYS_IMAGEBLIT is not set
822# CONFIG_FB_FOREIGN_ENDIAN is not set
823# CONFIG_FB_SYS_FOPS is not set
824# CONFIG_FB_SVGALIB is not set
825# CONFIG_FB_MACMODES is not set
826# CONFIG_FB_BACKLIGHT is not set
827# CONFIG_FB_MODE_HELPERS is not set
828# CONFIG_FB_TILEBLITTING is not set
829
830#
831# Frame buffer hardware drivers
832#
833# CONFIG_FB_OF is not set
834# CONFIG_FB_VGA16 is not set
835# CONFIG_FB_S1D13XXX is not set
836# CONFIG_FB_IBM_GXT4500 is not set
837# CONFIG_FB_VIRTUAL is not set
838# CONFIG_FB_METRONOME is not set
839# CONFIG_FB_MB862XX is not set
840# CONFIG_FB_BROADSHEET is not set
841# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
842
843#
844# Display device support
845#
846# CONFIG_DISPLAY_SUPPORT is not set
847
848#
849# Console display driver support
850#
851# CONFIG_VGA_CONSOLE is not set
852CONFIG_DUMMY_CONSOLE=y
853CONFIG_FRAMEBUFFER_CONSOLE=y
854# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
855# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
856# CONFIG_FONTS is not set
857CONFIG_FONT_8x8=y
858CONFIG_FONT_8x16=y
859# CONFIG_LOGO is not set
860CONFIG_SOUND=y
861CONFIG_SOUND_OSS_CORE=y
862CONFIG_SOUND_OSS_CORE_PRECLAIM=y
863CONFIG_SND=y
864CONFIG_SND_TIMER=y
865CONFIG_SND_PCM=y
866CONFIG_SND_SEQUENCER=y
867# CONFIG_SND_SEQ_DUMMY is not set
868CONFIG_SND_OSSEMUL=y
869CONFIG_SND_MIXER_OSS=y
870CONFIG_SND_PCM_OSS=y
871CONFIG_SND_PCM_OSS_PLUGINS=y
872CONFIG_SND_SEQUENCER_OSS=y
873# CONFIG_SND_DYNAMIC_MINORS is not set
874CONFIG_SND_SUPPORT_OLD_API=y
875# CONFIG_SND_VERBOSE_PROCFS is not set
876# CONFIG_SND_VERBOSE_PRINTK is not set
877# CONFIG_SND_DEBUG is not set
878# CONFIG_SND_RAWMIDI_SEQ is not set
879# CONFIG_SND_OPL3_LIB_SEQ is not set
880# CONFIG_SND_OPL4_LIB_SEQ is not set
881# CONFIG_SND_SBAWE_SEQ is not set
882# CONFIG_SND_EMU10K1_SEQ is not set
883CONFIG_SND_DRIVERS=y
884# CONFIG_SND_DUMMY is not set
885# CONFIG_SND_VIRMIDI is not set
886# CONFIG_SND_MTPAV is not set
887# CONFIG_SND_SERIAL_U16550 is not set
888# CONFIG_SND_MPU401 is not set
889CONFIG_SND_PPC=y
890# CONFIG_SND_SOC is not set
891# CONFIG_SOUND_PRIME is not set
892CONFIG_HID_SUPPORT=y
893CONFIG_HID=y
894# CONFIG_HIDRAW is not set
895# CONFIG_HID_PID is not set
896
897#
898# Special HID drivers
899#
900CONFIG_HID_APPLE=m
901CONFIG_HID_WACOM=m
902CONFIG_USB_SUPPORT=y
903# CONFIG_USB_ARCH_HAS_HCD is not set
904# CONFIG_USB_ARCH_HAS_OHCI is not set
905# CONFIG_USB_ARCH_HAS_EHCI is not set
906# CONFIG_USB_OTG_WHITELIST is not set
907# CONFIG_USB_OTG_BLACKLIST_HUB is not set
908
909#
910# Enable Host or Gadget support to see Inventra options
911#
912
913#
914# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
915#
916# CONFIG_USB_GADGET is not set
917
918#
919# OTG and related infrastructure
920#
921CONFIG_MMC=y
922# CONFIG_MMC_DEBUG is not set
923# CONFIG_MMC_UNSAFE_RESUME is not set
924
925#
926# MMC/SD/SDIO Card Drivers
927#
928CONFIG_MMC_BLOCK=y
929CONFIG_MMC_BLOCK_BOUNCE=y
930# CONFIG_SDIO_UART is not set
931# CONFIG_MMC_TEST is not set
932
933#
934# MMC/SD/SDIO Host Controller Drivers
935#
936CONFIG_MMC_SDHCI=y
937# CONFIG_MMC_SDHCI_OF is not set
938# CONFIG_MMC_SDHCI_PLTFM is not set
939# CONFIG_MMC_WBSD is not set
940# CONFIG_MMC_AT91 is not set
941# CONFIG_MMC_ATMELMCI is not set
942# CONFIG_MEMSTICK is not set
943# CONFIG_NEW_LEDS is not set
944# CONFIG_ACCESSIBILITY is not set
945# CONFIG_EDAC is not set
946CONFIG_RTC_LIB=y
947CONFIG_RTC_CLASS=y
948CONFIG_RTC_HCTOSYS=y
949CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
950# CONFIG_RTC_DEBUG is not set
951
952#
953# RTC interfaces
954#
955CONFIG_RTC_INTF_SYSFS=y
956CONFIG_RTC_INTF_PROC=y
957CONFIG_RTC_INTF_DEV=y
958# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
959# CONFIG_RTC_DRV_TEST is not set
960
961#
962# I2C RTC drivers
963#
964# CONFIG_RTC_DRV_DS1307 is not set
965# CONFIG_RTC_DRV_DS1374 is not set
966# CONFIG_RTC_DRV_DS1672 is not set
967# CONFIG_RTC_DRV_MAX6900 is not set
968# CONFIG_RTC_DRV_RS5C372 is not set
969# CONFIG_RTC_DRV_ISL1208 is not set
970# CONFIG_RTC_DRV_X1205 is not set
971# CONFIG_RTC_DRV_PCF8563 is not set
972# CONFIG_RTC_DRV_PCF8583 is not set
973# CONFIG_RTC_DRV_M41T80 is not set
974# CONFIG_RTC_DRV_S35390A is not set
975# CONFIG_RTC_DRV_FM3130 is not set
976# CONFIG_RTC_DRV_RX8581 is not set
977# CONFIG_RTC_DRV_RX8025 is not set
978
979#
980# SPI RTC drivers
981#
982
983#
984# Platform RTC drivers
985#
986# CONFIG_RTC_DRV_CMOS is not set
987# CONFIG_RTC_DRV_DS1286 is not set
988# CONFIG_RTC_DRV_DS1511 is not set
989# CONFIG_RTC_DRV_DS1553 is not set
990# CONFIG_RTC_DRV_DS1742 is not set
991# CONFIG_RTC_DRV_STK17TA8 is not set
992# CONFIG_RTC_DRV_M48T86 is not set
993# CONFIG_RTC_DRV_M48T35 is not set
994# CONFIG_RTC_DRV_M48T59 is not set
995# CONFIG_RTC_DRV_BQ4802 is not set
996# CONFIG_RTC_DRV_V3020 is not set
997
998#
999# on-CPU RTC drivers
1000#
1001CONFIG_RTC_DRV_GENERIC=y
1002# CONFIG_DMADEVICES is not set
1003# CONFIG_AUXDISPLAY is not set
1004# CONFIG_UIO is not set
1005
1006#
1007# TI VLYNQ
1008#
1009# CONFIG_STAGING is not set
1010
1011#
1012# File systems
1013#
1014CONFIG_EXT2_FS=y
1015# CONFIG_EXT2_FS_XATTR is not set
1016# CONFIG_EXT2_FS_XIP is not set
1017CONFIG_EXT3_FS=y
1018# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1019# CONFIG_EXT3_FS_XATTR is not set
1020# CONFIG_EXT4_FS is not set
1021CONFIG_JBD=y
1022# CONFIG_JBD_DEBUG is not set
1023# CONFIG_REISERFS_FS is not set
1024# CONFIG_JFS_FS is not set
1025# CONFIG_FS_POSIX_ACL is not set
1026# CONFIG_XFS_FS is not set
1027# CONFIG_GFS2_FS is not set
1028# CONFIG_OCFS2_FS is not set
1029# CONFIG_BTRFS_FS is not set
1030# CONFIG_NILFS2_FS is not set
1031CONFIG_FILE_LOCKING=y
1032CONFIG_FSNOTIFY=y
1033CONFIG_DNOTIFY=y
1034CONFIG_INOTIFY=y
1035CONFIG_INOTIFY_USER=y
1036# CONFIG_QUOTA is not set
1037# CONFIG_AUTOFS_FS is not set
1038# CONFIG_AUTOFS4_FS is not set
1039CONFIG_FUSE_FS=m
1040# CONFIG_CUSE is not set
1041
1042#
1043# Caches
1044#
1045# CONFIG_FSCACHE is not set
1046
1047#
1048# CD-ROM/DVD Filesystems
1049#
1050CONFIG_ISO9660_FS=y
1051CONFIG_JOLIET=y
1052# CONFIG_ZISOFS is not set
1053# CONFIG_UDF_FS is not set
1054
1055#
1056# DOS/FAT/NT Filesystems
1057#
1058CONFIG_FAT_FS=y
1059CONFIG_MSDOS_FS=y
1060CONFIG_VFAT_FS=y
1061CONFIG_FAT_DEFAULT_CODEPAGE=437
1062CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1063# CONFIG_NTFS_FS is not set
1064
1065#
1066# Pseudo filesystems
1067#
1068CONFIG_PROC_FS=y
1069CONFIG_PROC_KCORE=y
1070CONFIG_PROC_SYSCTL=y
1071# CONFIG_PROC_PAGE_MONITOR is not set
1072CONFIG_SYSFS=y
1073CONFIG_TMPFS=y
1074# CONFIG_TMPFS_POSIX_ACL is not set
1075# CONFIG_HUGETLB_PAGE is not set
1076# CONFIG_CONFIGFS_FS is not set
1077CONFIG_MISC_FILESYSTEMS=y
1078# CONFIG_ADFS_FS is not set
1079# CONFIG_AFFS_FS is not set
1080# CONFIG_HFS_FS is not set
1081# CONFIG_HFSPLUS_FS is not set
1082# CONFIG_BEFS_FS is not set
1083# CONFIG_BFS_FS is not set
1084# CONFIG_EFS_FS is not set
1085# CONFIG_CRAMFS is not set
1086# CONFIG_SQUASHFS is not set
1087# CONFIG_VXFS_FS is not set
1088# CONFIG_MINIX_FS is not set
1089# CONFIG_OMFS_FS is not set
1090# CONFIG_HPFS_FS is not set
1091# CONFIG_QNX4FS_FS is not set
1092# CONFIG_ROMFS_FS is not set
1093# CONFIG_SYSV_FS is not set
1094# CONFIG_UFS_FS is not set
1095CONFIG_NETWORK_FILESYSTEMS=y
1096CONFIG_NFS_FS=y
1097CONFIG_NFS_V3=y
1098# CONFIG_NFS_V3_ACL is not set
1099# CONFIG_NFS_V4 is not set
1100CONFIG_ROOT_NFS=y
1101# CONFIG_NFSD is not set
1102CONFIG_LOCKD=y
1103CONFIG_LOCKD_V4=y
1104CONFIG_NFS_COMMON=y
1105CONFIG_SUNRPC=y
1106# CONFIG_RPCSEC_GSS_KRB5 is not set
1107# CONFIG_RPCSEC_GSS_SPKM3 is not set
1108# CONFIG_SMB_FS is not set
1109CONFIG_CIFS=m
1110# CONFIG_CIFS_STATS is not set
1111# CONFIG_CIFS_WEAK_PW_HASH is not set
1112# CONFIG_CIFS_XATTR is not set
1113# CONFIG_CIFS_DEBUG2 is not set
1114# CONFIG_CIFS_EXPERIMENTAL is not set
1115# CONFIG_NCP_FS is not set
1116# CONFIG_CODA_FS is not set
1117# CONFIG_AFS_FS is not set
1118
1119#
1120# Partition Types
1121#
1122# CONFIG_PARTITION_ADVANCED is not set
1123CONFIG_MSDOS_PARTITION=y
1124CONFIG_NLS=y
1125CONFIG_NLS_DEFAULT="iso8859-1"
1126CONFIG_NLS_CODEPAGE_437=y
1127# CONFIG_NLS_CODEPAGE_737 is not set
1128# CONFIG_NLS_CODEPAGE_775 is not set
1129# CONFIG_NLS_CODEPAGE_850 is not set
1130# CONFIG_NLS_CODEPAGE_852 is not set
1131# CONFIG_NLS_CODEPAGE_855 is not set
1132# CONFIG_NLS_CODEPAGE_857 is not set
1133# CONFIG_NLS_CODEPAGE_860 is not set
1134# CONFIG_NLS_CODEPAGE_861 is not set
1135# CONFIG_NLS_CODEPAGE_862 is not set
1136# CONFIG_NLS_CODEPAGE_863 is not set
1137# CONFIG_NLS_CODEPAGE_864 is not set
1138# CONFIG_NLS_CODEPAGE_865 is not set
1139# CONFIG_NLS_CODEPAGE_866 is not set
1140# CONFIG_NLS_CODEPAGE_869 is not set
1141# CONFIG_NLS_CODEPAGE_936 is not set
1142# CONFIG_NLS_CODEPAGE_950 is not set
1143# CONFIG_NLS_CODEPAGE_932 is not set
1144# CONFIG_NLS_CODEPAGE_949 is not set
1145# CONFIG_NLS_CODEPAGE_874 is not set
1146# CONFIG_NLS_ISO8859_8 is not set
1147# CONFIG_NLS_CODEPAGE_1250 is not set
1148# CONFIG_NLS_CODEPAGE_1251 is not set
1149# CONFIG_NLS_ASCII is not set
1150CONFIG_NLS_ISO8859_1=y
1151# CONFIG_NLS_ISO8859_2 is not set
1152# CONFIG_NLS_ISO8859_3 is not set
1153# CONFIG_NLS_ISO8859_4 is not set
1154# CONFIG_NLS_ISO8859_5 is not set
1155# CONFIG_NLS_ISO8859_6 is not set
1156# CONFIG_NLS_ISO8859_7 is not set
1157# CONFIG_NLS_ISO8859_9 is not set
1158# CONFIG_NLS_ISO8859_13 is not set
1159# CONFIG_NLS_ISO8859_14 is not set
1160# CONFIG_NLS_ISO8859_15 is not set
1161# CONFIG_NLS_KOI8_R is not set
1162# CONFIG_NLS_KOI8_U is not set
1163# CONFIG_NLS_UTF8 is not set
1164# CONFIG_DLM is not set
1165CONFIG_BINARY_PRINTF=y
1166
1167#
1168# Library routines
1169#
1170CONFIG_BITREVERSE=y
1171CONFIG_GENERIC_FIND_LAST_BIT=y
1172CONFIG_CRC_CCITT=y
1173CONFIG_CRC16=y
1174# CONFIG_CRC_T10DIF is not set
1175# CONFIG_CRC_ITU_T is not set
1176CONFIG_CRC32=y
1177# CONFIG_CRC7 is not set
1178# CONFIG_LIBCRC32C is not set
1179CONFIG_ZLIB_INFLATE=y
1180CONFIG_DECOMPRESS_GZIP=y
1181CONFIG_HAS_IOMEM=y
1182CONFIG_HAS_IOPORT=y
1183CONFIG_HAS_DMA=y
1184CONFIG_HAVE_LMB=y
1185CONFIG_NLATTR=y
1186CONFIG_GENERIC_ATOMIC64=y
1187
1188#
1189# Kernel hacking
1190#
1191CONFIG_PRINTK_TIME=y
1192CONFIG_ENABLE_WARN_DEPRECATED=y
1193CONFIG_ENABLE_MUST_CHECK=y
1194CONFIG_FRAME_WARN=1024
1195CONFIG_MAGIC_SYSRQ=y
1196# CONFIG_STRIP_ASM_SYMS is not set
1197# CONFIG_UNUSED_SYMBOLS is not set
1198CONFIG_DEBUG_FS=y
1199# CONFIG_HEADERS_CHECK is not set
1200CONFIG_DEBUG_KERNEL=y
1201# CONFIG_DEBUG_SHIRQ is not set
1202CONFIG_DETECT_SOFTLOCKUP=y
1203# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1204CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1205# CONFIG_DETECT_HUNG_TASK is not set
1206CONFIG_SCHED_DEBUG=y
1207CONFIG_SCHEDSTATS=y
1208# CONFIG_TIMER_STATS is not set
1209# CONFIG_DEBUG_OBJECTS is not set
1210# CONFIG_DEBUG_SLAB is not set
1211# CONFIG_DEBUG_KMEMLEAK is not set
1212CONFIG_DEBUG_PREEMPT=y
1213# CONFIG_DEBUG_RT_MUTEXES is not set
1214# CONFIG_RT_MUTEX_TESTER is not set
1215CONFIG_DEBUG_SPINLOCK=y
1216CONFIG_DEBUG_MUTEXES=y
1217# CONFIG_DEBUG_LOCK_ALLOC is not set
1218# CONFIG_PROVE_LOCKING is not set
1219# CONFIG_LOCK_STAT is not set
1220CONFIG_DEBUG_SPINLOCK_SLEEP=y
1221# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1222CONFIG_STACKTRACE=y
1223# CONFIG_DEBUG_KOBJECT is not set
1224CONFIG_DEBUG_BUGVERBOSE=y
1225# CONFIG_DEBUG_INFO is not set
1226# CONFIG_DEBUG_VM is not set
1227# CONFIG_DEBUG_WRITECOUNT is not set
1228# CONFIG_DEBUG_MEMORY_INIT is not set
1229# CONFIG_DEBUG_LIST is not set
1230# CONFIG_DEBUG_SG is not set
1231# CONFIG_DEBUG_NOTIFIERS is not set
1232# CONFIG_DEBUG_CREDENTIALS is not set
1233# CONFIG_RCU_TORTURE_TEST is not set
1234# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1235# CONFIG_BACKTRACE_SELF_TEST is not set
1236# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1237# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
1238# CONFIG_FAULT_INJECTION is not set
1239CONFIG_LATENCYTOP=y
1240CONFIG_SYSCTL_SYSCALL_CHECK=y
1241# CONFIG_DEBUG_PAGEALLOC is not set
1242CONFIG_NOP_TRACER=y
1243CONFIG_HAVE_FUNCTION_TRACER=y
1244CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1245CONFIG_HAVE_DYNAMIC_FTRACE=y
1246CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1247CONFIG_TRACER_MAX_TRACE=y
1248CONFIG_RING_BUFFER=y
1249CONFIG_EVENT_TRACING=y
1250CONFIG_CONTEXT_SWITCH_TRACER=y
1251CONFIG_TRACING=y
1252CONFIG_GENERIC_TRACER=y
1253CONFIG_TRACING_SUPPORT=y
1254CONFIG_FTRACE=y
1255# CONFIG_FUNCTION_TRACER is not set
1256# CONFIG_IRQSOFF_TRACER is not set
1257# CONFIG_PREEMPT_TRACER is not set
1258CONFIG_SCHED_TRACER=y
1259CONFIG_BOOT_TRACER=y
1260CONFIG_BRANCH_PROFILE_NONE=y
1261# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
1262# CONFIG_PROFILE_ALL_BRANCHES is not set
1263# CONFIG_STACK_TRACER is not set
1264# CONFIG_KMEMTRACE is not set
1265# CONFIG_WORKQUEUE_TRACER is not set
1266CONFIG_BLK_DEV_IO_TRACE=y
1267# CONFIG_FTRACE_STARTUP_TEST is not set
1268# CONFIG_RING_BUFFER_BENCHMARK is not set
1269# CONFIG_DYNAMIC_DEBUG is not set
1270CONFIG_DMA_API_DEBUG=y
1271# CONFIG_SAMPLES is not set
1272CONFIG_HAVE_ARCH_KGDB=y
1273# CONFIG_KGDB is not set
1274# CONFIG_PPC_DISABLE_WERROR is not set
1275CONFIG_PPC_WERROR=y
1276CONFIG_PRINT_STACK_DEPTH=64
1277# CONFIG_DEBUG_STACKOVERFLOW is not set
1278# CONFIG_DEBUG_STACK_USAGE is not set
1279# CONFIG_PPC_EMULATED_STATS is not set
1280# CONFIG_CODE_PATCHING_SELFTEST is not set
1281# CONFIG_FTR_FIXUP_SELFTEST is not set
1282# CONFIG_MSI_BITMAP_SELFTEST is not set
1283# CONFIG_XMON is not set
1284# CONFIG_IRQSTACKS is not set
1285# CONFIG_VIRQ_DEBUG is not set
1286# CONFIG_BDI_SWITCH is not set
1287# CONFIG_BOOTX_TEXT is not set
1288CONFIG_PPC_EARLY_DEBUG=y
1289# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1290# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1291# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
1292# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
1293# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1294# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1295# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
1296# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
1297# CONFIG_PPC_EARLY_DEBUG_44x is not set
1298# CONFIG_PPC_EARLY_DEBUG_40x is not set
1299# CONFIG_PPC_EARLY_DEBUG_CPM is not set
1300CONFIG_PPC_EARLY_DEBUG_USBGECKO=y
1301
1302#
1303# Security options
1304#
1305# CONFIG_KEYS is not set
1306# CONFIG_SECURITY is not set
1307# CONFIG_SECURITYFS is not set
1308# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1309CONFIG_CRYPTO=y
1310
1311#
1312# Crypto core or helper
1313#
1314CONFIG_CRYPTO_ALGAPI=y
1315CONFIG_CRYPTO_ALGAPI2=y
1316CONFIG_CRYPTO_AEAD2=y
1317CONFIG_CRYPTO_BLKCIPHER=y
1318CONFIG_CRYPTO_BLKCIPHER2=y
1319CONFIG_CRYPTO_HASH2=y
1320CONFIG_CRYPTO_RNG2=y
1321CONFIG_CRYPTO_PCOMP=y
1322CONFIG_CRYPTO_MANAGER=y
1323CONFIG_CRYPTO_MANAGER2=y
1324# CONFIG_CRYPTO_GF128MUL is not set
1325# CONFIG_CRYPTO_NULL is not set
1326CONFIG_CRYPTO_WORKQUEUE=y
1327# CONFIG_CRYPTO_CRYPTD is not set
1328# CONFIG_CRYPTO_AUTHENC is not set
1329# CONFIG_CRYPTO_TEST is not set
1330
1331#
1332# Authenticated Encryption with Associated Data
1333#
1334# CONFIG_CRYPTO_CCM is not set
1335# CONFIG_CRYPTO_GCM is not set
1336# CONFIG_CRYPTO_SEQIV is not set
1337
1338#
1339# Block modes
1340#
1341# CONFIG_CRYPTO_CBC is not set
1342# CONFIG_CRYPTO_CTR is not set
1343# CONFIG_CRYPTO_CTS is not set
1344CONFIG_CRYPTO_ECB=y
1345# CONFIG_CRYPTO_LRW is not set
1346# CONFIG_CRYPTO_PCBC is not set
1347# CONFIG_CRYPTO_XTS is not set
1348
1349#
1350# Hash modes
1351#
1352# CONFIG_CRYPTO_HMAC is not set
1353# CONFIG_CRYPTO_XCBC is not set
1354# CONFIG_CRYPTO_VMAC is not set
1355
1356#
1357# Digest
1358#
1359# CONFIG_CRYPTO_CRC32C is not set
1360# CONFIG_CRYPTO_GHASH is not set
1361# CONFIG_CRYPTO_MD4 is not set
1362# CONFIG_CRYPTO_MD5 is not set
1363# CONFIG_CRYPTO_MICHAEL_MIC is not set
1364# CONFIG_CRYPTO_RMD128 is not set
1365# CONFIG_CRYPTO_RMD160 is not set
1366# CONFIG_CRYPTO_RMD256 is not set
1367# CONFIG_CRYPTO_RMD320 is not set
1368# CONFIG_CRYPTO_SHA1 is not set
1369# CONFIG_CRYPTO_SHA256 is not set
1370# CONFIG_CRYPTO_SHA512 is not set
1371# CONFIG_CRYPTO_TGR192 is not set
1372# CONFIG_CRYPTO_WP512 is not set
1373
1374#
1375# Ciphers
1376#
1377CONFIG_CRYPTO_AES=y
1378# CONFIG_CRYPTO_ANUBIS is not set
1379CONFIG_CRYPTO_ARC4=y
1380# CONFIG_CRYPTO_BLOWFISH is not set
1381# CONFIG_CRYPTO_CAMELLIA is not set
1382# CONFIG_CRYPTO_CAST5 is not set
1383# CONFIG_CRYPTO_CAST6 is not set
1384# CONFIG_CRYPTO_DES is not set
1385# CONFIG_CRYPTO_FCRYPT is not set
1386# CONFIG_CRYPTO_KHAZAD is not set
1387# CONFIG_CRYPTO_SALSA20 is not set
1388# CONFIG_CRYPTO_SEED is not set
1389# CONFIG_CRYPTO_SERPENT is not set
1390# CONFIG_CRYPTO_TEA is not set
1391# CONFIG_CRYPTO_TWOFISH is not set
1392
1393#
1394# Compression
1395#
1396# CONFIG_CRYPTO_DEFLATE is not set
1397# CONFIG_CRYPTO_ZLIB is not set
1398# CONFIG_CRYPTO_LZO is not set
1399
1400#
1401# Random Number Generation
1402#
1403# CONFIG_CRYPTO_ANSI_CPRNG is not set
1404# CONFIG_CRYPTO_HW is not set
1405# CONFIG_PPC_CLOCK is not set
1406# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h
index f1f4e23a84e9..5c2c0233175e 100644
--- a/arch/powerpc/include/asm/fixmap.h
+++ b/arch/powerpc/include/asm/fixmap.h
@@ -44,6 +44,9 @@
44 */ 44 */
45enum fixed_addresses { 45enum fixed_addresses {
46 FIX_HOLE, 46 FIX_HOLE,
47 /* reserve the top 128K for early debugging purposes */
48 FIX_EARLY_DEBUG_TOP = FIX_HOLE,
49 FIX_EARLY_DEBUG_BASE = FIX_EARLY_DEBUG_TOP+((128*1024)/PAGE_SIZE)-1,
47#ifdef CONFIG_HIGHMEM 50#ifdef CONFIG_HIGHMEM
48 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ 51 FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
49 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, 52 FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
diff --git a/arch/powerpc/include/asm/udbg.h b/arch/powerpc/include/asm/udbg.h
index cd21e5e6b04f..11ae699135ba 100644
--- a/arch/powerpc/include/asm/udbg.h
+++ b/arch/powerpc/include/asm/udbg.h
@@ -51,6 +51,7 @@ extern void __init udbg_init_btext(void);
51extern void __init udbg_init_44x_as1(void); 51extern void __init udbg_init_44x_as1(void);
52extern void __init udbg_init_40x_realmode(void); 52extern void __init udbg_init_40x_realmode(void);
53extern void __init udbg_init_cpm(void); 53extern void __init udbg_init_cpm(void);
54extern void __init udbg_init_usbgecko(void);
54 55
55#endif /* __KERNEL__ */ 56#endif /* __KERNEL__ */
56#endif /* _ASM_POWERPC_UDBG_H */ 57#endif /* _ASM_POWERPC_UDBG_H */
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 03c862b6a9c4..2fc82bac3bbc 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -697,9 +697,9 @@ static struct cpu_spec __initdata cpu_specs[] = {
697 .machine_check = machine_check_generic, 697 .machine_check = machine_check_generic,
698 .platform = "ppc750", 698 .platform = "ppc750",
699 }, 699 },
700 { /* 750CL */ 700 { /* 750CL (and "Broadway") */
701 .pvr_mask = 0xfffff0f0, 701 .pvr_mask = 0xfffff0e0,
702 .pvr_value = 0x00087010, 702 .pvr_value = 0x00087000,
703 .cpu_name = "750CL", 703 .cpu_name = "750CL",
704 .cpu_features = CPU_FTRS_750CL, 704 .cpu_features = CPU_FTRS_750CL,
705 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, 705 .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE,
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index 829c3fe7c5a2..e025e89fe93e 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -164,6 +164,9 @@ __after_mmu_off:
164#ifdef CONFIG_PPC_EARLY_DEBUG_CPM 164#ifdef CONFIG_PPC_EARLY_DEBUG_CPM
165 bl setup_cpm_bat 165 bl setup_cpm_bat
166#endif 166#endif
167#ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO
168 bl setup_usbgecko_bat
169#endif
167 170
168/* 171/*
169 * Call setup_cpu for CPU 0 and initialize 6xx Idle 172 * Call setup_cpu for CPU 0 and initialize 6xx Idle
@@ -1203,6 +1206,28 @@ setup_cpm_bat:
1203 blr 1206 blr
1204#endif 1207#endif
1205 1208
1209#ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO
1210setup_usbgecko_bat:
1211 /* prepare a BAT for early io */
1212#if defined(CONFIG_GAMECUBE)
1213 lis r8, 0x0c00
1214#elif defined(CONFIG_WII)
1215 lis r8, 0x0d00
1216#else
1217#error Invalid platform for USB Gecko based early debugging.
1218#endif
1219 /*
1220 * The virtual address used must match the virtual address
1221 * associated to the fixmap entry FIX_EARLY_DEBUG_BASE.
1222 */
1223 lis r11, 0xfffe /* top 128K */
1224 ori r8, r8, 0x002a /* uncached, guarded ,rw */
1225 ori r11, r11, 0x2 /* 128K, Vs=1, Vp=0 */
1226 mtspr SPRN_DBAT1L, r8
1227 mtspr SPRN_DBAT1U, r11
1228 blr
1229#endif
1230
1206#ifdef CONFIG_8260 1231#ifdef CONFIG_8260
1207/* Jump into the system reset for the rom. 1232/* Jump into the system reset for the rom.
1208 * We first disable the MMU, and then jump to the ROM reset address. 1233 * We first disable the MMU, and then jump to the ROM reset address.
diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
index fc9af47e2128..e39cad83c884 100644
--- a/arch/powerpc/kernel/udbg.c
+++ b/arch/powerpc/kernel/udbg.c
@@ -60,6 +60,8 @@ void __init udbg_early_init(void)
60 udbg_init_40x_realmode(); 60 udbg_init_40x_realmode();
61#elif defined(CONFIG_PPC_EARLY_DEBUG_CPM) 61#elif defined(CONFIG_PPC_EARLY_DEBUG_CPM)
62 udbg_init_cpm(); 62 udbg_init_cpm();
63#elif defined(CONFIG_PPC_EARLY_DEBUG_USBGECKO)
64 udbg_init_usbgecko();
63#endif 65#endif
64 66
65#ifdef CONFIG_PPC_EARLY_DEBUG 67#ifdef CONFIG_PPC_EARLY_DEBUG
diff --git a/arch/powerpc/mm/40x_mmu.c b/arch/powerpc/mm/40x_mmu.c
index f5e7b9ce63dd..08dfa8e6d86f 100644
--- a/arch/powerpc/mm/40x_mmu.c
+++ b/arch/powerpc/mm/40x_mmu.c
@@ -91,7 +91,7 @@ void __init MMU_init_hw(void)
91#define LARGE_PAGE_SIZE_16M (1<<24) 91#define LARGE_PAGE_SIZE_16M (1<<24)
92#define LARGE_PAGE_SIZE_4M (1<<22) 92#define LARGE_PAGE_SIZE_4M (1<<22)
93 93
94unsigned long __init mmu_mapin_ram(void) 94unsigned long __init mmu_mapin_ram(unsigned long top)
95{ 95{
96 unsigned long v, s, mapped; 96 unsigned long v, s, mapped;
97 phys_addr_t p; 97 phys_addr_t p;
diff --git a/arch/powerpc/mm/44x_mmu.c b/arch/powerpc/mm/44x_mmu.c
index 98052ac96580..3986264b0993 100644
--- a/arch/powerpc/mm/44x_mmu.c
+++ b/arch/powerpc/mm/44x_mmu.c
@@ -88,7 +88,7 @@ void __init MMU_init_hw(void)
88 flush_instruction_cache(); 88 flush_instruction_cache();
89} 89}
90 90
91unsigned long __init mmu_mapin_ram(void) 91unsigned long __init mmu_mapin_ram(unsigned long top)
92{ 92{
93 unsigned long addr; 93 unsigned long addr;
94 94
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c
index fcfcb6e976c7..c5394728bf2e 100644
--- a/arch/powerpc/mm/fsl_booke_mmu.c
+++ b/arch/powerpc/mm/fsl_booke_mmu.c
@@ -207,7 +207,7 @@ unsigned long map_mem_in_cams(unsigned long ram, int max_cam_idx)
207 return amount_mapped; 207 return amount_mapped;
208} 208}
209 209
210unsigned long __init mmu_mapin_ram(void) 210unsigned long __init mmu_mapin_ram(unsigned long top)
211{ 211{
212 return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1; 212 return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1;
213} 213}
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
index 9ddcfb4dc139..4ec900af332f 100644
--- a/arch/powerpc/mm/init_32.c
+++ b/arch/powerpc/mm/init_32.c
@@ -82,6 +82,11 @@ extern struct task_struct *current_set[NR_CPUS];
82int __map_without_bats; 82int __map_without_bats;
83int __map_without_ltlbs; 83int __map_without_ltlbs;
84 84
85/*
86 * This tells the system to allow ioremapping memory marked as reserved.
87 */
88int __allow_ioremap_reserved;
89
85/* max amount of low RAM to map in */ 90/* max amount of low RAM to map in */
86unsigned long __max_low_memory = MAX_LOW_MEM; 91unsigned long __max_low_memory = MAX_LOW_MEM;
87 92
@@ -131,9 +136,13 @@ void __init MMU_init(void)
131 MMU_setup(); 136 MMU_setup();
132 137
133 if (lmb.memory.cnt > 1) { 138 if (lmb.memory.cnt > 1) {
139#ifndef CONFIG_WII
134 lmb.memory.cnt = 1; 140 lmb.memory.cnt = 1;
135 lmb_analyze(); 141 lmb_analyze();
136 printk(KERN_WARNING "Only using first contiguous memory region"); 142 printk(KERN_WARNING "Only using first contiguous memory region");
143#else
144 wii_memory_fixups();
145#endif
137 } 146 }
138 147
139 total_lowmem = total_memory = lmb_end_of_DRAM() - memstart_addr; 148 total_lowmem = total_memory = lmb_end_of_DRAM() - memstart_addr;
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
index e27a990af42d..d49a77503e19 100644
--- a/arch/powerpc/mm/mmu_decl.h
+++ b/arch/powerpc/mm/mmu_decl.h
@@ -104,6 +104,7 @@ extern void setbat(int index, unsigned long virt, phys_addr_t phys,
104 unsigned int size, int flags); 104 unsigned int size, int flags);
105 105
106extern int __map_without_bats; 106extern int __map_without_bats;
107extern int __allow_ioremap_reserved;
107extern unsigned long ioremap_base; 108extern unsigned long ioremap_base;
108extern unsigned int rtas_data, rtas_size; 109extern unsigned int rtas_data, rtas_size;
109 110
@@ -125,24 +126,32 @@ extern phys_addr_t total_lowmem;
125extern phys_addr_t memstart_addr; 126extern phys_addr_t memstart_addr;
126extern phys_addr_t lowmem_end_addr; 127extern phys_addr_t lowmem_end_addr;
127 128
129#ifdef CONFIG_WII
130extern unsigned long wii_hole_start;
131extern unsigned long wii_hole_size;
132
133extern unsigned long wii_mmu_mapin_mem2(unsigned long top);
134extern void wii_memory_fixups(void);
135#endif
136
128/* ...and now those things that may be slightly different between processor 137/* ...and now those things that may be slightly different between processor
129 * architectures. -- Dan 138 * architectures. -- Dan
130 */ 139 */
131#if defined(CONFIG_8xx) 140#if defined(CONFIG_8xx)
132#define MMU_init_hw() do { } while(0) 141#define MMU_init_hw() do { } while(0)
133#define mmu_mapin_ram() (0UL) 142#define mmu_mapin_ram(top) (0UL)
134 143
135#elif defined(CONFIG_4xx) 144#elif defined(CONFIG_4xx)
136extern void MMU_init_hw(void); 145extern void MMU_init_hw(void);
137extern unsigned long mmu_mapin_ram(void); 146extern unsigned long mmu_mapin_ram(unsigned long top);
138 147
139#elif defined(CONFIG_FSL_BOOKE) 148#elif defined(CONFIG_FSL_BOOKE)
140extern void MMU_init_hw(void); 149extern void MMU_init_hw(void);
141extern unsigned long mmu_mapin_ram(void); 150extern unsigned long mmu_mapin_ram(unsigned long top);
142extern void adjust_total_lowmem(void); 151extern void adjust_total_lowmem(void);
143 152
144#elif defined(CONFIG_PPC32) 153#elif defined(CONFIG_PPC32)
145/* anything 32-bit except 4xx or 8xx */ 154/* anything 32-bit except 4xx or 8xx */
146extern void MMU_init_hw(void); 155extern void MMU_init_hw(void);
147extern unsigned long mmu_mapin_ram(void); 156extern unsigned long mmu_mapin_ram(unsigned long top);
148#endif 157#endif
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index cb96cb2e17cc..177e4038b43c 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -26,6 +26,7 @@
26#include <linux/vmalloc.h> 26#include <linux/vmalloc.h>
27#include <linux/init.h> 27#include <linux/init.h>
28#include <linux/highmem.h> 28#include <linux/highmem.h>
29#include <linux/lmb.h>
29 30
30#include <asm/pgtable.h> 31#include <asm/pgtable.h>
31#include <asm/pgalloc.h> 32#include <asm/pgalloc.h>
@@ -191,7 +192,8 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, unsigned long flags,
191 * Don't allow anybody to remap normal RAM that we're using. 192 * Don't allow anybody to remap normal RAM that we're using.
192 * mem_init() sets high_memory so only do the check after that. 193 * mem_init() sets high_memory so only do the check after that.
193 */ 194 */
194 if (mem_init_done && (p < virt_to_phys(high_memory))) { 195 if (mem_init_done && (p < virt_to_phys(high_memory)) &&
196 !(__allow_ioremap_reserved && lmb_is_region_reserved(p, size))) {
195 printk("__ioremap(): phys addr 0x%llx is RAM lr %p\n", 197 printk("__ioremap(): phys addr 0x%llx is RAM lr %p\n",
196 (unsigned long long)p, __builtin_return_address(0)); 198 (unsigned long long)p, __builtin_return_address(0));
197 return NULL; 199 return NULL;
@@ -283,18 +285,18 @@ int map_page(unsigned long va, phys_addr_t pa, int flags)
283} 285}
284 286
285/* 287/*
286 * Map in a big chunk of physical memory starting at PAGE_OFFSET. 288 * Map in a chunk of physical memory starting at start.
287 */ 289 */
288void __init mapin_ram(void) 290void __init __mapin_ram_chunk(unsigned long offset, unsigned long top)
289{ 291{
290 unsigned long v, s, f; 292 unsigned long v, s, f;
291 phys_addr_t p; 293 phys_addr_t p;
292 int ktext; 294 int ktext;
293 295
294 s = mmu_mapin_ram(); 296 s = offset;
295 v = PAGE_OFFSET + s; 297 v = PAGE_OFFSET + s;
296 p = memstart_addr + s; 298 p = memstart_addr + s;
297 for (; s < total_lowmem; s += PAGE_SIZE) { 299 for (; s < top; s += PAGE_SIZE) {
298 ktext = ((char *) v >= _stext && (char *) v < etext); 300 ktext = ((char *) v >= _stext && (char *) v < etext);
299 f = ktext ? PAGE_KERNEL_TEXT : PAGE_KERNEL; 301 f = ktext ? PAGE_KERNEL_TEXT : PAGE_KERNEL;
300 map_page(v, p, f); 302 map_page(v, p, f);
@@ -307,6 +309,30 @@ void __init mapin_ram(void)
307 } 309 }
308} 310}
309 311
312void __init mapin_ram(void)
313{
314 unsigned long s, top;
315
316#ifndef CONFIG_WII
317 top = total_lowmem;
318 s = mmu_mapin_ram(top);
319 __mapin_ram_chunk(s, top);
320#else
321 if (!wii_hole_size) {
322 s = mmu_mapin_ram(total_lowmem);
323 __mapin_ram_chunk(s, total_lowmem);
324 } else {
325 top = wii_hole_start;
326 s = mmu_mapin_ram(top);
327 __mapin_ram_chunk(s, top);
328
329 top = lmb_end_of_DRAM();
330 s = wii_mmu_mapin_mem2(top);
331 __mapin_ram_chunk(s, top);
332 }
333#endif
334}
335
310/* Scan the real Linux page tables and return a PTE pointer for 336/* Scan the real Linux page tables and return a PTE pointer for
311 * a virtual address in a context. 337 * a virtual address in a context.
312 * Returns true (1) if PTE was found, zero otherwise. The pointer to 338 * Returns true (1) if PTE was found, zero otherwise. The pointer to
diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c
index 2d2a87e10154..f11c2cdcb0fe 100644
--- a/arch/powerpc/mm/ppc_mmu_32.c
+++ b/arch/powerpc/mm/ppc_mmu_32.c
@@ -72,7 +72,7 @@ unsigned long p_mapped_by_bats(phys_addr_t pa)
72 return 0; 72 return 0;
73} 73}
74 74
75unsigned long __init mmu_mapin_ram(void) 75unsigned long __init mmu_mapin_ram(unsigned long top)
76{ 76{
77 unsigned long tot, bl, done; 77 unsigned long tot, bl, done;
78 unsigned long max_size = (256<<20); 78 unsigned long max_size = (256<<20);
@@ -86,7 +86,7 @@ unsigned long __init mmu_mapin_ram(void)
86 86
87 /* Make sure we don't map a block larger than the 87 /* Make sure we don't map a block larger than the
88 smallest alignment of the physical address. */ 88 smallest alignment of the physical address. */
89 tot = total_lowmem; 89 tot = top;
90 for (bl = 128<<10; bl < max_size; bl <<= 1) { 90 for (bl = 128<<10; bl < max_size; bl <<= 1) {
91 if (bl * 2 > tot) 91 if (bl * 2 > tot)
92 break; 92 break;
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 2eab27a94cc9..fa0f690d3867 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -311,7 +311,7 @@ config NR_CPUS
311 311
312config NOT_COHERENT_CACHE 312config NOT_COHERENT_CACHE
313 bool 313 bool
314 depends on 4xx || 8xx || E200 || PPC_MPC512x 314 depends on 4xx || 8xx || E200 || PPC_MPC512x || GAMECUBE_COMMON
315 default y 315 default y
316 316
317config CHECK_CACHE_COHERENCY 317config CHECK_CACHE_COHERENCY
diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig
index 291ac9d8cbee..524d971a1478 100644
--- a/arch/powerpc/platforms/embedded6xx/Kconfig
+++ b/arch/powerpc/platforms/embedded6xx/Kconfig
@@ -90,3 +90,36 @@ config MPC10X_OPENPIC
90config MPC10X_STORE_GATHERING 90config MPC10X_STORE_GATHERING
91 bool "Enable MPC10x store gathering" 91 bool "Enable MPC10x store gathering"
92 depends on MPC10X_BRIDGE 92 depends on MPC10X_BRIDGE
93
94config GAMECUBE_COMMON
95 bool
96
97config USBGECKO_UDBG
98 bool "USB Gecko udbg console for the Nintendo GameCube/Wii"
99 depends on GAMECUBE_COMMON
100 help
101 If you say yes to this option, support will be included for the
102 USB Gecko adapter as an udbg console.
103 The USB Gecko is a EXI to USB Serial converter that can be plugged
104 into a memcard slot in the Nintendo GameCube/Wii.
105
106 This driver bypasses the EXI layer completely.
107
108 If in doubt, say N here.
109
110config GAMECUBE
111 bool "Nintendo-GameCube"
112 depends on EMBEDDED6xx
113 select GAMECUBE_COMMON
114 help
115 Select GAMECUBE if configuring for the Nintendo GameCube.
116 More information at: <http://gc-linux.sourceforge.net/>
117
118config WII
119 bool "Nintendo-Wii"
120 depends on EMBEDDED6xx
121 select GAMECUBE_COMMON
122 help
123 Select WII if configuring for the Nintendo Wii.
124 More information at: <http://gc-linux.sourceforge.net/>
125
diff --git a/arch/powerpc/platforms/embedded6xx/Makefile b/arch/powerpc/platforms/embedded6xx/Makefile
index 0773c08bd444..66c23e423f40 100644
--- a/arch/powerpc/platforms/embedded6xx/Makefile
+++ b/arch/powerpc/platforms/embedded6xx/Makefile
@@ -7,3 +7,7 @@ obj-$(CONFIG_STORCENTER) += storcenter.o
7obj-$(CONFIG_PPC_HOLLY) += holly.o 7obj-$(CONFIG_PPC_HOLLY) += holly.o
8obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o 8obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o
9obj-$(CONFIG_PPC_C2K) += c2k.o 9obj-$(CONFIG_PPC_C2K) += c2k.o
10obj-$(CONFIG_USBGECKO_UDBG) += usbgecko_udbg.o
11obj-$(CONFIG_GAMECUBE_COMMON) += flipper-pic.o
12obj-$(CONFIG_GAMECUBE) += gamecube.o
13obj-$(CONFIG_WII) += wii.o hlwd-pic.o
diff --git a/arch/powerpc/platforms/embedded6xx/flipper-pic.c b/arch/powerpc/platforms/embedded6xx/flipper-pic.c
new file mode 100644
index 000000000000..d5963285e3be
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/flipper-pic.c
@@ -0,0 +1,263 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/flipper-pic.c
3 *
4 * Nintendo GameCube/Wii "Flipper" interrupt controller support.
5 * Copyright (C) 2004-2009 The GameCube Linux Team
6 * Copyright (C) 2007,2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14#define DRV_MODULE_NAME "flipper-pic"
15#define pr_fmt(fmt) DRV_MODULE_NAME ": " fmt
16
17#include <linux/kernel.h>
18#include <linux/init.h>
19#include <linux/irq.h>
20#include <linux/of.h>
21#include <asm/io.h>
22
23#include "flipper-pic.h"
24
25#define FLIPPER_NR_IRQS 32
26
27/*
28 * Each interrupt has a corresponding bit in both
29 * the Interrupt Cause (ICR) and Interrupt Mask (IMR) registers.
30 *
31 * Enabling/disabling an interrupt line involves setting/clearing
32 * the corresponding bit in IMR.
33 * Except for the RSW interrupt, all interrupts get deasserted automatically
34 * when the source deasserts the interrupt.
35 */
36#define FLIPPER_ICR 0x00
37#define FLIPPER_ICR_RSS (1<<16) /* reset switch state */
38
39#define FLIPPER_IMR 0x04
40
41#define FLIPPER_RESET 0x24
42
43
44/*
45 * IRQ chip hooks.
46 *
47 */
48
49static void flipper_pic_mask_and_ack(unsigned int virq)
50{
51 int irq = virq_to_hw(virq);
52 void __iomem *io_base = get_irq_chip_data(virq);
53 u32 mask = 1 << irq;
54
55 clrbits32(io_base + FLIPPER_IMR, mask);
56 /* this is at least needed for RSW */
57 out_be32(io_base + FLIPPER_ICR, mask);
58}
59
60static void flipper_pic_ack(unsigned int virq)
61{
62 int irq = virq_to_hw(virq);
63 void __iomem *io_base = get_irq_chip_data(virq);
64
65 /* this is at least needed for RSW */
66 out_be32(io_base + FLIPPER_ICR, 1 << irq);
67}
68
69static void flipper_pic_mask(unsigned int virq)
70{
71 int irq = virq_to_hw(virq);
72 void __iomem *io_base = get_irq_chip_data(virq);
73
74 clrbits32(io_base + FLIPPER_IMR, 1 << irq);
75}
76
77static void flipper_pic_unmask(unsigned int virq)
78{
79 int irq = virq_to_hw(virq);
80 void __iomem *io_base = get_irq_chip_data(virq);
81
82 setbits32(io_base + FLIPPER_IMR, 1 << irq);
83}
84
85
86static struct irq_chip flipper_pic = {
87 .name = "flipper-pic",
88 .ack = flipper_pic_ack,
89 .mask_ack = flipper_pic_mask_and_ack,
90 .mask = flipper_pic_mask,
91 .unmask = flipper_pic_unmask,
92};
93
94/*
95 * IRQ host hooks.
96 *
97 */
98
99static struct irq_host *flipper_irq_host;
100
101static int flipper_pic_map(struct irq_host *h, unsigned int virq,
102 irq_hw_number_t hwirq)
103{
104 set_irq_chip_data(virq, h->host_data);
105 get_irq_desc(virq)->status |= IRQ_LEVEL;
106 set_irq_chip_and_handler(virq, &flipper_pic, handle_level_irq);
107 return 0;
108}
109
110static void flipper_pic_unmap(struct irq_host *h, unsigned int irq)
111{
112 set_irq_chip_data(irq, NULL);
113 set_irq_chip(irq, NULL);
114}
115
116static int flipper_pic_match(struct irq_host *h, struct device_node *np)
117{
118 return 1;
119}
120
121
122static struct irq_host_ops flipper_irq_host_ops = {
123 .map = flipper_pic_map,
124 .unmap = flipper_pic_unmap,
125 .match = flipper_pic_match,
126};
127
128/*
129 * Platform hooks.
130 *
131 */
132
133static void __flipper_quiesce(void __iomem *io_base)
134{
135 /* mask and ack all IRQs */
136 out_be32(io_base + FLIPPER_IMR, 0x00000000);
137 out_be32(io_base + FLIPPER_ICR, 0xffffffff);
138}
139
140struct irq_host * __init flipper_pic_init(struct device_node *np)
141{
142 struct device_node *pi;
143 struct irq_host *irq_host = NULL;
144 struct resource res;
145 void __iomem *io_base;
146 int retval;
147
148 pi = of_get_parent(np);
149 if (!pi) {
150 pr_err("no parent found\n");
151 goto out;
152 }
153 if (!of_device_is_compatible(pi, "nintendo,flipper-pi")) {
154 pr_err("unexpected parent compatible\n");
155 goto out;
156 }
157
158 retval = of_address_to_resource(pi, 0, &res);
159 if (retval) {
160 pr_err("no io memory range found\n");
161 goto out;
162 }
163 io_base = ioremap(res.start, resource_size(&res));
164
165 pr_info("controller at 0x%08x mapped to 0x%p\n", res.start, io_base);
166
167 __flipper_quiesce(io_base);
168
169 irq_host = irq_alloc_host(np, IRQ_HOST_MAP_LINEAR, FLIPPER_NR_IRQS,
170 &flipper_irq_host_ops, -1);
171 if (!irq_host) {
172 pr_err("failed to allocate irq_host\n");
173 return NULL;
174 }
175
176 irq_host->host_data = io_base;
177
178out:
179 return irq_host;
180}
181
182unsigned int flipper_pic_get_irq(void)
183{
184 void __iomem *io_base = flipper_irq_host->host_data;
185 int irq;
186 u32 irq_status;
187
188 irq_status = in_be32(io_base + FLIPPER_ICR) &
189 in_be32(io_base + FLIPPER_IMR);
190 if (irq_status == 0)
191 return NO_IRQ; /* no more IRQs pending */
192
193 irq = __ffs(irq_status);
194 return irq_linear_revmap(flipper_irq_host, irq);
195}
196
197/*
198 * Probe function.
199 *
200 */
201
202void __init flipper_pic_probe(void)
203{
204 struct device_node *np;
205
206 np = of_find_compatible_node(NULL, NULL, "nintendo,flipper-pic");
207 BUG_ON(!np);
208
209 flipper_irq_host = flipper_pic_init(np);
210 BUG_ON(!flipper_irq_host);
211
212 irq_set_default_host(flipper_irq_host);
213
214 of_node_put(np);
215}
216
217/*
218 * Misc functions related to the flipper chipset.
219 *
220 */
221
222/**
223 * flipper_quiesce() - quiesce flipper irq controller
224 *
225 * Mask and ack all interrupt sources.
226 *
227 */
228void flipper_quiesce(void)
229{
230 void __iomem *io_base = flipper_irq_host->host_data;
231
232 __flipper_quiesce(io_base);
233}
234
235/*
236 * Resets the platform.
237 */
238void flipper_platform_reset(void)
239{
240 void __iomem *io_base;
241
242 if (flipper_irq_host && flipper_irq_host->host_data) {
243 io_base = flipper_irq_host->host_data;
244 out_8(io_base + FLIPPER_RESET, 0x00);
245 }
246}
247
248/*
249 * Returns non-zero if the reset button is pressed.
250 */
251int flipper_is_reset_button_pressed(void)
252{
253 void __iomem *io_base;
254 u32 icr;
255
256 if (flipper_irq_host && flipper_irq_host->host_data) {
257 io_base = flipper_irq_host->host_data;
258 icr = in_be32(io_base + FLIPPER_ICR);
259 return !(icr & FLIPPER_ICR_RSS);
260 }
261 return 0;
262}
263
diff --git a/arch/powerpc/platforms/embedded6xx/flipper-pic.h b/arch/powerpc/platforms/embedded6xx/flipper-pic.h
new file mode 100644
index 000000000000..e339186b5663
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/flipper-pic.h
@@ -0,0 +1,25 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/flipper-pic.h
3 *
4 * Nintendo GameCube/Wii "Flipper" interrupt controller support.
5 * Copyright (C) 2004-2009 The GameCube Linux Team
6 * Copyright (C) 2007,2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#ifndef __FLIPPER_PIC_H
16#define __FLIPPER_PIC_H
17
18unsigned int flipper_pic_get_irq(void);
19void __init flipper_pic_probe(void);
20
21void flipper_quiesce(void);
22void flipper_platform_reset(void);
23int flipper_is_reset_button_pressed(void);
24
25#endif
diff --git a/arch/powerpc/platforms/embedded6xx/gamecube.c b/arch/powerpc/platforms/embedded6xx/gamecube.c
new file mode 100644
index 000000000000..1106fd99627f
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/gamecube.c
@@ -0,0 +1,118 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/gamecube.c
3 *
4 * Nintendo GameCube board-specific support
5 * Copyright (C) 2004-2009 The GameCube Linux Team
6 * Copyright (C) 2007,2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/irq.h>
18#include <linux/kexec.h>
19#include <linux/seq_file.h>
20#include <linux/of_platform.h>
21
22#include <asm/io.h>
23#include <asm/machdep.h>
24#include <asm/prom.h>
25#include <asm/time.h>
26#include <asm/udbg.h>
27
28#include "flipper-pic.h"
29#include "usbgecko_udbg.h"
30
31
32static void gamecube_spin(void)
33{
34 /* spin until power button pressed */
35 for (;;)
36 cpu_relax();
37}
38
39static void gamecube_restart(char *cmd)
40{
41 local_irq_disable();
42 flipper_platform_reset();
43 gamecube_spin();
44}
45
46static void gamecube_power_off(void)
47{
48 local_irq_disable();
49 gamecube_spin();
50}
51
52static void gamecube_halt(void)
53{
54 gamecube_restart(NULL);
55}
56
57static void __init gamecube_init_early(void)
58{
59 ug_udbg_init();
60}
61
62static int __init gamecube_probe(void)
63{
64 unsigned long dt_root;
65
66 dt_root = of_get_flat_dt_root();
67 if (!of_flat_dt_is_compatible(dt_root, "nintendo,gamecube"))
68 return 0;
69
70 return 1;
71}
72
73static void gamecube_shutdown(void)
74{
75 flipper_quiesce();
76}
77
78#ifdef CONFIG_KEXEC
79static int gamecube_kexec_prepare(struct kimage *image)
80{
81 return 0;
82}
83#endif /* CONFIG_KEXEC */
84
85
86define_machine(gamecube) {
87 .name = "gamecube",
88 .probe = gamecube_probe,
89 .init_early = gamecube_init_early,
90 .restart = gamecube_restart,
91 .power_off = gamecube_power_off,
92 .halt = gamecube_halt,
93 .init_IRQ = flipper_pic_probe,
94 .get_irq = flipper_pic_get_irq,
95 .calibrate_decr = generic_calibrate_decr,
96 .progress = udbg_progress,
97 .machine_shutdown = gamecube_shutdown,
98#ifdef CONFIG_KEXEC
99 .machine_kexec_prepare = gamecube_kexec_prepare,
100#endif
101};
102
103
104static struct of_device_id gamecube_of_bus[] = {
105 { .compatible = "nintendo,flipper", },
106 { },
107};
108
109static int __init gamecube_device_probe(void)
110{
111 if (!machine_is(gamecube))
112 return 0;
113
114 of_platform_bus_probe(NULL, gamecube_of_bus, NULL);
115 return 0;
116}
117device_initcall(gamecube_device_probe);
118
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
new file mode 100644
index 000000000000..dd20bff33207
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
@@ -0,0 +1,241 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/hlwd-pic.c
3 *
4 * Nintendo Wii "Hollywood" interrupt controller support.
5 * Copyright (C) 2009 The GameCube Linux Team
6 * Copyright (C) 2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14#define DRV_MODULE_NAME "hlwd-pic"
15#define pr_fmt(fmt) DRV_MODULE_NAME ": " fmt
16
17#include <linux/kernel.h>
18#include <linux/init.h>
19#include <linux/irq.h>
20#include <linux/of.h>
21#include <asm/io.h>
22
23#include "hlwd-pic.h"
24
25#define HLWD_NR_IRQS 32
26
27/*
28 * Each interrupt has a corresponding bit in both
29 * the Interrupt Cause (ICR) and Interrupt Mask (IMR) registers.
30 *
31 * Enabling/disabling an interrupt line involves asserting/clearing
32 * the corresponding bit in IMR. ACK'ing a request simply involves
33 * asserting the corresponding bit in ICR.
34 */
35#define HW_BROADWAY_ICR 0x00
36#define HW_BROADWAY_IMR 0x04
37
38
39/*
40 * IRQ chip hooks.
41 *
42 */
43
44static void hlwd_pic_mask_and_ack(unsigned int virq)
45{
46 int irq = virq_to_hw(virq);
47 void __iomem *io_base = get_irq_chip_data(virq);
48 u32 mask = 1 << irq;
49
50 clrbits32(io_base + HW_BROADWAY_IMR, mask);
51 out_be32(io_base + HW_BROADWAY_ICR, mask);
52}
53
54static void hlwd_pic_ack(unsigned int virq)
55{
56 int irq = virq_to_hw(virq);
57 void __iomem *io_base = get_irq_chip_data(virq);
58
59 out_be32(io_base + HW_BROADWAY_ICR, 1 << irq);
60}
61
62static void hlwd_pic_mask(unsigned int virq)
63{
64 int irq = virq_to_hw(virq);
65 void __iomem *io_base = get_irq_chip_data(virq);
66
67 clrbits32(io_base + HW_BROADWAY_IMR, 1 << irq);
68}
69
70static void hlwd_pic_unmask(unsigned int virq)
71{
72 int irq = virq_to_hw(virq);
73 void __iomem *io_base = get_irq_chip_data(virq);
74
75 setbits32(io_base + HW_BROADWAY_IMR, 1 << irq);
76}
77
78
79static struct irq_chip hlwd_pic = {
80 .name = "hlwd-pic",
81 .ack = hlwd_pic_ack,
82 .mask_ack = hlwd_pic_mask_and_ack,
83 .mask = hlwd_pic_mask,
84 .unmask = hlwd_pic_unmask,
85};
86
87/*
88 * IRQ host hooks.
89 *
90 */
91
92static struct irq_host *hlwd_irq_host;
93
94static int hlwd_pic_map(struct irq_host *h, unsigned int virq,
95 irq_hw_number_t hwirq)
96{
97 set_irq_chip_data(virq, h->host_data);
98 get_irq_desc(virq)->status |= IRQ_LEVEL;
99 set_irq_chip_and_handler(virq, &hlwd_pic, handle_level_irq);
100 return 0;
101}
102
103static void hlwd_pic_unmap(struct irq_host *h, unsigned int irq)
104{
105 set_irq_chip_data(irq, NULL);
106 set_irq_chip(irq, NULL);
107}
108
109static struct irq_host_ops hlwd_irq_host_ops = {
110 .map = hlwd_pic_map,
111 .unmap = hlwd_pic_unmap,
112};
113
114static unsigned int __hlwd_pic_get_irq(struct irq_host *h)
115{
116 void __iomem *io_base = h->host_data;
117 int irq;
118 u32 irq_status;
119
120 irq_status = in_be32(io_base + HW_BROADWAY_ICR) &
121 in_be32(io_base + HW_BROADWAY_IMR);
122 if (irq_status == 0)
123 return NO_IRQ; /* no more IRQs pending */
124
125 irq = __ffs(irq_status);
126 return irq_linear_revmap(h, irq);
127}
128
129static void hlwd_pic_irq_cascade(unsigned int cascade_virq,
130 struct irq_desc *desc)
131{
132 struct irq_host *irq_host = get_irq_data(cascade_virq);
133 unsigned int virq;
134
135 spin_lock(&desc->lock);
136 desc->chip->mask(cascade_virq); /* IRQ_LEVEL */
137 spin_unlock(&desc->lock);
138
139 virq = __hlwd_pic_get_irq(irq_host);
140 if (virq != NO_IRQ)
141 generic_handle_irq(virq);
142 else
143 pr_err("spurious interrupt!\n");
144
145 spin_lock(&desc->lock);
146 desc->chip->ack(cascade_virq); /* IRQ_LEVEL */
147 if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask)
148 desc->chip->unmask(cascade_virq);
149 spin_unlock(&desc->lock);
150}
151
152/*
153 * Platform hooks.
154 *
155 */
156
157static void __hlwd_quiesce(void __iomem *io_base)
158{
159 /* mask and ack all IRQs */
160 out_be32(io_base + HW_BROADWAY_IMR, 0);
161 out_be32(io_base + HW_BROADWAY_ICR, 0xffffffff);
162}
163
164struct irq_host *hlwd_pic_init(struct device_node *np)
165{
166 struct irq_host *irq_host;
167 struct resource res;
168 void __iomem *io_base;
169 int retval;
170
171 retval = of_address_to_resource(np, 0, &res);
172 if (retval) {
173 pr_err("no io memory range found\n");
174 return NULL;
175 }
176 io_base = ioremap(res.start, resource_size(&res));
177 if (!io_base) {
178 pr_err("ioremap failed\n");
179 return NULL;
180 }
181
182 pr_info("controller at 0x%08x mapped to 0x%p\n", res.start, io_base);
183
184 __hlwd_quiesce(io_base);
185
186 irq_host = irq_alloc_host(np, IRQ_HOST_MAP_LINEAR, HLWD_NR_IRQS,
187 &hlwd_irq_host_ops, -1);
188 if (!irq_host) {
189 pr_err("failed to allocate irq_host\n");
190 return NULL;
191 }
192 irq_host->host_data = io_base;
193
194 return irq_host;
195}
196
197unsigned int hlwd_pic_get_irq(void)
198{
199 return __hlwd_pic_get_irq(hlwd_irq_host);
200}
201
202/*
203 * Probe function.
204 *
205 */
206
207void hlwd_pic_probe(void)
208{
209 struct irq_host *host;
210 struct device_node *np;
211 const u32 *interrupts;
212 int cascade_virq;
213
214 for_each_compatible_node(np, NULL, "nintendo,hollywood-pic") {
215 interrupts = of_get_property(np, "interrupts", NULL);
216 if (interrupts) {
217 host = hlwd_pic_init(np);
218 BUG_ON(!host);
219 cascade_virq = irq_of_parse_and_map(np, 0);
220 set_irq_data(cascade_virq, host);
221 set_irq_chained_handler(cascade_virq,
222 hlwd_pic_irq_cascade);
223 hlwd_irq_host = host;
224 break;
225 }
226 }
227}
228
229/**
230 * hlwd_quiesce() - quiesce hollywood irq controller
231 *
232 * Mask and ack all interrupt sources.
233 *
234 */
235void hlwd_quiesce(void)
236{
237 void __iomem *io_base = hlwd_irq_host->host_data;
238
239 __hlwd_quiesce(io_base);
240}
241
diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.h b/arch/powerpc/platforms/embedded6xx/hlwd-pic.h
new file mode 100644
index 000000000000..d2e5a092761e
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.h
@@ -0,0 +1,22 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/hlwd-pic.h
3 *
4 * Nintendo Wii "Hollywood" interrupt controller support.
5 * Copyright (C) 2009 The GameCube Linux Team
6 * Copyright (C) 2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#ifndef __HLWD_PIC_H
16#define __HLWD_PIC_H
17
18extern unsigned int hlwd_pic_get_irq(void);
19extern void hlwd_pic_probe(void);
20extern void hlwd_quiesce(void);
21
22#endif
diff --git a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c
new file mode 100644
index 000000000000..edc956cc8b13
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c
@@ -0,0 +1,328 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c
3 *
4 * udbg serial input/output routines for the USB Gecko adapter.
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#include <mm/mmu_decl.h>
16
17#include <asm/io.h>
18#include <asm/prom.h>
19#include <asm/udbg.h>
20#include <asm/fixmap.h>
21
22#include "usbgecko_udbg.h"
23
24
25#define EXI_CLK_32MHZ 5
26
27#define EXI_CSR 0x00
28#define EXI_CSR_CLKMASK (0x7<<4)
29#define EXI_CSR_CLK_32MHZ (EXI_CLK_32MHZ<<4)
30#define EXI_CSR_CSMASK (0x7<<7)
31#define EXI_CSR_CS_0 (0x1<<7) /* Chip Select 001 */
32
33#define EXI_CR 0x0c
34#define EXI_CR_TSTART (1<<0)
35#define EXI_CR_WRITE (1<<2)
36#define EXI_CR_READ_WRITE (2<<2)
37#define EXI_CR_TLEN(len) (((len)-1)<<4)
38
39#define EXI_DATA 0x10
40
41#define UG_READ_ATTEMPTS 100
42#define UG_WRITE_ATTEMPTS 100
43
44
45static void __iomem *ug_io_base;
46
47/*
48 * Performs one input/output transaction between the exi host and the usbgecko.
49 */
50static u32 ug_io_transaction(u32 in)
51{
52 u32 __iomem *csr_reg = ug_io_base + EXI_CSR;
53 u32 __iomem *data_reg = ug_io_base + EXI_DATA;
54 u32 __iomem *cr_reg = ug_io_base + EXI_CR;
55 u32 csr, data, cr;
56
57 /* select */
58 csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0;
59 out_be32(csr_reg, csr);
60
61 /* read/write */
62 data = in;
63 out_be32(data_reg, data);
64 cr = EXI_CR_TLEN(2) | EXI_CR_READ_WRITE | EXI_CR_TSTART;
65 out_be32(cr_reg, cr);
66
67 while (in_be32(cr_reg) & EXI_CR_TSTART)
68 barrier();
69
70 /* deselect */
71 out_be32(csr_reg, 0);
72
73 /* result */
74 data = in_be32(data_reg);
75
76 return data;
77}
78
79/*
80 * Returns true if an usbgecko adapter is found.
81 */
82static int ug_is_adapter_present(void)
83{
84 if (!ug_io_base)
85 return 0;
86
87 return ug_io_transaction(0x90000000) == 0x04700000;
88}
89
90/*
91 * Returns true if the TX fifo is ready for transmission.
92 */
93static int ug_is_txfifo_ready(void)
94{
95 return ug_io_transaction(0xc0000000) & 0x04000000;
96}
97
98/*
99 * Tries to transmit a character.
100 * If the TX fifo is not ready the result is undefined.
101 */
102static void ug_raw_putc(char ch)
103{
104 ug_io_transaction(0xb0000000 | (ch << 20));
105}
106
107/*
108 * Transmits a character.
109 * It silently fails if the TX fifo is not ready after a number of retries.
110 */
111static void ug_putc(char ch)
112{
113 int count = UG_WRITE_ATTEMPTS;
114
115 if (!ug_io_base)
116 return;
117
118 if (ch == '\n')
119 ug_putc('\r');
120
121 while (!ug_is_txfifo_ready() && count--)
122 barrier();
123 if (count)
124 ug_raw_putc(ch);
125}
126
127/*
128 * Returns true if the RX fifo is ready for transmission.
129 */
130static int ug_is_rxfifo_ready(void)
131{
132 return ug_io_transaction(0xd0000000) & 0x04000000;
133}
134
135/*
136 * Tries to receive a character.
137 * If a character is unavailable the function returns -1.
138 */
139static int ug_raw_getc(void)
140{
141 u32 data = ug_io_transaction(0xa0000000);
142 if (data & 0x08000000)
143 return (data >> 16) & 0xff;
144 else
145 return -1;
146}
147
148/*
149 * Receives a character.
150 * It fails if the RX fifo is not ready after a number of retries.
151 */
152static int ug_getc(void)
153{
154 int count = UG_READ_ATTEMPTS;
155
156 if (!ug_io_base)
157 return -1;
158
159 while (!ug_is_rxfifo_ready() && count--)
160 barrier();
161 return ug_raw_getc();
162}
163
164/*
165 * udbg functions.
166 *
167 */
168
169/*
170 * Transmits a character.
171 */
172void ug_udbg_putc(char ch)
173{
174 ug_putc(ch);
175}
176
177/*
178 * Receives a character. Waits until a character is available.
179 */
180static int ug_udbg_getc(void)
181{
182 int ch;
183
184 while ((ch = ug_getc()) == -1)
185 barrier();
186 return ch;
187}
188
189/*
190 * Receives a character. If a character is not available, returns -1.
191 */
192static int ug_udbg_getc_poll(void)
193{
194 if (!ug_is_rxfifo_ready())
195 return -1;
196 return ug_getc();
197}
198
199/*
200 * Retrieves and prepares the virtual address needed to access the hardware.
201 */
202static void __iomem *ug_udbg_setup_exi_io_base(struct device_node *np)
203{
204 void __iomem *exi_io_base = NULL;
205 phys_addr_t paddr;
206 const unsigned int *reg;
207
208 reg = of_get_property(np, "reg", NULL);
209 if (reg) {
210 paddr = of_translate_address(np, reg);
211 if (paddr)
212 exi_io_base = ioremap(paddr, reg[1]);
213 }
214 return exi_io_base;
215}
216
217/*
218 * Checks if a USB Gecko adapter is inserted in any memory card slot.
219 */
220static void __iomem *ug_udbg_probe(void __iomem *exi_io_base)
221{
222 int i;
223
224 /* look for a usbgecko on memcard slots A and B */
225 for (i = 0; i < 2; i++) {
226 ug_io_base = exi_io_base + 0x14 * i;
227 if (ug_is_adapter_present())
228 break;
229 }
230 if (i == 2)
231 ug_io_base = NULL;
232 return ug_io_base;
233
234}
235
236/*
237 * USB Gecko udbg support initialization.
238 */
239void __init ug_udbg_init(void)
240{
241 struct device_node *np;
242 void __iomem *exi_io_base;
243
244 if (ug_io_base)
245 udbg_printf("%s: early -> final\n", __func__);
246
247 np = of_find_compatible_node(NULL, NULL, "nintendo,flipper-exi");
248 if (!np) {
249 udbg_printf("%s: EXI node not found\n", __func__);
250 goto done;
251 }
252
253 exi_io_base = ug_udbg_setup_exi_io_base(np);
254 if (!exi_io_base) {
255 udbg_printf("%s: failed to setup EXI io base\n", __func__);
256 goto done;
257 }
258
259 if (!ug_udbg_probe(exi_io_base)) {
260 udbg_printf("usbgecko_udbg: not found\n");
261 iounmap(exi_io_base);
262 } else {
263 udbg_putc = ug_udbg_putc;
264 udbg_getc = ug_udbg_getc;
265 udbg_getc_poll = ug_udbg_getc_poll;
266 udbg_printf("usbgecko_udbg: ready\n");
267 }
268
269done:
270 if (np)
271 of_node_put(np);
272 return;
273}
274
275#ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO
276
277static phys_addr_t __init ug_early_grab_io_addr(void)
278{
279#if defined(CONFIG_GAMECUBE)
280 return 0x0c000000;
281#elif defined(CONFIG_WII)
282 return 0x0d000000;
283#else
284#error Invalid platform for USB Gecko based early debugging.
285#endif
286}
287
288/*
289 * USB Gecko early debug support initialization for udbg.
290 */
291void __init udbg_init_usbgecko(void)
292{
293 void __iomem *early_debug_area;
294 void __iomem *exi_io_base;
295
296 /*
297 * At this point we have a BAT already setup that enables I/O
298 * to the EXI hardware.
299 *
300 * The BAT uses a virtual address range reserved at the fixmap.
301 * This must match the virtual address configured in
302 * head_32.S:setup_usbgecko_bat().
303 */
304 early_debug_area = (void __iomem *)__fix_to_virt(FIX_EARLY_DEBUG_BASE);
305 exi_io_base = early_debug_area + 0x00006800;
306
307 /* try to detect a USB Gecko */
308 if (!ug_udbg_probe(exi_io_base))
309 return;
310
311 /* we found a USB Gecko, load udbg hooks */
312 udbg_putc = ug_udbg_putc;
313 udbg_getc = ug_udbg_getc;
314 udbg_getc_poll = ug_udbg_getc_poll;
315
316 /*
317 * Prepare again the same BAT for MMU_init.
318 * This allows udbg I/O to continue working after the MMU is
319 * turned on for real.
320 * It is safe to continue using the same virtual address as it is
321 * a reserved fixmap area.
322 */
323 setbat(1, (unsigned long)early_debug_area,
324 ug_early_grab_io_addr(), 128*1024, PAGE_KERNEL_NCG);
325}
326
327#endif /* CONFIG_PPC_EARLY_DEBUG_USBGECKO */
328
diff --git a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h
new file mode 100644
index 000000000000..bb6cde4ad764
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h
@@ -0,0 +1,32 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/usbgecko_udbg.h
3 *
4 * udbg serial input/output routines for the USB Gecko adapter.
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14
15#ifndef __USBGECKO_UDBG_H
16#define __USBGECKO_UDBG_H
17
18#ifdef CONFIG_USBGECKO_UDBG
19
20extern void __init ug_udbg_init(void);
21
22#else
23
24static inline void __init ug_udbg_init(void)
25{
26}
27
28#endif /* CONFIG_USBGECKO_UDBG */
29
30void __init udbg_init_usbgecko(void);
31
32#endif /* __USBGECKO_UDBG_H */
diff --git a/arch/powerpc/platforms/embedded6xx/wii.c b/arch/powerpc/platforms/embedded6xx/wii.c
new file mode 100644
index 000000000000..57e5b608fa1a
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/wii.c
@@ -0,0 +1,268 @@
1/*
2 * arch/powerpc/platforms/embedded6xx/wii.c
3 *
4 * Nintendo Wii board-specific support
5 * Copyright (C) 2008-2009 The GameCube Linux Team
6 * Copyright (C) 2008,2009 Albert Herranz
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 */
14#define DRV_MODULE_NAME "wii"
15#define pr_fmt(fmt) DRV_MODULE_NAME ": " fmt
16
17#include <linux/kernel.h>
18#include <linux/init.h>
19#include <linux/irq.h>
20#include <linux/seq_file.h>
21#include <linux/kexec.h>
22#include <linux/of_platform.h>
23#include <linux/lmb.h>
24#include <mm/mmu_decl.h>
25
26#include <asm/io.h>
27#include <asm/machdep.h>
28#include <asm/prom.h>
29#include <asm/time.h>
30#include <asm/udbg.h>
31
32#include "flipper-pic.h"
33#include "hlwd-pic.h"
34#include "usbgecko_udbg.h"
35
36/* control block */
37#define HW_CTRL_COMPATIBLE "nintendo,hollywood-control"
38
39#define HW_CTRL_RESETS 0x94
40#define HW_CTRL_RESETS_SYS (1<<0)
41
42/* gpio */
43#define HW_GPIO_COMPATIBLE "nintendo,hollywood-gpio"
44
45#define HW_GPIO_BASE(idx) (idx * 0x20)
46#define HW_GPIO_OUT(idx) (HW_GPIO_BASE(idx) + 0)
47#define HW_GPIO_DIR(idx) (HW_GPIO_BASE(idx) + 4)
48
49#define HW_GPIO_SHUTDOWN (1<<1)
50#define HW_GPIO_SLOT_LED (1<<5)
51#define HW_GPIO_SENSOR_BAR (1<<8)
52
53
54static void __iomem *hw_ctrl;
55static void __iomem *hw_gpio;
56
57unsigned long wii_hole_start;
58unsigned long wii_hole_size;
59
60
61static int __init page_aligned(unsigned long x)
62{
63 return !(x & (PAGE_SIZE-1));
64}
65
66void __init wii_memory_fixups(void)
67{
68 struct lmb_property *p = lmb.memory.region;
69
70 /*
71 * This is part of a workaround to allow the use of two
72 * discontiguous RAM ranges on the Wii, even if this is
73 * currently unsupported on 32-bit PowerPC Linux.
74 *
75 * We coealesce the two memory ranges of the Wii into a
76 * single range, then create a reservation for the "hole"
77 * between both ranges.
78 */
79
80 BUG_ON(lmb.memory.cnt != 2);
81 BUG_ON(!page_aligned(p[0].base) || !page_aligned(p[1].base));
82
83 p[0].size = _ALIGN_DOWN(p[0].size, PAGE_SIZE);
84 p[1].size = _ALIGN_DOWN(p[1].size, PAGE_SIZE);
85
86 wii_hole_start = p[0].base + p[0].size;
87 wii_hole_size = p[1].base - wii_hole_start;
88
89 pr_info("MEM1: <%08llx %08llx>\n", p[0].base, p[0].size);
90 pr_info("HOLE: <%08lx %08lx>\n", wii_hole_start, wii_hole_size);
91 pr_info("MEM2: <%08llx %08llx>\n", p[1].base, p[1].size);
92
93 p[0].size += wii_hole_size + p[1].size;
94
95 lmb.memory.cnt = 1;
96 lmb_analyze();
97
98 /* reserve the hole */
99 lmb_reserve(wii_hole_start, wii_hole_size);
100
101 /* allow ioremapping the address space in the hole */
102 __allow_ioremap_reserved = 1;
103}
104
105unsigned long __init wii_mmu_mapin_mem2(unsigned long top)
106{
107 unsigned long delta, size, bl;
108 unsigned long max_size = (256<<20);
109
110 /* MEM2 64MB@0x10000000 */
111 delta = wii_hole_start + wii_hole_size;
112 size = top - delta;
113 for (bl = 128<<10; bl < max_size; bl <<= 1) {
114 if (bl * 2 > size)
115 break;
116 }
117 setbat(4, PAGE_OFFSET+delta, delta, bl, PAGE_KERNEL_X);
118 return delta + bl;
119}
120
121static void wii_spin(void)
122{
123 local_irq_disable();
124 for (;;)
125 cpu_relax();
126}
127
128static void __iomem *wii_ioremap_hw_regs(char *name, char *compatible)
129{
130 void __iomem *hw_regs = NULL;
131 struct device_node *np;
132 struct resource res;
133 int error = -ENODEV;
134
135 np = of_find_compatible_node(NULL, NULL, compatible);
136 if (!np) {
137 pr_err("no compatible node found for %s\n", compatible);
138 goto out;
139 }
140 error = of_address_to_resource(np, 0, &res);
141 if (error) {
142 pr_err("no valid reg found for %s\n", np->name);
143 goto out_put;
144 }
145
146 hw_regs = ioremap(res.start, resource_size(&res));
147 if (hw_regs) {
148 pr_info("%s at 0x%08x mapped to 0x%p\n", name,
149 res.start, hw_regs);
150 }
151
152out_put:
153 of_node_put(np);
154out:
155 return hw_regs;
156}
157
158static void __init wii_setup_arch(void)
159{
160 hw_ctrl = wii_ioremap_hw_regs("hw_ctrl", HW_CTRL_COMPATIBLE);
161 hw_gpio = wii_ioremap_hw_regs("hw_gpio", HW_GPIO_COMPATIBLE);
162 if (hw_gpio) {
163 /* turn off the front blue led and IR light */
164 clrbits32(hw_gpio + HW_GPIO_OUT(0),
165 HW_GPIO_SLOT_LED | HW_GPIO_SENSOR_BAR);
166 }
167}
168
169static void wii_restart(char *cmd)
170{
171 local_irq_disable();
172
173 if (hw_ctrl) {
174 /* clear the system reset pin to cause a reset */
175 clrbits32(hw_ctrl + HW_CTRL_RESETS, HW_CTRL_RESETS_SYS);
176 }
177 wii_spin();
178}
179
180static void wii_power_off(void)
181{
182 local_irq_disable();
183
184 if (hw_gpio) {
185 /* make sure that the poweroff GPIO is configured as output */
186 setbits32(hw_gpio + HW_GPIO_DIR(1), HW_GPIO_SHUTDOWN);
187
188 /* drive the poweroff GPIO high */
189 setbits32(hw_gpio + HW_GPIO_OUT(1), HW_GPIO_SHUTDOWN);
190 }
191 wii_spin();
192}
193
194static void wii_halt(void)
195{
196 if (ppc_md.restart)
197 ppc_md.restart(NULL);
198 wii_spin();
199}
200
201static void __init wii_init_early(void)
202{
203 ug_udbg_init();
204}
205
206static void __init wii_pic_probe(void)
207{
208 flipper_pic_probe();
209 hlwd_pic_probe();
210}
211
212static int __init wii_probe(void)
213{
214 unsigned long dt_root;
215
216 dt_root = of_get_flat_dt_root();
217 if (!of_flat_dt_is_compatible(dt_root, "nintendo,wii"))
218 return 0;
219
220 return 1;
221}
222
223static void wii_shutdown(void)
224{
225 hlwd_quiesce();
226 flipper_quiesce();
227}
228
229#ifdef CONFIG_KEXEC
230static int wii_machine_kexec_prepare(struct kimage *image)
231{
232 return 0;
233}
234#endif /* CONFIG_KEXEC */
235
236define_machine(wii) {
237 .name = "wii",
238 .probe = wii_probe,
239 .init_early = wii_init_early,
240 .setup_arch = wii_setup_arch,
241 .restart = wii_restart,
242 .power_off = wii_power_off,
243 .halt = wii_halt,
244 .init_IRQ = wii_pic_probe,
245 .get_irq = flipper_pic_get_irq,
246 .calibrate_decr = generic_calibrate_decr,
247 .progress = udbg_progress,
248 .machine_shutdown = wii_shutdown,
249#ifdef CONFIG_KEXEC
250 .machine_kexec_prepare = wii_machine_kexec_prepare,
251#endif
252};
253
254static struct of_device_id wii_of_bus[] = {
255 { .compatible = "nintendo,hollywood", },
256 { },
257};
258
259static int __init wii_device_probe(void)
260{
261 if (!machine_is(wii))
262 return 0;
263
264 of_platform_bus_probe(NULL, wii_of_bus, NULL);
265 return 0;
266}
267device_initcall(wii_device_probe);
268
diff --git a/include/linux/lmb.h b/include/linux/lmb.h
index 2442e3f3d033..ef82b8fcbddb 100644
--- a/include/linux/lmb.h
+++ b/include/linux/lmb.h
@@ -54,6 +54,7 @@ extern u64 __init lmb_phys_mem_size(void);
54extern u64 lmb_end_of_DRAM(void); 54extern u64 lmb_end_of_DRAM(void);
55extern void __init lmb_enforce_memory_limit(u64 memory_limit); 55extern void __init lmb_enforce_memory_limit(u64 memory_limit);
56extern int __init lmb_is_reserved(u64 addr); 56extern int __init lmb_is_reserved(u64 addr);
57extern int lmb_is_region_reserved(u64 base, u64 size);
57extern int lmb_find(struct lmb_property *res); 58extern int lmb_find(struct lmb_property *res);
58 59
59extern void lmb_dump_all(void); 60extern void lmb_dump_all(void);
diff --git a/lib/lmb.c b/lib/lmb.c
index 0343c05609f0..9cee17142b2c 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -263,7 +263,7 @@ long __init lmb_reserve(u64 base, u64 size)
263 return lmb_add_region(_rgn, base, size); 263 return lmb_add_region(_rgn, base, size);
264} 264}
265 265
266long __init lmb_overlaps_region(struct lmb_region *rgn, u64 base, u64 size) 266long lmb_overlaps_region(struct lmb_region *rgn, u64 base, u64 size)
267{ 267{
268 unsigned long i; 268 unsigned long i;
269 269
@@ -493,6 +493,11 @@ int __init lmb_is_reserved(u64 addr)
493 return 0; 493 return 0;
494} 494}
495 495
496int lmb_is_region_reserved(u64 base, u64 size)
497{
498 return lmb_overlaps_region(&lmb.reserved, base, size);
499}
500
496/* 501/*
497 * Given a <base, len>, find which memory regions belong to this range. 502 * Given a <base, len>, find which memory regions belong to this range.
498 * Adjust the request and return a contiguous chunk. 503 * Adjust the request and return a contiguous chunk.