aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/Kconfig3
-rw-r--r--arch/powerpc/boot/.gitignore1
-rw-r--r--arch/powerpc/boot/Makefile10
-rw-r--r--arch/powerpc/boot/cuboot-824x.c53
-rw-r--r--arch/powerpc/boot/cuboot-83xx.c3
-rw-r--r--arch/powerpc/boot/cuboot-85xx.c5
-rw-r--r--arch/powerpc/boot/devtree.c14
-rw-r--r--arch/powerpc/boot/dts/adder875-redboot.dts184
-rw-r--r--arch/powerpc/boot/dts/adder875-uboot.dts183
-rw-r--r--arch/powerpc/boot/dts/ep8248e.dts207
-rw-r--r--arch/powerpc/boot/dts/mpc8313erdb.dts49
-rw-r--r--arch/powerpc/boot/dts/mpc832x_mds.dts51
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitx.dts30
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitxgp.dts1
-rw-r--r--arch/powerpc/boot/dts/mpc834x_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc836x_mds.dts1
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts279
-rw-r--r--arch/powerpc/boot/dts/mpc8378_mds.dts265
-rw-r--r--arch/powerpc/boot/dts/mpc8379_mds.dts293
-rw-r--r--arch/powerpc/boot/dts/mpc8544ds.dts6
-rw-r--r--arch/powerpc/boot/dts/mpc8572ds.dts7
-rw-r--r--arch/powerpc/boot/dts/mpc8610_hpcd.dts113
-rw-r--r--arch/powerpc/boot/dts/mpc8641_hpcn.dts48
-rw-r--r--arch/powerpc/boot/dts/storcenter.dts138
-rw-r--r--arch/powerpc/boot/ep8248e.c55
-rw-r--r--arch/powerpc/boot/ops.h14
-rw-r--r--arch/powerpc/boot/redboot-8xx.c58
-rw-r--r--arch/powerpc/boot/redboot.h56
-rwxr-xr-xarch/powerpc/boot/wrapper2
-rw-r--r--arch/powerpc/configs/adder875-redboot_defconfig798
-rw-r--r--arch/powerpc/configs/adder875-uboot_defconfig798
-rw-r--r--arch/powerpc/configs/ep8248e_defconfig821
-rw-r--r--arch/powerpc/configs/mpc8313_rdb_defconfig46
-rw-r--r--arch/powerpc/configs/mpc834x_itx_defconfig3
-rw-r--r--arch/powerpc/configs/mpc8610_hpcd_defconfig171
-rw-r--r--arch/powerpc/configs/storcenter_defconfig1174
-rw-r--r--arch/powerpc/kernel/Makefile1
-rw-r--r--arch/powerpc/kernel/head_fsl_booke.S20
-rw-r--r--arch/powerpc/kernel/pci-common.c8
-rw-r--r--arch/powerpc/kernel/pci_32.c58
-rw-r--r--arch/powerpc/kernel/rio.c52
-rw-r--r--arch/powerpc/math-emu/op-4.h40
-rw-r--r--arch/powerpc/mm/fsl_booke_mmu.c6
-rw-r--r--arch/powerpc/mm/lmb.c13
-rw-r--r--arch/powerpc/mm/mem.c21
-rw-r--r--arch/powerpc/platforms/82xx/Kconfig13
-rw-r--r--arch/powerpc/platforms/82xx/Makefile1
-rw-r--r--arch/powerpc/platforms/82xx/ep8248e.c324
-rw-r--r--arch/powerpc/platforms/83xx/mpc8313_rdb.c13
-rw-r--r--arch/powerpc/platforms/83xx/mpc832x_mds.c5
-rw-r--r--arch/powerpc/platforms/83xx/mpc832x_rdb.c10
-rw-r--r--arch/powerpc/platforms/83xx/mpc834x_itx.c12
-rw-r--r--arch/powerpc/platforms/83xx/mpc834x_mds.c5
-rw-r--r--arch/powerpc/platforms/83xx/mpc836x_mds.c5
-rw-r--r--arch/powerpc/platforms/83xx/mpc837x_mds.c56
-rw-r--r--arch/powerpc/platforms/83xx/mpc83xx.h3
-rw-r--r--arch/powerpc/platforms/83xx/usb.c46
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_ads.c18
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_cds.c6
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_mds.c7
-rw-r--r--arch/powerpc/platforms/86xx/mpc8610_hpcd.c15
-rw-r--r--arch/powerpc/platforms/86xx/mpc86xx_hpcn.c14
-rw-r--r--arch/powerpc/platforms/8xx/Kconfig9
-rw-r--r--arch/powerpc/platforms/8xx/Makefile1
-rw-r--r--arch/powerpc/platforms/8xx/adder875.c118
-rw-r--r--arch/powerpc/platforms/8xx/ep88xc.c5
-rw-r--r--arch/powerpc/platforms/8xx/mpc86xads_setup.c5
-rw-r--r--arch/powerpc/platforms/8xx/mpc885ads_setup.c5
-rw-r--r--arch/powerpc/platforms/Kconfig6
-rw-r--r--arch/powerpc/platforms/embedded6xx/Kconfig23
-rw-r--r--arch/powerpc/platforms/embedded6xx/Makefile1
-rw-r--r--arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c2
-rw-r--r--arch/powerpc/platforms/embedded6xx/storcenter.c192
-rw-r--r--arch/powerpc/sysdev/Makefile3
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c150
-rw-r--r--arch/powerpc/sysdev/fsl_rio.c932
-rw-r--r--arch/powerpc/sysdev/fsl_rio.h20
-rw-r--r--arch/powerpc/sysdev/fsl_soc.c103
-rw-r--r--arch/powerpc/sysdev/ipic.c62
-rw-r--r--arch/powerpc/sysdev/mpic.c4
-rw-r--r--arch/powerpc/sysdev/qe_lib/Kconfig2
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c247
-rw-r--r--arch/powerpc/sysdev/qe_lib/ucc_slow.c10
83 files changed, 8297 insertions, 317 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 53d0955abf11..9ae800d81f89 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -140,6 +140,9 @@ config DEFAULT_UIMAGE
140 Used to allow a board to specify it wants a uImage built by default 140 Used to allow a board to specify it wants a uImage built by default
141 default n 141 default n
142 142
143config REDBOOT
144 bool
145
143config PPC64_SWSUSP 146config PPC64_SWSUSP
144 bool 147 bool
145 depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL)) 148 depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL))
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore
index b160322a87ad..5ef2bdf8d189 100644
--- a/arch/powerpc/boot/.gitignore
+++ b/arch/powerpc/boot/.gitignore
@@ -31,6 +31,7 @@ zImage.*lds
31zImage.miboot 31zImage.miboot
32zImage.pmac 32zImage.pmac
33zImage.pseries 33zImage.pseries
34zImage.redboot*
34zImage.sandpoint 35zImage.sandpoint
35zImage.vmode 36zImage.vmode
36zconf.h 37zconf.h
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index d1e625c073bb..1e20aca48f45 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -57,12 +57,12 @@ src-wlib := string.S crt0.S stdio.c main.c \
57 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ 57 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
58 cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ 58 cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \
59 fsl-soc.c mpc8xx.c pq2.c 59 fsl-soc.c mpc8xx.c pq2.c
60src-plat := of.c cuboot-52xx.c cuboot-83xx.c cuboot-85xx.c holly.c \ 60src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \
61 cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ 61 cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
62 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \ 62 ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
63 cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \ 63 cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c \
64 fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c \ 64 fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c \
65 cuboot-katmai.c cuboot-rainier.c 65 cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c
66src-boot := $(src-wlib) $(src-plat) empty.c 66src-boot := $(src-wlib) $(src-plat) empty.c
67 67
68src-boot := $(addprefix $(obj)/, $(src-boot)) 68src-boot := $(addprefix $(obj)/, $(src-boot))
@@ -195,7 +195,9 @@ image-$(CONFIG_PPC_8xx) += cuImage.8xx
195image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc 195image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc
196image-$(CONFIG_EP405) += zImage.ep405 196image-$(CONFIG_EP405) += zImage.ep405
197image-$(CONFIG_8260) += cuImage.pq2 197image-$(CONFIG_8260) += cuImage.pq2
198image-$(CONFIG_EP8248E) += zImage.ep8248e
198image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx 199image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx
200image-$(CONFIG_STORCENTER) += cuImage.824x
199image-$(CONFIG_PPC_83xx) += cuImage.83xx 201image-$(CONFIG_PPC_83xx) += cuImage.83xx
200image-$(CONFIG_PPC_85xx) += cuImage.85xx 202image-$(CONFIG_PPC_85xx) += cuImage.85xx
201image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2 203image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2
@@ -208,6 +210,10 @@ image-$(CONFIG_TAISHAN) += cuImage.taishan
208image-$(CONFIG_KATMAI) += cuImage.katmai 210image-$(CONFIG_KATMAI) += cuImage.katmai
209endif 211endif
210 212
213ifneq ($(CONFIG_REDBOOT),"")
214image-$(CONFIG_PPC_8xx) += zImage.redboot-8xx
215endif
216
211# For 32-bit powermacs, build the COFF and miboot images 217# For 32-bit powermacs, build the COFF and miboot images
212# as well as the ELF images. 218# as well as the ELF images.
213ifeq ($(CONFIG_PPC32),y) 219ifeq ($(CONFIG_PPC32),y)
diff --git a/arch/powerpc/boot/cuboot-824x.c b/arch/powerpc/boot/cuboot-824x.c
new file mode 100644
index 000000000000..ced90c53de48
--- /dev/null
+++ b/arch/powerpc/boot/cuboot-824x.c
@@ -0,0 +1,53 @@
1/*
2 * Old U-boot compatibility for 824x
3 *
4 * Copyright (c) 2007 Freescale Semiconductor, Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 as published
8 * by the Free Software Foundation.
9 */
10
11#include "ops.h"
12#include "stdio.h"
13#include "cuboot.h"
14
15#define TARGET_824x
16#include "ppcboot.h"
17
18static bd_t bd;
19
20
21static void platform_fixups(void)
22{
23 void *soc;
24
25 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
26 dt_fixup_mac_addresses(bd.bi_enetaddr);
27 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
28
29 soc = find_node_by_devtype(NULL, "soc");
30 if (soc) {
31 void *serial = NULL;
32
33 setprop(soc, "bus-frequency", &bd.bi_busfreq,
34 sizeof(bd.bi_busfreq));
35
36 while ((serial = find_node_by_devtype(serial, "serial"))) {
37 if (get_parent(serial) != soc)
38 continue;
39
40 setprop(serial, "clock-frequency", &bd.bi_busfreq,
41 sizeof(bd.bi_busfreq));
42 }
43 }
44}
45
46void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
47 unsigned long r6, unsigned long r7)
48{
49 CUBOOT_INIT();
50 fdt_init(_dtb_start);
51 serial_console_init();
52 platform_ops.fixups = platform_fixups;
53}
diff --git a/arch/powerpc/boot/cuboot-83xx.c b/arch/powerpc/boot/cuboot-83xx.c
index acd860ed7393..61af1c1e8255 100644
--- a/arch/powerpc/boot/cuboot-83xx.c
+++ b/arch/powerpc/boot/cuboot-83xx.c
@@ -24,7 +24,8 @@ static void platform_fixups(void)
24 void *soc; 24 void *soc;
25 25
26 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); 26 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
27 dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); 27 dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr);
28 dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr);
28 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); 29 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
29 30
30 /* Unfortunately, the specific model number is encoded in the 31 /* Unfortunately, the specific model number is encoded in the
diff --git a/arch/powerpc/boot/cuboot-85xx.c b/arch/powerpc/boot/cuboot-85xx.c
index 943779ed19be..6776a1a29f13 100644
--- a/arch/powerpc/boot/cuboot-85xx.c
+++ b/arch/powerpc/boot/cuboot-85xx.c
@@ -24,8 +24,9 @@ static void platform_fixups(void)
24 void *soc; 24 void *soc;
25 25
26 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); 26 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
27 dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr, 27 dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr);
28 bd.bi_enet2addr); 28 dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr);
29 dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr);
29 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); 30 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq);
30 31
31 /* Unfortunately, the specific model number is encoded in the 32 /* Unfortunately, the specific model number is encoded in the
diff --git a/arch/powerpc/boot/devtree.c b/arch/powerpc/boot/devtree.c
index e5dfe4497313..60f561e307a9 100644
--- a/arch/powerpc/boot/devtree.c
+++ b/arch/powerpc/boot/devtree.c
@@ -88,6 +88,20 @@ void dt_fixup_clock(const char *path, u32 freq)
88 } 88 }
89} 89}
90 90
91void dt_fixup_mac_address_by_alias(const char *alias, const u8 *addr)
92{
93 void *devp = find_node_by_alias(alias);
94
95 if (devp) {
96 printf("%s: local-mac-address <-"
97 " %02x:%02x:%02x:%02x:%02x:%02x\n\r", alias,
98 addr[0], addr[1], addr[2],
99 addr[3], addr[4], addr[5]);
100
101 setprop(devp, "local-mac-address", addr, 6);
102 }
103}
104
91void dt_fixup_mac_address(u32 index, const u8 *addr) 105void dt_fixup_mac_address(u32 index, const u8 *addr)
92{ 106{
93 void *devp = find_node_by_prop_value(NULL, "linux,network-index", 107 void *devp = find_node_by_prop_value(NULL, "linux,network-index",
diff --git a/arch/powerpc/boot/dts/adder875-redboot.dts b/arch/powerpc/boot/dts/adder875-redboot.dts
new file mode 100644
index 000000000000..930bfb3894eb
--- /dev/null
+++ b/arch/powerpc/boot/dts/adder875-redboot.dts
@@ -0,0 +1,184 @@
1/*
2 * Device Tree Source for MPC885 ADS running RedBoot
3 *
4 * Copyright 2006 MontaVista Software, Inc.
5 * Copyright 2007 Freescale Semiconductor, Inc.
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13/dts-v1/;
14/ {
15 model = "Analogue & Micro Adder MPC875";
16 compatible = "analogue-and-micro,adder875";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 console = &console;
22 ethernet0 = &eth0;
23 ethernet1 = &eth1;
24 };
25
26 cpus {
27 #address-cells = <1>;
28 #size-cells = <0>;
29
30 PowerPC,875@0 {
31 device_type = "cpu";
32 reg = <0>;
33 d-cache-line-size = <16>;
34 i-cache-line-size = <16>;
35 d-cache-size = <8192>;
36 i-cache-size = <8192>;
37 timebase-frequency = <0>;
38 bus-frequency = <0>;
39 clock-frequency = <0>;
40 interrupts = <15 2>; // decrementer interrupt
41 interrupt-parent = <&PIC>;
42 };
43 };
44
45 memory {
46 device_type = "memory";
47 reg = <0 0x01000000>;
48 };
49
50 localbus@fa200100 {
51 compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus",
52 "simple-bus";
53 #address-cells = <2>;
54 #size-cells = <1>;
55 reg = <0xfa200100 0x40>;
56
57 ranges = <
58 0 0 0xfe000000 0x00800000
59 2 0 0xfa100000 0x00008000
60 >;
61
62 flash@0,0 {
63 compatible = "cfi-flash";
64 reg = <0 0 0x800000>;
65 bank-width = <2>;
66 device-width = <2>;
67 };
68 };
69
70 soc@fa200000 {
71 compatible = "fsl,mpc875-immr", "fsl,pq1-soc", "simple-bus";
72 #address-cells = <1>;
73 #size-cells = <1>;
74 ranges = <0 0xfa200000 0x00004000>;
75
76 // Temporary until code stops depending on it.
77 device_type = "soc";
78
79 // Temporary until get_immrbase() is fixed.
80 reg = <0xfa200000 0x4000>;
81
82 mdio@e00 {
83 compatible = "fsl,mpc875-fec-mdio", "fsl,pq1-fec-mdio";
84 reg = <0xe00 0x188>;
85 #address-cells = <1>;
86 #size-cells = <0>;
87
88 PHY0: ethernet-phy@0 {
89 reg = <0>;
90 device_type = "ethernet-phy";
91 };
92
93 PHY1: ethernet-phy@1 {
94 reg = <1>;
95 device_type = "ethernet-phy";
96 };
97 };
98
99 eth0: ethernet@e00 {
100 device_type = "network";
101 compatible = "fsl,mpc875-fec-enet",
102 "fsl,pq1-fec-enet";
103 reg = <0xe00 0x188>;
104 local-mac-address = [ 00 00 00 00 00 00 ];
105 interrupts = <3 1>;
106 interrupt-parent = <&PIC>;
107 phy-handle = <&PHY0>;
108 linux,network-index = <0>;
109 };
110
111 eth1: ethernet@1e00 {
112 device_type = "network";
113 compatible = "fsl,mpc875-fec-enet",
114 "fsl,pq1-fec-enet";
115 reg = <0x1e00 0x188>;
116 local-mac-address = [ 00 00 00 00 00 00 ];
117 interrupts = <7 1>;
118 interrupt-parent = <&PIC>;
119 phy-handle = <&PHY1>;
120 linux,network-index = <1>;
121 };
122
123 PIC: interrupt-controller@0 {
124 interrupt-controller;
125 #interrupt-cells = <2>;
126 reg = <0 0x24>;
127 compatible = "fsl,mpc875-pic", "fsl,pq1-pic";
128 };
129
130 cpm@9c0 {
131 #address-cells = <1>;
132 #size-cells = <1>;
133 compatible = "fsl,mpc875-cpm", "fsl,cpm1", "simple-bus";
134 interrupts = <0>; // cpm error interrupt
135 interrupt-parent = <&CPM_PIC>;
136 reg = <0x9c0 0x40>;
137 ranges;
138
139 muram {
140 #address-cells = <1>;
141 #size-cells = <1>;
142 ranges = <0 0x2000 0x2000>;
143
144 data@0 {
145 compatible = "fsl,cpm-muram-data";
146 reg = <0 0x1c00>;
147 };
148 };
149
150 brg@9f0 {
151 compatible = "fsl,mpc875-brg",
152 "fsl,cpm1-brg",
153 "fsl,cpm-brg";
154 reg = <0x9f0 0x10>;
155 };
156
157 CPM_PIC: interrupt-controller@930 {
158 interrupt-controller;
159 #interrupt-cells = <1>;
160 interrupts = <5 2 0 2>;
161 interrupt-parent = <&PIC>;
162 reg = <0x930 0x20>;
163 compatible = "fsl,mpc875-cpm-pic",
164 "fsl,cpm1-pic";
165 };
166
167 console: serial@a80 {
168 device_type = "serial";
169 compatible = "fsl,mpc875-smc-uart",
170 "fsl,cpm1-smc-uart";
171 reg = <0xa80 0x10 0x3e80 0x40>;
172 interrupts = <4>;
173 interrupt-parent = <&CPM_PIC>;
174 fsl,cpm-brg = <1>;
175 fsl,cpm-command = <0x0090>;
176 current-speed = <115200>;
177 };
178 };
179 };
180
181 chosen {
182 linux,stdout-path = &console;
183 };
184};
diff --git a/arch/powerpc/boot/dts/adder875-uboot.dts b/arch/powerpc/boot/dts/adder875-uboot.dts
new file mode 100644
index 000000000000..0197242dacfb
--- /dev/null
+++ b/arch/powerpc/boot/dts/adder875-uboot.dts
@@ -0,0 +1,183 @@
1/*
2 * Device Tree Source for MPC885 ADS running U-Boot
3 *
4 * Copyright 2006 MontaVista Software, Inc.
5 * Copyright 2007 Freescale Semiconductor, Inc.
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13/dts-v1/;
14/ {
15 model = "Analogue & Micro Adder MPC875";
16 compatible = "analogue-and-micro,adder875";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 console = &console;
22 ethernet0 = &eth0;
23 ethernet1 = &eth1;
24 };
25
26 cpus {
27 #address-cells = <1>;
28 #size-cells = <0>;
29
30 PowerPC,875@0 {
31 device_type = "cpu";
32 reg = <0>;
33 d-cache-line-size = <16>;
34 i-cache-line-size = <16>;
35 d-cache-size = <8192>;
36 i-cache-size = <8192>;
37 timebase-frequency = <0>;
38 bus-frequency = <0>;
39 clock-frequency = <0>;
40 interrupts = <15 2>; // decrementer interrupt
41 interrupt-parent = <&PIC>;
42 };
43 };
44
45 memory {
46 device_type = "memory";
47 reg = <0 0x01000000>;
48 };
49
50 localbus@ff000100 {
51 compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus",
52 "simple-bus";
53 #address-cells = <2>;
54 #size-cells = <1>;
55 reg = <0xff000100 0x40>;
56
57 ranges = <
58 0 0 0xfe000000 0x01000000
59 >;
60
61 flash@0,0 {
62 compatible = "cfi-flash";
63 reg = <0 0 0x800000>;
64 bank-width = <2>;
65 device-width = <2>;
66 };
67 };
68
69 soc@ff000000 {
70 compatible = "fsl,mpc875-immr", "fsl,pq1-soc", "simple-bus";
71 #address-cells = <1>;
72 #size-cells = <1>;
73 ranges = <0 0xff000000 0x00004000>;
74
75 // Temporary until code stops depending on it.
76 device_type = "soc";
77
78 // Temporary until get_immrbase() is fixed.
79 reg = <0xff000000 0x4000>;
80
81 mdio@e00 {
82 compatible = "fsl,mpc875-fec-mdio", "fsl,pq1-fec-mdio";
83 reg = <0xe00 0x188>;
84 #address-cells = <1>;
85 #size-cells = <0>;
86
87 PHY0: ethernet-phy@0 {
88 reg = <0>;
89 device_type = "ethernet-phy";
90 };
91
92 PHY1: ethernet-phy@1 {
93 reg = <1>;
94 device_type = "ethernet-phy";
95 };
96 };
97
98 eth0: ethernet@e00 {
99 device_type = "network";
100 compatible = "fsl,mpc875-fec-enet",
101 "fsl,pq1-fec-enet";
102 reg = <0xe00 0x188>;
103 local-mac-address = [ 00 00 00 00 00 00 ];
104 interrupts = <3 1>;
105 interrupt-parent = <&PIC>;
106 phy-handle = <&PHY0>;
107 linux,network-index = <0>;
108 };
109
110 eth1: ethernet@1e00 {
111 device_type = "network";
112 compatible = "fsl,mpc875-fec-enet",
113 "fsl,pq1-fec-enet";
114 reg = <0x1e00 0x188>;
115 local-mac-address = [ 00 00 00 00 00 00 ];
116 interrupts = <7 1>;
117 interrupt-parent = <&PIC>;
118 phy-handle = <&PHY1>;
119 linux,network-index = <1>;
120 };
121
122 PIC: interrupt-controller@0 {
123 interrupt-controller;
124 #interrupt-cells = <2>;
125 reg = <0 0x24>;
126 compatible = "fsl,mpc875-pic", "fsl,pq1-pic";
127 };
128
129 cpm@9c0 {
130 #address-cells = <1>;
131 #size-cells = <1>;
132 compatible = "fsl,mpc875-cpm", "fsl,cpm1", "simple-bus";
133 interrupts = <0>; // cpm error interrupt
134 interrupt-parent = <&CPM_PIC>;
135 reg = <0x9c0 0x40>;
136 ranges;
137
138 muram {
139 #address-cells = <1>;
140 #size-cells = <1>;
141 ranges = <0 0x2000 0x2000>;
142
143 data@0 {
144 compatible = "fsl,cpm-muram-data";
145 reg = <0 0x1c00>;
146 };
147 };
148
149 brg@9f0 {
150 compatible = "fsl,mpc875-brg",
151 "fsl,cpm1-brg",
152 "fsl,cpm-brg";
153 reg = <0x9f0 0x10>;
154 };
155
156 CPM_PIC: interrupt-controller@930 {
157 interrupt-controller;
158 #interrupt-cells = <1>;
159 interrupts = <5 2 0 2>;
160 interrupt-parent = <&PIC>;
161 reg = <0x930 0x20>;
162 compatible = "fsl,mpc875-cpm-pic",
163 "fsl,cpm1-pic";
164 };
165
166 console: serial@a80 {
167 device_type = "serial";
168 compatible = "fsl,mpc875-smc-uart",
169 "fsl,cpm1-smc-uart";
170 reg = <0xa80 0x10 0x3e80 0x40>;
171 interrupts = <4>;
172 interrupt-parent = <&CPM_PIC>;
173 fsl,cpm-brg = <1>;
174 fsl,cpm-command = <0x0090>;
175 current-speed = <115200>;
176 };
177 };
178 };
179
180 chosen {
181 linux,stdout-path = &console;
182 };
183};
diff --git a/arch/powerpc/boot/dts/ep8248e.dts b/arch/powerpc/boot/dts/ep8248e.dts
new file mode 100644
index 000000000000..5d2fb76a72c1
--- /dev/null
+++ b/arch/powerpc/boot/dts/ep8248e.dts
@@ -0,0 +1,207 @@
1/*
2 * Device Tree for the Embedded Planet EP8248E board running PlanetCore.
3 *
4 * Copyright 2007 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12/dts-v1/;
13/ {
14 model = "EP8248E";
15 compatible = "fsl,ep8248e";
16 #address-cells = <1>;
17 #size-cells = <1>;
18
19 aliases {
20 planetcore-SMC1 = &smc1;
21 planetcore-SCC1 = &scc1;
22 ethernet0 = &eth0;
23 ethernet1 = &eth1;
24 serial0 = &smc1;
25 serial1 = &scc1;
26 };
27
28 cpus {
29 #address-cells = <1>;
30 #size-cells = <0>;
31
32 PowerPC,8248@0 {
33 device_type = "cpu";
34 reg = <0>;
35 d-cache-line-size = <32>;
36 i-cache-line-size = <32>;
37 d-cache-size = <16384>;
38 i-cache-size = <16384>;
39 timebase-frequency = <0>;
40 clock-frequency = <0>;
41 };
42 };
43
44 localbus@f0010100 {
45 compatible = "fsl,mpc8248-localbus",
46 "fsl,pq2-localbus",
47 "simple-bus";
48 #address-cells = <2>;
49 #size-cells = <1>;
50 reg = <0xf0010100 0x40>;
51
52 ranges = <0 0 0xfc000000 0x04000000
53 1 0 0xfa000000 0x00008000>;
54
55 flash@0,3800000 {
56 compatible = "cfi-flash";
57 reg = <0 0x3800000 0x800000>;
58 bank-width = <4>;
59 device-width = <2>;
60 };
61
62 bcsr@1,0 {
63 #address-cells = <2>;
64 #size-cells = <1>;
65 reg = <1 0 0x10>;
66 compatible = "fsl,ep8248e-bcsr";
67 ranges;
68
69 mdio {
70 device_type = "mdio";
71 compatible = "fsl,ep8248e-mdio-bitbang";
72 #address-cells = <1>;
73 #size-cells = <0>;
74 reg = <1 8 1>;
75
76 PHY0: ethernet-phy@0 {
77 interrupt-parent = <&PIC>;
78 reg = <0>;
79 device_type = "ethernet-phy";
80 };
81
82 PHY1: ethernet-phy@1 {
83 interrupt-parent = <&PIC>;
84 reg = <1>;
85 device_type = "ethernet-phy";
86 };
87 };
88 };
89 };
90
91 memory {
92 device_type = "memory";
93 reg = <0 0>;
94 };
95
96 soc@f0000000 {
97 #address-cells = <1>;
98 #size-cells = <1>;
99 compatible = "fsl,mpc8248-immr", "fsl,pq2-soc", "simple-bus";
100 ranges = <0x00000000 0xf0000000 0x00053000>;
101
102 // Temporary until code stops depending on it.
103 device_type = "soc";
104
105 // Temporary -- will go away once kernel uses ranges for get_immrbase().
106 reg = <0xf0000000 0x00053000>;
107
108 cpm@119c0 {
109 #address-cells = <1>;
110 #size-cells = <1>;
111 #interrupt-cells = <2>;
112 compatible = "fsl,mpc8248-cpm", "fsl,cpm2",
113 "simple-bus";
114 reg = <0x119c0 0x30>;
115 ranges;
116
117 muram {
118 #address-cells = <1>;
119 #size-cells = <1>;
120 ranges = <0 0 0x10000>;
121
122 data@0 {
123 compatible = "fsl,cpm-muram-data";
124 reg = <0 0x1100 0x1140
125 0xec0 0x9800 0x800>;
126 };
127 };
128
129 brg@119f0 {
130 compatible = "fsl,mpc8248-brg",
131 "fsl,cpm2-brg",
132 "fsl,cpm-brg";
133 reg = <0x119f0 0x10 0x115f0 0x10>;
134 };
135
136 /* Monitor port/SMC1 */
137 smc1: serial@11a80 {
138 device_type = "serial";
139 compatible = "fsl,mpc8248-smc-uart",
140 "fsl,cpm2-smc-uart";
141 reg = <0x11a80 0x20 0x1100 0x40>;
142 interrupts = <4 8>;
143 interrupt-parent = <&PIC>;
144 fsl,cpm-brg = <7>;
145 fsl,cpm-command = <0x1d000000>;
146 linux,planetcore-label = "SMC1";
147 };
148
149 /* "Serial" port/SCC1 */
150 scc1: serial@11a00 {
151 device_type = "serial";
152 compatible = "fsl,mpc8248-scc-uart",
153 "fsl,cpm2-scc-uart";
154 reg = <0x11a00 0x20 0x8000 0x100>;
155 interrupts = <40 8>;
156 interrupt-parent = <&PIC>;
157 fsl,cpm-brg = <1>;
158 fsl,cpm-command = <0x00800000>;
159 linux,planetcore-label = "SCC1";
160 };
161
162 eth0: ethernet@11300 {
163 device_type = "network";
164 compatible = "fsl,mpc8248-fcc-enet",
165 "fsl,cpm2-fcc-enet";
166 reg = <0x11300 0x20 0x8400 0x100 0x11390 1>;
167 local-mac-address = [ 00 00 00 00 00 00 ];
168 interrupts = <32 8>;
169 interrupt-parent = <&PIC>;
170 phy-handle = <&PHY0>;
171 linux,network-index = <0>;
172 fsl,cpm-command = <0x12000300>;
173 };
174
175 eth1: ethernet@11320 {
176 device_type = "network";
177 compatible = "fsl,mpc8248-fcc-enet",
178 "fsl,cpm2-fcc-enet";
179 reg = <0x11320 0x20 0x8500 0x100 0x113b0 1>;
180 local-mac-address = [ 00 00 00 00 00 00 ];
181 interrupts = <33 8>;
182 interrupt-parent = <&PIC>;
183 phy-handle = <&PHY1>;
184 linux,network-index = <1>;
185 fsl,cpm-command = <0x16200300>;
186 };
187
188 usb@11b60 {
189 #address-cells = <1>;
190 #size-cells = <0>;
191 compatible = "fsl,mpc8248-usb",
192 "fsl,cpm2-usb";
193 reg = <0x11b60 0x18 0x8b00 0x100>;
194 interrupt-parent = <&PIC>;
195 interrupts = <11 8>;
196 fsl,cpm-command = <0x2e600000>;
197 };
198 };
199
200 PIC: interrupt-controller@10c00 {
201 #interrupt-cells = <2>;
202 interrupt-controller;
203 reg = <0x10c00 0x80>;
204 compatible = "fsl,mpc8248-pic", "fsl,pq2-pic";
205 };
206 };
207};
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts
index c5b6665a8209..9bcf2c92541f 100644
--- a/arch/powerpc/boot/dts/mpc8313erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8313erdb.dts
@@ -45,10 +45,58 @@
45 reg = <00000000 08000000>; // 128MB at 0 45 reg = <00000000 08000000>; // 128MB at 0
46 }; 46 };
47 47
48 localbus@e0005000 {
49 #address-cells = <2>;
50 #size-cells = <1>;
51 compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
52 reg = <e0005000 1000>;
53 interrupts = <d#77 8>;
54 interrupt-parent = <&ipic>;
55
56 // CS0 and CS1 are swapped when
57 // booting from nand, but the
58 // addresses are the same.
59 ranges = <0 0 fe000000 00800000
60 1 0 e2800000 00008000
61 2 0 f0000000 00020000
62 3 0 fa000000 00008000>;
63
64 flash@0,0 {
65 #address-cells = <1>;
66 #size-cells = <1>;
67 compatible = "cfi-flash";
68 reg = <0 0 800000>;
69 bank-width = <2>;
70 device-width = <1>;
71 };
72
73 nand@1,0 {
74 #address-cells = <1>;
75 #size-cells = <1>;
76 compatible = "fsl,mpc8313-fcm-nand",
77 "fsl,elbc-fcm-nand";
78 reg = <1 0 2000>;
79
80 u-boot@0 {
81 reg = <0 100000>;
82 read-only;
83 };
84
85 kernel@100000 {
86 reg = <100000 300000>;
87 };
88
89 fs@400000 {
90 reg = <400000 1c00000>;
91 };
92 };
93 };
94
48 soc8313@e0000000 { 95 soc8313@e0000000 {
49 #address-cells = <1>; 96 #address-cells = <1>;
50 #size-cells = <1>; 97 #size-cells = <1>;
51 device_type = "soc"; 98 device_type = "soc";
99 compatible = "simple-bus";
52 ranges = <0 e0000000 00100000>; 100 ranges = <0 e0000000 00100000>;
53 reg = <e0000000 00000200>; 101 reg = <e0000000 00000200>;
54 bus-frequency = <0>; 102 bus-frequency = <0>;
@@ -92,7 +140,6 @@
92 140
93 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 141 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
94 usb@23000 { 142 usb@23000 {
95 device_type = "usb";
96 compatible = "fsl-usb2-dr"; 143 compatible = "fsl-usb2-dr";
97 reg = <23000 1000>; 144 reg = <23000 1000>;
98 #address-cells = <1>; 145 #address-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
index 26ac467b10ea..690252456d3d 100644
--- a/arch/powerpc/boot/dts/mpc832x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
@@ -7,6 +7,18 @@
7 * under the terms of the GNU General Public License as published by the 7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your 8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version. 9 * option) any later version.
10
11 * To enable external serial I/O on a Freescale MPC 8323 SYS/MDS board, do
12 * this:
13 *
14 * 1) On chip U61, lift (disconnect) pins 21 (TXD) and 22 (RXD) from the board.
15 * 2) Solder a wire from U61-21 to P19A-23. P19 is a grid of pins on the board
16 * next to the serial ports.
17 * 3) Solder a wire from U61-22 to P19K-22.
18 *
19 * Note that there's a typo in the schematic. The board labels the last column
20 * of pins "P19K", but in the schematic, that column is called "P19J". So if
21 * you're going by the schematic, the pin is called "P19J-K22".
10 */ 22 */
11 23
12/ { 24/ {
@@ -169,6 +181,23 @@
169 1 1e 1 0 1 0 /* TX_EN */ 181 1 1e 1 0 1 0 /* TX_EN */
170 1 1f 2 0 1 0>;/* CRS */ 182 1 1f 2 0 1 0>;/* CRS */
171 }; 183 };
184 pio5: ucc_pin@05 {
185 pio-map = <
186 /*
187 * open has
188 * port pin dir drain sel irq
189 */
190 2 0 1 0 2 0 /* TxD5 */
191 2 8 2 0 2 0 /* RxD5 */
192
193 2 1d 2 0 0 0 /* CTS5 */
194 2 1f 1 0 2 0 /* RTS5 */
195
196 2 18 2 0 0 0 /* CD */
197
198 >;
199 };
200
172 }; 201 };
173 }; 202 };
174 203
@@ -176,6 +205,7 @@
176 #address-cells = <1>; 205 #address-cells = <1>;
177 #size-cells = <1>; 206 #size-cells = <1>;
178 device_type = "qe"; 207 device_type = "qe";
208 compatible = "fsl,qe";
179 model = "QE"; 209 model = "QE";
180 ranges = <0 e0100000 00100000>; 210 ranges = <0 e0100000 00100000>;
181 reg = <e0100000 480>; 211 reg = <e0100000 480>;
@@ -210,7 +240,6 @@
210 }; 240 };
211 241
212 usb@6c0 { 242 usb@6c0 {
213 device_type = "usb";
214 compatible = "qe_udc"; 243 compatible = "qe_udc";
215 reg = <6c0 40 8B00 100>; 244 reg = <6c0 40 8B00 100>;
216 interrupts = <b>; 245 interrupts = <b>;
@@ -250,6 +279,26 @@
250 pio-handle = < &pio4 >; 279 pio-handle = < &pio4 >;
251 }; 280 };
252 281
282 ucc@2400 {
283 device_type = "serial";
284 compatible = "ucc_uart";
285 model = "UCC";
286 device-id = <5>; /* The UCC number, 1-7*/
287 port-number = <0>; /* Which ttyQEx device */
288 soft-uart; /* We need Soft-UART */
289 reg = <2400 200>;
290 interrupts = <28>; /* From Table 18-12 */
291 interrupt-parent = < &qeic >;
292 /*
293 * For Soft-UART, we need to set TX to 1X, which
294 * means specifying separate clock sources.
295 */
296 rx-clock-name = "brg5";
297 tx-clock-name = "brg6";
298 pio-handle = < &pio5 >;
299 };
300
301
253 mdio@2320 { 302 mdio@2320 {
254 #address-cells = <1>; 303 #address-cells = <1>;
255 #size-cells = <0>; 304 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index e354f2634246..04b8da4deb60 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -91,7 +91,6 @@
91 }; 91 };
92 92
93 usb@22000 { 93 usb@22000 {
94 device_type = "usb";
95 compatible = "fsl-usb2-mph"; 94 compatible = "fsl-usb2-mph";
96 reg = <22000 1000>; 95 reg = <22000 1000>;
97 #address-cells = <1>; 96 #address-cells = <1>;
@@ -103,7 +102,6 @@
103 }; 102 };
104 103
105 usb@23000 { 104 usb@23000 {
106 device_type = "usb";
107 compatible = "fsl-usb2-dr"; 105 compatible = "fsl-usb2-dr";
108 reg = <23000 1000>; 106 reg = <23000 1000>;
109 #address-cells = <1>; 107 #address-cells = <1>;
@@ -127,14 +125,6 @@
127 reg = <1c>; 125 reg = <1c>;
128 device_type = "ethernet-phy"; 126 device_type = "ethernet-phy";
129 }; 127 };
130
131 /* Vitesse 7385 */
132 phy1f: ethernet-phy@1f {
133 interrupt-parent = < &ipic >;
134 interrupts = <12 8>;
135 reg = <1f>;
136 device_type = "ethernet-phy";
137 };
138 }; 128 };
139 129
140 enet0: ethernet@24000 { 130 enet0: ethernet@24000 {
@@ -159,7 +149,8 @@
159 local-mac-address = [ 00 00 00 00 00 00 ]; 149 local-mac-address = [ 00 00 00 00 00 00 ];
160 interrupts = <23 8 24 8 25 8>; 150 interrupts = <23 8 24 8 25 8>;
161 interrupt-parent = < &ipic >; 151 interrupt-parent = < &ipic >;
162 phy-handle = < &phy1f >; 152 /* Vitesse 7385 isn't on the MDIO bus */
153 fixed-link = <1 1 d#1000 0 0>;
163 linux,network-index = <1>; 154 linux,network-index = <1>;
164 }; 155 };
165 156
@@ -253,6 +244,21 @@
253 device_type = "pci"; 244 device_type = "pci";
254 }; 245 };
255 246
247 localbus@e0005000 {
248 #address-cells = <2>;
249 #size-cells = <1>;
250 compatible = "fsl,mpc8349e-localbus",
251 "fsl,pq2pro-localbus";
252 reg = <e0005000 d8>;
253 ranges = <3 0 f0000000 210>;
256 254
257 255 pata@3,0 {
256 compatible = "fsl,mpc8349emitx-pata", "ata-generic";
257 reg = <3 0 10 3 20c 4>;
258 reg-shift = <1>;
259 pio-mode = <6>;
260 interrupts = <17 8>;
261 interrupt-parent = <&ipic>;
262 };
263 };
258}; 264};
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
index ebdf0b750086..a06ff92cf0b1 100644
--- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
@@ -89,7 +89,6 @@
89 }; 89 };
90 90
91 usb@23000 { 91 usb@23000 {
92 device_type = "usb";
93 compatible = "fsl-usb2-dr"; 92 compatible = "fsl-usb2-dr";
94 reg = <23000 1000>; 93 reg = <23000 1000>;
95 #address-cells = <1>; 94 #address-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index 0ba13ebcea68..4120e92fcecf 100644
--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -104,7 +104,6 @@
104 /* phy type (ULPI or SERIAL) are only types supportted for MPH */ 104 /* phy type (ULPI or SERIAL) are only types supportted for MPH */
105 /* port = 0 or 1 */ 105 /* port = 0 or 1 */
106 usb@22000 { 106 usb@22000 {
107 device_type = "usb";
108 compatible = "fsl-usb2-mph"; 107 compatible = "fsl-usb2-mph";
109 reg = <22000 1000>; 108 reg = <22000 1000>;
110 #address-cells = <1>; 109 #address-cells = <1>;
@@ -116,7 +115,6 @@
116 }; 115 };
117 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 116 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
118 usb@23000 { 117 usb@23000 {
119 device_type = "usb";
120 compatible = "fsl-usb2-dr"; 118 compatible = "fsl-usb2-dr";
121 reg = <23000 1000>; 119 reg = <23000 1000>;
122 #address-cells = <1>; 120 #address-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index fd841b2fddd0..2181d2cdbff2 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -241,7 +241,6 @@
241 }; 241 };
242 242
243 usb@6c0 { 243 usb@6c0 {
244 device_type = "usb";
245 compatible = "qe_udc"; 244 compatible = "qe_udc";
246 reg = <6c0 40 8B00 100>; 245 reg = <6c0 40 8B00 100>;
247 interrupts = <b>; 246 interrupts = <b>;
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
new file mode 100644
index 000000000000..98b46065f45a
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -0,0 +1,279 @@
1/*
2 * MPC8377E MDS Device Tree Source
3 *
4 * Copyright 2007 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12/dts-v1/;
13
14/ {
15 model = "fsl,mpc8377emds";
16 compatible = "fsl,mpc8377emds","fsl,mpc837xmds";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 ethernet0 = &enet0;
22 ethernet1 = &enet1;
23 serial0 = &serial0;
24 serial1 = &serial1;
25 pci0 = &pci0;
26 };
27
28 cpus {
29 #address-cells = <1>;
30 #size-cells = <0>;
31
32 PowerPC,8377@0 {
33 device_type = "cpu";
34 reg = <0>;
35 d-cache-line-size = <0x20>;
36 i-cache-line-size = <0x20>;
37 d-cache-size = <0x8000>; // L1, 32K
38 i-cache-size = <0x8000>; // L1, 32K
39 timebase-frequency = <0>;
40 bus-frequency = <0>;
41 clock-frequency = <0>;
42 };
43 };
44
45 memory {
46 device_type = "memory";
47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 };
49
50 soc@e0000000 {
51 #address-cells = <1>;
52 #size-cells = <1>;
53 device_type = "soc";
54 ranges = <0x0 0xe0000000 0x00100000>;
55 reg = <0xe0000000 0x00000200>;
56 bus-frequency = <0>;
57
58 wdt@200 {
59 compatible = "mpc83xx_wdt";
60 reg = <0x200 0x100>;
61 };
62
63 i2c@3000 {
64 #address-cells = <1>;
65 #size-cells = <0>;
66 cell-index = <0>;
67 compatible = "fsl-i2c";
68 reg = <0x3000 0x100>;
69 interrupts = <0xe 0x8>;
70 interrupt-parent = < &ipic >;
71 dfsrr;
72 };
73
74 i2c@3100 {
75 #address-cells = <1>;
76 #size-cells = <0>;
77 cell-index = <1>;
78 compatible = "fsl-i2c";
79 reg = <0x3100 0x100>;
80 interrupts = <0xf 0x8>;
81 interrupt-parent = < &ipic >;
82 dfsrr;
83 };
84
85 spi@7000 {
86 compatible = "fsl_spi";
87 reg = <0x7000 0x1000>;
88 interrupts = <0x10 0x8>;
89 interrupt-parent = < &ipic >;
90 mode = "cpu";
91 };
92
93 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
94 usb@23000 {
95 compatible = "fsl-usb2-dr";
96 reg = <0x23000 0x1000>;
97 #address-cells = <1>;
98 #size-cells = <0>;
99 interrupt-parent = < &ipic >;
100 interrupts = <0x26 0x8>;
101 phy_type = "utmi_wide";
102 };
103
104 mdio@24520 {
105 #address-cells = <1>;
106 #size-cells = <0>;
107 compatible = "fsl,gianfar-mdio";
108 reg = <0x24520 0x20>;
109 phy2: ethernet-phy@2 {
110 interrupt-parent = < &ipic >;
111 interrupts = <0x11 0x8>;
112 reg = <2>;
113 device_type = "ethernet-phy";
114 };
115 phy3: ethernet-phy@3 {
116 interrupt-parent = < &ipic >;
117 interrupts = <0x12 0x8>;
118 reg = <3>;
119 device_type = "ethernet-phy";
120 };
121 };
122
123 enet0: ethernet@24000 {
124 cell-index = <0>;
125 device_type = "network";
126 model = "eTSEC";
127 compatible = "gianfar";
128 reg = <0x24000 0x1000>;
129 local-mac-address = [ 00 00 00 00 00 00 ];
130 interrupts = <0x20 0x8 0x21 0x8 0x22 0x8>;
131 phy-connection-type = "mii";
132 interrupt-parent = < &ipic >;
133 phy-handle = < &phy2 >;
134 };
135
136 enet1: ethernet@25000 {
137 cell-index = <1>;
138 device_type = "network";
139 model = "eTSEC";
140 compatible = "gianfar";
141 reg = <0x25000 0x1000>;
142 local-mac-address = [ 00 00 00 00 00 00 ];
143 interrupts = <0x23 0x8 0x24 0x8 0x25 0x8>;
144 phy-connection-type = "mii";
145 interrupt-parent = < &ipic >;
146 phy-handle = < &phy3 >;
147 };
148
149 serial0: serial@4500 {
150 cell-index = <0>;
151 device_type = "serial";
152 compatible = "ns16550";
153 reg = <0x4500 0x100>;
154 clock-frequency = <0>;
155 interrupts = <0x9 0x8>;
156 interrupt-parent = < &ipic >;
157 };
158
159 serial1: serial@4600 {
160 cell-index = <1>;
161 device_type = "serial";
162 compatible = "ns16550";
163 reg = <0x4600 0x100>;
164 clock-frequency = <0>;
165 interrupts = <0xa 0x8>;
166 interrupt-parent = < &ipic >;
167 };
168
169 crypto@30000 {
170 model = "SEC3";
171 compatible = "talitos";
172 reg = <0x30000 0x10000>;
173 interrupts = <0xb 0x8>;
174 interrupt-parent = < &ipic >;
175 /* Rev. 3.0 geometry */
176 num-channels = <4>;
177 channel-fifo-len = <0x18>;
178 exec-units-mask = <0x000001fe>;
179 descriptor-types-mask = <0x03ab0ebf>;
180 };
181
182 sdhc@2e000 {
183 model = "eSDHC";
184 compatible = "fsl,esdhc";
185 reg = <0x2e000 0x1000>;
186 interrupts = <0x2a 0x8>;
187 interrupt-parent = < &ipic >;
188 };
189
190 sata@18000 {
191 compatible = "fsl,mpc8379-sata";
192 reg = <0x18000 0x1000>;
193 interrupts = <0x2c 0x8>;
194 interrupt-parent = < &ipic >;
195 };
196
197 sata@19000 {
198 compatible = "fsl,mpc8379-sata";
199 reg = <0x19000 0x1000>;
200 interrupts = <0x2d 0x8>;
201 interrupt-parent = < &ipic >;
202 };
203
204 /* IPIC
205 * interrupts cell = <intr #, sense>
206 * sense values match linux IORESOURCE_IRQ_* defines:
207 * sense == 8: Level, low assertion
208 * sense == 2: Edge, high-to-low change
209 */
210 ipic: pic@700 {
211 compatible = "fsl,ipic";
212 interrupt-controller;
213 #address-cells = <0>;
214 #interrupt-cells = <2>;
215 reg = <0x700 0x100>;
216 };
217 };
218
219 pci0: pci@e0008500 {
220 cell-index = <0>;
221 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
222 interrupt-map = <
223
224 /* IDSEL 0x11 */
225 0x8800 0x0 0x0 0x1 &ipic 0x14 0x8
226 0x8800 0x0 0x0 0x2 &ipic 0x15 0x8
227 0x8800 0x0 0x0 0x3 &ipic 0x16 0x8
228 0x8800 0x0 0x0 0x4 &ipic 0x17 0x8
229
230 /* IDSEL 0x12 */
231 0x9000 0x0 0x0 0x1 &ipic 0x16 0x8
232 0x9000 0x0 0x0 0x2 &ipic 0x17 0x8
233 0x9000 0x0 0x0 0x3 &ipic 0x14 0x8
234 0x9000 0x0 0x0 0x4 &ipic 0x15 0x8
235
236 /* IDSEL 0x13 */
237 0x9800 0x0 0x0 0x1 &ipic 0x17 0x8
238 0x9800 0x0 0x0 0x2 &ipic 0x14 0x8
239 0x9800 0x0 0x0 0x3 &ipic 0x15 0x8
240 0x9800 0x0 0x0 0x4 &ipic 0x16 0x8
241
242 /* IDSEL 0x15 */
243 0xa800 0x0 0x0 0x1 &ipic 0x14 0x8
244 0xa800 0x0 0x0 0x2 &ipic 0x15 0x8
245 0xa800 0x0 0x0 0x3 &ipic 0x16 0x8
246 0xa800 0x0 0x0 0x4 &ipic 0x17 0x8
247
248 /* IDSEL 0x16 */
249 0xb000 0x0 0x0 0x1 &ipic 0x17 0x8
250 0xb000 0x0 0x0 0x2 &ipic 0x14 0x8
251 0xb000 0x0 0x0 0x3 &ipic 0x15 0x8
252 0xb000 0x0 0x0 0x4 &ipic 0x16 0x8
253
254 /* IDSEL 0x17 */
255 0xb800 0x0 0x0 0x1 &ipic 0x16 0x8
256 0xb800 0x0 0x0 0x2 &ipic 0x17 0x8
257 0xb800 0x0 0x0 0x3 &ipic 0x14 0x8
258 0xb800 0x0 0x0 0x4 &ipic 0x15 0x8
259
260 /* IDSEL 0x18 */
261 0xc000 0x0 0x0 0x1 &ipic 0x15 0x8
262 0xc000 0x0 0x0 0x2 &ipic 0x16 0x8
263 0xc000 0x0 0x0 0x3 &ipic 0x17 0x8
264 0xc000 0x0 0x0 0x4 &ipic 0x14 0x8>;
265 interrupt-parent = < &ipic >;
266 interrupts = <0x42 0x8>;
267 bus-range = <0 0>;
268 ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
269 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
270 0x01000000 0x0 0x00000000 0xe0300000 0x0 0x00100000>;
271 clock-frequency = <0>;
272 #interrupt-cells = <1>;
273 #size-cells = <2>;
274 #address-cells = <3>;
275 reg = <0xe0008500 0x100>;
276 compatible = "fsl,mpc8349-pci";
277 device_type = "pci";
278 };
279};
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
new file mode 100644
index 000000000000..c117a6a3a8e6
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
@@ -0,0 +1,265 @@
1/*
2 * MPC8378E MDS Device Tree Source
3 *
4 * Copyright 2007 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12/dts-v1/;
13
14/ {
15 model = "fsl,mpc8378emds";
16 compatible = "fsl,mpc8378emds","fsl,mpc837xmds";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 ethernet0 = &enet0;
22 ethernet1 = &enet1;
23 serial0 = &serial0;
24 serial1 = &serial1;
25 pci0 = &pci0;
26 };
27
28 cpus {
29 #address-cells = <1>;
30 #size-cells = <0>;
31
32 PowerPC,8378@0 {
33 device_type = "cpu";
34 reg = <0>;
35 d-cache-line-size = <0x20>;
36 i-cache-line-size = <0x20>;
37 d-cache-size = <0x8000>; // L1, 32K
38 i-cache-size = <0x8000>; // L1, 32K
39 timebase-frequency = <0>;
40 bus-frequency = <0>;
41 clock-frequency = <0>;
42 };
43 };
44
45 memory {
46 device_type = "memory";
47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 };
49
50 soc@e0000000 {
51 #address-cells = <1>;
52 #size-cells = <1>;
53 device_type = "soc";
54 ranges = <0x0 0xe0000000 0x00100000>;
55 reg = <0xe0000000 0x00000200>;
56 bus-frequency = <0>;
57
58 wdt@200 {
59 compatible = "mpc83xx_wdt";
60 reg = <0x200 0x100>;
61 };
62
63 i2c@3000 {
64 #address-cells = <1>;
65 #size-cells = <0>;
66 cell-index = <0>;
67 compatible = "fsl-i2c";
68 reg = <0x3000 0x100>;
69 interrupts = <0xe 0x8>;
70 interrupt-parent = < &ipic >;
71 dfsrr;
72 };
73
74 i2c@3100 {
75 #address-cells = <1>;
76 #size-cells = <0>;
77 cell-index = <1>;
78 compatible = "fsl-i2c";
79 reg = <0x3100 0x100>;
80 interrupts = <0xf 0x8>;
81 interrupt-parent = < &ipic >;
82 dfsrr;
83 };
84
85 spi@7000 {
86 compatible = "fsl_spi";
87 reg = <0x7000 0x1000>;
88 interrupts = <0x10 0x8>;
89 interrupt-parent = < &ipic >;
90 mode = "cpu";
91 };
92
93 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
94 usb@23000 {
95 compatible = "fsl-usb2-dr";
96 reg = <0x23000 0x1000>;
97 #address-cells = <1>;
98 #size-cells = <0>;
99 interrupt-parent = < &ipic >;
100 interrupts = <0x26 0x8>;
101 phy_type = "utmi_wide";
102 };
103
104 mdio@24520 {
105 #address-cells = <1>;
106 #size-cells = <0>;
107 compatible = "fsl,gianfar-mdio";
108 reg = <0x24520 0x20>;
109 phy2: ethernet-phy@2 {
110 interrupt-parent = < &ipic >;
111 interrupts = <0x11 0x8>;
112 reg = <2>;
113 device_type = "ethernet-phy";
114 };
115 phy3: ethernet-phy@3 {
116 interrupt-parent = < &ipic >;
117 interrupts = <0x12 0x8>;
118 reg = <3>;
119 device_type = "ethernet-phy";
120 };
121 };
122
123 enet0: ethernet@24000 {
124 cell-index = <0>;
125 device_type = "network";
126 model = "eTSEC";
127 compatible = "gianfar";
128 reg = <0x24000 0x1000>;
129 local-mac-address = [ 00 00 00 00 00 00 ];
130 interrupts = <0x20 0x8 0x21 0x8 0x22 0x8>;
131 phy-connection-type = "mii";
132 interrupt-parent = < &ipic >;
133 phy-handle = < &phy2 >;
134 };
135
136 enet1: ethernet@25000 {
137 cell-index = <1>;
138 device_type = "network";
139 model = "eTSEC";
140 compatible = "gianfar";
141 reg = <0x25000 0x1000>;
142 local-mac-address = [ 00 00 00 00 00 00 ];
143 interrupts = <0x23 0x8 0x24 0x8 0x25 0x8>;
144 phy-connection-type = "mii";
145 interrupt-parent = < &ipic >;
146 phy-handle = < &phy3 >;
147 };
148
149 serial0: serial@4500 {
150 cell-index = <0>;
151 device_type = "serial";
152 compatible = "ns16550";
153 reg = <0x4500 0x100>;
154 clock-frequency = <0>;
155 interrupts = <0x9 0x8>;
156 interrupt-parent = < &ipic >;
157 };
158
159 serial1: serial@4600 {
160 cell-index = <1>;
161 device_type = "serial";
162 compatible = "ns16550";
163 reg = <0x4600 0x100>;
164 clock-frequency = <0>;
165 interrupts = <0xa 0x8>;
166 interrupt-parent = < &ipic >;
167 };
168
169 crypto@30000 {
170 model = "SEC3";
171 compatible = "talitos";
172 reg = <0x30000 0x10000>;
173 interrupts = <0xb 0x8>;
174 interrupt-parent = < &ipic >;
175 /* Rev. 3.0 geometry */
176 num-channels = <4>;
177 channel-fifo-len = <0x18>;
178 exec-units-mask = <0x000001fe>;
179 descriptor-types-mask = <0x03ab0ebf>;
180 };
181
182 sdhc@2e000 {
183 model = "eSDHC";
184 compatible = "fsl,esdhc";
185 reg = <0x2e000 0x1000>;
186 interrupts = <0x2a 0x8>;
187 interrupt-parent = < &ipic >;
188 };
189
190 /* IPIC
191 * interrupts cell = <intr #, sense>
192 * sense values match linux IORESOURCE_IRQ_* defines:
193 * sense == 8: Level, low assertion
194 * sense == 2: Edge, high-to-low change
195 */
196 ipic: pic@700 {
197 compatible = "fsl,ipic";
198 interrupt-controller;
199 #address-cells = <0>;
200 #interrupt-cells = <2>;
201 reg = <0x700 0x100>;
202 };
203 };
204
205 pci0: pci@e0008500 {
206 cell-index = <0>;
207 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
208 interrupt-map = <
209
210 /* IDSEL 0x11 */
211 0x8800 0x0 0x0 0x1 &ipic 0x14 0x8
212 0x8800 0x0 0x0 0x2 &ipic 0x15 0x8
213 0x8800 0x0 0x0 0x3 &ipic 0x16 0x8
214 0x8800 0x0 0x0 0x4 &ipic 0x17 0x8
215
216 /* IDSEL 0x12 */
217 0x9000 0x0 0x0 0x1 &ipic 0x16 0x8
218 0x9000 0x0 0x0 0x2 &ipic 0x17 0x8
219 0x9000 0x0 0x0 0x3 &ipic 0x14 0x8
220 0x9000 0x0 0x0 0x4 &ipic 0x15 0x8
221
222 /* IDSEL 0x13 */
223 0x9800 0x0 0x0 0x1 &ipic 0x17 0x8
224 0x9800 0x0 0x0 0x2 &ipic 0x14 0x8
225 0x9800 0x0 0x0 0x3 &ipic 0x15 0x8
226 0x9800 0x0 0x0 0x4 &ipic 0x16 0x8
227
228 /* IDSEL 0x15 */
229 0xa800 0x0 0x0 0x1 &ipic 0x14 0x8
230 0xa800 0x0 0x0 0x2 &ipic 0x15 0x8
231 0xa800 0x0 0x0 0x3 &ipic 0x16 0x8
232 0xa800 0x0 0x0 0x4 &ipic 0x17 0x8
233
234 /* IDSEL 0x16 */
235 0xb000 0x0 0x0 0x1 &ipic 0x17 0x8
236 0xb000 0x0 0x0 0x2 &ipic 0x14 0x8
237 0xb000 0x0 0x0 0x3 &ipic 0x15 0x8
238 0xb000 0x0 0x0 0x4 &ipic 0x16 0x8
239
240 /* IDSEL 0x17 */
241 0xb800 0x0 0x0 0x1 &ipic 0x16 0x8
242 0xb800 0x0 0x0 0x2 &ipic 0x17 0x8
243 0xb800 0x0 0x0 0x3 &ipic 0x14 0x8
244 0xb800 0x0 0x0 0x4 &ipic 0x15 0x8
245
246 /* IDSEL 0x18 */
247 0xc000 0x0 0x0 0x1 &ipic 0x15 0x8
248 0xc000 0x0 0x0 0x2 &ipic 0x16 0x8
249 0xc000 0x0 0x0 0x3 &ipic 0x17 0x8
250 0xc000 0x0 0x0 0x4 &ipic 0x14 0x8>;
251 interrupt-parent = < &ipic >;
252 interrupts = <0x42 0x8>;
253 bus-range = <0 0>;
254 ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
255 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
256 0x01000000 0x0 0x00000000 0xe0300000 0x0 0x00100000>;
257 clock-frequency = <0>;
258 #interrupt-cells = <1>;
259 #size-cells = <2>;
260 #address-cells = <3>;
261 reg = <0xe0008500 0x100>;
262 compatible = "fsl,mpc8349-pci";
263 device_type = "pci";
264 };
265};
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
new file mode 100644
index 000000000000..fc3ba79fb684
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
@@ -0,0 +1,293 @@
1/*
2 * MPC8379E MDS Device Tree Source
3 *
4 * Copyright 2007 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12/dts-v1/;
13
14/ {
15 model = "fsl,mpc8379emds";
16 compatible = "fsl,mpc8379emds","fsl,mpc837xmds";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 ethernet0 = &enet0;
22 ethernet1 = &enet1;
23 serial0 = &serial0;
24 serial1 = &serial1;
25 pci0 = &pci0;
26 };
27
28 cpus {
29 #address-cells = <1>;
30 #size-cells = <0>;
31
32 PowerPC,8379@0 {
33 device_type = "cpu";
34 reg = <0>;
35 d-cache-line-size = <0x20>;
36 i-cache-line-size = <0x20>;
37 d-cache-size = <0x8000>; // L1, 32K
38 i-cache-size = <0x8000>; // L1, 32K
39 timebase-frequency = <0>;
40 bus-frequency = <0>;
41 clock-frequency = <0>;
42 };
43 };
44
45 memory {
46 device_type = "memory";
47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 };
49
50 soc@e0000000 {
51 #address-cells = <1>;
52 #size-cells = <1>;
53 device_type = "soc";
54 ranges = <0x0 0xe0000000 0x00100000>;
55 reg = <0xe0000000 0x00000200>;
56 bus-frequency = <0>;
57
58 wdt@200 {
59 compatible = "mpc83xx_wdt";
60 reg = <0x200 0x100>;
61 };
62
63 i2c@3000 {
64 #address-cells = <1>;
65 #size-cells = <0>;
66 cell-index = <0>;
67 compatible = "fsl-i2c";
68 reg = <0x3000 0x100>;
69 interrupts = <0xe 0x8>;
70 interrupt-parent = < &ipic >;
71 dfsrr;
72 };
73
74 i2c@3100 {
75 #address-cells = <1>;
76 #size-cells = <0>;
77 cell-index = <1>;
78 compatible = "fsl-i2c";
79 reg = <0x3100 0x100>;
80 interrupts = <0xf 0x8>;
81 interrupt-parent = < &ipic >;
82 dfsrr;
83 };
84
85 spi@7000 {
86 compatible = "fsl_spi";
87 reg = <0x7000 0x1000>;
88 interrupts = <0x10 0x8>;
89 interrupt-parent = < &ipic >;
90 mode = "cpu";
91 };
92
93 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
94 usb@23000 {
95 compatible = "fsl-usb2-dr";
96 reg = <0x23000 0x1000>;
97 #address-cells = <1>;
98 #size-cells = <0>;
99 interrupt-parent = < &ipic >;
100 interrupts = <0x26 0x8>;
101 phy_type = "utmi_wide";
102 };
103
104 mdio@24520 {
105 #address-cells = <1>;
106 #size-cells = <0>;
107 compatible = "fsl,gianfar-mdio";
108 reg = <0x24520 0x20>;
109 phy2: ethernet-phy@2 {
110 interrupt-parent = < &ipic >;
111 interrupts = <0x11 0x8>;
112 reg = <2>;
113 device_type = "ethernet-phy";
114 };
115 phy3: ethernet-phy@3 {
116 interrupt-parent = < &ipic >;
117 interrupts = <0x12 0x8>;
118 reg = <3>;
119 device_type = "ethernet-phy";
120 };
121 };
122
123 enet0: ethernet@24000 {
124 cell-index = <0>;
125 device_type = "network";
126 model = "eTSEC";
127 compatible = "gianfar";
128 reg = <0x24000 0x1000>;
129 local-mac-address = [ 00 00 00 00 00 00 ];
130 interrupts = <0x20 0x8 0x21 0x8 0x22 0x8>;
131 phy-connection-type = "mii";
132 interrupt-parent = < &ipic >;
133 phy-handle = < &phy2 >;
134 };
135
136 enet1: ethernet@25000 {
137 cell-index = <1>;
138 device_type = "network";
139 model = "eTSEC";
140 compatible = "gianfar";
141 reg = <0x25000 0x1000>;
142 local-mac-address = [ 00 00 00 00 00 00 ];
143 interrupts = <0x23 0x8 0x24 0x8 0x25 0x8>;
144 phy-connection-type = "mii";
145 interrupt-parent = < &ipic >;
146 phy-handle = < &phy3 >;
147 };
148
149 serial0: serial@4500 {
150 cell-index = <0>;
151 device_type = "serial";
152 compatible = "ns16550";
153 reg = <0x4500 0x100>;
154 clock-frequency = <0>;
155 interrupts = <0x9 0x8>;
156 interrupt-parent = < &ipic >;
157 };
158
159 serial1: serial@4600 {
160 cell-index = <1>;
161 device_type = "serial";
162 compatible = "ns16550";
163 reg = <0x4600 0x100>;
164 clock-frequency = <0>;
165 interrupts = <0xa 0x8>;
166 interrupt-parent = < &ipic >;
167 };
168
169 crypto@30000 {
170 model = "SEC3";
171 compatible = "talitos";
172 reg = <0x30000 0x10000>;
173 interrupts = <0xb 0x8>;
174 interrupt-parent = < &ipic >;
175 /* Rev. 3.0 geometry */
176 num-channels = <4>;
177 channel-fifo-len = <0x18>;
178 exec-units-mask = <0x000001fe>;
179 descriptor-types-mask = <0x03ab0ebf>;
180 };
181
182 sdhc@2e000 {
183 model = "eSDHC";
184 compatible = "fsl,esdhc";
185 reg = <0x2e000 0x1000>;
186 interrupts = <0x2a 0x8>;
187 interrupt-parent = < &ipic >;
188 };
189
190 sata@18000 {
191 compatible = "fsl,mpc8379-sata";
192 reg = <0x18000 0x1000>;
193 interrupts = <0x2c 0x8>;
194 interrupt-parent = < &ipic >;
195 };
196
197 sata@19000 {
198 compatible = "fsl,mpc8379-sata";
199 reg = <0x19000 0x1000>;
200 interrupts = <0x2d 0x8>;
201 interrupt-parent = < &ipic >;
202 };
203
204 sata@1a000 {
205 compatible = "fsl,mpc8379-sata";
206 reg = <0x1a000 0x1000>;
207 interrupts = <0x2e 0x8>;
208 interrupt-parent = < &ipic >;
209 };
210
211 sata@1b000 {
212 compatible = "fsl,mpc8379-sata";
213 reg = <0x1b000 0x1000>;
214 interrupts = <0x2f 0x8>;
215 interrupt-parent = < &ipic >;
216 };
217
218 /* IPIC
219 * interrupts cell = <intr #, sense>
220 * sense values match linux IORESOURCE_IRQ_* defines:
221 * sense == 8: Level, low assertion
222 * sense == 2: Edge, high-to-low change
223 */
224 ipic: pic@700 {
225 compatible = "fsl,ipic";
226 interrupt-controller;
227 #address-cells = <0>;
228 #interrupt-cells = <2>;
229 reg = <0x700 0x100>;
230 };
231 };
232
233 pci0: pci@e0008500 {
234 cell-index = <0>;
235 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
236 interrupt-map = <
237
238 /* IDSEL 0x11 */
239 0x8800 0x0 0x0 0x1 &ipic 0x14 0x8
240 0x8800 0x0 0x0 0x2 &ipic 0x15 0x8
241 0x8800 0x0 0x0 0x3 &ipic 0x16 0x8
242 0x8800 0x0 0x0 0x4 &ipic 0x17 0x8
243
244 /* IDSEL 0x12 */
245 0x9000 0x0 0x0 0x1 &ipic 0x16 0x8
246 0x9000 0x0 0x0 0x2 &ipic 0x17 0x8
247 0x9000 0x0 0x0 0x3 &ipic 0x14 0x8
248 0x9000 0x0 0x0 0x4 &ipic 0x15 0x8
249
250 /* IDSEL 0x13 */
251 0x9800 0x0 0x0 0x1 &ipic 0x17 0x8
252 0x9800 0x0 0x0 0x2 &ipic 0x14 0x8
253 0x9800 0x0 0x0 0x3 &ipic 0x15 0x8
254 0x9800 0x0 0x0 0x4 &ipic 0x16 0x8
255
256 /* IDSEL 0x15 */
257 0xa800 0x0 0x0 0x1 &ipic 0x14 0x8
258 0xa800 0x0 0x0 0x2 &ipic 0x15 0x8
259 0xa800 0x0 0x0 0x3 &ipic 0x16 0x8
260 0xa800 0x0 0x0 0x4 &ipic 0x17 0x8
261
262 /* IDSEL 0x16 */
263 0xb000 0x0 0x0 0x1 &ipic 0x17 0x8
264 0xb000 0x0 0x0 0x2 &ipic 0x14 0x8
265 0xb000 0x0 0x0 0x3 &ipic 0x15 0x8
266 0xb000 0x0 0x0 0x4 &ipic 0x16 0x8
267
268 /* IDSEL 0x17 */
269 0xb800 0x0 0x0 0x1 &ipic 0x16 0x8
270 0xb800 0x0 0x0 0x2 &ipic 0x17 0x8
271 0xb800 0x0 0x0 0x3 &ipic 0x14 0x8
272 0xb800 0x0 0x0 0x4 &ipic 0x15 0x8
273
274 /* IDSEL 0x18 */
275 0xc000 0x0 0x0 0x1 &ipic 0x15 0x8
276 0xc000 0x0 0x0 0x2 &ipic 0x16 0x8
277 0xc000 0x0 0x0 0x3 &ipic 0x17 0x8
278 0xc000 0x0 0x0 0x4 &ipic 0x14 0x8>;
279 interrupt-parent = < &ipic >;
280 interrupts = <0x42 0x8>;
281 bus-range = <0 0>;
282 ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
283 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
284 0x01000000 0x0 0x00000000 0xe0300000 0x0 0x00100000>;
285 clock-frequency = <0>;
286 #interrupt-cells = <1>;
287 #size-cells = <2>;
288 #address-cells = <3>;
289 reg = <0xe0008500 0x100>;
290 compatible = "fsl,mpc8349-pci";
291 device_type = "pci";
292 };
293};
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts
index 54b3bdf7fc97..688af9d06382 100644
--- a/arch/powerpc/boot/dts/mpc8544ds.dts
+++ b/arch/powerpc/boot/dts/mpc8544ds.dts
@@ -304,9 +304,9 @@
304 interrupt-map = < 304 interrupt-map = <
305 // IDSEL 0x1c USB 305 // IDSEL 0x1c USB
306 e000 0 0 1 &i8259 c 2 306 e000 0 0 1 &i8259 c 2
307 e100 0 0 1 &i8259 9 2 307 e100 0 0 2 &i8259 9 2
308 e200 0 0 1 &i8259 a 2 308 e200 0 0 3 &i8259 a 2
309 e300 0 0 1 &i8259 b 2 309 e300 0 0 4 &i8259 b 2
310 310
311 // IDSEL 0x1d Audio 311 // IDSEL 0x1d Audio
312 e800 0 0 1 &i8259 6 2 312 e800 0 0 1 &i8259 6 2
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts
index 233e0d5a8b9d..813c259abbe5 100644
--- a/arch/powerpc/boot/dts/mpc8572ds.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds.dts
@@ -334,9 +334,9 @@
334 334
335 // IDSEL 0x1c USB 335 // IDSEL 0x1c USB
336 e000 0 0 1 &i8259 c 2 336 e000 0 0 1 &i8259 c 2
337 e100 0 0 1 &i8259 9 2 337 e100 0 0 2 &i8259 9 2
338 e200 0 0 1 &i8259 a 2 338 e200 0 0 3 &i8259 a 2
339 e300 0 0 1 &i8259 b 2 339 e300 0 0 4 &i8259 b 2
340 340
341 // IDSEL 0x1d Audio 341 // IDSEL 0x1d Audio
342 e800 0 0 1 &i8259 6 2 342 e800 0 0 1 &i8259 6 2
@@ -481,6 +481,7 @@
481 clock-frequency = <1fca055>; 481 clock-frequency = <1fca055>;
482 interrupt-parent = <&mpic>; 482 interrupt-parent = <&mpic>;
483 interrupts = <1b 2>; 483 interrupts = <1b 2>;
484 interrupt-map-mask = <f800 0 0 7>;
484 interrupt-map = < 485 interrupt-map = <
485 /* IDSEL 0x0 */ 486 /* IDSEL 0x0 */
486 0000 0 0 1 &mpic 0 1 487 0000 0 0 1 &mpic 0 1
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
index 01040a752c82..d98715cbda28 100644
--- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts
+++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
@@ -1,7 +1,7 @@
1/* 1/*
2 * MPC8610 HPCD Device Tree Source 2 * MPC8610 HPCD Device Tree Source
3 * 3 *
4 * Copyright 2007 Freescale Semiconductor Inc. 4 * Copyright 2007-2008 Freescale Semiconductor Inc.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify it 6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License Version 2 as published 7 * under the terms of the GNU General Public License Version 2 as published
@@ -49,6 +49,7 @@
49 #size-cells = <1>; 49 #size-cells = <1>;
50 #interrupt-cells = <2>; 50 #interrupt-cells = <2>;
51 device_type = "soc"; 51 device_type = "soc";
52 compatible = "fsl,mpc8610-immr", "simple-bus";
52 ranges = <0 e0000000 00100000>; 53 ranges = <0 e0000000 00100000>;
53 reg = <e0000000 1000>; 54 reg = <e0000000 1000>;
54 bus-frequency = <0>; 55 bus-frequency = <0>;
@@ -62,6 +63,13 @@
62 interrupts = <2b 2>; 63 interrupts = <2b 2>;
63 interrupt-parent = <&mpic>; 64 interrupt-parent = <&mpic>;
64 dfsrr; 65 dfsrr;
66
67 cs4270:codec@4f {
68 compatible = "cirrus,cs4270";
69 reg = <4f>;
70 /* MCLK source is a stand-alone oscillator */
71 clock-frequency = <bb8000>;
72 };
65 }; 73 };
66 74
67 i2c@3100 { 75 i2c@3100 {
@@ -111,6 +119,109 @@
111 reg = <e0000 1000>; 119 reg = <e0000 1000>;
112 fsl,has-rstcr; 120 fsl,has-rstcr;
113 }; 121 };
122
123 i2s@16000 {
124 compatible = "fsl,mpc8610-ssi";
125 cell-index = <0>;
126 reg = <16000 100>;
127 interrupt-parent = <&mpic>;
128 interrupts = <3e 2>;
129 fsl,mode = "i2s-slave";
130 codec-handle = <&cs4270>;
131 };
132
133 ssi@16100 {
134 compatible = "fsl,mpc8610-ssi";
135 cell-index = <1>;
136 reg = <16100 100>;
137 interrupt-parent = <&mpic>;
138 interrupts = <3f 2>;
139 };
140
141 dma@21300 {
142 #address-cells = <1>;
143 #size-cells = <1>;
144 compatible = "fsl,mpc8610-dma", "fsl,eloplus-dma";
145 cell-index = <0>;
146 reg = <21300 4>; /* DMA general status register */
147 ranges = <0 21100 200>;
148
149 dma-channel@0 {
150 compatible = "fsl,mpc8610-dma-channel",
151 "fsl,eloplus-dma-channel";
152 cell-index = <0>;
153 reg = <0 80>;
154 interrupt-parent = <&mpic>;
155 interrupts = <14 2>;
156 };
157 dma-channel@1 {
158 compatible = "fsl,mpc8610-dma-channel",
159 "fsl,eloplus-dma-channel";
160 cell-index = <1>;
161 reg = <80 80>;
162 interrupt-parent = <&mpic>;
163 interrupts = <15 2>;
164 };
165 dma-channel@2 {
166 compatible = "fsl,mpc8610-dma-channel",
167 "fsl,eloplus-dma-channel";
168 cell-index = <2>;
169 reg = <100 80>;
170 interrupt-parent = <&mpic>;
171 interrupts = <16 2>;
172 };
173 dma-channel@3 {
174 compatible = "fsl,mpc8610-dma-channel",
175 "fsl,eloplus-dma-channel";
176 cell-index = <3>;
177 reg = <180 80>;
178 interrupt-parent = <&mpic>;
179 interrupts = <17 2>;
180 };
181 };
182
183 dma@c300 {
184 #address-cells = <1>;
185 #size-cells = <1>;
186 compatible = "fsl,mpc8610-dma", "fsl,mpc8540-dma";
187 cell-index = <1>;
188 reg = <c300 4>; /* DMA general status register */
189 ranges = <0 c100 200>;
190
191 dma-channel@0 {
192 compatible = "fsl,mpc8610-dma-channel",
193 "fsl,mpc8540-dma-channel";
194 cell-index = <0>;
195 reg = <0 80>;
196 interrupt-parent = <&mpic>;
197 interrupts = <3c 2>;
198 };
199 dma-channel@1 {
200 compatible = "fsl,mpc8610-dma-channel",
201 "fsl,mpc8540-dma-channel";
202 cell-index = <1>;
203 reg = <80 80>;
204 interrupt-parent = <&mpic>;
205 interrupts = <3d 2>;
206 };
207 dma-channel@2 {
208 compatible = "fsl,mpc8610-dma-channel",
209 "fsl,mpc8540-dma-channel";
210 cell-index = <2>;
211 reg = <100 80>;
212 interrupt-parent = <&mpic>;
213 interrupts = <3e 2>;
214 };
215 dma-channel@3 {
216 compatible = "fsl,mpc8610-dma-channel",
217 "fsl,mpc8540-dma-channel";
218 cell-index = <3>;
219 reg = <180 80>;
220 interrupt-parent = <&mpic>;
221 interrupts = <3f 2>;
222 };
223 };
224
114 }; 225 };
115 226
116 pci0: pci@e0008000 { 227 pci0: pci@e0008000 {
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
index 86fc2280c16d..556a9cac0793 100644
--- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts
+++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
@@ -60,10 +60,52 @@
60 reg = <00000000 40000000>; // 1G at 0x0 60 reg = <00000000 40000000>; // 1G at 0x0
61 }; 61 };
62 62
63 localbus@f8005000 {
64 #address-cells = <2>;
65 #size-cells = <1>;
66 compatible = "fsl,mpc8641-localbus", "simple-bus";
67 reg = <f8005000 1000>;
68 interrupts = <13 2>;
69 interrupt-parent = <&mpic>;
70
71 ranges = <0 0 ff800000 00800000
72 1 0 fe000000 01000000
73 2 0 f8200000 00100000
74 3 0 f8100000 00100000>;
75
76 flash@0,0 {
77 compatible = "cfi-flash";
78 reg = <0 0 00800000>;
79 bank-width = <2>;
80 device-width = <2>;
81 #address-cells = <1>;
82 #size-cells = <1>;
83 partition@0 {
84 label = "kernel";
85 reg = <00000000 00300000>;
86 };
87 partition@300000 {
88 label = "firmware b";
89 reg = <00300000 00100000>;
90 read-only;
91 };
92 partition@400000 {
93 label = "fs";
94 reg = <00400000 00300000>;
95 };
96 partition@700000 {
97 label = "firmware a";
98 reg = <00700000 00100000>;
99 read-only;
100 };
101 };
102 };
103
63 soc8641@f8000000 { 104 soc8641@f8000000 {
64 #address-cells = <1>; 105 #address-cells = <1>;
65 #size-cells = <1>; 106 #size-cells = <1>;
66 device_type = "soc"; 107 device_type = "soc";
108 compatible = "simple-bus";
67 ranges = <00000000 f8000000 00100000>; 109 ranges = <00000000 f8000000 00100000>;
68 reg = <f8000000 00001000>; // CCSRBAR 110 reg = <f8000000 00001000>; // CCSRBAR
69 bus-frequency = <0>; 111 bus-frequency = <0>;
@@ -326,9 +368,9 @@
326 368
327 // IDSEL 0x1c USB 369 // IDSEL 0x1c USB
328 e000 0 0 1 &i8259 c 2 370 e000 0 0 1 &i8259 c 2
329 e100 0 0 1 &i8259 9 2 371 e100 0 0 2 &i8259 9 2
330 e200 0 0 1 &i8259 a 2 372 e200 0 0 3 &i8259 a 2
331 e300 0 0 1 &i8259 b 2 373 e300 0 0 4 &i8259 b 2
332 374
333 // IDSEL 0x1d Audio 375 // IDSEL 0x1d Audio
334 e800 0 0 1 &i8259 6 2 376 e800 0 0 1 &i8259 6 2
diff --git a/arch/powerpc/boot/dts/storcenter.dts b/arch/powerpc/boot/dts/storcenter.dts
new file mode 100644
index 000000000000..6aa1d695e644
--- /dev/null
+++ b/arch/powerpc/boot/dts/storcenter.dts
@@ -0,0 +1,138 @@
1/*
2 * Device Tree Source for IOMEGA StorCenter
3 *
4 * Copyright 2007 Oyvind Repvik
5 * Copyright 2007 Jon Loeliger
6 *
7 * Based on the Kurobox DTS by G. Liakhovetski <g.liakhovetski@gmx.de>
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 */
13
14/ {
15 model = "StorCenter";
16 compatible = "storcenter";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 serial0 = &serial0;
22 serial1 = &serial1;
23 pci0 = &pci0;
24 };
25
26 cpus {
27 #address-cells = <1>;
28 #size-cells = <0>;
29
30 PowerPC,8241@0 {
31 device_type = "cpu";
32 reg = <0>;
33 clock-frequency = <d# 200000000>; /* Hz */
34 timebase-frequency = <d# 25000000>; /* Hz */
35 bus-frequency = <0>; /* from bootwrapper */
36 i-cache-line-size = <d# 32>; /* bytes */
37 d-cache-line-size = <d# 32>; /* bytes */
38 i-cache-size = <4000>;
39 d-cache-size = <4000>;
40 };
41 };
42
43 memory {
44 device_type = "memory";
45 reg = <00000000 04000000>; /* 64MB @ 0x0 */
46 };
47
48 soc@fc000000 {
49 #address-cells = <1>;
50 #size-cells = <1>;
51 device_type = "soc";
52 compatible = "fsl,mpc8241", "mpc10x";
53 store-gathering = <0>; /* 0 == off, !0 == on */
54 ranges = <0 fc000000 100000>;
55 reg = <fc000000 100000>; /* EUMB */
56 bus-frequency = <0>; /* fixed by loader */
57
58 i2c@3000 {
59 #address-cells = <1>;
60 #size-cells = <0>;
61 compatible = "fsl-i2c";
62 reg = <3000 100>;
63 interrupts = <5 2>;
64 interrupt-parent = <&mpic>;
65
66 rtc@68 {
67 compatible = "dallas,ds1337";
68 reg = <68>;
69 };
70 };
71
72 serial0: serial@4500 {
73 cell-index = <0>;
74 device_type = "serial";
75 compatible = "ns16550";
76 reg = <4500 20>;
77 clock-frequency = <d# 97553800>; /* Hz */
78 current-speed = <d# 115200>;
79 interrupts = <9 2>;
80 interrupt-parent = <&mpic>;
81 };
82
83 serial1: serial@4600 {
84 cell-index = <1>;
85 device_type = "serial";
86 compatible = "ns16550";
87 reg = <4600 20>;
88 clock-frequency = <d# 97553800>; /* Hz */
89 current-speed = <d# 9600>;
90 interrupts = <a 2>;
91 interrupt-parent = <&mpic>;
92 };
93
94 mpic: interrupt-controller@40000 {
95 #interrupt-cells = <2>;
96 device_type = "open-pic";
97 compatible = "chrp,open-pic";
98 interrupt-controller;
99 reg = <40000 40000>;
100 };
101
102 };
103
104 pci0: pci@fe800000 {
105 #address-cells = <3>;
106 #size-cells = <2>;
107 #interrupt-cells = <1>;
108 device_type = "pci";
109 compatible = "mpc10x-pci";
110 reg = <fe800000 1000>;
111 ranges = <01000000 0 0 fe000000 0 00c00000
112 02000000 0 80000000 80000000 0 70000000>;
113 bus-range = <0 ff>;
114 clock-frequency = <d# 97553800>; /* Hz */
115 interrupt-parent = <&mpic>;
116 interrupt-map-mask = <f800 0 0 7>;
117 interrupt-map = <
118 /* IDSEL 13 - IDE */
119 6800 0 0 1 &mpic 0 1
120 6800 0 0 2 &mpic 0 1
121 6800 0 0 3 &mpic 0 1
122 /* IDSEL 14 - USB */
123 7000 0 0 1 &mpic 0 1
124 7000 0 0 2 &mpic 0 1
125 7000 0 0 3 &mpic 0 1
126 7000 0 0 4 &mpic 0 1
127 /* IDSEL 15 - ETH */
128 7800 0 0 1 &mpic 0 1
129 7800 0 0 2 &mpic 0 1
130 7800 0 0 3 &mpic 0 1
131 7800 0 0 4 &mpic 0 1
132 >;
133 };
134
135 chosen {
136 linux,stdout-path = "/soc/serial@4500";
137 };
138};
diff --git a/arch/powerpc/boot/ep8248e.c b/arch/powerpc/boot/ep8248e.c
new file mode 100644
index 000000000000..f57d14d0272b
--- /dev/null
+++ b/arch/powerpc/boot/ep8248e.c
@@ -0,0 +1,55 @@
1/*
2 * Embedded Planet EP8248E with PlanetCore firmware
3 *
4 * Author: Scott Wood <scottwood@freescale.com>
5 *
6 * Copyright (c) 2007 Freescale Semiconductor, Inc.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 2 as published
10 * by the Free Software Foundation.
11 */
12
13#include "ops.h"
14#include "stdio.h"
15#include "planetcore.h"
16#include "pq2.h"
17
18static char *table;
19static u64 mem_size;
20
21#include <io.h>
22
23static void platform_fixups(void)
24{
25 u64 val;
26
27 dt_fixup_memory(0, mem_size);
28 planetcore_set_mac_addrs(table);
29
30 if (!planetcore_get_decimal(table, PLANETCORE_KEY_CRYSTAL_HZ, &val)) {
31 printf("No PlanetCore crystal frequency key.\r\n");
32 return;
33 }
34
35 pq2_fixup_clocks(val);
36}
37
38void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
39 unsigned long r6, unsigned long r7)
40{
41 table = (char *)r3;
42 planetcore_prepare_table(table);
43
44 if (!planetcore_get_decimal(table, PLANETCORE_KEY_MB_RAM, &mem_size))
45 return;
46
47 mem_size *= 1024 * 1024;
48 simple_alloc_init(_end, mem_size - (unsigned long)_end, 32, 64);
49
50 fdt_init(_dtb_start);
51
52 planetcore_set_stdout_path(table);
53 serial_console_init();
54 platform_ops.fixups = platform_fixups;
55}
diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h
index 6036a98e646a..5872ef1779ae 100644
--- a/arch/powerpc/boot/ops.h
+++ b/arch/powerpc/boot/ops.h
@@ -159,9 +159,23 @@ static inline void *find_node_by_devtype(const void *prev,
159 return find_node_by_prop_value_str(prev, "device_type", type); 159 return find_node_by_prop_value_str(prev, "device_type", type);
160} 160}
161 161
162static inline void *find_node_by_alias(const char *alias)
163{
164 void *devp = finddevice("/aliases");
165
166 if (devp) {
167 char path[MAX_PATH_LEN];
168 if (getprop(devp, alias, path, MAX_PATH_LEN) > 0)
169 return finddevice(path);
170 }
171
172 return NULL;
173}
174
162void dt_fixup_memory(u64 start, u64 size); 175void dt_fixup_memory(u64 start, u64 size);
163void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq); 176void dt_fixup_cpu_clocks(u32 cpufreq, u32 tbfreq, u32 busfreq);
164void dt_fixup_clock(const char *path, u32 freq); 177void dt_fixup_clock(const char *path, u32 freq);
178void dt_fixup_mac_address_by_alias(const char *alias, const u8 *addr);
165void dt_fixup_mac_address(u32 index, const u8 *addr); 179void dt_fixup_mac_address(u32 index, const u8 *addr);
166void __dt_fixup_mac_addresses(u32 startindex, ...); 180void __dt_fixup_mac_addresses(u32 startindex, ...);
167#define dt_fixup_mac_addresses(...) \ 181#define dt_fixup_mac_addresses(...) \
diff --git a/arch/powerpc/boot/redboot-8xx.c b/arch/powerpc/boot/redboot-8xx.c
new file mode 100644
index 000000000000..f7945adc8004
--- /dev/null
+++ b/arch/powerpc/boot/redboot-8xx.c
@@ -0,0 +1,58 @@
1/*
2 * RedBoot firmware support
3 *
4 * Author: Scott Wood <scottwood@freescale.com>
5 *
6 * Copyright (c) 2007 Freescale Semiconductor, Inc.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 2 as published
10 * by the Free Software Foundation.
11 */
12
13#include "ops.h"
14#include "stdio.h"
15#include "redboot.h"
16#include "fsl-soc.h"
17#include "io.h"
18
19static bd_t bd;
20BSS_STACK(4096);
21
22#define MHZ(x) ((x + 500000) / 1000000)
23
24static void platform_fixups(void)
25{
26 void *node;
27
28 dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
29 dt_fixup_mac_addresses(bd.bi_enetaddr);
30 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 16, bd.bi_busfreq);
31
32 node = finddevice("/soc/cpm/brg");
33 if (node) {
34 printf("BRG clock-frequency <- 0x%x (%dMHz)\r\n",
35 bd.bi_busfreq, MHZ(bd.bi_busfreq));
36 setprop(node, "clock-frequency", &bd.bi_busfreq, 4);
37 }
38}
39
40void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
41 unsigned long r6, unsigned long r7)
42{
43 memcpy(&bd, (char *)r3, sizeof(bd));
44
45 if (bd.bi_tag != 0x42444944)
46 return;
47
48 simple_alloc_init(_end,
49 bd.bi_memstart + bd.bi_memsize - (unsigned long)_end,
50 32, 64);
51
52 fdt_init(_dtb_start);
53 serial_console_init();
54 platform_ops.fixups = platform_fixups;
55
56 loader_info.cmdline = (char *)bd.bi_cmdline;
57 loader_info.cmdline_len = strlen((char *)bd.bi_cmdline);
58}
diff --git a/arch/powerpc/boot/redboot.h b/arch/powerpc/boot/redboot.h
new file mode 100644
index 000000000000..ace0b7fed8eb
--- /dev/null
+++ b/arch/powerpc/boot/redboot.h
@@ -0,0 +1,56 @@
1#ifndef _PPC_REDBOOT_H
2#define _PPC_REDBOOT_H
3
4//=========================================================================
5// include/asm-ppc/redboot.h
6// Copyright (c) 2002, 2003 Gary Thomas (<gary@mlbassoc.com>
7// Copyright (c) 1997 Dan Malek (dmalek@jlc.net)
8
9//
10// Board specific details, as provided by RedBoot
11//
12
13/* A Board Information structure that is given to a program when
14 * RedBoot starts it up. Note: not all fields make sense for all
15 * architectures and it's up to the platform specific code to fill
16 * in the details.
17 */
18typedef struct bd_info {
19 unsigned int bi_tag; /* Should be 0x42444944 "BDID" */
20 unsigned int bi_size; /* Size of this structure */
21 unsigned int bi_revision; /* revision of this structure */
22 unsigned int bi_bdate; /* bootstrap date, i.e. 0x19971106 */
23 unsigned int bi_memstart; /* Memory start address */
24 unsigned int bi_memsize; /* Memory (end) size in bytes */
25 unsigned int bi_intfreq; /* Internal Freq, in Hz */
26 unsigned int bi_busfreq; /* Bus Freq, in Hz */
27 unsigned int bi_cpmfreq; /* CPM Freq, in Hz */
28 unsigned int bi_brgfreq; /* BRG Freq, in Hz */
29 unsigned int bi_vco; /* VCO Out from PLL */
30 unsigned int bi_pci_freq; /* PCI Freq, in Hz */
31 unsigned int bi_baudrate; /* Default console baud rate */
32 unsigned int bi_immr; /* IMMR when called from boot rom */
33 unsigned char bi_enetaddr[6];
34 unsigned int bi_flashbase; /* Physical address of FLASH memory */
35 unsigned int bi_flashsize; /* Length of FLASH memory */
36 int bi_flashwidth; /* Width (8,16,32,64) */
37 unsigned char *bi_cmdline; /* Pointer to command line */
38 unsigned char bi_esa[3][6]; /* Ethernet station addresses */
39 unsigned int bi_ramdisk_begin, bi_ramdisk_end;
40 struct { /* Information about [main] video screen */
41 short x_res; /* Horizontal resolution in pixels */
42 short y_res; /* Vertical resolution in pixels */
43 short bpp; /* Bits/pixel */
44 short mode; /* Type of pixels (packed, indexed) */
45 unsigned long fb; /* Pointer to frame buffer (pixel) memory */
46 } bi_video;
47 void (*bi_cputc)(char); /* Write a character to the RedBoot console */
48 char (*bi_cgetc)(void); /* Read a character from the RedBoot console */
49 int (*bi_ctstc)(void); /* Test for input on the RedBoot console */
50} bd_t;
51
52#define BI_REV 0x0102 /* Version 1.02 */
53
54#define bi_pci_busfreq bi_pci_freq
55#define bi_immr_base bi_immr
56#endif
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index 154df055aad2..763a0c46f441 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -168,7 +168,7 @@ ps3)
168 ksection=.kernel:vmlinux.bin 168 ksection=.kernel:vmlinux.bin
169 isection=.kernel:initrd 169 isection=.kernel:initrd
170 ;; 170 ;;
171ep88xc|ep405) 171ep88xc|ep405|redboot*|ep8248e)
172 platformo="$object/fixed-head.o $object/$platform.o" 172 platformo="$object/fixed-head.o $object/$platform.o"
173 binary=y 173 binary=y
174 ;; 174 ;;
diff --git a/arch/powerpc/configs/adder875-redboot_defconfig b/arch/powerpc/configs/adder875-redboot_defconfig
new file mode 100644
index 000000000000..cab5f9b64567
--- /dev/null
+++ b/arch/powerpc/configs/adder875-redboot_defconfig
@@ -0,0 +1,798 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Thu Jan 17 16:17:38 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13CONFIG_PPC_8xx=y
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_8xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y
32CONFIG_GENERIC_HWEIGHT=y
33CONFIG_GENERIC_CALIBRATE_DELAY=y
34CONFIG_GENERIC_FIND_NEXT_BIT=y
35# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
36CONFIG_PPC=y
37CONFIG_EARLY_PRINTK=y
38CONFIG_GENERIC_NVRAM=y
39CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
40CONFIG_ARCH_MAY_HAVE_PC_FDC=y
41CONFIG_PPC_OF=y
42CONFIG_OF=y
43# CONFIG_PPC_UDBG_16550 is not set
44# CONFIG_GENERIC_TBSYNC is not set
45CONFIG_AUDIT_ARCH=y
46CONFIG_GENERIC_BUG=y
47# CONFIG_DEFAULT_UIMAGE is not set
48CONFIG_REDBOOT=y
49# CONFIG_PPC_DCR_NATIVE is not set
50# CONFIG_PPC_DCR_MMIO is not set
51CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
52
53#
54# General setup
55#
56CONFIG_EXPERIMENTAL=y
57CONFIG_BROKEN_ON_SMP=y
58CONFIG_INIT_ENV_ARG_LIMIT=32
59CONFIG_LOCALVERSION=""
60CONFIG_LOCALVERSION_AUTO=y
61# CONFIG_SWAP is not set
62CONFIG_SYSVIPC=y
63CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set
73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y
75# CONFIG_FAIR_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set
78# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y
81CONFIG_EMBEDDED=y
82# CONFIG_SYSCTL_SYSCALL is not set
83CONFIG_KALLSYMS=y
84# CONFIG_KALLSYMS_ALL is not set
85# CONFIG_KALLSYMS_EXTRA_PASS is not set
86CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y
88CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set
90# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_EVENTFD=y
96CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set
98CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set
100CONFIG_SLUB=y
101# CONFIG_SLOB is not set
102# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set
105CONFIG_BLOCK=y
106# CONFIG_LBD is not set
107# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set
110
111#
112# IO Schedulers
113#
114CONFIG_IOSCHED_NOOP=y
115# CONFIG_IOSCHED_AS is not set
116CONFIG_IOSCHED_DEADLINE=y
117# CONFIG_IOSCHED_CFQ is not set
118# CONFIG_DEFAULT_AS is not set
119CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline"
123
124#
125# Platform support
126#
127# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_MPC5200 is not set
129# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y
132# CONFIG_MPC8XXFADS is not set
133# CONFIG_MPC86XADS is not set
134# CONFIG_MPC885ADS is not set
135# CONFIG_PPC_EP88XC is not set
136CONFIG_PPC_ADDER875=y
137
138#
139# MPC8xx CPM Options
140#
141
142#
143# Generic MPC8xx Options
144#
145CONFIG_8xx_COPYBACK=y
146# CONFIG_8xx_CPU6 is not set
147CONFIG_8xx_CPU15=y
148CONFIG_NO_UCODE_PATCH=y
149# CONFIG_USB_SOF_UCODE_PATCH is not set
150# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set
153# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set
156# CONFIG_PPC_RTAS is not set
157# CONFIG_MMIO_NVRAM is not set
158# CONFIG_PPC_MPC106 is not set
159# CONFIG_PPC_970_NAP is not set
160# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y
167
168#
169# Kernel options
170#
171# CONFIG_HIGHMEM is not set
172# CONFIG_TICK_ONESHOT is not set
173# CONFIG_NO_HZ is not set
174# CONFIG_HIGH_RES_TIMERS is not set
175CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
176# CONFIG_HZ_100 is not set
177# CONFIG_HZ_250 is not set
178# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y
180CONFIG_HZ=1000
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
189CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y
192CONFIG_FLATMEM_MANUAL=y
193# CONFIG_DISCONTIGMEM_MANUAL is not set
194# CONFIG_SPARSEMEM_MANUAL is not set
195CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
199CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-redboot.dts"
212CONFIG_ISA_DMA_API=y
213
214#
215# Bus options
216#
217CONFIG_ZONE_DMA=y
218CONFIG_FSL_SOC=y
219# CONFIG_PCI is not set
220# CONFIG_PCI_DOMAINS is not set
221# CONFIG_PCI_SYSCALL is not set
222# CONFIG_PCI_QSPAN is not set
223# CONFIG_ARCH_SUPPORTS_MSI is not set
224# CONFIG_PCCARD is not set
225
226#
227# Advanced setup
228#
229# CONFIG_ADVANCED_OPTIONS is not set
230
231#
232# Default settings for advanced configuration options are used
233#
234CONFIG_HIGHMEM_START=0xfe000000
235CONFIG_LOWMEM_SIZE=0x30000000
236CONFIG_KERNEL_START=0xc0000000
237CONFIG_TASK_SIZE=0x80000000
238CONFIG_CONSISTENT_START=0xfd000000
239CONFIG_CONSISTENT_SIZE=0x00200000
240CONFIG_BOOT_LOAD=0x00400000
241
242#
243# Networking
244#
245CONFIG_NET=y
246
247#
248# Networking options
249#
250CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y
253# CONFIG_NET_KEY is not set
254CONFIG_INET=y
255CONFIG_IP_MULTICAST=y
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259# CONFIG_IP_PNP_DHCP is not set
260# CONFIG_IP_PNP_BOOTP is not set
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_IP_MROUTE is not set
265# CONFIG_ARPD is not set
266CONFIG_SYN_COOKIES=y
267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set
270# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set
272# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
273# CONFIG_INET_XFRM_MODE_TUNNEL is not set
274# CONFIG_INET_XFRM_MODE_BEET is not set
275# CONFIG_INET_LRO is not set
276CONFIG_INET_DIAG=y
277CONFIG_INET_TCP_DIAG=y
278# CONFIG_TCP_CONG_ADVANCED is not set
279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
282# CONFIG_IPV6 is not set
283# CONFIG_INET6_XFRM_TUNNEL is not set
284# CONFIG_INET6_TUNNEL is not set
285# CONFIG_NETWORK_SECMARK is not set
286# CONFIG_NETFILTER is not set
287# CONFIG_IP_DCCP is not set
288# CONFIG_IP_SCTP is not set
289# CONFIG_TIPC is not set
290# CONFIG_ATM is not set
291# CONFIG_BRIDGE is not set
292# CONFIG_VLAN_8021Q is not set
293# CONFIG_DECNET is not set
294# CONFIG_LLC2 is not set
295# CONFIG_IPX is not set
296# CONFIG_ATALK is not set
297# CONFIG_X25 is not set
298# CONFIG_LAPB is not set
299# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set
301# CONFIG_NET_SCHED is not set
302
303#
304# Network testing
305#
306# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set
308# CONFIG_IRDA is not set
309# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set
311
312#
313# Wireless
314#
315# CONFIG_CFG80211 is not set
316# CONFIG_WIRELESS_EXT is not set
317# CONFIG_MAC80211 is not set
318# CONFIG_IEEE80211 is not set
319# CONFIG_RFKILL is not set
320# CONFIG_NET_9P is not set
321
322#
323# Device Drivers
324#
325
326#
327# Generic Driver Options
328#
329CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
330CONFIG_STANDALONE=y
331CONFIG_PREVENT_FIRMWARE_BUILD=y
332# CONFIG_FW_LOADER is not set
333# CONFIG_DEBUG_DRIVER is not set
334# CONFIG_DEBUG_DEVRES is not set
335# CONFIG_SYS_HYPERVISOR is not set
336# CONFIG_CONNECTOR is not set
337CONFIG_MTD=y
338# CONFIG_MTD_DEBUG is not set
339# CONFIG_MTD_CONCAT is not set
340# CONFIG_MTD_PARTITIONS is not set
341
342#
343# User Modules And Translation Layers
344#
345CONFIG_MTD_CHAR=y
346CONFIG_MTD_BLKDEVS=y
347CONFIG_MTD_BLOCK=y
348# CONFIG_FTL is not set
349# CONFIG_NFTL is not set
350# CONFIG_INFTL is not set
351# CONFIG_RFD_FTL is not set
352# CONFIG_SSFDC is not set
353# CONFIG_MTD_OOPS is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374# CONFIG_MTD_CFI_STAA is not set
375CONFIG_MTD_CFI_UTIL=y
376# CONFIG_MTD_RAM is not set
377# CONFIG_MTD_ROM is not set
378# CONFIG_MTD_ABSENT is not set
379
380#
381# Mapping drivers for chip access
382#
383# CONFIG_MTD_COMPLEX_MAPPINGS is not set
384# CONFIG_MTD_PHYSMAP is not set
385CONFIG_MTD_PHYSMAP_OF=y
386# CONFIG_MTD_CFI_FLAGADM is not set
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_SLRAM is not set
393# CONFIG_MTD_PHRAM is not set
394# CONFIG_MTD_MTDRAM is not set
395# CONFIG_MTD_BLOCK2MTD is not set
396
397#
398# Disk-On-Chip Device Drivers
399#
400# CONFIG_MTD_DOC2000 is not set
401# CONFIG_MTD_DOC2001 is not set
402# CONFIG_MTD_DOC2001PLUS is not set
403# CONFIG_MTD_NAND is not set
404# CONFIG_MTD_ONENAND is not set
405
406#
407# UBI - Unsorted block images
408#
409# CONFIG_MTD_UBI is not set
410CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set
414# CONFIG_IDE is not set
415
416#
417# SCSI device support
418#
419# CONFIG_RAID_ATTRS is not set
420# CONFIG_SCSI is not set
421# CONFIG_SCSI_DMA is not set
422# CONFIG_SCSI_NETLINK is not set
423# CONFIG_ATA is not set
424# CONFIG_MD is not set
425# CONFIG_MACINTOSH_DRIVERS is not set
426CONFIG_NETDEVICES=y
427# CONFIG_NETDEVICES_MULTIQUEUE is not set
428# CONFIG_DUMMY is not set
429# CONFIG_BONDING is not set
430# CONFIG_MACVLAN is not set
431# CONFIG_EQUALIZER is not set
432# CONFIG_TUN is not set
433# CONFIG_VETH is not set
434CONFIG_PHYLIB=y
435
436#
437# MII PHY device drivers
438#
439# CONFIG_MARVELL_PHY is not set
440CONFIG_DAVICOM_PHY=y
441# CONFIG_QSEMI_PHY is not set
442# CONFIG_LXT_PHY is not set
443# CONFIG_CICADA_PHY is not set
444# CONFIG_VITESSE_PHY is not set
445# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set
448# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y
451CONFIG_MII=y
452# CONFIG_IBM_NEW_EMAC_ZMII is not set
453# CONFIG_IBM_NEW_EMAC_RGMII is not set
454# CONFIG_IBM_NEW_EMAC_TAH is not set
455# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
456# CONFIG_B44 is not set
457CONFIG_FS_ENET=y
458# CONFIG_FS_ENET_HAS_SCC is not set
459CONFIG_FS_ENET_HAS_FEC=y
460CONFIG_FS_ENET_MDIO_FEC=y
461# CONFIG_NETDEV_1000 is not set
462# CONFIG_NETDEV_10000 is not set
463
464#
465# Wireless LAN
466#
467# CONFIG_WLAN_PRE80211 is not set
468# CONFIG_WLAN_80211 is not set
469# CONFIG_WAN is not set
470# CONFIG_PPP is not set
471# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set
476# CONFIG_ISDN is not set
477# CONFIG_PHONE is not set
478
479#
480# Input device support
481#
482CONFIG_INPUT=y
483# CONFIG_INPUT_FF_MEMLESS is not set
484# CONFIG_INPUT_POLLDEV is not set
485
486#
487# Userland interfaces
488#
489CONFIG_INPUT_MOUSEDEV=y
490CONFIG_INPUT_MOUSEDEV_PSAUX=y
491CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
492CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
493# CONFIG_INPUT_JOYDEV is not set
494# CONFIG_INPUT_EVDEV is not set
495# CONFIG_INPUT_EVBUG is not set
496
497#
498# Input Device Drivers
499#
500CONFIG_INPUT_KEYBOARD=y
501CONFIG_KEYBOARD_ATKBD=y
502# CONFIG_KEYBOARD_SUNKBD is not set
503# CONFIG_KEYBOARD_LKKBD is not set
504# CONFIG_KEYBOARD_XTKBD is not set
505# CONFIG_KEYBOARD_NEWTON is not set
506# CONFIG_KEYBOARD_STOWAWAY is not set
507CONFIG_INPUT_MOUSE=y
508CONFIG_MOUSE_PS2=y
509CONFIG_MOUSE_PS2_ALPS=y
510CONFIG_MOUSE_PS2_LOGIPS2PP=y
511CONFIG_MOUSE_PS2_SYNAPTICS=y
512CONFIG_MOUSE_PS2_LIFEBOOK=y
513CONFIG_MOUSE_PS2_TRACKPOINT=y
514# CONFIG_MOUSE_PS2_TOUCHKIT is not set
515# CONFIG_MOUSE_SERIAL is not set
516# CONFIG_MOUSE_VSXXXAA is not set
517# CONFIG_INPUT_JOYSTICK is not set
518# CONFIG_INPUT_TABLET is not set
519# CONFIG_INPUT_TOUCHSCREEN is not set
520# CONFIG_INPUT_MISC is not set
521
522#
523# Hardware I/O ports
524#
525CONFIG_SERIO=y
526CONFIG_SERIO_I8042=y
527CONFIG_SERIO_SERPORT=y
528CONFIG_SERIO_LIBPS2=y
529# CONFIG_SERIO_RAW is not set
530# CONFIG_GAMEPORT is not set
531
532#
533# Character devices
534#
535# CONFIG_VT is not set
536# CONFIG_SERIAL_NONSTANDARD is not set
537
538#
539# Serial drivers
540#
541# CONFIG_SERIAL_8250 is not set
542
543#
544# Non-8250 serial port support
545#
546# CONFIG_SERIAL_UARTLITE is not set
547CONFIG_SERIAL_CORE=y
548CONFIG_SERIAL_CORE_CONSOLE=y
549CONFIG_SERIAL_CPM=y
550CONFIG_SERIAL_CPM_CONSOLE=y
551# CONFIG_SERIAL_CPM_SCC1 is not set
552# CONFIG_SERIAL_CPM_SCC2 is not set
553# CONFIG_SERIAL_CPM_SCC3 is not set
554# CONFIG_SERIAL_CPM_SCC4 is not set
555CONFIG_SERIAL_CPM_SMC1=y
556CONFIG_SERIAL_CPM_SMC2=y
557CONFIG_UNIX98_PTYS=y
558# CONFIG_LEGACY_PTYS is not set
559# CONFIG_IPMI_HANDLER is not set
560CONFIG_HW_RANDOM=y
561# CONFIG_NVRAM is not set
562CONFIG_GEN_RTC=y
563# CONFIG_GEN_RTC_X is not set
564# CONFIG_R3964 is not set
565# CONFIG_RAW_DRIVER is not set
566# CONFIG_TCG_TPM is not set
567# CONFIG_I2C is not set
568
569#
570# SPI support
571#
572# CONFIG_SPI is not set
573# CONFIG_SPI_MASTER is not set
574# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set
577# CONFIG_WATCHDOG is not set
578
579#
580# Sonics Silicon Backplane
581#
582CONFIG_SSB_POSSIBLE=y
583# CONFIG_SSB is not set
584
585#
586# Multifunction device drivers
587#
588# CONFIG_MFD_SM501 is not set
589
590#
591# Multimedia devices
592#
593# CONFIG_VIDEO_DEV is not set
594# CONFIG_DVB_CORE is not set
595CONFIG_DAB=y
596
597#
598# Graphics support
599#
600# CONFIG_VGASTATE is not set
601CONFIG_VIDEO_OUTPUT_CONTROL=y
602# CONFIG_FB is not set
603# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
604
605#
606# Display device support
607#
608# CONFIG_DISPLAY_SUPPORT is not set
609
610#
611# Sound
612#
613# CONFIG_SOUND is not set
614# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set
617# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set
620
621#
622# Userspace I/O
623#
624# CONFIG_UIO is not set
625
626#
627# File systems
628#
629# CONFIG_EXT2_FS is not set
630# CONFIG_EXT3_FS is not set
631# CONFIG_EXT4DEV_FS is not set
632# CONFIG_REISERFS_FS is not set
633# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set
646
647#
648# CD-ROM/DVD Filesystems
649#
650# CONFIG_ISO9660_FS is not set
651# CONFIG_UDF_FS is not set
652
653#
654# DOS/FAT/NT Filesystems
655#
656# CONFIG_MSDOS_FS is not set
657# CONFIG_VFAT_FS is not set
658# CONFIG_NTFS_FS is not set
659
660#
661# Pseudo filesystems
662#
663CONFIG_PROC_FS=y
664# CONFIG_PROC_KCORE is not set
665CONFIG_PROC_SYSCTL=y
666CONFIG_SYSFS=y
667CONFIG_TMPFS=y
668# CONFIG_TMPFS_POSIX_ACL is not set
669# CONFIG_HUGETLB_PAGE is not set
670# CONFIG_CONFIGFS_FS is not set
671
672#
673# Miscellaneous filesystems
674#
675# CONFIG_ADFS_FS is not set
676# CONFIG_AFFS_FS is not set
677# CONFIG_HFS_FS is not set
678# CONFIG_HFSPLUS_FS is not set
679# CONFIG_BEFS_FS is not set
680# CONFIG_BFS_FS is not set
681# CONFIG_EFS_FS is not set
682# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set
685# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set
687# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y
690CONFIG_NFS_FS=y
691CONFIG_NFS_V3=y
692# CONFIG_NFS_V3_ACL is not set
693# CONFIG_NFS_V4 is not set
694# CONFIG_NFS_DIRECTIO is not set
695# CONFIG_NFSD is not set
696CONFIG_ROOT_NFS=y
697CONFIG_LOCKD=y
698CONFIG_LOCKD_V4=y
699CONFIG_NFS_COMMON=y
700CONFIG_SUNRPC=y
701# CONFIG_SUNRPC_BIND34 is not set
702# CONFIG_RPCSEC_GSS_KRB5 is not set
703# CONFIG_RPCSEC_GSS_SPKM3 is not set
704# CONFIG_SMB_FS is not set
705# CONFIG_CIFS is not set
706# CONFIG_NCP_FS is not set
707# CONFIG_CODA_FS is not set
708# CONFIG_AFS_FS is not set
709
710#
711# Partition Types
712#
713CONFIG_PARTITION_ADVANCED=y
714# CONFIG_ACORN_PARTITION is not set
715# CONFIG_OSF_PARTITION is not set
716# CONFIG_AMIGA_PARTITION is not set
717# CONFIG_ATARI_PARTITION is not set
718# CONFIG_MAC_PARTITION is not set
719CONFIG_MSDOS_PARTITION=y
720# CONFIG_BSD_DISKLABEL is not set
721# CONFIG_MINIX_SUBPARTITION is not set
722# CONFIG_SOLARIS_X86_PARTITION is not set
723# CONFIG_UNIXWARE_DISKLABEL is not set
724# CONFIG_LDM_PARTITION is not set
725# CONFIG_SGI_PARTITION is not set
726# CONFIG_ULTRIX_PARTITION is not set
727# CONFIG_SUN_PARTITION is not set
728# CONFIG_KARMA_PARTITION is not set
729# CONFIG_EFI_PARTITION is not set
730# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set
732# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734
735#
736# Library routines
737#
738# CONFIG_CRC_CCITT is not set
739# CONFIG_CRC16 is not set
740# CONFIG_CRC_ITU_T is not set
741# CONFIG_CRC32 is not set
742# CONFIG_CRC7 is not set
743# CONFIG_LIBCRC32C is not set
744CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751
752#
753# Kernel hacking
754#
755# CONFIG_PRINTK_TIME is not set
756CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set
761# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set
764CONFIG_DETECT_SOFTLOCKUP=y
765CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set
769# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
772# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
773# CONFIG_DEBUG_KOBJECT is not set
774CONFIG_DEBUG_BUGVERBOSE=y
775CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set
781# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set
787# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set
789
790#
791# Security options
792#
793# CONFIG_KEYS is not set
794# CONFIG_SECURITY is not set
795# CONFIG_SECURITY_FILE_CAPABILITIES is not set
796# CONFIG_CRYPTO is not set
797# CONFIG_PPC_CLOCK is not set
798CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/adder875-uboot_defconfig b/arch/powerpc/configs/adder875-uboot_defconfig
new file mode 100644
index 000000000000..1faf7ef59a23
--- /dev/null
+++ b/arch/powerpc/configs/adder875-uboot_defconfig
@@ -0,0 +1,798 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Thu Jan 17 16:17:18 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13CONFIG_PPC_8xx=y
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_8xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y
32CONFIG_GENERIC_HWEIGHT=y
33CONFIG_GENERIC_CALIBRATE_DELAY=y
34CONFIG_GENERIC_FIND_NEXT_BIT=y
35# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
36CONFIG_PPC=y
37CONFIG_EARLY_PRINTK=y
38CONFIG_GENERIC_NVRAM=y
39CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
40CONFIG_ARCH_MAY_HAVE_PC_FDC=y
41CONFIG_PPC_OF=y
42CONFIG_OF=y
43# CONFIG_PPC_UDBG_16550 is not set
44# CONFIG_GENERIC_TBSYNC is not set
45CONFIG_AUDIT_ARCH=y
46CONFIG_GENERIC_BUG=y
47# CONFIG_DEFAULT_UIMAGE is not set
48CONFIG_REDBOOT=y
49# CONFIG_PPC_DCR_NATIVE is not set
50# CONFIG_PPC_DCR_MMIO is not set
51CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
52
53#
54# General setup
55#
56CONFIG_EXPERIMENTAL=y
57CONFIG_BROKEN_ON_SMP=y
58CONFIG_INIT_ENV_ARG_LIMIT=32
59CONFIG_LOCALVERSION=""
60CONFIG_LOCALVERSION_AUTO=y
61# CONFIG_SWAP is not set
62CONFIG_SYSVIPC=y
63CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set
73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y
75# CONFIG_FAIR_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set
78# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y
81CONFIG_EMBEDDED=y
82# CONFIG_SYSCTL_SYSCALL is not set
83CONFIG_KALLSYMS=y
84# CONFIG_KALLSYMS_ALL is not set
85# CONFIG_KALLSYMS_EXTRA_PASS is not set
86CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y
88CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set
90# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_EVENTFD=y
96CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set
98CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set
100CONFIG_SLUB=y
101# CONFIG_SLOB is not set
102# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set
105CONFIG_BLOCK=y
106# CONFIG_LBD is not set
107# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set
110
111#
112# IO Schedulers
113#
114CONFIG_IOSCHED_NOOP=y
115# CONFIG_IOSCHED_AS is not set
116CONFIG_IOSCHED_DEADLINE=y
117# CONFIG_IOSCHED_CFQ is not set
118# CONFIG_DEFAULT_AS is not set
119CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline"
123
124#
125# Platform support
126#
127# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_MPC5200 is not set
129# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y
132# CONFIG_MPC8XXFADS is not set
133# CONFIG_MPC86XADS is not set
134# CONFIG_MPC885ADS is not set
135# CONFIG_PPC_EP88XC is not set
136CONFIG_PPC_ADDER875=y
137
138#
139# MPC8xx CPM Options
140#
141
142#
143# Generic MPC8xx Options
144#
145CONFIG_8xx_COPYBACK=y
146# CONFIG_8xx_CPU6 is not set
147CONFIG_8xx_CPU15=y
148CONFIG_NO_UCODE_PATCH=y
149# CONFIG_USB_SOF_UCODE_PATCH is not set
150# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set
153# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set
156# CONFIG_PPC_RTAS is not set
157# CONFIG_MMIO_NVRAM is not set
158# CONFIG_PPC_MPC106 is not set
159# CONFIG_PPC_970_NAP is not set
160# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y
167
168#
169# Kernel options
170#
171# CONFIG_HIGHMEM is not set
172# CONFIG_TICK_ONESHOT is not set
173# CONFIG_NO_HZ is not set
174# CONFIG_HIGH_RES_TIMERS is not set
175CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
176# CONFIG_HZ_100 is not set
177# CONFIG_HZ_250 is not set
178# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y
180CONFIG_HZ=1000
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
189CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y
192CONFIG_FLATMEM_MANUAL=y
193# CONFIG_DISCONTIGMEM_MANUAL is not set
194# CONFIG_SPARSEMEM_MANUAL is not set
195CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
199CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-uboot.dts"
212CONFIG_ISA_DMA_API=y
213
214#
215# Bus options
216#
217CONFIG_ZONE_DMA=y
218CONFIG_FSL_SOC=y
219# CONFIG_PCI is not set
220# CONFIG_PCI_DOMAINS is not set
221# CONFIG_PCI_SYSCALL is not set
222# CONFIG_PCI_QSPAN is not set
223# CONFIG_ARCH_SUPPORTS_MSI is not set
224# CONFIG_PCCARD is not set
225
226#
227# Advanced setup
228#
229# CONFIG_ADVANCED_OPTIONS is not set
230
231#
232# Default settings for advanced configuration options are used
233#
234CONFIG_HIGHMEM_START=0xfe000000
235CONFIG_LOWMEM_SIZE=0x30000000
236CONFIG_KERNEL_START=0xc0000000
237CONFIG_TASK_SIZE=0x80000000
238CONFIG_CONSISTENT_START=0xfd000000
239CONFIG_CONSISTENT_SIZE=0x00200000
240CONFIG_BOOT_LOAD=0x00400000
241
242#
243# Networking
244#
245CONFIG_NET=y
246
247#
248# Networking options
249#
250CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y
253# CONFIG_NET_KEY is not set
254CONFIG_INET=y
255CONFIG_IP_MULTICAST=y
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259# CONFIG_IP_PNP_DHCP is not set
260# CONFIG_IP_PNP_BOOTP is not set
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_IP_MROUTE is not set
265# CONFIG_ARPD is not set
266CONFIG_SYN_COOKIES=y
267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set
270# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set
272# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
273# CONFIG_INET_XFRM_MODE_TUNNEL is not set
274# CONFIG_INET_XFRM_MODE_BEET is not set
275# CONFIG_INET_LRO is not set
276CONFIG_INET_DIAG=y
277CONFIG_INET_TCP_DIAG=y
278# CONFIG_TCP_CONG_ADVANCED is not set
279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
282# CONFIG_IPV6 is not set
283# CONFIG_INET6_XFRM_TUNNEL is not set
284# CONFIG_INET6_TUNNEL is not set
285# CONFIG_NETWORK_SECMARK is not set
286# CONFIG_NETFILTER is not set
287# CONFIG_IP_DCCP is not set
288# CONFIG_IP_SCTP is not set
289# CONFIG_TIPC is not set
290# CONFIG_ATM is not set
291# CONFIG_BRIDGE is not set
292# CONFIG_VLAN_8021Q is not set
293# CONFIG_DECNET is not set
294# CONFIG_LLC2 is not set
295# CONFIG_IPX is not set
296# CONFIG_ATALK is not set
297# CONFIG_X25 is not set
298# CONFIG_LAPB is not set
299# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set
301# CONFIG_NET_SCHED is not set
302
303#
304# Network testing
305#
306# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set
308# CONFIG_IRDA is not set
309# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set
311
312#
313# Wireless
314#
315# CONFIG_CFG80211 is not set
316# CONFIG_WIRELESS_EXT is not set
317# CONFIG_MAC80211 is not set
318# CONFIG_IEEE80211 is not set
319# CONFIG_RFKILL is not set
320# CONFIG_NET_9P is not set
321
322#
323# Device Drivers
324#
325
326#
327# Generic Driver Options
328#
329CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
330CONFIG_STANDALONE=y
331CONFIG_PREVENT_FIRMWARE_BUILD=y
332# CONFIG_FW_LOADER is not set
333# CONFIG_DEBUG_DRIVER is not set
334# CONFIG_DEBUG_DEVRES is not set
335# CONFIG_SYS_HYPERVISOR is not set
336# CONFIG_CONNECTOR is not set
337CONFIG_MTD=y
338# CONFIG_MTD_DEBUG is not set
339# CONFIG_MTD_CONCAT is not set
340# CONFIG_MTD_PARTITIONS is not set
341
342#
343# User Modules And Translation Layers
344#
345CONFIG_MTD_CHAR=y
346CONFIG_MTD_BLKDEVS=y
347CONFIG_MTD_BLOCK=y
348# CONFIG_FTL is not set
349# CONFIG_NFTL is not set
350# CONFIG_INFTL is not set
351# CONFIG_RFD_FTL is not set
352# CONFIG_SSFDC is not set
353# CONFIG_MTD_OOPS is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374# CONFIG_MTD_CFI_STAA is not set
375CONFIG_MTD_CFI_UTIL=y
376# CONFIG_MTD_RAM is not set
377# CONFIG_MTD_ROM is not set
378# CONFIG_MTD_ABSENT is not set
379
380#
381# Mapping drivers for chip access
382#
383# CONFIG_MTD_COMPLEX_MAPPINGS is not set
384# CONFIG_MTD_PHYSMAP is not set
385CONFIG_MTD_PHYSMAP_OF=y
386# CONFIG_MTD_CFI_FLAGADM is not set
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_SLRAM is not set
393# CONFIG_MTD_PHRAM is not set
394# CONFIG_MTD_MTDRAM is not set
395# CONFIG_MTD_BLOCK2MTD is not set
396
397#
398# Disk-On-Chip Device Drivers
399#
400# CONFIG_MTD_DOC2000 is not set
401# CONFIG_MTD_DOC2001 is not set
402# CONFIG_MTD_DOC2001PLUS is not set
403# CONFIG_MTD_NAND is not set
404# CONFIG_MTD_ONENAND is not set
405
406#
407# UBI - Unsorted block images
408#
409# CONFIG_MTD_UBI is not set
410CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set
414# CONFIG_IDE is not set
415
416#
417# SCSI device support
418#
419# CONFIG_RAID_ATTRS is not set
420# CONFIG_SCSI is not set
421# CONFIG_SCSI_DMA is not set
422# CONFIG_SCSI_NETLINK is not set
423# CONFIG_ATA is not set
424# CONFIG_MD is not set
425# CONFIG_MACINTOSH_DRIVERS is not set
426CONFIG_NETDEVICES=y
427# CONFIG_NETDEVICES_MULTIQUEUE is not set
428# CONFIG_DUMMY is not set
429# CONFIG_BONDING is not set
430# CONFIG_MACVLAN is not set
431# CONFIG_EQUALIZER is not set
432# CONFIG_TUN is not set
433# CONFIG_VETH is not set
434CONFIG_PHYLIB=y
435
436#
437# MII PHY device drivers
438#
439# CONFIG_MARVELL_PHY is not set
440CONFIG_DAVICOM_PHY=y
441# CONFIG_QSEMI_PHY is not set
442# CONFIG_LXT_PHY is not set
443# CONFIG_CICADA_PHY is not set
444# CONFIG_VITESSE_PHY is not set
445# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set
448# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y
451CONFIG_MII=y
452# CONFIG_IBM_NEW_EMAC_ZMII is not set
453# CONFIG_IBM_NEW_EMAC_RGMII is not set
454# CONFIG_IBM_NEW_EMAC_TAH is not set
455# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
456# CONFIG_B44 is not set
457CONFIG_FS_ENET=y
458# CONFIG_FS_ENET_HAS_SCC is not set
459CONFIG_FS_ENET_HAS_FEC=y
460CONFIG_FS_ENET_MDIO_FEC=y
461# CONFIG_NETDEV_1000 is not set
462# CONFIG_NETDEV_10000 is not set
463
464#
465# Wireless LAN
466#
467# CONFIG_WLAN_PRE80211 is not set
468# CONFIG_WLAN_80211 is not set
469# CONFIG_WAN is not set
470# CONFIG_PPP is not set
471# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set
476# CONFIG_ISDN is not set
477# CONFIG_PHONE is not set
478
479#
480# Input device support
481#
482CONFIG_INPUT=y
483# CONFIG_INPUT_FF_MEMLESS is not set
484# CONFIG_INPUT_POLLDEV is not set
485
486#
487# Userland interfaces
488#
489CONFIG_INPUT_MOUSEDEV=y
490CONFIG_INPUT_MOUSEDEV_PSAUX=y
491CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
492CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
493# CONFIG_INPUT_JOYDEV is not set
494# CONFIG_INPUT_EVDEV is not set
495# CONFIG_INPUT_EVBUG is not set
496
497#
498# Input Device Drivers
499#
500CONFIG_INPUT_KEYBOARD=y
501CONFIG_KEYBOARD_ATKBD=y
502# CONFIG_KEYBOARD_SUNKBD is not set
503# CONFIG_KEYBOARD_LKKBD is not set
504# CONFIG_KEYBOARD_XTKBD is not set
505# CONFIG_KEYBOARD_NEWTON is not set
506# CONFIG_KEYBOARD_STOWAWAY is not set
507CONFIG_INPUT_MOUSE=y
508CONFIG_MOUSE_PS2=y
509CONFIG_MOUSE_PS2_ALPS=y
510CONFIG_MOUSE_PS2_LOGIPS2PP=y
511CONFIG_MOUSE_PS2_SYNAPTICS=y
512CONFIG_MOUSE_PS2_LIFEBOOK=y
513CONFIG_MOUSE_PS2_TRACKPOINT=y
514# CONFIG_MOUSE_PS2_TOUCHKIT is not set
515# CONFIG_MOUSE_SERIAL is not set
516# CONFIG_MOUSE_VSXXXAA is not set
517# CONFIG_INPUT_JOYSTICK is not set
518# CONFIG_INPUT_TABLET is not set
519# CONFIG_INPUT_TOUCHSCREEN is not set
520# CONFIG_INPUT_MISC is not set
521
522#
523# Hardware I/O ports
524#
525CONFIG_SERIO=y
526CONFIG_SERIO_I8042=y
527CONFIG_SERIO_SERPORT=y
528CONFIG_SERIO_LIBPS2=y
529# CONFIG_SERIO_RAW is not set
530# CONFIG_GAMEPORT is not set
531
532#
533# Character devices
534#
535# CONFIG_VT is not set
536# CONFIG_SERIAL_NONSTANDARD is not set
537
538#
539# Serial drivers
540#
541# CONFIG_SERIAL_8250 is not set
542
543#
544# Non-8250 serial port support
545#
546# CONFIG_SERIAL_UARTLITE is not set
547CONFIG_SERIAL_CORE=y
548CONFIG_SERIAL_CORE_CONSOLE=y
549CONFIG_SERIAL_CPM=y
550CONFIG_SERIAL_CPM_CONSOLE=y
551# CONFIG_SERIAL_CPM_SCC1 is not set
552# CONFIG_SERIAL_CPM_SCC2 is not set
553# CONFIG_SERIAL_CPM_SCC3 is not set
554# CONFIG_SERIAL_CPM_SCC4 is not set
555CONFIG_SERIAL_CPM_SMC1=y
556CONFIG_SERIAL_CPM_SMC2=y
557CONFIG_UNIX98_PTYS=y
558# CONFIG_LEGACY_PTYS is not set
559# CONFIG_IPMI_HANDLER is not set
560CONFIG_HW_RANDOM=y
561# CONFIG_NVRAM is not set
562CONFIG_GEN_RTC=y
563# CONFIG_GEN_RTC_X is not set
564# CONFIG_R3964 is not set
565# CONFIG_RAW_DRIVER is not set
566# CONFIG_TCG_TPM is not set
567# CONFIG_I2C is not set
568
569#
570# SPI support
571#
572# CONFIG_SPI is not set
573# CONFIG_SPI_MASTER is not set
574# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set
577# CONFIG_WATCHDOG is not set
578
579#
580# Sonics Silicon Backplane
581#
582CONFIG_SSB_POSSIBLE=y
583# CONFIG_SSB is not set
584
585#
586# Multifunction device drivers
587#
588# CONFIG_MFD_SM501 is not set
589
590#
591# Multimedia devices
592#
593# CONFIG_VIDEO_DEV is not set
594# CONFIG_DVB_CORE is not set
595CONFIG_DAB=y
596
597#
598# Graphics support
599#
600# CONFIG_VGASTATE is not set
601CONFIG_VIDEO_OUTPUT_CONTROL=y
602# CONFIG_FB is not set
603# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
604
605#
606# Display device support
607#
608# CONFIG_DISPLAY_SUPPORT is not set
609
610#
611# Sound
612#
613# CONFIG_SOUND is not set
614# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set
617# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set
620
621#
622# Userspace I/O
623#
624# CONFIG_UIO is not set
625
626#
627# File systems
628#
629# CONFIG_EXT2_FS is not set
630# CONFIG_EXT3_FS is not set
631# CONFIG_EXT4DEV_FS is not set
632# CONFIG_REISERFS_FS is not set
633# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set
646
647#
648# CD-ROM/DVD Filesystems
649#
650# CONFIG_ISO9660_FS is not set
651# CONFIG_UDF_FS is not set
652
653#
654# DOS/FAT/NT Filesystems
655#
656# CONFIG_MSDOS_FS is not set
657# CONFIG_VFAT_FS is not set
658# CONFIG_NTFS_FS is not set
659
660#
661# Pseudo filesystems
662#
663CONFIG_PROC_FS=y
664# CONFIG_PROC_KCORE is not set
665CONFIG_PROC_SYSCTL=y
666CONFIG_SYSFS=y
667CONFIG_TMPFS=y
668# CONFIG_TMPFS_POSIX_ACL is not set
669# CONFIG_HUGETLB_PAGE is not set
670# CONFIG_CONFIGFS_FS is not set
671
672#
673# Miscellaneous filesystems
674#
675# CONFIG_ADFS_FS is not set
676# CONFIG_AFFS_FS is not set
677# CONFIG_HFS_FS is not set
678# CONFIG_HFSPLUS_FS is not set
679# CONFIG_BEFS_FS is not set
680# CONFIG_BFS_FS is not set
681# CONFIG_EFS_FS is not set
682# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set
685# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set
687# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y
690CONFIG_NFS_FS=y
691CONFIG_NFS_V3=y
692# CONFIG_NFS_V3_ACL is not set
693# CONFIG_NFS_V4 is not set
694# CONFIG_NFS_DIRECTIO is not set
695# CONFIG_NFSD is not set
696CONFIG_ROOT_NFS=y
697CONFIG_LOCKD=y
698CONFIG_LOCKD_V4=y
699CONFIG_NFS_COMMON=y
700CONFIG_SUNRPC=y
701# CONFIG_SUNRPC_BIND34 is not set
702# CONFIG_RPCSEC_GSS_KRB5 is not set
703# CONFIG_RPCSEC_GSS_SPKM3 is not set
704# CONFIG_SMB_FS is not set
705# CONFIG_CIFS is not set
706# CONFIG_NCP_FS is not set
707# CONFIG_CODA_FS is not set
708# CONFIG_AFS_FS is not set
709
710#
711# Partition Types
712#
713CONFIG_PARTITION_ADVANCED=y
714# CONFIG_ACORN_PARTITION is not set
715# CONFIG_OSF_PARTITION is not set
716# CONFIG_AMIGA_PARTITION is not set
717# CONFIG_ATARI_PARTITION is not set
718# CONFIG_MAC_PARTITION is not set
719CONFIG_MSDOS_PARTITION=y
720# CONFIG_BSD_DISKLABEL is not set
721# CONFIG_MINIX_SUBPARTITION is not set
722# CONFIG_SOLARIS_X86_PARTITION is not set
723# CONFIG_UNIXWARE_DISKLABEL is not set
724# CONFIG_LDM_PARTITION is not set
725# CONFIG_SGI_PARTITION is not set
726# CONFIG_ULTRIX_PARTITION is not set
727# CONFIG_SUN_PARTITION is not set
728# CONFIG_KARMA_PARTITION is not set
729# CONFIG_EFI_PARTITION is not set
730# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set
732# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734
735#
736# Library routines
737#
738# CONFIG_CRC_CCITT is not set
739# CONFIG_CRC16 is not set
740# CONFIG_CRC_ITU_T is not set
741# CONFIG_CRC32 is not set
742# CONFIG_CRC7 is not set
743# CONFIG_LIBCRC32C is not set
744CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751
752#
753# Kernel hacking
754#
755# CONFIG_PRINTK_TIME is not set
756CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set
761# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set
764CONFIG_DETECT_SOFTLOCKUP=y
765CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set
769# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
772# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
773# CONFIG_DEBUG_KOBJECT is not set
774CONFIG_DEBUG_BUGVERBOSE=y
775CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set
781# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set
787# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set
789
790#
791# Security options
792#
793# CONFIG_KEYS is not set
794# CONFIG_SECURITY is not set
795# CONFIG_SECURITY_FILE_CAPABILITIES is not set
796# CONFIG_CRYPTO is not set
797# CONFIG_PPC_CLOCK is not set
798CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/ep8248e_defconfig b/arch/powerpc/configs/ep8248e_defconfig
new file mode 100644
index 000000000000..01ad5951ade9
--- /dev/null
+++ b/arch/powerpc/configs/ep8248e_defconfig
@@ -0,0 +1,821 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Fri Jan 11 14:02:06 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11CONFIG_6xx=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_FPU=y
18CONFIG_PPC_STD_MMU=y
19CONFIG_PPC_STD_MMU_32=y
20# CONFIG_PPC_MM_SLICES is not set
21# CONFIG_SMP is not set
22CONFIG_PPC32=y
23CONFIG_WORD_SIZE=32
24CONFIG_PPC_MERGE=y
25CONFIG_MMU=y
26CONFIG_GENERIC_CMOS_UPDATE=y
27CONFIG_GENERIC_TIME=y
28CONFIG_GENERIC_TIME_VSYSCALL=y
29CONFIG_GENERIC_CLOCKEVENTS=y
30CONFIG_GENERIC_HARDIRQS=y
31CONFIG_IRQ_PER_CPU=y
32CONFIG_RWSEM_XCHGADD_ALGORITHM=y
33CONFIG_ARCH_HAS_ILOG2_U32=y
34CONFIG_GENERIC_HWEIGHT=y
35CONFIG_GENERIC_CALIBRATE_DELAY=y
36CONFIG_GENERIC_FIND_NEXT_BIT=y
37# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
38CONFIG_PPC=y
39CONFIG_EARLY_PRINTK=y
40CONFIG_GENERIC_NVRAM=y
41CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
42CONFIG_ARCH_MAY_HAVE_PC_FDC=y
43CONFIG_PPC_OF=y
44CONFIG_OF=y
45# CONFIG_PPC_UDBG_16550 is not set
46# CONFIG_GENERIC_TBSYNC is not set
47CONFIG_AUDIT_ARCH=y
48CONFIG_GENERIC_BUG=y
49# CONFIG_DEFAULT_UIMAGE is not set
50# CONFIG_PPC_DCR_NATIVE is not set
51# CONFIG_PPC_DCR_MMIO is not set
52CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
53
54#
55# General setup
56#
57# CONFIG_EXPERIMENTAL is not set
58CONFIG_BROKEN_ON_SMP=y
59CONFIG_INIT_ENV_ARG_LIMIT=32
60CONFIG_LOCALVERSION=""
61CONFIG_LOCALVERSION_AUTO=y
62CONFIG_SWAP=y
63CONFIG_SYSVIPC=y
64CONFIG_SYSVIPC_SYSCTL=y
65# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set
67# CONFIG_AUDIT is not set
68CONFIG_IKCONFIG=y
69CONFIG_IKCONFIG_PROC=y
70CONFIG_LOG_BUF_SHIFT=14
71# CONFIG_CGROUPS is not set
72CONFIG_FAIR_GROUP_SCHED=y
73CONFIG_FAIR_USER_SCHED=y
74# CONFIG_FAIR_CGROUP_SCHED is not set
75CONFIG_SYSFS_DEPRECATED=y
76# CONFIG_RELAY is not set
77# CONFIG_BLK_DEV_INITRD is not set
78CONFIG_SYSCTL=y
79CONFIG_EMBEDDED=y
80CONFIG_SYSCTL_SYSCALL=y
81CONFIG_KALLSYMS=y
82CONFIG_KALLSYMS_ALL=y
83# CONFIG_KALLSYMS_EXTRA_PASS is not set
84CONFIG_HOTPLUG=y
85CONFIG_PRINTK=y
86CONFIG_BUG=y
87CONFIG_ELF_CORE=y
88CONFIG_BASE_FULL=y
89CONFIG_FUTEX=y
90CONFIG_ANON_INODES=y
91CONFIG_EPOLL=y
92CONFIG_SIGNALFD=y
93CONFIG_EVENTFD=y
94CONFIG_SHMEM=y
95CONFIG_VM_EVENT_COUNTERS=y
96CONFIG_SLAB=y
97# CONFIG_SLUB is not set
98# CONFIG_SLOB is not set
99CONFIG_RT_MUTEXES=y
100# CONFIG_TINY_SHMEM is not set
101CONFIG_BASE_SMALL=0
102# CONFIG_MODULES is not set
103CONFIG_BLOCK=y
104# CONFIG_LBD is not set
105# CONFIG_BLK_DEV_IO_TRACE is not set
106# CONFIG_LSF is not set
107
108#
109# IO Schedulers
110#
111CONFIG_IOSCHED_NOOP=y
112# CONFIG_IOSCHED_AS is not set
113CONFIG_IOSCHED_DEADLINE=y
114# CONFIG_IOSCHED_CFQ is not set
115# CONFIG_DEFAULT_AS is not set
116CONFIG_DEFAULT_DEADLINE=y
117# CONFIG_DEFAULT_CFQ is not set
118# CONFIG_DEFAULT_NOOP is not set
119CONFIG_DEFAULT_IOSCHED="deadline"
120
121#
122# Platform support
123#
124# CONFIG_PPC_MULTIPLATFORM is not set
125CONFIG_PPC_82xx=y
126# CONFIG_PPC_83xx is not set
127# CONFIG_PPC_86xx is not set
128# CONFIG_PPC_MPC52xx is not set
129# CONFIG_PPC_MPC5200 is not set
130# CONFIG_PPC_CELL is not set
131# CONFIG_PPC_CELL_NATIVE is not set
132# CONFIG_MPC8272_ADS is not set
133# CONFIG_PQ2FADS is not set
134CONFIG_EP8248E=y
135# CONFIG_PQ2ADS is not set
136CONFIG_8260=y
137CONFIG_8272=y
138# CONFIG_MPIC is not set
139# CONFIG_MPIC_WEIRD is not set
140# CONFIG_PPC_I8259 is not set
141# CONFIG_PPC_RTAS is not set
142# CONFIG_MMIO_NVRAM is not set
143# CONFIG_PPC_MPC106 is not set
144# CONFIG_PPC_970_NAP is not set
145# CONFIG_PPC_INDIRECT_IO is not set
146# CONFIG_GENERIC_IOMAP is not set
147# CONFIG_CPU_FREQ is not set
148CONFIG_CPM2=y
149CONFIG_PPC_CPM_NEW_BINDING=y
150# CONFIG_FSL_ULI1575 is not set
151CONFIG_CPM=y
152
153#
154# Kernel options
155#
156# CONFIG_HIGHMEM is not set
157# CONFIG_TICK_ONESHOT is not set
158# CONFIG_NO_HZ is not set
159# CONFIG_HIGH_RES_TIMERS is not set
160CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
161# CONFIG_HZ_100 is not set
162CONFIG_HZ_250=y
163# CONFIG_HZ_300 is not set
164# CONFIG_HZ_1000 is not set
165CONFIG_HZ=250
166CONFIG_PREEMPT_NONE=y
167# CONFIG_PREEMPT_VOLUNTARY is not set
168# CONFIG_PREEMPT is not set
169CONFIG_BINFMT_ELF=y
170CONFIG_BINFMT_MISC=y
171CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
172CONFIG_ARCH_FLATMEM_ENABLE=y
173CONFIG_ARCH_POPULATES_NODE_MAP=y
174CONFIG_FLATMEM=y
175CONFIG_FLAT_NODE_MEM_MAP=y
176# CONFIG_SPARSEMEM_STATIC is not set
177# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
178CONFIG_SPLIT_PTLOCK_CPUS=4
179# CONFIG_RESOURCES_64BIT is not set
180CONFIG_ZONE_DMA_FLAG=1
181CONFIG_BOUNCE=y
182CONFIG_VIRT_TO_BUS=y
183CONFIG_PROC_DEVICETREE=y
184# CONFIG_CMDLINE_BOOL is not set
185# CONFIG_PM is not set
186CONFIG_SUSPEND_UP_POSSIBLE=y
187CONFIG_HIBERNATION_UP_POSSIBLE=y
188# CONFIG_SECCOMP is not set
189CONFIG_WANT_DEVICE_TREE=y
190CONFIG_DEVICE_TREE="ep8248e.dts"
191CONFIG_ISA_DMA_API=y
192
193#
194# Bus options
195#
196CONFIG_ZONE_DMA=y
197CONFIG_FSL_SOC=y
198# CONFIG_PCI is not set
199# CONFIG_PCI_DOMAINS is not set
200# CONFIG_PCI_SYSCALL is not set
201# CONFIG_ARCH_SUPPORTS_MSI is not set
202# CONFIG_PCCARD is not set
203
204#
205# Advanced setup
206#
207# CONFIG_ADVANCED_OPTIONS is not set
208
209#
210# Default settings for advanced configuration options are used
211#
212CONFIG_HIGHMEM_START=0xfe000000
213CONFIG_LOWMEM_SIZE=0x30000000
214CONFIG_KERNEL_START=0xc0000000
215CONFIG_TASK_SIZE=0xc0000000
216CONFIG_BOOT_LOAD=0x00400000
217
218#
219# Networking
220#
221CONFIG_NET=y
222
223#
224# Networking options
225#
226CONFIG_PACKET=y
227# CONFIG_PACKET_MMAP is not set
228CONFIG_UNIX=y
229CONFIG_XFRM=y
230# CONFIG_XFRM_USER is not set
231# CONFIG_NET_KEY is not set
232CONFIG_INET=y
233CONFIG_IP_MULTICAST=y
234# CONFIG_IP_ADVANCED_ROUTER is not set
235CONFIG_IP_FIB_HASH=y
236CONFIG_IP_PNP=y
237CONFIG_IP_PNP_DHCP=y
238CONFIG_IP_PNP_BOOTP=y
239# CONFIG_IP_PNP_RARP is not set
240# CONFIG_NET_IPIP is not set
241# CONFIG_NET_IPGRE is not set
242# CONFIG_IP_MROUTE is not set
243CONFIG_SYN_COOKIES=y
244# CONFIG_INET_AH is not set
245# CONFIG_INET_ESP is not set
246# CONFIG_INET_IPCOMP is not set
247# CONFIG_INET_XFRM_TUNNEL is not set
248CONFIG_INET_TUNNEL=y
249CONFIG_INET_XFRM_MODE_TRANSPORT=y
250CONFIG_INET_XFRM_MODE_TUNNEL=y
251CONFIG_INET_XFRM_MODE_BEET=y
252# CONFIG_INET_LRO is not set
253CONFIG_INET_DIAG=y
254CONFIG_INET_TCP_DIAG=y
255# CONFIG_TCP_CONG_ADVANCED is not set
256CONFIG_TCP_CONG_CUBIC=y
257CONFIG_DEFAULT_TCP_CONG="cubic"
258# CONFIG_IP_VS is not set
259CONFIG_IPV6=y
260# CONFIG_IPV6_PRIVACY is not set
261# CONFIG_IPV6_ROUTER_PREF is not set
262# CONFIG_INET6_AH is not set
263# CONFIG_INET6_ESP is not set
264# CONFIG_INET6_IPCOMP is not set
265# CONFIG_INET6_XFRM_TUNNEL is not set
266# CONFIG_INET6_TUNNEL is not set
267CONFIG_INET6_XFRM_MODE_TRANSPORT=y
268CONFIG_INET6_XFRM_MODE_TUNNEL=y
269CONFIG_INET6_XFRM_MODE_BEET=y
270CONFIG_IPV6_SIT=y
271# CONFIG_IPV6_TUNNEL is not set
272# CONFIG_NETWORK_SECMARK is not set
273CONFIG_NETFILTER=y
274# CONFIG_NETFILTER_DEBUG is not set
275
276#
277# Core Netfilter Configuration
278#
279# CONFIG_NETFILTER_NETLINK is not set
280# CONFIG_NF_CONNTRACK_ENABLED is not set
281# CONFIG_NF_CONNTRACK is not set
282# CONFIG_NETFILTER_XTABLES is not set
283
284#
285# IP: Netfilter Configuration
286#
287# CONFIG_IP_NF_QUEUE is not set
288# CONFIG_IP_NF_IPTABLES is not set
289# CONFIG_IP_NF_ARPTABLES is not set
290# CONFIG_BRIDGE is not set
291# CONFIG_VLAN_8021Q is not set
292# CONFIG_DECNET is not set
293# CONFIG_LLC2 is not set
294# CONFIG_IPX is not set
295# CONFIG_ATALK is not set
296# CONFIG_NET_SCHED is not set
297
298#
299# Network testing
300#
301# CONFIG_NET_PKTGEN is not set
302# CONFIG_HAMRADIO is not set
303# CONFIG_IRDA is not set
304# CONFIG_BT is not set
305
306#
307# Wireless
308#
309# CONFIG_CFG80211 is not set
310# CONFIG_WIRELESS_EXT is not set
311# CONFIG_IEEE80211 is not set
312# CONFIG_RFKILL is not set
313
314#
315# Device Drivers
316#
317
318#
319# Generic Driver Options
320#
321CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
322CONFIG_STANDALONE=y
323CONFIG_PREVENT_FIRMWARE_BUILD=y
324# CONFIG_FW_LOADER is not set
325# CONFIG_DEBUG_DRIVER is not set
326# CONFIG_DEBUG_DEVRES is not set
327# CONFIG_SYS_HYPERVISOR is not set
328# CONFIG_CONNECTOR is not set
329CONFIG_MTD=y
330# CONFIG_MTD_DEBUG is not set
331# CONFIG_MTD_CONCAT is not set
332# CONFIG_MTD_PARTITIONS is not set
333
334#
335# User Modules And Translation Layers
336#
337CONFIG_MTD_CHAR=y
338CONFIG_MTD_BLKDEVS=y
339CONFIG_MTD_BLOCK=y
340# CONFIG_FTL is not set
341# CONFIG_NFTL is not set
342# CONFIG_INFTL is not set
343# CONFIG_RFD_FTL is not set
344# CONFIG_SSFDC is not set
345# CONFIG_MTD_OOPS is not set
346
347#
348# RAM/ROM/Flash chip drivers
349#
350CONFIG_MTD_CFI=y
351# CONFIG_MTD_JEDECPROBE is not set
352CONFIG_MTD_GEN_PROBE=y
353CONFIG_MTD_CFI_ADV_OPTIONS=y
354CONFIG_MTD_CFI_NOSWAP=y
355# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
356# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
357CONFIG_MTD_CFI_GEOMETRY=y
358# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
359# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
360CONFIG_MTD_MAP_BANK_WIDTH_4=y
361# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
362# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
363# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
364# CONFIG_MTD_CFI_I1 is not set
365CONFIG_MTD_CFI_I2=y
366# CONFIG_MTD_CFI_I4 is not set
367# CONFIG_MTD_CFI_I8 is not set
368# CONFIG_MTD_OTP is not set
369# CONFIG_MTD_CFI_INTELEXT is not set
370CONFIG_MTD_CFI_AMDSTD=y
371# CONFIG_MTD_CFI_STAA is not set
372CONFIG_MTD_CFI_UTIL=y
373# CONFIG_MTD_RAM is not set
374# CONFIG_MTD_ROM is not set
375# CONFIG_MTD_ABSENT is not set
376
377#
378# Mapping drivers for chip access
379#
380# CONFIG_MTD_COMPLEX_MAPPINGS is not set
381# CONFIG_MTD_PHYSMAP is not set
382CONFIG_MTD_PHYSMAP_OF=y
383# CONFIG_MTD_PLATRAM is not set
384
385#
386# Self-contained MTD device drivers
387#
388# CONFIG_MTD_SLRAM is not set
389# CONFIG_MTD_PHRAM is not set
390# CONFIG_MTD_MTDRAM is not set
391# CONFIG_MTD_BLOCK2MTD is not set
392
393#
394# Disk-On-Chip Device Drivers
395#
396# CONFIG_MTD_DOC2000 is not set
397# CONFIG_MTD_DOC2001 is not set
398# CONFIG_MTD_DOC2001PLUS is not set
399# CONFIG_MTD_NAND is not set
400# CONFIG_MTD_ONENAND is not set
401
402#
403# UBI - Unsorted block images
404#
405# CONFIG_MTD_UBI is not set
406CONFIG_OF_DEVICE=y
407# CONFIG_PARPORT is not set
408CONFIG_BLK_DEV=y
409# CONFIG_BLK_DEV_FD is not set
410# CONFIG_BLK_DEV_COW_COMMON is not set
411CONFIG_BLK_DEV_LOOP=y
412# CONFIG_BLK_DEV_CRYPTOLOOP is not set
413# CONFIG_BLK_DEV_NBD is not set
414# CONFIG_BLK_DEV_RAM is not set
415# CONFIG_CDROM_PKTCDVD is not set
416# CONFIG_ATA_OVER_ETH is not set
417# CONFIG_MISC_DEVICES is not set
418# CONFIG_IDE is not set
419
420#
421# SCSI device support
422#
423# CONFIG_RAID_ATTRS is not set
424# CONFIG_SCSI is not set
425# CONFIG_SCSI_DMA is not set
426# CONFIG_SCSI_NETLINK is not set
427# CONFIG_ATA is not set
428# CONFIG_MD is not set
429# CONFIG_MACINTOSH_DRIVERS is not set
430CONFIG_NETDEVICES=y
431# CONFIG_NETDEVICES_MULTIQUEUE is not set
432# CONFIG_DUMMY is not set
433# CONFIG_BONDING is not set
434# CONFIG_EQUALIZER is not set
435# CONFIG_TUN is not set
436# CONFIG_VETH is not set
437CONFIG_PHYLIB=y
438
439#
440# MII PHY device drivers
441#
442# CONFIG_MARVELL_PHY is not set
443CONFIG_DAVICOM_PHY=y
444# CONFIG_QSEMI_PHY is not set
445# CONFIG_LXT_PHY is not set
446# CONFIG_CICADA_PHY is not set
447# CONFIG_VITESSE_PHY is not set
448# CONFIG_SMSC_PHY is not set
449# CONFIG_BROADCOM_PHY is not set
450# CONFIG_ICPLUS_PHY is not set
451# CONFIG_FIXED_PHY is not set
452CONFIG_MDIO_BITBANG=y
453CONFIG_NET_ETHERNET=y
454CONFIG_MII=y
455# CONFIG_IBM_NEW_EMAC_ZMII is not set
456# CONFIG_IBM_NEW_EMAC_RGMII is not set
457# CONFIG_IBM_NEW_EMAC_TAH is not set
458# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
459# CONFIG_B44 is not set
460CONFIG_FS_ENET=y
461# CONFIG_FS_ENET_HAS_SCC is not set
462CONFIG_FS_ENET_HAS_FCC=y
463# CONFIG_FS_ENET_MDIO_FCC is not set
464CONFIG_NETDEV_1000=y
465CONFIG_NETDEV_10000=y
466
467#
468# Wireless LAN
469#
470# CONFIG_WLAN_PRE80211 is not set
471# CONFIG_WLAN_80211 is not set
472# CONFIG_WAN is not set
473# CONFIG_PPP is not set
474# CONFIG_SLIP is not set
475# CONFIG_NETPOLL is not set
476# CONFIG_NET_POLL_CONTROLLER is not set
477# CONFIG_ISDN is not set
478# CONFIG_PHONE is not set
479
480#
481# Input device support
482#
483# CONFIG_INPUT is not set
484
485#
486# Hardware I/O ports
487#
488# CONFIG_SERIO is not set
489# CONFIG_GAMEPORT is not set
490
491#
492# Character devices
493#
494# CONFIG_VT is not set
495# CONFIG_SERIAL_NONSTANDARD is not set
496
497#
498# Serial drivers
499#
500# CONFIG_SERIAL_8250 is not set
501
502#
503# Non-8250 serial port support
504#
505# CONFIG_SERIAL_UARTLITE is not set
506CONFIG_SERIAL_CORE=y
507CONFIG_SERIAL_CORE_CONSOLE=y
508CONFIG_SERIAL_CPM=y
509CONFIG_SERIAL_CPM_CONSOLE=y
510CONFIG_SERIAL_CPM_SCC1=y
511# CONFIG_SERIAL_CPM_SCC2 is not set
512# CONFIG_SERIAL_CPM_SCC3 is not set
513CONFIG_SERIAL_CPM_SCC4=y
514# CONFIG_SERIAL_CPM_SMC1 is not set
515# CONFIG_SERIAL_CPM_SMC2 is not set
516CONFIG_UNIX98_PTYS=y
517CONFIG_LEGACY_PTYS=y
518CONFIG_LEGACY_PTY_COUNT=256
519# CONFIG_IPMI_HANDLER is not set
520CONFIG_HW_RANDOM=y
521# CONFIG_NVRAM is not set
522# CONFIG_GEN_RTC is not set
523# CONFIG_R3964 is not set
524# CONFIG_RAW_DRIVER is not set
525# CONFIG_I2C is not set
526
527#
528# SPI support
529#
530# CONFIG_SPI is not set
531# CONFIG_SPI_MASTER is not set
532# CONFIG_W1 is not set
533# CONFIG_POWER_SUPPLY is not set
534# CONFIG_HWMON is not set
535# CONFIG_WATCHDOG is not set
536
537#
538# Sonics Silicon Backplane
539#
540CONFIG_SSB_POSSIBLE=y
541# CONFIG_SSB is not set
542
543#
544# Multifunction device drivers
545#
546# CONFIG_MFD_SM501 is not set
547
548#
549# Multimedia devices
550#
551# CONFIG_VIDEO_DEV is not set
552# CONFIG_DVB_CORE is not set
553CONFIG_DAB=y
554
555#
556# Graphics support
557#
558# CONFIG_VGASTATE is not set
559# CONFIG_VIDEO_OUTPUT_CONTROL is not set
560# CONFIG_FB is not set
561# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
562
563#
564# Display device support
565#
566# CONFIG_DISPLAY_SUPPORT is not set
567
568#
569# Sound
570#
571# CONFIG_SOUND is not set
572# CONFIG_USB_SUPPORT is not set
573# CONFIG_MMC is not set
574# CONFIG_NEW_LEDS is not set
575# CONFIG_RTC_CLASS is not set
576
577#
578# Userspace I/O
579#
580# CONFIG_UIO is not set
581
582#
583# File systems
584#
585CONFIG_EXT2_FS=y
586# CONFIG_EXT2_FS_XATTR is not set
587# CONFIG_EXT2_FS_XIP is not set
588CONFIG_EXT3_FS=y
589# CONFIG_EXT3_FS_XATTR is not set
590CONFIG_JBD=y
591# CONFIG_REISERFS_FS is not set
592# CONFIG_JFS_FS is not set
593# CONFIG_FS_POSIX_ACL is not set
594# CONFIG_XFS_FS is not set
595# CONFIG_OCFS2_FS is not set
596# CONFIG_MINIX_FS is not set
597# CONFIG_ROMFS_FS is not set
598CONFIG_INOTIFY=y
599CONFIG_INOTIFY_USER=y
600# CONFIG_QUOTA is not set
601CONFIG_DNOTIFY=y
602# CONFIG_AUTOFS_FS is not set
603CONFIG_AUTOFS4_FS=y
604# CONFIG_FUSE_FS is not set
605
606#
607# CD-ROM/DVD Filesystems
608#
609# CONFIG_ISO9660_FS is not set
610# CONFIG_UDF_FS is not set
611
612#
613# DOS/FAT/NT Filesystems
614#
615# CONFIG_MSDOS_FS is not set
616# CONFIG_VFAT_FS is not set
617# CONFIG_NTFS_FS is not set
618
619#
620# Pseudo filesystems
621#
622CONFIG_PROC_FS=y
623CONFIG_PROC_KCORE=y
624CONFIG_PROC_SYSCTL=y
625CONFIG_SYSFS=y
626CONFIG_TMPFS=y
627# CONFIG_TMPFS_POSIX_ACL is not set
628# CONFIG_HUGETLB_PAGE is not set
629
630#
631# Miscellaneous filesystems
632#
633# CONFIG_HFSPLUS_FS is not set
634# CONFIG_JFFS2_FS is not set
635CONFIG_CRAMFS=y
636# CONFIG_VXFS_FS is not set
637# CONFIG_HPFS_FS is not set
638# CONFIG_QNX4FS_FS is not set
639# CONFIG_SYSV_FS is not set
640# CONFIG_UFS_FS is not set
641CONFIG_NETWORK_FILESYSTEMS=y
642CONFIG_NFS_FS=y
643CONFIG_NFS_V3=y
644# CONFIG_NFS_V3_ACL is not set
645# CONFIG_NFS_DIRECTIO is not set
646# CONFIG_NFSD is not set
647CONFIG_ROOT_NFS=y
648CONFIG_LOCKD=y
649CONFIG_LOCKD_V4=y
650CONFIG_NFS_COMMON=y
651CONFIG_SUNRPC=y
652# CONFIG_SMB_FS is not set
653# CONFIG_CIFS is not set
654# CONFIG_NCP_FS is not set
655# CONFIG_CODA_FS is not set
656
657#
658# Partition Types
659#
660CONFIG_PARTITION_ADVANCED=y
661# CONFIG_ACORN_PARTITION is not set
662# CONFIG_OSF_PARTITION is not set
663# CONFIG_AMIGA_PARTITION is not set
664# CONFIG_ATARI_PARTITION is not set
665# CONFIG_MAC_PARTITION is not set
666CONFIG_MSDOS_PARTITION=y
667# CONFIG_BSD_DISKLABEL is not set
668# CONFIG_MINIX_SUBPARTITION is not set
669# CONFIG_SOLARIS_X86_PARTITION is not set
670# CONFIG_UNIXWARE_DISKLABEL is not set
671# CONFIG_LDM_PARTITION is not set
672# CONFIG_SGI_PARTITION is not set
673# CONFIG_ULTRIX_PARTITION is not set
674# CONFIG_SUN_PARTITION is not set
675# CONFIG_KARMA_PARTITION is not set
676# CONFIG_EFI_PARTITION is not set
677# CONFIG_SYSV68_PARTITION is not set
678CONFIG_NLS=y
679CONFIG_NLS_DEFAULT="iso8859-1"
680CONFIG_NLS_CODEPAGE_437=y
681# CONFIG_NLS_CODEPAGE_737 is not set
682# CONFIG_NLS_CODEPAGE_775 is not set
683# CONFIG_NLS_CODEPAGE_850 is not set
684# CONFIG_NLS_CODEPAGE_852 is not set
685# CONFIG_NLS_CODEPAGE_855 is not set
686# CONFIG_NLS_CODEPAGE_857 is not set
687# CONFIG_NLS_CODEPAGE_860 is not set
688# CONFIG_NLS_CODEPAGE_861 is not set
689# CONFIG_NLS_CODEPAGE_862 is not set
690# CONFIG_NLS_CODEPAGE_863 is not set
691# CONFIG_NLS_CODEPAGE_864 is not set
692# CONFIG_NLS_CODEPAGE_865 is not set
693# CONFIG_NLS_CODEPAGE_866 is not set
694# CONFIG_NLS_CODEPAGE_869 is not set
695# CONFIG_NLS_CODEPAGE_936 is not set
696# CONFIG_NLS_CODEPAGE_950 is not set
697# CONFIG_NLS_CODEPAGE_932 is not set
698# CONFIG_NLS_CODEPAGE_949 is not set
699# CONFIG_NLS_CODEPAGE_874 is not set
700# CONFIG_NLS_ISO8859_8 is not set
701# CONFIG_NLS_CODEPAGE_1250 is not set
702# CONFIG_NLS_CODEPAGE_1251 is not set
703CONFIG_NLS_ASCII=y
704CONFIG_NLS_ISO8859_1=y
705# CONFIG_NLS_ISO8859_2 is not set
706# CONFIG_NLS_ISO8859_3 is not set
707# CONFIG_NLS_ISO8859_4 is not set
708# CONFIG_NLS_ISO8859_5 is not set
709# CONFIG_NLS_ISO8859_6 is not set
710# CONFIG_NLS_ISO8859_7 is not set
711# CONFIG_NLS_ISO8859_9 is not set
712# CONFIG_NLS_ISO8859_13 is not set
713# CONFIG_NLS_ISO8859_14 is not set
714# CONFIG_NLS_ISO8859_15 is not set
715# CONFIG_NLS_KOI8_R is not set
716# CONFIG_NLS_KOI8_U is not set
717CONFIG_NLS_UTF8=y
718# CONFIG_UCC_SLOW is not set
719
720#
721# Library routines
722#
723# CONFIG_CRC_CCITT is not set
724# CONFIG_CRC16 is not set
725# CONFIG_CRC_ITU_T is not set
726# CONFIG_CRC32 is not set
727# CONFIG_CRC7 is not set
728# CONFIG_LIBCRC32C is not set
729CONFIG_ZLIB_INFLATE=y
730CONFIG_PLIST=y
731CONFIG_HAS_IOMEM=y
732CONFIG_HAS_IOPORT=y
733CONFIG_HAS_DMA=y
734CONFIG_INSTRUMENTATION=y
735# CONFIG_PROFILING is not set
736# CONFIG_MARKERS is not set
737
738#
739# Kernel hacking
740#
741# CONFIG_PRINTK_TIME is not set
742CONFIG_ENABLE_WARN_DEPRECATED=y
743CONFIG_ENABLE_MUST_CHECK=y
744CONFIG_MAGIC_SYSRQ=y
745# CONFIG_UNUSED_SYMBOLS is not set
746# CONFIG_DEBUG_FS is not set
747# CONFIG_HEADERS_CHECK is not set
748CONFIG_DEBUG_KERNEL=y
749# CONFIG_DEBUG_SHIRQ is not set
750# CONFIG_DETECT_SOFTLOCKUP is not set
751# CONFIG_SCHED_DEBUG is not set
752# CONFIG_SCHEDSTATS is not set
753# CONFIG_TIMER_STATS is not set
754# CONFIG_DEBUG_SLAB is not set
755# CONFIG_DEBUG_RT_MUTEXES is not set
756# CONFIG_RT_MUTEX_TESTER is not set
757# CONFIG_DEBUG_SPINLOCK is not set
758# CONFIG_DEBUG_MUTEXES is not set
759# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
760# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
761# CONFIG_DEBUG_KOBJECT is not set
762CONFIG_DEBUG_BUGVERBOSE=y
763CONFIG_DEBUG_INFO=y
764# CONFIG_DEBUG_VM is not set
765# CONFIG_DEBUG_LIST is not set
766# CONFIG_DEBUG_SG is not set
767CONFIG_FORCED_INLINING=y
768# CONFIG_BOOT_PRINTK_DELAY is not set
769# CONFIG_FAULT_INJECTION is not set
770# CONFIG_SAMPLES is not set
771# CONFIG_DEBUG_STACKOVERFLOW is not set
772# CONFIG_DEBUG_STACK_USAGE is not set
773# CONFIG_DEBUG_PAGEALLOC is not set
774# CONFIG_DEBUGGER is not set
775# CONFIG_KGDB_CONSOLE is not set
776CONFIG_BDI_SWITCH=y
777# CONFIG_PPC_EARLY_DEBUG is not set
778
779#
780# Security options
781#
782# CONFIG_KEYS is not set
783# CONFIG_SECURITY is not set
784CONFIG_CRYPTO=y
785CONFIG_CRYPTO_ALGAPI=y
786CONFIG_CRYPTO_BLKCIPHER=y
787CONFIG_CRYPTO_MANAGER=y
788# CONFIG_CRYPTO_HMAC is not set
789# CONFIG_CRYPTO_NULL is not set
790# CONFIG_CRYPTO_MD4 is not set
791CONFIG_CRYPTO_MD5=y
792# CONFIG_CRYPTO_SHA1 is not set
793# CONFIG_CRYPTO_SHA256 is not set
794# CONFIG_CRYPTO_SHA512 is not set
795# CONFIG_CRYPTO_WP512 is not set
796# CONFIG_CRYPTO_TGR192 is not set
797CONFIG_CRYPTO_ECB=y
798CONFIG_CRYPTO_CBC=y
799CONFIG_CRYPTO_PCBC=y
800# CONFIG_CRYPTO_CRYPTD is not set
801CONFIG_CRYPTO_DES=y
802# CONFIG_CRYPTO_FCRYPT is not set
803# CONFIG_CRYPTO_BLOWFISH is not set
804# CONFIG_CRYPTO_TWOFISH is not set
805# CONFIG_CRYPTO_SERPENT is not set
806# CONFIG_CRYPTO_AES is not set
807# CONFIG_CRYPTO_CAST5 is not set
808# CONFIG_CRYPTO_CAST6 is not set
809# CONFIG_CRYPTO_TEA is not set
810# CONFIG_CRYPTO_ARC4 is not set
811# CONFIG_CRYPTO_KHAZAD is not set
812# CONFIG_CRYPTO_ANUBIS is not set
813# CONFIG_CRYPTO_SEED is not set
814# CONFIG_CRYPTO_DEFLATE is not set
815# CONFIG_CRYPTO_MICHAEL_MIC is not set
816# CONFIG_CRYPTO_CRC32C is not set
817# CONFIG_CRYPTO_CAMELLIA is not set
818# CONFIG_CRYPTO_AUTHENC is not set
819# CONFIG_CRYPTO_HW is not set
820# CONFIG_PPC_CLOCK is not set
821CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/mpc8313_rdb_defconfig b/arch/powerpc/configs/mpc8313_rdb_defconfig
index c9af905bbb1d..db08e736c0ac 100644
--- a/arch/powerpc/configs/mpc8313_rdb_defconfig
+++ b/arch/powerpc/configs/mpc8313_rdb_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc4 3# Linux kernel version: 2.6.24-rc6
4# Thu Dec 6 16:48:31 2007 4# Thu Jan 17 16:35:55 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -144,6 +144,7 @@ CONFIG_MPC8313_RDB=y
144# CONFIG_MPC834x_MDS is not set 144# CONFIG_MPC834x_MDS is not set
145# CONFIG_MPC834x_ITX is not set 145# CONFIG_MPC834x_ITX is not set
146# CONFIG_MPC836x_MDS is not set 146# CONFIG_MPC836x_MDS is not set
147# CONFIG_MPC837x_MDS is not set
147CONFIG_PPC_MPC831x=y 148CONFIG_PPC_MPC831x=y
148# CONFIG_MPIC is not set 149# CONFIG_MPIC is not set
149# CONFIG_MPIC_WEIRD is not set 150# CONFIG_MPIC_WEIRD is not set
@@ -336,15 +337,16 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
336CONFIG_MTD=y 337CONFIG_MTD=y
337# CONFIG_MTD_DEBUG is not set 338# CONFIG_MTD_DEBUG is not set
338# CONFIG_MTD_CONCAT is not set 339# CONFIG_MTD_CONCAT is not set
339# CONFIG_MTD_PARTITIONS is not set 340CONFIG_MTD_PARTITIONS=y
341# CONFIG_MTD_REDBOOT_PARTS is not set
342# CONFIG_MTD_CMDLINE_PARTS is not set
340 343
341# 344#
342# User Modules And Translation Layers 345# User Modules And Translation Layers
343# 346#
344CONFIG_MTD_CHAR=y 347CONFIG_MTD_CHAR=y
345# CONFIG_MTD_BLKDEVS is not set 348CONFIG_MTD_BLKDEVS=y
346# CONFIG_MTD_BLOCK is not set 349CONFIG_MTD_BLOCK=y
347# CONFIG_MTD_BLOCK_RO is not set
348# CONFIG_FTL is not set 350# CONFIG_FTL is not set
349# CONFIG_NFTL is not set 351# CONFIG_NFTL is not set
350# CONFIG_INFTL is not set 352# CONFIG_INFTL is not set
@@ -381,11 +383,8 @@ CONFIG_MTD_CFI_UTIL=y
381# Mapping drivers for chip access 383# Mapping drivers for chip access
382# 384#
383# CONFIG_MTD_COMPLEX_MAPPINGS is not set 385# CONFIG_MTD_COMPLEX_MAPPINGS is not set
384CONFIG_MTD_PHYSMAP=y 386# CONFIG_MTD_PHYSMAP is not set
385CONFIG_MTD_PHYSMAP_START=0xfe000000 387CONFIG_MTD_PHYSMAP_OF=y
386CONFIG_MTD_PHYSMAP_LEN=0x1000000
387CONFIG_MTD_PHYSMAP_BANKWIDTH=2
388# CONFIG_MTD_PHYSMAP_OF is not set
389# CONFIG_MTD_INTEL_VR_NOR is not set 388# CONFIG_MTD_INTEL_VR_NOR is not set
390# CONFIG_MTD_PLATRAM is not set 389# CONFIG_MTD_PLATRAM is not set
391 390
@@ -406,7 +405,16 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
406# CONFIG_MTD_DOC2000 is not set 405# CONFIG_MTD_DOC2000 is not set
407# CONFIG_MTD_DOC2001 is not set 406# CONFIG_MTD_DOC2001 is not set
408# CONFIG_MTD_DOC2001PLUS is not set 407# CONFIG_MTD_DOC2001PLUS is not set
409# CONFIG_MTD_NAND is not set 408CONFIG_MTD_NAND=y
409CONFIG_MTD_NAND_VERIFY_WRITE=y
410# CONFIG_MTD_NAND_ECC_SMC is not set
411# CONFIG_MTD_NAND_MUSEUM_IDS is not set
412CONFIG_MTD_NAND_IDS=y
413# CONFIG_MTD_NAND_DISKONCHIP is not set
414# CONFIG_MTD_NAND_CAFE is not set
415# CONFIG_MTD_NAND_NANDSIM is not set
416# CONFIG_MTD_NAND_PLATFORM is not set
417# CONFIG_MTD_ALAUDA is not set
410# CONFIG_MTD_ONENAND is not set 418# CONFIG_MTD_ONENAND is not set
411 419
412# 420#
@@ -1178,7 +1186,17 @@ CONFIG_TMPFS=y
1178# CONFIG_BEFS_FS is not set 1186# CONFIG_BEFS_FS is not set
1179# CONFIG_BFS_FS is not set 1187# CONFIG_BFS_FS is not set
1180# CONFIG_EFS_FS is not set 1188# CONFIG_EFS_FS is not set
1181# CONFIG_JFFS2_FS is not set 1189CONFIG_JFFS2_FS=y
1190CONFIG_JFFS2_FS_DEBUG=0
1191CONFIG_JFFS2_FS_WRITEBUFFER=y
1192# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1193# CONFIG_JFFS2_SUMMARY is not set
1194# CONFIG_JFFS2_FS_XATTR is not set
1195# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1196CONFIG_JFFS2_ZLIB=y
1197# CONFIG_JFFS2_LZO is not set
1198CONFIG_JFFS2_RTIME=y
1199# CONFIG_JFFS2_RUBIN is not set
1182# CONFIG_CRAMFS is not set 1200# CONFIG_CRAMFS is not set
1183# CONFIG_VXFS_FS is not set 1201# CONFIG_VXFS_FS is not set
1184# CONFIG_HPFS_FS is not set 1202# CONFIG_HPFS_FS is not set
@@ -1242,6 +1260,8 @@ CONFIG_BITREVERSE=y
1242CONFIG_CRC32=y 1260CONFIG_CRC32=y
1243# CONFIG_CRC7 is not set 1261# CONFIG_CRC7 is not set
1244# CONFIG_LIBCRC32C is not set 1262# CONFIG_LIBCRC32C is not set
1263CONFIG_ZLIB_INFLATE=y
1264CONFIG_ZLIB_DEFLATE=y
1245CONFIG_PLIST=y 1265CONFIG_PLIST=y
1246CONFIG_HAS_IOMEM=y 1266CONFIG_HAS_IOMEM=y
1247CONFIG_HAS_IOPORT=y 1267CONFIG_HAS_IOPORT=y
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig
index 6feb86e2b786..2fbe4e5344f7 100644
--- a/arch/powerpc/configs/mpc834x_itx_defconfig
+++ b/arch/powerpc/configs/mpc834x_itx_defconfig
@@ -570,7 +570,8 @@ CONFIG_SATA_SIL=y
570# CONFIG_PATA_SIS is not set 570# CONFIG_PATA_SIS is not set
571# CONFIG_PATA_VIA is not set 571# CONFIG_PATA_VIA is not set
572# CONFIG_PATA_WINBOND is not set 572# CONFIG_PATA_WINBOND is not set
573# CONFIG_PATA_PLATFORM is not set 573CONFIG_PATA_PLATFORM=y
574CONFIG_PATA_OF_PLATFORM=y
574CONFIG_MD=y 575CONFIG_MD=y
575CONFIG_BLK_DEV_MD=y 576CONFIG_BLK_DEV_MD=y
576CONFIG_MD_LINEAR=y 577CONFIG_MD_LINEAR=y
diff --git a/arch/powerpc/configs/mpc8610_hpcd_defconfig b/arch/powerpc/configs/mpc8610_hpcd_defconfig
index 9614d24f832a..2500ef42959d 100644
--- a/arch/powerpc/configs/mpc8610_hpcd_defconfig
+++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig
@@ -696,7 +696,7 @@ CONFIG_SERIAL_8250_RSA=y
696CONFIG_SERIAL_CORE=y 696CONFIG_SERIAL_CORE=y
697CONFIG_SERIAL_CORE_CONSOLE=y 697CONFIG_SERIAL_CORE_CONSOLE=y
698# CONFIG_SERIAL_JSM is not set 698# CONFIG_SERIAL_JSM is not set
699CONFIG_SERIAL_OF_PLATFORM=y 699# CONFIG_SERIAL_OF_PLATFORM is not set
700CONFIG_UNIX98_PTYS=y 700CONFIG_UNIX98_PTYS=y
701# CONFIG_LEGACY_PTYS is not set 701# CONFIG_LEGACY_PTYS is not set
702# CONFIG_IPMI_HANDLER is not set 702# CONFIG_IPMI_HANDLER is not set
@@ -708,7 +708,60 @@ CONFIG_UNIX98_PTYS=y
708# CONFIG_RAW_DRIVER is not set 708# CONFIG_RAW_DRIVER is not set
709# CONFIG_TCG_TPM is not set 709# CONFIG_TCG_TPM is not set
710CONFIG_DEVPORT=y 710CONFIG_DEVPORT=y
711# CONFIG_I2C is not set 711CONFIG_I2C=y
712CONFIG_I2C_BOARDINFO=y
713# CONFIG_I2C_CHARDEV is not set
714
715#
716# I2C Algorithms
717#
718# CONFIG_I2C_ALGOBIT is not set
719# CONFIG_I2C_ALGOPCF is not set
720# CONFIG_I2C_ALGOPCA is not set
721
722#
723# I2C Hardware Bus support
724#
725# CONFIG_I2C_ALI1535 is not set
726# CONFIG_I2C_ALI1563 is not set
727# CONFIG_I2C_ALI15X3 is not set
728# CONFIG_I2C_AMD756 is not set
729# CONFIG_I2C_AMD8111 is not set
730# CONFIG_I2C_I801 is not set
731# CONFIG_I2C_I810 is not set
732# CONFIG_I2C_PIIX4 is not set
733CONFIG_I2C_MPC=y
734# CONFIG_I2C_NFORCE2 is not set
735# CONFIG_I2C_OCORES is not set
736# CONFIG_I2C_PARPORT_LIGHT is not set
737# CONFIG_I2C_PROSAVAGE is not set
738# CONFIG_I2C_SAVAGE4 is not set
739# CONFIG_I2C_SIMTEC is not set
740# CONFIG_I2C_SIS5595 is not set
741# CONFIG_I2C_SIS630 is not set
742# CONFIG_I2C_SIS96X is not set
743# CONFIG_I2C_TAOS_EVM is not set
744# CONFIG_I2C_VIA is not set
745# CONFIG_I2C_VIAPRO is not set
746# CONFIG_I2C_VOODOO3 is not set
747
748#
749# Miscellaneous I2C Chip support
750#
751# CONFIG_SENSORS_DS1337 is not set
752# CONFIG_SENSORS_DS1374 is not set
753# CONFIG_DS1682 is not set
754# CONFIG_SENSORS_EEPROM is not set
755# CONFIG_SENSORS_PCF8574 is not set
756# CONFIG_SENSORS_PCA9539 is not set
757# CONFIG_SENSORS_PCF8591 is not set
758# CONFIG_SENSORS_M41T00 is not set
759# CONFIG_SENSORS_MAX6875 is not set
760# CONFIG_SENSORS_TSL2550 is not set
761# CONFIG_I2C_DEBUG_CORE is not set
762# CONFIG_I2C_DEBUG_ALGO is not set
763# CONFIG_I2C_DEBUG_BUS is not set
764# CONFIG_I2C_DEBUG_CHIP is not set
712 765
713# 766#
714# SPI support 767# SPI support
@@ -763,7 +816,119 @@ CONFIG_DUMMY_CONSOLE=y
763# 816#
764# Sound 817# Sound
765# 818#
766# CONFIG_SOUND is not set 819CONFIG_SOUND=y
820
821#
822# Advanced Linux Sound Architecture
823#
824CONFIG_SND=y
825CONFIG_SND_TIMER=y
826CONFIG_SND_PCM=y
827# CONFIG_SND_SEQUENCER is not set
828CONFIG_SND_OSSEMUL=y
829CONFIG_SND_MIXER_OSS=y
830CONFIG_SND_PCM_OSS=y
831# CONFIG_SND_PCM_OSS_PLUGINS is not set
832# CONFIG_SND_DYNAMIC_MINORS is not set
833# CONFIG_SND_SUPPORT_OLD_API is not set
834CONFIG_SND_VERBOSE_PROCFS=y
835# CONFIG_SND_VERBOSE_PRINTK is not set
836# CONFIG_SND_DEBUG is not set
837
838#
839# Generic devices
840#
841# CONFIG_SND_DUMMY is not set
842# CONFIG_SND_MTPAV is not set
843# CONFIG_SND_SERIAL_U16550 is not set
844# CONFIG_SND_MPU401 is not set
845
846#
847# PCI devices
848#
849# CONFIG_SND_AD1889 is not set
850# CONFIG_SND_ALS300 is not set
851# CONFIG_SND_ALS4000 is not set
852# CONFIG_SND_ALI5451 is not set
853# CONFIG_SND_ATIIXP is not set
854# CONFIG_SND_ATIIXP_MODEM is not set
855# CONFIG_SND_AU8810 is not set
856# CONFIG_SND_AU8820 is not set
857# CONFIG_SND_AU8830 is not set
858# CONFIG_SND_AZT3328 is not set
859# CONFIG_SND_BT87X is not set
860# CONFIG_SND_CA0106 is not set
861# CONFIG_SND_CMIPCI is not set
862# CONFIG_SND_CS4281 is not set
863# CONFIG_SND_CS46XX is not set
864# CONFIG_SND_CS5530 is not set
865# CONFIG_SND_DARLA20 is not set
866# CONFIG_SND_GINA20 is not set
867# CONFIG_SND_LAYLA20 is not set
868# CONFIG_SND_DARLA24 is not set
869# CONFIG_SND_GINA24 is not set
870# CONFIG_SND_LAYLA24 is not set
871# CONFIG_SND_MONA is not set
872# CONFIG_SND_MIA is not set
873# CONFIG_SND_ECHO3G is not set
874# CONFIG_SND_INDIGO is not set
875# CONFIG_SND_INDIGOIO is not set
876# CONFIG_SND_INDIGODJ is not set
877# CONFIG_SND_EMU10K1 is not set
878# CONFIG_SND_EMU10K1X is not set
879# CONFIG_SND_ENS1370 is not set
880# CONFIG_SND_ENS1371 is not set
881# CONFIG_SND_ES1938 is not set
882# CONFIG_SND_ES1968 is not set
883# CONFIG_SND_FM801 is not set
884# CONFIG_SND_HDA_INTEL is not set
885# CONFIG_SND_HDSP is not set
886# CONFIG_SND_HDSPM is not set
887# CONFIG_SND_ICE1712 is not set
888# CONFIG_SND_ICE1724 is not set
889# CONFIG_SND_INTEL8X0 is not set
890# CONFIG_SND_INTEL8X0M is not set
891# CONFIG_SND_KORG1212 is not set
892# CONFIG_SND_MAESTRO3 is not set
893# CONFIG_SND_MIXART is not set
894# CONFIG_SND_NM256 is not set
895# CONFIG_SND_PCXHR is not set
896# CONFIG_SND_RIPTIDE is not set
897# CONFIG_SND_RME32 is not set
898# CONFIG_SND_RME96 is not set
899# CONFIG_SND_RME9652 is not set
900# CONFIG_SND_SONICVIBES is not set
901# CONFIG_SND_TRIDENT is not set
902# CONFIG_SND_VIA82XX is not set
903# CONFIG_SND_VIA82XX_MODEM is not set
904# CONFIG_SND_VX222 is not set
905# CONFIG_SND_YMFPCI is not set
906
907#
908# ALSA PowerMac devices
909#
910
911#
912# ALSA PowerPC devices
913#
914
915#
916# System on Chip audio support
917#
918CONFIG_SND_SOC=y
919
920#
921# SoC Audio support for SuperH
922#
923
924#
925# ALSA SoC audio for Freescale SOCs
926#
927CONFIG_SND_SOC_MPC8610=y
928CONFIG_SND_SOC_MPC8610_HPCD=y
929CONFIG_SND_SOC_CS4270=y
930CONFIG_SND_SOC_CS4270_VD33_ERRATA=y
931
767CONFIG_HID_SUPPORT=y 932CONFIG_HID_SUPPORT=y
768CONFIG_HID=y 933CONFIG_HID=y
769# CONFIG_HID_DEBUG is not set 934# CONFIG_HID_DEBUG is not set
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig
new file mode 100644
index 000000000000..a034a5e452ef
--- /dev/null
+++ b/arch/powerpc/configs/storcenter_defconfig
@@ -0,0 +1,1174 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Tue Jan 8 09:33:54 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11CONFIG_6xx=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_FPU=y
18# CONFIG_ALTIVEC is not set
19CONFIG_PPC_STD_MMU=y
20CONFIG_PPC_STD_MMU_32=y
21# CONFIG_PPC_MM_SLICES is not set
22# CONFIG_SMP is not set
23CONFIG_PPC32=y
24CONFIG_WORD_SIZE=32
25CONFIG_PPC_MERGE=y
26CONFIG_MMU=y
27CONFIG_GENERIC_CMOS_UPDATE=y
28CONFIG_GENERIC_TIME=y
29CONFIG_GENERIC_TIME_VSYSCALL=y
30CONFIG_GENERIC_CLOCKEVENTS=y
31CONFIG_GENERIC_HARDIRQS=y
32CONFIG_IRQ_PER_CPU=y
33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
34CONFIG_ARCH_HAS_ILOG2_U32=y
35CONFIG_GENERIC_HWEIGHT=y
36CONFIG_GENERIC_CALIBRATE_DELAY=y
37CONFIG_GENERIC_FIND_NEXT_BIT=y
38# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
39CONFIG_PPC=y
40CONFIG_EARLY_PRINTK=y
41CONFIG_GENERIC_NVRAM=y
42CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
43CONFIG_ARCH_MAY_HAVE_PC_FDC=y
44CONFIG_PPC_OF=y
45CONFIG_OF=y
46CONFIG_PPC_UDBG_16550=y
47# CONFIG_GENERIC_TBSYNC is not set
48CONFIG_AUDIT_ARCH=y
49CONFIG_GENERIC_BUG=y
50# CONFIG_DEFAULT_UIMAGE is not set
51# CONFIG_PPC_DCR_NATIVE is not set
52# CONFIG_PPC_DCR_MMIO is not set
53CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
54
55#
56# General setup
57#
58CONFIG_EXPERIMENTAL=y
59CONFIG_BROKEN_ON_SMP=y
60CONFIG_INIT_ENV_ARG_LIMIT=32
61CONFIG_LOCALVERSION=""
62CONFIG_LOCALVERSION_AUTO=y
63CONFIG_SWAP=y
64CONFIG_SYSVIPC=y
65CONFIG_SYSVIPC_SYSCTL=y
66# CONFIG_POSIX_MQUEUE is not set
67# CONFIG_BSD_PROCESS_ACCT is not set
68# CONFIG_TASKSTATS is not set
69# CONFIG_USER_NS is not set
70# CONFIG_PID_NS is not set
71# CONFIG_AUDIT is not set
72# CONFIG_IKCONFIG is not set
73CONFIG_LOG_BUF_SHIFT=14
74# CONFIG_CGROUPS is not set
75CONFIG_FAIR_GROUP_SCHED=y
76CONFIG_FAIR_USER_SCHED=y
77# CONFIG_FAIR_CGROUP_SCHED is not set
78CONFIG_SYSFS_DEPRECATED=y
79# CONFIG_RELAY is not set
80# CONFIG_BLK_DEV_INITRD is not set
81CONFIG_CC_OPTIMIZE_FOR_SIZE=y
82CONFIG_SYSCTL=y
83CONFIG_EMBEDDED=y
84CONFIG_SYSCTL_SYSCALL=y
85# CONFIG_KALLSYMS is not set
86CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y
88CONFIG_BUG=y
89CONFIG_ELF_CORE=y
90CONFIG_BASE_FULL=y
91CONFIG_FUTEX=y
92CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_EVENTFD=y
96CONFIG_SHMEM=y
97CONFIG_VM_EVENT_COUNTERS=y
98CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set
100CONFIG_SLUB=y
101# CONFIG_SLOB is not set
102CONFIG_RT_MUTEXES=y
103# CONFIG_TINY_SHMEM is not set
104CONFIG_BASE_SMALL=0
105CONFIG_MODULES=y
106CONFIG_MODULE_UNLOAD=y
107# CONFIG_MODULE_FORCE_UNLOAD is not set
108# CONFIG_MODVERSIONS is not set
109# CONFIG_MODULE_SRCVERSION_ALL is not set
110CONFIG_KMOD=y
111CONFIG_BLOCK=y
112CONFIG_LBD=y
113# CONFIG_BLK_DEV_IO_TRACE is not set
114# CONFIG_LSF is not set
115# CONFIG_BLK_DEV_BSG is not set
116
117#
118# IO Schedulers
119#
120CONFIG_IOSCHED_NOOP=y
121CONFIG_IOSCHED_AS=y
122CONFIG_IOSCHED_DEADLINE=y
123CONFIG_IOSCHED_CFQ=y
124# CONFIG_DEFAULT_AS is not set
125# CONFIG_DEFAULT_DEADLINE is not set
126CONFIG_DEFAULT_CFQ=y
127# CONFIG_DEFAULT_NOOP is not set
128CONFIG_DEFAULT_IOSCHED="cfq"
129
130#
131# Platform support
132#
133CONFIG_PPC_MULTIPLATFORM=y
134# CONFIG_PPC_82xx is not set
135# CONFIG_PPC_83xx is not set
136# CONFIG_PPC_86xx is not set
137CONFIG_CLASSIC32=y
138# CONFIG_PPC_CHRP is not set
139# CONFIG_PPC_MPC52xx is not set
140# CONFIG_PPC_MPC5200 is not set
141# CONFIG_PPC_EFIKA is not set
142# CONFIG_PPC_LITE5200 is not set
143# CONFIG_PPC_PMAC is not set
144# CONFIG_PPC_CELL is not set
145# CONFIG_PPC_CELL_NATIVE is not set
146# CONFIG_PQ2ADS is not set
147CONFIG_EMBEDDED6xx=y
148# CONFIG_LINKSTATION is not set
149CONFIG_STORCENTER=y
150# CONFIG_MPC7448HPC2 is not set
151# CONFIG_PPC_HOLLY is not set
152# CONFIG_PPC_PRPMC2800 is not set
153CONFIG_MPC10X_BRIDGE=y
154CONFIG_MPC10X_OPENPIC=y
155# CONFIG_MPC10X_STORE_GATHERING is not set
156CONFIG_MPIC=y
157# CONFIG_MPIC_WEIRD is not set
158# CONFIG_PPC_I8259 is not set
159# CONFIG_PPC_RTAS is not set
160# CONFIG_MMIO_NVRAM is not set
161# CONFIG_PPC_MPC106 is not set
162# CONFIG_PPC_970_NAP is not set
163# CONFIG_PPC_INDIRECT_IO is not set
164# CONFIG_GENERIC_IOMAP is not set
165# CONFIG_CPU_FREQ is not set
166# CONFIG_TAU is not set
167# CONFIG_CPM2 is not set
168# CONFIG_FSL_ULI1575 is not set
169
170#
171# Kernel options
172#
173# CONFIG_HIGHMEM is not set
174# CONFIG_TICK_ONESHOT is not set
175# CONFIG_NO_HZ is not set
176# CONFIG_HIGH_RES_TIMERS is not set
177CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
178CONFIG_HZ_100=y
179# CONFIG_HZ_250 is not set
180# CONFIG_HZ_300 is not set
181# CONFIG_HZ_1000 is not set
182CONFIG_HZ=100
183CONFIG_PREEMPT_NONE=y
184# CONFIG_PREEMPT_VOLUNTARY is not set
185# CONFIG_PREEMPT is not set
186CONFIG_BINFMT_ELF=y
187CONFIG_BINFMT_MISC=y
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
189# CONFIG_KEXEC is not set
190CONFIG_ARCH_FLATMEM_ENABLE=y
191CONFIG_ARCH_POPULATES_NODE_MAP=y
192CONFIG_SELECT_MEMORY_MODEL=y
193CONFIG_FLATMEM_MANUAL=y
194# CONFIG_DISCONTIGMEM_MANUAL is not set
195# CONFIG_SPARSEMEM_MANUAL is not set
196CONFIG_FLATMEM=y
197CONFIG_FLAT_NODE_MEM_MAP=y
198# CONFIG_SPARSEMEM_STATIC is not set
199# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
200CONFIG_SPLIT_PTLOCK_CPUS=4
201# CONFIG_RESOURCES_64BIT is not set
202CONFIG_ZONE_DMA_FLAG=1
203CONFIG_BOUNCE=y
204CONFIG_VIRT_TO_BUS=y
205CONFIG_PROC_DEVICETREE=y
206CONFIG_CMDLINE_BOOL=y
207CONFIG_CMDLINE="console=ttyS0,115200"
208# CONFIG_PM is not set
209CONFIG_SUSPEND_UP_POSSIBLE=y
210CONFIG_HIBERNATION_UP_POSSIBLE=y
211# CONFIG_SECCOMP is not set
212CONFIG_WANT_DEVICE_TREE=y
213CONFIG_DEVICE_TREE="storcenter.dts"
214CONFIG_ISA_DMA_API=y
215
216#
217# Bus options
218#
219CONFIG_ZONE_DMA=y
220CONFIG_GENERIC_ISA_DMA=y
221CONFIG_PPC_INDIRECT_PCI=y
222CONFIG_FSL_SOC=y
223CONFIG_PCI=y
224CONFIG_PCI_DOMAINS=y
225CONFIG_PCI_SYSCALL=y
226# CONFIG_PCIEPORTBUS is not set
227CONFIG_ARCH_SUPPORTS_MSI=y
228# CONFIG_PCI_MSI is not set
229CONFIG_PCI_LEGACY=y
230# CONFIG_PCCARD is not set
231# CONFIG_HOTPLUG_PCI is not set
232
233#
234# Advanced setup
235#
236# CONFIG_ADVANCED_OPTIONS is not set
237
238#
239# Default settings for advanced configuration options are used
240#
241CONFIG_HIGHMEM_START=0xfe000000
242CONFIG_LOWMEM_SIZE=0x30000000
243CONFIG_KERNEL_START=0xc0000000
244CONFIG_TASK_SIZE=0xc0000000
245CONFIG_BOOT_LOAD=0x00800000
246
247#
248# Networking
249#
250CONFIG_NET=y
251
252#
253# Networking options
254#
255CONFIG_PACKET=m
256# CONFIG_PACKET_MMAP is not set
257CONFIG_UNIX=y
258# CONFIG_NET_KEY is not set
259CONFIG_INET=y
260CONFIG_IP_MULTICAST=y
261# CONFIG_IP_ADVANCED_ROUTER is not set
262CONFIG_IP_FIB_HASH=y
263CONFIG_IP_PNP=y
264CONFIG_IP_PNP_DHCP=y
265# CONFIG_IP_PNP_BOOTP is not set
266# CONFIG_IP_PNP_RARP is not set
267# CONFIG_NET_IPIP is not set
268# CONFIG_NET_IPGRE is not set
269# CONFIG_IP_MROUTE is not set
270# CONFIG_ARPD is not set
271# CONFIG_SYN_COOKIES is not set
272# CONFIG_INET_AH is not set
273# CONFIG_INET_ESP is not set
274# CONFIG_INET_IPCOMP is not set
275# CONFIG_INET_XFRM_TUNNEL is not set
276# CONFIG_INET_TUNNEL is not set
277# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
278# CONFIG_INET_XFRM_MODE_TUNNEL is not set
279# CONFIG_INET_XFRM_MODE_BEET is not set
280# CONFIG_INET_LRO is not set
281CONFIG_INET_DIAG=y
282CONFIG_INET_TCP_DIAG=y
283# CONFIG_TCP_CONG_ADVANCED is not set
284CONFIG_TCP_CONG_CUBIC=y
285CONFIG_DEFAULT_TCP_CONG="cubic"
286# CONFIG_TCP_MD5SIG is not set
287# CONFIG_IPV6 is not set
288# CONFIG_INET6_XFRM_TUNNEL is not set
289# CONFIG_INET6_TUNNEL is not set
290# CONFIG_NETWORK_SECMARK is not set
291# CONFIG_NETFILTER is not set
292# CONFIG_IP_DCCP is not set
293# CONFIG_IP_SCTP is not set
294# CONFIG_TIPC is not set
295# CONFIG_ATM is not set
296# CONFIG_BRIDGE is not set
297# CONFIG_VLAN_8021Q is not set
298# CONFIG_DECNET is not set
299# CONFIG_LLC2 is not set
300# CONFIG_IPX is not set
301# CONFIG_ATALK is not set
302# CONFIG_X25 is not set
303# CONFIG_LAPB is not set
304# CONFIG_ECONET is not set
305# CONFIG_WAN_ROUTER is not set
306# CONFIG_NET_SCHED is not set
307
308#
309# Network testing
310#
311# CONFIG_NET_PKTGEN is not set
312# CONFIG_HAMRADIO is not set
313# CONFIG_IRDA is not set
314# CONFIG_BT is not set
315# CONFIG_AF_RXRPC is not set
316
317#
318# Wireless
319#
320# CONFIG_CFG80211 is not set
321# CONFIG_WIRELESS_EXT is not set
322# CONFIG_MAC80211 is not set
323# CONFIG_IEEE80211 is not set
324# CONFIG_RFKILL is not set
325# CONFIG_NET_9P is not set
326
327#
328# Device Drivers
329#
330
331#
332# Generic Driver Options
333#
334CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
335CONFIG_STANDALONE=y
336CONFIG_PREVENT_FIRMWARE_BUILD=y
337# CONFIG_FW_LOADER is not set
338# CONFIG_SYS_HYPERVISOR is not set
339# CONFIG_CONNECTOR is not set
340CONFIG_MTD=y
341# CONFIG_MTD_DEBUG is not set
342# CONFIG_MTD_CONCAT is not set
343CONFIG_MTD_PARTITIONS=y
344# CONFIG_MTD_REDBOOT_PARTS is not set
345# CONFIG_MTD_CMDLINE_PARTS is not set
346
347#
348# User Modules And Translation Layers
349#
350CONFIG_MTD_CHAR=y
351CONFIG_MTD_BLKDEVS=y
352CONFIG_MTD_BLOCK=y
353CONFIG_FTL=y
354CONFIG_NFTL=y
355CONFIG_NFTL_RW=y
356# CONFIG_INFTL is not set
357# CONFIG_RFD_FTL is not set
358# CONFIG_SSFDC is not set
359# CONFIG_MTD_OOPS is not set
360
361#
362# RAM/ROM/Flash chip drivers
363#
364CONFIG_MTD_CFI=y
365# CONFIG_MTD_JEDECPROBE is not set
366CONFIG_MTD_GEN_PROBE=y
367# CONFIG_MTD_CFI_ADV_OPTIONS is not set
368CONFIG_MTD_MAP_BANK_WIDTH_1=y
369CONFIG_MTD_MAP_BANK_WIDTH_2=y
370CONFIG_MTD_MAP_BANK_WIDTH_4=y
371# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
372# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
373# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
374CONFIG_MTD_CFI_I1=y
375CONFIG_MTD_CFI_I2=y
376# CONFIG_MTD_CFI_I4 is not set
377# CONFIG_MTD_CFI_I8 is not set
378# CONFIG_MTD_CFI_INTELEXT is not set
379CONFIG_MTD_CFI_AMDSTD=y
380# CONFIG_MTD_CFI_STAA is not set
381CONFIG_MTD_CFI_UTIL=y
382# CONFIG_MTD_RAM is not set
383# CONFIG_MTD_ROM is not set
384# CONFIG_MTD_ABSENT is not set
385
386#
387# Mapping drivers for chip access
388#
389# CONFIG_MTD_COMPLEX_MAPPINGS is not set
390CONFIG_MTD_PHYSMAP=y
391CONFIG_MTD_PHYSMAP_START=0xFF800000
392CONFIG_MTD_PHYSMAP_LEN=0x00800000
393CONFIG_MTD_PHYSMAP_BANKWIDTH=1
394# CONFIG_MTD_PHYSMAP_OF is not set
395# CONFIG_MTD_INTEL_VR_NOR is not set
396# CONFIG_MTD_PLATRAM is not set
397
398#
399# Self-contained MTD device drivers
400#
401# CONFIG_MTD_PMC551 is not set
402# CONFIG_MTD_SLRAM is not set
403# CONFIG_MTD_PHRAM is not set
404# CONFIG_MTD_MTDRAM is not set
405# CONFIG_MTD_BLOCK2MTD is not set
406
407#
408# Disk-On-Chip Device Drivers
409#
410# CONFIG_MTD_DOC2000 is not set
411# CONFIG_MTD_DOC2001 is not set
412# CONFIG_MTD_DOC2001PLUS is not set
413# CONFIG_MTD_NAND is not set
414# CONFIG_MTD_ONENAND is not set
415
416#
417# UBI - Unsorted block images
418#
419# CONFIG_MTD_UBI is not set
420CONFIG_OF_DEVICE=y
421# CONFIG_PARPORT is not set
422CONFIG_BLK_DEV=y
423# CONFIG_BLK_DEV_FD is not set
424# CONFIG_BLK_CPQ_DA is not set
425# CONFIG_BLK_CPQ_CISS_DA is not set
426# CONFIG_BLK_DEV_DAC960 is not set
427# CONFIG_BLK_DEV_UMEM is not set
428# CONFIG_BLK_DEV_COW_COMMON is not set
429# CONFIG_BLK_DEV_LOOP is not set
430# CONFIG_BLK_DEV_NBD is not set
431# CONFIG_BLK_DEV_SX8 is not set
432# CONFIG_BLK_DEV_UB is not set
433# CONFIG_BLK_DEV_RAM is not set
434# CONFIG_CDROM_PKTCDVD is not set
435# CONFIG_ATA_OVER_ETH is not set
436CONFIG_MISC_DEVICES=y
437# CONFIG_PHANTOM is not set
438# CONFIG_EEPROM_93CX6 is not set
439# CONFIG_SGI_IOC4 is not set
440# CONFIG_TIFM_CORE is not set
441CONFIG_IDE=y
442CONFIG_IDE_MAX_HWIFS=4
443CONFIG_BLK_DEV_IDE=y
444
445#
446# Please see Documentation/ide.txt for help/info on IDE drives
447#
448# CONFIG_BLK_DEV_IDE_SATA is not set
449CONFIG_BLK_DEV_IDEDISK=y
450CONFIG_IDEDISK_MULTI_MODE=y
451# CONFIG_BLK_DEV_IDECD is not set
452# CONFIG_BLK_DEV_IDETAPE is not set
453# CONFIG_BLK_DEV_IDEFLOPPY is not set
454# CONFIG_BLK_DEV_IDESCSI is not set
455# CONFIG_IDE_TASK_IOCTL is not set
456CONFIG_IDE_PROC_FS=y
457
458#
459# IDE chipset support/bugfixes
460#
461CONFIG_IDE_GENERIC=y
462# CONFIG_BLK_DEV_PLATFORM is not set
463
464#
465# PCI IDE chipsets support
466#
467CONFIG_BLK_DEV_IDEPCI=y
468# CONFIG_IDEPCI_SHARE_IRQ is not set
469CONFIG_IDEPCI_PCIBUS_ORDER=y
470# CONFIG_BLK_DEV_GENERIC is not set
471# CONFIG_BLK_DEV_OPTI621 is not set
472CONFIG_BLK_DEV_IDEDMA_PCI=y
473# CONFIG_BLK_DEV_AEC62XX is not set
474# CONFIG_BLK_DEV_ALI15X3 is not set
475# CONFIG_BLK_DEV_AMD74XX is not set
476# CONFIG_BLK_DEV_CMD64X is not set
477# CONFIG_BLK_DEV_TRIFLEX is not set
478# CONFIG_BLK_DEV_CY82C693 is not set
479# CONFIG_BLK_DEV_CS5520 is not set
480# CONFIG_BLK_DEV_CS5530 is not set
481# CONFIG_BLK_DEV_HPT34X is not set
482# CONFIG_BLK_DEV_HPT366 is not set
483# CONFIG_BLK_DEV_JMICRON is not set
484# CONFIG_BLK_DEV_SC1200 is not set
485# CONFIG_BLK_DEV_PIIX is not set
486# CONFIG_BLK_DEV_IT8213 is not set
487# CONFIG_BLK_DEV_IT821X is not set
488# CONFIG_BLK_DEV_NS87415 is not set
489# CONFIG_BLK_DEV_PDC202XX_OLD is not set
490# CONFIG_BLK_DEV_PDC202XX_NEW is not set
491# CONFIG_BLK_DEV_SVWKS is not set
492# CONFIG_BLK_DEV_SIIMAGE is not set
493# CONFIG_BLK_DEV_SL82C105 is not set
494# CONFIG_BLK_DEV_SLC90E66 is not set
495# CONFIG_BLK_DEV_TRM290 is not set
496CONFIG_BLK_DEV_VIA82CXXX=y
497# CONFIG_BLK_DEV_TC86C001 is not set
498# CONFIG_IDE_ARM is not set
499CONFIG_BLK_DEV_IDEDMA=y
500CONFIG_IDE_ARCH_OBSOLETE_INIT=y
501# CONFIG_BLK_DEV_HD is not set
502
503#
504# SCSI device support
505#
506# CONFIG_RAID_ATTRS is not set
507CONFIG_SCSI=y
508CONFIG_SCSI_DMA=y
509# CONFIG_SCSI_TGT is not set
510# CONFIG_SCSI_NETLINK is not set
511CONFIG_SCSI_PROC_FS=y
512
513#
514# SCSI support type (disk, tape, CD-ROM)
515#
516CONFIG_BLK_DEV_SD=y
517# CONFIG_CHR_DEV_ST is not set
518# CONFIG_CHR_DEV_OSST is not set
519CONFIG_BLK_DEV_SR=y
520# CONFIG_BLK_DEV_SR_VENDOR is not set
521# CONFIG_CHR_DEV_SG is not set
522# CONFIG_CHR_DEV_SCH is not set
523
524#
525# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
526#
527# CONFIG_SCSI_MULTI_LUN is not set
528# CONFIG_SCSI_CONSTANTS is not set
529# CONFIG_SCSI_LOGGING is not set
530# CONFIG_SCSI_SCAN_ASYNC is not set
531CONFIG_SCSI_WAIT_SCAN=m
532
533#
534# SCSI Transports
535#
536CONFIG_SCSI_SPI_ATTRS=y
537# CONFIG_SCSI_FC_ATTRS is not set
538# CONFIG_SCSI_ISCSI_ATTRS is not set
539# CONFIG_SCSI_SAS_LIBSAS is not set
540# CONFIG_SCSI_SRP_ATTRS is not set
541CONFIG_SCSI_LOWLEVEL=y
542# CONFIG_ISCSI_TCP is not set
543# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
544# CONFIG_SCSI_3W_9XXX is not set
545# CONFIG_SCSI_ACARD is not set
546# CONFIG_SCSI_AACRAID is not set
547# CONFIG_SCSI_AIC7XXX is not set
548# CONFIG_SCSI_AIC7XXX_OLD is not set
549# CONFIG_SCSI_AIC79XX is not set
550# CONFIG_SCSI_AIC94XX is not set
551# CONFIG_SCSI_DPT_I2O is not set
552# CONFIG_SCSI_ADVANSYS is not set
553# CONFIG_SCSI_ARCMSR is not set
554# CONFIG_MEGARAID_NEWGEN is not set
555# CONFIG_MEGARAID_LEGACY is not set
556# CONFIG_MEGARAID_SAS is not set
557# CONFIG_SCSI_HPTIOP is not set
558# CONFIG_SCSI_BUSLOGIC is not set
559# CONFIG_SCSI_DMX3191D is not set
560# CONFIG_SCSI_EATA is not set
561# CONFIG_SCSI_FUTURE_DOMAIN is not set
562# CONFIG_SCSI_GDTH is not set
563# CONFIG_SCSI_IPS is not set
564# CONFIG_SCSI_INITIO is not set
565# CONFIG_SCSI_INIA100 is not set
566# CONFIG_SCSI_STEX is not set
567# CONFIG_SCSI_SYM53C8XX_2 is not set
568# CONFIG_SCSI_QLOGIC_1280 is not set
569# CONFIG_SCSI_QLA_FC is not set
570# CONFIG_SCSI_QLA_ISCSI is not set
571# CONFIG_SCSI_LPFC is not set
572# CONFIG_SCSI_DC395x is not set
573# CONFIG_SCSI_DC390T is not set
574# CONFIG_SCSI_NSP32 is not set
575# CONFIG_SCSI_DEBUG is not set
576# CONFIG_SCSI_SRP is not set
577# CONFIG_ATA is not set
578CONFIG_MD=y
579CONFIG_BLK_DEV_MD=y
580CONFIG_MD_LINEAR=y
581CONFIG_MD_RAID0=y
582CONFIG_MD_RAID1=y
583# CONFIG_MD_RAID10 is not set
584CONFIG_MD_RAID456=y
585CONFIG_MD_RAID5_RESHAPE=y
586# CONFIG_MD_MULTIPATH is not set
587# CONFIG_MD_FAULTY is not set
588# CONFIG_BLK_DEV_DM is not set
589# CONFIG_FUSION is not set
590
591#
592# IEEE 1394 (FireWire) support
593#
594# CONFIG_FIREWIRE is not set
595# CONFIG_IEEE1394 is not set
596# CONFIG_I2O is not set
597# CONFIG_MACINTOSH_DRIVERS is not set
598CONFIG_NETDEVICES=y
599# CONFIG_NETDEVICES_MULTIQUEUE is not set
600CONFIG_DUMMY=m
601# CONFIG_BONDING is not set
602# CONFIG_MACVLAN is not set
603# CONFIG_EQUALIZER is not set
604# CONFIG_TUN is not set
605# CONFIG_VETH is not set
606# CONFIG_IP1000 is not set
607# CONFIG_ARCNET is not set
608# CONFIG_NET_ETHERNET is not set
609CONFIG_NETDEV_1000=y
610# CONFIG_ACENIC is not set
611# CONFIG_DL2K is not set
612# CONFIG_E1000 is not set
613# CONFIG_E1000E is not set
614# CONFIG_NS83820 is not set
615# CONFIG_HAMACHI is not set
616# CONFIG_YELLOWFIN is not set
617CONFIG_R8169=y
618# CONFIG_R8169_NAPI is not set
619# CONFIG_SIS190 is not set
620# CONFIG_SKGE is not set
621# CONFIG_SKY2 is not set
622# CONFIG_SK98LIN is not set
623# CONFIG_VIA_VELOCITY is not set
624# CONFIG_TIGON3 is not set
625# CONFIG_BNX2 is not set
626# CONFIG_MV643XX_ETH is not set
627# CONFIG_QLA3XXX is not set
628# CONFIG_ATL1 is not set
629# CONFIG_NETDEV_10000 is not set
630# CONFIG_TR is not set
631
632#
633# Wireless LAN
634#
635# CONFIG_WLAN_PRE80211 is not set
636# CONFIG_WLAN_80211 is not set
637
638#
639# USB Network Adapters
640#
641# CONFIG_USB_CATC is not set
642# CONFIG_USB_KAWETH is not set
643# CONFIG_USB_PEGASUS is not set
644# CONFIG_USB_RTL8150 is not set
645# CONFIG_USB_USBNET is not set
646# CONFIG_WAN is not set
647# CONFIG_FDDI is not set
648# CONFIG_HIPPI is not set
649# CONFIG_PPP is not set
650# CONFIG_SLIP is not set
651# CONFIG_NET_FC is not set
652# CONFIG_SHAPER is not set
653# CONFIG_NETCONSOLE is not set
654# CONFIG_NETPOLL is not set
655# CONFIG_NET_POLL_CONTROLLER is not set
656# CONFIG_ISDN is not set
657# CONFIG_PHONE is not set
658
659#
660# Input device support
661#
662# CONFIG_INPUT is not set
663
664#
665# Hardware I/O ports
666#
667# CONFIG_SERIO is not set
668# CONFIG_GAMEPORT is not set
669
670#
671# Character devices
672#
673# CONFIG_VT is not set
674# CONFIG_SERIAL_NONSTANDARD is not set
675
676#
677# Serial drivers
678#
679CONFIG_SERIAL_8250=y
680CONFIG_SERIAL_8250_CONSOLE=y
681# CONFIG_SERIAL_8250_PCI is not set
682CONFIG_SERIAL_8250_NR_UARTS=2
683CONFIG_SERIAL_8250_RUNTIME_UARTS=2
684# CONFIG_SERIAL_8250_EXTENDED is not set
685
686#
687# Non-8250 serial port support
688#
689# CONFIG_SERIAL_UARTLITE is not set
690CONFIG_SERIAL_CORE=y
691CONFIG_SERIAL_CORE_CONSOLE=y
692# CONFIG_SERIAL_JSM is not set
693# CONFIG_SERIAL_OF_PLATFORM is not set
694CONFIG_UNIX98_PTYS=y
695CONFIG_LEGACY_PTYS=y
696CONFIG_LEGACY_PTY_COUNT=256
697# CONFIG_IPMI_HANDLER is not set
698CONFIG_HW_RANDOM=m
699CONFIG_NVRAM=y
700CONFIG_GEN_RTC=y
701# CONFIG_GEN_RTC_X is not set
702# CONFIG_R3964 is not set
703# CONFIG_APPLICOM is not set
704# CONFIG_RAW_DRIVER is not set
705# CONFIG_TCG_TPM is not set
706CONFIG_DEVPORT=y
707CONFIG_I2C=y
708CONFIG_I2C_BOARDINFO=y
709CONFIG_I2C_CHARDEV=y
710
711#
712# I2C Algorithms
713#
714# CONFIG_I2C_ALGOBIT is not set
715# CONFIG_I2C_ALGOPCF is not set
716# CONFIG_I2C_ALGOPCA is not set
717
718#
719# I2C Hardware Bus support
720#
721# CONFIG_I2C_ALI1535 is not set
722# CONFIG_I2C_ALI1563 is not set
723# CONFIG_I2C_ALI15X3 is not set
724# CONFIG_I2C_AMD756 is not set
725# CONFIG_I2C_AMD8111 is not set
726# CONFIG_I2C_I801 is not set
727# CONFIG_I2C_I810 is not set
728# CONFIG_I2C_PIIX4 is not set
729CONFIG_I2C_MPC=y
730# CONFIG_I2C_NFORCE2 is not set
731# CONFIG_I2C_OCORES is not set
732# CONFIG_I2C_PARPORT_LIGHT is not set
733# CONFIG_I2C_PROSAVAGE is not set
734# CONFIG_I2C_SAVAGE4 is not set
735# CONFIG_I2C_SIMTEC is not set
736# CONFIG_I2C_SIS5595 is not set
737# CONFIG_I2C_SIS630 is not set
738# CONFIG_I2C_SIS96X is not set
739# CONFIG_I2C_TAOS_EVM is not set
740# CONFIG_I2C_STUB is not set
741# CONFIG_I2C_TINY_USB is not set
742# CONFIG_I2C_VIA is not set
743# CONFIG_I2C_VIAPRO is not set
744# CONFIG_I2C_VOODOO3 is not set
745
746#
747# Miscellaneous I2C Chip support
748#
749# CONFIG_SENSORS_DS1337 is not set
750# CONFIG_SENSORS_DS1374 is not set
751# CONFIG_DS1682 is not set
752# CONFIG_SENSORS_EEPROM is not set
753# CONFIG_SENSORS_PCF8574 is not set
754# CONFIG_SENSORS_PCA9539 is not set
755# CONFIG_SENSORS_PCF8591 is not set
756# CONFIG_SENSORS_M41T00 is not set
757# CONFIG_SENSORS_MAX6875 is not set
758# CONFIG_SENSORS_TSL2550 is not set
759# CONFIG_I2C_DEBUG_CORE is not set
760# CONFIG_I2C_DEBUG_ALGO is not set
761# CONFIG_I2C_DEBUG_BUS is not set
762# CONFIG_I2C_DEBUG_CHIP is not set
763
764#
765# SPI support
766#
767# CONFIG_SPI is not set
768# CONFIG_SPI_MASTER is not set
769# CONFIG_W1 is not set
770# CONFIG_POWER_SUPPLY is not set
771# CONFIG_HWMON is not set
772# CONFIG_WATCHDOG is not set
773
774#
775# Sonics Silicon Backplane
776#
777CONFIG_SSB_POSSIBLE=y
778# CONFIG_SSB is not set
779
780#
781# Multifunction device drivers
782#
783# CONFIG_MFD_SM501 is not set
784
785#
786# Multimedia devices
787#
788# CONFIG_VIDEO_DEV is not set
789# CONFIG_DVB_CORE is not set
790# CONFIG_DAB is not set
791
792#
793# Graphics support
794#
795# CONFIG_AGP is not set
796# CONFIG_DRM is not set
797# CONFIG_VGASTATE is not set
798# CONFIG_VIDEO_OUTPUT_CONTROL is not set
799# CONFIG_FB is not set
800# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
801
802#
803# Display device support
804#
805# CONFIG_DISPLAY_SUPPORT is not set
806
807#
808# Sound
809#
810# CONFIG_SOUND is not set
811CONFIG_USB_SUPPORT=y
812CONFIG_USB_ARCH_HAS_HCD=y
813CONFIG_USB_ARCH_HAS_OHCI=y
814CONFIG_USB_ARCH_HAS_EHCI=y
815CONFIG_USB=y
816# CONFIG_USB_DEBUG is not set
817
818#
819# Miscellaneous USB options
820#
821CONFIG_USB_DEVICEFS=y
822CONFIG_USB_DEVICE_CLASS=y
823# CONFIG_USB_DYNAMIC_MINORS is not set
824# CONFIG_USB_OTG is not set
825
826#
827# USB Host Controller Drivers
828#
829CONFIG_USB_EHCI_HCD=y
830# CONFIG_USB_EHCI_SPLIT_ISO is not set
831# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
832# CONFIG_USB_EHCI_TT_NEWSCHED is not set
833# CONFIG_USB_ISP116X_HCD is not set
834CONFIG_USB_OHCI_HCD=y
835# CONFIG_USB_OHCI_HCD_PPC_OF is not set
836# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
837# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
838CONFIG_USB_OHCI_LITTLE_ENDIAN=y
839# CONFIG_USB_UHCI_HCD is not set
840# CONFIG_USB_SL811_HCD is not set
841# CONFIG_USB_R8A66597_HCD is not set
842
843#
844# USB Device Class drivers
845#
846# CONFIG_USB_ACM is not set
847# CONFIG_USB_PRINTER is not set
848
849#
850# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
851#
852
853#
854# may also be needed; see USB_STORAGE Help for more information
855#
856CONFIG_USB_STORAGE=y
857# CONFIG_USB_STORAGE_DEBUG is not set
858# CONFIG_USB_STORAGE_DATAFAB is not set
859# CONFIG_USB_STORAGE_FREECOM is not set
860# CONFIG_USB_STORAGE_ISD200 is not set
861# CONFIG_USB_STORAGE_DPCM is not set
862# CONFIG_USB_STORAGE_USBAT is not set
863# CONFIG_USB_STORAGE_SDDR09 is not set
864# CONFIG_USB_STORAGE_SDDR55 is not set
865# CONFIG_USB_STORAGE_JUMPSHOT is not set
866# CONFIG_USB_STORAGE_ALAUDA is not set
867# CONFIG_USB_STORAGE_KARMA is not set
868# CONFIG_USB_LIBUSUAL is not set
869
870#
871# USB Imaging devices
872#
873# CONFIG_USB_MDC800 is not set
874# CONFIG_USB_MICROTEK is not set
875# CONFIG_USB_MON is not set
876
877#
878# USB port drivers
879#
880
881#
882# USB Serial Converter support
883#
884# CONFIG_USB_SERIAL is not set
885
886#
887# USB Miscellaneous drivers
888#
889# CONFIG_USB_EMI62 is not set
890# CONFIG_USB_EMI26 is not set
891# CONFIG_USB_ADUTUX is not set
892# CONFIG_USB_AUERSWALD is not set
893# CONFIG_USB_RIO500 is not set
894# CONFIG_USB_LEGOTOWER is not set
895# CONFIG_USB_LCD is not set
896# CONFIG_USB_BERRY_CHARGE is not set
897# CONFIG_USB_LED is not set
898# CONFIG_USB_CYPRESS_CY7C63 is not set
899# CONFIG_USB_CYTHERM is not set
900# CONFIG_USB_PHIDGET is not set
901# CONFIG_USB_IDMOUSE is not set
902# CONFIG_USB_FTDI_ELAN is not set
903# CONFIG_USB_APPLEDISPLAY is not set
904# CONFIG_USB_SISUSBVGA is not set
905# CONFIG_USB_LD is not set
906# CONFIG_USB_TRANCEVIBRATOR is not set
907# CONFIG_USB_IOWARRIOR is not set
908# CONFIG_USB_TEST is not set
909
910#
911# USB DSL modem support
912#
913
914#
915# USB Gadget Support
916#
917# CONFIG_USB_GADGET is not set
918# CONFIG_MMC is not set
919# CONFIG_NEW_LEDS is not set
920# CONFIG_INFINIBAND is not set
921# CONFIG_EDAC is not set
922CONFIG_RTC_LIB=y
923CONFIG_RTC_CLASS=y
924CONFIG_RTC_HCTOSYS=y
925CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
926# CONFIG_RTC_DEBUG is not set
927
928#
929# RTC interfaces
930#
931CONFIG_RTC_INTF_SYSFS=y
932CONFIG_RTC_INTF_PROC=y
933CONFIG_RTC_INTF_DEV=y
934# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
935# CONFIG_RTC_DRV_TEST is not set
936
937#
938# I2C RTC drivers
939#
940CONFIG_RTC_DRV_DS1307=y
941# CONFIG_RTC_DRV_DS1374 is not set
942# CONFIG_RTC_DRV_DS1672 is not set
943# CONFIG_RTC_DRV_MAX6900 is not set
944# CONFIG_RTC_DRV_RS5C372 is not set
945# CONFIG_RTC_DRV_ISL1208 is not set
946# CONFIG_RTC_DRV_X1205 is not set
947# CONFIG_RTC_DRV_PCF8563 is not set
948# CONFIG_RTC_DRV_PCF8583 is not set
949# CONFIG_RTC_DRV_M41T80 is not set
950
951#
952# SPI RTC drivers
953#
954
955#
956# Platform RTC drivers
957#
958# CONFIG_RTC_DRV_CMOS is not set
959# CONFIG_RTC_DRV_DS1553 is not set
960# CONFIG_RTC_DRV_STK17TA8 is not set
961# CONFIG_RTC_DRV_DS1742 is not set
962# CONFIG_RTC_DRV_M48T86 is not set
963# CONFIG_RTC_DRV_M48T59 is not set
964# CONFIG_RTC_DRV_V3020 is not set
965
966#
967# on-CPU RTC drivers
968#
969
970#
971# Userspace I/O
972#
973# CONFIG_UIO is not set
974
975#
976# File systems
977#
978CONFIG_EXT2_FS=y
979# CONFIG_EXT2_FS_XATTR is not set
980# CONFIG_EXT2_FS_XIP is not set
981CONFIG_EXT3_FS=y
982CONFIG_EXT3_FS_XATTR=y
983# CONFIG_EXT3_FS_POSIX_ACL is not set
984# CONFIG_EXT3_FS_SECURITY is not set
985# CONFIG_EXT4DEV_FS is not set
986CONFIG_JBD=y
987CONFIG_FS_MBCACHE=y
988# CONFIG_REISERFS_FS is not set
989# CONFIG_JFS_FS is not set
990# CONFIG_FS_POSIX_ACL is not set
991CONFIG_XFS_FS=m
992# CONFIG_XFS_QUOTA is not set
993# CONFIG_XFS_SECURITY is not set
994# CONFIG_XFS_POSIX_ACL is not set
995# CONFIG_XFS_RT is not set
996# CONFIG_GFS2_FS is not set
997# CONFIG_OCFS2_FS is not set
998# CONFIG_MINIX_FS is not set
999# CONFIG_ROMFS_FS is not set
1000CONFIG_INOTIFY=y
1001CONFIG_INOTIFY_USER=y
1002# CONFIG_QUOTA is not set
1003CONFIG_DNOTIFY=y
1004# CONFIG_AUTOFS_FS is not set
1005# CONFIG_AUTOFS4_FS is not set
1006# CONFIG_FUSE_FS is not set
1007
1008#
1009# CD-ROM/DVD Filesystems
1010#
1011# CONFIG_ISO9660_FS is not set
1012# CONFIG_UDF_FS is not set
1013
1014#
1015# DOS/FAT/NT Filesystems
1016#
1017# CONFIG_MSDOS_FS is not set
1018# CONFIG_VFAT_FS is not set
1019# CONFIG_NTFS_FS is not set
1020
1021#
1022# Pseudo filesystems
1023#
1024CONFIG_PROC_FS=y
1025CONFIG_PROC_KCORE=y
1026CONFIG_PROC_SYSCTL=y
1027CONFIG_SYSFS=y
1028CONFIG_TMPFS=y
1029# CONFIG_TMPFS_POSIX_ACL is not set
1030# CONFIG_HUGETLB_PAGE is not set
1031# CONFIG_CONFIGFS_FS is not set
1032
1033#
1034# Miscellaneous filesystems
1035#
1036# CONFIG_ADFS_FS is not set
1037# CONFIG_AFFS_FS is not set
1038# CONFIG_HFS_FS is not set
1039# CONFIG_HFSPLUS_FS is not set
1040# CONFIG_BEFS_FS is not set
1041# CONFIG_BFS_FS is not set
1042# CONFIG_EFS_FS is not set
1043CONFIG_JFFS2_FS=y
1044CONFIG_JFFS2_FS_DEBUG=0
1045CONFIG_JFFS2_FS_WRITEBUFFER=y
1046# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1047# CONFIG_JFFS2_SUMMARY is not set
1048# CONFIG_JFFS2_FS_XATTR is not set
1049# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1050CONFIG_JFFS2_ZLIB=y
1051# CONFIG_JFFS2_LZO is not set
1052CONFIG_JFFS2_RTIME=y
1053# CONFIG_JFFS2_RUBIN is not set
1054# CONFIG_CRAMFS is not set
1055# CONFIG_VXFS_FS is not set
1056# CONFIG_HPFS_FS is not set
1057# CONFIG_QNX4FS_FS is not set
1058# CONFIG_SYSV_FS is not set
1059# CONFIG_UFS_FS is not set
1060# CONFIG_NETWORK_FILESYSTEMS is not set
1061
1062#
1063# Partition Types
1064#
1065CONFIG_PARTITION_ADVANCED=y
1066# CONFIG_ACORN_PARTITION is not set
1067# CONFIG_OSF_PARTITION is not set
1068# CONFIG_AMIGA_PARTITION is not set
1069# CONFIG_ATARI_PARTITION is not set
1070# CONFIG_MAC_PARTITION is not set
1071CONFIG_MSDOS_PARTITION=y
1072# CONFIG_BSD_DISKLABEL is not set
1073# CONFIG_MINIX_SUBPARTITION is not set
1074# CONFIG_SOLARIS_X86_PARTITION is not set
1075# CONFIG_UNIXWARE_DISKLABEL is not set
1076# CONFIG_LDM_PARTITION is not set
1077# CONFIG_SGI_PARTITION is not set
1078# CONFIG_ULTRIX_PARTITION is not set
1079# CONFIG_SUN_PARTITION is not set
1080# CONFIG_KARMA_PARTITION is not set
1081# CONFIG_EFI_PARTITION is not set
1082# CONFIG_SYSV68_PARTITION is not set
1083CONFIG_NLS=y
1084CONFIG_NLS_DEFAULT="utf8"
1085CONFIG_NLS_CODEPAGE_437=y
1086# CONFIG_NLS_CODEPAGE_737 is not set
1087# CONFIG_NLS_CODEPAGE_775 is not set
1088# CONFIG_NLS_CODEPAGE_850 is not set
1089# CONFIG_NLS_CODEPAGE_852 is not set
1090# CONFIG_NLS_CODEPAGE_855 is not set
1091# CONFIG_NLS_CODEPAGE_857 is not set
1092# CONFIG_NLS_CODEPAGE_860 is not set
1093# CONFIG_NLS_CODEPAGE_861 is not set
1094# CONFIG_NLS_CODEPAGE_862 is not set
1095# CONFIG_NLS_CODEPAGE_863 is not set
1096# CONFIG_NLS_CODEPAGE_864 is not set
1097# CONFIG_NLS_CODEPAGE_865 is not set
1098# CONFIG_NLS_CODEPAGE_866 is not set
1099# CONFIG_NLS_CODEPAGE_869 is not set
1100# CONFIG_NLS_CODEPAGE_936 is not set
1101# CONFIG_NLS_CODEPAGE_950 is not set
1102# CONFIG_NLS_CODEPAGE_932 is not set
1103# CONFIG_NLS_CODEPAGE_949 is not set
1104# CONFIG_NLS_CODEPAGE_874 is not set
1105# CONFIG_NLS_ISO8859_8 is not set
1106# CONFIG_NLS_CODEPAGE_1250 is not set
1107# CONFIG_NLS_CODEPAGE_1251 is not set
1108# CONFIG_NLS_ASCII is not set
1109CONFIG_NLS_ISO8859_1=y
1110# CONFIG_NLS_ISO8859_2 is not set
1111# CONFIG_NLS_ISO8859_3 is not set
1112# CONFIG_NLS_ISO8859_4 is not set
1113# CONFIG_NLS_ISO8859_5 is not set
1114# CONFIG_NLS_ISO8859_6 is not set
1115# CONFIG_NLS_ISO8859_7 is not set
1116# CONFIG_NLS_ISO8859_9 is not set
1117# CONFIG_NLS_ISO8859_13 is not set
1118# CONFIG_NLS_ISO8859_14 is not set
1119# CONFIG_NLS_ISO8859_15 is not set
1120# CONFIG_NLS_KOI8_R is not set
1121# CONFIG_NLS_KOI8_U is not set
1122CONFIG_NLS_UTF8=y
1123# CONFIG_DLM is not set
1124# CONFIG_UCC_SLOW is not set
1125
1126#
1127# Library routines
1128#
1129CONFIG_BITREVERSE=y
1130# CONFIG_CRC_CCITT is not set
1131# CONFIG_CRC16 is not set
1132# CONFIG_CRC_ITU_T is not set
1133CONFIG_CRC32=y
1134# CONFIG_CRC7 is not set
1135# CONFIG_LIBCRC32C is not set
1136CONFIG_ZLIB_INFLATE=y
1137CONFIG_ZLIB_DEFLATE=y
1138CONFIG_PLIST=y
1139CONFIG_HAS_IOMEM=y
1140CONFIG_HAS_IOPORT=y
1141CONFIG_HAS_DMA=y
1142CONFIG_INSTRUMENTATION=y
1143# CONFIG_PROFILING is not set
1144# CONFIG_MARKERS is not set
1145
1146#
1147# Kernel hacking
1148#
1149# CONFIG_PRINTK_TIME is not set
1150# CONFIG_ENABLE_WARN_DEPRECATED is not set
1151# CONFIG_ENABLE_MUST_CHECK is not set
1152# CONFIG_MAGIC_SYSRQ is not set
1153# CONFIG_UNUSED_SYMBOLS is not set
1154# CONFIG_DEBUG_FS is not set
1155# CONFIG_HEADERS_CHECK is not set
1156# CONFIG_DEBUG_KERNEL is not set
1157# CONFIG_SLUB_DEBUG_ON is not set
1158# CONFIG_DEBUG_BUGVERBOSE is not set
1159# CONFIG_SAMPLES is not set
1160# CONFIG_BOOTX_TEXT is not set
1161# CONFIG_PPC_EARLY_DEBUG is not set
1162
1163#
1164# Security options
1165#
1166# CONFIG_KEYS is not set
1167# CONFIG_SECURITY is not set
1168# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1169CONFIG_XOR_BLOCKS=y
1170CONFIG_ASYNC_CORE=y
1171CONFIG_ASYNC_MEMCPY=y
1172CONFIG_ASYNC_XOR=y
1173# CONFIG_CRYPTO is not set
1174# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index d9b377070caa..58dbfeff9b4d 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -70,6 +70,7 @@ pci64-$(CONFIG_PPC64) += pci_dn.o isa-bridge.o
70obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \ 70obj-$(CONFIG_PCI) += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
71 pci-common.o 71 pci-common.o
72obj-$(CONFIG_PCI_MSI) += msi.o 72obj-$(CONFIG_PCI_MSI) += msi.o
73obj-$(CONFIG_RAPIDIO) += rio.o
73obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o \ 74obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o \
74 machine_kexec_$(CONFIG_WORD_SIZE).o 75 machine_kexec_$(CONFIG_WORD_SIZE).o
75obj-$(CONFIG_AUDIT) += audit.o 76obj-$(CONFIG_AUDIT) += audit.o
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 7aecb39a5a45..d9cc2c288d9e 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -73,8 +73,8 @@ _ENTRY(_start);
73/* We try to not make any assumptions about how the boot loader 73/* We try to not make any assumptions about how the boot loader
74 * setup or used the TLBs. We invalidate all mappings from the 74 * setup or used the TLBs. We invalidate all mappings from the
75 * boot loader and load a single entry in TLB1[0] to map the 75 * boot loader and load a single entry in TLB1[0] to map the
76 * first 16M of kernel memory. Any boot info passed from the 76 * first 64M of kernel memory. Any boot info passed from the
77 * bootloader needs to live in this first 16M. 77 * bootloader needs to live in this first 64M.
78 * 78 *
79 * Requirement on bootloader: 79 * Requirement on bootloader:
80 * - The page we're executing in needs to reside in TLB1 and 80 * - The page we're executing in needs to reside in TLB1 and
@@ -167,7 +167,7 @@ skpinv: addi r6,r6,1 /* Increment */
167 mtspr SPRN_MAS0,r7 167 mtspr SPRN_MAS0,r7
168 tlbre 168 tlbre
169 169
170 /* Just modify the entry ID and EPN for the temp mapping */ 170 /* Just modify the entry ID, EPN and RPN for the temp mapping */
171 lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ 171 lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */
172 rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ 172 rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */
173 mtspr SPRN_MAS0,r7 173 mtspr SPRN_MAS0,r7
@@ -177,9 +177,12 @@ skpinv: addi r6,r6,1 /* Increment */
177 ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l 177 ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_4K))@l
178 mtspr SPRN_MAS1,r6 178 mtspr SPRN_MAS1,r6
179 mfspr r6,SPRN_MAS2 179 mfspr r6,SPRN_MAS2
180 li r7,0 /* temp EPN = 0 */ 180 lis r7,PHYSICAL_START@h
181 rlwimi r7,r6,0,20,31 181 rlwimi r7,r6,0,20,31
182 mtspr SPRN_MAS2,r7 182 mtspr SPRN_MAS2,r7
183 mfspr r6,SPRN_MAS3
184 rlwimi r7,r6,0,20,31
185 mtspr SPRN_MAS3,r7
183 tlbwe 186 tlbwe
184 187
185 xori r6,r4,1 188 xori r6,r4,1
@@ -222,11 +225,11 @@ skpinv: addi r6,r6,1 /* Increment */
222 lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */ 225 lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */
223 mtspr SPRN_MAS0,r6 226 mtspr SPRN_MAS0,r6
224 lis r6,(MAS1_VALID|MAS1_IPROT)@h 227 lis r6,(MAS1_VALID|MAS1_IPROT)@h
225 ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_16M))@l 228 ori r6,r6,(MAS1_TSIZE(BOOKE_PAGESZ_64M))@l
226 mtspr SPRN_MAS1,r6 229 mtspr SPRN_MAS1,r6
227 li r7,0 230 li r7,0
228 lis r6,KERNELBASE@h 231 lis r6,PAGE_OFFSET@h
229 ori r6,r6,KERNELBASE@l 232 ori r6,r6,PAGE_OFFSET@l
230 rlwimi r6,r7,0,20,31 233 rlwimi r6,r7,0,20,31
231 mtspr SPRN_MAS2,r6 234 mtspr SPRN_MAS2,r6
232 li r7,(MAS3_SX|MAS3_SW|MAS3_SR) 235 li r7,(MAS3_SX|MAS3_SW|MAS3_SR)
@@ -234,6 +237,9 @@ skpinv: addi r6,r6,1 /* Increment */
234 tlbwe 237 tlbwe
235 238
236/* 7. Jump to KERNELBASE mapping */ 239/* 7. Jump to KERNELBASE mapping */
240 lis r6,KERNELBASE@h
241 ori r6,r6,KERNELBASE@l
242 rlwimi r6,r7,0,20,31
237 lis r7,MSR_KERNEL@h 243 lis r7,MSR_KERNEL@h
238 ori r7,r7,MSR_KERNEL@l 244 ori r7,r7,MSR_KERNEL@l
239 bl 1f /* Find our address */ 245 bl 1f /* Find our address */
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index d394d41b61d5..980fe32895c0 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -792,9 +792,10 @@ static void __devinit __pcibios_fixup_bus(struct pci_bus *bus)
792 for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) { 792 for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) {
793 if ((res = bus->resource[i]) == NULL) 793 if ((res = bus->resource[i]) == NULL)
794 continue; 794 continue;
795 if (!res->flags || bus->self->transparent) 795 if (!res->flags)
796 continue;
797 if (i >= 3 && bus->self->transparent)
796 continue; 798 continue;
797
798 /* On PowerMac, Apple leaves bridge windows open over 799 /* On PowerMac, Apple leaves bridge windows open over
799 * an inaccessible region of memory space (0...fffff) 800 * an inaccessible region of memory space (0...fffff)
800 * which is somewhat bogus, but that's what they think 801 * which is somewhat bogus, but that's what they think
@@ -806,7 +807,8 @@ static void __devinit __pcibios_fixup_bus(struct pci_bus *bus)
806 * equal to the pci_mem_offset of the host bridge and 807 * equal to the pci_mem_offset of the host bridge and
807 * their size is smaller than 1M. 808 * their size is smaller than 1M.
808 */ 809 */
809 if (res->start == hose->pci_mem_offset && 810 if (res->flags & IORESOURCE_MEM &&
811 res->start == hose->pci_mem_offset &&
810 res->end < 0x100000) { 812 res->end < 0x100000) {
811 printk(KERN_INFO 813 printk(KERN_INFO
812 "PCI: Closing bogus Apple Firmware" 814 "PCI: Closing bogus Apple Firmware"
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 14e300f85ce4..88db4ffaf11c 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -94,64 +94,6 @@ fixup_cpc710_pci64(struct pci_dev* dev)
94} 94}
95DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CPC710_PCI64, fixup_cpc710_pci64); 95DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CPC710_PCI64, fixup_cpc710_pci64);
96 96
97
98void __init
99update_bridge_resource(struct pci_dev *dev, struct resource *res)
100{
101 u8 io_base_lo, io_limit_lo;
102 u16 mem_base, mem_limit;
103 u16 cmd;
104 resource_size_t start, end, off;
105 struct pci_controller *hose = dev->sysdata;
106
107 if (!hose) {
108 printk("update_bridge_base: no hose?\n");
109 return;
110 }
111 pci_read_config_word(dev, PCI_COMMAND, &cmd);
112 pci_write_config_word(dev, PCI_COMMAND,
113 cmd & ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY));
114 if (res->flags & IORESOURCE_IO) {
115 off = (unsigned long) hose->io_base_virt - isa_io_base;
116 start = res->start - off;
117 end = res->end - off;
118 io_base_lo = (start >> 8) & PCI_IO_RANGE_MASK;
119 io_limit_lo = (end >> 8) & PCI_IO_RANGE_MASK;
120 if (end > 0xffff)
121 io_base_lo |= PCI_IO_RANGE_TYPE_32;
122 else
123 io_base_lo |= PCI_IO_RANGE_TYPE_16;
124 pci_write_config_word(dev, PCI_IO_BASE_UPPER16,
125 start >> 16);
126 pci_write_config_word(dev, PCI_IO_LIMIT_UPPER16,
127 end >> 16);
128 pci_write_config_byte(dev, PCI_IO_BASE, io_base_lo);
129 pci_write_config_byte(dev, PCI_IO_LIMIT, io_limit_lo);
130
131 } else if ((res->flags & (IORESOURCE_MEM | IORESOURCE_PREFETCH))
132 == IORESOURCE_MEM) {
133 off = hose->pci_mem_offset;
134 mem_base = ((res->start - off) >> 16) & PCI_MEMORY_RANGE_MASK;
135 mem_limit = ((res->end - off) >> 16) & PCI_MEMORY_RANGE_MASK;
136 pci_write_config_word(dev, PCI_MEMORY_BASE, mem_base);
137 pci_write_config_word(dev, PCI_MEMORY_LIMIT, mem_limit);
138
139 } else if ((res->flags & (IORESOURCE_MEM | IORESOURCE_PREFETCH))
140 == (IORESOURCE_MEM | IORESOURCE_PREFETCH)) {
141 off = hose->pci_mem_offset;
142 mem_base = ((res->start - off) >> 16) & PCI_PREF_RANGE_MASK;
143 mem_limit = ((res->end - off) >> 16) & PCI_PREF_RANGE_MASK;
144 pci_write_config_word(dev, PCI_PREF_MEMORY_BASE, mem_base);
145 pci_write_config_word(dev, PCI_PREF_MEMORY_LIMIT, mem_limit);
146
147 } else {
148 DBG(KERN_ERR "PCI: ugh, bridge %s res has flags=%lx\n",
149 pci_name(dev), res->flags);
150 }
151 pci_write_config_word(dev, PCI_COMMAND, cmd);
152}
153
154
155#ifdef CONFIG_PPC_OF 97#ifdef CONFIG_PPC_OF
156/* 98/*
157 * Functions below are used on OpenFirmware machines. 99 * Functions below are used on OpenFirmware machines.
diff --git a/arch/powerpc/kernel/rio.c b/arch/powerpc/kernel/rio.c
new file mode 100644
index 000000000000..29487fedfc76
--- /dev/null
+++ b/arch/powerpc/kernel/rio.c
@@ -0,0 +1,52 @@
1/*
2 * RapidIO PPC32 support
3 *
4 * Copyright 2005 MontaVista Software, Inc.
5 * Matt Porter <mporter@kernel.crashing.org>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13#include <linux/init.h>
14#include <linux/kernel.h>
15#include <linux/rio.h>
16
17#include <asm/rio.h>
18
19/**
20 * platform_rio_init - Do platform specific RIO init
21 *
22 * Any platform specific initialization of RapdIO
23 * hardware is done here as well as registration
24 * of any active master ports in the system.
25 */
26void __attribute__ ((weak))
27 platform_rio_init(void)
28{
29 printk(KERN_WARNING "RIO: No platform_rio_init() present\n");
30}
31
32/**
33 * ppc_rio_init - Do PPC32 RIO init
34 *
35 * Calls platform-specific RIO init code and then calls
36 * rio_init_mports() to initialize any master ports that
37 * have been registered with the RIO subsystem.
38 */
39static int __init ppc_rio_init(void)
40{
41 printk(KERN_INFO "RIO: RapidIO init\n");
42
43 /* Platform specific initialization */
44 platform_rio_init();
45
46 /* Enumerate all registered ports */
47 rio_init_mports();
48
49 return 0;
50}
51
52subsys_initcall(ppc_rio_init);
diff --git a/arch/powerpc/math-emu/op-4.h b/arch/powerpc/math-emu/op-4.h
index fcdd6d064c54..c9ae626070da 100644
--- a/arch/powerpc/math-emu/op-4.h
+++ b/arch/powerpc/math-emu/op-4.h
@@ -194,19 +194,39 @@
194 (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0) 194 (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0)
195 195
196#ifndef __FP_FRAC_ADD_4 196#ifndef __FP_FRAC_ADD_4
197#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 197#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
198 (r0 = x0 + y0, \ 198 do { \
199 r1 = x1 + y1 + (r0 < x0), \ 199 int _c1, _c2, _c3; \
200 r2 = x2 + y2 + (r1 < x1), \ 200 r0 = x0 + y0; \
201 r3 = x3 + y3 + (r2 < x2)) 201 _c1 = r0 < x0; \
202 r1 = x1 + y1; \
203 _c2 = r1 < x1; \
204 r1 += _c1; \
205 _c2 |= r1 < _c1; \
206 r2 = x2 + y2; \
207 _c3 = r2 < x2; \
208 r2 += _c2; \
209 _c3 |= r2 < _c2; \
210 r3 = x3 + y3 + _c3; \
211 } while (0)
202#endif 212#endif
203 213
204#ifndef __FP_FRAC_SUB_4 214#ifndef __FP_FRAC_SUB_4
205#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 215#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
206 (r0 = x0 - y0, \ 216 do { \
207 r1 = x1 - y1 - (r0 > x0), \ 217 int _c1, _c2, _c3; \
208 r2 = x2 - y2 - (r1 > x1), \ 218 r0 = x0 - y0; \
209 r3 = x3 - y3 - (r2 > x2)) 219 _c1 = r0 > x0; \
220 r1 = x1 - y1; \
221 _c2 = r1 > x1; \
222 r1 -= _c1; \
223 _c2 |= r1 > _c1; \
224 r2 = x2 - y2; \
225 _c3 = r2 > x2; \
226 r2 -= _c2; \
227 _c3 |= r2 > _c2; \
228 r3 = x3 - y3 - _c3; \
229 } while (0)
210#endif 230#endif
211 231
212#ifndef __FP_FRAC_ADDI_4 232#ifndef __FP_FRAC_ADDI_4
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c
index 17139daeaff4..c93a966b7e4b 100644
--- a/arch/powerpc/mm/fsl_booke_mmu.c
+++ b/arch/powerpc/mm/fsl_booke_mmu.c
@@ -165,15 +165,15 @@ void invalidate_tlbcam_entry(int index)
165void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1, 165void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1,
166 unsigned long cam2) 166 unsigned long cam2)
167{ 167{
168 settlbcam(0, KERNELBASE, PPC_MEMSTART, cam0, _PAGE_KERNEL, 0); 168 settlbcam(0, PAGE_OFFSET, PPC_MEMSTART, cam0, _PAGE_KERNEL, 0);
169 tlbcam_index++; 169 tlbcam_index++;
170 if (cam1) { 170 if (cam1) {
171 tlbcam_index++; 171 tlbcam_index++;
172 settlbcam(1, KERNELBASE+cam0, PPC_MEMSTART+cam0, cam1, _PAGE_KERNEL, 0); 172 settlbcam(1, PAGE_OFFSET+cam0, PPC_MEMSTART+cam0, cam1, _PAGE_KERNEL, 0);
173 } 173 }
174 if (cam2) { 174 if (cam2) {
175 tlbcam_index++; 175 tlbcam_index++;
176 settlbcam(2, KERNELBASE+cam0+cam1, PPC_MEMSTART+cam0+cam1, cam2, _PAGE_KERNEL, 0); 176 settlbcam(2, PAGE_OFFSET+cam0+cam1, PPC_MEMSTART+cam0+cam1, cam2, _PAGE_KERNEL, 0);
177 } 177 }
178} 178}
179 179
diff --git a/arch/powerpc/mm/lmb.c b/arch/powerpc/mm/lmb.c
index 8f4d2dc4cafb..4ce23bcf8a57 100644
--- a/arch/powerpc/mm/lmb.c
+++ b/arch/powerpc/mm/lmb.c
@@ -342,3 +342,16 @@ void __init lmb_enforce_memory_limit(unsigned long memory_limit)
342 } 342 }
343 } 343 }
344} 344}
345
346int __init lmb_is_reserved(unsigned long addr)
347{
348 int i;
349
350 for (i = 0; i < lmb.reserved.cnt; i++) {
351 unsigned long upper = lmb.reserved.region[i].base +
352 lmb.reserved.region[i].size - 1;
353 if ((addr >= lmb.reserved.region[i].base) && (addr <= upper))
354 return 1;
355 }
356 return 0;
357}
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 5402fb6b3aae..e8122447f019 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -213,15 +213,30 @@ void __init do_init_bootmem(void)
213 */ 213 */
214#ifdef CONFIG_HIGHMEM 214#ifdef CONFIG_HIGHMEM
215 free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT); 215 free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT);
216
217 /* reserve the sections we're already using */
218 for (i = 0; i < lmb.reserved.cnt; i++) {
219 unsigned long addr = lmb.reserved.region[i].base +
220 lmb_size_bytes(&lmb.reserved, i) - 1;
221 if (addr < total_lowmem)
222 reserve_bootmem(lmb.reserved.region[i].base,
223 lmb_size_bytes(&lmb.reserved, i));
224 else if (lmb.reserved.region[i].base < total_lowmem) {
225 unsigned long adjusted_size = total_lowmem -
226 lmb.reserved.region[i].base;
227 reserve_bootmem(lmb.reserved.region[i].base,
228 adjusted_size);
229 }
230 }
216#else 231#else
217 free_bootmem_with_active_regions(0, max_pfn); 232 free_bootmem_with_active_regions(0, max_pfn);
218#endif
219 233
220 /* reserve the sections we're already using */ 234 /* reserve the sections we're already using */
221 for (i = 0; i < lmb.reserved.cnt; i++) 235 for (i = 0; i < lmb.reserved.cnt; i++)
222 reserve_bootmem(lmb.reserved.region[i].base, 236 reserve_bootmem(lmb.reserved.region[i].base,
223 lmb_size_bytes(&lmb.reserved, i)); 237 lmb_size_bytes(&lmb.reserved, i));
224 238
239#endif
225 /* XXX need to clip this if using highmem? */ 240 /* XXX need to clip this if using highmem? */
226 sparse_memory_present_with_active_regions(0); 241 sparse_memory_present_with_active_regions(0);
227 242
@@ -334,11 +349,13 @@ void __init mem_init(void)
334 highmem_mapnr = total_lowmem >> PAGE_SHIFT; 349 highmem_mapnr = total_lowmem >> PAGE_SHIFT;
335 for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { 350 for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) {
336 struct page *page = pfn_to_page(pfn); 351 struct page *page = pfn_to_page(pfn);
337 352 if (lmb_is_reserved(pfn << PAGE_SHIFT))
353 continue;
338 ClearPageReserved(page); 354 ClearPageReserved(page);
339 init_page_count(page); 355 init_page_count(page);
340 __free_page(page); 356 __free_page(page);
341 totalhigh_pages++; 357 totalhigh_pages++;
358 reservedpages--;
342 } 359 }
343 totalram_pages += totalhigh_pages; 360 totalram_pages += totalhigh_pages;
344 printk(KERN_DEBUG "High memory: %luk\n", 361 printk(KERN_DEBUG "High memory: %luk\n",
diff --git a/arch/powerpc/platforms/82xx/Kconfig b/arch/powerpc/platforms/82xx/Kconfig
index 541fbb815631..4fad6c7bf9f1 100644
--- a/arch/powerpc/platforms/82xx/Kconfig
+++ b/arch/powerpc/platforms/82xx/Kconfig
@@ -26,6 +26,19 @@ config PQ2FADS
26 help 26 help
27 This option enables support for the PQ2FADS board 27 This option enables support for the PQ2FADS board
28 28
29config EP8248E
30 bool "Embedded Planet EP8248E (a.k.a. CWH-PPC-8248N-VE)"
31 select 8272
32 select 8260
33 select FSL_SOC
34 select PPC_CPM_NEW_BINDING
35 select MDIO_BITBANG
36 help
37 This enables support for the Embedded Planet EP8248E board.
38
39 This board is also resold by Freescale as the QUICCStart
40 MPC8248 Evaluation System and/or the CWH-PPC-8248N-VE.
41
29endchoice 42endchoice
30 43
31config PQ2ADS 44config PQ2ADS
diff --git a/arch/powerpc/platforms/82xx/Makefile b/arch/powerpc/platforms/82xx/Makefile
index 68c8b0c9772b..6cd5cd59bf2a 100644
--- a/arch/powerpc/platforms/82xx/Makefile
+++ b/arch/powerpc/platforms/82xx/Makefile
@@ -5,3 +5,4 @@ obj-$(CONFIG_MPC8272_ADS) += mpc8272_ads.o
5obj-$(CONFIG_CPM2) += pq2.o 5obj-$(CONFIG_CPM2) += pq2.o
6obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o 6obj-$(CONFIG_PQ2_ADS_PCI_PIC) += pq2ads-pci-pic.o
7obj-$(CONFIG_PQ2FADS) += pq2fads.o 7obj-$(CONFIG_PQ2FADS) += pq2fads.o
8obj-$(CONFIG_EP8248E) += ep8248e.o
diff --git a/arch/powerpc/platforms/82xx/ep8248e.c b/arch/powerpc/platforms/82xx/ep8248e.c
new file mode 100644
index 000000000000..ba93d8ae9b0c
--- /dev/null
+++ b/arch/powerpc/platforms/82xx/ep8248e.c
@@ -0,0 +1,324 @@
1/*
2 * Embedded Planet EP8248E support
3 *
4 * Copyright 2007 Freescale Semiconductor, Inc.
5 * Author: Scott Wood <scottwood@freescale.com>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13#include <linux/init.h>
14#include <linux/interrupt.h>
15#include <linux/fsl_devices.h>
16#include <linux/mdio-bitbang.h>
17#include <linux/of_platform.h>
18
19#include <asm/io.h>
20#include <asm/cpm2.h>
21#include <asm/udbg.h>
22#include <asm/machdep.h>
23#include <asm/time.h>
24#include <asm/mpc8260.h>
25#include <asm/prom.h>
26
27#include <sysdev/fsl_soc.h>
28#include <sysdev/cpm2_pic.h>
29
30#include "pq2.h"
31
32static u8 __iomem *ep8248e_bcsr;
33static struct device_node *ep8248e_bcsr_node;
34
35#define BCSR7_SCC2_ENABLE 0x10
36
37#define BCSR8_PHY1_ENABLE 0x80
38#define BCSR8_PHY1_POWER 0x40
39#define BCSR8_PHY2_ENABLE 0x20
40#define BCSR8_PHY2_POWER 0x10
41#define BCSR8_MDIO_READ 0x04
42#define BCSR8_MDIO_CLOCK 0x02
43#define BCSR8_MDIO_DATA 0x01
44
45#define BCSR9_USB_ENABLE 0x80
46#define BCSR9_USB_POWER 0x40
47#define BCSR9_USB_HOST 0x20
48#define BCSR9_USB_FULL_SPEED_TARGET 0x10
49
50static void __init ep8248e_pic_init(void)
51{
52 struct device_node *np = of_find_compatible_node(NULL, NULL, "fsl,pq2-pic");
53 if (!np) {
54 printk(KERN_ERR "PIC init: can not find cpm-pic node\n");
55 return;
56 }
57
58 cpm2_pic_init(np);
59 of_node_put(np);
60}
61
62static void ep8248e_set_mdc(struct mdiobb_ctrl *ctrl, int level)
63{
64 if (level)
65 setbits8(&ep8248e_bcsr[8], BCSR8_MDIO_CLOCK);
66 else
67 clrbits8(&ep8248e_bcsr[8], BCSR8_MDIO_CLOCK);
68
69 /* Read back to flush the write. */
70 in_8(&ep8248e_bcsr[8]);
71}
72
73static void ep8248e_set_mdio_dir(struct mdiobb_ctrl *ctrl, int output)
74{
75 if (output)
76 clrbits8(&ep8248e_bcsr[8], BCSR8_MDIO_READ);
77 else
78 setbits8(&ep8248e_bcsr[8], BCSR8_MDIO_READ);
79
80 /* Read back to flush the write. */
81 in_8(&ep8248e_bcsr[8]);
82}
83
84static void ep8248e_set_mdio_data(struct mdiobb_ctrl *ctrl, int data)
85{
86 if (data)
87 setbits8(&ep8248e_bcsr[8], BCSR8_MDIO_DATA);
88 else
89 clrbits8(&ep8248e_bcsr[8], BCSR8_MDIO_DATA);
90
91 /* Read back to flush the write. */
92 in_8(&ep8248e_bcsr[8]);
93}
94
95static int ep8248e_get_mdio_data(struct mdiobb_ctrl *ctrl)
96{
97 return in_8(&ep8248e_bcsr[8]) & BCSR8_MDIO_DATA;
98}
99
100static const struct mdiobb_ops ep8248e_mdio_ops = {
101 .set_mdc = ep8248e_set_mdc,
102 .set_mdio_dir = ep8248e_set_mdio_dir,
103 .set_mdio_data = ep8248e_set_mdio_data,
104 .get_mdio_data = ep8248e_get_mdio_data,
105 .owner = THIS_MODULE,
106};
107
108static struct mdiobb_ctrl ep8248e_mdio_ctrl = {
109 .ops = &ep8248e_mdio_ops,
110};
111
112static int __devinit ep8248e_mdio_probe(struct of_device *ofdev,
113 const struct of_device_id *match)
114{
115 struct mii_bus *bus;
116 struct resource res;
117 struct device_node *node;
118 int ret, i;
119
120 node = of_get_parent(ofdev->node);
121 of_node_put(node);
122 if (node != ep8248e_bcsr_node)
123 return -ENODEV;
124
125 ret = of_address_to_resource(ofdev->node, 0, &res);
126 if (ret)
127 return ret;
128
129 bus = alloc_mdio_bitbang(&ep8248e_mdio_ctrl);
130 if (!bus)
131 return -ENOMEM;
132
133 bus->phy_mask = 0;
134 bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
135
136 for (i = 0; i < PHY_MAX_ADDR; i++)
137 bus->irq[i] = -1;
138
139 bus->name = "ep8248e-mdio-bitbang";
140 bus->dev = &ofdev->dev;
141 bus->id = res.start;
142
143 return mdiobus_register(bus);
144}
145
146static int ep8248e_mdio_remove(struct of_device *ofdev)
147{
148 BUG();
149 return 0;
150}
151
152static const struct of_device_id ep8248e_mdio_match[] = {
153 {
154 .compatible = "fsl,ep8248e-mdio-bitbang",
155 },
156 {},
157};
158
159static struct of_platform_driver ep8248e_mdio_driver = {
160 .driver = {
161 .name = "ep8248e-mdio-bitbang",
162 },
163 .match_table = ep8248e_mdio_match,
164 .probe = ep8248e_mdio_probe,
165 .remove = ep8248e_mdio_remove,
166};
167
168struct cpm_pin {
169 int port, pin, flags;
170};
171
172static __initdata struct cpm_pin ep8248e_pins[] = {
173 /* SMC1 */
174 {2, 4, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
175 {2, 5, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
176
177 /* SCC1 */
178 {2, 14, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
179 {2, 15, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
180 {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
181 {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
182 {3, 31, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
183
184 /* FCC1 */
185 {0, 14, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
186 {0, 15, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
187 {0, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
188 {0, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
189 {0, 18, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
190 {0, 19, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
191 {0, 20, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
192 {0, 21, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
193 {0, 26, CPM_PIN_INPUT | CPM_PIN_SECONDARY},
194 {0, 27, CPM_PIN_INPUT | CPM_PIN_SECONDARY},
195 {0, 28, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
196 {0, 29, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
197 {0, 30, CPM_PIN_INPUT | CPM_PIN_SECONDARY},
198 {0, 31, CPM_PIN_INPUT | CPM_PIN_SECONDARY},
199 {2, 21, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
200 {2, 22, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
201
202 /* FCC2 */
203 {1, 18, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
204 {1, 19, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
205 {1, 20, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
206 {1, 21, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
207 {1, 22, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
208 {1, 23, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
209 {1, 24, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
210 {1, 25, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
211 {1, 26, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
212 {1, 27, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
213 {1, 28, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
214 {1, 29, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
215 {1, 30, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
216 {1, 31, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
217 {2, 18, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
218 {2, 19, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
219
220 /* I2C */
221 {4, 14, CPM_PIN_INPUT | CPM_PIN_SECONDARY},
222 {4, 15, CPM_PIN_INPUT | CPM_PIN_SECONDARY},
223
224 /* USB */
225 {2, 10, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
226 {2, 11, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
227 {2, 20, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
228 {2, 24, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
229 {3, 23, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
230 {3, 24, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
231 {3, 25, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
232};
233
234static void __init init_ioports(void)
235{
236 int i;
237
238 for (i = 0; i < ARRAY_SIZE(ep8248e_pins); i++) {
239 const struct cpm_pin *pin = &ep8248e_pins[i];
240 cpm2_set_pin(pin->port, pin->pin, pin->flags);
241 }
242
243 cpm2_smc_clk_setup(CPM_CLK_SMC1, CPM_BRG7);
244 cpm2_clk_setup(CPM_CLK_SCC1, CPM_BRG1, CPM_CLK_RX);
245 cpm2_clk_setup(CPM_CLK_SCC1, CPM_BRG1, CPM_CLK_TX);
246 cpm2_clk_setup(CPM_CLK_SCC3, CPM_CLK8, CPM_CLK_TX); /* USB */
247 cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK11, CPM_CLK_RX);
248 cpm2_clk_setup(CPM_CLK_FCC1, CPM_CLK10, CPM_CLK_TX);
249 cpm2_clk_setup(CPM_CLK_FCC2, CPM_CLK13, CPM_CLK_RX);
250 cpm2_clk_setup(CPM_CLK_FCC2, CPM_CLK14, CPM_CLK_TX);
251}
252
253static void __init ep8248e_setup_arch(void)
254{
255 if (ppc_md.progress)
256 ppc_md.progress("ep8248e_setup_arch()", 0);
257
258 cpm2_reset();
259
260 /* When this is set, snooping CPM DMA from RAM causes
261 * machine checks. See erratum SIU18.
262 */
263 clrbits32(&cpm2_immr->im_siu_conf.siu_82xx.sc_bcr, MPC82XX_BCR_PLDP);
264
265 ep8248e_bcsr_node =
266 of_find_compatible_node(NULL, NULL, "fsl,ep8248e-bcsr");
267 if (!ep8248e_bcsr_node) {
268 printk(KERN_ERR "No bcsr in device tree\n");
269 return;
270 }
271
272 ep8248e_bcsr = of_iomap(ep8248e_bcsr_node, 0);
273 if (!ep8248e_bcsr) {
274 printk(KERN_ERR "Cannot map BCSR registers\n");
275 of_node_put(ep8248e_bcsr_node);
276 ep8248e_bcsr_node = NULL;
277 return;
278 }
279
280 setbits8(&ep8248e_bcsr[7], BCSR7_SCC2_ENABLE);
281 setbits8(&ep8248e_bcsr[8], BCSR8_PHY1_ENABLE | BCSR8_PHY1_POWER |
282 BCSR8_PHY2_ENABLE | BCSR8_PHY2_POWER);
283
284 init_ioports();
285
286 if (ppc_md.progress)
287 ppc_md.progress("ep8248e_setup_arch(), finish", 0);
288}
289
290static __initdata struct of_device_id of_bus_ids[] = {
291 { .compatible = "simple-bus", },
292 { .compatible = "fsl,ep8248e-bcsr", },
293 {},
294};
295
296static int __init declare_of_platform_devices(void)
297{
298 of_platform_bus_probe(NULL, of_bus_ids, NULL);
299 of_register_platform_driver(&ep8248e_mdio_driver);
300
301 return 0;
302}
303machine_device_initcall(ep8248e, declare_of_platform_devices);
304
305/*
306 * Called very early, device-tree isn't unflattened
307 */
308static int __init ep8248e_probe(void)
309{
310 unsigned long root = of_get_flat_dt_root();
311 return of_flat_dt_is_compatible(root, "fsl,ep8248e");
312}
313
314define_machine(ep8248e)
315{
316 .name = "Embedded Planet EP8248E",
317 .probe = ep8248e_probe,
318 .setup_arch = ep8248e_setup_arch,
319 .init_IRQ = ep8248e_pic_init,
320 .get_irq = cpm2_get_irq,
321 .calibrate_decr = generic_calibrate_decr,
322 .restart = pq2_restart,
323 .progress = udbg_progress,
324};
diff --git a/arch/powerpc/platforms/83xx/mpc8313_rdb.c b/arch/powerpc/platforms/83xx/mpc8313_rdb.c
index 6fb82993967c..4996b7dfdf1d 100644
--- a/arch/powerpc/platforms/83xx/mpc8313_rdb.c
+++ b/arch/powerpc/platforms/83xx/mpc8313_rdb.c
@@ -14,6 +14,7 @@
14 */ 14 */
15 15
16#include <linux/pci.h> 16#include <linux/pci.h>
17#include <linux/of_platform.h>
17 18
18#include <asm/time.h> 19#include <asm/time.h>
19#include <asm/ipic.h> 20#include <asm/ipic.h>
@@ -75,6 +76,18 @@ static int __init mpc8313_rdb_probe(void)
75 return of_flat_dt_is_compatible(root, "MPC8313ERDB"); 76 return of_flat_dt_is_compatible(root, "MPC8313ERDB");
76} 77}
77 78
79static struct of_device_id __initdata of_bus_ids[] = {
80 { .compatible = "simple-bus" },
81 {},
82};
83
84static int __init declare_of_platform_devices(void)
85{
86 of_platform_bus_probe(NULL, of_bus_ids, NULL);
87 return 0;
88}
89machine_device_initcall(mpc8313_rdb, declare_of_platform_devices);
90
78define_machine(mpc8313_rdb) { 91define_machine(mpc8313_rdb) {
79 .name = "MPC8313 RDB", 92 .name = "MPC8313 RDB",
80 .probe = mpc8313_rdb_probe, 93 .probe = mpc8313_rdb_probe,
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c
index 1e570bb947fc..dbdd4adef645 100644
--- a/arch/powerpc/platforms/83xx/mpc832x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c
@@ -110,15 +110,12 @@ static struct of_device_id mpc832x_ids[] = {
110 110
111static int __init mpc832x_declare_of_platform_devices(void) 111static int __init mpc832x_declare_of_platform_devices(void)
112{ 112{
113 if (!machine_is(mpc832x_mds))
114 return 0;
115
116 /* Publish the QE devices */ 113 /* Publish the QE devices */
117 of_platform_bus_probe(NULL, mpc832x_ids, NULL); 114 of_platform_bus_probe(NULL, mpc832x_ids, NULL);
118 115
119 return 0; 116 return 0;
120} 117}
121device_initcall(mpc832x_declare_of_platform_devices); 118machine_device_initcall(mpc832x_mds, mpc832x_declare_of_platform_devices);
122 119
123static void __init mpc832x_sys_init_IRQ(void) 120static void __init mpc832x_sys_init_IRQ(void)
124{ 121{
diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c
index ffb2e9361ce3..5fddd2285abb 100644
--- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c
+++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c
@@ -63,9 +63,6 @@ static struct spi_board_info mpc832x_spi_boardinfo = {
63 63
64static int __init mpc832x_spi_init(void) 64static int __init mpc832x_spi_init(void)
65{ 65{
66 if (!machine_is(mpc832x_rdb))
67 return 0;
68
69 par_io_config_pin(3, 0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */ 66 par_io_config_pin(3, 0, 3, 0, 1, 0); /* SPI1 MOSI, I/O */
70 par_io_config_pin(3, 1, 3, 0, 1, 0); /* SPI1 MISO, I/O */ 67 par_io_config_pin(3, 1, 3, 0, 1, 0); /* SPI1 MISO, I/O */
71 par_io_config_pin(3, 2, 3, 0, 1, 0); /* SPI1 CLK, I/O */ 68 par_io_config_pin(3, 2, 3, 0, 1, 0); /* SPI1 CLK, I/O */
@@ -80,7 +77,7 @@ static int __init mpc832x_spi_init(void)
80 mpc83xx_spi_deactivate_cs); 77 mpc83xx_spi_deactivate_cs);
81} 78}
82 79
83device_initcall(mpc832x_spi_init); 80machine_device_initcall(mpc832x_rdb, mpc832x_spi_init);
84 81
85/* ************************************************************************ 82/* ************************************************************************
86 * 83 *
@@ -123,15 +120,12 @@ static struct of_device_id mpc832x_ids[] = {
123 120
124static int __init mpc832x_declare_of_platform_devices(void) 121static int __init mpc832x_declare_of_platform_devices(void)
125{ 122{
126 if (!machine_is(mpc832x_rdb))
127 return 0;
128
129 /* Publish the QE devices */ 123 /* Publish the QE devices */
130 of_platform_bus_probe(NULL, mpc832x_ids, NULL); 124 of_platform_bus_probe(NULL, mpc832x_ids, NULL);
131 125
132 return 0; 126 return 0;
133} 127}
134device_initcall(mpc832x_declare_of_platform_devices); 128machine_device_initcall(mpc832x_rdb, mpc832x_declare_of_platform_devices);
135 129
136void __init mpc832x_rdb_init_IRQ(void) 130void __init mpc832x_rdb_init_IRQ(void)
137{ 131{
diff --git a/arch/powerpc/platforms/83xx/mpc834x_itx.c b/arch/powerpc/platforms/83xx/mpc834x_itx.c
index aa768199432d..50e8f632061c 100644
--- a/arch/powerpc/platforms/83xx/mpc834x_itx.c
+++ b/arch/powerpc/platforms/83xx/mpc834x_itx.c
@@ -23,6 +23,7 @@
23#include <linux/delay.h> 23#include <linux/delay.h>
24#include <linux/seq_file.h> 24#include <linux/seq_file.h>
25#include <linux/root_dev.h> 25#include <linux/root_dev.h>
26#include <linux/of_platform.h>
26 27
27#include <asm/system.h> 28#include <asm/system.h>
28#include <asm/atomic.h> 29#include <asm/atomic.h>
@@ -37,6 +38,17 @@
37 38
38#include "mpc83xx.h" 39#include "mpc83xx.h"
39 40
41static struct of_device_id __initdata mpc834x_itx_ids[] = {
42 { .compatible = "fsl,pq2pro-localbus", },
43 {},
44};
45
46static int __init mpc834x_itx_declare_of_platform_devices(void)
47{
48 return of_platform_bus_probe(NULL, mpc834x_itx_ids, NULL);
49}
50machine_device_initcall(mpc834x_itx, mpc834x_itx_declare_of_platform_devices);
51
40/* ************************************************************************ 52/* ************************************************************************
41 * 53 *
42 * Setup the architecture 54 * Setup the architecture
diff --git a/arch/powerpc/platforms/83xx/mpc834x_mds.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c
index 459fb7227e76..2b8a0a3f8557 100644
--- a/arch/powerpc/platforms/83xx/mpc834x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c
@@ -115,13 +115,10 @@ static struct of_device_id mpc834x_ids[] = {
115 115
116static int __init mpc834x_declare_of_platform_devices(void) 116static int __init mpc834x_declare_of_platform_devices(void)
117{ 117{
118 if (!machine_is(mpc834x_mds))
119 return 0;
120
121 of_platform_bus_probe(NULL, mpc834x_ids, NULL); 118 of_platform_bus_probe(NULL, mpc834x_ids, NULL);
122 return 0; 119 return 0;
123} 120}
124device_initcall(mpc834x_declare_of_platform_devices); 121machine_device_initcall(mpc834x_mds, mpc834x_declare_of_platform_devices);
125 122
126/* 123/*
127 * Called very early, MMU is off, device-tree isn't unflattened 124 * Called very early, MMU is off, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c
index 2ac9890b763c..db491ec006e0 100644
--- a/arch/powerpc/platforms/83xx/mpc836x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c
@@ -141,15 +141,12 @@ static struct of_device_id mpc836x_ids[] = {
141 141
142static int __init mpc836x_declare_of_platform_devices(void) 142static int __init mpc836x_declare_of_platform_devices(void)
143{ 143{
144 if (!machine_is(mpc836x_mds))
145 return 0;
146
147 /* Publish the QE devices */ 144 /* Publish the QE devices */
148 of_platform_bus_probe(NULL, mpc836x_ids, NULL); 145 of_platform_bus_probe(NULL, mpc836x_ids, NULL);
149 146
150 return 0; 147 return 0;
151} 148}
152device_initcall(mpc836x_declare_of_platform_devices); 149machine_device_initcall(mpc836x_mds, mpc836x_declare_of_platform_devices);
153 150
154static void __init mpc836x_mds_init_IRQ(void) 151static void __init mpc836x_mds_init_IRQ(void)
155{ 152{
diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c b/arch/powerpc/platforms/83xx/mpc837x_mds.c
index 9cdc32b4fa18..8a9c26973605 100644
--- a/arch/powerpc/platforms/83xx/mpc837x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c
@@ -22,6 +22,56 @@
22 22
23#include "mpc83xx.h" 23#include "mpc83xx.h"
24 24
25#define BCSR12_USB_SER_MASK 0x8a
26#define BCSR12_USB_SER_PIN 0x80
27#define BCSR12_USB_SER_DEVICE 0x02
28extern int mpc837x_usb_cfg(void);
29
30static int mpc837xmds_usb_cfg(void)
31{
32 struct device_node *np;
33 const void *phy_type, *mode;
34 void __iomem *bcsr_regs = NULL;
35 u8 bcsr12;
36 int ret;
37
38 ret = mpc837x_usb_cfg();
39 if (ret)
40 return ret;
41 /* Map BCSR area */
42 np = of_find_node_by_name(NULL, "bcsr");
43 if (np) {
44 struct resource res;
45
46 of_address_to_resource(np, 0, &res);
47 bcsr_regs = ioremap(res.start, res.end - res.start + 1);
48 of_node_put(np);
49 }
50 if (!bcsr_regs)
51 return -1;
52
53 np = of_find_node_by_name(NULL, "usb");
54 if (!np)
55 return -ENODEV;
56 phy_type = of_get_property(np, "phy_type", NULL);
57 if (phy_type && !strcmp(phy_type, "ulpi")) {
58 clrbits8(bcsr_regs + 12, BCSR12_USB_SER_PIN);
59 } else if (phy_type && !strcmp(phy_type, "serial")) {
60 mode = of_get_property(np, "dr_mode", NULL);
61 bcsr12 = in_8(bcsr_regs + 12) & ~BCSR12_USB_SER_MASK;
62 bcsr12 |= BCSR12_USB_SER_PIN;
63 if (mode && !strcmp(mode, "peripheral"))
64 bcsr12 |= BCSR12_USB_SER_DEVICE;
65 out_8(bcsr_regs + 12, bcsr12);
66 } else {
67 printk(KERN_ERR "USB DR: unsupported PHY\n");
68 }
69
70 of_node_put(np);
71 iounmap(bcsr_regs);
72 return 0;
73}
74
25/* ************************************************************************ 75/* ************************************************************************
26 * 76 *
27 * Setup the architecture 77 * Setup the architecture
@@ -40,6 +90,7 @@ static void __init mpc837x_mds_setup_arch(void)
40 for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") 90 for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
41 mpc83xx_add_bridge(np); 91 mpc83xx_add_bridge(np);
42#endif 92#endif
93 mpc837xmds_usb_cfg();
43} 94}
44 95
45static struct of_device_id mpc837x_ids[] = { 96static struct of_device_id mpc837x_ids[] = {
@@ -50,15 +101,12 @@ static struct of_device_id mpc837x_ids[] = {
50 101
51static int __init mpc837x_declare_of_platform_devices(void) 102static int __init mpc837x_declare_of_platform_devices(void)
52{ 103{
53 if (!machine_is(mpc837x_mds))
54 return 0;
55
56 /* Publish of_device */ 104 /* Publish of_device */
57 of_platform_bus_probe(NULL, mpc837x_ids, NULL); 105 of_platform_bus_probe(NULL, mpc837x_ids, NULL);
58 106
59 return 0; 107 return 0;
60} 108}
61device_initcall(mpc837x_declare_of_platform_devices); 109machine_device_initcall(mpc837x_mds, mpc837x_declare_of_platform_devices);
62 110
63static void __init mpc837x_mds_init_IRQ(void) 111static void __init mpc837x_mds_init_IRQ(void)
64{ 112{
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h
index b778cb4f3fb5..88bb748aff0d 100644
--- a/arch/powerpc/platforms/83xx/mpc83xx.h
+++ b/arch/powerpc/platforms/83xx/mpc83xx.h
@@ -14,6 +14,7 @@
14#define MPC83XX_SCCR_USB_DRCM_11 0x00300000 14#define MPC83XX_SCCR_USB_DRCM_11 0x00300000
15#define MPC83XX_SCCR_USB_DRCM_01 0x00100000 15#define MPC83XX_SCCR_USB_DRCM_01 0x00100000
16#define MPC83XX_SCCR_USB_DRCM_10 0x00200000 16#define MPC83XX_SCCR_USB_DRCM_10 0x00200000
17#define MPC837X_SCCR_USB_DRCM_11 0x00c00000
17 18
18/* system i/o configuration register low */ 19/* system i/o configuration register low */
19#define MPC83XX_SICRL_OFFS 0x114 20#define MPC83XX_SICRL_OFFS 0x114
@@ -22,6 +23,8 @@
22#define MPC834X_SICRL_USB1 0x20000000 23#define MPC834X_SICRL_USB1 0x20000000
23#define MPC831X_SICRL_USB_MASK 0x00000c00 24#define MPC831X_SICRL_USB_MASK 0x00000c00
24#define MPC831X_SICRL_USB_ULPI 0x00000800 25#define MPC831X_SICRL_USB_ULPI 0x00000800
26#define MPC837X_SICRL_USB_MASK 0xf0000000
27#define MPC837X_SICRL_USB_ULPI 0x50000000
25 28
26/* system i/o configuration register high */ 29/* system i/o configuration register high */
27#define MPC83XX_SICRH_OFFS 0x118 30#define MPC83XX_SICRH_OFFS 0x118
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c
index b45160f8d084..6a454a4087c8 100644
--- a/arch/powerpc/platforms/83xx/usb.c
+++ b/arch/powerpc/platforms/83xx/usb.c
@@ -41,7 +41,7 @@ int mpc834x_usb_cfg(void)
41 sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK; 41 sicrl = in_be32(immap + MPC83XX_SICRL_OFFS) & ~MPC834X_SICRL_USB_MASK;
42 sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI; 42 sicrh = in_be32(immap + MPC83XX_SICRH_OFFS) & ~MPC834X_SICRH_USB_UTMI;
43 43
44 np = of_find_compatible_node(NULL, "usb", "fsl-usb2-dr"); 44 np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr");
45 if (np) { 45 if (np) {
46 sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ 46 sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */
47 47
@@ -67,7 +67,7 @@ int mpc834x_usb_cfg(void)
67 port0_is_dr = 1; 67 port0_is_dr = 1;
68 of_node_put(np); 68 of_node_put(np);
69 } 69 }
70 np = of_find_compatible_node(NULL, "usb", "fsl-usb2-mph"); 70 np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph");
71 if (np) { 71 if (np) {
72 sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */ 72 sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */
73 73
@@ -111,7 +111,7 @@ int mpc831x_usb_cfg(void)
111 const void *dr_mode; 111 const void *dr_mode;
112#endif 112#endif
113 113
114 np = of_find_compatible_node(NULL, "usb", "fsl-usb2-dr"); 114 np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr");
115 if (!np) 115 if (!np)
116 return -ENODEV; 116 return -ENODEV;
117 prop = of_get_property(np, "phy_type", NULL); 117 prop = of_get_property(np, "phy_type", NULL);
@@ -179,3 +179,43 @@ int mpc831x_usb_cfg(void)
179 return ret; 179 return ret;
180} 180}
181#endif /* CONFIG_PPC_MPC831x */ 181#endif /* CONFIG_PPC_MPC831x */
182
183#ifdef CONFIG_PPC_MPC837x
184int mpc837x_usb_cfg(void)
185{
186 void __iomem *immap;
187 struct device_node *np = NULL;
188 const void *prop;
189 int ret = 0;
190
191 np = of_find_compatible_node(NULL, NULL, "fsl-usb2-dr");
192 if (!np)
193 return -ENODEV;
194 prop = of_get_property(np, "phy_type", NULL);
195
196 if (!prop || (strcmp(prop, "ulpi") && strcmp(prop, "serial"))) {
197 printk(KERN_WARNING "837x USB PHY type not supported\n");
198 of_node_put(np);
199 return -EINVAL;
200 }
201
202 /* Map IMMR space for pin and clock settings */
203 immap = ioremap(get_immrbase(), 0x1000);
204 if (!immap) {
205 of_node_put(np);
206 return -ENOMEM;
207 }
208
209 /* Configure clock */
210 clrsetbits_be32(immap + MPC83XX_SCCR_OFFS, MPC837X_SCCR_USB_DRCM_11,
211 MPC837X_SCCR_USB_DRCM_11);
212
213 /* Configure pin mux for ULPI/serial */
214 clrsetbits_be32(immap + MPC83XX_SICRL_OFFS, MPC837X_SICRL_USB_MASK,
215 MPC837X_SICRL_USB_ULPI);
216
217 iounmap(immap);
218 of_node_put(np);
219 return ret;
220}
221#endif /* CONFIG_PPC_MPC837x */
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
index bccdc25f83a2..4e0305096114 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
@@ -52,9 +52,9 @@ static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
52{ 52{
53 int cascade_irq; 53 int cascade_irq;
54 54
55 while ((cascade_irq = cpm2_get_irq()) >= 0) { 55 while ((cascade_irq = cpm2_get_irq()) >= 0)
56 generic_handle_irq(cascade_irq); 56 generic_handle_irq(cascade_irq);
57 } 57
58 desc->chip->eoi(irq); 58 desc->chip->eoi(irq);
59} 59}
60 60
@@ -70,13 +70,12 @@ static void __init mpc85xx_ads_pic_init(void)
70#endif 70#endif
71 71
72 np = of_find_node_by_type(np, "open-pic"); 72 np = of_find_node_by_type(np, "open-pic");
73 73 if (!np) {
74 if (np == NULL) {
75 printk(KERN_ERR "Could not find open-pic node\n"); 74 printk(KERN_ERR "Could not find open-pic node\n");
76 return; 75 return;
77 } 76 }
78 77
79 if(of_address_to_resource(np, 0, &r)) { 78 if (of_address_to_resource(np, 0, &r)) {
80 printk(KERN_ERR "Could not map mpic register space\n"); 79 printk(KERN_ERR "Could not map mpic register space\n");
81 of_node_put(np); 80 of_node_put(np);
82 return; 81 return;
@@ -100,6 +99,7 @@ static void __init mpc85xx_ads_pic_init(void)
100 irq = irq_of_parse_and_map(np, 0); 99 irq = irq_of_parse_and_map(np, 0);
101 100
102 cpm2_pic_init(np); 101 cpm2_pic_init(np);
102 of_node_put(np);
103 set_irq_chained_handler(irq, cpm2_cascade); 103 set_irq_chained_handler(irq, cpm2_cascade);
104#endif 104#endif
105} 105}
@@ -112,7 +112,7 @@ struct cpm_pin {
112 int port, pin, flags; 112 int port, pin, flags;
113}; 113};
114 114
115static struct cpm_pin mpc8560_ads_pins[] = { 115static const struct cpm_pin mpc8560_ads_pins[] = {
116 /* SCC1 */ 116 /* SCC1 */
117 {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 117 {3, 29, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
118 {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY}, 118 {3, 30, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
@@ -233,13 +233,11 @@ static struct of_device_id __initdata of_bus_ids[] = {
233 233
234static int __init declare_of_platform_devices(void) 234static int __init declare_of_platform_devices(void)
235{ 235{
236 if (!machine_is(mpc85xx_ads))
237 return 0;
238
239 of_platform_bus_probe(NULL, of_bus_ids, NULL); 236 of_platform_bus_probe(NULL, of_bus_ids, NULL);
237
240 return 0; 238 return 0;
241} 239}
242device_initcall(declare_of_platform_devices); 240machine_device_initcall(mpc85xx_ads, declare_of_platform_devices);
243 241
244/* 242/*
245 * Called very early, device-tree isn't unflattened 243 * Called very early, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index 4d063eec6210..8b1de7884be6 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -222,9 +222,6 @@ static int mpc85xx_cds_8259_attach(void)
222 struct device_node *cascade_node = NULL; 222 struct device_node *cascade_node = NULL;
223 int cascade_irq; 223 int cascade_irq;
224 224
225 if (!machine_is(mpc85xx_cds))
226 return 0;
227
228 /* Initialize the i8259 controller */ 225 /* Initialize the i8259 controller */
229 for_each_node_by_type(np, "interrupt-controller") 226 for_each_node_by_type(np, "interrupt-controller")
230 if (of_device_is_compatible(np, "chrp,iic")) { 227 if (of_device_is_compatible(np, "chrp,iic")) {
@@ -262,8 +259,7 @@ static int mpc85xx_cds_8259_attach(void)
262 259
263 return 0; 260 return 0;
264} 261}
265 262machine_device_initcall(mpc85xx_cds, mpc85xx_cds_8259_attach);
266device_initcall(mpc85xx_cds_8259_attach);
267 263
268#endif /* CONFIG_PPC_I8259 */ 264#endif /* CONFIG_PPC_I8259 */
269 265
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index e6c63a5b1efb..4fdf5abefffd 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -144,15 +144,12 @@ static struct of_device_id mpc85xx_ids[] = {
144 144
145static int __init mpc85xx_publish_devices(void) 145static int __init mpc85xx_publish_devices(void)
146{ 146{
147 if (!machine_is(mpc85xx_mds))
148 return 0;
149
150 /* Publish the QE devices */ 147 /* Publish the QE devices */
151 of_platform_bus_probe(NULL,mpc85xx_ids,NULL); 148 of_platform_bus_probe(NULL, mpc85xx_ids, NULL);
152 149
153 return 0; 150 return 0;
154} 151}
155device_initcall(mpc85xx_publish_devices); 152machine_device_initcall(mpc85xx_mds, mpc85xx_publish_devices);
156 153
157static void __init mpc85xx_mds_pic_init(void) 154static void __init mpc85xx_mds_pic_init(void)
158{ 155{
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
index c6d2f48f8f3d..0b07485641fe 100644
--- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
+++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
@@ -34,9 +34,24 @@
34 34
35#include <asm/mpic.h> 35#include <asm/mpic.h>
36 36
37#include <linux/of_platform.h>
37#include <sysdev/fsl_pci.h> 38#include <sysdev/fsl_pci.h>
38#include <sysdev/fsl_soc.h> 39#include <sysdev/fsl_soc.h>
39 40
41static struct of_device_id __initdata mpc8610_ids[] = {
42 { .compatible = "fsl,mpc8610-immr", },
43 {}
44};
45
46static int __init mpc8610_declare_of_platform_devices(void)
47{
48 /* Without this call, the SSI device driver won't get probed. */
49 of_platform_bus_probe(NULL, mpc8610_ids, NULL);
50
51 return 0;
52}
53machine_device_initcall(mpc86xx_hpcd, mpc8610_declare_of_platform_devices);
54
40void __init 55void __init
41mpc86xx_hpcd_init_irq(void) 56mpc86xx_hpcd_init_irq(void)
42{ 57{
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
index 14f4e527e7ac..cfbe8c52e263 100644
--- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
+++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
@@ -18,6 +18,7 @@
18#include <linux/kdev_t.h> 18#include <linux/kdev_t.h>
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/seq_file.h> 20#include <linux/seq_file.h>
21#include <linux/of_platform.h>
21 22
22#include <asm/system.h> 23#include <asm/system.h>
23#include <asm/time.h> 24#include <asm/time.h>
@@ -212,6 +213,19 @@ mpc86xx_time_init(void)
212 return 0; 213 return 0;
213} 214}
214 215
216static __initdata struct of_device_id of_bus_ids[] = {
217 { .compatible = "simple-bus", },
218 {},
219};
220
221static int __init declare_of_platform_devices(void)
222{
223 of_platform_bus_probe(NULL, of_bus_ids, NULL);
224
225 return 0;
226}
227machine_device_initcall(mpc86xx_hpcn, declare_of_platform_devices);
228
215define_machine(mpc86xx_hpcn) { 229define_machine(mpc86xx_hpcn) {
216 .name = "MPC86xx HPCN", 230 .name = "MPC86xx HPCN",
217 .probe = mpc86xx_hpcn_probe, 231 .probe = mpc86xx_hpcn_probe,
diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig
index 91fbe4241918..7fd224ca233d 100644
--- a/arch/powerpc/platforms/8xx/Kconfig
+++ b/arch/powerpc/platforms/8xx/Kconfig
@@ -44,6 +44,15 @@ config PPC_EP88XC
44 This board is also resold by Freescale as the QUICCStart 44 This board is also resold by Freescale as the QUICCStart
45 MPC885 Evaluation System and/or the CWH-PPC-885XN-VE. 45 MPC885 Evaluation System and/or the CWH-PPC-885XN-VE.
46 46
47config PPC_ADDER875
48 bool "Analogue & Micro Adder 875"
49 select CPM1
50 select PPC_CPM_NEW_BINDING
51 select REDBOOT
52 help
53 This enables support for the Analogue & Micro Adder 875
54 board.
55
47endchoice 56endchoice
48 57
49menu "Freescale Ethernet driver platform-specific options" 58menu "Freescale Ethernet driver platform-specific options"
diff --git a/arch/powerpc/platforms/8xx/Makefile b/arch/powerpc/platforms/8xx/Makefile
index 8b7098018b59..7b71d9c8fb45 100644
--- a/arch/powerpc/platforms/8xx/Makefile
+++ b/arch/powerpc/platforms/8xx/Makefile
@@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_8xx) += m8xx_setup.o
5obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o 5obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o
6obj-$(CONFIG_MPC86XADS) += mpc86xads_setup.o 6obj-$(CONFIG_MPC86XADS) += mpc86xads_setup.o
7obj-$(CONFIG_PPC_EP88XC) += ep88xc.o 7obj-$(CONFIG_PPC_EP88XC) += ep88xc.o
8obj-$(CONFIG_PPC_ADDER875) += adder875.o
diff --git a/arch/powerpc/platforms/8xx/adder875.c b/arch/powerpc/platforms/8xx/adder875.c
new file mode 100644
index 000000000000..c6bc0783c3b0
--- /dev/null
+++ b/arch/powerpc/platforms/8xx/adder875.c
@@ -0,0 +1,118 @@
1/* Analogue & Micro Adder MPC875 board support
2 *
3 * Author: Scott Wood <scottwood@freescale.com>
4 *
5 * Copyright (c) 2007 Freescale Semiconductor, Inc.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License, version 2, as
9 * published by the Free Software Foundation.
10 */
11
12#include <linux/init.h>
13#include <linux/fs_enet_pd.h>
14#include <linux/of_platform.h>
15
16#include <asm/time.h>
17#include <asm/machdep.h>
18#include <asm/commproc.h>
19#include <asm/fs_pd.h>
20#include <asm/udbg.h>
21#include <asm/prom.h>
22
23#include <sysdev/commproc.h>
24
25struct cpm_pin {
26 int port, pin, flags;
27};
28
29static __initdata struct cpm_pin adder875_pins[] = {
30 /* SMC1 */
31 {CPM_PORTB, 24, CPM_PIN_INPUT}, /* RX */
32 {CPM_PORTB, 25, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, /* TX */
33
34 /* MII1 */
35 {CPM_PORTA, 0, CPM_PIN_INPUT},
36 {CPM_PORTA, 1, CPM_PIN_INPUT},
37 {CPM_PORTA, 2, CPM_PIN_INPUT},
38 {CPM_PORTA, 3, CPM_PIN_INPUT},
39 {CPM_PORTA, 4, CPM_PIN_OUTPUT},
40 {CPM_PORTA, 10, CPM_PIN_OUTPUT},
41 {CPM_PORTA, 11, CPM_PIN_OUTPUT},
42 {CPM_PORTB, 19, CPM_PIN_INPUT},
43 {CPM_PORTB, 31, CPM_PIN_INPUT},
44 {CPM_PORTC, 12, CPM_PIN_INPUT},
45 {CPM_PORTC, 13, CPM_PIN_INPUT},
46 {CPM_PORTE, 30, CPM_PIN_OUTPUT},
47 {CPM_PORTE, 31, CPM_PIN_OUTPUT},
48
49 /* MII2 */
50 {CPM_PORTE, 14, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
51 {CPM_PORTE, 15, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
52 {CPM_PORTE, 16, CPM_PIN_OUTPUT},
53 {CPM_PORTE, 17, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
54 {CPM_PORTE, 18, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
55 {CPM_PORTE, 19, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
56 {CPM_PORTE, 20, CPM_PIN_OUTPUT | CPM_PIN_SECONDARY},
57 {CPM_PORTE, 21, CPM_PIN_OUTPUT},
58 {CPM_PORTE, 22, CPM_PIN_OUTPUT},
59 {CPM_PORTE, 23, CPM_PIN_OUTPUT},
60 {CPM_PORTE, 24, CPM_PIN_OUTPUT},
61 {CPM_PORTE, 25, CPM_PIN_OUTPUT},
62 {CPM_PORTE, 26, CPM_PIN_OUTPUT},
63 {CPM_PORTE, 27, CPM_PIN_OUTPUT},
64 {CPM_PORTE, 28, CPM_PIN_OUTPUT},
65 {CPM_PORTE, 29, CPM_PIN_OUTPUT},
66};
67
68static void __init init_ioports(void)
69{
70 int i;
71
72 for (i = 0; i < ARRAY_SIZE(adder875_pins); i++) {
73 const struct cpm_pin *pin = &adder875_pins[i];
74 cpm1_set_pin(pin->port, pin->pin, pin->flags);
75 }
76
77 cpm1_clk_setup(CPM_CLK_SMC1, CPM_BRG1, CPM_CLK_RTX);
78
79 /* Set FEC1 and FEC2 to MII mode */
80 clrbits32(&mpc8xx_immr->im_cpm.cp_cptr, 0x00000180);
81}
82
83static void __init adder875_setup(void)
84{
85 cpm_reset();
86 init_ioports();
87}
88
89static int __init adder875_probe(void)
90{
91 unsigned long root = of_get_flat_dt_root();
92 return of_flat_dt_is_compatible(root, "analogue-and-micro,adder875");
93}
94
95static __initdata struct of_device_id of_bus_ids[] = {
96 { .compatible = "simple-bus", },
97 {},
98};
99
100static int __init declare_of_platform_devices(void)
101{
102 of_platform_bus_probe(NULL, of_bus_ids, NULL);
103 return 0;
104}
105machine_device_initcall(adder875, declare_of_platform_devices);
106
107define_machine(adder875) {
108 .name = "Adder MPC875",
109 .probe = adder875_probe,
110 .setup_arch = adder875_setup,
111 .init_IRQ = m8xx_pic_init,
112 .get_irq = mpc8xx_get_irq,
113 .restart = mpc8xx_restart,
114 .calibrate_decr = generic_calibrate_decr,
115 .set_rtc_time = mpc8xx_set_rtc_time,
116 .get_rtc_time = mpc8xx_get_rtc_time,
117 .progress = udbg_progress,
118};
diff --git a/arch/powerpc/platforms/8xx/ep88xc.c b/arch/powerpc/platforms/8xx/ep88xc.c
index c518b6cc5fab..88afa353f1d2 100644
--- a/arch/powerpc/platforms/8xx/ep88xc.c
+++ b/arch/powerpc/platforms/8xx/ep88xc.c
@@ -155,12 +155,11 @@ static struct of_device_id __initdata of_bus_ids[] = {
155static int __init declare_of_platform_devices(void) 155static int __init declare_of_platform_devices(void)
156{ 156{
157 /* Publish the QE devices */ 157 /* Publish the QE devices */
158 if (machine_is(ep88xc)) 158 of_platform_bus_probe(NULL, of_bus_ids, NULL);
159 of_platform_bus_probe(NULL, of_bus_ids, NULL);
160 159
161 return 0; 160 return 0;
162} 161}
163device_initcall(declare_of_platform_devices); 162machine_device_initcall(ep88xc, declare_of_platform_devices);
164 163
165define_machine(ep88xc) { 164define_machine(ep88xc) {
166 .name = "Embedded Planet EP88xC", 165 .name = "Embedded Planet EP88xC",
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
index d2927a434aef..d7965f885209 100644
--- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
@@ -128,12 +128,11 @@ static struct of_device_id __initdata of_bus_ids[] = {
128 128
129static int __init declare_of_platform_devices(void) 129static int __init declare_of_platform_devices(void)
130{ 130{
131 if (machine_is(mpc86x_ads)) 131 of_platform_bus_probe(NULL, of_bus_ids, NULL);
132 of_platform_bus_probe(NULL, of_bus_ids, NULL);
133 132
134 return 0; 133 return 0;
135} 134}
136device_initcall(declare_of_platform_devices); 135machine_device_initcall(mpc86x_ads, declare_of_platform_devices);
137 136
138define_machine(mpc86x_ads) { 137define_machine(mpc86x_ads) {
139 .name = "MPC86x ADS", 138 .name = "MPC86x ADS",
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
index 2cf1b6a75173..6ef8e9e6b8c3 100644
--- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
@@ -264,12 +264,11 @@ static struct of_device_id __initdata of_bus_ids[] = {
264static int __init declare_of_platform_devices(void) 264static int __init declare_of_platform_devices(void)
265{ 265{
266 /* Publish the QE devices */ 266 /* Publish the QE devices */
267 if (machine_is(mpc885_ads)) 267 of_platform_bus_probe(NULL, of_bus_ids, NULL);
268 of_platform_bus_probe(NULL, of_bus_ids, NULL);
269 268
270 return 0; 269 return 0;
271} 270}
272device_initcall(declare_of_platform_devices); 271machine_device_initcall(mpc885_ads, declare_of_platform_devices);
273 272
274define_machine(mpc885_ads) { 273define_machine(mpc885_ads) {
275 .name = "Freescale MPC885 ADS", 274 .name = "Freescale MPC885 ADS",
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index ea22cad2cd0a..2cec34314d2e 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -22,6 +22,7 @@ config PPC_83xx
22 depends on 6xx 22 depends on 6xx
23 select FSL_SOC 23 select FSL_SOC
24 select 83xx 24 select 83xx
25 select IPIC
25 select WANT_DEVICE_TREE 26 select WANT_DEVICE_TREE
26 27
27config PPC_86xx 28config PPC_86xx
@@ -80,6 +81,10 @@ config XICS
80 bool 81 bool
81 default y 82 default y
82 83
84config IPIC
85 bool
86 default n
87
83config MPIC 88config MPIC
84 bool 89 bool
85 default n 90 default n
@@ -265,6 +270,7 @@ config TAU_AVERAGE
265config QUICC_ENGINE 270config QUICC_ENGINE
266 bool 271 bool
267 select PPC_LIB_RHEAP 272 select PPC_LIB_RHEAP
273 select CRC32
268 help 274 help
269 The QUICC Engine (QE) is a new generation of communications 275 The QUICC Engine (QE) is a new generation of communications
270 coprocessors on Freescale embedded CPUs (akin to CPM in older chips). 276 coprocessors on Freescale embedded CPUs (akin to CPM in older chips).
diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig
index 8924095a7928..6c8083757938 100644
--- a/arch/powerpc/platforms/embedded6xx/Kconfig
+++ b/arch/powerpc/platforms/embedded6xx/Kconfig
@@ -9,6 +9,8 @@ config LINKSTATION
9 select FSL_SOC 9 select FSL_SOC
10 select PPC_UDBG_16550 if SERIAL_8250 10 select PPC_UDBG_16550 if SERIAL_8250
11 select DEFAULT_UIMAGE 11 select DEFAULT_UIMAGE
12 select MPC10X_OPENPIC
13 select MPC10X_BRIDGE
12 help 14 help
13 Select LINKSTATION if configuring for one of PPC- (MPC8241) 15 Select LINKSTATION if configuring for one of PPC- (MPC8241)
14 based NAS systems from Buffalo Technology. So far only 16 based NAS systems from Buffalo Technology. So far only
@@ -16,6 +18,19 @@ config LINKSTATION
16 Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based 18 Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based
17 Terastation systems should be supported too. 19 Terastation systems should be supported too.
18 20
21config STORCENTER
22 bool "IOMEGA StorCenter"
23 depends on EMBEDDED6xx
24 select MPIC
25 select FSL_SOC
26 select PPC_UDBG_16550 if SERIAL_8250
27 select WANT_DEVICE_TREE
28 select MPC10X_OPENPIC
29 select MPC10X_BRIDGE
30 help
31 Select STORCENTER if configuring for the iomega StorCenter
32 with an 8241 CPU in it.
33
19config MPC7448HPC2 34config MPC7448HPC2
20 bool "Freescale MPC7448HPC2(Taiga)" 35 bool "Freescale MPC7448HPC2(Taiga)"
21 depends on EMBEDDED6xx 36 depends on EMBEDDED6xx
@@ -23,6 +38,7 @@ config MPC7448HPC2
23 select DEFAULT_UIMAGE 38 select DEFAULT_UIMAGE
24 select PPC_UDBG_16550 39 select PPC_UDBG_16550
25 select WANT_DEVICE_TREE 40 select WANT_DEVICE_TREE
41 select TSI108_BRIDGE
26 help 42 help
27 Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga) 43 Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga)
28 platform 44 platform
@@ -33,6 +49,7 @@ config PPC_HOLLY
33 select TSI108_BRIDGE 49 select TSI108_BRIDGE
34 select PPC_UDBG_16550 50 select PPC_UDBG_16550
35 select WANT_DEVICE_TREE 51 select WANT_DEVICE_TREE
52 select TSI108_BRIDGE
36 help 53 help
37 Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval 54 Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval
38 Board with TSI108/9 bridge (Hickory/Holly) 55 Board with TSI108/9 bridge (Hickory/Holly)
@@ -48,17 +65,13 @@ config PPC_PRPMC2800
48 65
49config TSI108_BRIDGE 66config TSI108_BRIDGE
50 bool 67 bool
51 depends on MPC7448HPC2 || PPC_HOLLY
52 select PCI 68 select PCI
53 select MPIC 69 select MPIC
54 select MPIC_WEIRD 70 select MPIC_WEIRD
55 default y
56 71
57config MPC10X_BRIDGE 72config MPC10X_BRIDGE
58 bool 73 bool
59 depends on LINKSTATION
60 select PPC_INDIRECT_PCI 74 select PPC_INDIRECT_PCI
61 default y
62 75
63config MV64X60 76config MV64X60
64 bool 77 bool
@@ -67,8 +80,6 @@ config MV64X60
67 80
68config MPC10X_OPENPIC 81config MPC10X_OPENPIC
69 bool 82 bool
70 depends on LINKSTATION
71 default y
72 83
73config MPC10X_STORE_GATHERING 84config MPC10X_STORE_GATHERING
74 bool "Enable MPC10x store gathering" 85 bool "Enable MPC10x store gathering"
diff --git a/arch/powerpc/platforms/embedded6xx/Makefile b/arch/powerpc/platforms/embedded6xx/Makefile
index 844947cfc5db..06524d3ffd2e 100644
--- a/arch/powerpc/platforms/embedded6xx/Makefile
+++ b/arch/powerpc/platforms/embedded6xx/Makefile
@@ -3,5 +3,6 @@
3# 3#
4obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o 4obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o
5obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o 5obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o
6obj-$(CONFIG_STORCENTER) += storcenter.o
6obj-$(CONFIG_PPC_HOLLY) += holly.o 7obj-$(CONFIG_PPC_HOLLY) += holly.o
7obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o 8obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
index a2c04b9d42b1..d4f8bf581e3a 100644
--- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
+++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
@@ -53,8 +53,6 @@
53 53
54#define MPC7448HPC2_PCI_CFG_PHYS 0xfb000000 54#define MPC7448HPC2_PCI_CFG_PHYS 0xfb000000
55 55
56extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
57
58int mpc7448_hpc2_exclude_device(struct pci_controller *hose, 56int mpc7448_hpc2_exclude_device(struct pci_controller *hose,
59 u_char bus, u_char devfn) 57 u_char bus, u_char devfn)
60{ 58{
diff --git a/arch/powerpc/platforms/embedded6xx/storcenter.c b/arch/powerpc/platforms/embedded6xx/storcenter.c
new file mode 100644
index 000000000000..e12e9d298716
--- /dev/null
+++ b/arch/powerpc/platforms/embedded6xx/storcenter.c
@@ -0,0 +1,192 @@
1/*
2 * Board setup routines for the storcenter
3 *
4 * Copyright 2007 (C) Oyvind Repvik (nail@nslu2-linux.org)
5 * Copyright 2007 Andy Wilcox, Jon Loeliger
6 *
7 * Based on linkstation.c by G. Liakhovetski
8 *
9 * This file is licensed under the terms of the GNU General Public License
10 * version 2. This program is licensed "as is" without any warranty of
11 * any kind, whether express or implied.
12 */
13
14#include <linux/kernel.h>
15#include <linux/pci.h>
16#include <linux/initrd.h>
17#include <linux/mtd/physmap.h>
18#include <linux/of_platform.h>
19
20#include <asm/system.h>
21#include <asm/time.h>
22#include <asm/prom.h>
23#include <asm/mpic.h>
24#include <asm/pci-bridge.h>
25
26#include "mpc10x.h"
27
28
29#ifdef CONFIG_MTD_PHYSMAP
30static struct mtd_partition storcenter_physmap_partitions[] = {
31 {
32 .name = "kernel",
33 .offset = 0x000000,
34 .size = 0x170000,
35 },
36 {
37 .name = "rootfs",
38 .offset = 0x170000,
39 .size = 0x590000,
40 },
41 {
42 .name = "uboot",
43 .offset = 0x700000,
44 .size = 0x040000,
45 },
46 {
47 .name = "config",
48 .offset = 0x740000,
49 .size = 0x0c0000,
50 },
51};
52#endif
53
54
55static __initdata struct of_device_id storcenter_of_bus[] = {
56 { .name = "soc", },
57 {},
58};
59
60static int __init storcenter_device_probe(void)
61{
62 of_platform_bus_probe(NULL, storcenter_of_bus, NULL);
63 return 0;
64}
65machine_device_initcall(storcenter, storcenter_device_probe);
66
67
68static int __init storcenter_add_bridge(struct device_node *dev)
69{
70#ifdef CONFIG_PCI
71 int len;
72 struct pci_controller *hose;
73 const int *bus_range;
74
75 printk("Adding PCI host bridge %s\n", dev->full_name);
76
77 hose = pcibios_alloc_controller(dev);
78 if (hose == NULL)
79 return -ENOMEM;
80
81 bus_range = of_get_property(dev, "bus-range", &len);
82 hose->first_busno = bus_range ? bus_range[0] : 0;
83 hose->last_busno = bus_range ? bus_range[1] : 0xff;
84
85 setup_indirect_pci(hose, MPC10X_MAPB_CNFG_ADDR, MPC10X_MAPB_CNFG_DATA, 0);
86
87 /* Interpret the "ranges" property */
88 /* This also maps the I/O region and sets isa_io/mem_base */
89 pci_process_bridge_OF_ranges(hose, dev, 1);
90#endif
91
92 return 0;
93}
94
95static void __init storcenter_setup_arch(void)
96{
97 struct device_node *np;
98
99#ifdef CONFIG_MTD_PHYSMAP
100 physmap_set_partitions(storcenter_physmap_partitions,
101 ARRAY_SIZE(storcenter_physmap_partitions));
102#endif
103
104 /* Lookup PCI host bridges */
105 for_each_compatible_node(np, "pci", "mpc10x-pci")
106 storcenter_add_bridge(np);
107
108 printk(KERN_INFO "IOMEGA StorCenter\n");
109}
110
111/*
112 * Interrupt setup and service. Interrrupts on the turbostation come
113 * from the four PCI slots plus onboard 8241 devices: I2C, DUART.
114 */
115static void __init storcenter_init_IRQ(void)
116{
117 struct mpic *mpic;
118 struct device_node *dnp;
119 const void *prop;
120 int size;
121 phys_addr_t paddr;
122
123 dnp = of_find_node_by_type(NULL, "open-pic");
124 if (dnp == NULL)
125 return;
126
127 prop = of_get_property(dnp, "reg", &size);
128 if (prop == NULL) {
129 of_node_put(dnp);
130 return;
131 }
132
133 paddr = (phys_addr_t)of_translate_address(dnp, prop);
134 mpic = mpic_alloc(dnp, paddr, MPIC_PRIMARY | MPIC_WANTS_RESET,
135 4, 32, " EPIC ");
136
137 of_node_put(dnp);
138
139 BUG_ON(mpic == NULL);
140
141 /* PCI IRQs */
142 /*
143 * 2.6.12 patch:
144 * openpic_set_sources(0, 5, OpenPIC_Addr + 0x10200);
145 * openpic_set_sources(5, 2, OpenPIC_Addr + 0x11120);
146 * first_irq, num_irqs, __iomem first_ISR
147 * o_ss: i, src: 0, fdf50200
148 * o_ss: i, src: 1, fdf50220
149 * o_ss: i, src: 2, fdf50240
150 * o_ss: i, src: 3, fdf50260
151 * o_ss: i, src: 4, fdf50280
152 * o_ss: i, src: 5, fdf51120
153 * o_ss: i, src: 6, fdf51140
154 */
155 mpic_assign_isu(mpic, 0, paddr + 0x10200);
156 mpic_assign_isu(mpic, 1, paddr + 0x10220);
157 mpic_assign_isu(mpic, 2, paddr + 0x10240);
158 mpic_assign_isu(mpic, 3, paddr + 0x10260);
159 mpic_assign_isu(mpic, 4, paddr + 0x10280);
160 mpic_assign_isu(mpic, 5, paddr + 0x11120);
161 mpic_assign_isu(mpic, 6, paddr + 0x11140);
162
163 mpic_init(mpic);
164}
165
166static void storcenter_restart(char *cmd)
167{
168 local_irq_disable();
169
170 /* Set exception prefix high - to the firmware */
171 _nmask_and_or_msr(0, MSR_IP);
172
173 /* Wait for reset to happen */
174 for (;;) ;
175}
176
177static int __init storcenter_probe(void)
178{
179 unsigned long root = of_get_flat_dt_root();
180
181 return of_flat_dt_is_compatible(root, "storcenter");
182}
183
184define_machine(storcenter){
185 .name = "IOMEGA StorCenter",
186 .probe = storcenter_probe,
187 .setup_arch = storcenter_setup_arch,
188 .init_IRQ = storcenter_init_IRQ,
189 .get_irq = mpic_get_irq,
190 .restart = storcenter_restart,
191 .calibrate_decr = generic_calibrate_decr,
192};
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index 9a20ef4f0ea4..f17e7b885f60 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_U3_DART) += dart_iommu.o
12obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o 12obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
13obj-$(CONFIG_FSL_SOC) += fsl_soc.o 13obj-$(CONFIG_FSL_SOC) += fsl_soc.o
14obj-$(CONFIG_FSL_PCI) += fsl_pci.o 14obj-$(CONFIG_FSL_PCI) += fsl_pci.o
15obj-$(CONFIG_RAPIDIO) += fsl_rio.o
15obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o 16obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
16obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ 17obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
17obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/ 18obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/
@@ -24,7 +25,7 @@ obj-$(CONFIG_AXON_RAM) += axonram.o
24ifeq ($(CONFIG_PPC_MERGE),y) 25ifeq ($(CONFIG_PPC_MERGE),y)
25obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o 26obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o
26obj-$(CONFIG_PPC_I8259) += i8259.o 27obj-$(CONFIG_PPC_I8259) += i8259.o
27obj-$(CONFIG_PPC_83xx) += ipic.o 28obj-$(CONFIG_IPIC) += ipic.o
28obj-$(CONFIG_4xx) += uic.o 29obj-$(CONFIG_4xx) += uic.o
29obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o 30obj-$(CONFIG_XILINX_VIRTEX) += xilinx_intc.o
30ifeq ($(CONFIG_PCI),y) 31ifeq ($(CONFIG_PCI),y)
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 4b1d5120c122..bf13c2174a4e 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -33,8 +33,8 @@ void __init setup_pci_atmu(struct pci_controller *hose, struct resource *rsrc)
33 struct ccsr_pci __iomem *pci; 33 struct ccsr_pci __iomem *pci;
34 int i; 34 int i;
35 35
36 pr_debug("PCI memory map start 0x%x, size 0x%x\n", rsrc->start, 36 pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n",
37 rsrc->end - rsrc->start + 1); 37 (u64)rsrc->start, (u64)rsrc->end - (u64)rsrc->start + 1);
38 pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1); 38 pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1);
39 39
40 /* Disable all windows (except powar0 since its ignored) */ 40 /* Disable all windows (except powar0 since its ignored) */
@@ -46,17 +46,17 @@ void __init setup_pci_atmu(struct pci_controller *hose, struct resource *rsrc)
46 /* Setup outbound MEM window */ 46 /* Setup outbound MEM window */
47 for(i = 0; i < 3; i++) 47 for(i = 0; i < 3; i++)
48 if (hose->mem_resources[i].flags & IORESOURCE_MEM){ 48 if (hose->mem_resources[i].flags & IORESOURCE_MEM){
49 pr_debug("PCI MEM resource start 0x%08x, size 0x%08x.\n", 49 resource_size_t pci_addr_start =
50 hose->mem_resources[i].start, 50 hose->mem_resources[i].start -
51 hose->mem_resources[i].end 51 hose->pci_mem_offset;
52 - hose->mem_resources[i].start + 1); 52 pr_debug("PCI MEM resource start 0x%016llx, size 0x%016llx.\n",
53 out_be32(&pci->pow[i+1].potar, 53 (u64)hose->mem_resources[i].start,
54 (hose->mem_resources[i].start >> 12) 54 (u64)hose->mem_resources[i].end
55 & 0x000fffff); 55 - (u64)hose->mem_resources[i].start + 1);
56 out_be32(&pci->pow[i+1].potar, (pci_addr_start >> 12));
56 out_be32(&pci->pow[i+1].potear, 0); 57 out_be32(&pci->pow[i+1].potear, 0);
57 out_be32(&pci->pow[i+1].powbar, 58 out_be32(&pci->pow[i+1].powbar,
58 (hose->mem_resources[i].start >> 12) 59 (hose->mem_resources[i].start >> 12));
59 & 0x000fffff);
60 /* Enable, Mem R/W */ 60 /* Enable, Mem R/W */
61 out_be32(&pci->pow[i+1].powar, 0x80044000 61 out_be32(&pci->pow[i+1].powar, 0x80044000
62 | (__ilog2(hose->mem_resources[i].end 62 | (__ilog2(hose->mem_resources[i].end
@@ -65,15 +65,14 @@ void __init setup_pci_atmu(struct pci_controller *hose, struct resource *rsrc)
65 65
66 /* Setup outbound IO window */ 66 /* Setup outbound IO window */
67 if (hose->io_resource.flags & IORESOURCE_IO){ 67 if (hose->io_resource.flags & IORESOURCE_IO){
68 pr_debug("PCI IO resource start 0x%08x, size 0x%08x, phy base 0x%08x.\n", 68 pr_debug("PCI IO resource start 0x%016llx, size 0x%016llx, "
69 hose->io_resource.start, 69 "phy base 0x%016llx.\n",
70 hose->io_resource.end - hose->io_resource.start + 1, 70 (u64)hose->io_resource.start,
71 hose->io_base_phys); 71 (u64)hose->io_resource.end - (u64)hose->io_resource.start + 1,
72 out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12) 72 (u64)hose->io_base_phys);
73 & 0x000fffff); 73 out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12));
74 out_be32(&pci->pow[i+1].potear, 0); 74 out_be32(&pci->pow[i+1].potear, 0);
75 out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12) 75 out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12));
76 & 0x000fffff);
77 /* Enable, IO R/W */ 76 /* Enable, IO R/W */
78 out_be32(&pci->pow[i+1].powar, 0x80088000 77 out_be32(&pci->pow[i+1].powar, 0x80088000
79 | (__ilog2(hose->io_resource.end 78 | (__ilog2(hose->io_resource.end
@@ -107,55 +106,17 @@ void __init setup_pci_cmd(struct pci_controller *hose)
107 } 106 }
108} 107}
109 108
110static void __init quirk_fsl_pcie_transparent(struct pci_dev *dev) 109static int fsl_pcie_bus_fixup;
111{
112 struct resource *res;
113 int i, res_idx = PCI_BRIDGE_RESOURCES;
114 struct pci_controller *hose;
115 110
111static void __init quirk_fsl_pcie_header(struct pci_dev *dev)
112{
116 /* if we aren't a PCIe don't bother */ 113 /* if we aren't a PCIe don't bother */
117 if (!pci_find_capability(dev, PCI_CAP_ID_EXP)) 114 if (!pci_find_capability(dev, PCI_CAP_ID_EXP))
118 return ; 115 return ;
119 116
120 /* 117 dev->class = PCI_CLASS_BRIDGE_PCI << 8;
121 * Make the bridge be transparent. 118 fsl_pcie_bus_fixup = 1;
122 */ 119 return ;
123 dev->transparent = 1;
124
125 hose = pci_bus_to_host(dev->bus);
126 if (!hose) {
127 printk(KERN_ERR "Can't find hose for bus %d\n",
128 dev->bus->number);
129 return;
130 }
131
132 /* Clear out any of the virtual P2P bridge registers */
133 pci_write_config_word(dev, PCI_IO_BASE_UPPER16, 0);
134 pci_write_config_word(dev, PCI_IO_LIMIT_UPPER16, 0);
135 pci_write_config_byte(dev, PCI_IO_BASE, 0x10);
136 pci_write_config_byte(dev, PCI_IO_LIMIT, 0);
137 pci_write_config_word(dev, PCI_MEMORY_BASE, 0x10);
138 pci_write_config_word(dev, PCI_MEMORY_LIMIT, 0);
139 pci_write_config_word(dev, PCI_PREF_BASE_UPPER32, 0x0);
140 pci_write_config_word(dev, PCI_PREF_LIMIT_UPPER32, 0x0);
141 pci_write_config_word(dev, PCI_PREF_MEMORY_BASE, 0x10);
142 pci_write_config_word(dev, PCI_PREF_MEMORY_LIMIT, 0);
143
144 if (hose->io_resource.flags) {
145 res = &dev->resource[res_idx++];
146 res->start = hose->io_resource.start;
147 res->end = hose->io_resource.end;
148 res->flags = hose->io_resource.flags;
149 update_bridge_resource(dev, res);
150 }
151
152 for (i = 0; i < 3; i++) {
153 res = &dev->resource[res_idx + i];
154 res->start = hose->mem_resources[i].start;
155 res->end = hose->mem_resources[i].end;
156 res->flags = hose->mem_resources[i].flags;
157 update_bridge_resource(dev, res);
158 }
159} 120}
160 121
161int __init fsl_pcie_check_link(struct pci_controller *hose) 122int __init fsl_pcie_check_link(struct pci_controller *hose)
@@ -172,11 +133,24 @@ void fsl_pcibios_fixup_bus(struct pci_bus *bus)
172 struct pci_controller *hose = (struct pci_controller *) bus->sysdata; 133 struct pci_controller *hose = (struct pci_controller *) bus->sysdata;
173 int i; 134 int i;
174 135
175 /* deal with bogus pci_bus when we don't have anything connected on PCIe */ 136 if ((bus->parent == hose->bus) &&
176 if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) { 137 ((fsl_pcie_bus_fixup &&
177 if (bus->parent) { 138 early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) ||
178 for (i = 0; i < 4; ++i) 139 (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK)))
179 bus->resource[i] = bus->parent->resource[i]; 140 {
141 for (i = 0; i < 4; ++i) {
142 struct resource *res = bus->resource[i];
143 struct resource *par = bus->parent->resource[i];
144 if (res) {
145 res->start = 0;
146 res->end = 0;
147 res->flags = 0;
148 }
149 if (res && par) {
150 res->start = par->start;
151 res->end = par->end;
152 res->flags = par->flags;
153 }
180 } 154 }
181 } 155 }
182} 156}
@@ -240,23 +214,23 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
240 return 0; 214 return 0;
241} 215}
242 216
243DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_transparent); 217DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548E, quirk_fsl_pcie_header);
244DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_transparent); 218DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8548, quirk_fsl_pcie_header);
245DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_transparent); 219DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543E, quirk_fsl_pcie_header);
246DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8543, quirk_fsl_pcie_transparent); 220DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8543, quirk_fsl_pcie_header);
247DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8547E, quirk_fsl_pcie_transparent); 221DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8547E, quirk_fsl_pcie_header);
248DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8545E, quirk_fsl_pcie_transparent); 222DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8545E, quirk_fsl_pcie_header);
249DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8545, quirk_fsl_pcie_transparent); 223DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8545, quirk_fsl_pcie_header);
250DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_transparent); 224DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_header);
251DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent); 225DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_header);
252DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent); 226DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_header);
253DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent); 227DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_header);
254DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transparent); 228DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_header);
255DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); 229DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_header);
256DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); 230DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_header);
257DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); 231DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_header);
258DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent); 232DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_header);
259DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent); 233DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_header);
260DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); 234DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_header);
261DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent); 235DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_header);
262DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_transparent); 236DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_header);
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c
new file mode 100644
index 000000000000..af2425e4655f
--- /dev/null
+++ b/arch/powerpc/sysdev/fsl_rio.c
@@ -0,0 +1,932 @@
1/*
2 * MPC85xx RapidIO support
3 *
4 * Copyright 2005 MontaVista Software, Inc.
5 * Matt Porter <mporter@kernel.crashing.org>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13#include <linux/init.h>
14#include <linux/module.h>
15#include <linux/types.h>
16#include <linux/dma-mapping.h>
17#include <linux/interrupt.h>
18#include <linux/rio.h>
19#include <linux/rio_drv.h>
20
21#include <asm/io.h>
22
23#define RIO_REGS_BASE (CCSRBAR + 0xc0000)
24#define RIO_ATMU_REGS_OFFSET 0x10c00
25#define RIO_MSG_REGS_OFFSET 0x11000
26#define RIO_MAINT_WIN_SIZE 0x400000
27#define RIO_DBELL_WIN_SIZE 0x1000
28
29#define RIO_MSG_OMR_MUI 0x00000002
30#define RIO_MSG_OSR_TE 0x00000080
31#define RIO_MSG_OSR_QOI 0x00000020
32#define RIO_MSG_OSR_QFI 0x00000010
33#define RIO_MSG_OSR_MUB 0x00000004
34#define RIO_MSG_OSR_EOMI 0x00000002
35#define RIO_MSG_OSR_QEI 0x00000001
36
37#define RIO_MSG_IMR_MI 0x00000002
38#define RIO_MSG_ISR_TE 0x00000080
39#define RIO_MSG_ISR_QFI 0x00000010
40#define RIO_MSG_ISR_DIQI 0x00000001
41
42#define RIO_MSG_DESC_SIZE 32
43#define RIO_MSG_BUFFER_SIZE 4096
44#define RIO_MIN_TX_RING_SIZE 2
45#define RIO_MAX_TX_RING_SIZE 2048
46#define RIO_MIN_RX_RING_SIZE 2
47#define RIO_MAX_RX_RING_SIZE 2048
48
49#define DOORBELL_DMR_DI 0x00000002
50#define DOORBELL_DSR_TE 0x00000080
51#define DOORBELL_DSR_QFI 0x00000010
52#define DOORBELL_DSR_DIQI 0x00000001
53#define DOORBELL_TID_OFFSET 0x03
54#define DOORBELL_SID_OFFSET 0x05
55#define DOORBELL_INFO_OFFSET 0x06
56
57#define DOORBELL_MESSAGE_SIZE 0x08
58#define DBELL_SID(x) (*(u8 *)(x + DOORBELL_SID_OFFSET))
59#define DBELL_TID(x) (*(u8 *)(x + DOORBELL_TID_OFFSET))
60#define DBELL_INF(x) (*(u16 *)(x + DOORBELL_INFO_OFFSET))
61
62struct rio_atmu_regs {
63 u32 rowtar;
64 u32 pad1;
65 u32 rowbar;
66 u32 pad2;
67 u32 rowar;
68 u32 pad3[3];
69};
70
71struct rio_msg_regs {
72 u32 omr;
73 u32 osr;
74 u32 pad1;
75 u32 odqdpar;
76 u32 pad2;
77 u32 osar;
78 u32 odpr;
79 u32 odatr;
80 u32 odcr;
81 u32 pad3;
82 u32 odqepar;
83 u32 pad4[13];
84 u32 imr;
85 u32 isr;
86 u32 pad5;
87 u32 ifqdpar;
88 u32 pad6;
89 u32 ifqepar;
90 u32 pad7[250];
91 u32 dmr;
92 u32 dsr;
93 u32 pad8;
94 u32 dqdpar;
95 u32 pad9;
96 u32 dqepar;
97 u32 pad10[26];
98 u32 pwmr;
99 u32 pwsr;
100 u32 pad11;
101 u32 pwqbar;
102};
103
104struct rio_tx_desc {
105 u32 res1;
106 u32 saddr;
107 u32 dport;
108 u32 dattr;
109 u32 res2;
110 u32 res3;
111 u32 dwcnt;
112 u32 res4;
113};
114
115static u32 regs_win;
116static struct rio_atmu_regs *atmu_regs;
117static struct rio_atmu_regs *maint_atmu_regs;
118static struct rio_atmu_regs *dbell_atmu_regs;
119static u32 dbell_win;
120static u32 maint_win;
121static struct rio_msg_regs *msg_regs;
122
123static struct rio_dbell_ring {
124 void *virt;
125 dma_addr_t phys;
126} dbell_ring;
127
128static struct rio_msg_tx_ring {
129 void *virt;
130 dma_addr_t phys;
131 void *virt_buffer[RIO_MAX_TX_RING_SIZE];
132 dma_addr_t phys_buffer[RIO_MAX_TX_RING_SIZE];
133 int tx_slot;
134 int size;
135 void *dev_id;
136} msg_tx_ring;
137
138static struct rio_msg_rx_ring {
139 void *virt;
140 dma_addr_t phys;
141 void *virt_buffer[RIO_MAX_RX_RING_SIZE];
142 int rx_slot;
143 int size;
144 void *dev_id;
145} msg_rx_ring;
146
147/**
148 * mpc85xx_rio_doorbell_send - Send a MPC85xx doorbell message
149 * @index: ID of RapidIO interface
150 * @destid: Destination ID of target device
151 * @data: 16-bit info field of RapidIO doorbell message
152 *
153 * Sends a MPC85xx doorbell message. Returns %0 on success or
154 * %-EINVAL on failure.
155 */
156static int mpc85xx_rio_doorbell_send(int index, u16 destid, u16 data)
157{
158 pr_debug("mpc85xx_doorbell_send: index %d destid %4.4x data %4.4x\n",
159 index, destid, data);
160 out_be32((void *)&dbell_atmu_regs->rowtar, destid << 22);
161 out_be16((void *)(dbell_win), data);
162
163 return 0;
164}
165
166/**
167 * mpc85xx_local_config_read - Generate a MPC85xx local config space read
168 * @index: ID of RapdiIO interface
169 * @offset: Offset into configuration space
170 * @len: Length (in bytes) of the maintenance transaction
171 * @data: Value to be read into
172 *
173 * Generates a MPC85xx local configuration space read. Returns %0 on
174 * success or %-EINVAL on failure.
175 */
176static int mpc85xx_local_config_read(int index, u32 offset, int len, u32 * data)
177{
178 pr_debug("mpc85xx_local_config_read: index %d offset %8.8x\n", index,
179 offset);
180 *data = in_be32((void *)(regs_win + offset));
181
182 return 0;
183}
184
185/**
186 * mpc85xx_local_config_write - Generate a MPC85xx local config space write
187 * @index: ID of RapdiIO interface
188 * @offset: Offset into configuration space
189 * @len: Length (in bytes) of the maintenance transaction
190 * @data: Value to be written
191 *
192 * Generates a MPC85xx local configuration space write. Returns %0 on
193 * success or %-EINVAL on failure.
194 */
195static int mpc85xx_local_config_write(int index, u32 offset, int len, u32 data)
196{
197 pr_debug
198 ("mpc85xx_local_config_write: index %d offset %8.8x data %8.8x\n",
199 index, offset, data);
200 out_be32((void *)(regs_win + offset), data);
201
202 return 0;
203}
204
205/**
206 * mpc85xx_rio_config_read - Generate a MPC85xx read maintenance transaction
207 * @index: ID of RapdiIO interface
208 * @destid: Destination ID of transaction
209 * @hopcount: Number of hops to target device
210 * @offset: Offset into configuration space
211 * @len: Length (in bytes) of the maintenance transaction
212 * @val: Location to be read into
213 *
214 * Generates a MPC85xx read maintenance transaction. Returns %0 on
215 * success or %-EINVAL on failure.
216 */
217static int
218mpc85xx_rio_config_read(int index, u16 destid, u8 hopcount, u32 offset, int len,
219 u32 * val)
220{
221 u8 *data;
222
223 pr_debug
224 ("mpc85xx_rio_config_read: index %d destid %d hopcount %d offset %8.8x len %d\n",
225 index, destid, hopcount, offset, len);
226 out_be32((void *)&maint_atmu_regs->rowtar,
227 (destid << 22) | (hopcount << 12) | ((offset & ~0x3) >> 9));
228
229 data = (u8 *) maint_win + offset;
230 switch (len) {
231 case 1:
232 *val = in_8((u8 *) data);
233 break;
234 case 2:
235 *val = in_be16((u16 *) data);
236 break;
237 default:
238 *val = in_be32((u32 *) data);
239 break;
240 }
241
242 return 0;
243}
244
245/**
246 * mpc85xx_rio_config_write - Generate a MPC85xx write maintenance transaction
247 * @index: ID of RapdiIO interface
248 * @destid: Destination ID of transaction
249 * @hopcount: Number of hops to target device
250 * @offset: Offset into configuration space
251 * @len: Length (in bytes) of the maintenance transaction
252 * @val: Value to be written
253 *
254 * Generates an MPC85xx write maintenance transaction. Returns %0 on
255 * success or %-EINVAL on failure.
256 */
257static int
258mpc85xx_rio_config_write(int index, u16 destid, u8 hopcount, u32 offset,
259 int len, u32 val)
260{
261 u8 *data;
262 pr_debug
263 ("mpc85xx_rio_config_write: index %d destid %d hopcount %d offset %8.8x len %d val %8.8x\n",
264 index, destid, hopcount, offset, len, val);
265 out_be32((void *)&maint_atmu_regs->rowtar,
266 (destid << 22) | (hopcount << 12) | ((offset & ~0x3) >> 9));
267
268 data = (u8 *) maint_win + offset;
269 switch (len) {
270 case 1:
271 out_8((u8 *) data, val);
272 break;
273 case 2:
274 out_be16((u16 *) data, val);
275 break;
276 default:
277 out_be32((u32 *) data, val);
278 break;
279 }
280
281 return 0;
282}
283
284/**
285 * rio_hw_add_outb_message - Add message to the MPC85xx outbound message queue
286 * @mport: Master port with outbound message queue
287 * @rdev: Target of outbound message
288 * @mbox: Outbound mailbox
289 * @buffer: Message to add to outbound queue
290 * @len: Length of message
291 *
292 * Adds the @buffer message to the MPC85xx outbound message queue. Returns
293 * %0 on success or %-EINVAL on failure.
294 */
295int
296rio_hw_add_outb_message(struct rio_mport *mport, struct rio_dev *rdev, int mbox,
297 void *buffer, size_t len)
298{
299 u32 omr;
300 struct rio_tx_desc *desc =
301 (struct rio_tx_desc *)msg_tx_ring.virt + msg_tx_ring.tx_slot;
302 int ret = 0;
303
304 pr_debug
305 ("RIO: rio_hw_add_outb_message(): destid %4.4x mbox %d buffer %8.8x len %8.8x\n",
306 rdev->destid, mbox, (int)buffer, len);
307
308 if ((len < 8) || (len > RIO_MAX_MSG_SIZE)) {
309 ret = -EINVAL;
310 goto out;
311 }
312
313 /* Copy and clear rest of buffer */
314 memcpy(msg_tx_ring.virt_buffer[msg_tx_ring.tx_slot], buffer, len);
315 if (len < (RIO_MAX_MSG_SIZE - 4))
316 memset((void *)((u32) msg_tx_ring.
317 virt_buffer[msg_tx_ring.tx_slot] + len), 0,
318 RIO_MAX_MSG_SIZE - len);
319
320 /* Set mbox field for message */
321 desc->dport = mbox & 0x3;
322
323 /* Enable EOMI interrupt, set priority, and set destid */
324 desc->dattr = 0x28000000 | (rdev->destid << 2);
325
326 /* Set transfer size aligned to next power of 2 (in double words) */
327 desc->dwcnt = is_power_of_2(len) ? len : 1 << get_bitmask_order(len);
328
329 /* Set snooping and source buffer address */
330 desc->saddr = 0x00000004 | msg_tx_ring.phys_buffer[msg_tx_ring.tx_slot];
331
332 /* Increment enqueue pointer */
333 omr = in_be32((void *)&msg_regs->omr);
334 out_be32((void *)&msg_regs->omr, omr | RIO_MSG_OMR_MUI);
335
336 /* Go to next descriptor */
337 if (++msg_tx_ring.tx_slot == msg_tx_ring.size)
338 msg_tx_ring.tx_slot = 0;
339
340 out:
341 return ret;
342}
343
344EXPORT_SYMBOL_GPL(rio_hw_add_outb_message);
345
346/**
347 * mpc85xx_rio_tx_handler - MPC85xx outbound message interrupt handler
348 * @irq: Linux interrupt number
349 * @dev_instance: Pointer to interrupt-specific data
350 *
351 * Handles outbound message interrupts. Executes a register outbound
352 * mailbox event handler and acks the interrupt occurrence.
353 */
354static irqreturn_t
355mpc85xx_rio_tx_handler(int irq, void *dev_instance)
356{
357 int osr;
358 struct rio_mport *port = (struct rio_mport *)dev_instance;
359
360 osr = in_be32((void *)&msg_regs->osr);
361
362 if (osr & RIO_MSG_OSR_TE) {
363 pr_info("RIO: outbound message transmission error\n");
364 out_be32((void *)&msg_regs->osr, RIO_MSG_OSR_TE);
365 goto out;
366 }
367
368 if (osr & RIO_MSG_OSR_QOI) {
369 pr_info("RIO: outbound message queue overflow\n");
370 out_be32((void *)&msg_regs->osr, RIO_MSG_OSR_QOI);
371 goto out;
372 }
373
374 if (osr & RIO_MSG_OSR_EOMI) {
375 u32 dqp = in_be32((void *)&msg_regs->odqdpar);
376 int slot = (dqp - msg_tx_ring.phys) >> 5;
377 port->outb_msg[0].mcback(port, msg_tx_ring.dev_id, -1, slot);
378
379 /* Ack the end-of-message interrupt */
380 out_be32((void *)&msg_regs->osr, RIO_MSG_OSR_EOMI);
381 }
382
383 out:
384 return IRQ_HANDLED;
385}
386
387/**
388 * rio_open_outb_mbox - Initialize MPC85xx outbound mailbox
389 * @mport: Master port implementing the outbound message unit
390 * @dev_id: Device specific pointer to pass on event
391 * @mbox: Mailbox to open
392 * @entries: Number of entries in the outbound mailbox ring
393 *
394 * Initializes buffer ring, request the outbound message interrupt,
395 * and enables the outbound message unit. Returns %0 on success and
396 * %-EINVAL or %-ENOMEM on failure.
397 */
398int rio_open_outb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entries)
399{
400 int i, j, rc = 0;
401
402 if ((entries < RIO_MIN_TX_RING_SIZE) ||
403 (entries > RIO_MAX_TX_RING_SIZE) || (!is_power_of_2(entries))) {
404 rc = -EINVAL;
405 goto out;
406 }
407
408 /* Initialize shadow copy ring */
409 msg_tx_ring.dev_id = dev_id;
410 msg_tx_ring.size = entries;
411
412 for (i = 0; i < msg_tx_ring.size; i++) {
413 if (!
414 (msg_tx_ring.virt_buffer[i] =
415 dma_alloc_coherent(NULL, RIO_MSG_BUFFER_SIZE,
416 &msg_tx_ring.phys_buffer[i],
417 GFP_KERNEL))) {
418 rc = -ENOMEM;
419 for (j = 0; j < msg_tx_ring.size; j++)
420 if (msg_tx_ring.virt_buffer[j])
421 dma_free_coherent(NULL,
422 RIO_MSG_BUFFER_SIZE,
423 msg_tx_ring.
424 virt_buffer[j],
425 msg_tx_ring.
426 phys_buffer[j]);
427 goto out;
428 }
429 }
430
431 /* Initialize outbound message descriptor ring */
432 if (!(msg_tx_ring.virt = dma_alloc_coherent(NULL,
433 msg_tx_ring.size *
434 RIO_MSG_DESC_SIZE,
435 &msg_tx_ring.phys,
436 GFP_KERNEL))) {
437 rc = -ENOMEM;
438 goto out_dma;
439 }
440 memset(msg_tx_ring.virt, 0, msg_tx_ring.size * RIO_MSG_DESC_SIZE);
441 msg_tx_ring.tx_slot = 0;
442
443 /* Point dequeue/enqueue pointers at first entry in ring */
444 out_be32((void *)&msg_regs->odqdpar, msg_tx_ring.phys);
445 out_be32((void *)&msg_regs->odqepar, msg_tx_ring.phys);
446
447 /* Configure for snooping */
448 out_be32((void *)&msg_regs->osar, 0x00000004);
449
450 /* Clear interrupt status */
451 out_be32((void *)&msg_regs->osr, 0x000000b3);
452
453 /* Hook up outbound message handler */
454 if ((rc =
455 request_irq(MPC85xx_IRQ_RIO_TX, mpc85xx_rio_tx_handler, 0,
456 "msg_tx", (void *)mport)) < 0)
457 goto out_irq;
458
459 /*
460 * Configure outbound message unit
461 * Snooping
462 * Interrupts (all enabled, except QEIE)
463 * Chaining mode
464 * Disable
465 */
466 out_be32((void *)&msg_regs->omr, 0x00100220);
467
468 /* Set number of entries */
469 out_be32((void *)&msg_regs->omr,
470 in_be32((void *)&msg_regs->omr) |
471 ((get_bitmask_order(entries) - 2) << 12));
472
473 /* Now enable the unit */
474 out_be32((void *)&msg_regs->omr, in_be32((void *)&msg_regs->omr) | 0x1);
475
476 out:
477 return rc;
478
479 out_irq:
480 dma_free_coherent(NULL, msg_tx_ring.size * RIO_MSG_DESC_SIZE,
481 msg_tx_ring.virt, msg_tx_ring.phys);
482
483 out_dma:
484 for (i = 0; i < msg_tx_ring.size; i++)
485 dma_free_coherent(NULL, RIO_MSG_BUFFER_SIZE,
486 msg_tx_ring.virt_buffer[i],
487 msg_tx_ring.phys_buffer[i]);
488
489 return rc;
490}
491
492/**
493 * rio_close_outb_mbox - Shut down MPC85xx outbound mailbox
494 * @mport: Master port implementing the outbound message unit
495 * @mbox: Mailbox to close
496 *
497 * Disables the outbound message unit, free all buffers, and
498 * frees the outbound message interrupt.
499 */
500void rio_close_outb_mbox(struct rio_mport *mport, int mbox)
501{
502 /* Disable inbound message unit */
503 out_be32((void *)&msg_regs->omr, 0);
504
505 /* Free ring */
506 dma_free_coherent(NULL, msg_tx_ring.size * RIO_MSG_DESC_SIZE,
507 msg_tx_ring.virt, msg_tx_ring.phys);
508
509 /* Free interrupt */
510 free_irq(MPC85xx_IRQ_RIO_TX, (void *)mport);
511}
512
513/**
514 * mpc85xx_rio_rx_handler - MPC85xx inbound message interrupt handler
515 * @irq: Linux interrupt number
516 * @dev_instance: Pointer to interrupt-specific data
517 *
518 * Handles inbound message interrupts. Executes a registered inbound
519 * mailbox event handler and acks the interrupt occurrence.
520 */
521static irqreturn_t
522mpc85xx_rio_rx_handler(int irq, void *dev_instance)
523{
524 int isr;
525 struct rio_mport *port = (struct rio_mport *)dev_instance;
526
527 isr = in_be32((void *)&msg_regs->isr);
528
529 if (isr & RIO_MSG_ISR_TE) {
530 pr_info("RIO: inbound message reception error\n");
531 out_be32((void *)&msg_regs->isr, RIO_MSG_ISR_TE);
532 goto out;
533 }
534
535 /* XXX Need to check/dispatch until queue empty */
536 if (isr & RIO_MSG_ISR_DIQI) {
537 /*
538 * We implement *only* mailbox 0, but can receive messages
539 * for any mailbox/letter to that mailbox destination. So,
540 * make the callback with an unknown/invalid mailbox number
541 * argument.
542 */
543 port->inb_msg[0].mcback(port, msg_rx_ring.dev_id, -1, -1);
544
545 /* Ack the queueing interrupt */
546 out_be32((void *)&msg_regs->isr, RIO_MSG_ISR_DIQI);
547 }
548
549 out:
550 return IRQ_HANDLED;
551}
552
553/**
554 * rio_open_inb_mbox - Initialize MPC85xx inbound mailbox
555 * @mport: Master port implementing the inbound message unit
556 * @dev_id: Device specific pointer to pass on event
557 * @mbox: Mailbox to open
558 * @entries: Number of entries in the inbound mailbox ring
559 *
560 * Initializes buffer ring, request the inbound message interrupt,
561 * and enables the inbound message unit. Returns %0 on success
562 * and %-EINVAL or %-ENOMEM on failure.
563 */
564int rio_open_inb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entries)
565{
566 int i, rc = 0;
567
568 if ((entries < RIO_MIN_RX_RING_SIZE) ||
569 (entries > RIO_MAX_RX_RING_SIZE) || (!is_power_of_2(entries))) {
570 rc = -EINVAL;
571 goto out;
572 }
573
574 /* Initialize client buffer ring */
575 msg_rx_ring.dev_id = dev_id;
576 msg_rx_ring.size = entries;
577 msg_rx_ring.rx_slot = 0;
578 for (i = 0; i < msg_rx_ring.size; i++)
579 msg_rx_ring.virt_buffer[i] = NULL;
580
581 /* Initialize inbound message ring */
582 if (!(msg_rx_ring.virt = dma_alloc_coherent(NULL,
583 msg_rx_ring.size *
584 RIO_MAX_MSG_SIZE,
585 &msg_rx_ring.phys,
586 GFP_KERNEL))) {
587 rc = -ENOMEM;
588 goto out;
589 }
590
591 /* Point dequeue/enqueue pointers at first entry in ring */
592 out_be32((void *)&msg_regs->ifqdpar, (u32) msg_rx_ring.phys);
593 out_be32((void *)&msg_regs->ifqepar, (u32) msg_rx_ring.phys);
594
595 /* Clear interrupt status */
596 out_be32((void *)&msg_regs->isr, 0x00000091);
597
598 /* Hook up inbound message handler */
599 if ((rc =
600 request_irq(MPC85xx_IRQ_RIO_RX, mpc85xx_rio_rx_handler, 0,
601 "msg_rx", (void *)mport)) < 0) {
602 dma_free_coherent(NULL, RIO_MSG_BUFFER_SIZE,
603 msg_tx_ring.virt_buffer[i],
604 msg_tx_ring.phys_buffer[i]);
605 goto out;
606 }
607
608 /*
609 * Configure inbound message unit:
610 * Snooping
611 * 4KB max message size
612 * Unmask all interrupt sources
613 * Disable
614 */
615 out_be32((void *)&msg_regs->imr, 0x001b0060);
616
617 /* Set number of queue entries */
618 out_be32((void *)&msg_regs->imr,
619 in_be32((void *)&msg_regs->imr) |
620 ((get_bitmask_order(entries) - 2) << 12));
621
622 /* Now enable the unit */
623 out_be32((void *)&msg_regs->imr, in_be32((void *)&msg_regs->imr) | 0x1);
624
625 out:
626 return rc;
627}
628
629/**
630 * rio_close_inb_mbox - Shut down MPC85xx inbound mailbox
631 * @mport: Master port implementing the inbound message unit
632 * @mbox: Mailbox to close
633 *
634 * Disables the inbound message unit, free all buffers, and
635 * frees the inbound message interrupt.
636 */
637void rio_close_inb_mbox(struct rio_mport *mport, int mbox)
638{
639 /* Disable inbound message unit */
640 out_be32((void *)&msg_regs->imr, 0);
641
642 /* Free ring */
643 dma_free_coherent(NULL, msg_rx_ring.size * RIO_MAX_MSG_SIZE,
644 msg_rx_ring.virt, msg_rx_ring.phys);
645
646 /* Free interrupt */
647 free_irq(MPC85xx_IRQ_RIO_RX, (void *)mport);
648}
649
650/**
651 * rio_hw_add_inb_buffer - Add buffer to the MPC85xx inbound message queue
652 * @mport: Master port implementing the inbound message unit
653 * @mbox: Inbound mailbox number
654 * @buf: Buffer to add to inbound queue
655 *
656 * Adds the @buf buffer to the MPC85xx inbound message queue. Returns
657 * %0 on success or %-EINVAL on failure.
658 */
659int rio_hw_add_inb_buffer(struct rio_mport *mport, int mbox, void *buf)
660{
661 int rc = 0;
662
663 pr_debug("RIO: rio_hw_add_inb_buffer(), msg_rx_ring.rx_slot %d\n",
664 msg_rx_ring.rx_slot);
665
666 if (msg_rx_ring.virt_buffer[msg_rx_ring.rx_slot]) {
667 printk(KERN_ERR
668 "RIO: error adding inbound buffer %d, buffer exists\n",
669 msg_rx_ring.rx_slot);
670 rc = -EINVAL;
671 goto out;
672 }
673
674 msg_rx_ring.virt_buffer[msg_rx_ring.rx_slot] = buf;
675 if (++msg_rx_ring.rx_slot == msg_rx_ring.size)
676 msg_rx_ring.rx_slot = 0;
677
678 out:
679 return rc;
680}
681
682EXPORT_SYMBOL_GPL(rio_hw_add_inb_buffer);
683
684/**
685 * rio_hw_get_inb_message - Fetch inbound message from the MPC85xx message unit
686 * @mport: Master port implementing the inbound message unit
687 * @mbox: Inbound mailbox number
688 *
689 * Gets the next available inbound message from the inbound message queue.
690 * A pointer to the message is returned on success or NULL on failure.
691 */
692void *rio_hw_get_inb_message(struct rio_mport *mport, int mbox)
693{
694 u32 imr;
695 u32 phys_buf, virt_buf;
696 void *buf = NULL;
697 int buf_idx;
698
699 phys_buf = in_be32((void *)&msg_regs->ifqdpar);
700
701 /* If no more messages, then bail out */
702 if (phys_buf == in_be32((void *)&msg_regs->ifqepar))
703 goto out2;
704
705 virt_buf = (u32) msg_rx_ring.virt + (phys_buf - msg_rx_ring.phys);
706 buf_idx = (phys_buf - msg_rx_ring.phys) / RIO_MAX_MSG_SIZE;
707 buf = msg_rx_ring.virt_buffer[buf_idx];
708
709 if (!buf) {
710 printk(KERN_ERR
711 "RIO: inbound message copy failed, no buffers\n");
712 goto out1;
713 }
714
715 /* Copy max message size, caller is expected to allocate that big */
716 memcpy(buf, (void *)virt_buf, RIO_MAX_MSG_SIZE);
717
718 /* Clear the available buffer */
719 msg_rx_ring.virt_buffer[buf_idx] = NULL;
720
721 out1:
722 imr = in_be32((void *)&msg_regs->imr);
723 out_be32((void *)&msg_regs->imr, imr | RIO_MSG_IMR_MI);
724
725 out2:
726 return buf;
727}
728
729EXPORT_SYMBOL_GPL(rio_hw_get_inb_message);
730
731/**
732 * mpc85xx_rio_dbell_handler - MPC85xx doorbell interrupt handler
733 * @irq: Linux interrupt number
734 * @dev_instance: Pointer to interrupt-specific data
735 *
736 * Handles doorbell interrupts. Parses a list of registered
737 * doorbell event handlers and executes a matching event handler.
738 */
739static irqreturn_t
740mpc85xx_rio_dbell_handler(int irq, void *dev_instance)
741{
742 int dsr;
743 struct rio_mport *port = (struct rio_mport *)dev_instance;
744
745 dsr = in_be32((void *)&msg_regs->dsr);
746
747 if (dsr & DOORBELL_DSR_TE) {
748 pr_info("RIO: doorbell reception error\n");
749 out_be32((void *)&msg_regs->dsr, DOORBELL_DSR_TE);
750 goto out;
751 }
752
753 if (dsr & DOORBELL_DSR_QFI) {
754 pr_info("RIO: doorbell queue full\n");
755 out_be32((void *)&msg_regs->dsr, DOORBELL_DSR_QFI);
756 goto out;
757 }
758
759 /* XXX Need to check/dispatch until queue empty */
760 if (dsr & DOORBELL_DSR_DIQI) {
761 u32 dmsg =
762 (u32) dbell_ring.virt +
763 (in_be32((void *)&msg_regs->dqdpar) & 0xfff);
764 u32 dmr;
765 struct rio_dbell *dbell;
766 int found = 0;
767
768 pr_debug
769 ("RIO: processing doorbell, sid %2.2x tid %2.2x info %4.4x\n",
770 DBELL_SID(dmsg), DBELL_TID(dmsg), DBELL_INF(dmsg));
771
772 list_for_each_entry(dbell, &port->dbells, node) {
773 if ((dbell->res->start <= DBELL_INF(dmsg)) &&
774 (dbell->res->end >= DBELL_INF(dmsg))) {
775 found = 1;
776 break;
777 }
778 }
779 if (found) {
780 dbell->dinb(port, dbell->dev_id, DBELL_SID(dmsg), DBELL_TID(dmsg),
781 DBELL_INF(dmsg));
782 } else {
783 pr_debug
784 ("RIO: spurious doorbell, sid %2.2x tid %2.2x info %4.4x\n",
785 DBELL_SID(dmsg), DBELL_TID(dmsg), DBELL_INF(dmsg));
786 }
787 dmr = in_be32((void *)&msg_regs->dmr);
788 out_be32((void *)&msg_regs->dmr, dmr | DOORBELL_DMR_DI);
789 out_be32((void *)&msg_regs->dsr, DOORBELL_DSR_DIQI);
790 }
791
792 out:
793 return IRQ_HANDLED;
794}
795
796/**
797 * mpc85xx_rio_doorbell_init - MPC85xx doorbell interface init
798 * @mport: Master port implementing the inbound doorbell unit
799 *
800 * Initializes doorbell unit hardware and inbound DMA buffer
801 * ring. Called from mpc85xx_rio_setup(). Returns %0 on success
802 * or %-ENOMEM on failure.
803 */
804static int mpc85xx_rio_doorbell_init(struct rio_mport *mport)
805{
806 int rc = 0;
807
808 /* Map outbound doorbell window immediately after maintenance window */
809 if (!(dbell_win =
810 (u32) ioremap(mport->iores.start + RIO_MAINT_WIN_SIZE,
811 RIO_DBELL_WIN_SIZE))) {
812 printk(KERN_ERR
813 "RIO: unable to map outbound doorbell window\n");
814 rc = -ENOMEM;
815 goto out;
816 }
817
818 /* Initialize inbound doorbells */
819 if (!(dbell_ring.virt = dma_alloc_coherent(NULL,
820 512 * DOORBELL_MESSAGE_SIZE,
821 &dbell_ring.phys,
822 GFP_KERNEL))) {
823 printk(KERN_ERR "RIO: unable allocate inbound doorbell ring\n");
824 rc = -ENOMEM;
825 iounmap((void *)dbell_win);
826 goto out;
827 }
828
829 /* Point dequeue/enqueue pointers at first entry in ring */
830 out_be32((void *)&msg_regs->dqdpar, (u32) dbell_ring.phys);
831 out_be32((void *)&msg_regs->dqepar, (u32) dbell_ring.phys);
832
833 /* Clear interrupt status */
834 out_be32((void *)&msg_regs->dsr, 0x00000091);
835
836 /* Hook up doorbell handler */
837 if ((rc =
838 request_irq(MPC85xx_IRQ_RIO_BELL, mpc85xx_rio_dbell_handler, 0,
839 "dbell_rx", (void *)mport) < 0)) {
840 iounmap((void *)dbell_win);
841 dma_free_coherent(NULL, 512 * DOORBELL_MESSAGE_SIZE,
842 dbell_ring.virt, dbell_ring.phys);
843 printk(KERN_ERR
844 "MPC85xx RIO: unable to request inbound doorbell irq");
845 goto out;
846 }
847
848 /* Configure doorbells for snooping, 512 entries, and enable */
849 out_be32((void *)&msg_regs->dmr, 0x00108161);
850
851 out:
852 return rc;
853}
854
855static char *cmdline = NULL;
856
857static int mpc85xx_rio_get_hdid(int index)
858{
859 /* XXX Need to parse multiple entries in some format */
860 if (!cmdline)
861 return -1;
862
863 return simple_strtol(cmdline, NULL, 0);
864}
865
866static int mpc85xx_rio_get_cmdline(char *s)
867{
868 if (!s)
869 return 0;
870
871 cmdline = s;
872 return 1;
873}
874
875__setup("riohdid=", mpc85xx_rio_get_cmdline);
876
877/**
878 * mpc85xx_rio_setup - Setup MPC85xx RapidIO interface
879 * @law_start: Starting physical address of RapidIO LAW
880 * @law_size: Size of RapidIO LAW
881 *
882 * Initializes MPC85xx RapidIO hardware interface, configures
883 * master port with system-specific info, and registers the
884 * master port with the RapidIO subsystem.
885 */
886void mpc85xx_rio_setup(int law_start, int law_size)
887{
888 struct rio_ops *ops;
889 struct rio_mport *port;
890
891 ops = kmalloc(sizeof(struct rio_ops), GFP_KERNEL);
892 ops->lcread = mpc85xx_local_config_read;
893 ops->lcwrite = mpc85xx_local_config_write;
894 ops->cread = mpc85xx_rio_config_read;
895 ops->cwrite = mpc85xx_rio_config_write;
896 ops->dsend = mpc85xx_rio_doorbell_send;
897
898 port = kmalloc(sizeof(struct rio_mport), GFP_KERNEL);
899 port->id = 0;
900 port->index = 0;
901 INIT_LIST_HEAD(&port->dbells);
902 port->iores.start = law_start;
903 port->iores.end = law_start + law_size;
904 port->iores.flags = IORESOURCE_MEM;
905
906 rio_init_dbell_res(&port->riores[RIO_DOORBELL_RESOURCE], 0, 0xffff);
907 rio_init_mbox_res(&port->riores[RIO_INB_MBOX_RESOURCE], 0, 0);
908 rio_init_mbox_res(&port->riores[RIO_OUTB_MBOX_RESOURCE], 0, 0);
909 strcpy(port->name, "RIO0 mport");
910
911 port->ops = ops;
912 port->host_deviceid = mpc85xx_rio_get_hdid(port->id);
913
914 rio_register_mport(port);
915
916 regs_win = (u32) ioremap(RIO_REGS_BASE, 0x20000);
917 atmu_regs = (struct rio_atmu_regs *)(regs_win + RIO_ATMU_REGS_OFFSET);
918 maint_atmu_regs = atmu_regs + 1;
919 dbell_atmu_regs = atmu_regs + 2;
920 msg_regs = (struct rio_msg_regs *)(regs_win + RIO_MSG_REGS_OFFSET);
921
922 /* Configure maintenance transaction window */
923 out_be32((void *)&maint_atmu_regs->rowbar, 0x000c0000);
924 out_be32((void *)&maint_atmu_regs->rowar, 0x80077015);
925
926 maint_win = (u32) ioremap(law_start, RIO_MAINT_WIN_SIZE);
927
928 /* Configure outbound doorbell window */
929 out_be32((void *)&dbell_atmu_regs->rowbar, 0x000c0400);
930 out_be32((void *)&dbell_atmu_regs->rowar, 0x8004200b);
931 mpc85xx_rio_doorbell_init(port);
932}
diff --git a/arch/powerpc/sysdev/fsl_rio.h b/arch/powerpc/sysdev/fsl_rio.h
new file mode 100644
index 000000000000..6d3ff30b1579
--- /dev/null
+++ b/arch/powerpc/sysdev/fsl_rio.h
@@ -0,0 +1,20 @@
1/*
2 * MPC85xx RapidIO definitions
3 *
4 * Copyright 2005 MontaVista Software, Inc.
5 * Matt Porter <mporter@kernel.crashing.org>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12
13#ifndef __PPC_SYSLIB_PPC85XX_RIO_H
14#define __PPC_SYSLIB_PPC85XX_RIO_H
15
16#include <linux/init.h>
17
18extern void mpc85xx_rio_setup(int law_start, int law_size);
19
20#endif /* __PPC_SYSLIB_PPC85XX_RIO_H */
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 217bcc2e8f86..f2c0988a03b8 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -24,6 +24,7 @@
24#include <linux/platform_device.h> 24#include <linux/platform_device.h>
25#include <linux/of_platform.h> 25#include <linux/of_platform.h>
26#include <linux/phy.h> 26#include <linux/phy.h>
27#include <linux/phy_fixed.h>
27#include <linux/spi/spi.h> 28#include <linux/spi/spi.h>
28#include <linux/fsl_devices.h> 29#include <linux/fsl_devices.h>
29#include <linux/fs_enet_pd.h> 30#include <linux/fs_enet_pd.h>
@@ -54,10 +55,18 @@ phys_addr_t get_immrbase(void)
54 soc = of_find_node_by_type(NULL, "soc"); 55 soc = of_find_node_by_type(NULL, "soc");
55 if (soc) { 56 if (soc) {
56 int size; 57 int size;
57 const void *prop = of_get_property(soc, "reg", &size); 58 u32 naddr;
59 const u32 *prop = of_get_property(soc, "#address-cells", &size);
58 60
61 if (prop && size == 4)
62 naddr = *prop;
63 else
64 naddr = 2;
65
66 prop = of_get_property(soc, "ranges", &size);
59 if (prop) 67 if (prop)
60 immrbase = of_translate_address(soc, prop); 68 immrbase = of_translate_address(soc, prop + naddr);
69
61 of_node_put(soc); 70 of_node_put(soc);
62 } 71 }
63 72
@@ -130,6 +139,37 @@ u32 get_baudrate(void)
130EXPORT_SYMBOL(get_baudrate); 139EXPORT_SYMBOL(get_baudrate);
131#endif /* CONFIG_CPM2 */ 140#endif /* CONFIG_CPM2 */
132 141
142#ifdef CONFIG_FIXED_PHY
143static int __init of_add_fixed_phys(void)
144{
145 int ret;
146 struct device_node *np;
147 u32 *fixed_link;
148 struct fixed_phy_status status = {};
149
150 for_each_node_by_name(np, "ethernet") {
151 fixed_link = (u32 *)of_get_property(np, "fixed-link", NULL);
152 if (!fixed_link)
153 continue;
154
155 status.link = 1;
156 status.duplex = fixed_link[1];
157 status.speed = fixed_link[2];
158 status.pause = fixed_link[3];
159 status.asym_pause = fixed_link[4];
160
161 ret = fixed_phy_add(PHY_POLL, fixed_link[0], &status);
162 if (ret) {
163 of_node_put(np);
164 return ret;
165 }
166 }
167
168 return 0;
169}
170arch_initcall(of_add_fixed_phys);
171#endif /* CONFIG_FIXED_PHY */
172
133static int __init gfar_mdio_of_init(void) 173static int __init gfar_mdio_of_init(void)
134{ 174{
135 struct device_node *np = NULL; 175 struct device_node *np = NULL;
@@ -198,7 +238,6 @@ static const char *gfar_tx_intr = "tx";
198static const char *gfar_rx_intr = "rx"; 238static const char *gfar_rx_intr = "rx";
199static const char *gfar_err_intr = "error"; 239static const char *gfar_err_intr = "error";
200 240
201
202static int __init gfar_of_init(void) 241static int __init gfar_of_init(void)
203{ 242{
204 struct device_node *np; 243 struct device_node *np;
@@ -282,29 +321,43 @@ static int __init gfar_of_init(void)
282 gfar_data.interface = PHY_INTERFACE_MODE_MII; 321 gfar_data.interface = PHY_INTERFACE_MODE_MII;
283 322
284 ph = of_get_property(np, "phy-handle", NULL); 323 ph = of_get_property(np, "phy-handle", NULL);
285 phy = of_find_node_by_phandle(*ph); 324 if (ph == NULL) {
325 u32 *fixed_link;
286 326
287 if (phy == NULL) { 327 fixed_link = (u32 *)of_get_property(np, "fixed-link",
288 ret = -ENODEV; 328 NULL);
289 goto unreg; 329 if (!fixed_link) {
290 } 330 ret = -ENODEV;
331 goto unreg;
332 }
291 333
292 mdio = of_get_parent(phy); 334 gfar_data.bus_id = 0;
335 gfar_data.phy_id = fixed_link[0];
336 } else {
337 phy = of_find_node_by_phandle(*ph);
338
339 if (phy == NULL) {
340 ret = -ENODEV;
341 goto unreg;
342 }
343
344 mdio = of_get_parent(phy);
345
346 id = of_get_property(phy, "reg", NULL);
347 ret = of_address_to_resource(mdio, 0, &res);
348 if (ret) {
349 of_node_put(phy);
350 of_node_put(mdio);
351 goto unreg;
352 }
353
354 gfar_data.phy_id = *id;
355 gfar_data.bus_id = res.start;
293 356
294 id = of_get_property(phy, "reg", NULL);
295 ret = of_address_to_resource(mdio, 0, &res);
296 if (ret) {
297 of_node_put(phy); 357 of_node_put(phy);
298 of_node_put(mdio); 358 of_node_put(mdio);
299 goto unreg;
300 } 359 }
301 360
302 gfar_data.phy_id = *id;
303 gfar_data.bus_id = res.start;
304
305 of_node_put(phy);
306 of_node_put(mdio);
307
308 ret = 361 ret =
309 platform_device_add_data(gfar_dev, &gfar_data, 362 platform_device_add_data(gfar_dev, &gfar_data,
310 sizeof(struct 363 sizeof(struct
@@ -531,14 +584,12 @@ static enum fsl_usb2_phy_modes determine_usb_phy(const char *phy_type)
531static int __init fsl_usb_of_init(void) 584static int __init fsl_usb_of_init(void)
532{ 585{
533 struct device_node *np; 586 struct device_node *np;
534 unsigned int i; 587 unsigned int i = 0;
535 struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL, 588 struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL,
536 *usb_dev_dr_client = NULL; 589 *usb_dev_dr_client = NULL;
537 int ret; 590 int ret;
538 591
539 for (np = NULL, i = 0; 592 for_each_compatible_node(np, NULL, "fsl-usb2-mph") {
540 (np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL;
541 i++) {
542 struct resource r[2]; 593 struct resource r[2];
543 struct fsl_usb2_platform_data usb_data; 594 struct fsl_usb2_platform_data usb_data;
544 const unsigned char *prop = NULL; 595 const unsigned char *prop = NULL;
@@ -581,11 +632,10 @@ static int __init fsl_usb_of_init(void)
581 fsl_usb2_platform_data)); 632 fsl_usb2_platform_data));
582 if (ret) 633 if (ret)
583 goto unreg_mph; 634 goto unreg_mph;
635 i++;
584 } 636 }
585 637
586 for (np = NULL; 638 for_each_compatible_node(np, NULL, "fsl-usb2-dr") {
587 (np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL;
588 i++) {
589 struct resource r[2]; 639 struct resource r[2];
590 struct fsl_usb2_platform_data usb_data; 640 struct fsl_usb2_platform_data usb_data;
591 const unsigned char *prop = NULL; 641 const unsigned char *prop = NULL;
@@ -657,6 +707,7 @@ static int __init fsl_usb_of_init(void)
657 fsl_usb2_platform_data)))) 707 fsl_usb2_platform_data))))
658 goto unreg_dr; 708 goto unreg_dr;
659 } 709 }
710 i++;
660 } 711 }
661 return 0; 712 return 0;
662 713
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c
index 7274750fd9c6..4c016da68426 100644
--- a/arch/powerpc/sysdev/ipic.c
+++ b/arch/powerpc/sysdev/ipic.c
@@ -48,6 +48,13 @@ static struct ipic_info ipic_info[] = {
48 .bit = 17, 48 .bit = 17,
49 .prio_mask = 1, 49 .prio_mask = 1,
50 }, 50 },
51 [3] = {
52 .mask = IPIC_SIMSR_H,
53 .prio = IPIC_SIPRR_C,
54 .force = IPIC_SIFCR_H,
55 .bit = 18,
56 .prio_mask = 2,
57 },
51 [4] = { 58 [4] = {
52 .mask = IPIC_SIMSR_H, 59 .mask = IPIC_SIMSR_H,
53 .prio = IPIC_SIPRR_C, 60 .prio = IPIC_SIPRR_C,
@@ -55,6 +62,34 @@ static struct ipic_info ipic_info[] = {
55 .bit = 19, 62 .bit = 19,
56 .prio_mask = 3, 63 .prio_mask = 3,
57 }, 64 },
65 [5] = {
66 .mask = IPIC_SIMSR_H,
67 .prio = IPIC_SIPRR_C,
68 .force = IPIC_SIFCR_H,
69 .bit = 20,
70 .prio_mask = 4,
71 },
72 [6] = {
73 .mask = IPIC_SIMSR_H,
74 .prio = IPIC_SIPRR_C,
75 .force = IPIC_SIFCR_H,
76 .bit = 21,
77 .prio_mask = 5,
78 },
79 [7] = {
80 .mask = IPIC_SIMSR_H,
81 .prio = IPIC_SIPRR_C,
82 .force = IPIC_SIFCR_H,
83 .bit = 22,
84 .prio_mask = 6,
85 },
86 [8] = {
87 .mask = IPIC_SIMSR_H,
88 .prio = IPIC_SIPRR_C,
89 .force = IPIC_SIFCR_H,
90 .bit = 23,
91 .prio_mask = 7,
92 },
58 [9] = { 93 [9] = {
59 .mask = IPIC_SIMSR_H, 94 .mask = IPIC_SIMSR_H,
60 .prio = IPIC_SIPRR_D, 95 .prio = IPIC_SIPRR_D,
@@ -223,6 +258,20 @@ static struct ipic_info ipic_info[] = {
223 .bit = 7, 258 .bit = 7,
224 .prio_mask = 7, 259 .prio_mask = 7,
225 }, 260 },
261 [40] = {
262 .mask = IPIC_SIMSR_H,
263 .prio = IPIC_SIPRR_B,
264 .force = IPIC_SIFCR_H,
265 .bit = 8,
266 .prio_mask = 0,
267 },
268 [41] = {
269 .mask = IPIC_SIMSR_H,
270 .prio = IPIC_SIPRR_B,
271 .force = IPIC_SIFCR_H,
272 .bit = 9,
273 .prio_mask = 1,
274 },
226 [42] = { 275 [42] = {
227 .mask = IPIC_SIMSR_H, 276 .mask = IPIC_SIMSR_H,
228 .prio = IPIC_SIPRR_B, 277 .prio = IPIC_SIPRR_B,
@@ -230,6 +279,13 @@ static struct ipic_info ipic_info[] = {
230 .bit = 10, 279 .bit = 10,
231 .prio_mask = 2, 280 .prio_mask = 2,
232 }, 281 },
282 [43] = {
283 .mask = IPIC_SIMSR_H,
284 .prio = IPIC_SIPRR_B,
285 .force = IPIC_SIFCR_H,
286 .bit = 11,
287 .prio_mask = 3,
288 },
233 [44] = { 289 [44] = {
234 .mask = IPIC_SIMSR_H, 290 .mask = IPIC_SIMSR_H,
235 .prio = IPIC_SIPRR_B, 291 .prio = IPIC_SIPRR_B,
@@ -387,6 +443,12 @@ static struct ipic_info ipic_info[] = {
387 .force = IPIC_SIFCR_L, 443 .force = IPIC_SIFCR_L,
388 .bit = 18, 444 .bit = 18,
389 }, 445 },
446 [83] = {
447 .mask = IPIC_SIMSR_L,
448 .prio = 0,
449 .force = IPIC_SIFCR_L,
450 .bit = 19,
451 },
390 [84] = { 452 [84] = {
391 .mask = IPIC_SIMSR_L, 453 .mask = IPIC_SIMSR_L,
392 .prio = 0, 454 .prio = 0,
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index f88ff09c4711..0da7069c7c62 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -267,7 +267,7 @@ static inline void _mpic_irq_write(struct mpic *mpic, unsigned int src_no,
267 */ 267 */
268 268
269 269
270static void _mpic_map_mmio(struct mpic *mpic, unsigned long phys_addr, 270static void _mpic_map_mmio(struct mpic *mpic, phys_addr_t phys_addr,
271 struct mpic_reg_bank *rb, unsigned int offset, 271 struct mpic_reg_bank *rb, unsigned int offset,
272 unsigned int size) 272 unsigned int size)
273{ 273{
@@ -287,7 +287,7 @@ static void _mpic_map_dcr(struct mpic *mpic, struct mpic_reg_bank *rb,
287 BUG_ON(!DCR_MAP_OK(rb->dhost)); 287 BUG_ON(!DCR_MAP_OK(rb->dhost));
288} 288}
289 289
290static inline void mpic_map(struct mpic *mpic, unsigned long phys_addr, 290static inline void mpic_map(struct mpic *mpic, phys_addr_t phys_addr,
291 struct mpic_reg_bank *rb, unsigned int offset, 291 struct mpic_reg_bank *rb, unsigned int offset,
292 unsigned int size) 292 unsigned int size)
293{ 293{
diff --git a/arch/powerpc/sysdev/qe_lib/Kconfig b/arch/powerpc/sysdev/qe_lib/Kconfig
index f611d344a126..adc66212a419 100644
--- a/arch/powerpc/sysdev/qe_lib/Kconfig
+++ b/arch/powerpc/sysdev/qe_lib/Kconfig
@@ -4,7 +4,7 @@
4 4
5config UCC_SLOW 5config UCC_SLOW
6 bool 6 bool
7 default n 7 default y if SERIAL_QE
8 help 8 help
9 This option provides qe_lib support to UCC slow 9 This option provides qe_lib support to UCC slow
10 protocols: UART, BISYNC, QMC 10 protocols: UART, BISYNC, QMC
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index 21e01061aca9..3925eae9b0f5 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -25,6 +25,7 @@
25#include <linux/module.h> 25#include <linux/module.h>
26#include <linux/delay.h> 26#include <linux/delay.h>
27#include <linux/ioport.h> 27#include <linux/ioport.h>
28#include <linux/crc32.h>
28#include <asm/irq.h> 29#include <asm/irq.h>
29#include <asm/page.h> 30#include <asm/page.h>
30#include <asm/pgtable.h> 31#include <asm/pgtable.h>
@@ -394,3 +395,249 @@ void *qe_muram_addr(unsigned long offset)
394 return (void *)&qe_immr->muram[offset]; 395 return (void *)&qe_immr->muram[offset];
395} 396}
396EXPORT_SYMBOL(qe_muram_addr); 397EXPORT_SYMBOL(qe_muram_addr);
398
399/* The maximum number of RISCs we support */
400#define MAX_QE_RISC 2
401
402/* Firmware information stored here for qe_get_firmware_info() */
403static struct qe_firmware_info qe_firmware_info;
404
405/*
406 * Set to 1 if QE firmware has been uploaded, and therefore
407 * qe_firmware_info contains valid data.
408 */
409static int qe_firmware_uploaded;
410
411/*
412 * Upload a QE microcode
413 *
414 * This function is a worker function for qe_upload_firmware(). It does
415 * the actual uploading of the microcode.
416 */
417static void qe_upload_microcode(const void *base,
418 const struct qe_microcode *ucode)
419{
420 const __be32 *code = base + be32_to_cpu(ucode->code_offset);
421 unsigned int i;
422
423 if (ucode->major || ucode->minor || ucode->revision)
424 printk(KERN_INFO "qe-firmware: "
425 "uploading microcode '%s' version %u.%u.%u\n",
426 ucode->id, ucode->major, ucode->minor, ucode->revision);
427 else
428 printk(KERN_INFO "qe-firmware: "
429 "uploading microcode '%s'\n", ucode->id);
430
431 /* Use auto-increment */
432 out_be32(&qe_immr->iram.iadd, be32_to_cpu(ucode->iram_offset) |
433 QE_IRAM_IADD_AIE | QE_IRAM_IADD_BADDR);
434
435 for (i = 0; i < be32_to_cpu(ucode->count); i++)
436 out_be32(&qe_immr->iram.idata, be32_to_cpu(code[i]));
437}
438
439/*
440 * Upload a microcode to the I-RAM at a specific address.
441 *
442 * See Documentation/powerpc/qe-firmware.txt for information on QE microcode
443 * uploading.
444 *
445 * Currently, only version 1 is supported, so the 'version' field must be
446 * set to 1.
447 *
448 * The SOC model and revision are not validated, they are only displayed for
449 * informational purposes.
450 *
451 * 'calc_size' is the calculated size, in bytes, of the firmware structure and
452 * all of the microcode structures, minus the CRC.
453 *
454 * 'length' is the size that the structure says it is, including the CRC.
455 */
456int qe_upload_firmware(const struct qe_firmware *firmware)
457{
458 unsigned int i;
459 unsigned int j;
460 u32 crc;
461 size_t calc_size = sizeof(struct qe_firmware);
462 size_t length;
463 const struct qe_header *hdr;
464
465 if (!firmware) {
466 printk(KERN_ERR "qe-firmware: invalid pointer\n");
467 return -EINVAL;
468 }
469
470 hdr = &firmware->header;
471 length = be32_to_cpu(hdr->length);
472
473 /* Check the magic */
474 if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') ||
475 (hdr->magic[2] != 'F')) {
476 printk(KERN_ERR "qe-firmware: not a microcode\n");
477 return -EPERM;
478 }
479
480 /* Check the version */
481 if (hdr->version != 1) {
482 printk(KERN_ERR "qe-firmware: unsupported version\n");
483 return -EPERM;
484 }
485
486 /* Validate some of the fields */
487 if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) {
488 printk(KERN_ERR "qe-firmware: invalid data\n");
489 return -EINVAL;
490 }
491
492 /* Validate the length and check if there's a CRC */
493 calc_size += (firmware->count - 1) * sizeof(struct qe_microcode);
494
495 for (i = 0; i < firmware->count; i++)
496 /*
497 * For situations where the second RISC uses the same microcode
498 * as the first, the 'code_offset' and 'count' fields will be
499 * zero, so it's okay to add those.
500 */
501 calc_size += sizeof(__be32) *
502 be32_to_cpu(firmware->microcode[i].count);
503
504 /* Validate the length */
505 if (length != calc_size + sizeof(__be32)) {
506 printk(KERN_ERR "qe-firmware: invalid length\n");
507 return -EPERM;
508 }
509
510 /* Validate the CRC */
511 crc = be32_to_cpu(*(__be32 *)((void *)firmware + calc_size));
512 if (crc != crc32(0, firmware, calc_size)) {
513 printk(KERN_ERR "qe-firmware: firmware CRC is invalid\n");
514 return -EIO;
515 }
516
517 /*
518 * If the microcode calls for it, split the I-RAM.
519 */
520 if (!firmware->split)
521 setbits16(&qe_immr->cp.cercr, QE_CP_CERCR_CIR);
522
523 if (firmware->soc.model)
524 printk(KERN_INFO
525 "qe-firmware: firmware '%s' for %u V%u.%u\n",
526 firmware->id, be16_to_cpu(firmware->soc.model),
527 firmware->soc.major, firmware->soc.minor);
528 else
529 printk(KERN_INFO "qe-firmware: firmware '%s'\n",
530 firmware->id);
531
532 /*
533 * The QE only supports one microcode per RISC, so clear out all the
534 * saved microcode information and put in the new.
535 */
536 memset(&qe_firmware_info, 0, sizeof(qe_firmware_info));
537 strcpy(qe_firmware_info.id, firmware->id);
538 qe_firmware_info.extended_modes = firmware->extended_modes;
539 memcpy(qe_firmware_info.vtraps, firmware->vtraps,
540 sizeof(firmware->vtraps));
541
542 /* Loop through each microcode. */
543 for (i = 0; i < firmware->count; i++) {
544 const struct qe_microcode *ucode = &firmware->microcode[i];
545
546 /* Upload a microcode if it's present */
547 if (ucode->code_offset)
548 qe_upload_microcode(firmware, ucode);
549
550 /* Program the traps for this processor */
551 for (j = 0; j < 16; j++) {
552 u32 trap = be32_to_cpu(ucode->traps[j]);
553
554 if (trap)
555 out_be32(&qe_immr->rsp[i].tibcr[j], trap);
556 }
557
558 /* Enable traps */
559 out_be32(&qe_immr->rsp[i].eccr, be32_to_cpu(ucode->eccr));
560 }
561
562 qe_firmware_uploaded = 1;
563
564 return 0;
565}
566EXPORT_SYMBOL(qe_upload_firmware);
567
568/*
569 * Get info on the currently-loaded firmware
570 *
571 * This function also checks the device tree to see if the boot loader has
572 * uploaded a firmware already.
573 */
574struct qe_firmware_info *qe_get_firmware_info(void)
575{
576 static int initialized;
577 struct property *prop;
578 struct device_node *qe;
579 struct device_node *fw = NULL;
580 const char *sprop;
581 unsigned int i;
582
583 /*
584 * If we haven't checked yet, and a driver hasn't uploaded a firmware
585 * yet, then check the device tree for information.
586 */
587 if (initialized || qe_firmware_uploaded)
588 return NULL;
589
590 initialized = 1;
591
592 /*
593 * Newer device trees have an "fsl,qe" compatible property for the QE
594 * node, but we still need to support older device trees.
595 */
596 qe = of_find_compatible_node(NULL, NULL, "fsl,qe");
597 if (!qe) {
598 qe = of_find_node_by_type(NULL, "qe");
599 if (!qe)
600 return NULL;
601 }
602
603 /* Find the 'firmware' child node */
604 for_each_child_of_node(qe, fw) {
605 if (strcmp(fw->name, "firmware") == 0)
606 break;
607 }
608
609 of_node_put(qe);
610
611 /* Did we find the 'firmware' node? */
612 if (!fw)
613 return NULL;
614
615 qe_firmware_uploaded = 1;
616
617 /* Copy the data into qe_firmware_info*/
618 sprop = of_get_property(fw, "id", NULL);
619 if (sprop)
620 strncpy(qe_firmware_info.id, sprop,
621 sizeof(qe_firmware_info.id) - 1);
622
623 prop = of_find_property(fw, "extended-modes", NULL);
624 if (prop && (prop->length == sizeof(u64))) {
625 const u64 *iprop = prop->value;
626
627 qe_firmware_info.extended_modes = *iprop;
628 }
629
630 prop = of_find_property(fw, "virtual-traps", NULL);
631 if (prop && (prop->length == 32)) {
632 const u32 *iprop = prop->value;
633
634 for (i = 0; i < ARRAY_SIZE(qe_firmware_info.vtraps); i++)
635 qe_firmware_info.vtraps[i] = iprop[i];
636 }
637
638 of_node_put(fw);
639
640 return &qe_firmware_info;
641}
642EXPORT_SYMBOL(qe_get_firmware_info);
643
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_slow.c b/arch/powerpc/sysdev/qe_lib/ucc_slow.c
index 0174b3aeef8f..b2870b208ddb 100644
--- a/arch/powerpc/sysdev/qe_lib/ucc_slow.c
+++ b/arch/powerpc/sysdev/qe_lib/ucc_slow.c
@@ -19,6 +19,7 @@
19#include <linux/stddef.h> 19#include <linux/stddef.h>
20#include <linux/interrupt.h> 20#include <linux/interrupt.h>
21#include <linux/err.h> 21#include <linux/err.h>
22#include <linux/module.h>
22 23
23#include <asm/io.h> 24#include <asm/io.h>
24#include <asm/immap_qe.h> 25#include <asm/immap_qe.h>
@@ -41,6 +42,7 @@ u32 ucc_slow_get_qe_cr_subblock(int uccs_num)
41 default: return QE_CR_SUBBLOCK_INVALID; 42 default: return QE_CR_SUBBLOCK_INVALID;
42 } 43 }
43} 44}
45EXPORT_SYMBOL(ucc_slow_get_qe_cr_subblock);
44 46
45void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs) 47void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs)
46{ 48{
@@ -56,6 +58,7 @@ void ucc_slow_graceful_stop_tx(struct ucc_slow_private * uccs)
56 qe_issue_cmd(QE_GRACEFUL_STOP_TX, id, 58 qe_issue_cmd(QE_GRACEFUL_STOP_TX, id,
57 QE_CR_PROTOCOL_UNSPECIFIED, 0); 59 QE_CR_PROTOCOL_UNSPECIFIED, 0);
58} 60}
61EXPORT_SYMBOL(ucc_slow_graceful_stop_tx);
59 62
60void ucc_slow_stop_tx(struct ucc_slow_private * uccs) 63void ucc_slow_stop_tx(struct ucc_slow_private * uccs)
61{ 64{
@@ -65,6 +68,7 @@ void ucc_slow_stop_tx(struct ucc_slow_private * uccs)
65 id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); 68 id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
66 qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); 69 qe_issue_cmd(QE_STOP_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
67} 70}
71EXPORT_SYMBOL(ucc_slow_stop_tx);
68 72
69void ucc_slow_restart_tx(struct ucc_slow_private * uccs) 73void ucc_slow_restart_tx(struct ucc_slow_private * uccs)
70{ 74{
@@ -74,6 +78,7 @@ void ucc_slow_restart_tx(struct ucc_slow_private * uccs)
74 id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num); 78 id = ucc_slow_get_qe_cr_subblock(us_info->ucc_num);
75 qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0); 79 qe_issue_cmd(QE_RESTART_TX, id, QE_CR_PROTOCOL_UNSPECIFIED, 0);
76} 80}
81EXPORT_SYMBOL(ucc_slow_restart_tx);
77 82
78void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode) 83void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)
79{ 84{
@@ -94,6 +99,7 @@ void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode)
94 } 99 }
95 out_be32(&us_regs->gumr_l, gumr_l); 100 out_be32(&us_regs->gumr_l, gumr_l);
96} 101}
102EXPORT_SYMBOL(ucc_slow_enable);
97 103
98void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode) 104void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)
99{ 105{
@@ -114,6 +120,7 @@ void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode)
114 } 120 }
115 out_be32(&us_regs->gumr_l, gumr_l); 121 out_be32(&us_regs->gumr_l, gumr_l);
116} 122}
123EXPORT_SYMBOL(ucc_slow_disable);
117 124
118/* Initialize the UCC for Slow operations 125/* Initialize the UCC for Slow operations
119 * 126 *
@@ -347,6 +354,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
347 *uccs_ret = uccs; 354 *uccs_ret = uccs;
348 return 0; 355 return 0;
349} 356}
357EXPORT_SYMBOL(ucc_slow_init);
350 358
351void ucc_slow_free(struct ucc_slow_private * uccs) 359void ucc_slow_free(struct ucc_slow_private * uccs)
352{ 360{
@@ -366,5 +374,5 @@ void ucc_slow_free(struct ucc_slow_private * uccs)
366 374
367 kfree(uccs); 375 kfree(uccs);
368} 376}
369 377EXPORT_SYMBOL(ucc_slow_free);
370 378