aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kprobes.txt1
-rw-r--r--Documentation/powerpc/booting-without-of.txt59
-rw-r--r--arch/powerpc/Kconfig6
-rw-r--r--arch/powerpc/boot/Makefile1
-rw-r--r--arch/powerpc/boot/dts/asp834x-redboot.dts35
-rw-r--r--arch/powerpc/boot/dts/ksi8560.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8313erdb.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8315erdb.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc832x_mds.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc832x_rdb.dts71
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitx.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitxgp.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc834x_mds.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc836x_mds.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc836x_rdk.dts432
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8377_rdb.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8378_mds.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8378_rdb.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8379_mds.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8379_rdb.dts35
-rw-r--r--arch/powerpc/boot/dts/mpc8540ads.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8541cds.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8548cds.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8555cds.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8560ads.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8568mds.dts41
-rw-r--r--arch/powerpc/boot/dts/mpc8572ds.dts82
-rw-r--r--arch/powerpc/boot/dts/mpc8641_hpcn.dts41
-rw-r--r--arch/powerpc/boot/dts/sbc8349.dts35
-rw-r--r--arch/powerpc/boot/dts/sbc8548.dts41
-rw-r--r--arch/powerpc/boot/dts/sbc8560.dts41
-rw-r--r--arch/powerpc/boot/dts/sbc8641d.dts41
-rw-r--r--arch/powerpc/boot/dts/stx_gp3_8560.dts41
-rw-r--r--arch/powerpc/boot/dts/tqm8540.dts45
-rw-r--r--arch/powerpc/boot/dts/tqm8541.dts45
-rw-r--r--arch/powerpc/boot/dts/tqm8548-bigflash.dts406
-rw-r--r--arch/powerpc/boot/dts/tqm8548.dts406
-rw-r--r--arch/powerpc/boot/dts/tqm8555.dts45
-rw-r--r--arch/powerpc/boot/dts/tqm8560.dts110
-rwxr-xr-xarch/powerpc/boot/wrapper2
-rw-r--r--arch/powerpc/configs/83xx/mpc836x_rdk_defconfig1128
-rw-r--r--arch/powerpc/configs/85xx/tqm8548_defconfig1094
-rw-r--r--arch/powerpc/kernel/Makefile1
-rw-r--r--arch/powerpc/kernel/cputable.c16
-rw-r--r--arch/powerpc/kernel/entry_32.S8
-rw-r--r--arch/powerpc/kernel/head_booke.h10
-rw-r--r--arch/powerpc/kernel/head_fsl_booke.S57
-rw-r--r--arch/powerpc/kernel/idle_6xx.S2
-rw-r--r--arch/powerpc/kernel/idle_e500.S93
-rw-r--r--arch/powerpc/kernel/kprobes.c34
-rw-r--r--arch/powerpc/kernel/misc_32.S2
-rw-r--r--arch/powerpc/kernel/setup_32.c5
-rw-r--r--arch/powerpc/kernel/traps.c26
-rw-r--r--arch/powerpc/platforms/83xx/Kconfig11
-rw-r--r--arch/powerpc/platforms/83xx/Makefile1
-rw-r--r--arch/powerpc/platforms/83xx/mpc836x_rdk.c102
-rw-r--r--arch/powerpc/platforms/85xx/Kconfig8
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_ads.c8
-rw-r--r--arch/powerpc/platforms/85xx/tqm85xx.c23
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype7
-rw-r--r--arch/powerpc/sysdev/Makefile2
-rw-r--r--arch/powerpc/sysdev/cpm_common.c16
-rw-r--r--arch/powerpc/sysdev/fsl_gtm.c434
-rw-r--r--arch/powerpc/sysdev/qe_lib/Kconfig13
-rw-r--r--arch/powerpc/sysdev/qe_lib/Makefile2
-rw-r--r--arch/powerpc/sysdev/qe_lib/gpio.c149
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c94
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe_io.c94
-rw-r--r--arch/powerpc/sysdev/qe_lib/ucc.c7
-rw-r--r--arch/powerpc/sysdev/qe_lib/usb.c55
-rw-r--r--drivers/serial/cpm_uart/cpm_uart.h11
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_core.c373
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm1.c170
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm1.h12
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm2.c283
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm2.h12
-rw-r--r--include/asm-powerpc/cache.h3
-rw-r--r--include/asm-powerpc/cpm.h1
-rw-r--r--include/asm-powerpc/cpm1.h20
-rw-r--r--include/asm-powerpc/cpm2.h26
-rw-r--r--include/asm-powerpc/cputable.h19
-rw-r--r--include/asm-powerpc/fsl_gtm.h47
-rw-r--r--include/asm-powerpc/machdep.h1
-rw-r--r--include/asm-powerpc/qe.h82
-rw-r--r--include/asm-powerpc/reg.h2
-rw-r--r--include/asm-powerpc/reg_booke.h74
-rw-r--r--include/asm-powerpc/synch.h2
88 files changed, 6220 insertions, 1183 deletions
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt
index 6877e7187113..a79633d702bf 100644
--- a/Documentation/kprobes.txt
+++ b/Documentation/kprobes.txt
@@ -172,6 +172,7 @@ architectures:
172- ia64 (Does not support probes on instruction slot1.) 172- ia64 (Does not support probes on instruction slot1.)
173- sparc64 (Return probes not yet implemented.) 173- sparc64 (Return probes not yet implemented.)
174- arm 174- arm
175- ppc
175 176
1763. Configuring Kprobes 1773. Configuring Kprobes
177 178
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 948f6417a40b..b68684d39f96 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -61,6 +61,7 @@ Table of Contents
61 r) Freescale Display Interface Unit 61 r) Freescale Display Interface Unit
62 s) Freescale on board FPGA 62 s) Freescale on board FPGA
63 t) Freescael MSI interrupt controller 63 t) Freescael MSI interrupt controller
64 u) Freescale General-purpose Timers Module
64 65
65 VII - Marvell Discovery mv64[345]6x System Controller chips 66 VII - Marvell Discovery mv64[345]6x System Controller chips
66 1) The /system-controller node 67 1) The /system-controller node
@@ -1735,6 +1736,33 @@ platforms are moved over to use the flattened-device-tree model.
1735 ...... 1736 ......
1736 }; 1737 };
1737 1738
1739 Note that "par_io" nodes are obsolete, and should not be used for
1740 the new device trees. Instead, each Par I/O bank should be represented
1741 via its own gpio-controller node:
1742
1743 Required properties:
1744 - #gpio-cells : should be "2".
1745 - compatible : should be "fsl,<chip>-qe-pario-bank",
1746 "fsl,mpc8323-qe-pario-bank".
1747 - reg : offset to the register set and its length.
1748 - gpio-controller : node to identify gpio controllers.
1749
1750 Example:
1751 qe_pio_a: gpio-controller@1400 {
1752 #gpio-cells = <2>;
1753 compatible = "fsl,mpc8360-qe-pario-bank",
1754 "fsl,mpc8323-qe-pario-bank";
1755 reg = <0x1400 0x18>;
1756 gpio-controller;
1757 };
1758
1759 qe_pio_e: gpio-controller@1460 {
1760 #gpio-cells = <2>;
1761 compatible = "fsl,mpc8360-qe-pario-bank",
1762 "fsl,mpc8323-qe-pario-bank";
1763 reg = <0x1460 0x18>;
1764 gpio-controller;
1765 };
1738 1766
1739 vi) Pin configuration nodes 1767 vi) Pin configuration nodes
1740 1768
@@ -2907,6 +2935,37 @@ platforms are moved over to use the flattened-device-tree model.
2907 interrupt-parent = <&mpic>; 2935 interrupt-parent = <&mpic>;
2908 }; 2936 };
2909 2937
2938 u) Freescale General-purpose Timers Module
2939
2940 Required properties:
2941 - compatible : should be
2942 "fsl,<chip>-gtm", "fsl,gtm" for SOC GTMs
2943 "fsl,<chip>-qe-gtm", "fsl,qe-gtm", "fsl,gtm" for QE GTMs
2944 "fsl,<chip>-cpm2-gtm", "fsl,cpm2-gtm", "fsl,gtm" for CPM2 GTMs
2945 - reg : should contain gtm registers location and length (0x40).
2946 - interrupts : should contain four interrupts.
2947 - interrupt-parent : interrupt source phandle.
2948 - clock-frequency : specifies the frequency driving the timer.
2949
2950 Example:
2951
2952 timer@500 {
2953 compatible = "fsl,mpc8360-gtm", "fsl,gtm";
2954 reg = <0x500 0x40>;
2955 interrupts = <90 8 78 8 84 8 72 8>;
2956 interrupt-parent = <&ipic>;
2957 /* filled by u-boot */
2958 clock-frequency = <0>;
2959 };
2960
2961 timer@440 {
2962 compatible = "fsl,mpc8360-qe-gtm", "fsl,qe-gtm", "fsl,gtm";
2963 reg = <0x440 0x40>;
2964 interrupts = <12 13 14 15>;
2965 interrupt-parent = <&qeic>;
2966 /* filled by u-boot */
2967 clock-frequency = <0>;
2968 };
2910 2969
2911VII - Marvell Discovery mv64[345]6x System Controller chips 2970VII - Marvell Discovery mv64[345]6x System Controller chips
2912=========================================================== 2971===========================================================
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 3934e2659407..2cde4e333fd5 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -538,6 +538,12 @@ config FSL_LBC
538 help 538 help
539 Freescale Localbus support 539 Freescale Localbus support
540 540
541config FSL_GTM
542 bool
543 depends on PPC_83xx || QUICC_ENGINE || CPM2
544 help
545 Freescale General-purpose Timers support
546
541# Yes MCA RS/6000s exist but Linux-PPC does not currently support any 547# Yes MCA RS/6000s exist but Linux-PPC does not currently support any
542config MCA 548config MCA
543 bool 549 bool
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index e98841d60330..3463253893f2 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -256,6 +256,7 @@ image-$(CONFIG_MPC85xx_DS) += cuImage.mpc8544ds \
256 cuImage.mpc8572ds 256 cuImage.mpc8572ds
257image-$(CONFIG_TQM8540) += cuImage.tqm8540 257image-$(CONFIG_TQM8540) += cuImage.tqm8540
258image-$(CONFIG_TQM8541) += cuImage.tqm8541 258image-$(CONFIG_TQM8541) += cuImage.tqm8541
259image-$(CONFIG_TQM8548) += cuImage.tqm8548
259image-$(CONFIG_TQM8555) += cuImage.tqm8555 260image-$(CONFIG_TQM8555) += cuImage.tqm8555
260image-$(CONFIG_TQM8560) += cuImage.tqm8560 261image-$(CONFIG_TQM8560) += cuImage.tqm8560
261image-$(CONFIG_SBC8548) += cuImage.sbc8548 262image-$(CONFIG_SBC8548) += cuImage.sbc8548
diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts
index 972cf78fff65..8b1bb0e41905 100644
--- a/arch/powerpc/boot/dts/asp834x-redboot.dts
+++ b/arch/powerpc/boot/dts/asp834x-redboot.dts
@@ -118,6 +118,41 @@
118 mode = "cpu"; 118 mode = "cpu";
119 }; 119 };
120 120
121 dma@82a8 {
122 #address-cells = <1>;
123 #size-cells = <1>;
124 compatible = "fsl,mpc8347-dma", "fsl,elo-dma";
125 reg = <0x82a8 4>;
126 ranges = <0 0x8100 0x1a8>;
127 interrupt-parent = <&ipic>;
128 interrupts = <71 8>;
129 cell-index = <0>;
130 dma-channel@0 {
131 compatible = "fsl,mpc8347-dma-channel", "fsl,elo-dma-channel";
132 reg = <0 0x80>;
133 interrupt-parent = <&ipic>;
134 interrupts = <71 8>;
135 };
136 dma-channel@80 {
137 compatible = "fsl,mpc8347-dma-channel", "fsl,elo-dma-channel";
138 reg = <0x80 0x80>;
139 interrupt-parent = <&ipic>;
140 interrupts = <71 8>;
141 };
142 dma-channel@100 {
143 compatible = "fsl,mpc8347-dma-channel", "fsl,elo-dma-channel";
144 reg = <0x100 0x80>;
145 interrupt-parent = <&ipic>;
146 interrupts = <71 8>;
147 };
148 dma-channel@180 {
149 compatible = "fsl,mpc8347-dma-channel", "fsl,elo-dma-channel";
150 reg = <0x180 0x28>;
151 interrupt-parent = <&ipic>;
152 interrupts = <71 8>;
153 };
154 };
155
121 /* phy type (ULPI or SERIAL) are only types supported for MPH */ 156 /* phy type (ULPI or SERIAL) are only types supported for MPH */
122 /* port = 0 or 1 */ 157 /* port = 0 or 1 */
123 usb@22000 { 158 usb@22000 {
diff --git a/arch/powerpc/boot/dts/ksi8560.dts b/arch/powerpc/boot/dts/ksi8560.dts
index 6eb7c771f6a4..fd5804398417 100644
--- a/arch/powerpc/boot/dts/ksi8560.dts
+++ b/arch/powerpc/boot/dts/ksi8560.dts
@@ -83,6 +83,47 @@
83 dfsrr; 83 dfsrr;
84 }; 84 };
85 85
86 dma@21300 {
87 #address-cells = <1>;
88 #size-cells = <1>;
89 compatible = "fsl,mpc8560-dma", "fsl,eloplus-dma";
90 reg = <0x21300 0x4>;
91 ranges = <0x0 0x21100 0x200>;
92 cell-index = <0>;
93 dma-channel@0 {
94 compatible = "fsl,mpc8560-dma-channel",
95 "fsl,eloplus-dma-channel";
96 reg = <0x0 0x80>;
97 cell-index = <0>;
98 interrupt-parent = <&mpic>;
99 interrupts = <20 2>;
100 };
101 dma-channel@80 {
102 compatible = "fsl,mpc8560-dma-channel",
103 "fsl,eloplus-dma-channel";
104 reg = <0x80 0x80>;
105 cell-index = <1>;
106 interrupt-parent = <&mpic>;
107 interrupts = <21 2>;
108 };
109 dma-channel@100 {
110 compatible = "fsl,mpc8560-dma-channel",
111 "fsl,eloplus-dma-channel";
112 reg = <0x100 0x80>;
113 cell-index = <2>;
114 interrupt-parent = <&mpic>;
115 interrupts = <22 2>;
116 };
117 dma-channel@180 {
118 compatible = "fsl,mpc8560-dma-channel",
119 "fsl,eloplus-dma-channel";
120 reg = <0x180 0x80>;
121 cell-index = <3>;
122 interrupt-parent = <&mpic>;
123 interrupts = <23 2>;
124 };
125 };
126
86 mdio@24520 { /* For TSECs */ 127 mdio@24520 { /* For TSECs */
87 #address-cells = <1>; 128 #address-cells = <1>;
88 #size-cells = <0>; 129 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts
index e1f0dca8ac39..b2068430a06d 100644
--- a/arch/powerpc/boot/dts/mpc8313erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8313erdb.dts
@@ -144,6 +144,41 @@
144 mode = "cpu"; 144 mode = "cpu";
145 }; 145 };
146 146
147 dma@82a8 {
148 #address-cells = <1>;
149 #size-cells = <1>;
150 compatible = "fsl,mpc8313-dma", "fsl,elo-dma";
151 reg = <0x82a8 4>;
152 ranges = <0 0x8100 0x1a8>;
153 interrupt-parent = <&ipic>;
154 interrupts = <71 8>;
155 cell-index = <0>;
156 dma-channel@0 {
157 compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
158 reg = <0 0x80>;
159 interrupt-parent = <&ipic>;
160 interrupts = <71 8>;
161 };
162 dma-channel@80 {
163 compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
164 reg = <0x80 0x80>;
165 interrupt-parent = <&ipic>;
166 interrupts = <71 8>;
167 };
168 dma-channel@100 {
169 compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
170 reg = <0x100 0x80>;
171 interrupt-parent = <&ipic>;
172 interrupts = <71 8>;
173 };
174 dma-channel@180 {
175 compatible = "fsl,mpc8313-dma-channel", "fsl,elo-dma-channel";
176 reg = <0x180 0x28>;
177 interrupt-parent = <&ipic>;
178 interrupts = <71 8>;
179 };
180 };
181
147 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 182 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
148 usb@23000 { 183 usb@23000 {
149 compatible = "fsl-usb2-dr"; 184 compatible = "fsl-usb2-dr";
diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts
index d7a1ececa30f..a40e8064d429 100644
--- a/arch/powerpc/boot/dts/mpc8315erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8315erdb.dts
@@ -132,6 +132,41 @@
132 mode = "cpu"; 132 mode = "cpu";
133 }; 133 };
134 134
135 dma@82a8 {
136 #address-cells = <1>;
137 #size-cells = <1>;
138 compatible = "fsl,mpc8315-dma", "fsl,elo-dma";
139 reg = <0x82a8 4>;
140 ranges = <0 0x8100 0x1a8>;
141 interrupt-parent = <&ipic>;
142 interrupts = <71 8>;
143 cell-index = <0>;
144 dma-channel@0 {
145 compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
146 reg = <0 0x80>;
147 interrupt-parent = <&ipic>;
148 interrupts = <71 8>;
149 };
150 dma-channel@80 {
151 compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
152 reg = <0x80 0x80>;
153 interrupt-parent = <&ipic>;
154 interrupts = <71 8>;
155 };
156 dma-channel@100 {
157 compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
158 reg = <0x100 0x80>;
159 interrupt-parent = <&ipic>;
160 interrupts = <71 8>;
161 };
162 dma-channel@180 {
163 compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
164 reg = <0x180 0x28>;
165 interrupt-parent = <&ipic>;
166 interrupts = <71 8>;
167 };
168 };
169
135 usb@23000 { 170 usb@23000 {
136 compatible = "fsl-usb2-dr"; 171 compatible = "fsl-usb2-dr";
137 reg = <0x23000 0x1000>; 172 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
index 539e02fb3526..b5968b6c8a29 100644
--- a/arch/powerpc/boot/dts/mpc832x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
@@ -114,6 +114,41 @@
114 interrupt-parent = <&ipic>; 114 interrupt-parent = <&ipic>;
115 }; 115 };
116 116
117 dma@82a8 {
118 #address-cells = <1>;
119 #size-cells = <1>;
120 compatible = "fsl,mpc8323-dma", "fsl,elo-dma";
121 reg = <0x82a8 4>;
122 ranges = <0 0x8100 0x1a8>;
123 interrupt-parent = <&ipic>;
124 interrupts = <71 8>;
125 cell-index = <0>;
126 dma-channel@0 {
127 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
128 reg = <0 0x80>;
129 interrupt-parent = <&ipic>;
130 interrupts = <71 8>;
131 };
132 dma-channel@80 {
133 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
134 reg = <0x80 0x80>;
135 interrupt-parent = <&ipic>;
136 interrupts = <71 8>;
137 };
138 dma-channel@100 {
139 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
140 reg = <0x100 0x80>;
141 interrupt-parent = <&ipic>;
142 interrupts = <71 8>;
143 };
144 dma-channel@180 {
145 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
146 reg = <0x180 0x28>;
147 interrupt-parent = <&ipic>;
148 interrupts = <71 8>;
149 };
150 };
151
117 crypto@30000 { 152 crypto@30000 {
118 device_type = "crypto"; 153 device_type = "crypto";
119 model = "SEC2"; 154 model = "SEC2";
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts
index 179c81c6a7ac..a798d8639a7d 100644
--- a/arch/powerpc/boot/dts/mpc832x_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts
@@ -68,7 +68,7 @@
68 compatible = "fsl-i2c"; 68 compatible = "fsl-i2c";
69 reg = <0x3000 0x100>; 69 reg = <0x3000 0x100>;
70 interrupts = <14 0x8>; 70 interrupts = <14 0x8>;
71 interrupt-parent = <&pic>; 71 interrupt-parent = <&ipic>;
72 dfsrr; 72 dfsrr;
73 }; 73 };
74 74
@@ -79,7 +79,7 @@
79 reg = <0x4500 0x100>; 79 reg = <0x4500 0x100>;
80 clock-frequency = <0>; 80 clock-frequency = <0>;
81 interrupts = <9 0x8>; 81 interrupts = <9 0x8>;
82 interrupt-parent = <&pic>; 82 interrupt-parent = <&ipic>;
83 }; 83 };
84 84
85 serial1: serial@4600 { 85 serial1: serial@4600 {
@@ -89,7 +89,42 @@
89 reg = <0x4600 0x100>; 89 reg = <0x4600 0x100>;
90 clock-frequency = <0>; 90 clock-frequency = <0>;
91 interrupts = <10 0x8>; 91 interrupts = <10 0x8>;
92 interrupt-parent = <&pic>; 92 interrupt-parent = <&ipic>;
93 };
94
95 dma@82a8 {
96 #address-cells = <1>;
97 #size-cells = <1>;
98 compatible = "fsl,mpc8323-dma", "fsl,elo-dma";
99 reg = <0x82a8 4>;
100 ranges = <0 0x8100 0x1a8>;
101 interrupt-parent = <&ipic>;
102 interrupts = <71 8>;
103 cell-index = <0>;
104 dma-channel@0 {
105 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
106 reg = <0 0x80>;
107 interrupt-parent = <&ipic>;
108 interrupts = <71 8>;
109 };
110 dma-channel@80 {
111 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
112 reg = <0x80 0x80>;
113 interrupt-parent = <&ipic>;
114 interrupts = <71 8>;
115 };
116 dma-channel@100 {
117 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
118 reg = <0x100 0x80>;
119 interrupt-parent = <&ipic>;
120 interrupts = <71 8>;
121 };
122 dma-channel@180 {
123 compatible = "fsl,mpc8323-dma-channel", "fsl,elo-dma-channel";
124 reg = <0x180 0x28>;
125 interrupt-parent = <&ipic>;
126 interrupts = <71 8>;
127 };
93 }; 128 };
94 129
95 crypto@30000 { 130 crypto@30000 {
@@ -98,7 +133,7 @@
98 compatible = "talitos"; 133 compatible = "talitos";
99 reg = <0x30000 0x7000>; 134 reg = <0x30000 0x7000>;
100 interrupts = <11 0x8>; 135 interrupts = <11 0x8>;
101 interrupt-parent = <&pic>; 136 interrupt-parent = <&ipic>;
102 /* Rev. 2.2 */ 137 /* Rev. 2.2 */
103 num-channels = <1>; 138 num-channels = <1>;
104 channel-fifo-len = <24>; 139 channel-fifo-len = <24>;
@@ -106,7 +141,7 @@
106 descriptor-types-mask = <0x0122003f>; 141 descriptor-types-mask = <0x0122003f>;
107 }; 142 };
108 143
109 pic:pic@700 { 144 ipic:pic@700 {
110 interrupt-controller; 145 interrupt-controller;
111 #address-cells = <0>; 146 #address-cells = <0>;
112 #interrupt-cells = <2>; 147 #interrupt-cells = <2>;
@@ -240,13 +275,13 @@
240 compatible = "fsl,ucc-mdio"; 275 compatible = "fsl,ucc-mdio";
241 276
242 phy00:ethernet-phy@00 { 277 phy00:ethernet-phy@00 {
243 interrupt-parent = <&pic>; 278 interrupt-parent = <&ipic>;
244 interrupts = <0>; 279 interrupts = <0>;
245 reg = <0x0>; 280 reg = <0x0>;
246 device_type = "ethernet-phy"; 281 device_type = "ethernet-phy";
247 }; 282 };
248 phy04:ethernet-phy@04 { 283 phy04:ethernet-phy@04 {
249 interrupt-parent = <&pic>; 284 interrupt-parent = <&ipic>;
250 interrupts = <0>; 285 interrupts = <0>;
251 reg = <0x4>; 286 reg = <0x4>;
252 device_type = "ethernet-phy"; 287 device_type = "ethernet-phy";
@@ -261,7 +296,7 @@
261 reg = <0x80 0x80>; 296 reg = <0x80 0x80>;
262 big-endian; 297 big-endian;
263 interrupts = <32 0x8 33 0x8>; //high:32 low:33 298 interrupts = <32 0x8 33 0x8>; //high:32 low:33
264 interrupt-parent = <&pic>; 299 interrupt-parent = <&ipic>;
265 }; 300 };
266 }; 301 };
267 302
@@ -270,21 +305,21 @@
270 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 305 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
271 interrupt-map = < 306 interrupt-map = <
272 /* IDSEL 0x10 AD16 (USB) */ 307 /* IDSEL 0x10 AD16 (USB) */
273 0x8000 0x0 0x0 0x1 &pic 17 0x8 308 0x8000 0x0 0x0 0x1 &ipic 17 0x8
274 309
275 /* IDSEL 0x11 AD17 (Mini1)*/ 310 /* IDSEL 0x11 AD17 (Mini1)*/
276 0x8800 0x0 0x0 0x1 &pic 18 0x8 311 0x8800 0x0 0x0 0x1 &ipic 18 0x8
277 0x8800 0x0 0x0 0x2 &pic 19 0x8 312 0x8800 0x0 0x0 0x2 &ipic 19 0x8
278 0x8800 0x0 0x0 0x3 &pic 20 0x8 313 0x8800 0x0 0x0 0x3 &ipic 20 0x8
279 0x8800 0x0 0x0 0x4 &pic 48 0x8 314 0x8800 0x0 0x0 0x4 &ipic 48 0x8
280 315
281 /* IDSEL 0x12 AD18 (PCI/Mini2) */ 316 /* IDSEL 0x12 AD18 (PCI/Mini2) */
282 0x9000 0x0 0x0 0x1 &pic 19 0x8 317 0x9000 0x0 0x0 0x1 &ipic 19 0x8
283 0x9000 0x0 0x0 0x2 &pic 20 0x8 318 0x9000 0x0 0x0 0x2 &ipic 20 0x8
284 0x9000 0x0 0x0 0x3 &pic 48 0x8 319 0x9000 0x0 0x0 0x3 &ipic 48 0x8
285 0x9000 0x0 0x0 0x4 &pic 17 0x8>; 320 0x9000 0x0 0x0 0x4 &ipic 17 0x8>;
286 321
287 interrupt-parent = <&pic>; 322 interrupt-parent = <&ipic>;
288 interrupts = <66 0x8>; 323 interrupts = <66 0x8>;
289 bus-range = <0x0 0x0>; 324 bus-range = <0x0 0x0>;
290 ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 325 ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index 9426676b0b7d..fc0f4c918c76 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -93,6 +93,41 @@
93 mode = "cpu"; 93 mode = "cpu";
94 }; 94 };
95 95
96 dma@82a8 {
97 #address-cells = <1>;
98 #size-cells = <1>;
99 compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
100 reg = <0x82a8 4>;
101 ranges = <0 0x8100 0x1a8>;
102 interrupt-parent = <&ipic>;
103 interrupts = <71 8>;
104 cell-index = <0>;
105 dma-channel@0 {
106 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
107 reg = <0 0x80>;
108 interrupt-parent = <&ipic>;
109 interrupts = <71 8>;
110 };
111 dma-channel@80 {
112 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
113 reg = <0x80 0x80>;
114 interrupt-parent = <&ipic>;
115 interrupts = <71 8>;
116 };
117 dma-channel@100 {
118 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
119 reg = <0x100 0x80>;
120 interrupt-parent = <&ipic>;
121 interrupts = <71 8>;
122 };
123 dma-channel@180 {
124 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
125 reg = <0x180 0x28>;
126 interrupt-parent = <&ipic>;
127 interrupts = <71 8>;
128 };
129 };
130
96 usb@22000 { 131 usb@22000 {
97 compatible = "fsl-usb2-mph"; 132 compatible = "fsl-usb2-mph";
98 reg = <0x22000 0x1000>; 133 reg = <0x22000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
index f81d735e6e72..e6afb1d1e19e 100644
--- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
@@ -91,6 +91,41 @@
91 mode = "cpu"; 91 mode = "cpu";
92 }; 92 };
93 93
94 dma@82a8 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
98 reg = <0x82a8 4>;
99 ranges = <0 0x8100 0x1a8>;
100 interrupt-parent = <&ipic>;
101 interrupts = <71 8>;
102 cell-index = <0>;
103 dma-channel@0 {
104 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
105 reg = <0 0x80>;
106 interrupt-parent = <&ipic>;
107 interrupts = <71 8>;
108 };
109 dma-channel@80 {
110 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
111 reg = <0x80 0x80>;
112 interrupt-parent = <&ipic>;
113 interrupts = <71 8>;
114 };
115 dma-channel@100 {
116 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
117 reg = <0x100 0x80>;
118 interrupt-parent = <&ipic>;
119 interrupts = <71 8>;
120 };
121 dma-channel@180 {
122 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
123 reg = <0x180 0x28>;
124 interrupt-parent = <&ipic>;
125 interrupts = <71 8>;
126 };
127 };
128
94 usb@23000 { 129 usb@23000 {
95 compatible = "fsl-usb2-dr"; 130 compatible = "fsl-usb2-dr";
96 reg = <0x23000 0x1000>; 131 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index 0199c5c548d8..9c75c7c69e21 100644
--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -103,6 +103,41 @@
103 mode = "cpu"; 103 mode = "cpu";
104 }; 104 };
105 105
106 dma@82a8 {
107 #address-cells = <1>;
108 #size-cells = <1>;
109 compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
110 reg = <0x82a8 4>;
111 ranges = <0 0x8100 0x1a8>;
112 interrupt-parent = <&ipic>;
113 interrupts = <71 8>;
114 cell-index = <0>;
115 dma-channel@0 {
116 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
117 reg = <0 0x80>;
118 interrupt-parent = <&ipic>;
119 interrupts = <71 8>;
120 };
121 dma-channel@80 {
122 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
123 reg = <0x80 0x80>;
124 interrupt-parent = <&ipic>;
125 interrupts = <71 8>;
126 };
127 dma-channel@100 {
128 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
129 reg = <0x100 0x80>;
130 interrupt-parent = <&ipic>;
131 interrupts = <71 8>;
132 };
133 dma-channel@180 {
134 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
135 reg = <0x180 0x28>;
136 interrupt-parent = <&ipic>;
137 interrupts = <71 8>;
138 };
139 };
140
106 /* phy type (ULPI or SERIAL) are only types supported for MPH */ 141 /* phy type (ULPI or SERIAL) are only types supported for MPH */
107 /* port = 0 or 1 */ 142 /* port = 0 or 1 */
108 usb@22000 { 143 usb@22000 {
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index 8160ff24e87e..8e33b155f112 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -118,6 +118,41 @@
118 interrupt-parent = <&ipic>; 118 interrupt-parent = <&ipic>;
119 }; 119 };
120 120
121 dma@82a8 {
122 #address-cells = <1>;
123 #size-cells = <1>;
124 compatible = "fsl,mpc8360-dma", "fsl,elo-dma";
125 reg = <0x82a8 4>;
126 ranges = <0 0x8100 0x1a8>;
127 interrupt-parent = <&ipic>;
128 interrupts = <71 8>;
129 cell-index = <0>;
130 dma-channel@0 {
131 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
132 reg = <0 0x80>;
133 interrupt-parent = <&ipic>;
134 interrupts = <71 8>;
135 };
136 dma-channel@80 {
137 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
138 reg = <0x80 0x80>;
139 interrupt-parent = <&ipic>;
140 interrupts = <71 8>;
141 };
142 dma-channel@100 {
143 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
144 reg = <0x100 0x80>;
145 interrupt-parent = <&ipic>;
146 interrupts = <71 8>;
147 };
148 dma-channel@180 {
149 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
150 reg = <0x180 0x28>;
151 interrupt-parent = <&ipic>;
152 interrupts = <71 8>;
153 };
154 };
155
121 crypto@30000 { 156 crypto@30000 {
122 device_type = "crypto"; 157 device_type = "crypto";
123 model = "SEC2"; 158 model = "SEC2";
diff --git a/arch/powerpc/boot/dts/mpc836x_rdk.dts b/arch/powerpc/boot/dts/mpc836x_rdk.dts
new file mode 100644
index 000000000000..8acd1d6577f2
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc836x_rdk.dts
@@ -0,0 +1,432 @@
1/*
2 * MPC8360E RDK Device Tree Source
3 *
4 * Copyright 2006 Freescale Semiconductor Inc.
5 * Copyright 2007-2008 MontaVista Software, Inc.
6 *
7 * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 */
14
15/dts-v1/;
16
17/ {
18 #address-cells = <1>;
19 #size-cells = <1>;
20 compatible = "fsl,mpc8360rdk";
21
22 aliases {
23 serial0 = &serial0;
24 serial1 = &serial1;
25 serial2 = &serial2;
26 serial3 = &serial3;
27 ethernet0 = &enet0;
28 ethernet1 = &enet1;
29 ethernet2 = &enet2;
30 ethernet3 = &enet3;
31 pci0 = &pci0;
32 };
33
34 cpus {
35 #address-cells = <1>;
36 #size-cells = <0>;
37
38 PowerPC,8360@0 {
39 device_type = "cpu";
40 reg = <0>;
41 d-cache-line-size = <32>;
42 i-cache-line-size = <32>;
43 d-cache-size = <32768>;
44 i-cache-size = <32768>;
45 /* filled by u-boot */
46 timebase-frequency = <0>;
47 bus-frequency = <0>;
48 clock-frequency = <0>;
49 };
50 };
51
52 memory {
53 device_type = "memory";
54 /* filled by u-boot */
55 reg = <0 0>;
56 };
57
58 soc@e0000000 {
59 #address-cells = <1>;
60 #size-cells = <1>;
61 device_type = "soc";
62 compatible = "fsl,mpc8360-immr", "fsl,immr", "fsl,soc",
63 "simple-bus";
64 ranges = <0 0xe0000000 0x200000>;
65 reg = <0xe0000000 0x200>;
66 /* filled by u-boot */
67 bus-frequency = <0>;
68
69 wdt@200 {
70 compatible = "mpc83xx_wdt";
71 reg = <0x200 0x100>;
72 };
73
74 i2c@3000 {
75 #address-cells = <1>;
76 #size-cells = <0>;
77 cell-index = <0>;
78 compatible = "fsl-i2c";
79 reg = <0x3000 0x100>;
80 interrupts = <14 8>;
81 interrupt-parent = <&ipic>;
82 dfsrr;
83 };
84
85 i2c@3100 {
86 #address-cells = <1>;
87 #size-cells = <0>;
88 cell-index = <1>;
89 compatible = "fsl-i2c";
90 reg = <0x3100 0x100>;
91 interrupts = <16 8>;
92 interrupt-parent = <&ipic>;
93 dfsrr;
94 };
95
96 serial0: serial@4500 {
97 device_type = "serial";
98 compatible = "ns16550";
99 reg = <0x4500 0x100>;
100 interrupts = <9 8>;
101 interrupt-parent = <&ipic>;
102 /* filled by u-boot */
103 clock-frequency = <0>;
104 };
105
106 serial1: serial@4600 {
107 device_type = "serial";
108 compatible = "ns16550";
109 reg = <0x4600 0x100>;
110 interrupts = <10 8>;
111 interrupt-parent = <&ipic>;
112 /* filled by u-boot */
113 clock-frequency = <0>;
114 };
115
116 dma@82a8 {
117 #address-cells = <1>;
118 #size-cells = <1>;
119 compatible = "fsl,mpc8360-dma", "fsl,elo-dma";
120 reg = <0x82a8 4>;
121 ranges = <0 0x8100 0x1a8>;
122 interrupt-parent = <&ipic>;
123 interrupts = <71 8>;
124 cell-index = <0>;
125 dma-channel@0 {
126 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
127 reg = <0 0x80>;
128 interrupt-parent = <&ipic>;
129 interrupts = <71 8>;
130 };
131 dma-channel@80 {
132 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
133 reg = <0x80 0x80>;
134 interrupt-parent = <&ipic>;
135 interrupts = <71 8>;
136 };
137 dma-channel@100 {
138 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
139 reg = <0x100 0x80>;
140 interrupt-parent = <&ipic>;
141 interrupts = <71 8>;
142 };
143 dma-channel@180 {
144 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
145 reg = <0x180 0x28>;
146 interrupt-parent = <&ipic>;
147 interrupts = <71 8>;
148 };
149 };
150
151 crypto@30000 {
152 compatible = "fsl,sec2-crypto";
153 reg = <0x30000 0x10000>;
154 interrupts = <11 8>;
155 interrupt-parent = <&ipic>;
156 num-channels = <4>;
157 channel-fifo-len = <24>;
158 exec-units-mask = <0x7e>;
159 /*
160 * desc mask is for rev1.x, we need runtime fixup
161 * for >=2.x
162 */
163 descriptor-types-mask = <0x1010ebf>;
164 };
165
166 ipic: interrupt-controller@700 {
167 #address-cells = <0>;
168 #interrupt-cells = <2>;
169 compatible = "fsl,pq2pro-pic", "fsl,ipic";
170 interrupt-controller;
171 reg = <0x700 0x100>;
172 };
173
174 qe_pio_b: gpio-controller@1418 {
175 #gpio-cells = <2>;
176 compatible = "fsl,mpc8360-qe-pario-bank",
177 "fsl,mpc8323-qe-pario-bank";
178 reg = <0x1418 0x18>;
179 gpio-controller;
180 };
181
182 qe_pio_e: gpio-controller@1460 {
183 #gpio-cells = <2>;
184 compatible = "fsl,mpc8360-qe-pario-bank",
185 "fsl,mpc8323-qe-pario-bank";
186 reg = <0x1460 0x18>;
187 gpio-controller;
188 };
189
190 qe@100000 {
191 #address-cells = <1>;
192 #size-cells = <1>;
193 device_type = "qe";
194 compatible = "fsl,qe", "simple-bus";
195 ranges = <0 0x100000 0x100000>;
196 reg = <0x100000 0x480>;
197 /* filled by u-boot */
198 clock-frequency = <0>;
199 bus-frequency = <0>;
200 brg-frequency = <0>;
201
202 muram@10000 {
203 #address-cells = <1>;
204 #size-cells = <1>;
205 compatible = "fsl,qe-muram", "fsl,cpm-muram";
206 ranges = <0 0x10000 0xc000>;
207
208 data-only@0 {
209 compatible = "fsl,qe-muram-data",
210 "fsl,cpm-muram-data";
211 reg = <0 0xc000>;
212 };
213 };
214
215 timer@440 {
216 compatible = "fsl,mpc8360-qe-gtm",
217 "fsl,qe-gtm", "fsl,gtm";
218 reg = <0x440 0x40>;
219 interrupts = <12 13 14 15>;
220 interrupt-parent = <&qeic>;
221 /* filled by u-boot */
222 clock-frequency = <0>;
223 };
224
225 spi@4c0 {
226 cell-index = <0>;
227 compatible = "fsl,spi";
228 reg = <0x4c0 0x40>;
229 interrupts = <2>;
230 interrupt-parent = <&qeic>;
231 mode = "cpu-qe";
232 };
233
234 spi@500 {
235 cell-index = <1>;
236 compatible = "fsl,spi";
237 reg = <0x500 0x40>;
238 interrupts = <1>;
239 interrupt-parent = <&qeic>;
240 mode = "cpu-qe";
241 };
242
243 enet0: ucc@2000 {
244 device_type = "network";
245 compatible = "ucc_geth";
246 cell-index = <1>;
247 reg = <0x2000 0x200>;
248 interrupts = <32>;
249 interrupt-parent = <&qeic>;
250 rx-clock-name = "none";
251 tx-clock-name = "clk9";
252 phy-handle = <&phy2>;
253 phy-connection-type = "rgmii-rxid";
254 /* filled by u-boot */
255 local-mac-address = [ 00 00 00 00 00 00 ];
256 };
257
258 enet1: ucc@3000 {
259 device_type = "network";
260 compatible = "ucc_geth";
261 cell-index = <2>;
262 reg = <0x3000 0x200>;
263 interrupts = <33>;
264 interrupt-parent = <&qeic>;
265 rx-clock-name = "none";
266 tx-clock-name = "clk4";
267 phy-handle = <&phy4>;
268 phy-connection-type = "rgmii-rxid";
269 /* filled by u-boot */
270 local-mac-address = [ 00 00 00 00 00 00 ];
271 };
272
273 enet2: ucc@2600 {
274 device_type = "network";
275 compatible = "ucc_geth";
276 cell-index = <7>;
277 reg = <0x2600 0x200>;
278 interrupts = <42>;
279 interrupt-parent = <&qeic>;
280 rx-clock-name = "clk20";
281 tx-clock-name = "clk19";
282 phy-handle = <&phy1>;
283 phy-connection-type = "mii";
284 /* filled by u-boot */
285 local-mac-address = [ 00 00 00 00 00 00 ];
286 };
287
288 enet3: ucc@3200 {
289 device_type = "network";
290 compatible = "ucc_geth";
291 cell-index = <4>;
292 reg = <0x3200 0x200>;
293 interrupts = <35>;
294 interrupt-parent = <&qeic>;
295 rx-clock-name = "clk8";
296 tx-clock-name = "clk7";
297 phy-handle = <&phy3>;
298 phy-connection-type = "mii";
299 /* filled by u-boot */
300 local-mac-address = [ 00 00 00 00 00 00 ];
301 };
302
303 mdio@2120 {
304 #address-cells = <1>;
305 #size-cells = <0>;
306 compatible = "fsl,ucc-mdio";
307 reg = <0x2120 0x18>;
308
309 phy1: ethernet-phy@1 {
310 device_type = "ethernet-phy";
311 compatible = "national,DP83848VV";
312 reg = <1>;
313 };
314
315 phy2: ethernet-phy@2 {
316 device_type = "ethernet-phy";
317 compatible = "broadcom,BCM5481UA2KMLG";
318 reg = <2>;
319 };
320
321 phy3: ethernet-phy@3 {
322 device_type = "ethernet-phy";
323 compatible = "national,DP83848VV";
324 reg = <3>;
325 };
326
327 phy4: ethernet-phy@4 {
328 device_type = "ethernet-phy";
329 compatible = "broadcom,BCM5481UA2KMLG";
330 reg = <4>;
331 };
332 };
333
334 serial2: ucc@2400 {
335 device_type = "serial";
336 compatible = "ucc_uart";
337 reg = <0x2400 0x200>;
338 cell-index = <5>;
339 port-number = <0>;
340 rx-clock-name = "brg7";
341 tx-clock-name = "brg8";
342 interrupts = <40>;
343 interrupt-parent = <&qeic>;
344 soft-uart;
345 };
346
347 serial3: ucc@3400 {
348 device_type = "serial";
349 compatible = "ucc_uart";
350 reg = <0x3400 0x200>;
351 cell-index = <6>;
352 port-number = <1>;
353 rx-clock-name = "brg13";
354 tx-clock-name = "brg14";
355 interrupts = <41>;
356 interrupt-parent = <&qeic>;
357 soft-uart;
358 };
359
360 qeic: interrupt-controller@80 {
361 #address-cells = <0>;
362 #interrupt-cells = <1>;
363 compatible = "fsl,qe-ic";
364 interrupt-controller;
365 reg = <0x80 0x80>;
366 big-endian;
367 interrupts = <32 8 33 8>;
368 interrupt-parent = <&ipic>;
369 };
370 };
371 };
372
373 localbus@e0005000 {
374 #address-cells = <2>;
375 #size-cells = <1>;
376 compatible = "fsl,mpc8360-localbus", "fsl,pq2pro-localbus",
377 "simple-bus";
378 reg = <0xe0005000 0xd8>;
379 ranges = <0 0 0xff800000 0x0800000
380 1 0 0x60000000 0x0001000
381 2 0 0x70000000 0x4000000>;
382
383 flash@0,0 {
384 compatible = "intel,PC28F640P30T85", "cfi-flash";
385 reg = <0 0 0x800000>;
386 bank-width = <2>;
387 device-width = <1>;
388 };
389
390 display@2,0 {
391 device_type = "display";
392 compatible = "fujitsu,MB86277", "fujitsu,mint";
393 reg = <2 0 0x4000000>;
394 fujitsu,sh3;
395 little-endian;
396 /* filled by u-boot */
397 address = <0>;
398 depth = <0>;
399 width = <0>;
400 height = <0>;
401 linebytes = <0>;
402 /* linux,opened; - added by uboot */
403 };
404 };
405
406 pci0: pci@e0008500 {
407 #address-cells = <3>;
408 #size-cells = <2>;
409 #interrupt-cells = <1>;
410 device_type = "pci";
411 compatible = "fsl,mpc8360-pci", "fsl,mpc8349-pci";
412 reg = <0xe0008500 0x100>;
413 ranges = <0x02000000 0 0x90000000 0x90000000 0 0x10000000
414 0x42000000 0 0x80000000 0x80000000 0 0x10000000
415 0x01000000 0 0xe0300000 0xe0300000 0 0x00100000>;
416 interrupts = <66 8>;
417 interrupt-parent = <&ipic>;
418 interrupt-map-mask = <0xf800 0 0 7>;
419 interrupt-map = </* miniPCI0 IDSEL 0x14 AD20 */
420 0xa000 0 0 1 &ipic 18 8
421 0xa000 0 0 2 &ipic 19 8
422
423 /* PCI1 IDSEL 0x15 AD21 */
424 0xa800 0 0 1 &ipic 19 8
425 0xa800 0 0 2 &ipic 20 8
426 0xa800 0 0 3 &ipic 21 8
427 0xa800 0 0 4 &ipic 18 8>;
428 /* filled by u-boot */
429 bus-range = <0 0>;
430 clock-frequency = <0>;
431 };
432};
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
index fea592574004..49a38cb95b52 100644
--- a/arch/powerpc/boot/dts/mpc8377_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -233,41 +233,6 @@
233 interrupt-parent = <&ipic>; 233 interrupt-parent = <&ipic>;
234 }; 234 };
235 235
236 crypto@30000 {
237 model = "SEC3";
238 compatible = "talitos";
239 reg = <0x30000 0x10000>;
240 interrupts = <11 0x8>;
241 interrupt-parent = <&ipic>;
242 /* Rev. 3.0 geometry */
243 num-channels = <4>;
244 channel-fifo-len = <24>;
245 exec-units-mask = <0x000001fe>;
246 descriptor-types-mask = <0x03ab0ebf>;
247 };
248
249 sdhc@2e000 {
250 model = "eSDHC";
251 compatible = "fsl,esdhc";
252 reg = <0x2e000 0x1000>;
253 interrupts = <42 0x8>;
254 interrupt-parent = <&ipic>;
255 };
256
257 sata@18000 {
258 compatible = "fsl,mpc8379-sata", "fsl,pq-sata";
259 reg = <0x18000 0x1000>;
260 interrupts = <44 0x8>;
261 interrupt-parent = <&ipic>;
262 };
263
264 sata@19000 {
265 compatible = "fsl,mpc8379-sata", "fsl,pq-sata";
266 reg = <0x19000 0x1000>;
267 interrupts = <45 0x8>;
268 interrupt-parent = <&ipic>;
269 };
270
271 dma@82a8 { 236 dma@82a8 {
272 #address-cells = <1>; 237 #address-cells = <1>;
273 #size-cells = <1>; 238 #size-cells = <1>;
@@ -303,6 +268,41 @@
303 }; 268 };
304 }; 269 };
305 270
271 crypto@30000 {
272 model = "SEC3";
273 compatible = "talitos";
274 reg = <0x30000 0x10000>;
275 interrupts = <11 0x8>;
276 interrupt-parent = <&ipic>;
277 /* Rev. 3.0 geometry */
278 num-channels = <4>;
279 channel-fifo-len = <24>;
280 exec-units-mask = <0x000001fe>;
281 descriptor-types-mask = <0x03ab0ebf>;
282 };
283
284 sdhc@2e000 {
285 model = "eSDHC";
286 compatible = "fsl,esdhc";
287 reg = <0x2e000 0x1000>;
288 interrupts = <42 0x8>;
289 interrupt-parent = <&ipic>;
290 };
291
292 sata@18000 {
293 compatible = "fsl,mpc8379-sata", "fsl,pq-sata";
294 reg = <0x18000 0x1000>;
295 interrupts = <44 0x8>;
296 interrupt-parent = <&ipic>;
297 };
298
299 sata@19000 {
300 compatible = "fsl,mpc8379-sata", "fsl,pq-sata";
301 reg = <0x19000 0x1000>;
302 interrupts = <45 0x8>;
303 interrupt-parent = <&ipic>;
304 };
305
306 /* IPIC 306 /* IPIC
307 * interrupts cell = <intr #, sense> 307 * interrupts cell = <intr #, sense>
308 * sense values match linux IORESOURCE_IRQ_* defines: 308 * sense values match linux IORESOURCE_IRQ_* defines:
diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts
index 5bc09ad016f5..e05743ad7b3f 100644
--- a/arch/powerpc/boot/dts/mpc8377_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts
@@ -143,6 +143,41 @@
143 mode = "cpu"; 143 mode = "cpu";
144 }; 144 };
145 145
146 dma@82a8 {
147 #address-cells = <1>;
148 #size-cells = <1>;
149 compatible = "fsl,mpc8377-dma", "fsl,elo-dma";
150 reg = <0x82a8 4>;
151 ranges = <0 0x8100 0x1a8>;
152 interrupt-parent = <&ipic>;
153 interrupts = <71 8>;
154 cell-index = <0>;
155 dma-channel@0 {
156 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
157 reg = <0 0x80>;
158 interrupt-parent = <&ipic>;
159 interrupts = <71 8>;
160 };
161 dma-channel@80 {
162 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
163 reg = <0x80 0x80>;
164 interrupt-parent = <&ipic>;
165 interrupts = <71 8>;
166 };
167 dma-channel@100 {
168 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
169 reg = <0x100 0x80>;
170 interrupt-parent = <&ipic>;
171 interrupts = <71 8>;
172 };
173 dma-channel@180 {
174 compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel";
175 reg = <0x180 0x28>;
176 interrupt-parent = <&ipic>;
177 interrupts = <71 8>;
178 };
179 };
180
146 usb@23000 { 181 usb@23000 {
147 compatible = "fsl-usb2-dr"; 182 compatible = "fsl-usb2-dr";
148 reg = <0x23000 0x1000>; 183 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
index 1d6ea080ad73..99ad49d4f13f 100644
--- a/arch/powerpc/boot/dts/mpc8378_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
@@ -157,6 +157,41 @@
157 mode = "cpu"; 157 mode = "cpu";
158 }; 158 };
159 159
160 dma@82a8 {
161 #address-cells = <1>;
162 #size-cells = <1>;
163 compatible = "fsl,mpc8378-dma", "fsl,elo-dma";
164 reg = <0x82a8 4>;
165 ranges = <0 0x8100 0x1a8>;
166 interrupt-parent = <&ipic>;
167 interrupts = <71 8>;
168 cell-index = <0>;
169 dma-channel@0 {
170 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
171 reg = <0 0x80>;
172 interrupt-parent = <&ipic>;
173 interrupts = <71 8>;
174 };
175 dma-channel@80 {
176 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
177 reg = <0x80 0x80>;
178 interrupt-parent = <&ipic>;
179 interrupts = <71 8>;
180 };
181 dma-channel@100 {
182 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
183 reg = <0x100 0x80>;
184 interrupt-parent = <&ipic>;
185 interrupts = <71 8>;
186 };
187 dma-channel@180 {
188 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
189 reg = <0x180 0x28>;
190 interrupt-parent = <&ipic>;
191 interrupts = <71 8>;
192 };
193 };
194
160 usb@23000 { 195 usb@23000 {
161 compatible = "fsl-usb2-dr"; 196 compatible = "fsl-usb2-dr";
162 reg = <0x23000 0x1000>; 197 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts
index 711f9a30f9ab..a8bdbaa975c9 100644
--- a/arch/powerpc/boot/dts/mpc8378_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts
@@ -143,6 +143,41 @@
143 mode = "cpu"; 143 mode = "cpu";
144 }; 144 };
145 145
146 dma@82a8 {
147 #address-cells = <1>;
148 #size-cells = <1>;
149 compatible = "fsl,mpc8378-dma", "fsl,elo-dma";
150 reg = <0x82a8 4>;
151 ranges = <0 0x8100 0x1a8>;
152 interrupt-parent = <&ipic>;
153 interrupts = <71 8>;
154 cell-index = <0>;
155 dma-channel@0 {
156 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
157 reg = <0 0x80>;
158 interrupt-parent = <&ipic>;
159 interrupts = <71 8>;
160 };
161 dma-channel@80 {
162 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
163 reg = <0x80 0x80>;
164 interrupt-parent = <&ipic>;
165 interrupts = <71 8>;
166 };
167 dma-channel@100 {
168 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
169 reg = <0x100 0x80>;
170 interrupt-parent = <&ipic>;
171 interrupts = <71 8>;
172 };
173 dma-channel@180 {
174 compatible = "fsl,mpc8378-dma-channel", "fsl,elo-dma-channel";
175 reg = <0x180 0x28>;
176 interrupt-parent = <&ipic>;
177 interrupts = <71 8>;
178 };
179 };
180
146 usb@23000 { 181 usb@23000 {
147 compatible = "fsl-usb2-dr"; 182 compatible = "fsl-usb2-dr";
148 reg = <0x23000 0x1000>; 183 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
index 6f78a9fd9826..980be8136276 100644
--- a/arch/powerpc/boot/dts/mpc8379_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
@@ -157,6 +157,41 @@
157 mode = "cpu"; 157 mode = "cpu";
158 }; 158 };
159 159
160 dma@82a8 {
161 #address-cells = <1>;
162 #size-cells = <1>;
163 compatible = "fsl,mpc8379-dma", "fsl,elo-dma";
164 reg = <0x82a8 4>;
165 ranges = <0 0x8100 0x1a8>;
166 interrupt-parent = <&ipic>;
167 interrupts = <71 8>;
168 cell-index = <0>;
169 dma-channel@0 {
170 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
171 reg = <0 0x80>;
172 interrupt-parent = <&ipic>;
173 interrupts = <71 8>;
174 };
175 dma-channel@80 {
176 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
177 reg = <0x80 0x80>;
178 interrupt-parent = <&ipic>;
179 interrupts = <71 8>;
180 };
181 dma-channel@100 {
182 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
183 reg = <0x100 0x80>;
184 interrupt-parent = <&ipic>;
185 interrupts = <71 8>;
186 };
187 dma-channel@180 {
188 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
189 reg = <0x180 0x28>;
190 interrupt-parent = <&ipic>;
191 interrupts = <71 8>;
192 };
193 };
194
160 usb@23000 { 195 usb@23000 {
161 compatible = "fsl-usb2-dr"; 196 compatible = "fsl-usb2-dr";
162 reg = <0x23000 0x1000>; 197 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts
index c11ceb7d3299..9d636e39f23f 100644
--- a/arch/powerpc/boot/dts/mpc8379_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts
@@ -143,6 +143,41 @@
143 mode = "cpu"; 143 mode = "cpu";
144 }; 144 };
145 145
146 dma@82a8 {
147 #address-cells = <1>;
148 #size-cells = <1>;
149 compatible = "fsl,mpc8379-dma", "fsl,elo-dma";
150 reg = <0x82a8 4>;
151 ranges = <0 0x8100 0x1a8>;
152 interrupt-parent = <&ipic>;
153 interrupts = <71 8>;
154 cell-index = <0>;
155 dma-channel@0 {
156 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
157 reg = <0 0x80>;
158 interrupt-parent = <&ipic>;
159 interrupts = <71 8>;
160 };
161 dma-channel@80 {
162 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
163 reg = <0x80 0x80>;
164 interrupt-parent = <&ipic>;
165 interrupts = <71 8>;
166 };
167 dma-channel@100 {
168 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
169 reg = <0x100 0x80>;
170 interrupt-parent = <&ipic>;
171 interrupts = <71 8>;
172 };
173 dma-channel@180 {
174 compatible = "fsl,mpc8379-dma-channel", "fsl,elo-dma-channel";
175 reg = <0x180 0x28>;
176 interrupt-parent = <&ipic>;
177 interrupts = <71 8>;
178 };
179 };
180
146 usb@23000 { 181 usb@23000 {
147 compatible = "fsl-usb2-dr"; 182 compatible = "fsl-usb2-dr";
148 reg = <0x23000 0x1000>; 183 reg = <0x23000 0x1000>;
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts
index 79881a1fb8aa..f2273a872b11 100644
--- a/arch/powerpc/boot/dts/mpc8540ads.dts
+++ b/arch/powerpc/boot/dts/mpc8540ads.dts
@@ -84,6 +84,47 @@
84 dfsrr; 84 dfsrr;
85 }; 85 };
86 86
87 dma@21300 {
88 #address-cells = <1>;
89 #size-cells = <1>;
90 compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma";
91 reg = <0x21300 0x4>;
92 ranges = <0x0 0x21100 0x200>;
93 cell-index = <0>;
94 dma-channel@0 {
95 compatible = "fsl,mpc8540-dma-channel",
96 "fsl,eloplus-dma-channel";
97 reg = <0x0 0x80>;
98 cell-index = <0>;
99 interrupt-parent = <&mpic>;
100 interrupts = <20 2>;
101 };
102 dma-channel@80 {
103 compatible = "fsl,mpc8540-dma-channel",
104 "fsl,eloplus-dma-channel";
105 reg = <0x80 0x80>;
106 cell-index = <1>;
107 interrupt-parent = <&mpic>;
108 interrupts = <21 2>;
109 };
110 dma-channel@100 {
111 compatible = "fsl,mpc8540-dma-channel",
112 "fsl,eloplus-dma-channel";
113 reg = <0x100 0x80>;
114 cell-index = <2>;
115 interrupt-parent = <&mpic>;
116 interrupts = <22 2>;
117 };
118 dma-channel@180 {
119 compatible = "fsl,mpc8540-dma-channel",
120 "fsl,eloplus-dma-channel";
121 reg = <0x180 0x80>;
122 cell-index = <3>;
123 interrupt-parent = <&mpic>;
124 interrupts = <23 2>;
125 };
126 };
127
87 mdio@24520 { 128 mdio@24520 {
88 #address-cells = <1>; 129 #address-cells = <1>;
89 #size-cells = <0>; 130 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts
index 66192aa0f311..21ad71b825c1 100644
--- a/arch/powerpc/boot/dts/mpc8541cds.dts
+++ b/arch/powerpc/boot/dts/mpc8541cds.dts
@@ -84,6 +84,47 @@
84 dfsrr; 84 dfsrr;
85 }; 85 };
86 86
87 dma@21300 {
88 #address-cells = <1>;
89 #size-cells = <1>;
90 compatible = "fsl,mpc8541-dma", "fsl,eloplus-dma";
91 reg = <0x21300 0x4>;
92 ranges = <0x0 0x21100 0x200>;
93 cell-index = <0>;
94 dma-channel@0 {
95 compatible = "fsl,mpc8541-dma-channel",
96 "fsl,eloplus-dma-channel";
97 reg = <0x0 0x80>;
98 cell-index = <0>;
99 interrupt-parent = <&mpic>;
100 interrupts = <20 2>;
101 };
102 dma-channel@80 {
103 compatible = "fsl,mpc8541-dma-channel",
104 "fsl,eloplus-dma-channel";
105 reg = <0x80 0x80>;
106 cell-index = <1>;
107 interrupt-parent = <&mpic>;
108 interrupts = <21 2>;
109 };
110 dma-channel@100 {
111 compatible = "fsl,mpc8541-dma-channel",
112 "fsl,eloplus-dma-channel";
113 reg = <0x100 0x80>;
114 cell-index = <2>;
115 interrupt-parent = <&mpic>;
116 interrupts = <22 2>;
117 };
118 dma-channel@180 {
119 compatible = "fsl,mpc8541-dma-channel",
120 "fsl,eloplus-dma-channel";
121 reg = <0x180 0x80>;
122 cell-index = <3>;
123 interrupt-parent = <&mpic>;
124 interrupts = <23 2>;
125 };
126 };
127
87 mdio@24520 { 128 mdio@24520 {
88 #address-cells = <1>; 129 #address-cells = <1>;
89 #size-cells = <0>; 130 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts
index 205598d51f25..621388db3c9e 100644
--- a/arch/powerpc/boot/dts/mpc8548cds.dts
+++ b/arch/powerpc/boot/dts/mpc8548cds.dts
@@ -100,6 +100,47 @@
100 dfsrr; 100 dfsrr;
101 }; 101 };
102 102
103 dma@21300 {
104 #address-cells = <1>;
105 #size-cells = <1>;
106 compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
107 reg = <0x21300 0x4>;
108 ranges = <0x0 0x21100 0x200>;
109 cell-index = <0>;
110 dma-channel@0 {
111 compatible = "fsl,mpc8548-dma-channel",
112 "fsl,eloplus-dma-channel";
113 reg = <0x0 0x80>;
114 cell-index = <0>;
115 interrupt-parent = <&mpic>;
116 interrupts = <20 2>;
117 };
118 dma-channel@80 {
119 compatible = "fsl,mpc8548-dma-channel",
120 "fsl,eloplus-dma-channel";
121 reg = <0x80 0x80>;
122 cell-index = <1>;
123 interrupt-parent = <&mpic>;
124 interrupts = <21 2>;
125 };
126 dma-channel@100 {
127 compatible = "fsl,mpc8548-dma-channel",
128 "fsl,eloplus-dma-channel";
129 reg = <0x100 0x80>;
130 cell-index = <2>;
131 interrupt-parent = <&mpic>;
132 interrupts = <22 2>;
133 };
134 dma-channel@180 {
135 compatible = "fsl,mpc8548-dma-channel",
136 "fsl,eloplus-dma-channel";
137 reg = <0x180 0x80>;
138 cell-index = <3>;
139 interrupt-parent = <&mpic>;
140 interrupts = <23 2>;
141 };
142 };
143
103 mdio@24520 { 144 mdio@24520 {
104 #address-cells = <1>; 145 #address-cells = <1>;
105 #size-cells = <0>; 146 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts
index 7c9d0b16d7e5..6fc8059b5a01 100644
--- a/arch/powerpc/boot/dts/mpc8555cds.dts
+++ b/arch/powerpc/boot/dts/mpc8555cds.dts
@@ -84,6 +84,47 @@
84 dfsrr; 84 dfsrr;
85 }; 85 };
86 86
87 dma@21300 {
88 #address-cells = <1>;
89 #size-cells = <1>;
90 compatible = "fsl,mpc8555-dma", "fsl,eloplus-dma";
91 reg = <0x21300 0x4>;
92 ranges = <0x0 0x21100 0x200>;
93 cell-index = <0>;
94 dma-channel@0 {
95 compatible = "fsl,mpc8555-dma-channel",
96 "fsl,eloplus-dma-channel";
97 reg = <0x0 0x80>;
98 cell-index = <0>;
99 interrupt-parent = <&mpic>;
100 interrupts = <20 2>;
101 };
102 dma-channel@80 {
103 compatible = "fsl,mpc8555-dma-channel",
104 "fsl,eloplus-dma-channel";
105 reg = <0x80 0x80>;
106 cell-index = <1>;
107 interrupt-parent = <&mpic>;
108 interrupts = <21 2>;
109 };
110 dma-channel@100 {
111 compatible = "fsl,mpc8555-dma-channel",
112 "fsl,eloplus-dma-channel";
113 reg = <0x100 0x80>;
114 cell-index = <2>;
115 interrupt-parent = <&mpic>;
116 interrupts = <22 2>;
117 };
118 dma-channel@180 {
119 compatible = "fsl,mpc8555-dma-channel",
120 "fsl,eloplus-dma-channel";
121 reg = <0x180 0x80>;
122 cell-index = <3>;
123 interrupt-parent = <&mpic>;
124 interrupts = <23 2>;
125 };
126 };
127
87 mdio@24520 { 128 mdio@24520 {
88 #address-cells = <1>; 129 #address-cells = <1>;
89 #size-cells = <0>; 130 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts
index 5d9f3c4b5b71..ba8159de040b 100644
--- a/arch/powerpc/boot/dts/mpc8560ads.dts
+++ b/arch/powerpc/boot/dts/mpc8560ads.dts
@@ -73,6 +73,47 @@
73 interrupts = <16 2>; 73 interrupts = <16 2>;
74 }; 74 };
75 75
76 dma@21300 {
77 #address-cells = <1>;
78 #size-cells = <1>;
79 compatible = "fsl,mpc8560-dma", "fsl,eloplus-dma";
80 reg = <0x21300 0x4>;
81 ranges = <0x0 0x21100 0x200>;
82 cell-index = <0>;
83 dma-channel@0 {
84 compatible = "fsl,mpc8560-dma-channel",
85 "fsl,eloplus-dma-channel";
86 reg = <0x0 0x80>;
87 cell-index = <0>;
88 interrupt-parent = <&mpic>;
89 interrupts = <20 2>;
90 };
91 dma-channel@80 {
92 compatible = "fsl,mpc8560-dma-channel",
93 "fsl,eloplus-dma-channel";
94 reg = <0x80 0x80>;
95 cell-index = <1>;
96 interrupt-parent = <&mpic>;
97 interrupts = <21 2>;
98 };
99 dma-channel@100 {
100 compatible = "fsl,mpc8560-dma-channel",
101 "fsl,eloplus-dma-channel";
102 reg = <0x100 0x80>;
103 cell-index = <2>;
104 interrupt-parent = <&mpic>;
105 interrupts = <22 2>;
106 };
107 dma-channel@180 {
108 compatible = "fsl,mpc8560-dma-channel",
109 "fsl,eloplus-dma-channel";
110 reg = <0x180 0x80>;
111 cell-index = <3>;
112 interrupt-parent = <&mpic>;
113 interrupts = <23 2>;
114 };
115 };
116
76 mdio@24520 { 117 mdio@24520 {
77 #address-cells = <1>; 118 #address-cells = <1>;
78 #size-cells = <0>; 119 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts
index d7af8db1a22f..be9a289c0d62 100644
--- a/arch/powerpc/boot/dts/mpc8568mds.dts
+++ b/arch/powerpc/boot/dts/mpc8568mds.dts
@@ -107,6 +107,47 @@
107 dfsrr; 107 dfsrr;
108 }; 108 };
109 109
110 dma@21300 {
111 #address-cells = <1>;
112 #size-cells = <1>;
113 compatible = "fsl,mpc8568-dma", "fsl,eloplus-dma";
114 reg = <0x21300 0x4>;
115 ranges = <0x0 0x21100 0x200>;
116 cell-index = <0>;
117 dma-channel@0 {
118 compatible = "fsl,mpc8568-dma-channel",
119 "fsl,eloplus-dma-channel";
120 reg = <0x0 0x80>;
121 cell-index = <0>;
122 interrupt-parent = <&mpic>;
123 interrupts = <20 2>;
124 };
125 dma-channel@80 {
126 compatible = "fsl,mpc8568-dma-channel",
127 "fsl,eloplus-dma-channel";
128 reg = <0x80 0x80>;
129 cell-index = <1>;
130 interrupt-parent = <&mpic>;
131 interrupts = <21 2>;
132 };
133 dma-channel@100 {
134 compatible = "fsl,mpc8568-dma-channel",
135 "fsl,eloplus-dma-channel";
136 reg = <0x100 0x80>;
137 cell-index = <2>;
138 interrupt-parent = <&mpic>;
139 interrupts = <22 2>;
140 };
141 dma-channel@180 {
142 compatible = "fsl,mpc8568-dma-channel",
143 "fsl,eloplus-dma-channel";
144 reg = <0x180 0x80>;
145 cell-index = <3>;
146 interrupt-parent = <&mpic>;
147 interrupts = <23 2>;
148 };
149 };
150
110 mdio@24520 { 151 mdio@24520 {
111 #address-cells = <1>; 152 #address-cells = <1>;
112 #size-cells = <0>; 153 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts
index a444e6a2387d..cb06325f0b79 100644
--- a/arch/powerpc/boot/dts/mpc8572ds.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds.dts
@@ -117,6 +117,88 @@
117 dfsrr; 117 dfsrr;
118 }; 118 };
119 119
120 dma@c300 {
121 #address-cells = <1>;
122 #size-cells = <1>;
123 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
124 reg = <0xc300 0x4>;
125 ranges = <0x0 0xc100 0x200>;
126 cell-index = <1>;
127 dma-channel@0 {
128 compatible = "fsl,mpc8572-dma-channel",
129 "fsl,eloplus-dma-channel";
130 reg = <0x0 0x80>;
131 cell-index = <0>;
132 interrupt-parent = <&mpic>;
133 interrupts = <76 2>;
134 };
135 dma-channel@80 {
136 compatible = "fsl,mpc8572-dma-channel",
137 "fsl,eloplus-dma-channel";
138 reg = <0x80 0x80>;
139 cell-index = <1>;
140 interrupt-parent = <&mpic>;
141 interrupts = <77 2>;
142 };
143 dma-channel@100 {
144 compatible = "fsl,mpc8572-dma-channel",
145 "fsl,eloplus-dma-channel";
146 reg = <0x100 0x80>;
147 cell-index = <2>;
148 interrupt-parent = <&mpic>;
149 interrupts = <78 2>;
150 };
151 dma-channel@180 {
152 compatible = "fsl,mpc8572-dma-channel",
153 "fsl,eloplus-dma-channel";
154 reg = <0x180 0x80>;
155 cell-index = <3>;
156 interrupt-parent = <&mpic>;
157 interrupts = <79 2>;
158 };
159 };
160
161 dma@21300 {
162 #address-cells = <1>;
163 #size-cells = <1>;
164 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
165 reg = <0x21300 0x4>;
166 ranges = <0x0 0x21100 0x200>;
167 cell-index = <0>;
168 dma-channel@0 {
169 compatible = "fsl,mpc8572-dma-channel",
170 "fsl,eloplus-dma-channel";
171 reg = <0x0 0x80>;
172 cell-index = <0>;
173 interrupt-parent = <&mpic>;
174 interrupts = <20 2>;
175 };
176 dma-channel@80 {
177 compatible = "fsl,mpc8572-dma-channel",
178 "fsl,eloplus-dma-channel";
179 reg = <0x80 0x80>;
180 cell-index = <1>;
181 interrupt-parent = <&mpic>;
182 interrupts = <21 2>;
183 };
184 dma-channel@100 {
185 compatible = "fsl,mpc8572-dma-channel",
186 "fsl,eloplus-dma-channel";
187 reg = <0x100 0x80>;
188 cell-index = <2>;
189 interrupt-parent = <&mpic>;
190 interrupts = <22 2>;
191 };
192 dma-channel@180 {
193 compatible = "fsl,mpc8572-dma-channel",
194 "fsl,eloplus-dma-channel";
195 reg = <0x180 0x80>;
196 cell-index = <3>;
197 interrupt-parent = <&mpic>;
198 interrupts = <23 2>;
199 };
200 };
201
120 mdio@24520 { 202 mdio@24520 {
121 #address-cells = <1>; 203 #address-cells = <1>;
122 #size-cells = <0>; 204 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
index 14f718d5e50b..ae08761ffff1 100644
--- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts
+++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
@@ -134,6 +134,47 @@
134 dfsrr; 134 dfsrr;
135 }; 135 };
136 136
137 dma@21300 {
138 #address-cells = <1>;
139 #size-cells = <1>;
140 compatible = "fsl,mpc8641-dma", "fsl,eloplus-dma";
141 reg = <0x21300 0x4>;
142 ranges = <0x0 0x21100 0x200>;
143 cell-index = <0>;
144 dma-channel@0 {
145 compatible = "fsl,mpc8641-dma-channel",
146 "fsl,eloplus-dma-channel";
147 reg = <0x0 0x80>;
148 cell-index = <0>;
149 interrupt-parent = <&mpic>;
150 interrupts = <20 2>;
151 };
152 dma-channel@80 {
153 compatible = "fsl,mpc8641-dma-channel",
154 "fsl,eloplus-dma-channel";
155 reg = <0x80 0x80>;
156 cell-index = <1>;
157 interrupt-parent = <&mpic>;
158 interrupts = <21 2>;
159 };
160 dma-channel@100 {
161 compatible = "fsl,mpc8641-dma-channel",
162 "fsl,eloplus-dma-channel";
163 reg = <0x100 0x80>;
164 cell-index = <2>;
165 interrupt-parent = <&mpic>;
166 interrupts = <22 2>;
167 };
168 dma-channel@180 {
169 compatible = "fsl,mpc8641-dma-channel",
170 "fsl,eloplus-dma-channel";
171 reg = <0x180 0x80>;
172 cell-index = <3>;
173 interrupt-parent = <&mpic>;
174 interrupts = <23 2>;
175 };
176 };
177
137 mdio@24520 { 178 mdio@24520 {
138 #address-cells = <1>; 179 #address-cells = <1>;
139 #size-cells = <0>; 180 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/sbc8349.dts b/arch/powerpc/boot/dts/sbc8349.dts
index 3839d4b7d6a7..5b76bb26085a 100644
--- a/arch/powerpc/boot/dts/sbc8349.dts
+++ b/arch/powerpc/boot/dts/sbc8349.dts
@@ -95,6 +95,41 @@
95 mode = "cpu"; 95 mode = "cpu";
96 }; 96 };
97 97
98 dma@82a8 {
99 #address-cells = <1>;
100 #size-cells = <1>;
101 compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
102 reg = <0x82a8 4>;
103 ranges = <0 0x8100 0x1a8>;
104 interrupt-parent = <&ipic>;
105 interrupts = <71 8>;
106 cell-index = <0>;
107 dma-channel@0 {
108 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
109 reg = <0 0x80>;
110 interrupt-parent = <&ipic>;
111 interrupts = <71 8>;
112 };
113 dma-channel@80 {
114 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
115 reg = <0x80 0x80>;
116 interrupt-parent = <&ipic>;
117 interrupts = <71 8>;
118 };
119 dma-channel@100 {
120 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
121 reg = <0x100 0x80>;
122 interrupt-parent = <&ipic>;
123 interrupts = <71 8>;
124 };
125 dma-channel@180 {
126 compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
127 reg = <0x180 0x28>;
128 interrupt-parent = <&ipic>;
129 interrupts = <71 8>;
130 };
131 };
132
98 /* phy type (ULPI or SERIAL) are only types supported for MPH */ 133 /* phy type (ULPI or SERIAL) are only types supported for MPH */
99 /* port = 0 or 1 */ 134 /* port = 0 or 1 */
100 usb@22000 { 135 usb@22000 {
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts
index d252e38283e7..21cbacb1000c 100644
--- a/arch/powerpc/boot/dts/sbc8548.dts
+++ b/arch/powerpc/boot/dts/sbc8548.dts
@@ -193,6 +193,47 @@
193 dfsrr; 193 dfsrr;
194 }; 194 };
195 195
196 dma@21300 {
197 #address-cells = <1>;
198 #size-cells = <1>;
199 compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
200 reg = <0x21300 0x4>;
201 ranges = <0x0 0x21100 0x200>;
202 cell-index = <0>;
203 dma-channel@0 {
204 compatible = "fsl,mpc8548-dma-channel",
205 "fsl,eloplus-dma-channel";
206 reg = <0x0 0x80>;
207 cell-index = <0>;
208 interrupt-parent = <&mpic>;
209 interrupts = <20 2>;
210 };
211 dma-channel@80 {
212 compatible = "fsl,mpc8548-dma-channel",
213 "fsl,eloplus-dma-channel";
214 reg = <0x80 0x80>;
215 cell-index = <1>;
216 interrupt-parent = <&mpic>;
217 interrupts = <21 2>;
218 };
219 dma-channel@100 {
220 compatible = "fsl,mpc8548-dma-channel",
221 "fsl,eloplus-dma-channel";
222 reg = <0x100 0x80>;
223 cell-index = <2>;
224 interrupt-parent = <&mpic>;
225 interrupts = <22 2>;
226 };
227 dma-channel@180 {
228 compatible = "fsl,mpc8548-dma-channel",
229 "fsl,eloplus-dma-channel";
230 reg = <0x180 0x80>;
231 cell-index = <3>;
232 interrupt-parent = <&mpic>;
233 interrupts = <23 2>;
234 };
235 };
236
196 mdio@24520 { 237 mdio@24520 {
197 #address-cells = <1>; 238 #address-cells = <1>;
198 #size-cells = <0>; 239 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/sbc8560.dts b/arch/powerpc/boot/dts/sbc8560.dts
index e556c5a4cf95..db3632ef9888 100644
--- a/arch/powerpc/boot/dts/sbc8560.dts
+++ b/arch/powerpc/boot/dts/sbc8560.dts
@@ -98,6 +98,47 @@
98 dfsrr; 98 dfsrr;
99 }; 99 };
100 100
101 dma@21300 {
102 #address-cells = <1>;
103 #size-cells = <1>;
104 compatible = "fsl,mpc8560-dma", "fsl,eloplus-dma";
105 reg = <0x21300 0x4>;
106 ranges = <0x0 0x21100 0x200>;
107 cell-index = <0>;
108 dma-channel@0 {
109 compatible = "fsl,mpc8560-dma-channel",
110 "fsl,eloplus-dma-channel";
111 reg = <0x0 0x80>;
112 cell-index = <0>;
113 interrupt-parent = <&mpic>;
114 interrupts = <20 2>;
115 };
116 dma-channel@80 {
117 compatible = "fsl,mpc8560-dma-channel",
118 "fsl,eloplus-dma-channel";
119 reg = <0x80 0x80>;
120 cell-index = <1>;
121 interrupt-parent = <&mpic>;
122 interrupts = <21 2>;
123 };
124 dma-channel@100 {
125 compatible = "fsl,mpc8560-dma-channel",
126 "fsl,eloplus-dma-channel";
127 reg = <0x100 0x80>;
128 cell-index = <2>;
129 interrupt-parent = <&mpic>;
130 interrupts = <22 2>;
131 };
132 dma-channel@180 {
133 compatible = "fsl,mpc8560-dma-channel",
134 "fsl,eloplus-dma-channel";
135 reg = <0x180 0x80>;
136 cell-index = <3>;
137 interrupt-parent = <&mpic>;
138 interrupts = <23 2>;
139 };
140 };
141
101 mdio@24520 { 142 mdio@24520 {
102 #address-cells = <1>; 143 #address-cells = <1>;
103 #size-cells = <0>; 144 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/sbc8641d.dts b/arch/powerpc/boot/dts/sbc8641d.dts
index 3eebeec157b3..9652456158fb 100644
--- a/arch/powerpc/boot/dts/sbc8641d.dts
+++ b/arch/powerpc/boot/dts/sbc8641d.dts
@@ -151,6 +151,47 @@
151 dfsrr; 151 dfsrr;
152 }; 152 };
153 153
154 dma@21300 {
155 #address-cells = <1>;
156 #size-cells = <1>;
157 compatible = "fsl,mpc8641-dma", "fsl,eloplus-dma";
158 reg = <0x21300 0x4>;
159 ranges = <0x0 0x21100 0x200>;
160 cell-index = <0>;
161 dma-channel@0 {
162 compatible = "fsl,mpc8641-dma-channel",
163 "fsl,eloplus-dma-channel";
164 reg = <0x0 0x80>;
165 cell-index = <0>;
166 interrupt-parent = <&mpic>;
167 interrupts = <20 2>;
168 };
169 dma-channel@80 {
170 compatible = "fsl,mpc8641-dma-channel",
171 "fsl,eloplus-dma-channel";
172 reg = <0x80 0x80>;
173 cell-index = <1>;
174 interrupt-parent = <&mpic>;
175 interrupts = <21 2>;
176 };
177 dma-channel@100 {
178 compatible = "fsl,mpc8641-dma-channel",
179 "fsl,eloplus-dma-channel";
180 reg = <0x100 0x80>;
181 cell-index = <2>;
182 interrupt-parent = <&mpic>;
183 interrupts = <22 2>;
184 };
185 dma-channel@180 {
186 compatible = "fsl,mpc8641-dma-channel",
187 "fsl,eloplus-dma-channel";
188 reg = <0x180 0x80>;
189 cell-index = <3>;
190 interrupt-parent = <&mpic>;
191 interrupts = <23 2>;
192 };
193 };
194
154 mdio@24520 { 195 mdio@24520 {
155 #address-cells = <1>; 196 #address-cells = <1>;
156 #size-cells = <0>; 197 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/stx_gp3_8560.dts b/arch/powerpc/boot/dts/stx_gp3_8560.dts
index 1e612836b248..fcd1db6ca0a8 100644
--- a/arch/powerpc/boot/dts/stx_gp3_8560.dts
+++ b/arch/powerpc/boot/dts/stx_gp3_8560.dts
@@ -83,6 +83,47 @@
83 dfsrr; 83 dfsrr;
84 }; 84 };
85 85
86 dma@21300 {
87 #address-cells = <1>;
88 #size-cells = <1>;
89 compatible = "fsl,mpc8560-dma", "fsl,eloplus-dma";
90 reg = <0x21300 0x4>;
91 ranges = <0x0 0x21100 0x200>;
92 cell-index = <0>;
93 dma-channel@0 {
94 compatible = "fsl,mpc8560-dma-channel",
95 "fsl,eloplus-dma-channel";
96 reg = <0x0 0x80>;
97 cell-index = <0>;
98 interrupt-parent = <&mpic>;
99 interrupts = <20 2>;
100 };
101 dma-channel@80 {
102 compatible = "fsl,mpc8560-dma-channel",
103 "fsl,eloplus-dma-channel";
104 reg = <0x80 0x80>;
105 cell-index = <1>;
106 interrupt-parent = <&mpic>;
107 interrupts = <21 2>;
108 };
109 dma-channel@100 {
110 compatible = "fsl,mpc8560-dma-channel",
111 "fsl,eloplus-dma-channel";
112 reg = <0x100 0x80>;
113 cell-index = <2>;
114 interrupt-parent = <&mpic>;
115 interrupts = <22 2>;
116 };
117 dma-channel@180 {
118 compatible = "fsl,mpc8560-dma-channel",
119 "fsl,eloplus-dma-channel";
120 reg = <0x180 0x80>;
121 cell-index = <3>;
122 interrupt-parent = <&mpic>;
123 interrupts = <23 2>;
124 };
125 };
126
86 mdio@24520 { 127 mdio@24520 {
87 #address-cells = <1>; 128 #address-cells = <1>;
88 #size-cells = <0>; 129 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/tqm8540.dts b/arch/powerpc/boot/dts/tqm8540.dts
index 7b653a583a2d..e1d260b9085e 100644
--- a/arch/powerpc/boot/dts/tqm8540.dts
+++ b/arch/powerpc/boot/dts/tqm8540.dts
@@ -12,8 +12,8 @@
12/dts-v1/; 12/dts-v1/;
13 13
14/ { 14/ {
15 model = "tqm,8540"; 15 model = "tqc,tqm8540";
16 compatible = "tqm,8540", "tqm,85xx"; 16 compatible = "tqc,tqm8540";
17 #address-cells = <1>; 17 #address-cells = <1>;
18 #size-cells = <1>; 18 #size-cells = <1>;
19 19
@@ -90,6 +90,47 @@
90 }; 90 };
91 }; 91 };
92 92
93 dma@21300 {
94 #address-cells = <1>;
95 #size-cells = <1>;
96 compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma";
97 reg = <0x21300 0x4>;
98 ranges = <0x0 0x21100 0x200>;
99 cell-index = <0>;
100 dma-channel@0 {
101 compatible = "fsl,mpc8540-dma-channel",
102 "fsl,eloplus-dma-channel";
103 reg = <0x0 0x80>;
104 cell-index = <0>;
105 interrupt-parent = <&mpic>;
106 interrupts = <20 2>;
107 };
108 dma-channel@80 {
109 compatible = "fsl,mpc8540-dma-channel",
110 "fsl,eloplus-dma-channel";
111 reg = <0x80 0x80>;
112 cell-index = <1>;
113 interrupt-parent = <&mpic>;
114 interrupts = <21 2>;
115 };
116 dma-channel@100 {
117 compatible = "fsl,mpc8540-dma-channel",
118 "fsl,eloplus-dma-channel";
119 reg = <0x100 0x80>;
120 cell-index = <2>;
121 interrupt-parent = <&mpic>;
122 interrupts = <22 2>;
123 };
124 dma-channel@180 {
125 compatible = "fsl,mpc8540-dma-channel",
126 "fsl,eloplus-dma-channel";
127 reg = <0x180 0x80>;
128 cell-index = <3>;
129 interrupt-parent = <&mpic>;
130 interrupts = <23 2>;
131 };
132 };
133
93 mdio@24520 { 134 mdio@24520 {
94 #address-cells = <1>; 135 #address-cells = <1>;
95 #size-cells = <0>; 136 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/tqm8541.dts b/arch/powerpc/boot/dts/tqm8541.dts
index 8fe73ef34195..d083a648a81d 100644
--- a/arch/powerpc/boot/dts/tqm8541.dts
+++ b/arch/powerpc/boot/dts/tqm8541.dts
@@ -12,8 +12,8 @@
12/dts-v1/; 12/dts-v1/;
13 13
14/ { 14/ {
15 model = "tqm,8541"; 15 model = "tqc,tqm8541";
16 compatible = "tqm,8541", "tqm,85xx"; 16 compatible = "tqc,tqm8541";
17 #address-cells = <1>; 17 #address-cells = <1>;
18 #size-cells = <1>; 18 #size-cells = <1>;
19 19
@@ -89,6 +89,47 @@
89 }; 89 };
90 }; 90 };
91 91
92 dma@21300 {
93 #address-cells = <1>;
94 #size-cells = <1>;
95 compatible = "fsl,mpc8541-dma", "fsl,eloplus-dma";
96 reg = <0x21300 0x4>;
97 ranges = <0x0 0x21100 0x200>;
98 cell-index = <0>;
99 dma-channel@0 {
100 compatible = "fsl,mpc8541-dma-channel",
101 "fsl,eloplus-dma-channel";
102 reg = <0x0 0x80>;
103 cell-index = <0>;
104 interrupt-parent = <&mpic>;
105 interrupts = <20 2>;
106 };
107 dma-channel@80 {
108 compatible = "fsl,mpc8541-dma-channel",
109 "fsl,eloplus-dma-channel";
110 reg = <0x80 0x80>;
111 cell-index = <1>;
112 interrupt-parent = <&mpic>;
113 interrupts = <21 2>;
114 };
115 dma-channel@100 {
116 compatible = "fsl,mpc8541-dma-channel",
117 "fsl,eloplus-dma-channel";
118 reg = <0x100 0x80>;
119 cell-index = <2>;
120 interrupt-parent = <&mpic>;
121 interrupts = <22 2>;
122 };
123 dma-channel@180 {
124 compatible = "fsl,mpc8541-dma-channel",
125 "fsl,eloplus-dma-channel";
126 reg = <0x180 0x80>;
127 cell-index = <3>;
128 interrupt-parent = <&mpic>;
129 interrupts = <23 2>;
130 };
131 };
132
92 mdio@24520 { 133 mdio@24520 {
93 #address-cells = <1>; 134 #address-cells = <1>;
94 #size-cells = <0>; 135 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/tqm8548-bigflash.dts b/arch/powerpc/boot/dts/tqm8548-bigflash.dts
new file mode 100644
index 000000000000..64d2d5bbcdf1
--- /dev/null
+++ b/arch/powerpc/boot/dts/tqm8548-bigflash.dts
@@ -0,0 +1,406 @@
1/*
2 * TQM8548 Device Tree Source
3 *
4 * Copyright 2006 Freescale Semiconductor Inc.
5 * Copyright 2008 Wolfgang Grandegger <wg@denx.de>
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/ {
16 model = "tqc,tqm8548";
17 compatible = "tqc,tqm8548";
18 #address-cells = <1>;
19 #size-cells = <1>;
20
21 aliases {
22 ethernet0 = &enet0;
23 ethernet1 = &enet1;
24 ethernet2 = &enet2;
25 ethernet3 = &enet3;
26
27 serial0 = &serial0;
28 serial1 = &serial1;
29 pci0 = &pci0;
30 pci1 = &pci1;
31 };
32
33 cpus {
34 #address-cells = <1>;
35 #size-cells = <0>;
36
37 PowerPC,8548@0 {
38 device_type = "cpu";
39 reg = <0>;
40 d-cache-line-size = <32>; // 32 bytes
41 i-cache-line-size = <32>; // 32 bytes
42 d-cache-size = <0x8000>; // L1, 32K
43 i-cache-size = <0x8000>; // L1, 32K
44 next-level-cache = <&L2>;
45 };
46 };
47
48 memory {
49 device_type = "memory";
50 reg = <0x00000000 0x00000000>; // Filled in by U-Boot
51 };
52
53 soc8548@a0000000 {
54 #address-cells = <1>;
55 #size-cells = <1>;
56 device_type = "soc";
57 ranges = <0x0 0xa0000000 0x100000>;
58 reg = <0xa0000000 0x1000>; // CCSRBAR
59 bus-frequency = <0>;
60
61 memory-controller@2000 {
62 compatible = "fsl,mpc8548-memory-controller";
63 reg = <0x2000 0x1000>;
64 interrupt-parent = <&mpic>;
65 interrupts = <18 2>;
66 };
67
68 L2: l2-cache-controller@20000 {
69 compatible = "fsl,mpc8548-l2-cache-controller";
70 reg = <0x20000 0x1000>;
71 cache-line-size = <32>; // 32 bytes
72 cache-size = <0x80000>; // L2, 512K
73 interrupt-parent = <&mpic>;
74 interrupts = <16 2>;
75 };
76
77 i2c@3000 {
78 #address-cells = <1>;
79 #size-cells = <0>;
80 cell-index = <0>;
81 compatible = "fsl-i2c";
82 reg = <0x3000 0x100>;
83 interrupts = <43 2>;
84 interrupt-parent = <&mpic>;
85 dfsrr;
86 };
87
88 i2c@3100 {
89 #address-cells = <1>;
90 #size-cells = <0>;
91 cell-index = <1>;
92 compatible = "fsl-i2c";
93 reg = <0x3100 0x100>;
94 interrupts = <43 2>;
95 interrupt-parent = <&mpic>;
96 dfsrr;
97 };
98
99 dma@21300 {
100 #address-cells = <1>;
101 #size-cells = <1>;
102 compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
103 reg = <0x21300 0x4>;
104 ranges = <0x0 0x21100 0x200>;
105 cell-index = <0>;
106 dma-channel@0 {
107 compatible = "fsl,mpc8548-dma-channel",
108 "fsl,eloplus-dma-channel";
109 reg = <0x0 0x80>;
110 cell-index = <0>;
111 interrupt-parent = <&mpic>;
112 interrupts = <20 2>;
113 };
114 dma-channel@80 {
115 compatible = "fsl,mpc8548-dma-channel",
116 "fsl,eloplus-dma-channel";
117 reg = <0x80 0x80>;
118 cell-index = <1>;
119 interrupt-parent = <&mpic>;
120 interrupts = <21 2>;
121 };
122 dma-channel@100 {
123 compatible = "fsl,mpc8548-dma-channel",
124 "fsl,eloplus-dma-channel";
125 reg = <0x100 0x80>;
126 cell-index = <2>;
127 interrupt-parent = <&mpic>;
128 interrupts = <22 2>;
129 };
130 dma-channel@180 {
131 compatible = "fsl,mpc8548-dma-channel",
132 "fsl,eloplus-dma-channel";
133 reg = <0x180 0x80>;
134 cell-index = <3>;
135 interrupt-parent = <&mpic>;
136 interrupts = <23 2>;
137 };
138 };
139
140 mdio@24520 {
141 #address-cells = <1>;
142 #size-cells = <0>;
143 compatible = "fsl,gianfar-mdio";
144 reg = <0x24520 0x20>;
145
146 phy1: ethernet-phy@0 {
147 interrupt-parent = <&mpic>;
148 interrupts = <8 1>;
149 reg = <1>;
150 device_type = "ethernet-phy";
151 };
152 phy2: ethernet-phy@1 {
153 interrupt-parent = <&mpic>;
154 interrupts = <8 1>;
155 reg = <2>;
156 device_type = "ethernet-phy";
157 };
158 phy3: ethernet-phy@3 {
159 interrupt-parent = <&mpic>;
160 interrupts = <8 1>;
161 reg = <3>;
162 device_type = "ethernet-phy";
163 };
164 phy4: ethernet-phy@4 {
165 interrupt-parent = <&mpic>;
166 interrupts = <8 1>;
167 reg = <4>;
168 device_type = "ethernet-phy";
169 };
170 phy5: ethernet-phy@5 {
171 interrupt-parent = <&mpic>;
172 interrupts = <8 1>;
173 reg = <5>;
174 device_type = "ethernet-phy";
175 };
176 };
177
178 enet0: ethernet@24000 {
179 cell-index = <0>;
180 device_type = "network";
181 model = "eTSEC";
182 compatible = "gianfar";
183 reg = <0x24000 0x1000>;
184 local-mac-address = [ 00 00 00 00 00 00 ];
185 interrupts = <29 2 30 2 34 2>;
186 interrupt-parent = <&mpic>;
187 phy-handle = <&phy2>;
188 };
189
190 enet1: ethernet@25000 {
191 cell-index = <1>;
192 device_type = "network";
193 model = "eTSEC";
194 compatible = "gianfar";
195 reg = <0x25000 0x1000>;
196 local-mac-address = [ 00 00 00 00 00 00 ];
197 interrupts = <35 2 36 2 40 2>;
198 interrupt-parent = <&mpic>;
199 phy-handle = <&phy1>;
200 };
201
202 enet2: ethernet@26000 {
203 cell-index = <2>;
204 device_type = "network";
205 model = "eTSEC";
206 compatible = "gianfar";
207 reg = <0x26000 0x1000>;
208 local-mac-address = [ 00 00 00 00 00 00 ];
209 interrupts = <31 2 32 2 33 2>;
210 interrupt-parent = <&mpic>;
211 phy-handle = <&phy3>;
212 };
213
214 enet3: ethernet@27000 {
215 cell-index = <3>;
216 device_type = "network";
217 model = "eTSEC";
218 compatible = "gianfar";
219 reg = <0x27000 0x1000>;
220 local-mac-address = [ 00 00 00 00 00 00 ];
221 interrupts = <37 2 38 2 39 2>;
222 interrupt-parent = <&mpic>;
223 phy-handle = <&phy4>;
224 };
225
226 serial0: serial@4500 {
227 cell-index = <0>;
228 device_type = "serial";
229 compatible = "ns16550";
230 reg = <0x4500 0x100>; // reg base, size
231 clock-frequency = <0>; // should we fill in in uboot?
232 current-speed = <115200>;
233 interrupts = <42 2>;
234 interrupt-parent = <&mpic>;
235 };
236
237 serial1: serial@4600 {
238 cell-index = <1>;
239 device_type = "serial";
240 compatible = "ns16550";
241 reg = <0x4600 0x100>; // reg base, size
242 clock-frequency = <0>; // should we fill in in uboot?
243 current-speed = <115200>;
244 interrupts = <42 2>;
245 interrupt-parent = <&mpic>;
246 };
247
248 global-utilities@e0000 { // global utilities reg
249 compatible = "fsl,mpc8548-guts";
250 reg = <0xe0000 0x1000>;
251 fsl,has-rstcr;
252 };
253
254 mpic: pic@40000 {
255 interrupt-controller;
256 #address-cells = <0>;
257 #interrupt-cells = <2>;
258 reg = <0x40000 0x40000>;
259 compatible = "chrp,open-pic";
260 device_type = "open-pic";
261 };
262 };
263
264 localbus@a0005000 {
265 compatible = "fsl,mpc8548-localbus", "fsl,pq3-localbus",
266 "simple-bus";
267 #address-cells = <2>;
268 #size-cells = <1>;
269 reg = <0xa0005000 0x100>; // BRx, ORx, etc.
270
271 ranges = <
272 0 0x0 0xfc000000 0x04000000 // NOR FLASH bank 1
273 1 0x0 0xf8000000 0x08000000 // NOR FLASH bank 0
274 2 0x0 0xa3000000 0x00008000 // CAN (2 x i82527)
275 3 0x0 0xa3010000 0x00008000 // NAND FLASH
276
277 >;
278
279 flash@1,0 {
280 #address-cells = <1>;
281 #size-cells = <1>;
282 compatible = "cfi-flash";
283 reg = <1 0x0 0x8000000>;
284 bank-width = <4>;
285 device-width = <1>;
286
287 partition@0 {
288 label = "kernel";
289 reg = <0x00000000 0x00200000>;
290 };
291 partition@200000 {
292 label = "root";
293 reg = <0x00200000 0x00300000>;
294 };
295 partition@500000 {
296 label = "user";
297 reg = <0x00500000 0x07a00000>;
298 };
299 partition@7f00000 {
300 label = "env1";
301 reg = <0x07f00000 0x00040000>;
302 };
303 partition@7f40000 {
304 label = "env2";
305 reg = <0x07f40000 0x00040000>;
306 };
307 partition@7f80000 {
308 label = "u-boot";
309 reg = <0x07f80000 0x00080000>;
310 read-only;
311 };
312 };
313
314 /* Note: CAN support needs be enabled in U-Boot */
315 can0@2,0 {
316 compatible = "intel,82527"; // Bosch CC770
317 reg = <2 0x0 0x100>;
318 interrupts = <4 0>;
319 interrupt-parent = <&mpic>;
320 };
321
322 can1@2,100 {
323 compatible = "intel,82527"; // Bosch CC770
324 reg = <2 0x100 0x100>;
325 interrupts = <4 0>;
326 interrupt-parent = <&mpic>;
327 };
328
329 /* Note: NAND support needs to be enabled in U-Boot */
330 upm@3,0 {
331 #address-cells = <0>;
332 #size-cells = <0>;
333 compatible = "fsl,upm-nand";
334 reg = <3 0x0 0x800>;
335 fsl,upm-addr-offset = <0x10>;
336 fsl,upm-cmd-offset = <0x08>;
337 chip-delay = <25>; // in micro-seconds
338
339 nand@0 {
340 #address-cells = <1>;
341 #size-cells = <1>;
342
343 partition@0 {
344 label = "fs";
345 reg = <0x00000000 0x01000000>;
346 };
347 };
348 };
349 };
350
351 pci0: pci@a0008000 {
352 cell-index = <0>;
353 #interrupt-cells = <1>;
354 #size-cells = <2>;
355 #address-cells = <3>;
356 compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
357 device_type = "pci";
358 reg = <0xa0008000 0x1000>;
359 clock-frequency = <33333333>;
360 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
361 interrupt-map = <
362 /* IDSEL 28 */
363 0xe000 0 0 1 &mpic 2 1
364 0xe000 0 0 2 &mpic 3 1>;
365
366 interrupt-parent = <&mpic>;
367 interrupts = <24 2>;
368 bus-range = <0 0>;
369 ranges = <0x02000000 0 0x80000000 0x80000000 0 0x20000000
370 0x01000000 0 0x00000000 0xa2000000 0 0x01000000>;
371 };
372
373 pci1: pcie@a000a000 {
374 cell-index = <2>;
375 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
376 interrupt-map = <
377 /* IDSEL 0x0 (PEX) */
378 0x00000 0 0 1 &mpic 0 1
379 0x00000 0 0 2 &mpic 1 1
380 0x00000 0 0 3 &mpic 2 1
381 0x00000 0 0 4 &mpic 3 1>;
382
383 interrupt-parent = <&mpic>;
384 interrupts = <26 2>;
385 bus-range = <0 0xff>;
386 ranges = <0x02000000 0 0xb0000000 0xb0000000 0 0x10000000
387 0x01000000 0 0x00000000 0xaf000000 0 0x08000000>;
388 clock-frequency = <33333333>;
389 #interrupt-cells = <1>;
390 #size-cells = <2>;
391 #address-cells = <3>;
392 reg = <0xa000a000 0x1000>;
393 compatible = "fsl,mpc8548-pcie";
394 device_type = "pci";
395 pcie@0 {
396 reg = <0 0 0 0 0>;
397 #size-cells = <2>;
398 #address-cells = <3>;
399 device_type = "pci";
400 ranges = <0x02000000 0 0xb0000000 0x02000000 0
401 0xb0000000 0 0x10000000
402 0x01000000 0 0x00000000 0x01000000 0
403 0x00000000 0 0x08000000>;
404 };
405 };
406};
diff --git a/arch/powerpc/boot/dts/tqm8548.dts b/arch/powerpc/boot/dts/tqm8548.dts
new file mode 100644
index 000000000000..13cd7280cb26
--- /dev/null
+++ b/arch/powerpc/boot/dts/tqm8548.dts
@@ -0,0 +1,406 @@
1/*
2 * TQM8548 Device Tree Source
3 *
4 * Copyright 2006 Freescale Semiconductor Inc.
5 * Copyright 2008 Wolfgang Grandegger <wg@denx.de>
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/ {
16 model = "tqc,tqm8548";
17 compatible = "tqc,tqm8548";
18 #address-cells = <1>;
19 #size-cells = <1>;
20
21 aliases {
22 ethernet0 = &enet0;
23 ethernet1 = &enet1;
24 ethernet2 = &enet2;
25 ethernet3 = &enet3;
26
27 serial0 = &serial0;
28 serial1 = &serial1;
29 pci0 = &pci0;
30 pci1 = &pci1;
31 };
32
33 cpus {
34 #address-cells = <1>;
35 #size-cells = <0>;
36
37 PowerPC,8548@0 {
38 device_type = "cpu";
39 reg = <0>;
40 d-cache-line-size = <32>; // 32 bytes
41 i-cache-line-size = <32>; // 32 bytes
42 d-cache-size = <0x8000>; // L1, 32K
43 i-cache-size = <0x8000>; // L1, 32K
44 next-level-cache = <&L2>;
45 };
46 };
47
48 memory {
49 device_type = "memory";
50 reg = <0x00000000 0x00000000>; // Filled in by U-Boot
51 };
52
53 soc8548@e0000000 {
54 #address-cells = <1>;
55 #size-cells = <1>;
56 device_type = "soc";
57 ranges = <0x0 0xe0000000 0x100000>;
58 reg = <0xe0000000 0x1000>; // CCSRBAR
59 bus-frequency = <0>;
60
61 memory-controller@2000 {
62 compatible = "fsl,mpc8548-memory-controller";
63 reg = <0x2000 0x1000>;
64 interrupt-parent = <&mpic>;
65 interrupts = <18 2>;
66 };
67
68 L2: l2-cache-controller@20000 {
69 compatible = "fsl,mpc8548-l2-cache-controller";
70 reg = <0x20000 0x1000>;
71 cache-line-size = <32>; // 32 bytes
72 cache-size = <0x80000>; // L2, 512K
73 interrupt-parent = <&mpic>;
74 interrupts = <16 2>;
75 };
76
77 i2c@3000 {
78 #address-cells = <1>;
79 #size-cells = <0>;
80 cell-index = <0>;
81 compatible = "fsl-i2c";
82 reg = <0x3000 0x100>;
83 interrupts = <43 2>;
84 interrupt-parent = <&mpic>;
85 dfsrr;
86 };
87
88 i2c@3100 {
89 #address-cells = <1>;
90 #size-cells = <0>;
91 cell-index = <1>;
92 compatible = "fsl-i2c";
93 reg = <0x3100 0x100>;
94 interrupts = <43 2>;
95 interrupt-parent = <&mpic>;
96 dfsrr;
97 };
98
99 dma@21300 {
100 #address-cells = <1>;
101 #size-cells = <1>;
102 compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
103 reg = <0x21300 0x4>;
104 ranges = <0x0 0x21100 0x200>;
105 cell-index = <0>;
106 dma-channel@0 {
107 compatible = "fsl,mpc8548-dma-channel",
108 "fsl,eloplus-dma-channel";
109 reg = <0x0 0x80>;
110 cell-index = <0>;
111 interrupt-parent = <&mpic>;
112 interrupts = <20 2>;
113 };
114 dma-channel@80 {
115 compatible = "fsl,mpc8548-dma-channel",
116 "fsl,eloplus-dma-channel";
117 reg = <0x80 0x80>;
118 cell-index = <1>;
119 interrupt-parent = <&mpic>;
120 interrupts = <21 2>;
121 };
122 dma-channel@100 {
123 compatible = "fsl,mpc8548-dma-channel",
124 "fsl,eloplus-dma-channel";
125 reg = <0x100 0x80>;
126 cell-index = <2>;
127 interrupt-parent = <&mpic>;
128 interrupts = <22 2>;
129 };
130 dma-channel@180 {
131 compatible = "fsl,mpc8548-dma-channel",
132 "fsl,eloplus-dma-channel";
133 reg = <0x180 0x80>;
134 cell-index = <3>;
135 interrupt-parent = <&mpic>;
136 interrupts = <23 2>;
137 };
138 };
139
140 mdio@24520 {
141 #address-cells = <1>;
142 #size-cells = <0>;
143 compatible = "fsl,gianfar-mdio";
144 reg = <0x24520 0x20>;
145
146 phy1: ethernet-phy@0 {
147 interrupt-parent = <&mpic>;
148 interrupts = <8 1>;
149 reg = <1>;
150 device_type = "ethernet-phy";
151 };
152 phy2: ethernet-phy@1 {
153 interrupt-parent = <&mpic>;
154 interrupts = <8 1>;
155 reg = <2>;
156 device_type = "ethernet-phy";
157 };
158 phy3: ethernet-phy@3 {
159 interrupt-parent = <&mpic>;
160 interrupts = <8 1>;
161 reg = <3>;
162 device_type = "ethernet-phy";
163 };
164 phy4: ethernet-phy@4 {
165 interrupt-parent = <&mpic>;
166 interrupts = <8 1>;
167 reg = <4>;
168 device_type = "ethernet-phy";
169 };
170 phy5: ethernet-phy@5 {
171 interrupt-parent = <&mpic>;
172 interrupts = <8 1>;
173 reg = <5>;
174 device_type = "ethernet-phy";
175 };
176 };
177
178 enet0: ethernet@24000 {
179 cell-index = <0>;
180 device_type = "network";
181 model = "eTSEC";
182 compatible = "gianfar";
183 reg = <0x24000 0x1000>;
184 local-mac-address = [ 00 00 00 00 00 00 ];
185 interrupts = <29 2 30 2 34 2>;
186 interrupt-parent = <&mpic>;
187 phy-handle = <&phy2>;
188 };
189
190 enet1: ethernet@25000 {
191 cell-index = <1>;
192 device_type = "network";
193 model = "eTSEC";
194 compatible = "gianfar";
195 reg = <0x25000 0x1000>;
196 local-mac-address = [ 00 00 00 00 00 00 ];
197 interrupts = <35 2 36 2 40 2>;
198 interrupt-parent = <&mpic>;
199 phy-handle = <&phy1>;
200 };
201
202 enet2: ethernet@26000 {
203 cell-index = <2>;
204 device_type = "network";
205 model = "eTSEC";
206 compatible = "gianfar";
207 reg = <0x26000 0x1000>;
208 local-mac-address = [ 00 00 00 00 00 00 ];
209 interrupts = <31 2 32 2 33 2>;
210 interrupt-parent = <&mpic>;
211 phy-handle = <&phy3>;
212 };
213
214 enet3: ethernet@27000 {
215 cell-index = <3>;
216 device_type = "network";
217 model = "eTSEC";
218 compatible = "gianfar";
219 reg = <0x27000 0x1000>;
220 local-mac-address = [ 00 00 00 00 00 00 ];
221 interrupts = <37 2 38 2 39 2>;
222 interrupt-parent = <&mpic>;
223 phy-handle = <&phy4>;
224 };
225
226 serial0: serial@4500 {
227 cell-index = <0>;
228 device_type = "serial";
229 compatible = "ns16550";
230 reg = <0x4500 0x100>; // reg base, size
231 clock-frequency = <0>; // should we fill in in uboot?
232 current-speed = <115200>;
233 interrupts = <42 2>;
234 interrupt-parent = <&mpic>;
235 };
236
237 serial1: serial@4600 {
238 cell-index = <1>;
239 device_type = "serial";
240 compatible = "ns16550";
241 reg = <0x4600 0x100>; // reg base, size
242 clock-frequency = <0>; // should we fill in in uboot?
243 current-speed = <115200>;
244 interrupts = <42 2>;
245 interrupt-parent = <&mpic>;
246 };
247
248 global-utilities@e0000 { // global utilities reg
249 compatible = "fsl,mpc8548-guts";
250 reg = <0xe0000 0x1000>;
251 fsl,has-rstcr;
252 };
253
254 mpic: pic@40000 {
255 interrupt-controller;
256 #address-cells = <0>;
257 #interrupt-cells = <2>;
258 reg = <0x40000 0x40000>;
259 compatible = "chrp,open-pic";
260 device_type = "open-pic";
261 };
262 };
263
264 localbus@e0005000 {
265 compatible = "fsl,mpc8548-localbus", "fsl,pq3-localbus",
266 "simple-bus";
267 #address-cells = <2>;
268 #size-cells = <1>;
269 reg = <0xe0005000 0x100>; // BRx, ORx, etc.
270
271 ranges = <
272 0 0x0 0xfc000000 0x04000000 // NOR FLASH bank 1
273 1 0x0 0xf8000000 0x08000000 // NOR FLASH bank 0
274 2 0x0 0xe3000000 0x00008000 // CAN (2 x i82527)
275 3 0x0 0xe3010000 0x00008000 // NAND FLASH
276
277 >;
278
279 flash@1,0 {
280 #address-cells = <1>;
281 #size-cells = <1>;
282 compatible = "cfi-flash";
283 reg = <1 0x0 0x8000000>;
284 bank-width = <4>;
285 device-width = <1>;
286
287 partition@0 {
288 label = "kernel";
289 reg = <0x00000000 0x00200000>;
290 };
291 partition@200000 {
292 label = "root";
293 reg = <0x00200000 0x00300000>;
294 };
295 partition@500000 {
296 label = "user";
297 reg = <0x00500000 0x07a00000>;
298 };
299 partition@7f00000 {
300 label = "env1";
301 reg = <0x07f00000 0x00040000>;
302 };
303 partition@7f40000 {
304 label = "env2";
305 reg = <0x07f40000 0x00040000>;
306 };
307 partition@7f80000 {
308 label = "u-boot";
309 reg = <0x07f80000 0x00080000>;
310 read-only;
311 };
312 };
313
314 /* Note: CAN support needs be enabled in U-Boot */
315 can0@2,0 {
316 compatible = "intel,82527"; // Bosch CC770
317 reg = <2 0x0 0x100>;
318 interrupts = <4 0>;
319 interrupt-parent = <&mpic>;
320 };
321
322 can1@2,100 {
323 compatible = "intel,82527"; // Bosch CC770
324 reg = <2 0x100 0x100>;
325 interrupts = <4 0>;
326 interrupt-parent = <&mpic>;
327 };
328
329 /* Note: NAND support needs to be enabled in U-Boot */
330 upm@3,0 {
331 #address-cells = <0>;
332 #size-cells = <0>;
333 compatible = "fsl,upm-nand";
334 reg = <3 0x0 0x800>;
335 fsl,upm-addr-offset = <0x10>;
336 fsl,upm-cmd-offset = <0x08>;
337 chip-delay = <25>; // in micro-seconds
338
339 nand@0 {
340 #address-cells = <1>;
341 #size-cells = <1>;
342
343 partition@0 {
344 label = "fs";
345 reg = <0x00000000 0x01000000>;
346 };
347 };
348 };
349 };
350
351 pci0: pci@e0008000 {
352 cell-index = <0>;
353 #interrupt-cells = <1>;
354 #size-cells = <2>;
355 #address-cells = <3>;
356 compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
357 device_type = "pci";
358 reg = <0xe0008000 0x1000>;
359 clock-frequency = <33333333>;
360 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
361 interrupt-map = <
362 /* IDSEL 28 */
363 0xe000 0 0 1 &mpic 2 1
364 0xe000 0 0 2 &mpic 3 1>;
365
366 interrupt-parent = <&mpic>;
367 interrupts = <24 2>;
368 bus-range = <0 0>;
369 ranges = <0x02000000 0 0x80000000 0x80000000 0 0x20000000
370 0x01000000 0 0x00000000 0xe2000000 0 0x01000000>;
371 };
372
373 pci1: pcie@e000a000 {
374 cell-index = <2>;
375 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
376 interrupt-map = <
377 /* IDSEL 0x0 (PEX) */
378 0x00000 0 0 1 &mpic 0 1
379 0x00000 0 0 2 &mpic 1 1
380 0x00000 0 0 3 &mpic 2 1
381 0x00000 0 0 4 &mpic 3 1>;
382
383 interrupt-parent = <&mpic>;
384 interrupts = <26 2>;
385 bus-range = <0 0xff>;
386 ranges = <0x02000000 0 0xc0000000 0xc0000000 0 0x20000000
387 0x01000000 0 0x00000000 0xef000000 0 0x08000000>;
388 clock-frequency = <33333333>;
389 #interrupt-cells = <1>;
390 #size-cells = <2>;
391 #address-cells = <3>;
392 reg = <0xe000a000 0x1000>;
393 compatible = "fsl,mpc8548-pcie";
394 device_type = "pci";
395 pcie@0 {
396 reg = <0 0 0 0 0>;
397 #size-cells = <2>;
398 #address-cells = <3>;
399 device_type = "pci";
400 ranges = <0x02000000 0 0xc0000000 0x02000000 0
401 0xc0000000 0 0x20000000
402 0x01000000 0 0x00000000 0x01000000 0
403 0x00000000 0 0x08000000>;
404 };
405 };
406};
diff --git a/arch/powerpc/boot/dts/tqm8555.dts b/arch/powerpc/boot/dts/tqm8555.dts
index 0a53bb9ce76f..96b0b94ad925 100644
--- a/arch/powerpc/boot/dts/tqm8555.dts
+++ b/arch/powerpc/boot/dts/tqm8555.dts
@@ -12,8 +12,8 @@
12/dts-v1/; 12/dts-v1/;
13 13
14/ { 14/ {
15 model = "tqm,8555"; 15 model = "tqc,tqm8555";
16 compatible = "tqm,8555", "tqm,85xx"; 16 compatible = "tqc,tqm8555";
17 #address-cells = <1>; 17 #address-cells = <1>;
18 #size-cells = <1>; 18 #size-cells = <1>;
19 19
@@ -89,6 +89,47 @@
89 }; 89 };
90 }; 90 };
91 91
92 dma@21300 {
93 #address-cells = <1>;
94 #size-cells = <1>;
95 compatible = "fsl,mpc8555-dma", "fsl,eloplus-dma";
96 reg = <0x21300 0x4>;
97 ranges = <0x0 0x21100 0x200>;
98 cell-index = <0>;
99 dma-channel@0 {
100 compatible = "fsl,mpc8555-dma-channel",
101 "fsl,eloplus-dma-channel";
102 reg = <0x0 0x80>;
103 cell-index = <0>;
104 interrupt-parent = <&mpic>;
105 interrupts = <20 2>;
106 };
107 dma-channel@80 {
108 compatible = "fsl,mpc8555-dma-channel",
109 "fsl,eloplus-dma-channel";
110 reg = <0x80 0x80>;
111 cell-index = <1>;
112 interrupt-parent = <&mpic>;
113 interrupts = <21 2>;
114 };
115 dma-channel@100 {
116 compatible = "fsl,mpc8555-dma-channel",
117 "fsl,eloplus-dma-channel";
118 reg = <0x100 0x80>;
119 cell-index = <2>;
120 interrupt-parent = <&mpic>;
121 interrupts = <22 2>;
122 };
123 dma-channel@180 {
124 compatible = "fsl,mpc8555-dma-channel",
125 "fsl,eloplus-dma-channel";
126 reg = <0x180 0x80>;
127 cell-index = <3>;
128 interrupt-parent = <&mpic>;
129 interrupts = <23 2>;
130 };
131 };
132
92 mdio@24520 { 133 mdio@24520 {
93 #address-cells = <1>; 134 #address-cells = <1>;
94 #size-cells = <0>; 135 #size-cells = <0>;
diff --git a/arch/powerpc/boot/dts/tqm8560.dts b/arch/powerpc/boot/dts/tqm8560.dts
index a4ee596e97bc..3fe35208907b 100644
--- a/arch/powerpc/boot/dts/tqm8560.dts
+++ b/arch/powerpc/boot/dts/tqm8560.dts
@@ -2,6 +2,7 @@
2 * TQM 8560 Device Tree Source 2 * TQM 8560 Device Tree Source
3 * 3 *
4 * Copyright 2008 Freescale Semiconductor Inc. 4 * Copyright 2008 Freescale Semiconductor Inc.
5 * Copyright 2008 Wolfgang Grandegger <wg@grandegger.com>
5 * 6 *
6 * This program is free software; you can redistribute it and/or modify it 7 * 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 * under the terms of the GNU General Public License as published by the
@@ -12,8 +13,8 @@
12/dts-v1/; 13/dts-v1/;
13 14
14/ { 15/ {
15 model = "tqm,8560"; 16 model = "tqc,tqm8560";
16 compatible = "tqm,8560", "tqm,85xx"; 17 compatible = "tqc,tqm8560";
17 #address-cells = <1>; 18 #address-cells = <1>;
18 #size-cells = <1>; 19 #size-cells = <1>;
19 20
@@ -90,6 +91,47 @@
90 }; 91 };
91 }; 92 };
92 93
94 dma@21300 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8560-dma", "fsl,eloplus-dma";
98 reg = <0x21300 0x4>;
99 ranges = <0x0 0x21100 0x200>;
100 cell-index = <0>;
101 dma-channel@0 {
102 compatible = "fsl,mpc8560-dma-channel",
103 "fsl,eloplus-dma-channel";
104 reg = <0x0 0x80>;
105 cell-index = <0>;
106 interrupt-parent = <&mpic>;
107 interrupts = <20 2>;
108 };
109 dma-channel@80 {
110 compatible = "fsl,mpc8560-dma-channel",
111 "fsl,eloplus-dma-channel";
112 reg = <0x80 0x80>;
113 cell-index = <1>;
114 interrupt-parent = <&mpic>;
115 interrupts = <21 2>;
116 };
117 dma-channel@100 {
118 compatible = "fsl,mpc8560-dma-channel",
119 "fsl,eloplus-dma-channel";
120 reg = <0x100 0x80>;
121 cell-index = <2>;
122 interrupt-parent = <&mpic>;
123 interrupts = <22 2>;
124 };
125 dma-channel@180 {
126 compatible = "fsl,mpc8560-dma-channel",
127 "fsl,eloplus-dma-channel";
128 reg = <0x180 0x80>;
129 cell-index = <3>;
130 interrupt-parent = <&mpic>;
131 interrupts = <23 2>;
132 };
133 };
134
93 mdio@24520 { 135 mdio@24520 {
94 #address-cells = <1>; 136 #address-cells = <1>;
95 #size-cells = <0>; 137 #size-cells = <0>;
@@ -223,6 +265,70 @@
223 }; 265 };
224 }; 266 };
225 267
268 localbus@e0005000 {
269 compatible = "fsl,mpc8560-localbus", "fsl,pq3-localbus",
270 "simple-bus";
271 #address-cells = <2>;
272 #size-cells = <1>;
273 reg = <0xe0005000 0x100>; // BRx, ORx, etc.
274
275 ranges = <
276 0 0x0 0xfc000000 0x04000000 // NOR FLASH bank 1
277 1 0x0 0xf8000000 0x08000000 // NOR FLASH bank 0
278 2 0x0 0xe3000000 0x00008000 // CAN (2 x i82527)
279 >;
280
281 flash@1,0 {
282 #address-cells = <1>;
283 #size-cells = <1>;
284 compatible = "cfi-flash";
285 reg = <1 0x0 0x8000000>;
286 bank-width = <4>;
287 device-width = <1>;
288
289 partition@0 {
290 label = "kernel";
291 reg = <0x00000000 0x00200000>;
292 };
293 partition@200000 {
294 label = "root";
295 reg = <0x00200000 0x00300000>;
296 };
297 partition@500000 {
298 label = "user";
299 reg = <0x00500000 0x07a00000>;
300 };
301 partition@7f00000 {
302 label = "env1";
303 reg = <0x07f00000 0x00040000>;
304 };
305 partition@7f40000 {
306 label = "env2";
307 reg = <0x07f40000 0x00040000>;
308 };
309 partition@7f80000 {
310 label = "u-boot";
311 reg = <0x07f80000 0x00080000>;
312 read-only;
313 };
314 };
315
316 /* Note: CAN support needs be enabled in U-Boot */
317 can0@2,0 {
318 compatible = "intel,82527"; // Bosch CC770
319 reg = <2 0x0 0x100>;
320 interrupts = <4 0>;
321 interrupt-parent = <&mpic>;
322 };
323
324 can1@2,100 {
325 compatible = "intel,82527"; // Bosch CC770
326 reg = <2 0x100 0x100>;
327 interrupts = <4 0>;
328 interrupt-parent = <&mpic>;
329 };
330 };
331
226 pci0: pci@e0008000 { 332 pci0: pci@e0008000 {
227 cell-index = <0>; 333 cell-index = <0>;
228 #interrupt-cells = <1>; 334 #interrupt-cells = <1>;
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index 4832be880998..cb87a015be7c 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -177,7 +177,7 @@ cuboot*)
177 *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555|*-ksi8560*) 177 *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555|*-ksi8560*)
178 platformo=$object/cuboot-85xx-cpm2.o 178 platformo=$object/cuboot-85xx-cpm2.o
179 ;; 179 ;;
180 *-mpc85*|*-tqm8540|*-sbc85*) 180 *-mpc85*|*-tqm85*|*-sbc85*)
181 platformo=$object/cuboot-85xx.o 181 platformo=$object/cuboot-85xx.o
182 ;; 182 ;;
183 esac 183 esac
diff --git a/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
new file mode 100644
index 000000000000..d2c435f0da42
--- /dev/null
+++ b/arch/powerpc/configs/83xx/mpc836x_rdk_defconfig
@@ -0,0 +1,1128 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc2
4# Mon May 19 21:12:32 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_FSL_EMB_PERFMON 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
32# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
33CONFIG_IRQ_PER_CPU=y
34CONFIG_STACKTRACE_SUPPORT=y
35CONFIG_LOCKDEP_SUPPORT=y
36CONFIG_RWSEM_XCHGADD_ALGORITHM=y
37CONFIG_ARCH_HAS_ILOG2_U32=y
38CONFIG_GENERIC_HWEIGHT=y
39CONFIG_GENERIC_CALIBRATE_DELAY=y
40CONFIG_GENERIC_FIND_NEXT_BIT=y
41CONFIG_GENERIC_GPIO=y
42# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
43CONFIG_PPC=y
44CONFIG_EARLY_PRINTK=y
45CONFIG_GENERIC_NVRAM=y
46CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
47CONFIG_ARCH_MAY_HAVE_PC_FDC=y
48CONFIG_PPC_OF=y
49CONFIG_OF=y
50CONFIG_PPC_UDBG_16550=y
51# CONFIG_GENERIC_TBSYNC is not set
52CONFIG_AUDIT_ARCH=y
53CONFIG_GENERIC_BUG=y
54CONFIG_DEFAULT_UIMAGE=y
55# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58
59#
60# General setup
61#
62CONFIG_EXPERIMENTAL=y
63CONFIG_BROKEN_ON_SMP=y
64CONFIG_INIT_ENV_ARG_LIMIT=32
65CONFIG_LOCALVERSION=""
66CONFIG_LOCALVERSION_AUTO=y
67CONFIG_SWAP=y
68CONFIG_SYSVIPC=y
69CONFIG_SYSVIPC_SYSCTL=y
70# CONFIG_POSIX_MQUEUE is not set
71# CONFIG_BSD_PROCESS_ACCT is not set
72# CONFIG_TASKSTATS is not set
73# CONFIG_AUDIT is not set
74# CONFIG_IKCONFIG is not set
75CONFIG_LOG_BUF_SHIFT=14
76# CONFIG_CGROUPS is not set
77CONFIG_GROUP_SCHED=y
78CONFIG_FAIR_GROUP_SCHED=y
79# CONFIG_RT_GROUP_SCHED is not set
80CONFIG_USER_SCHED=y
81# CONFIG_CGROUP_SCHED is not set
82CONFIG_SYSFS_DEPRECATED=y
83CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_RELAY is not set
85# CONFIG_NAMESPACES is not set
86CONFIG_BLK_DEV_INITRD=y
87CONFIG_INITRAMFS_SOURCE=""
88# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
89CONFIG_SYSCTL=y
90CONFIG_EMBEDDED=y
91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
93# CONFIG_KALLSYMS is not set
94CONFIG_HOTPLUG=y
95CONFIG_PRINTK=y
96CONFIG_BUG=y
97CONFIG_ELF_CORE=y
98CONFIG_COMPAT_BRK=y
99CONFIG_BASE_FULL=y
100CONFIG_FUTEX=y
101CONFIG_ANON_INODES=y
102# CONFIG_EPOLL is not set
103CONFIG_SIGNALFD=y
104CONFIG_TIMERFD=y
105CONFIG_EVENTFD=y
106CONFIG_SHMEM=y
107CONFIG_VM_EVENT_COUNTERS=y
108CONFIG_SLUB_DEBUG=y
109# CONFIG_SLAB is not set
110CONFIG_SLUB=y
111# CONFIG_SLOB is not set
112# CONFIG_PROFILING is not set
113# CONFIG_MARKERS is not set
114CONFIG_HAVE_OPROFILE=y
115CONFIG_HAVE_KPROBES=y
116CONFIG_HAVE_KRETPROBES=y
117# CONFIG_HAVE_DMA_ATTRS is not set
118CONFIG_PROC_PAGE_MONITOR=y
119CONFIG_SLABINFO=y
120CONFIG_RT_MUTEXES=y
121# CONFIG_TINY_SHMEM is not set
122CONFIG_BASE_SMALL=0
123CONFIG_MODULES=y
124# CONFIG_MODULE_FORCE_LOAD is not set
125CONFIG_MODULE_UNLOAD=y
126# CONFIG_MODULE_FORCE_UNLOAD is not set
127# CONFIG_MODVERSIONS is not set
128# CONFIG_MODULE_SRCVERSION_ALL is not set
129# CONFIG_KMOD is not set
130CONFIG_BLOCK=y
131# CONFIG_LBD is not set
132# CONFIG_BLK_DEV_IO_TRACE is not set
133# CONFIG_LSF is not set
134# CONFIG_BLK_DEV_BSG is not set
135
136#
137# IO Schedulers
138#
139CONFIG_IOSCHED_NOOP=y
140CONFIG_IOSCHED_AS=y
141CONFIG_IOSCHED_DEADLINE=y
142CONFIG_IOSCHED_CFQ=y
143CONFIG_DEFAULT_AS=y
144# CONFIG_DEFAULT_DEADLINE is not set
145# CONFIG_DEFAULT_CFQ is not set
146# CONFIG_DEFAULT_NOOP is not set
147CONFIG_DEFAULT_IOSCHED="anticipatory"
148CONFIG_CLASSIC_RCU=y
149
150#
151# Platform support
152#
153# CONFIG_PPC_MULTIPLATFORM is not set
154# CONFIG_PPC_82xx is not set
155CONFIG_PPC_83xx=y
156# CONFIG_PPC_86xx is not set
157# CONFIG_PPC_MPC512x is not set
158# CONFIG_PPC_MPC5121 is not set
159# CONFIG_PPC_CELL is not set
160# CONFIG_PPC_CELL_NATIVE is not set
161# CONFIG_PQ2ADS is not set
162CONFIG_MPC83xx=y
163# CONFIG_MPC831x_RDB is not set
164# CONFIG_MPC832x_MDS is not set
165# CONFIG_MPC832x_RDB is not set
166# CONFIG_MPC834x_MDS is not set
167# CONFIG_MPC834x_ITX is not set
168# CONFIG_MPC836x_MDS is not set
169CONFIG_MPC836x_RDK=y
170# CONFIG_MPC837x_MDS is not set
171# CONFIG_MPC837x_RDB is not set
172# CONFIG_SBC834x is not set
173CONFIG_IPIC=y
174# CONFIG_MPIC is not set
175# CONFIG_MPIC_WEIRD is not set
176# CONFIG_PPC_I8259 is not set
177# CONFIG_PPC_RTAS is not set
178# CONFIG_MMIO_NVRAM is not set
179# CONFIG_PPC_MPC106 is not set
180# CONFIG_PPC_970_NAP is not set
181# CONFIG_PPC_INDIRECT_IO is not set
182# CONFIG_GENERIC_IOMAP is not set
183# CONFIG_CPU_FREQ is not set
184CONFIG_QUICC_ENGINE=y
185# CONFIG_FSL_ULI1575 is not set
186
187#
188# Kernel options
189#
190# CONFIG_HIGHMEM is not set
191# CONFIG_TICK_ONESHOT is not set
192# CONFIG_NO_HZ is not set
193# CONFIG_HIGH_RES_TIMERS is not set
194CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
195# CONFIG_HZ_100 is not set
196CONFIG_HZ_250=y
197# CONFIG_HZ_300 is not set
198# CONFIG_HZ_1000 is not set
199CONFIG_HZ=250
200# CONFIG_SCHED_HRTICK is not set
201CONFIG_PREEMPT_NONE=y
202# CONFIG_PREEMPT_VOLUNTARY is not set
203# CONFIG_PREEMPT is not set
204CONFIG_BINFMT_ELF=y
205# CONFIG_BINFMT_MISC is not set
206# CONFIG_IOMMU_HELPER is not set
207CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
208CONFIG_ARCH_HAS_WALK_MEMORY=y
209CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
210CONFIG_ARCH_FLATMEM_ENABLE=y
211CONFIG_ARCH_POPULATES_NODE_MAP=y
212CONFIG_SELECT_MEMORY_MODEL=y
213CONFIG_FLATMEM_MANUAL=y
214# CONFIG_DISCONTIGMEM_MANUAL is not set
215# CONFIG_SPARSEMEM_MANUAL is not set
216CONFIG_FLATMEM=y
217CONFIG_FLAT_NODE_MEM_MAP=y
218# CONFIG_SPARSEMEM_STATIC is not set
219# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
220CONFIG_PAGEFLAGS_EXTENDED=y
221CONFIG_SPLIT_PTLOCK_CPUS=4
222# CONFIG_RESOURCES_64BIT is not set
223CONFIG_ZONE_DMA_FLAG=1
224CONFIG_BOUNCE=y
225CONFIG_VIRT_TO_BUS=y
226CONFIG_FORCE_MAX_ZONEORDER=11
227CONFIG_PROC_DEVICETREE=y
228# CONFIG_CMDLINE_BOOL is not set
229# CONFIG_PM is not set
230CONFIG_SECCOMP=y
231CONFIG_ISA_DMA_API=y
232
233#
234# Bus options
235#
236CONFIG_ZONE_DMA=y
237CONFIG_GENERIC_ISA_DMA=y
238CONFIG_PPC_INDIRECT_PCI=y
239CONFIG_FSL_SOC=y
240CONFIG_FSL_LBC=y
241CONFIG_FSL_GTM=y
242CONFIG_PCI=y
243CONFIG_PCI_DOMAINS=y
244CONFIG_PCI_SYSCALL=y
245# CONFIG_PCIEPORTBUS is not set
246CONFIG_ARCH_SUPPORTS_MSI=y
247# CONFIG_PCI_MSI is not set
248CONFIG_PCI_LEGACY=y
249# CONFIG_PCCARD is not set
250# CONFIG_HOTPLUG_PCI is not set
251# CONFIG_HAS_RAPIDIO is not set
252
253#
254# Advanced setup
255#
256# CONFIG_ADVANCED_OPTIONS is not set
257
258#
259# Default settings for advanced configuration options are used
260#
261CONFIG_LOWMEM_SIZE=0x30000000
262CONFIG_PAGE_OFFSET=0xc0000000
263CONFIG_KERNEL_START=0xc0000000
264CONFIG_PHYSICAL_START=0x00000000
265CONFIG_TASK_SIZE=0xc0000000
266
267#
268# Networking
269#
270CONFIG_NET=y
271
272#
273# Networking options
274#
275CONFIG_PACKET=y
276# CONFIG_PACKET_MMAP is not set
277CONFIG_UNIX=y
278CONFIG_XFRM=y
279# CONFIG_XFRM_USER is not set
280# CONFIG_XFRM_SUB_POLICY is not set
281# CONFIG_XFRM_MIGRATE is not set
282# CONFIG_XFRM_STATISTICS is not set
283# CONFIG_NET_KEY is not set
284CONFIG_INET=y
285CONFIG_IP_MULTICAST=y
286# CONFIG_IP_ADVANCED_ROUTER is not set
287CONFIG_IP_FIB_HASH=y
288CONFIG_IP_PNP=y
289CONFIG_IP_PNP_DHCP=y
290CONFIG_IP_PNP_BOOTP=y
291# CONFIG_IP_PNP_RARP is not set
292# CONFIG_NET_IPIP is not set
293# CONFIG_NET_IPGRE is not set
294# CONFIG_IP_MROUTE is not set
295# CONFIG_ARPD is not set
296CONFIG_SYN_COOKIES=y
297# CONFIG_INET_AH is not set
298# CONFIG_INET_ESP is not set
299# CONFIG_INET_IPCOMP is not set
300# CONFIG_INET_XFRM_TUNNEL is not set
301# CONFIG_INET_TUNNEL is not set
302CONFIG_INET_XFRM_MODE_TRANSPORT=y
303CONFIG_INET_XFRM_MODE_TUNNEL=y
304CONFIG_INET_XFRM_MODE_BEET=y
305# CONFIG_INET_LRO is not set
306CONFIG_INET_DIAG=y
307CONFIG_INET_TCP_DIAG=y
308# CONFIG_TCP_CONG_ADVANCED is not set
309CONFIG_TCP_CONG_CUBIC=y
310CONFIG_DEFAULT_TCP_CONG="cubic"
311# CONFIG_TCP_MD5SIG is not set
312# CONFIG_IPV6 is not set
313# CONFIG_NETWORK_SECMARK is not set
314# CONFIG_NETFILTER is not set
315# CONFIG_IP_DCCP is not set
316# CONFIG_IP_SCTP is not set
317# CONFIG_TIPC is not set
318# CONFIG_ATM is not set
319# CONFIG_BRIDGE is not set
320# CONFIG_VLAN_8021Q is not set
321# CONFIG_DECNET is not set
322# CONFIG_LLC2 is not set
323# CONFIG_IPX is not set
324# CONFIG_ATALK is not set
325# CONFIG_X25 is not set
326# CONFIG_LAPB is not set
327# CONFIG_ECONET is not set
328# CONFIG_WAN_ROUTER is not set
329# CONFIG_NET_SCHED is not set
330
331#
332# Network testing
333#
334# CONFIG_NET_PKTGEN is not set
335# CONFIG_HAMRADIO is not set
336# CONFIG_CAN is not set
337# CONFIG_IRDA is not set
338# CONFIG_BT is not set
339# CONFIG_AF_RXRPC is not set
340
341#
342# Wireless
343#
344# CONFIG_CFG80211 is not set
345# CONFIG_WIRELESS_EXT is not set
346# CONFIG_MAC80211 is not set
347# CONFIG_IEEE80211 is not set
348# CONFIG_RFKILL is not set
349# CONFIG_NET_9P is not set
350
351#
352# Device Drivers
353#
354
355#
356# Generic Driver Options
357#
358CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
359CONFIG_STANDALONE=y
360CONFIG_PREVENT_FIRMWARE_BUILD=y
361CONFIG_FW_LOADER=y
362# CONFIG_SYS_HYPERVISOR is not set
363# CONFIG_CONNECTOR is not set
364CONFIG_MTD=y
365# CONFIG_MTD_DEBUG is not set
366# CONFIG_MTD_CONCAT is not set
367CONFIG_MTD_PARTITIONS=y
368# CONFIG_MTD_REDBOOT_PARTS is not set
369CONFIG_MTD_CMDLINE_PARTS=y
370# CONFIG_MTD_OF_PARTS is not set
371# CONFIG_MTD_AR7_PARTS is not set
372
373#
374# User Modules And Translation Layers
375#
376CONFIG_MTD_CHAR=y
377CONFIG_MTD_BLKDEVS=y
378CONFIG_MTD_BLOCK=y
379# CONFIG_FTL is not set
380# CONFIG_NFTL is not set
381# CONFIG_INFTL is not set
382# CONFIG_RFD_FTL is not set
383# CONFIG_SSFDC is not set
384# CONFIG_MTD_OOPS is not set
385
386#
387# RAM/ROM/Flash chip drivers
388#
389CONFIG_MTD_CFI=y
390# CONFIG_MTD_JEDECPROBE is not set
391CONFIG_MTD_GEN_PROBE=y
392CONFIG_MTD_CFI_ADV_OPTIONS=y
393CONFIG_MTD_CFI_NOSWAP=y
394# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
395# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
396# CONFIG_MTD_CFI_GEOMETRY is not set
397CONFIG_MTD_MAP_BANK_WIDTH_1=y
398CONFIG_MTD_MAP_BANK_WIDTH_2=y
399CONFIG_MTD_MAP_BANK_WIDTH_4=y
400# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
401# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
402# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
403CONFIG_MTD_CFI_I1=y
404CONFIG_MTD_CFI_I2=y
405# CONFIG_MTD_CFI_I4 is not set
406# CONFIG_MTD_CFI_I8 is not set
407# CONFIG_MTD_OTP is not set
408CONFIG_MTD_CFI_INTELEXT=y
409# CONFIG_MTD_CFI_AMDSTD is not set
410# CONFIG_MTD_CFI_STAA is not set
411CONFIG_MTD_CFI_UTIL=y
412# CONFIG_MTD_RAM is not set
413# CONFIG_MTD_ROM is not set
414# CONFIG_MTD_ABSENT is not set
415
416#
417# Mapping drivers for chip access
418#
419# CONFIG_MTD_COMPLEX_MAPPINGS is not set
420# CONFIG_MTD_PHYSMAP is not set
421CONFIG_MTD_PHYSMAP_OF=y
422# CONFIG_MTD_INTEL_VR_NOR is not set
423# CONFIG_MTD_PLATRAM is not set
424
425#
426# Self-contained MTD device drivers
427#
428# CONFIG_MTD_PMC551 is not set
429# CONFIG_MTD_DATAFLASH is not set
430# CONFIG_MTD_M25P80 is not set
431# CONFIG_MTD_SLRAM is not set
432# CONFIG_MTD_PHRAM is not set
433# CONFIG_MTD_MTDRAM is not set
434# CONFIG_MTD_BLOCK2MTD is not set
435
436#
437# Disk-On-Chip Device Drivers
438#
439# CONFIG_MTD_DOC2000 is not set
440# CONFIG_MTD_DOC2001 is not set
441# CONFIG_MTD_DOC2001PLUS is not set
442# CONFIG_MTD_NAND is not set
443# CONFIG_MTD_ONENAND is not set
444
445#
446# UBI - Unsorted block images
447#
448# CONFIG_MTD_UBI is not set
449CONFIG_OF_DEVICE=y
450CONFIG_OF_GPIO=y
451CONFIG_OF_I2C=y
452# CONFIG_PARPORT is not set
453CONFIG_BLK_DEV=y
454# CONFIG_BLK_DEV_FD is not set
455# CONFIG_BLK_CPQ_DA is not set
456# CONFIG_BLK_CPQ_CISS_DA is not set
457# CONFIG_BLK_DEV_DAC960 is not set
458# CONFIG_BLK_DEV_UMEM is not set
459# CONFIG_BLK_DEV_COW_COMMON is not set
460CONFIG_BLK_DEV_LOOP=y
461# CONFIG_BLK_DEV_CRYPTOLOOP is not set
462# CONFIG_BLK_DEV_NBD is not set
463# CONFIG_BLK_DEV_SX8 is not set
464CONFIG_BLK_DEV_RAM=y
465CONFIG_BLK_DEV_RAM_COUNT=16
466CONFIG_BLK_DEV_RAM_SIZE=32768
467# CONFIG_BLK_DEV_XIP is not set
468# CONFIG_CDROM_PKTCDVD is not set
469# CONFIG_ATA_OVER_ETH is not set
470CONFIG_MISC_DEVICES=y
471# CONFIG_PHANTOM is not set
472# CONFIG_EEPROM_93CX6 is not set
473# CONFIG_SGI_IOC4 is not set
474# CONFIG_TIFM_CORE is not set
475# CONFIG_ENCLOSURE_SERVICES is not set
476CONFIG_HAVE_IDE=y
477# CONFIG_IDE is not set
478
479#
480# SCSI device support
481#
482# CONFIG_RAID_ATTRS is not set
483# CONFIG_SCSI is not set
484# CONFIG_SCSI_DMA is not set
485# CONFIG_SCSI_NETLINK is not set
486# CONFIG_ATA is not set
487# CONFIG_MD is not set
488# CONFIG_FUSION is not set
489
490#
491# IEEE 1394 (FireWire) support
492#
493# CONFIG_FIREWIRE is not set
494# CONFIG_IEEE1394 is not set
495# CONFIG_I2O is not set
496# CONFIG_MACINTOSH_DRIVERS is not set
497CONFIG_NETDEVICES=y
498# CONFIG_NETDEVICES_MULTIQUEUE is not set
499# CONFIG_DUMMY is not set
500# CONFIG_BONDING is not set
501# CONFIG_MACVLAN is not set
502# CONFIG_EQUALIZER is not set
503# CONFIG_TUN is not set
504# CONFIG_VETH is not set
505# CONFIG_ARCNET is not set
506CONFIG_PHYLIB=y
507
508#
509# MII PHY device drivers
510#
511# CONFIG_MARVELL_PHY is not set
512# CONFIG_DAVICOM_PHY is not set
513# CONFIG_QSEMI_PHY is not set
514# CONFIG_LXT_PHY is not set
515# CONFIG_CICADA_PHY is not set
516# CONFIG_VITESSE_PHY is not set
517# CONFIG_SMSC_PHY is not set
518CONFIG_BROADCOM_PHY=y
519# CONFIG_ICPLUS_PHY is not set
520# CONFIG_REALTEK_PHY is not set
521# CONFIG_FIXED_PHY is not set
522# CONFIG_MDIO_BITBANG is not set
523# CONFIG_NET_ETHERNET is not set
524CONFIG_NETDEV_1000=y
525# CONFIG_ACENIC is not set
526# CONFIG_DL2K is not set
527# CONFIG_E1000 is not set
528# CONFIG_E1000E is not set
529# CONFIG_E1000E_ENABLED is not set
530# CONFIG_IP1000 is not set
531# CONFIG_IGB is not set
532# CONFIG_NS83820 is not set
533# CONFIG_HAMACHI is not set
534# CONFIG_YELLOWFIN is not set
535# CONFIG_R8169 is not set
536# CONFIG_SIS190 is not set
537# CONFIG_SKGE is not set
538# CONFIG_SKY2 is not set
539# CONFIG_VIA_VELOCITY is not set
540# CONFIG_TIGON3 is not set
541# CONFIG_BNX2 is not set
542# CONFIG_GIANFAR is not set
543CONFIG_UCC_GETH=y
544CONFIG_UGETH_NAPI=y
545# CONFIG_UGETH_MAGIC_PACKET is not set
546# CONFIG_UGETH_FILTERING is not set
547# CONFIG_UGETH_TX_ON_DEMAND is not set
548# CONFIG_QLA3XXX is not set
549# CONFIG_ATL1 is not set
550# CONFIG_NETDEV_10000 is not set
551# CONFIG_TR is not set
552
553#
554# Wireless LAN
555#
556# CONFIG_WLAN_PRE80211 is not set
557# CONFIG_WLAN_80211 is not set
558# CONFIG_IWLWIFI_LEDS is not set
559# CONFIG_WAN is not set
560# CONFIG_FDDI is not set
561# CONFIG_HIPPI is not set
562# CONFIG_PPP is not set
563# CONFIG_SLIP is not set
564# CONFIG_NETCONSOLE is not set
565# CONFIG_NETPOLL is not set
566# CONFIG_NET_POLL_CONTROLLER is not set
567# CONFIG_ISDN is not set
568# CONFIG_PHONE is not set
569
570#
571# Input device support
572#
573CONFIG_INPUT=y
574# CONFIG_INPUT_FF_MEMLESS is not set
575# CONFIG_INPUT_POLLDEV is not set
576
577#
578# Userland interfaces
579#
580# CONFIG_INPUT_MOUSEDEV is not set
581# CONFIG_INPUT_JOYDEV is not set
582# CONFIG_INPUT_EVDEV is not set
583# CONFIG_INPUT_EVBUG is not set
584
585#
586# Input Device Drivers
587#
588# CONFIG_INPUT_KEYBOARD is not set
589# CONFIG_INPUT_MOUSE is not set
590# CONFIG_INPUT_JOYSTICK is not set
591# CONFIG_INPUT_TABLET is not set
592# CONFIG_INPUT_TOUCHSCREEN is not set
593# CONFIG_INPUT_MISC is not set
594
595#
596# Hardware I/O ports
597#
598# CONFIG_SERIO is not set
599# CONFIG_GAMEPORT is not set
600
601#
602# Character devices
603#
604CONFIG_VT=y
605CONFIG_VT_CONSOLE=y
606CONFIG_HW_CONSOLE=y
607# CONFIG_VT_HW_CONSOLE_BINDING is not set
608# CONFIG_DEVKMEM is not set
609# CONFIG_SERIAL_NONSTANDARD is not set
610# CONFIG_NOZOMI is not set
611
612#
613# Serial drivers
614#
615CONFIG_SERIAL_8250=y
616CONFIG_SERIAL_8250_CONSOLE=y
617CONFIG_SERIAL_8250_PCI=y
618CONFIG_SERIAL_8250_NR_UARTS=4
619CONFIG_SERIAL_8250_RUNTIME_UARTS=4
620# CONFIG_SERIAL_8250_EXTENDED is not set
621
622#
623# Non-8250 serial port support
624#
625# CONFIG_SERIAL_UARTLITE is not set
626CONFIG_SERIAL_CORE=y
627CONFIG_SERIAL_CORE_CONSOLE=y
628# CONFIG_SERIAL_JSM is not set
629# CONFIG_SERIAL_OF_PLATFORM is not set
630CONFIG_SERIAL_QE=y
631CONFIG_UNIX98_PTYS=y
632CONFIG_LEGACY_PTYS=y
633CONFIG_LEGACY_PTY_COUNT=256
634# CONFIG_IPMI_HANDLER is not set
635CONFIG_HW_RANDOM=y
636# CONFIG_NVRAM is not set
637# CONFIG_GEN_RTC is not set
638# CONFIG_R3964 is not set
639# CONFIG_APPLICOM is not set
640# CONFIG_RAW_DRIVER is not set
641# CONFIG_TCG_TPM is not set
642CONFIG_DEVPORT=y
643CONFIG_I2C=y
644CONFIG_I2C_BOARDINFO=y
645CONFIG_I2C_CHARDEV=y
646
647#
648# I2C Hardware Bus support
649#
650# CONFIG_I2C_ALI1535 is not set
651# CONFIG_I2C_ALI1563 is not set
652# CONFIG_I2C_ALI15X3 is not set
653# CONFIG_I2C_AMD756 is not set
654# CONFIG_I2C_AMD8111 is not set
655# CONFIG_I2C_GPIO is not set
656# CONFIG_I2C_I801 is not set
657# CONFIG_I2C_I810 is not set
658# CONFIG_I2C_PIIX4 is not set
659CONFIG_I2C_MPC=y
660# CONFIG_I2C_NFORCE2 is not set
661# CONFIG_I2C_OCORES is not set
662# CONFIG_I2C_PARPORT_LIGHT is not set
663# CONFIG_I2C_PROSAVAGE is not set
664# CONFIG_I2C_SAVAGE4 is not set
665# CONFIG_I2C_SIMTEC is not set
666# CONFIG_I2C_SIS5595 is not set
667# CONFIG_I2C_SIS630 is not set
668# CONFIG_I2C_SIS96X is not set
669# CONFIG_I2C_TAOS_EVM is not set
670# CONFIG_I2C_STUB is not set
671# CONFIG_I2C_VIA is not set
672# CONFIG_I2C_VIAPRO is not set
673# CONFIG_I2C_VOODOO3 is not set
674# CONFIG_I2C_PCA_PLATFORM is not set
675
676#
677# Miscellaneous I2C Chip support
678#
679# CONFIG_DS1682 is not set
680# CONFIG_SENSORS_EEPROM is not set
681# CONFIG_SENSORS_PCF8574 is not set
682# CONFIG_PCF8575 is not set
683# CONFIG_SENSORS_PCF8591 is not set
684# CONFIG_TPS65010 is not set
685# CONFIG_SENSORS_MAX6875 is not set
686# CONFIG_SENSORS_TSL2550 is not set
687# CONFIG_I2C_DEBUG_CORE is not set
688# CONFIG_I2C_DEBUG_ALGO is not set
689# CONFIG_I2C_DEBUG_BUS is not set
690# CONFIG_I2C_DEBUG_CHIP is not set
691CONFIG_SPI=y
692CONFIG_SPI_MASTER=y
693
694#
695# SPI Master Controller Drivers
696#
697CONFIG_SPI_BITBANG=y
698CONFIG_SPI_MPC83xx=y
699
700#
701# SPI Protocol Masters
702#
703# CONFIG_SPI_AT25 is not set
704CONFIG_SPI_SPIDEV=y
705# CONFIG_SPI_TLE62X0 is not set
706CONFIG_HAVE_GPIO_LIB=y
707
708#
709# GPIO Support
710#
711
712#
713# I2C GPIO expanders:
714#
715# CONFIG_GPIO_PCA953X is not set
716# CONFIG_GPIO_PCF857X is not set
717
718#
719# SPI GPIO expanders:
720#
721# CONFIG_GPIO_MCP23S08 is not set
722# CONFIG_W1 is not set
723# CONFIG_POWER_SUPPLY is not set
724# CONFIG_HWMON is not set
725# CONFIG_THERMAL is not set
726CONFIG_WATCHDOG=y
727# CONFIG_WATCHDOG_NOWAYOUT is not set
728
729#
730# Watchdog Device Drivers
731#
732# CONFIG_SOFT_WATCHDOG is not set
733CONFIG_83xx_WDT=y
734
735#
736# PCI-based Watchdog Cards
737#
738# CONFIG_PCIPCWATCHDOG is not set
739# CONFIG_WDTPCI is not set
740
741#
742# Sonics Silicon Backplane
743#
744CONFIG_SSB_POSSIBLE=y
745# CONFIG_SSB is not set
746
747#
748# Multifunction device drivers
749#
750# CONFIG_MFD_SM501 is not set
751# CONFIG_HTC_EGPIO is not set
752# CONFIG_HTC_PASIC3 is not set
753
754#
755# Multimedia devices
756#
757
758#
759# Multimedia core support
760#
761# CONFIG_VIDEO_DEV is not set
762# CONFIG_DVB_CORE is not set
763# CONFIG_VIDEO_MEDIA is not set
764
765#
766# Multimedia drivers
767#
768CONFIG_DAB=y
769
770#
771# Graphics support
772#
773# CONFIG_AGP is not set
774# CONFIG_DRM is not set
775# CONFIG_VGASTATE is not set
776# CONFIG_VIDEO_OUTPUT_CONTROL is not set
777CONFIG_FB=y
778# CONFIG_FIRMWARE_EDID is not set
779# CONFIG_FB_DDC is not set
780CONFIG_FB_CFB_FILLRECT=y
781CONFIG_FB_CFB_COPYAREA=y
782CONFIG_FB_CFB_IMAGEBLIT=y
783# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
784# CONFIG_FB_SYS_FILLRECT is not set
785# CONFIG_FB_SYS_COPYAREA is not set
786# CONFIG_FB_SYS_IMAGEBLIT is not set
787# CONFIG_FB_FOREIGN_ENDIAN is not set
788# CONFIG_FB_SYS_FOPS is not set
789# CONFIG_FB_SVGALIB is not set
790CONFIG_FB_MACMODES=y
791# CONFIG_FB_BACKLIGHT is not set
792# CONFIG_FB_MODE_HELPERS is not set
793# CONFIG_FB_TILEBLITTING is not set
794
795#
796# Frame buffer hardware drivers
797#
798# CONFIG_FB_CIRRUS is not set
799# CONFIG_FB_PM2 is not set
800# CONFIG_FB_CYBER2000 is not set
801CONFIG_FB_OF=y
802# CONFIG_FB_CT65550 is not set
803# CONFIG_FB_ASILIANT is not set
804# CONFIG_FB_IMSTT is not set
805# CONFIG_FB_VGA16 is not set
806# CONFIG_FB_S1D13XXX is not set
807# CONFIG_FB_NVIDIA is not set
808# CONFIG_FB_RIVA is not set
809# CONFIG_FB_MATROX is not set
810# CONFIG_FB_RADEON is not set
811# CONFIG_FB_ATY128 is not set
812# CONFIG_FB_ATY is not set
813# CONFIG_FB_S3 is not set
814# CONFIG_FB_SAVAGE is not set
815# CONFIG_FB_SIS is not set
816# CONFIG_FB_NEOMAGIC is not set
817# CONFIG_FB_KYRO is not set
818# CONFIG_FB_3DFX is not set
819# CONFIG_FB_VOODOO1 is not set
820# CONFIG_FB_VT8623 is not set
821# CONFIG_FB_TRIDENT is not set
822# CONFIG_FB_ARK is not set
823# CONFIG_FB_PM3 is not set
824# CONFIG_FB_FSL_DIU is not set
825# CONFIG_FB_IBM_GXT4500 is not set
826# CONFIG_FB_VIRTUAL is not set
827# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
828
829#
830# Display device support
831#
832# CONFIG_DISPLAY_SUPPORT is not set
833
834#
835# Console display driver support
836#
837# CONFIG_VGA_CONSOLE is not set
838CONFIG_DUMMY_CONSOLE=y
839CONFIG_FRAMEBUFFER_CONSOLE=y
840# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
841# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
842# CONFIG_FONTS is not set
843CONFIG_FONT_8x8=y
844CONFIG_FONT_8x16=y
845CONFIG_LOGO=y
846# CONFIG_LOGO_LINUX_MONO is not set
847CONFIG_LOGO_LINUX_VGA16=y
848CONFIG_LOGO_LINUX_CLUT224=y
849
850#
851# Sound
852#
853# CONFIG_SOUND is not set
854CONFIG_HID_SUPPORT=y
855CONFIG_HID=y
856# CONFIG_HID_DEBUG is not set
857# CONFIG_HIDRAW is not set
858# CONFIG_USB_SUPPORT is not set
859# CONFIG_MMC is not set
860# CONFIG_MEMSTICK is not set
861# CONFIG_NEW_LEDS is not set
862# CONFIG_ACCESSIBILITY is not set
863# CONFIG_INFINIBAND is not set
864# CONFIG_EDAC is not set
865# CONFIG_RTC_CLASS is not set
866# CONFIG_DMADEVICES is not set
867# CONFIG_UIO is not set
868
869#
870# File systems
871#
872CONFIG_EXT2_FS=y
873# CONFIG_EXT2_FS_XATTR is not set
874# CONFIG_EXT2_FS_XIP is not set
875CONFIG_EXT3_FS=y
876CONFIG_EXT3_FS_XATTR=y
877# CONFIG_EXT3_FS_POSIX_ACL is not set
878# CONFIG_EXT3_FS_SECURITY is not set
879# CONFIG_EXT4DEV_FS is not set
880CONFIG_JBD=y
881CONFIG_FS_MBCACHE=y
882# CONFIG_REISERFS_FS is not set
883# CONFIG_JFS_FS is not set
884# CONFIG_FS_POSIX_ACL is not set
885# CONFIG_XFS_FS is not set
886# CONFIG_OCFS2_FS is not set
887CONFIG_DNOTIFY=y
888CONFIG_INOTIFY=y
889CONFIG_INOTIFY_USER=y
890# CONFIG_QUOTA is not set
891# CONFIG_AUTOFS_FS is not set
892# CONFIG_AUTOFS4_FS is not set
893# CONFIG_FUSE_FS is not set
894
895#
896# CD-ROM/DVD Filesystems
897#
898# CONFIG_ISO9660_FS is not set
899# CONFIG_UDF_FS is not set
900
901#
902# DOS/FAT/NT Filesystems
903#
904# CONFIG_MSDOS_FS is not set
905# CONFIG_VFAT_FS is not set
906# CONFIG_NTFS_FS is not set
907
908#
909# Pseudo filesystems
910#
911CONFIG_PROC_FS=y
912CONFIG_PROC_KCORE=y
913CONFIG_PROC_SYSCTL=y
914CONFIG_SYSFS=y
915CONFIG_TMPFS=y
916# CONFIG_TMPFS_POSIX_ACL is not set
917# CONFIG_HUGETLB_PAGE is not set
918# CONFIG_CONFIGFS_FS is not set
919
920#
921# Miscellaneous filesystems
922#
923# CONFIG_ADFS_FS is not set
924# CONFIG_AFFS_FS is not set
925# CONFIG_HFS_FS is not set
926# CONFIG_HFSPLUS_FS is not set
927# CONFIG_BEFS_FS is not set
928# CONFIG_BFS_FS is not set
929# CONFIG_EFS_FS is not set
930CONFIG_JFFS2_FS=y
931CONFIG_JFFS2_FS_DEBUG=0
932CONFIG_JFFS2_FS_WRITEBUFFER=y
933# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
934# CONFIG_JFFS2_SUMMARY is not set
935# CONFIG_JFFS2_FS_XATTR is not set
936# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
937CONFIG_JFFS2_ZLIB=y
938# CONFIG_JFFS2_LZO is not set
939CONFIG_JFFS2_RTIME=y
940# CONFIG_JFFS2_RUBIN is not set
941# CONFIG_CRAMFS is not set
942# CONFIG_VXFS_FS is not set
943# CONFIG_MINIX_FS is not set
944# CONFIG_HPFS_FS is not set
945# CONFIG_QNX4FS_FS is not set
946# CONFIG_ROMFS_FS is not set
947# CONFIG_SYSV_FS is not set
948# CONFIG_UFS_FS is not set
949CONFIG_NETWORK_FILESYSTEMS=y
950CONFIG_NFS_FS=y
951CONFIG_NFS_V3=y
952# CONFIG_NFS_V3_ACL is not set
953CONFIG_NFS_V4=y
954# CONFIG_NFSD is not set
955CONFIG_ROOT_NFS=y
956CONFIG_LOCKD=y
957CONFIG_LOCKD_V4=y
958CONFIG_NFS_COMMON=y
959CONFIG_SUNRPC=y
960CONFIG_SUNRPC_GSS=y
961# CONFIG_SUNRPC_BIND34 is not set
962CONFIG_RPCSEC_GSS_KRB5=y
963# CONFIG_RPCSEC_GSS_SPKM3 is not set
964# CONFIG_SMB_FS is not set
965# CONFIG_CIFS is not set
966# CONFIG_NCP_FS is not set
967# CONFIG_CODA_FS is not set
968# CONFIG_AFS_FS is not set
969
970#
971# Partition Types
972#
973CONFIG_PARTITION_ADVANCED=y
974# CONFIG_ACORN_PARTITION is not set
975# CONFIG_OSF_PARTITION is not set
976# CONFIG_AMIGA_PARTITION is not set
977# CONFIG_ATARI_PARTITION is not set
978# CONFIG_MAC_PARTITION is not set
979# CONFIG_MSDOS_PARTITION is not set
980# CONFIG_LDM_PARTITION is not set
981# CONFIG_SGI_PARTITION is not set
982# CONFIG_ULTRIX_PARTITION is not set
983# CONFIG_SUN_PARTITION is not set
984# CONFIG_KARMA_PARTITION is not set
985# CONFIG_EFI_PARTITION is not set
986# CONFIG_SYSV68_PARTITION is not set
987# CONFIG_NLS is not set
988# CONFIG_DLM is not set
989CONFIG_UCC_SLOW=y
990CONFIG_UCC_FAST=y
991CONFIG_UCC=y
992CONFIG_QE_GPIO=y
993
994#
995# Library routines
996#
997CONFIG_BITREVERSE=y
998# CONFIG_GENERIC_FIND_FIRST_BIT is not set
999# CONFIG_CRC_CCITT is not set
1000# CONFIG_CRC16 is not set
1001# CONFIG_CRC_ITU_T is not set
1002CONFIG_CRC32=y
1003# CONFIG_CRC7 is not set
1004# CONFIG_LIBCRC32C is not set
1005CONFIG_ZLIB_INFLATE=y
1006CONFIG_ZLIB_DEFLATE=y
1007CONFIG_PLIST=y
1008CONFIG_HAS_IOMEM=y
1009CONFIG_HAS_IOPORT=y
1010CONFIG_HAS_DMA=y
1011CONFIG_HAVE_LMB=y
1012
1013#
1014# Kernel hacking
1015#
1016# CONFIG_PRINTK_TIME is not set
1017CONFIG_ENABLE_WARN_DEPRECATED=y
1018CONFIG_ENABLE_MUST_CHECK=y
1019CONFIG_FRAME_WARN=1024
1020# CONFIG_MAGIC_SYSRQ is not set
1021# CONFIG_UNUSED_SYMBOLS is not set
1022# CONFIG_DEBUG_FS is not set
1023# CONFIG_HEADERS_CHECK is not set
1024# CONFIG_DEBUG_KERNEL is not set
1025# CONFIG_SLUB_DEBUG_ON is not set
1026# CONFIG_SLUB_STATS is not set
1027# CONFIG_DEBUG_BUGVERBOSE is not set
1028# CONFIG_SAMPLES is not set
1029# CONFIG_IRQSTACKS is not set
1030CONFIG_PPC_EARLY_DEBUG=y
1031# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1032# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1033# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set
1034# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set
1035# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1036# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1037# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
1038# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
1039# CONFIG_PPC_EARLY_DEBUG_44x is not set
1040# CONFIG_PPC_EARLY_DEBUG_40x is not set
1041# CONFIG_PPC_EARLY_DEBUG_CPM is not set
1042
1043#
1044# Security options
1045#
1046# CONFIG_KEYS is not set
1047# CONFIG_SECURITY is not set
1048# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1049CONFIG_CRYPTO=y
1050
1051#
1052# Crypto core or helper
1053#
1054CONFIG_CRYPTO_ALGAPI=y
1055CONFIG_CRYPTO_BLKCIPHER=y
1056CONFIG_CRYPTO_MANAGER=y
1057# CONFIG_CRYPTO_GF128MUL is not set
1058# CONFIG_CRYPTO_NULL is not set
1059# CONFIG_CRYPTO_CRYPTD is not set
1060# CONFIG_CRYPTO_AUTHENC is not set
1061# CONFIG_CRYPTO_TEST is not set
1062
1063#
1064# Authenticated Encryption with Associated Data
1065#
1066# CONFIG_CRYPTO_CCM is not set
1067# CONFIG_CRYPTO_GCM is not set
1068# CONFIG_CRYPTO_SEQIV is not set
1069
1070#
1071# Block modes
1072#
1073CONFIG_CRYPTO_CBC=y
1074# CONFIG_CRYPTO_CTR is not set
1075# CONFIG_CRYPTO_CTS is not set
1076# CONFIG_CRYPTO_ECB is not set
1077# CONFIG_CRYPTO_LRW is not set
1078# CONFIG_CRYPTO_PCBC is not set
1079# CONFIG_CRYPTO_XTS is not set
1080
1081#
1082# Hash modes
1083#
1084# CONFIG_CRYPTO_HMAC is not set
1085# CONFIG_CRYPTO_XCBC is not set
1086
1087#
1088# Digest
1089#
1090# CONFIG_CRYPTO_CRC32C is not set
1091# CONFIG_CRYPTO_MD4 is not set
1092CONFIG_CRYPTO_MD5=y
1093# CONFIG_CRYPTO_MICHAEL_MIC is not set
1094# CONFIG_CRYPTO_SHA1 is not set
1095# CONFIG_CRYPTO_SHA256 is not set
1096# CONFIG_CRYPTO_SHA512 is not set
1097# CONFIG_CRYPTO_TGR192 is not set
1098# CONFIG_CRYPTO_WP512 is not set
1099
1100#
1101# Ciphers
1102#
1103# CONFIG_CRYPTO_AES is not set
1104# CONFIG_CRYPTO_ANUBIS is not set
1105# CONFIG_CRYPTO_ARC4 is not set
1106# CONFIG_CRYPTO_BLOWFISH is not set
1107# CONFIG_CRYPTO_CAMELLIA is not set
1108# CONFIG_CRYPTO_CAST5 is not set
1109# CONFIG_CRYPTO_CAST6 is not set
1110CONFIG_CRYPTO_DES=y
1111# CONFIG_CRYPTO_FCRYPT is not set
1112# CONFIG_CRYPTO_KHAZAD is not set
1113# CONFIG_CRYPTO_SALSA20 is not set
1114# CONFIG_CRYPTO_SEED is not set
1115# CONFIG_CRYPTO_SERPENT is not set
1116# CONFIG_CRYPTO_TEA is not set
1117# CONFIG_CRYPTO_TWOFISH is not set
1118
1119#
1120# Compression
1121#
1122# CONFIG_CRYPTO_DEFLATE is not set
1123# CONFIG_CRYPTO_LZO is not set
1124CONFIG_CRYPTO_HW=y
1125# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1126# CONFIG_PPC_CLOCK is not set
1127CONFIG_PPC_LIB_RHEAP=y
1128# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/tqm8548_defconfig b/arch/powerpc/configs/85xx/tqm8548_defconfig
new file mode 100644
index 000000000000..5d5b898767a3
--- /dev/null
+++ b/arch/powerpc/configs/85xx/tqm8548_defconfig
@@ -0,0 +1,1094 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.26-rc4
4# Tue Jun 3 14:39:30 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12CONFIG_PPC_85xx=y
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_E500=y
18CONFIG_BOOKE=y
19CONFIG_FSL_BOOKE=y
20CONFIG_FSL_EMB_PERFMON=y
21# CONFIG_PHYS_64BIT is not set
22CONFIG_SPE=y
23# CONFIG_PPC_MM_SLICES is not set
24CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32
26CONFIG_PPC_MERGE=y
27CONFIG_MMU=y
28CONFIG_GENERIC_CMOS_UPDATE=y
29CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_LOCKDEP_SUPPORT=y
37CONFIG_RWSEM_XCHGADD_ALGORITHM=y
38CONFIG_ARCH_HAS_ILOG2_U32=y
39CONFIG_GENERIC_HWEIGHT=y
40CONFIG_GENERIC_CALIBRATE_DELAY=y
41CONFIG_GENERIC_FIND_NEXT_BIT=y
42# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
43CONFIG_PPC=y
44CONFIG_EARLY_PRINTK=y
45CONFIG_GENERIC_NVRAM=y
46CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
47CONFIG_ARCH_MAY_HAVE_PC_FDC=y
48CONFIG_PPC_OF=y
49CONFIG_OF=y
50CONFIG_PPC_UDBG_16550=y
51# CONFIG_GENERIC_TBSYNC is not set
52CONFIG_AUDIT_ARCH=y
53CONFIG_GENERIC_BUG=y
54CONFIG_DEFAULT_UIMAGE=y
55# CONFIG_PPC_DCR_NATIVE is not set
56# CONFIG_PPC_DCR_MMIO is not set
57CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
58
59#
60# General setup
61#
62CONFIG_EXPERIMENTAL=y
63CONFIG_BROKEN_ON_SMP=y
64CONFIG_INIT_ENV_ARG_LIMIT=32
65CONFIG_LOCALVERSION=""
66CONFIG_LOCALVERSION_AUTO=y
67CONFIG_SWAP=y
68CONFIG_SYSVIPC=y
69CONFIG_SYSVIPC_SYSCTL=y
70# CONFIG_POSIX_MQUEUE is not set
71# CONFIG_BSD_PROCESS_ACCT is not set
72# CONFIG_TASKSTATS is not set
73# CONFIG_AUDIT is not set
74# CONFIG_IKCONFIG is not set
75CONFIG_LOG_BUF_SHIFT=14
76# CONFIG_CGROUPS is not set
77CONFIG_GROUP_SCHED=y
78# CONFIG_FAIR_GROUP_SCHED is not set
79# CONFIG_RT_GROUP_SCHED is not set
80CONFIG_USER_SCHED=y
81# CONFIG_CGROUP_SCHED is not set
82CONFIG_SYSFS_DEPRECATED=y
83CONFIG_SYSFS_DEPRECATED_V2=y
84# CONFIG_RELAY is not set
85# CONFIG_NAMESPACES is not set
86CONFIG_BLK_DEV_INITRD=y
87CONFIG_INITRAMFS_SOURCE=""
88# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
89CONFIG_SYSCTL=y
90CONFIG_EMBEDDED=y
91CONFIG_SYSCTL_SYSCALL=y
92CONFIG_SYSCTL_SYSCALL_CHECK=y
93CONFIG_KALLSYMS=y
94# CONFIG_KALLSYMS_ALL is not set
95# CONFIG_KALLSYMS_EXTRA_PASS is not set
96CONFIG_HOTPLUG=y
97CONFIG_PRINTK=y
98CONFIG_BUG=y
99CONFIG_ELF_CORE=y
100CONFIG_COMPAT_BRK=y
101CONFIG_BASE_FULL=y
102CONFIG_FUTEX=y
103CONFIG_ANON_INODES=y
104CONFIG_EPOLL=y
105CONFIG_SIGNALFD=y
106CONFIG_TIMERFD=y
107CONFIG_EVENTFD=y
108CONFIG_SHMEM=y
109CONFIG_VM_EVENT_COUNTERS=y
110CONFIG_SLUB_DEBUG=y
111# CONFIG_SLAB is not set
112CONFIG_SLUB=y
113# CONFIG_SLOB is not set
114# CONFIG_PROFILING is not set
115# CONFIG_MARKERS is not set
116CONFIG_HAVE_OPROFILE=y
117# CONFIG_KPROBES is not set
118CONFIG_HAVE_KPROBES=y
119CONFIG_HAVE_KRETPROBES=y
120# CONFIG_HAVE_DMA_ATTRS is not set
121CONFIG_PROC_PAGE_MONITOR=y
122CONFIG_SLABINFO=y
123CONFIG_RT_MUTEXES=y
124# CONFIG_TINY_SHMEM is not set
125CONFIG_BASE_SMALL=0
126CONFIG_MODULES=y
127# CONFIG_MODULE_FORCE_LOAD is not set
128CONFIG_MODULE_UNLOAD=y
129# CONFIG_MODULE_FORCE_UNLOAD is not set
130# CONFIG_MODVERSIONS is not set
131# CONFIG_MODULE_SRCVERSION_ALL is not set
132# CONFIG_KMOD is not set
133CONFIG_BLOCK=y
134# CONFIG_LBD is not set
135# CONFIG_BLK_DEV_IO_TRACE is not set
136# CONFIG_LSF is not set
137# CONFIG_BLK_DEV_BSG is not set
138
139#
140# IO Schedulers
141#
142CONFIG_IOSCHED_NOOP=y
143CONFIG_IOSCHED_AS=y
144CONFIG_IOSCHED_DEADLINE=y
145CONFIG_IOSCHED_CFQ=y
146CONFIG_DEFAULT_AS=y
147# CONFIG_DEFAULT_DEADLINE is not set
148# CONFIG_DEFAULT_CFQ is not set
149# CONFIG_DEFAULT_NOOP is not set
150CONFIG_DEFAULT_IOSCHED="anticipatory"
151CONFIG_CLASSIC_RCU=y
152
153#
154# Platform support
155#
156# CONFIG_PPC_MPC512x is not set
157# CONFIG_PPC_MPC5121 is not set
158# CONFIG_PPC_CELL is not set
159# CONFIG_PPC_CELL_NATIVE is not set
160# CONFIG_PQ2ADS is not set
161CONFIG_MPC85xx=y
162# CONFIG_MPC8540_ADS is not set
163# CONFIG_MPC8560_ADS is not set
164# CONFIG_MPC85xx_CDS is not set
165# CONFIG_MPC85xx_MDS is not set
166# CONFIG_MPC85xx_DS is not set
167# CONFIG_KSI8560 is not set
168# CONFIG_STX_GP3 is not set
169# CONFIG_TQM8540 is not set
170# CONFIG_TQM8541 is not set
171CONFIG_TQM8548=y
172# CONFIG_TQM8555 is not set
173# CONFIG_TQM8560 is not set
174# CONFIG_SBC8548 is not set
175# CONFIG_SBC8560 is not set
176CONFIG_TQM85xx=y
177# CONFIG_IPIC is not set
178CONFIG_MPIC=y
179# CONFIG_MPIC_WEIRD is not set
180# CONFIG_PPC_I8259 is not set
181# CONFIG_PPC_RTAS is not set
182# CONFIG_MMIO_NVRAM is not set
183# CONFIG_PPC_MPC106 is not set
184# CONFIG_PPC_970_NAP is not set
185# CONFIG_PPC_INDIRECT_IO is not set
186# CONFIG_GENERIC_IOMAP is not set
187# CONFIG_CPU_FREQ is not set
188# CONFIG_CPM2 is not set
189CONFIG_PPC_CPM_NEW_BINDING=y
190# CONFIG_FSL_ULI1575 is not set
191
192#
193# Kernel options
194#
195# CONFIG_HIGHMEM is not set
196CONFIG_TICK_ONESHOT=y
197CONFIG_NO_HZ=y
198CONFIG_HIGH_RES_TIMERS=y
199CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
200# CONFIG_HZ_100 is not set
201CONFIG_HZ_250=y
202# CONFIG_HZ_300 is not set
203# CONFIG_HZ_1000 is not set
204CONFIG_HZ=250
205# CONFIG_SCHED_HRTICK is not set
206CONFIG_PREEMPT_NONE=y
207# CONFIG_PREEMPT_VOLUNTARY is not set
208# CONFIG_PREEMPT is not set
209CONFIG_BINFMT_ELF=y
210CONFIG_BINFMT_MISC=y
211CONFIG_MATH_EMULATION=y
212# CONFIG_IOMMU_HELPER is not set
213CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
214CONFIG_ARCH_HAS_WALK_MEMORY=y
215CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
216CONFIG_ARCH_FLATMEM_ENABLE=y
217CONFIG_ARCH_POPULATES_NODE_MAP=y
218CONFIG_SELECT_MEMORY_MODEL=y
219CONFIG_FLATMEM_MANUAL=y
220# CONFIG_DISCONTIGMEM_MANUAL is not set
221# CONFIG_SPARSEMEM_MANUAL is not set
222CONFIG_FLATMEM=y
223CONFIG_FLAT_NODE_MEM_MAP=y
224# CONFIG_SPARSEMEM_STATIC is not set
225# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
226CONFIG_PAGEFLAGS_EXTENDED=y
227CONFIG_SPLIT_PTLOCK_CPUS=4
228# CONFIG_RESOURCES_64BIT is not set
229CONFIG_ZONE_DMA_FLAG=1
230CONFIG_BOUNCE=y
231CONFIG_VIRT_TO_BUS=y
232CONFIG_FORCE_MAX_ZONEORDER=11
233CONFIG_PROC_DEVICETREE=y
234# CONFIG_CMDLINE_BOOL is not set
235# CONFIG_PM is not set
236# CONFIG_SECCOMP is not set
237CONFIG_ISA_DMA_API=y
238
239#
240# Bus options
241#
242CONFIG_ZONE_DMA=y
243CONFIG_PPC_INDIRECT_PCI=y
244CONFIG_FSL_SOC=y
245CONFIG_FSL_PCI=y
246CONFIG_FSL_LBC=y
247CONFIG_PCI=y
248CONFIG_PCI_DOMAINS=y
249CONFIG_PCI_SYSCALL=y
250CONFIG_PCIEPORTBUS=y
251CONFIG_PCIEAER=y
252# CONFIG_PCIEASPM is not set
253CONFIG_ARCH_SUPPORTS_MSI=y
254# CONFIG_PCI_MSI is not set
255CONFIG_PCI_LEGACY=y
256# CONFIG_PCI_DEBUG is not set
257# CONFIG_PCCARD is not set
258# CONFIG_HOTPLUG_PCI is not set
259# CONFIG_HAS_RAPIDIO is not set
260
261#
262# Advanced setup
263#
264# CONFIG_ADVANCED_OPTIONS is not set
265
266#
267# Default settings for advanced configuration options are used
268#
269CONFIG_LOWMEM_SIZE=0x30000000
270CONFIG_PAGE_OFFSET=0xc0000000
271CONFIG_KERNEL_START=0xc0000000
272CONFIG_PHYSICAL_START=0x00000000
273CONFIG_PHYSICAL_ALIGN=0x10000000
274CONFIG_TASK_SIZE=0xc0000000
275
276#
277# Networking
278#
279CONFIG_NET=y
280
281#
282# Networking options
283#
284CONFIG_PACKET=y
285# CONFIG_PACKET_MMAP is not set
286CONFIG_UNIX=y
287CONFIG_XFRM=y
288CONFIG_XFRM_USER=y
289# CONFIG_XFRM_SUB_POLICY is not set
290# CONFIG_XFRM_MIGRATE is not set
291# CONFIG_XFRM_STATISTICS is not set
292# CONFIG_NET_KEY is not set
293CONFIG_INET=y
294CONFIG_IP_MULTICAST=y
295# CONFIG_IP_ADVANCED_ROUTER is not set
296CONFIG_IP_FIB_HASH=y
297CONFIG_IP_PNP=y
298CONFIG_IP_PNP_DHCP=y
299CONFIG_IP_PNP_BOOTP=y
300# CONFIG_IP_PNP_RARP is not set
301# CONFIG_NET_IPIP is not set
302# CONFIG_NET_IPGRE is not set
303# CONFIG_IP_MROUTE is not set
304# CONFIG_ARPD is not set
305CONFIG_SYN_COOKIES=y
306# CONFIG_INET_AH is not set
307# CONFIG_INET_ESP is not set
308# CONFIG_INET_IPCOMP is not set
309# CONFIG_INET_XFRM_TUNNEL is not set
310# CONFIG_INET_TUNNEL is not set
311CONFIG_INET_XFRM_MODE_TRANSPORT=y
312CONFIG_INET_XFRM_MODE_TUNNEL=y
313CONFIG_INET_XFRM_MODE_BEET=y
314# CONFIG_INET_LRO is not set
315CONFIG_INET_DIAG=y
316CONFIG_INET_TCP_DIAG=y
317# CONFIG_TCP_CONG_ADVANCED is not set
318CONFIG_TCP_CONG_CUBIC=y
319CONFIG_DEFAULT_TCP_CONG="cubic"
320# CONFIG_TCP_MD5SIG is not set
321# CONFIG_IPV6 is not set
322# CONFIG_NETWORK_SECMARK is not set
323# CONFIG_NETFILTER is not set
324# CONFIG_IP_DCCP is not set
325# CONFIG_IP_SCTP is not set
326# CONFIG_TIPC is not set
327# CONFIG_ATM is not set
328# CONFIG_BRIDGE is not set
329# CONFIG_VLAN_8021Q is not set
330# CONFIG_DECNET is not set
331# CONFIG_LLC2 is not set
332# CONFIG_IPX is not set
333# CONFIG_ATALK is not set
334# CONFIG_X25 is not set
335# CONFIG_LAPB is not set
336# CONFIG_ECONET is not set
337# CONFIG_WAN_ROUTER is not set
338# CONFIG_NET_SCHED is not set
339
340#
341# Network testing
342#
343# CONFIG_NET_PKTGEN is not set
344# CONFIG_HAMRADIO is not set
345# CONFIG_CAN is not set
346# CONFIG_IRDA is not set
347# CONFIG_BT is not set
348# CONFIG_AF_RXRPC is not set
349
350#
351# Wireless
352#
353# CONFIG_CFG80211 is not set
354# CONFIG_WIRELESS_EXT is not set
355# CONFIG_MAC80211 is not set
356# CONFIG_IEEE80211 is not set
357# CONFIG_RFKILL is not set
358# CONFIG_NET_9P is not set
359
360#
361# Device Drivers
362#
363
364#
365# Generic Driver Options
366#
367CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
368CONFIG_STANDALONE=y
369CONFIG_PREVENT_FIRMWARE_BUILD=y
370# CONFIG_FW_LOADER is not set
371# CONFIG_DEBUG_DRIVER is not set
372# CONFIG_DEBUG_DEVRES is not set
373# CONFIG_SYS_HYPERVISOR is not set
374# CONFIG_CONNECTOR is not set
375CONFIG_MTD=y
376# CONFIG_MTD_DEBUG is not set
377# CONFIG_MTD_CONCAT is not set
378CONFIG_MTD_PARTITIONS=y
379# CONFIG_MTD_REDBOOT_PARTS is not set
380# CONFIG_MTD_CMDLINE_PARTS is not set
381CONFIG_MTD_OF_PARTS=y
382# CONFIG_MTD_AR7_PARTS is not set
383
384#
385# User Modules And Translation Layers
386#
387CONFIG_MTD_CHAR=y
388CONFIG_MTD_BLKDEVS=y
389# CONFIG_MTD_BLOCK is not set
390# CONFIG_MTD_BLOCK_RO is not set
391# CONFIG_FTL is not set
392# CONFIG_NFTL is not set
393# CONFIG_INFTL is not set
394# CONFIG_RFD_FTL is not set
395# CONFIG_SSFDC is not set
396# CONFIG_MTD_OOPS is not set
397
398#
399# RAM/ROM/Flash chip drivers
400#
401CONFIG_MTD_CFI=y
402# CONFIG_MTD_JEDECPROBE is not set
403CONFIG_MTD_GEN_PROBE=y
404# CONFIG_MTD_CFI_ADV_OPTIONS is not set
405CONFIG_MTD_MAP_BANK_WIDTH_1=y
406CONFIG_MTD_MAP_BANK_WIDTH_2=y
407CONFIG_MTD_MAP_BANK_WIDTH_4=y
408# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
409# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
410# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
411CONFIG_MTD_CFI_I1=y
412CONFIG_MTD_CFI_I2=y
413# CONFIG_MTD_CFI_I4 is not set
414# CONFIG_MTD_CFI_I8 is not set
415# CONFIG_MTD_CFI_INTELEXT is not set
416CONFIG_MTD_CFI_AMDSTD=y
417# CONFIG_MTD_CFI_STAA is not set
418CONFIG_MTD_CFI_UTIL=y
419# CONFIG_MTD_RAM is not set
420# CONFIG_MTD_ROM is not set
421# CONFIG_MTD_ABSENT is not set
422
423#
424# Mapping drivers for chip access
425#
426# CONFIG_MTD_COMPLEX_MAPPINGS is not set
427# CONFIG_MTD_PHYSMAP is not set
428CONFIG_MTD_PHYSMAP_OF=y
429# CONFIG_MTD_INTEL_VR_NOR is not set
430# CONFIG_MTD_PLATRAM is not set
431
432#
433# Self-contained MTD device drivers
434#
435# CONFIG_MTD_PMC551 is not set
436# CONFIG_MTD_SLRAM is not set
437# CONFIG_MTD_PHRAM is not set
438# CONFIG_MTD_MTDRAM is not set
439# CONFIG_MTD_BLOCK2MTD is not set
440
441#
442# Disk-On-Chip Device Drivers
443#
444# CONFIG_MTD_DOC2000 is not set
445# CONFIG_MTD_DOC2001 is not set
446# CONFIG_MTD_DOC2001PLUS is not set
447CONFIG_MTD_NAND=y
448# CONFIG_MTD_NAND_VERIFY_WRITE is not set
449CONFIG_MTD_NAND_ECC_SMC=y
450# CONFIG_MTD_NAND_MUSEUM_IDS is not set
451CONFIG_MTD_NAND_IDS=y
452# CONFIG_MTD_NAND_DISKONCHIP is not set
453# CONFIG_MTD_NAND_CAFE is not set
454# CONFIG_MTD_NAND_NANDSIM is not set
455# CONFIG_MTD_NAND_PLATFORM is not set
456# CONFIG_MTD_NAND_FSL_ELBC is not set
457CONFIG_MTD_NAND_FSL_UPM=y
458# CONFIG_MTD_ONENAND is not set
459
460#
461# UBI - Unsorted block images
462#
463CONFIG_MTD_UBI=m
464CONFIG_MTD_UBI_WL_THRESHOLD=4096
465CONFIG_MTD_UBI_BEB_RESERVE=1
466# CONFIG_MTD_UBI_GLUEBI is not set
467
468#
469# UBI debugging options
470#
471# CONFIG_MTD_UBI_DEBUG is not set
472CONFIG_OF_DEVICE=y
473# CONFIG_PARPORT is not set
474CONFIG_BLK_DEV=y
475# CONFIG_BLK_DEV_FD is not set
476# CONFIG_BLK_CPQ_DA is not set
477# CONFIG_BLK_CPQ_CISS_DA is not set
478# CONFIG_BLK_DEV_DAC960 is not set
479# CONFIG_BLK_DEV_UMEM is not set
480# CONFIG_BLK_DEV_COW_COMMON is not set
481CONFIG_BLK_DEV_LOOP=y
482# CONFIG_BLK_DEV_CRYPTOLOOP is not set
483# CONFIG_BLK_DEV_NBD is not set
484# CONFIG_BLK_DEV_SX8 is not set
485CONFIG_BLK_DEV_RAM=y
486CONFIG_BLK_DEV_RAM_COUNT=16
487CONFIG_BLK_DEV_RAM_SIZE=32768
488# CONFIG_BLK_DEV_XIP is not set
489# CONFIG_CDROM_PKTCDVD is not set
490# CONFIG_ATA_OVER_ETH is not set
491CONFIG_MISC_DEVICES=y
492# CONFIG_PHANTOM is not set
493# CONFIG_EEPROM_93CX6 is not set
494# CONFIG_SGI_IOC4 is not set
495# CONFIG_TIFM_CORE is not set
496# CONFIG_ENCLOSURE_SERVICES is not set
497CONFIG_HAVE_IDE=y
498CONFIG_IDE=y
499CONFIG_IDE_MAX_HWIFS=4
500CONFIG_BLK_DEV_IDE=y
501
502#
503# Please see Documentation/ide/ide.txt for help/info on IDE drives
504#
505# CONFIG_BLK_DEV_IDE_SATA is not set
506# CONFIG_BLK_DEV_IDEDISK is not set
507# CONFIG_IDEDISK_MULTI_MODE is not set
508# CONFIG_BLK_DEV_IDECD is not set
509# CONFIG_BLK_DEV_IDETAPE is not set
510# CONFIG_BLK_DEV_IDEFLOPPY is not set
511# CONFIG_IDE_TASK_IOCTL is not set
512CONFIG_IDE_PROC_FS=y
513
514#
515# IDE chipset support/bugfixes
516#
517CONFIG_IDE_GENERIC=y
518# CONFIG_BLK_DEV_PLATFORM is not set
519CONFIG_BLK_DEV_IDEDMA_SFF=y
520
521#
522# PCI IDE chipsets support
523#
524CONFIG_BLK_DEV_IDEPCI=y
525CONFIG_IDEPCI_PCIBUS_ORDER=y
526# CONFIG_BLK_DEV_OFFBOARD is not set
527CONFIG_BLK_DEV_GENERIC=y
528# CONFIG_BLK_DEV_OPTI621 is not set
529CONFIG_BLK_DEV_IDEDMA_PCI=y
530# CONFIG_BLK_DEV_AEC62XX is not set
531# CONFIG_BLK_DEV_ALI15X3 is not set
532# CONFIG_BLK_DEV_AMD74XX is not set
533# CONFIG_BLK_DEV_CMD64X is not set
534# CONFIG_BLK_DEV_TRIFLEX is not set
535# CONFIG_BLK_DEV_CY82C693 is not set
536# CONFIG_BLK_DEV_CS5520 is not set
537# CONFIG_BLK_DEV_CS5530 is not set
538# CONFIG_BLK_DEV_HPT34X is not set
539# CONFIG_BLK_DEV_HPT366 is not set
540# CONFIG_BLK_DEV_JMICRON is not set
541# CONFIG_BLK_DEV_SC1200 is not set
542# CONFIG_BLK_DEV_PIIX is not set
543# CONFIG_BLK_DEV_IT8213 is not set
544# CONFIG_BLK_DEV_IT821X is not set
545# CONFIG_BLK_DEV_NS87415 is not set
546# CONFIG_BLK_DEV_PDC202XX_OLD is not set
547# CONFIG_BLK_DEV_PDC202XX_NEW is not set
548# CONFIG_BLK_DEV_SVWKS is not set
549# CONFIG_BLK_DEV_SIIMAGE is not set
550# CONFIG_BLK_DEV_SL82C105 is not set
551# CONFIG_BLK_DEV_SLC90E66 is not set
552# CONFIG_BLK_DEV_TRM290 is not set
553CONFIG_BLK_DEV_VIA82CXXX=y
554# CONFIG_BLK_DEV_TC86C001 is not set
555CONFIG_BLK_DEV_IDEDMA=y
556# CONFIG_BLK_DEV_HD_ONLY is not set
557# CONFIG_BLK_DEV_HD is not set
558
559#
560# SCSI device support
561#
562# CONFIG_RAID_ATTRS is not set
563# CONFIG_SCSI is not set
564# CONFIG_SCSI_DMA is not set
565# CONFIG_SCSI_NETLINK is not set
566# CONFIG_ATA is not set
567# CONFIG_MD is not set
568# CONFIG_FUSION is not set
569
570#
571# IEEE 1394 (FireWire) support
572#
573# CONFIG_FIREWIRE is not set
574# CONFIG_IEEE1394 is not set
575# CONFIG_I2O is not set
576# CONFIG_MACINTOSH_DRIVERS is not set
577CONFIG_NETDEVICES=y
578# CONFIG_NETDEVICES_MULTIQUEUE is not set
579# CONFIG_DUMMY is not set
580# CONFIG_BONDING is not set
581# CONFIG_MACVLAN is not set
582# CONFIG_EQUALIZER is not set
583# CONFIG_TUN is not set
584# CONFIG_VETH is not set
585# CONFIG_ARCNET is not set
586CONFIG_PHYLIB=y
587
588#
589# MII PHY device drivers
590#
591# CONFIG_MARVELL_PHY is not set
592# CONFIG_DAVICOM_PHY is not set
593# CONFIG_QSEMI_PHY is not set
594# CONFIG_LXT_PHY is not set
595# CONFIG_CICADA_PHY is not set
596# CONFIG_VITESSE_PHY is not set
597# CONFIG_SMSC_PHY is not set
598# CONFIG_BROADCOM_PHY is not set
599# CONFIG_ICPLUS_PHY is not set
600# CONFIG_REALTEK_PHY is not set
601# CONFIG_FIXED_PHY is not set
602# CONFIG_MDIO_BITBANG is not set
603CONFIG_NET_ETHERNET=y
604CONFIG_MII=y
605# CONFIG_HAPPYMEAL is not set
606# CONFIG_SUNGEM is not set
607# CONFIG_CASSINI is not set
608# CONFIG_NET_VENDOR_3COM is not set
609# CONFIG_NET_TULIP is not set
610# CONFIG_HP100 is not set
611# CONFIG_IBM_NEW_EMAC_ZMII is not set
612# CONFIG_IBM_NEW_EMAC_RGMII is not set
613# CONFIG_IBM_NEW_EMAC_TAH is not set
614# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
615# CONFIG_NET_PCI is not set
616# CONFIG_B44 is not set
617CONFIG_NETDEV_1000=y
618# CONFIG_ACENIC is not set
619# CONFIG_DL2K is not set
620CONFIG_E1000=y
621CONFIG_E1000_NAPI=y
622# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
623# CONFIG_E1000E is not set
624# CONFIG_E1000E_ENABLED is not set
625# CONFIG_IP1000 is not set
626# CONFIG_IGB is not set
627# CONFIG_NS83820 is not set
628# CONFIG_HAMACHI is not set
629# CONFIG_YELLOWFIN is not set
630# CONFIG_R8169 is not set
631# CONFIG_SIS190 is not set
632# CONFIG_SKGE is not set
633# CONFIG_SKY2 is not set
634# CONFIG_VIA_VELOCITY is not set
635# CONFIG_TIGON3 is not set
636# CONFIG_BNX2 is not set
637CONFIG_GIANFAR=y
638CONFIG_GFAR_NAPI=y
639# CONFIG_QLA3XXX is not set
640# CONFIG_ATL1 is not set
641CONFIG_NETDEV_10000=y
642# CONFIG_CHELSIO_T1 is not set
643# CONFIG_CHELSIO_T3 is not set
644# CONFIG_IXGBE is not set
645# CONFIG_IXGB is not set
646# CONFIG_S2IO is not set
647# CONFIG_MYRI10GE is not set
648# CONFIG_NETXEN_NIC is not set
649# CONFIG_NIU is not set
650# CONFIG_MLX4_CORE is not set
651# CONFIG_TEHUTI is not set
652# CONFIG_BNX2X is not set
653# CONFIG_SFC is not set
654# CONFIG_TR is not set
655
656#
657# Wireless LAN
658#
659# CONFIG_WLAN_PRE80211 is not set
660# CONFIG_WLAN_80211 is not set
661# CONFIG_IWLWIFI_LEDS is not set
662# CONFIG_WAN is not set
663# CONFIG_FDDI is not set
664# CONFIG_HIPPI is not set
665# CONFIG_PPP is not set
666# CONFIG_SLIP is not set
667# CONFIG_NETCONSOLE is not set
668# CONFIG_NETPOLL is not set
669# CONFIG_NET_POLL_CONTROLLER is not set
670# CONFIG_ISDN is not set
671# CONFIG_PHONE is not set
672
673#
674# Input device support
675#
676CONFIG_INPUT=y
677# CONFIG_INPUT_FF_MEMLESS is not set
678# CONFIG_INPUT_POLLDEV is not set
679
680#
681# Userland interfaces
682#
683# CONFIG_INPUT_MOUSEDEV is not set
684# CONFIG_INPUT_JOYDEV is not set
685# CONFIG_INPUT_EVDEV is not set
686# CONFIG_INPUT_EVBUG is not set
687
688#
689# Input Device Drivers
690#
691# CONFIG_INPUT_KEYBOARD is not set
692# CONFIG_INPUT_MOUSE is not set
693# CONFIG_INPUT_JOYSTICK is not set
694# CONFIG_INPUT_TABLET is not set
695# CONFIG_INPUT_TOUCHSCREEN is not set
696# CONFIG_INPUT_MISC is not set
697
698#
699# Hardware I/O ports
700#
701# CONFIG_SERIO is not set
702# CONFIG_GAMEPORT is not set
703
704#
705# Character devices
706#
707# CONFIG_VT is not set
708CONFIG_DEVKMEM=y
709# CONFIG_SERIAL_NONSTANDARD is not set
710# CONFIG_NOZOMI is not set
711
712#
713# Serial drivers
714#
715CONFIG_SERIAL_8250=y
716CONFIG_SERIAL_8250_CONSOLE=y
717CONFIG_SERIAL_8250_PCI=y
718CONFIG_SERIAL_8250_NR_UARTS=4
719CONFIG_SERIAL_8250_RUNTIME_UARTS=4
720# CONFIG_SERIAL_8250_EXTENDED is not set
721CONFIG_SERIAL_8250_SHARE_IRQ=y
722
723#
724# Non-8250 serial port support
725#
726# CONFIG_SERIAL_UARTLITE is not set
727CONFIG_SERIAL_CORE=y
728CONFIG_SERIAL_CORE_CONSOLE=y
729# CONFIG_SERIAL_JSM is not set
730# CONFIG_SERIAL_OF_PLATFORM is not set
731CONFIG_UNIX98_PTYS=y
732CONFIG_LEGACY_PTYS=y
733CONFIG_LEGACY_PTY_COUNT=256
734# CONFIG_IPMI_HANDLER is not set
735# CONFIG_HW_RANDOM is not set
736# CONFIG_NVRAM is not set
737CONFIG_GEN_RTC=y
738# CONFIG_GEN_RTC_X is not set
739# CONFIG_R3964 is not set
740# CONFIG_APPLICOM is not set
741# CONFIG_RAW_DRIVER is not set
742# CONFIG_TCG_TPM is not set
743CONFIG_DEVPORT=y
744# CONFIG_I2C is not set
745# CONFIG_SPI is not set
746# CONFIG_W1 is not set
747# CONFIG_POWER_SUPPLY is not set
748CONFIG_HWMON=y
749# CONFIG_HWMON_VID is not set
750# CONFIG_SENSORS_I5K_AMB is not set
751# CONFIG_SENSORS_F71805F is not set
752# CONFIG_SENSORS_F71882FG is not set
753# CONFIG_SENSORS_IT87 is not set
754# CONFIG_SENSORS_PC87360 is not set
755# CONFIG_SENSORS_PC87427 is not set
756# CONFIG_SENSORS_SIS5595 is not set
757# CONFIG_SENSORS_SMSC47M1 is not set
758# CONFIG_SENSORS_SMSC47B397 is not set
759# CONFIG_SENSORS_VIA686A is not set
760# CONFIG_SENSORS_VT1211 is not set
761# CONFIG_SENSORS_VT8231 is not set
762# CONFIG_SENSORS_W83627HF is not set
763# CONFIG_SENSORS_W83627EHF is not set
764# CONFIG_HWMON_DEBUG_CHIP is not set
765# CONFIG_THERMAL is not set
766# CONFIG_WATCHDOG is not set
767
768#
769# Sonics Silicon Backplane
770#
771CONFIG_SSB_POSSIBLE=y
772# CONFIG_SSB is not set
773
774#
775# Multifunction device drivers
776#
777# CONFIG_MFD_SM501 is not set
778# CONFIG_HTC_PASIC3 is not set
779
780#
781# Multimedia devices
782#
783
784#
785# Multimedia core support
786#
787# CONFIG_VIDEO_DEV is not set
788# CONFIG_DVB_CORE is not set
789# CONFIG_VIDEO_MEDIA is not set
790
791#
792# Multimedia drivers
793#
794CONFIG_DAB=y
795
796#
797# Graphics support
798#
799# CONFIG_AGP is not set
800# CONFIG_DRM is not set
801# CONFIG_VGASTATE is not set
802CONFIG_VIDEO_OUTPUT_CONTROL=y
803# CONFIG_FB is not set
804# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
805
806#
807# Display device support
808#
809# CONFIG_DISPLAY_SUPPORT is not set
810
811#
812# Sound
813#
814# CONFIG_SOUND is not set
815CONFIG_HID_SUPPORT=y
816CONFIG_HID=y
817# CONFIG_HID_DEBUG is not set
818# CONFIG_HIDRAW is not set
819CONFIG_USB_SUPPORT=y
820CONFIG_USB_ARCH_HAS_HCD=y
821CONFIG_USB_ARCH_HAS_OHCI=y
822CONFIG_USB_ARCH_HAS_EHCI=y
823# CONFIG_USB is not set
824# CONFIG_USB_OTG_WHITELIST is not set
825# CONFIG_USB_OTG_BLACKLIST_HUB is not set
826
827#
828# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
829#
830# CONFIG_USB_GADGET is not set
831# CONFIG_MMC is not set
832# CONFIG_MEMSTICK is not set
833# CONFIG_NEW_LEDS is not set
834# CONFIG_ACCESSIBILITY is not set
835# CONFIG_INFINIBAND is not set
836# CONFIG_EDAC is not set
837# CONFIG_RTC_CLASS is not set
838# CONFIG_DMADEVICES is not set
839# CONFIG_UIO is not set
840
841#
842# File systems
843#
844CONFIG_EXT2_FS=y
845# CONFIG_EXT2_FS_XATTR is not set
846# CONFIG_EXT2_FS_XIP is not set
847CONFIG_EXT3_FS=y
848CONFIG_EXT3_FS_XATTR=y
849# CONFIG_EXT3_FS_POSIX_ACL is not set
850# CONFIG_EXT3_FS_SECURITY is not set
851# CONFIG_EXT4DEV_FS is not set
852CONFIG_JBD=y
853CONFIG_FS_MBCACHE=y
854# CONFIG_REISERFS_FS is not set
855# CONFIG_JFS_FS is not set
856# CONFIG_FS_POSIX_ACL is not set
857# CONFIG_XFS_FS is not set
858# CONFIG_OCFS2_FS is not set
859CONFIG_DNOTIFY=y
860CONFIG_INOTIFY=y
861CONFIG_INOTIFY_USER=y
862# CONFIG_QUOTA is not set
863# CONFIG_AUTOFS_FS is not set
864# CONFIG_AUTOFS4_FS is not set
865# CONFIG_FUSE_FS is not set
866
867#
868# CD-ROM/DVD Filesystems
869#
870# CONFIG_ISO9660_FS is not set
871# CONFIG_UDF_FS is not set
872
873#
874# DOS/FAT/NT Filesystems
875#
876# CONFIG_MSDOS_FS is not set
877# CONFIG_VFAT_FS is not set
878# CONFIG_NTFS_FS is not set
879
880#
881# Pseudo filesystems
882#
883CONFIG_PROC_FS=y
884CONFIG_PROC_KCORE=y
885CONFIG_PROC_SYSCTL=y
886CONFIG_SYSFS=y
887CONFIG_TMPFS=y
888# CONFIG_TMPFS_POSIX_ACL is not set
889# CONFIG_HUGETLB_PAGE is not set
890# CONFIG_CONFIGFS_FS is not set
891
892#
893# Miscellaneous filesystems
894#
895# CONFIG_ADFS_FS is not set
896# CONFIG_AFFS_FS is not set
897# CONFIG_HFS_FS is not set
898# CONFIG_HFSPLUS_FS is not set
899# CONFIG_BEFS_FS is not set
900# CONFIG_BFS_FS is not set
901# CONFIG_EFS_FS is not set
902# CONFIG_JFFS2_FS is not set
903# CONFIG_CRAMFS is not set
904# CONFIG_VXFS_FS is not set
905# CONFIG_MINIX_FS is not set
906# CONFIG_HPFS_FS is not set
907# CONFIG_QNX4FS_FS is not set
908# CONFIG_ROMFS_FS is not set
909# CONFIG_SYSV_FS is not set
910# CONFIG_UFS_FS is not set
911CONFIG_NETWORK_FILESYSTEMS=y
912CONFIG_NFS_FS=y
913# CONFIG_NFS_V3 is not set
914# CONFIG_NFS_V4 is not set
915# CONFIG_NFSD is not set
916CONFIG_ROOT_NFS=y
917CONFIG_LOCKD=y
918CONFIG_NFS_COMMON=y
919CONFIG_SUNRPC=y
920# CONFIG_SUNRPC_BIND34 is not set
921# CONFIG_RPCSEC_GSS_KRB5 is not set
922# CONFIG_RPCSEC_GSS_SPKM3 is not set
923# CONFIG_SMB_FS is not set
924# CONFIG_CIFS is not set
925# CONFIG_NCP_FS is not set
926# CONFIG_CODA_FS is not set
927# CONFIG_AFS_FS is not set
928
929#
930# Partition Types
931#
932CONFIG_PARTITION_ADVANCED=y
933# CONFIG_ACORN_PARTITION is not set
934# CONFIG_OSF_PARTITION is not set
935# CONFIG_AMIGA_PARTITION is not set
936# CONFIG_ATARI_PARTITION is not set
937# CONFIG_MAC_PARTITION is not set
938# CONFIG_MSDOS_PARTITION is not set
939# CONFIG_LDM_PARTITION is not set
940# CONFIG_SGI_PARTITION is not set
941# CONFIG_ULTRIX_PARTITION is not set
942# CONFIG_SUN_PARTITION is not set
943# CONFIG_KARMA_PARTITION is not set
944# CONFIG_EFI_PARTITION is not set
945# CONFIG_SYSV68_PARTITION is not set
946# CONFIG_NLS is not set
947# CONFIG_DLM is not set
948
949#
950# Library routines
951#
952CONFIG_BITREVERSE=y
953# CONFIG_GENERIC_FIND_FIRST_BIT is not set
954# CONFIG_CRC_CCITT is not set
955# CONFIG_CRC16 is not set
956# CONFIG_CRC_ITU_T is not set
957CONFIG_CRC32=y
958# CONFIG_CRC7 is not set
959# CONFIG_LIBCRC32C is not set
960CONFIG_PLIST=y
961CONFIG_HAS_IOMEM=y
962CONFIG_HAS_IOPORT=y
963CONFIG_HAS_DMA=y
964CONFIG_HAVE_LMB=y
965
966#
967# Kernel hacking
968#
969# CONFIG_PRINTK_TIME is not set
970CONFIG_ENABLE_WARN_DEPRECATED=y
971CONFIG_ENABLE_MUST_CHECK=y
972CONFIG_FRAME_WARN=1024
973# CONFIG_MAGIC_SYSRQ is not set
974# CONFIG_UNUSED_SYMBOLS is not set
975# CONFIG_DEBUG_FS is not set
976# CONFIG_HEADERS_CHECK is not set
977CONFIG_DEBUG_KERNEL=y
978# CONFIG_DEBUG_SHIRQ is not set
979CONFIG_DETECT_SOFTLOCKUP=y
980CONFIG_SCHED_DEBUG=y
981# CONFIG_SCHEDSTATS is not set
982# CONFIG_TIMER_STATS is not set
983# CONFIG_DEBUG_OBJECTS is not set
984# CONFIG_SLUB_DEBUG_ON is not set
985# CONFIG_SLUB_STATS is not set
986# CONFIG_DEBUG_RT_MUTEXES is not set
987# CONFIG_RT_MUTEX_TESTER is not set
988# CONFIG_DEBUG_SPINLOCK is not set
989CONFIG_DEBUG_MUTEXES=y
990# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
991# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
992# CONFIG_DEBUG_KOBJECT is not set
993# CONFIG_DEBUG_BUGVERBOSE is not set
994# CONFIG_DEBUG_INFO is not set
995# CONFIG_DEBUG_VM is not set
996# CONFIG_DEBUG_WRITECOUNT is not set
997# CONFIG_DEBUG_LIST is not set
998# CONFIG_DEBUG_SG is not set
999# CONFIG_BOOT_PRINTK_DELAY is not set
1000# CONFIG_RCU_TORTURE_TEST is not set
1001# CONFIG_BACKTRACE_SELF_TEST is not set
1002# CONFIG_FAULT_INJECTION is not set
1003# CONFIG_SAMPLES is not set
1004# CONFIG_DEBUG_STACKOVERFLOW is not set
1005# CONFIG_DEBUG_STACK_USAGE is not set
1006# CONFIG_DEBUG_PAGEALLOC is not set
1007# CONFIG_DEBUGGER is not set
1008# CONFIG_IRQSTACKS is not set
1009# CONFIG_BDI_SWITCH is not set
1010# CONFIG_PPC_EARLY_DEBUG is not set
1011
1012#
1013# Security options
1014#
1015# CONFIG_KEYS is not set
1016# CONFIG_SECURITY is not set
1017# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1018CONFIG_CRYPTO=y
1019
1020#
1021# Crypto core or helper
1022#
1023# CONFIG_CRYPTO_MANAGER is not set
1024# CONFIG_CRYPTO_GF128MUL is not set
1025# CONFIG_CRYPTO_NULL is not set
1026# CONFIG_CRYPTO_CRYPTD is not set
1027# CONFIG_CRYPTO_AUTHENC is not set
1028# CONFIG_CRYPTO_TEST is not set
1029
1030#
1031# Authenticated Encryption with Associated Data
1032#
1033# CONFIG_CRYPTO_CCM is not set
1034# CONFIG_CRYPTO_GCM is not set
1035# CONFIG_CRYPTO_SEQIV is not set
1036
1037#
1038# Block modes
1039#
1040# CONFIG_CRYPTO_CBC is not set
1041# CONFIG_CRYPTO_CTR is not set
1042# CONFIG_CRYPTO_CTS is not set
1043# CONFIG_CRYPTO_ECB is not set
1044# CONFIG_CRYPTO_LRW is not set
1045# CONFIG_CRYPTO_PCBC is not set
1046# CONFIG_CRYPTO_XTS is not set
1047
1048#
1049# Hash modes
1050#
1051# CONFIG_CRYPTO_HMAC is not set
1052# CONFIG_CRYPTO_XCBC is not set
1053
1054#
1055# Digest
1056#
1057# CONFIG_CRYPTO_CRC32C is not set
1058# CONFIG_CRYPTO_MD4 is not set
1059# CONFIG_CRYPTO_MD5 is not set
1060# CONFIG_CRYPTO_MICHAEL_MIC is not set
1061# CONFIG_CRYPTO_SHA1 is not set
1062# CONFIG_CRYPTO_SHA256 is not set
1063# CONFIG_CRYPTO_SHA512 is not set
1064# CONFIG_CRYPTO_TGR192 is not set
1065# CONFIG_CRYPTO_WP512 is not set
1066
1067#
1068# Ciphers
1069#
1070# CONFIG_CRYPTO_AES is not set
1071# CONFIG_CRYPTO_ANUBIS is not set
1072# CONFIG_CRYPTO_ARC4 is not set
1073# CONFIG_CRYPTO_BLOWFISH is not set
1074# CONFIG_CRYPTO_CAMELLIA is not set
1075# CONFIG_CRYPTO_CAST5 is not set
1076# CONFIG_CRYPTO_CAST6 is not set
1077# CONFIG_CRYPTO_DES is not set
1078# CONFIG_CRYPTO_FCRYPT is not set
1079# CONFIG_CRYPTO_KHAZAD is not set
1080# CONFIG_CRYPTO_SALSA20 is not set
1081# CONFIG_CRYPTO_SEED is not set
1082# CONFIG_CRYPTO_SERPENT is not set
1083# CONFIG_CRYPTO_TEA is not set
1084# CONFIG_CRYPTO_TWOFISH is not set
1085
1086#
1087# Compression
1088#
1089# CONFIG_CRYPTO_DEFLATE is not set
1090# CONFIG_CRYPTO_LZO is not set
1091CONFIG_CRYPTO_HW=y
1092# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1093# CONFIG_PPC_CLOCK is not set
1094# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 2346d271fbfd..0e8f928fef70 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -38,6 +38,7 @@ obj-$(CONFIG_IBMVIO) += vio.o
38obj-$(CONFIG_IBMEBUS) += ibmebus.o 38obj-$(CONFIG_IBMEBUS) += ibmebus.o
39obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o 39obj-$(CONFIG_GENERIC_TBSYNC) += smp-tbsync.o
40obj-$(CONFIG_CRASH_DUMP) += crash_dump.o 40obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
41obj-$(CONFIG_E500) += idle_e500.o
41obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o 42obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o
42obj-$(CONFIG_TAU) += tau_6xx.o 43obj-$(CONFIG_TAU) += tau_6xx.o
43obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o \ 44obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o \
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 31283cdab61c..f247fc6ad12d 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -1493,7 +1493,6 @@ static struct cpu_spec __initdata cpu_specs[] = {
1493 .pvr_mask = 0xffff0000, 1493 .pvr_mask = 0xffff0000,
1494 .pvr_value = 0x80200000, 1494 .pvr_value = 0x80200000,
1495 .cpu_name = "e500", 1495 .cpu_name = "e500",
1496 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1497 .cpu_features = CPU_FTRS_E500, 1496 .cpu_features = CPU_FTRS_E500,
1498 .cpu_user_features = COMMON_USER_BOOKE | 1497 .cpu_user_features = COMMON_USER_BOOKE |
1499 PPC_FEATURE_HAS_SPE_COMP | 1498 PPC_FEATURE_HAS_SPE_COMP |
@@ -1510,7 +1509,6 @@ static struct cpu_spec __initdata cpu_specs[] = {
1510 .pvr_mask = 0xffff0000, 1509 .pvr_mask = 0xffff0000,
1511 .pvr_value = 0x80210000, 1510 .pvr_value = 0x80210000,
1512 .cpu_name = "e500v2", 1511 .cpu_name = "e500v2",
1513 /* xxx - galak: add CPU_FTR_MAYBE_CAN_DOZE */
1514 .cpu_features = CPU_FTRS_E500_2, 1512 .cpu_features = CPU_FTRS_E500_2,
1515 .cpu_user_features = COMMON_USER_BOOKE | 1513 .cpu_user_features = COMMON_USER_BOOKE |
1516 PPC_FEATURE_HAS_SPE_COMP | 1514 PPC_FEATURE_HAS_SPE_COMP |
@@ -1524,6 +1522,20 @@ static struct cpu_spec __initdata cpu_specs[] = {
1524 .machine_check = machine_check_e500, 1522 .machine_check = machine_check_e500,
1525 .platform = "ppc8548", 1523 .platform = "ppc8548",
1526 }, 1524 },
1525 { /* e500mc */
1526 .pvr_mask = 0xffff0000,
1527 .pvr_value = 0x80230000,
1528 .cpu_name = "e500mc",
1529 .cpu_features = CPU_FTRS_E500MC,
1530 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
1531 .icache_bsize = 64,
1532 .dcache_bsize = 64,
1533 .num_pmcs = 4,
1534 .oprofile_cpu_type = "ppc/e500", /* xxx - galak, e500mc? */
1535 .oprofile_type = PPC_OPROFILE_FSL_EMB,
1536 .machine_check = machine_check_e500,
1537 .platform = "ppce500mc",
1538 },
1527 { /* default match */ 1539 { /* default match */
1528 .pvr_mask = 0x00000000, 1540 .pvr_mask = 0x00000000,
1529 .pvr_value = 0x00000000, 1541 .pvr_value = 0x00000000,
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index fe21674d4f06..ab2d62f70b14 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -176,14 +176,14 @@ transfer_to_handler:
176 cmplw r1,r9 /* if r1 <= ksp_limit */ 176 cmplw r1,r9 /* if r1 <= ksp_limit */
177 ble- stack_ovf /* then the kernel stack overflowed */ 177 ble- stack_ovf /* then the kernel stack overflowed */
1785: 1785:
179#ifdef CONFIG_6xx 179#if defined(CONFIG_6xx) || defined(CONFIG_E500)
180 rlwinm r9,r1,0,0,31-THREAD_SHIFT 180 rlwinm r9,r1,0,0,31-THREAD_SHIFT
181 tophys(r9,r9) /* check local flags */ 181 tophys(r9,r9) /* check local flags */
182 lwz r12,TI_LOCAL_FLAGS(r9) 182 lwz r12,TI_LOCAL_FLAGS(r9)
183 mtcrf 0x01,r12 183 mtcrf 0x01,r12
184 bt- 31-TLF_NAPPING,4f 184 bt- 31-TLF_NAPPING,4f
185 bt- 31-TLF_SLEEPING,7f 185 bt- 31-TLF_SLEEPING,7f
186#endif /* CONFIG_6xx */ 186#endif /* CONFIG_6xx || CONFIG_E500 */
187 .globl transfer_to_handler_cont 187 .globl transfer_to_handler_cont
188transfer_to_handler_cont: 188transfer_to_handler_cont:
1893: 1893:
@@ -196,10 +196,10 @@ transfer_to_handler_cont:
196 SYNC 196 SYNC
197 RFI /* jump to handler, enable MMU */ 197 RFI /* jump to handler, enable MMU */
198 198
199#ifdef CONFIG_6xx 199#if defined (CONFIG_6xx) || defined(CONFIG_E500)
2004: rlwinm r12,r12,0,~_TLF_NAPPING 2004: rlwinm r12,r12,0,~_TLF_NAPPING
201 stw r12,TI_LOCAL_FLAGS(r9) 201 stw r12,TI_LOCAL_FLAGS(r9)
202 b power_save_6xx_restore 202 b power_save_ppc32_restore
203 203
2047: rlwinm r12,r12,0,~_TLF_SLEEPING 2047: rlwinm r12,r12,0,~_TLF_SLEEPING
205 stw r12,TI_LOCAL_FLAGS(r9) 205 stw r12,TI_LOCAL_FLAGS(r9)
diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h
index f277fade1932..505494f1ee7c 100644
--- a/arch/powerpc/kernel/head_booke.h
+++ b/arch/powerpc/kernel/head_booke.h
@@ -68,9 +68,13 @@
68#define MCHECK_STACK_BASE mcheckirq_ctx 68#define MCHECK_STACK_BASE mcheckirq_ctx
69#define CRIT_STACK_BASE critirq_ctx 69#define CRIT_STACK_BASE critirq_ctx
70 70
71/* only on e200 for now */ 71/* only on e500mc/e200 */
72#define DEBUG_STACK_BASE dbgirq_ctx 72#define DEBUG_STACK_BASE dbgirq_ctx
73#ifdef CONFIG_PPC_E500MC
74#define DEBUG_SPRG SPRN_SPRG9
75#else
73#define DEBUG_SPRG SPRN_SPRG6W 76#define DEBUG_SPRG SPRN_SPRG6W
77#endif
74 78
75#define EXC_LVL_FRAME_OVERHEAD (THREAD_SIZE - INT_FRAME_SIZE - EXC_LVL_SIZE) 79#define EXC_LVL_FRAME_OVERHEAD (THREAD_SIZE - INT_FRAME_SIZE - EXC_LVL_SIZE)
76 80
@@ -240,7 +244,7 @@ label:
240 * the code where the exception occurred (since exception entry \ 244 * the code where the exception occurred (since exception entry \
241 * doesn't turn off DE automatically). We simulate the effect \ 245 * doesn't turn off DE automatically). We simulate the effect \
242 * of turning off DE on entry to an exception handler by turning \ 246 * of turning off DE on entry to an exception handler by turning \
243 * off DE in the CSRR1 value and clearing the debug status. \ 247 * off DE in the DSRR1 value and clearing the debug status. \
244 */ \ 248 */ \
245 mfspr r10,SPRN_DBSR; /* check single-step/branch taken */ \ 249 mfspr r10,SPRN_DBSR; /* check single-step/branch taken */ \
246 andis. r10,r10,DBSR_IC@h; \ 250 andis. r10,r10,DBSR_IC@h; \
@@ -278,7 +282,7 @@ label:
278 RFDI; \ 282 RFDI; \
279 b .; \ 283 b .; \
280 \ 284 \
281 /* continue normal handling for a critical exception... */ \ 285 /* continue normal handling for a debug exception... */ \
2822: mfspr r4,SPRN_DBSR; \ 2862: mfspr r4,SPRN_DBSR; \
283 addi r3,r1,STACK_FRAME_OVERHEAD; \ 287 addi r3,r1,STACK_FRAME_OVERHEAD; \
284 EXC_XFER_TEMPLATE(DebugException, 0x2008, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc) 288 EXC_XFER_TEMPLATE(DebugException, 0x2008, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), NOCOPY, debug_transfer_to_handler, ret_from_debug_exc)
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 503f86030b6e..c4268500e856 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -39,6 +39,7 @@
39#include <asm/thread_info.h> 39#include <asm/thread_info.h>
40#include <asm/ppc_asm.h> 40#include <asm/ppc_asm.h>
41#include <asm/asm-offsets.h> 41#include <asm/asm-offsets.h>
42#include <asm/cache.h>
42#include "head_booke.h" 43#include "head_booke.h"
43 44
44/* As with the other PowerPC ports, it is expected that when code 45/* As with the other PowerPC ports, it is expected that when code
@@ -304,7 +305,7 @@ skpinv: addi r6,r6,1 /* Increment */
304 SET_IVOR(13, DataTLBError); 305 SET_IVOR(13, DataTLBError);
305 SET_IVOR(14, InstructionTLBError); 306 SET_IVOR(14, InstructionTLBError);
306 SET_IVOR(15, DebugDebug); 307 SET_IVOR(15, DebugDebug);
307#if defined(CONFIG_E500) 308#if defined(CONFIG_E500) && !defined(CONFIG_PPC_E500MC)
308 SET_IVOR(15, DebugCrit); 309 SET_IVOR(15, DebugCrit);
309#endif 310#endif
310 SET_IVOR(32, SPEUnavailable); 311 SET_IVOR(32, SPEUnavailable);
@@ -313,6 +314,9 @@ skpinv: addi r6,r6,1 /* Increment */
313#ifndef CONFIG_E200 314#ifndef CONFIG_E200
314 SET_IVOR(35, PerformanceMonitor); 315 SET_IVOR(35, PerformanceMonitor);
315#endif 316#endif
317#ifdef CONFIG_PPC_E500MC
318 SET_IVOR(36, Doorbell);
319#endif
316 320
317 /* Establish the interrupt vector base */ 321 /* Establish the interrupt vector base */
318 lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */ 322 lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */
@@ -750,10 +754,13 @@ interrupt_base:
750 /* Performance Monitor */ 754 /* Performance Monitor */
751 EXCEPTION(0x2060, PerformanceMonitor, performance_monitor_exception, EXC_XFER_STD) 755 EXCEPTION(0x2060, PerformanceMonitor, performance_monitor_exception, EXC_XFER_STD)
752 756
757#ifdef CONFIG_PPC_E500MC
758 EXCEPTION(0x2070, Doorbell, unknown_exception, EXC_XFER_EE)
759#endif
753 760
754 /* Debug Interrupt */ 761 /* Debug Interrupt */
755 DEBUG_DEBUG_EXCEPTION 762 DEBUG_DEBUG_EXCEPTION
756#if defined(CONFIG_E500) 763#if defined(CONFIG_E500) && !defined(CONFIG_PPC_E500MC)
757 DEBUG_CRIT_EXCEPTION 764 DEBUG_CRIT_EXCEPTION
758#endif 765#endif
759 766
@@ -1065,6 +1072,52 @@ _GLOBAL(set_context)
1065 isync /* Force context change */ 1072 isync /* Force context change */
1066 blr 1073 blr
1067 1074
1075_GLOBAL(flush_dcache_L1)
1076 mfspr r3,SPRN_L1CFG0
1077
1078 rlwinm r5,r3,9,3 /* Extract cache block size */
1079 twlgti r5,1 /* Only 32 and 64 byte cache blocks
1080 * are currently defined.
1081 */
1082 li r4,32
1083 subfic r6,r5,2 /* r6 = log2(1KiB / cache block size) -
1084 * log2(number of ways)
1085 */
1086 slw r5,r4,r5 /* r5 = cache block size */
1087
1088 rlwinm r7,r3,0,0xff /* Extract number of KiB in the cache */
1089 mulli r7,r7,13 /* An 8-way cache will require 13
1090 * loads per set.
1091 */
1092 slw r7,r7,r6
1093
1094 /* save off HID0 and set DCFA */
1095 mfspr r8,SPRN_HID0
1096 ori r9,r8,HID0_DCFA@l
1097 mtspr SPRN_HID0,r9
1098 isync
1099
1100 lis r4,KERNELBASE@h
1101 mtctr r7
1102
11031: lwz r3,0(r4) /* Load... */
1104 add r4,r4,r5
1105 bdnz 1b
1106
1107 msync
1108 lis r4,KERNELBASE@h
1109 mtctr r7
1110
11111: dcbf 0,r4 /* ...and flush. */
1112 add r4,r4,r5
1113 bdnz 1b
1114
1115 /* restore HID0 */
1116 mtspr SPRN_HID0,r8
1117 isync
1118
1119 blr
1120
1068/* 1121/*
1069 * We put a few things here that have to be page-aligned. This stuff 1122 * We put a few things here that have to be page-aligned. This stuff
1070 * goes at the beginning of the data segment, which is page-aligned. 1123 * goes at the beginning of the data segment, which is page-aligned.
diff --git a/arch/powerpc/kernel/idle_6xx.S b/arch/powerpc/kernel/idle_6xx.S
index 01bcd52bbf8e..019b02d8844f 100644
--- a/arch/powerpc/kernel/idle_6xx.S
+++ b/arch/powerpc/kernel/idle_6xx.S
@@ -153,7 +153,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
153 * address of current. R11 points to the exception frame (physical 153 * address of current. R11 points to the exception frame (physical
154 * address). We have to preserve r10. 154 * address). We have to preserve r10.
155 */ 155 */
156_GLOBAL(power_save_6xx_restore) 156_GLOBAL(power_save_ppc32_restore)
157 lwz r9,_LINK(r11) /* interrupted in ppc6xx_idle: */ 157 lwz r9,_LINK(r11) /* interrupted in ppc6xx_idle: */
158 stw r9,_NIP(r11) /* make it do a blr */ 158 stw r9,_NIP(r11) /* make it do a blr */
159 159
diff --git a/arch/powerpc/kernel/idle_e500.S b/arch/powerpc/kernel/idle_e500.S
new file mode 100644
index 000000000000..06304034b393
--- /dev/null
+++ b/arch/powerpc/kernel/idle_e500.S
@@ -0,0 +1,93 @@
1/*
2 * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
3 * Dave Liu <daveliu@freescale.com>
4 * copy from idle_6xx.S and modify for e500 based processor,
5 * implement the power_save function in idle.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
11 */
12
13#include <linux/threads.h>
14#include <asm/reg.h>
15#include <asm/page.h>
16#include <asm/cputable.h>
17#include <asm/thread_info.h>
18#include <asm/ppc_asm.h>
19#include <asm/asm-offsets.h>
20
21 .text
22
23_GLOBAL(e500_idle)
24 rlwinm r3,r1,0,0,31-THREAD_SHIFT /* current thread_info */
25 lwz r4,TI_LOCAL_FLAGS(r3) /* set napping bit */
26 ori r4,r4,_TLF_NAPPING /* so when we take an exception */
27 stw r4,TI_LOCAL_FLAGS(r3) /* it will return to our caller */
28
29 /* Check if we can nap or doze, put HID0 mask in r3 */
30 lis r3,0
31BEGIN_FTR_SECTION
32 lis r3,HID0_DOZE@h
33END_FTR_SECTION_IFSET(CPU_FTR_CAN_DOZE)
34
35BEGIN_FTR_SECTION
36 /* Now check if user enabled NAP mode */
37 lis r4,powersave_nap@ha
38 lwz r4,powersave_nap@l(r4)
39 cmpwi 0,r4,0
40 beq 1f
41 stwu r1,-16(r1)
42 mflr r0
43 stw r0,20(r1)
44 bl flush_dcache_L1
45 lwz r0,20(r1)
46 addi r1,r1,16
47 mtlr r0
48 lis r3,HID0_NAP@h
49END_FTR_SECTION_IFSET(CPU_FTR_CAN_NAP)
50BEGIN_FTR_SECTION
51 msync
52 li r7,L2CSR0_L2FL@l
53 mtspr SPRN_L2CSR0,r7
542:
55 mfspr r7,SPRN_L2CSR0
56 andi. r4,r7,L2CSR0_L2FL@l
57 bne 2b
58END_FTR_SECTION_IFSET(CPU_FTR_L2CSR|CPU_FTR_CAN_NAP)
591:
60 /* Go to NAP or DOZE now */
61 mfspr r4,SPRN_HID0
62 rlwinm r4,r4,0,~(HID0_DOZE|HID0_NAP|HID0_SLEEP)
63 or r4,r4,r3
64 isync
65 mtspr SPRN_HID0,r4
66 isync
67
68 mfmsr r7
69 oris r7,r7,MSR_WE@h
70 ori r7,r7,MSR_EE
71 msync
72 mtmsr r7
73 isync
742: b 2b
75
76/*
77 * Return from NAP/DOZE mode, restore some CPU specific registers,
78 * r2 containing physical address of current.
79 * r11 points to the exception frame (physical address).
80 * We have to preserve r10.
81 */
82_GLOBAL(power_save_ppc32_restore)
83 lwz r9,_LINK(r11) /* interrupted in e500_idle */
84 stw r9,_NIP(r11) /* make it do a blr */
85
86#ifdef CONFIG_SMP
87 mfspr r12,SPRN_SPRG3
88 lwz r11,TI_CPU(r12) /* get cpu number * 4 */
89 slwi r11,r11,2
90#else
91 li r11,0
92#endif
93 b transfer_to_handler_cont
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c
index 23545a2f51f3..4ba2af125450 100644
--- a/arch/powerpc/kernel/kprobes.c
+++ b/arch/powerpc/kernel/kprobes.c
@@ -34,6 +34,13 @@
34#include <asm/cacheflush.h> 34#include <asm/cacheflush.h>
35#include <asm/sstep.h> 35#include <asm/sstep.h>
36#include <asm/uaccess.h> 36#include <asm/uaccess.h>
37#include <asm/system.h>
38
39#ifdef CONFIG_BOOKE
40#define MSR_SINGLESTEP (MSR_DE)
41#else
42#define MSR_SINGLESTEP (MSR_SE)
43#endif
37 44
38DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; 45DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL;
39DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); 46DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
@@ -53,7 +60,8 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
53 ret = -EINVAL; 60 ret = -EINVAL;
54 } 61 }
55 62
56 /* insn must be on a special executable page on ppc64 */ 63 /* insn must be on a special executable page on ppc64. This is
64 * not explicitly required on ppc32 (right now), but it doesn't hurt */
57 if (!ret) { 65 if (!ret) {
58 p->ainsn.insn = get_insn_slot(); 66 p->ainsn.insn = get_insn_slot();
59 if (!p->ainsn.insn) 67 if (!p->ainsn.insn)
@@ -95,7 +103,16 @@ void __kprobes arch_remove_kprobe(struct kprobe *p)
95 103
96static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) 104static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
97{ 105{
98 regs->msr |= MSR_SE; 106 /* We turn off async exceptions to ensure that the single step will
107 * be for the instruction we have the kprobe on, if we dont its
108 * possible we'd get the single step reported for an exception handler
109 * like Decrementer or External Interrupt */
110 regs->msr &= ~MSR_EE;
111 regs->msr |= MSR_SINGLESTEP;
112#ifdef CONFIG_BOOKE
113 regs->msr &= ~MSR_CE;
114 mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM);
115#endif
99 116
100 /* 117 /*
101 * On powerpc we should single step on the original 118 * On powerpc we should single step on the original
@@ -158,7 +175,8 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
158 kprobe_opcode_t insn = *p->ainsn.insn; 175 kprobe_opcode_t insn = *p->ainsn.insn;
159 if (kcb->kprobe_status == KPROBE_HIT_SS && 176 if (kcb->kprobe_status == KPROBE_HIT_SS &&
160 is_trap(insn)) { 177 is_trap(insn)) {
161 regs->msr &= ~MSR_SE; 178 /* Turn off 'trace' bits */
179 regs->msr &= ~MSR_SINGLESTEP;
162 regs->msr |= kcb->kprobe_saved_msr; 180 regs->msr |= kcb->kprobe_saved_msr;
163 goto no_kprobe; 181 goto no_kprobe;
164 } 182 }
@@ -376,6 +394,10 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs)
376 if (!cur) 394 if (!cur)
377 return 0; 395 return 0;
378 396
397 /* make sure we got here for instruction we have a kprobe on */
398 if (((unsigned long)cur->ainsn.insn + 4) != regs->nip)
399 return 0;
400
379 if ((kcb->kprobe_status != KPROBE_REENTER) && cur->post_handler) { 401 if ((kcb->kprobe_status != KPROBE_REENTER) && cur->post_handler) {
380 kcb->kprobe_status = KPROBE_HIT_SSDONE; 402 kcb->kprobe_status = KPROBE_HIT_SSDONE;
381 cur->post_handler(cur, regs, 0); 403 cur->post_handler(cur, regs, 0);
@@ -395,10 +417,10 @@ out:
395 417
396 /* 418 /*
397 * if somebody else is singlestepping across a probe point, msr 419 * if somebody else is singlestepping across a probe point, msr
398 * will have SE set, in which case, continue the remaining processing 420 * will have DE/SE set, in which case, continue the remaining processing
399 * of do_debug, as if this is not a probe hit. 421 * of do_debug, as if this is not a probe hit.
400 */ 422 */
401 if (regs->msr & MSR_SE) 423 if (regs->msr & MSR_SINGLESTEP)
402 return 0; 424 return 0;
403 425
404 return 1; 426 return 1;
@@ -421,7 +443,7 @@ int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
421 * normal page fault. 443 * normal page fault.
422 */ 444 */
423 regs->nip = (unsigned long)cur->addr; 445 regs->nip = (unsigned long)cur->addr;
424 regs->msr &= ~MSR_SE; 446 regs->msr &= ~MSR_SINGLESTEP; /* Turn off 'trace' bits */
425 regs->msr |= kcb->kprobe_saved_msr; 447 regs->msr |= kcb->kprobe_saved_msr;
426 if (kcb->kprobe_status == KPROBE_REENTER) 448 if (kcb->kprobe_status == KPROBE_REENTER)
427 restore_previous_kprobe(kcb); 449 restore_previous_kprobe(kcb);
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 89aaaa6f3561..6321ae36f729 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -489,7 +489,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_UNIFIED_ID_CACHE)
489 * 489 *
490 * flush_icache_range(unsigned long start, unsigned long stop) 490 * flush_icache_range(unsigned long start, unsigned long stop)
491 */ 491 */
492_GLOBAL(__flush_icache_range) 492_KPROBE(__flush_icache_range)
493BEGIN_FTR_SECTION 493BEGIN_FTR_SECTION
494 blr /* for 601, do nothing */ 494 blr /* for 601, do nothing */
495END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE) 495END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c
index bef0be3fd98b..9e83add54290 100644
--- a/arch/powerpc/kernel/setup_32.c
+++ b/arch/powerpc/kernel/setup_32.c
@@ -127,6 +127,11 @@ void __init machine_init(unsigned long dt_ptr, unsigned long phys)
127 ppc_md.power_save = ppc6xx_idle; 127 ppc_md.power_save = ppc6xx_idle;
128#endif 128#endif
129 129
130#ifdef CONFIG_E500
131 if (cpu_has_feature(CPU_FTR_CAN_DOZE) ||
132 cpu_has_feature(CPU_FTR_CAN_NAP))
133 ppc_md.power_save = e500_idle;
134#endif
130 if (ppc_md.progress) 135 if (ppc_md.progress)
131 ppc_md.progress("id mach(): done", 0x200); 136 ppc_md.progress("id mach(): done", 0x200);
132} 137}
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 4b5b7ff4f78b..b463d48145a4 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -1030,21 +1030,29 @@ void SoftwareEmulation(struct pt_regs *regs)
1030 1030
1031#if defined(CONFIG_40x) || defined(CONFIG_BOOKE) 1031#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
1032 1032
1033void DebugException(struct pt_regs *regs, unsigned long debug_status) 1033void __kprobes DebugException(struct pt_regs *regs, unsigned long debug_status)
1034{ 1034{
1035 if (debug_status & DBSR_IC) { /* instruction completion */ 1035 if (debug_status & DBSR_IC) { /* instruction completion */
1036 regs->msr &= ~MSR_DE; 1036 regs->msr &= ~MSR_DE;
1037
1038 /* Disable instruction completion */
1039 mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) & ~DBCR0_IC);
1040 /* Clear the instruction completion event */
1041 mtspr(SPRN_DBSR, DBSR_IC);
1042
1043 if (notify_die(DIE_SSTEP, "single_step", regs, 5,
1044 5, SIGTRAP) == NOTIFY_STOP) {
1045 return;
1046 }
1047
1048 if (debugger_sstep(regs))
1049 return;
1050
1037 if (user_mode(regs)) { 1051 if (user_mode(regs)) {
1038 current->thread.dbcr0 &= ~DBCR0_IC; 1052 current->thread.dbcr0 &= ~DBCR0_IC;
1039 } else {
1040 /* Disable instruction completion */
1041 mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) & ~DBCR0_IC);
1042 /* Clear the instruction completion event */
1043 mtspr(SPRN_DBSR, DBSR_IC);
1044 if (debugger_sstep(regs))
1045 return;
1046 } 1053 }
1047 _exception(SIGTRAP, regs, TRAP_TRACE, 0); 1054
1055 _exception(SIGTRAP, regs, TRAP_TRACE, regs->nip);
1048 } 1056 }
1049} 1057}
1050#endif /* CONFIG_4xx || CONFIG_BOOKE */ 1058#endif /* CONFIG_4xx || CONFIG_BOOKE */
diff --git a/arch/powerpc/platforms/83xx/Kconfig b/arch/powerpc/platforms/83xx/Kconfig
index 583b0c7409c9..fe75b2ac3c9f 100644
--- a/arch/powerpc/platforms/83xx/Kconfig
+++ b/arch/powerpc/platforms/83xx/Kconfig
@@ -58,6 +58,17 @@ config MPC836x_MDS
58 help 58 help
59 This option enables support for the MPC836x MDS Processor Board. 59 This option enables support for the MPC836x MDS Processor Board.
60 60
61config MPC836x_RDK
62 bool "Freescale/Logic MPC836x RDK"
63 select DEFAULT_UIMAGE
64 select QUICC_ENGINE
65 select QE_GPIO
66 select FSL_GTM
67 select FSL_LBC
68 help
69 This option enables support for the MPC836x RDK Processor Board,
70 also known as ZOOM PowerQUICC Kit.
71
61config MPC837x_MDS 72config MPC837x_MDS
62 bool "Freescale MPC837x MDS" 73 bool "Freescale MPC837x MDS"
63 select DEFAULT_UIMAGE 74 select DEFAULT_UIMAGE
diff --git a/arch/powerpc/platforms/83xx/Makefile b/arch/powerpc/platforms/83xx/Makefile
index 76494bed69ae..f331fd7dd836 100644
--- a/arch/powerpc/platforms/83xx/Makefile
+++ b/arch/powerpc/platforms/83xx/Makefile
@@ -8,6 +8,7 @@ obj-$(CONFIG_MPC832x_RDB) += mpc832x_rdb.o
8obj-$(CONFIG_MPC834x_MDS) += mpc834x_mds.o 8obj-$(CONFIG_MPC834x_MDS) += mpc834x_mds.o
9obj-$(CONFIG_MPC834x_ITX) += mpc834x_itx.o 9obj-$(CONFIG_MPC834x_ITX) += mpc834x_itx.o
10obj-$(CONFIG_MPC836x_MDS) += mpc836x_mds.o 10obj-$(CONFIG_MPC836x_MDS) += mpc836x_mds.o
11obj-$(CONFIG_MPC836x_RDK) += mpc836x_rdk.o
11obj-$(CONFIG_MPC832x_MDS) += mpc832x_mds.o 12obj-$(CONFIG_MPC832x_MDS) += mpc832x_mds.o
12obj-$(CONFIG_MPC837x_MDS) += mpc837x_mds.o 13obj-$(CONFIG_MPC837x_MDS) += mpc837x_mds.o
13obj-$(CONFIG_SBC834x) += sbc834x.o 14obj-$(CONFIG_SBC834x) += sbc834x.o
diff --git a/arch/powerpc/platforms/83xx/mpc836x_rdk.c b/arch/powerpc/platforms/83xx/mpc836x_rdk.c
new file mode 100644
index 000000000000..c10dec4bf178
--- /dev/null
+++ b/arch/powerpc/platforms/83xx/mpc836x_rdk.c
@@ -0,0 +1,102 @@
1/*
2 * MPC8360E-RDK board file.
3 *
4 * Copyright (c) 2006 Freescale Semicondutor, Inc.
5 * Copyright (c) 2007-2008 MontaVista Software, Inc.
6 *
7 * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 */
14
15#include <linux/kernel.h>
16#include <linux/pci.h>
17#include <linux/of_platform.h>
18#include <linux/io.h>
19#include <asm/prom.h>
20#include <asm/time.h>
21#include <asm/ipic.h>
22#include <asm/udbg.h>
23#include <asm/qe.h>
24#include <asm/qe_ic.h>
25#include <sysdev/fsl_soc.h>
26
27#include "mpc83xx.h"
28
29static struct of_device_id __initdata mpc836x_rdk_ids[] = {
30 { .compatible = "simple-bus", },
31 {},
32};
33
34static int __init mpc836x_rdk_declare_of_platform_devices(void)
35{
36 return of_platform_bus_probe(NULL, mpc836x_rdk_ids, NULL);
37}
38machine_device_initcall(mpc836x_rdk, mpc836x_rdk_declare_of_platform_devices);
39
40static void __init mpc836x_rdk_setup_arch(void)
41{
42#ifdef CONFIG_PCI
43 struct device_node *np;
44#endif
45
46 if (ppc_md.progress)
47 ppc_md.progress("mpc836x_rdk_setup_arch()", 0);
48
49#ifdef CONFIG_PCI
50 for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
51 mpc83xx_add_bridge(np);
52#endif
53
54 qe_reset();
55}
56
57static void __init mpc836x_rdk_init_IRQ(void)
58{
59 struct device_node *np;
60
61 np = of_find_compatible_node(NULL, NULL, "fsl,ipic");
62 if (!np)
63 return;
64
65 ipic_init(np, 0);
66
67 /*
68 * Initialize the default interrupt mapping priorities,
69 * in case the boot rom changed something on us.
70 */
71 ipic_set_default_priority();
72 of_node_put(np);
73
74 np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic");
75 if (!np)
76 return;
77
78 qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic);
79 of_node_put(np);
80}
81
82/*
83 * Called very early, MMU is off, device-tree isn't unflattened.
84 */
85static int __init mpc836x_rdk_probe(void)
86{
87 unsigned long root = of_get_flat_dt_root();
88
89 return of_flat_dt_is_compatible(root, "fsl,mpc8360rdk");
90}
91
92define_machine(mpc836x_rdk) {
93 .name = "MPC836x RDK",
94 .probe = mpc836x_rdk_probe,
95 .setup_arch = mpc836x_rdk_setup_arch,
96 .init_IRQ = mpc836x_rdk_init_IRQ,
97 .get_irq = ipic_get_irq,
98 .restart = mpc83xx_restart,
99 .time_init = mpc83xx_time_init,
100 .calibrate_decr = generic_calibrate_decr,
101 .progress = udbg_progress,
102};
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index 7ff29d53dc2d..91d67ee8e6db 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -74,6 +74,14 @@ config TQM8541
74 select TQM85xx 74 select TQM85xx
75 select CPM2 75 select CPM2
76 76
77config TQM8548
78 bool "TQ Components TQM8548"
79 help
80 This option enables support for the TQ Components TQM8548 board.
81 select DEFAULT_UIMAGE
82 select PPC_CPM_NEW_BINDING
83 select TQM85xx
84
77config TQM8555 85config TQM8555
78 bool "TQ Components TQM8555" 86 bool "TQ Components TQM8555"
79 help 87 help
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
index 3582c841844b..ba498d6f2d02 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
@@ -119,6 +119,8 @@ static const struct cpm_pin mpc8560_ads_pins[] = {
119 {3, 31, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 119 {3, 31, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
120 120
121 /* SCC2 */ 121 /* SCC2 */
122 {2, 12, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
123 {2, 13, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
122 {3, 26, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 124 {3, 26, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
123 {3, 27, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 125 {3, 27, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
124 {3, 28, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 126 {3, 28, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
@@ -145,7 +147,6 @@ static const struct cpm_pin mpc8560_ads_pins[] = {
145 {1, 4, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 147 {1, 4, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
146 {1, 5, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 148 {1, 5, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
147 {1, 6, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 149 {1, 6, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
148 {1, 7, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
149 {1, 8, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 150 {1, 8, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
150 {1, 9, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 151 {1, 9, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
151 {1, 10, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 152 {1, 10, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
@@ -156,8 +157,9 @@ static const struct cpm_pin mpc8560_ads_pins[] = {
156 {1, 15, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY}, 157 {1, 15, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
157 {1, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 158 {1, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
158 {1, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, 159 {1, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
159 {2, 16, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, /* CLK16 */ 160 {2, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* CLK16 */
160 {2, 17, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, /* CLK15 */ 161 {2, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY}, /* CLK15 */
162 {2, 27, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
161}; 163};
162 164
163static void __init init_ioports(void) 165static void __init init_ioports(void)
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c
index 77681acf1bae..d850880d6964 100644
--- a/arch/powerpc/platforms/85xx/tqm85xx.c
+++ b/arch/powerpc/platforms/85xx/tqm85xx.c
@@ -120,8 +120,18 @@ static void __init tqm85xx_setup_arch(void)
120#endif 120#endif
121 121
122#ifdef CONFIG_PCI 122#ifdef CONFIG_PCI
123 for_each_compatible_node(np, "pci", "fsl,mpc8540-pci") 123 for_each_node_by_type(np, "pci") {
124 fsl_add_bridge(np, 1); 124 if (of_device_is_compatible(np, "fsl,mpc8540-pci") ||
125 of_device_is_compatible(np, "fsl,mpc8548-pcie")) {
126 struct resource rsrc;
127 if (!of_address_to_resource(np, 0, &rsrc)) {
128 if ((rsrc.start & 0xfffff) == 0x8000)
129 fsl_add_bridge(np, 1);
130 else
131 fsl_add_bridge(np, 0);
132 }
133 }
134 }
125#endif 135#endif
126} 136}
127 137
@@ -165,10 +175,11 @@ static int __init tqm85xx_probe(void)
165{ 175{
166 unsigned long root = of_get_flat_dt_root(); 176 unsigned long root = of_get_flat_dt_root();
167 177
168 if ((of_flat_dt_is_compatible(root, "tqm,8540")) || 178 if ((of_flat_dt_is_compatible(root, "tqc,tqm8540")) ||
169 (of_flat_dt_is_compatible(root, "tqm,8541")) || 179 (of_flat_dt_is_compatible(root, "tqc,tqm8541")) ||
170 (of_flat_dt_is_compatible(root, "tqm,8555")) || 180 (of_flat_dt_is_compatible(root, "tqc,tqm8548")) ||
171 (of_flat_dt_is_compatible(root, "tqm,8560"))) 181 (of_flat_dt_is_compatible(root, "tqc,tqm8555")) ||
182 (of_flat_dt_is_compatible(root, "tqc,tqm8560")))
172 return 1; 183 return 1;
173 184
174 return 0; 185 return 0;
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index f7efaa925a13..1a1ccfbb9232 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -95,6 +95,11 @@ config E500
95 select FSL_EMB_PERFMON 95 select FSL_EMB_PERFMON
96 bool 96 bool
97 97
98config PPC_E500MC
99 bool "e500mc Support"
100 select PPC_FPU
101 depends on E500
102
98config PPC_FPU 103config PPC_FPU
99 bool 104 bool
100 default y if PPC64 105 default y if PPC64
@@ -157,7 +162,7 @@ config ALTIVEC
157 162
158config SPE 163config SPE
159 bool "SPE Support" 164 bool "SPE Support"
160 depends on E200 || E500 165 depends on E200 || (E500 && !PPC_E500MC)
161 default y 166 default y
162 ---help--- 167 ---help---
163 This option enables kernel support for the Signal Processing 168 This option enables kernel support for the Signal Processing
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index dd6dff3ffb0f..16a0ed28eb00 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
14obj-$(CONFIG_FSL_SOC) += fsl_soc.o 14obj-$(CONFIG_FSL_SOC) += fsl_soc.o
15obj-$(CONFIG_FSL_PCI) += fsl_pci.o $(fsl-msi-obj-y) 15obj-$(CONFIG_FSL_PCI) += fsl_pci.o $(fsl-msi-obj-y)
16obj-$(CONFIG_FSL_LBC) += fsl_lbc.o 16obj-$(CONFIG_FSL_LBC) += fsl_lbc.o
17obj-$(CONFIG_FSL_GTM) += fsl_gtm.o
17obj-$(CONFIG_RAPIDIO) += fsl_rio.o 18obj-$(CONFIG_RAPIDIO) += fsl_rio.o
18obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o 19obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
19obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ 20obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
@@ -41,6 +42,7 @@ endif
41ifeq ($(ARCH),powerpc) 42ifeq ($(ARCH),powerpc)
42obj-$(CONFIG_CPM) += cpm_common.o 43obj-$(CONFIG_CPM) += cpm_common.o
43obj-$(CONFIG_CPM2) += cpm2.o cpm2_pic.o 44obj-$(CONFIG_CPM2) += cpm2.o cpm2_pic.o
45obj-$(CONFIG_QUICC_ENGINE) += cpm_common.o
44obj-$(CONFIG_PPC_DCR) += dcr.o 46obj-$(CONFIG_PPC_DCR) += dcr.o
45obj-$(CONFIG_8xx) += mpc8xx_pic.o cpm1.o 47obj-$(CONFIG_8xx) += mpc8xx_pic.o cpm1.o
46obj-$(CONFIG_UCODE_PATCH) += micropatch.o 48obj-$(CONFIG_UCODE_PATCH) += micropatch.o
diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c
index cb7df2dce44f..9b75d164bdf9 100644
--- a/arch/powerpc/sysdev/cpm_common.c
+++ b/arch/powerpc/sysdev/cpm_common.c
@@ -85,9 +85,13 @@ int __init cpm_muram_init(void)
85 85
86 np = of_find_compatible_node(NULL, NULL, "fsl,cpm-muram-data"); 86 np = of_find_compatible_node(NULL, NULL, "fsl,cpm-muram-data");
87 if (!np) { 87 if (!np) {
88 printk(KERN_ERR "Cannot find CPM muram data node"); 88 /* try legacy bindings */
89 ret = -ENODEV; 89 np = of_find_node_by_name(NULL, "data-only");
90 goto out; 90 if (!np) {
91 printk(KERN_ERR "Cannot find CPM muram data node");
92 ret = -ENODEV;
93 goto out;
94 }
91 } 95 }
92 96
93 muram_pbase = of_translate_address(np, zero); 97 muram_pbase = of_translate_address(np, zero);
@@ -189,6 +193,12 @@ void __iomem *cpm_muram_addr(unsigned long offset)
189} 193}
190EXPORT_SYMBOL(cpm_muram_addr); 194EXPORT_SYMBOL(cpm_muram_addr);
191 195
196unsigned long cpm_muram_offset(void __iomem *addr)
197{
198 return addr - (void __iomem *)muram_vbase;
199}
200EXPORT_SYMBOL(cpm_muram_offset);
201
192/** 202/**
193 * cpm_muram_dma - turn a muram virtual address into a DMA address 203 * cpm_muram_dma - turn a muram virtual address into a DMA address
194 * @offset: virtual address from cpm_muram_addr() to convert 204 * @offset: virtual address from cpm_muram_addr() to convert
diff --git a/arch/powerpc/sysdev/fsl_gtm.c b/arch/powerpc/sysdev/fsl_gtm.c
new file mode 100644
index 000000000000..714ec02fed2e
--- /dev/null
+++ b/arch/powerpc/sysdev/fsl_gtm.c
@@ -0,0 +1,434 @@
1/*
2 * Freescale General-purpose Timers Module
3 *
4 * Copyright (c) Freescale Semicondutor, Inc. 2006.
5 * Shlomi Gridish <gridish@freescale.com>
6 * Jerry Huang <Chang-Ming.Huang@freescale.com>
7 * Copyright (c) MontaVista Software, Inc. 2008.
8 * Anton Vorontsov <avorontsov@ru.mvista.com>
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
14 */
15
16#include <linux/kernel.h>
17#include <linux/errno.h>
18#include <linux/list.h>
19#include <linux/io.h>
20#include <linux/of.h>
21#include <linux/spinlock.h>
22#include <linux/bitops.h>
23#include <asm/fsl_gtm.h>
24
25#define GTCFR_STP(x) ((x) & 1 ? 1 << 5 : 1 << 1)
26#define GTCFR_RST(x) ((x) & 1 ? 1 << 4 : 1 << 0)
27
28#define GTMDR_ICLK_MASK (3 << 1)
29#define GTMDR_ICLK_ICAS (0 << 1)
30#define GTMDR_ICLK_ICLK (1 << 1)
31#define GTMDR_ICLK_SLGO (2 << 1)
32#define GTMDR_FRR (1 << 3)
33#define GTMDR_ORI (1 << 4)
34#define GTMDR_SPS(x) ((x) << 8)
35
36struct gtm_timers_regs {
37 u8 gtcfr1; /* Timer 1, Timer 2 global config register */
38 u8 res0[0x3];
39 u8 gtcfr2; /* Timer 3, timer 4 global config register */
40 u8 res1[0xB];
41 __be16 gtmdr1; /* Timer 1 mode register */
42 __be16 gtmdr2; /* Timer 2 mode register */
43 __be16 gtrfr1; /* Timer 1 reference register */
44 __be16 gtrfr2; /* Timer 2 reference register */
45 __be16 gtcpr1; /* Timer 1 capture register */
46 __be16 gtcpr2; /* Timer 2 capture register */
47 __be16 gtcnr1; /* Timer 1 counter */
48 __be16 gtcnr2; /* Timer 2 counter */
49 __be16 gtmdr3; /* Timer 3 mode register */
50 __be16 gtmdr4; /* Timer 4 mode register */
51 __be16 gtrfr3; /* Timer 3 reference register */
52 __be16 gtrfr4; /* Timer 4 reference register */
53 __be16 gtcpr3; /* Timer 3 capture register */
54 __be16 gtcpr4; /* Timer 4 capture register */
55 __be16 gtcnr3; /* Timer 3 counter */
56 __be16 gtcnr4; /* Timer 4 counter */
57 __be16 gtevr1; /* Timer 1 event register */
58 __be16 gtevr2; /* Timer 2 event register */
59 __be16 gtevr3; /* Timer 3 event register */
60 __be16 gtevr4; /* Timer 4 event register */
61 __be16 gtpsr1; /* Timer 1 prescale register */
62 __be16 gtpsr2; /* Timer 2 prescale register */
63 __be16 gtpsr3; /* Timer 3 prescale register */
64 __be16 gtpsr4; /* Timer 4 prescale register */
65 u8 res2[0x40];
66} __attribute__ ((packed));
67
68struct gtm {
69 unsigned int clock;
70 struct gtm_timers_regs __iomem *regs;
71 struct gtm_timer timers[4];
72 spinlock_t lock;
73 struct list_head list_node;
74};
75
76static LIST_HEAD(gtms);
77
78/**
79 * gtm_get_timer - request GTM timer to use it with the rest of GTM API
80 * Context: non-IRQ
81 *
82 * This function reserves GTM timer for later use. It returns gtm_timer
83 * structure to use with the rest of GTM API, you should use timer->irq
84 * to manage timer interrupt.
85 */
86struct gtm_timer *gtm_get_timer16(void)
87{
88 struct gtm *gtm = NULL;
89 int i;
90
91 list_for_each_entry(gtm, &gtms, list_node) {
92 spin_lock_irq(&gtm->lock);
93
94 for (i = 0; i < ARRAY_SIZE(gtm->timers); i++) {
95 if (!gtm->timers[i].requested) {
96 gtm->timers[i].requested = true;
97 spin_unlock_irq(&gtm->lock);
98 return &gtm->timers[i];
99 }
100 }
101
102 spin_unlock_irq(&gtm->lock);
103 }
104
105 if (gtm)
106 return ERR_PTR(-EBUSY);
107 return ERR_PTR(-ENODEV);
108}
109EXPORT_SYMBOL(gtm_get_timer16);
110
111/**
112 * gtm_get_specific_timer - request specific GTM timer
113 * @gtm: specific GTM, pass here GTM's device_node->data
114 * @timer: specific timer number, Timer1 is 0.
115 * Context: non-IRQ
116 *
117 * This function reserves GTM timer for later use. It returns gtm_timer
118 * structure to use with the rest of GTM API, you should use timer->irq
119 * to manage timer interrupt.
120 */
121struct gtm_timer *gtm_get_specific_timer16(struct gtm *gtm,
122 unsigned int timer)
123{
124 struct gtm_timer *ret = ERR_PTR(-EBUSY);
125
126 if (timer > 3)
127 return ERR_PTR(-EINVAL);
128
129 spin_lock_irq(&gtm->lock);
130
131 if (gtm->timers[timer].requested)
132 goto out;
133
134 ret = &gtm->timers[timer];
135 ret->requested = true;
136
137out:
138 spin_unlock_irq(&gtm->lock);
139 return ret;
140}
141EXPORT_SYMBOL(gtm_get_specific_timer16);
142
143/**
144 * gtm_put_timer16 - release 16 bits GTM timer
145 * @tmr: pointer to the gtm_timer structure obtained from gtm_get_timer
146 * Context: any
147 *
148 * This function releases GTM timer so others may request it.
149 */
150void gtm_put_timer16(struct gtm_timer *tmr)
151{
152 gtm_stop_timer16(tmr);
153
154 spin_lock_irq(&tmr->gtm->lock);
155 tmr->requested = false;
156 spin_unlock_irq(&tmr->gtm->lock);
157}
158EXPORT_SYMBOL(gtm_put_timer16);
159
160/*
161 * This is back-end for the exported functions, it's used to reset single
162 * timer in reference mode.
163 */
164static int gtm_set_ref_timer16(struct gtm_timer *tmr, int frequency,
165 int reference_value, bool free_run)
166{
167 struct gtm *gtm = tmr->gtm;
168 int num = tmr - &gtm->timers[0];
169 unsigned int prescaler;
170 u8 iclk = GTMDR_ICLK_ICLK;
171 u8 psr;
172 u8 sps;
173 unsigned long flags;
174 int max_prescaler = 256 * 256 * 16;
175
176 /* CPM2 doesn't have primary prescaler */
177 if (!tmr->gtpsr)
178 max_prescaler /= 256;
179
180 prescaler = gtm->clock / frequency;
181 /*
182 * We have two 8 bit prescalers -- primary and secondary (psr, sps),
183 * plus "slow go" mode (clk / 16). So, total prescale value is
184 * 16 * (psr + 1) * (sps + 1). Though, for CPM2 GTMs we losing psr.
185 */
186 if (prescaler > max_prescaler)
187 return -EINVAL;
188
189 if (prescaler > max_prescaler / 16) {
190 iclk = GTMDR_ICLK_SLGO;
191 prescaler /= 16;
192 }
193
194 if (prescaler <= 256) {
195 psr = 0;
196 sps = prescaler - 1;
197 } else {
198 psr = 256 - 1;
199 sps = prescaler / 256 - 1;
200 }
201
202 spin_lock_irqsave(&gtm->lock, flags);
203
204 /*
205 * Properly reset timers: stop, reset, set up prescalers, reference
206 * value and clear event register.
207 */
208 clrsetbits_8(tmr->gtcfr, ~(GTCFR_STP(num) | GTCFR_RST(num)),
209 GTCFR_STP(num) | GTCFR_RST(num));
210
211 setbits8(tmr->gtcfr, GTCFR_STP(num));
212
213 if (tmr->gtpsr)
214 out_be16(tmr->gtpsr, psr);
215 clrsetbits_be16(tmr->gtmdr, 0xFFFF, iclk | GTMDR_SPS(sps) |
216 GTMDR_ORI | (free_run ? GTMDR_FRR : 0));
217 out_be16(tmr->gtcnr, 0);
218 out_be16(tmr->gtrfr, reference_value);
219 out_be16(tmr->gtevr, 0xFFFF);
220
221 /* Let it be. */
222 clrbits8(tmr->gtcfr, GTCFR_STP(num));
223
224 spin_unlock_irqrestore(&gtm->lock, flags);
225
226 return 0;
227}
228
229/**
230 * gtm_set_timer16 - (re)set 16 bit timer with arbitrary precision
231 * @tmr: pointer to the gtm_timer structure obtained from gtm_get_timer
232 * @usec: timer interval in microseconds
233 * @reload: if set, the timer will reset upon expiry rather than
234 * continue running free.
235 * Context: any
236 *
237 * This function (re)sets the GTM timer so that it counts up to the requested
238 * interval value, and fires the interrupt when the value is reached. This
239 * function will reduce the precision of the timer as needed in order for the
240 * requested timeout to fit in a 16-bit register.
241 */
242int gtm_set_timer16(struct gtm_timer *tmr, unsigned long usec, bool reload)
243{
244 /* quite obvious, frequency which is enough for µSec precision */
245 int freq = 1000000;
246 unsigned int bit;
247
248 bit = fls_long(usec);
249 if (bit > 15) {
250 freq >>= bit - 15;
251 usec >>= bit - 15;
252 }
253
254 if (!freq)
255 return -EINVAL;
256
257 return gtm_set_ref_timer16(tmr, freq, usec, reload);
258}
259EXPORT_SYMBOL(gtm_set_timer16);
260
261/**
262 * gtm_set_exact_utimer16 - (re)set 16 bits timer
263 * @tmr: pointer to the gtm_timer structure obtained from gtm_get_timer
264 * @usec: timer interval in microseconds
265 * @reload: if set, the timer will reset upon expiry rather than
266 * continue running free.
267 * Context: any
268 *
269 * This function (re)sets GTM timer so that it counts up to the requested
270 * interval value, and fires the interrupt when the value is reached. If reload
271 * flag was set, timer will also reset itself upon reference value, otherwise
272 * it continues to increment.
273 *
274 * The _exact_ bit in the function name states that this function will not
275 * crop precision of the "usec" argument, thus usec is limited to 16 bits
276 * (single timer width).
277 */
278int gtm_set_exact_timer16(struct gtm_timer *tmr, u16 usec, bool reload)
279{
280 /* quite obvious, frequency which is enough for µSec precision */
281 const int freq = 1000000;
282
283 /*
284 * We can lower the frequency (and probably power consumption) by
285 * dividing both frequency and usec by 2 until there is no remainder.
286 * But we won't bother with this unless savings are measured, so just
287 * run the timer as is.
288 */
289
290 return gtm_set_ref_timer16(tmr, freq, usec, reload);
291}
292EXPORT_SYMBOL(gtm_set_exact_timer16);
293
294/**
295 * gtm_stop_timer16 - stop single timer
296 * @tmr: pointer to the gtm_timer structure obtained from gtm_get_timer
297 * Context: any
298 *
299 * This function simply stops the GTM timer.
300 */
301void gtm_stop_timer16(struct gtm_timer *tmr)
302{
303 struct gtm *gtm = tmr->gtm;
304 int num = tmr - &gtm->timers[0];
305 unsigned long flags;
306
307 spin_lock_irqsave(&gtm->lock, flags);
308
309 setbits8(tmr->gtcfr, GTCFR_STP(num));
310 out_be16(tmr->gtevr, 0xFFFF);
311
312 spin_unlock_irqrestore(&gtm->lock, flags);
313}
314EXPORT_SYMBOL(gtm_stop_timer16);
315
316/**
317 * gtm_ack_timer16 - acknowledge timer event (free-run timers only)
318 * @tmr: pointer to the gtm_timer structure obtained from gtm_get_timer
319 * @events: events mask to ack
320 * Context: any
321 *
322 * Thus function used to acknowledge timer interrupt event, use it inside the
323 * interrupt handler.
324 */
325void gtm_ack_timer16(struct gtm_timer *tmr, u16 events)
326{
327 out_be16(tmr->gtevr, events);
328}
329EXPORT_SYMBOL(gtm_ack_timer16);
330
331static void __init gtm_set_shortcuts(struct device_node *np,
332 struct gtm_timer *timers,
333 struct gtm_timers_regs __iomem *regs)
334{
335 /*
336 * Yeah, I don't like this either, but timers' registers a bit messed,
337 * so we have to provide shortcuts to write timer independent code.
338 * Alternative option is to create gt*() accessors, but that will be
339 * even uglier and cryptic.
340 */
341 timers[0].gtcfr = &regs->gtcfr1;
342 timers[0].gtmdr = &regs->gtmdr1;
343 timers[0].gtcnr = &regs->gtcnr1;
344 timers[0].gtrfr = &regs->gtrfr1;
345 timers[0].gtevr = &regs->gtevr1;
346
347 timers[1].gtcfr = &regs->gtcfr1;
348 timers[1].gtmdr = &regs->gtmdr2;
349 timers[1].gtcnr = &regs->gtcnr2;
350 timers[1].gtrfr = &regs->gtrfr2;
351 timers[1].gtevr = &regs->gtevr2;
352
353 timers[2].gtcfr = &regs->gtcfr2;
354 timers[2].gtmdr = &regs->gtmdr3;
355 timers[2].gtcnr = &regs->gtcnr3;
356 timers[2].gtrfr = &regs->gtrfr3;
357 timers[2].gtevr = &regs->gtevr3;
358
359 timers[3].gtcfr = &regs->gtcfr2;
360 timers[3].gtmdr = &regs->gtmdr4;
361 timers[3].gtcnr = &regs->gtcnr4;
362 timers[3].gtrfr = &regs->gtrfr4;
363 timers[3].gtevr = &regs->gtevr4;
364
365 /* CPM2 doesn't have primary prescaler */
366 if (!of_device_is_compatible(np, "fsl,cpm2-gtm")) {
367 timers[0].gtpsr = &regs->gtpsr1;
368 timers[1].gtpsr = &regs->gtpsr2;
369 timers[2].gtpsr = &regs->gtpsr3;
370 timers[3].gtpsr = &regs->gtpsr4;
371 }
372}
373
374static int __init fsl_gtm_init(void)
375{
376 struct device_node *np;
377
378 for_each_compatible_node(np, NULL, "fsl,gtm") {
379 int i;
380 struct gtm *gtm;
381 const u32 *clock;
382 int size;
383
384 gtm = kzalloc(sizeof(*gtm), GFP_KERNEL);
385 if (!gtm) {
386 pr_err("%s: unable to allocate memory\n",
387 np->full_name);
388 continue;
389 }
390
391 spin_lock_init(&gtm->lock);
392
393 clock = of_get_property(np, "clock-frequency", &size);
394 if (!clock || size != sizeof(*clock)) {
395 pr_err("%s: no clock-frequency\n", np->full_name);
396 goto err;
397 }
398 gtm->clock = *clock;
399
400 for (i = 0; i < ARRAY_SIZE(gtm->timers); i++) {
401 int ret;
402 struct resource irq;
403
404 ret = of_irq_to_resource(np, i, &irq);
405 if (ret == NO_IRQ) {
406 pr_err("%s: not enough interrupts specified\n",
407 np->full_name);
408 goto err;
409 }
410 gtm->timers[i].irq = irq.start;
411 gtm->timers[i].gtm = gtm;
412 }
413
414 gtm->regs = of_iomap(np, 0);
415 if (!gtm->regs) {
416 pr_err("%s: unable to iomap registers\n",
417 np->full_name);
418 goto err;
419 }
420
421 gtm_set_shortcuts(np, gtm->timers, gtm->regs);
422 list_add(&gtm->list_node, &gtms);
423
424 /* We don't want to lose the node and its ->data */
425 np->data = gtm;
426 of_node_get(np);
427
428 continue;
429err:
430 kfree(gtm);
431 }
432 return 0;
433}
434arch_initcall(fsl_gtm_init);
diff --git a/arch/powerpc/sysdev/qe_lib/Kconfig b/arch/powerpc/sysdev/qe_lib/Kconfig
index adc66212a419..4bb18f57901e 100644
--- a/arch/powerpc/sysdev/qe_lib/Kconfig
+++ b/arch/powerpc/sysdev/qe_lib/Kconfig
@@ -20,3 +20,16 @@ config UCC
20 bool 20 bool
21 default y if UCC_FAST || UCC_SLOW 21 default y if UCC_FAST || UCC_SLOW
22 22
23config QE_USB
24 bool
25 help
26 QE USB Host Controller support
27
28config QE_GPIO
29 bool "QE GPIO support"
30 depends on QUICC_ENGINE
31 select GENERIC_GPIO
32 select HAVE_GPIO_LIB
33 help
34 Say Y here if you're going to use hardware that connects to the
35 QE GPIOs.
diff --git a/arch/powerpc/sysdev/qe_lib/Makefile b/arch/powerpc/sysdev/qe_lib/Makefile
index 874fe1a5b1cf..f1855c185291 100644
--- a/arch/powerpc/sysdev/qe_lib/Makefile
+++ b/arch/powerpc/sysdev/qe_lib/Makefile
@@ -6,3 +6,5 @@ obj-$(CONFIG_QUICC_ENGINE)+= qe.o qe_ic.o qe_io.o
6obj-$(CONFIG_UCC) += ucc.o 6obj-$(CONFIG_UCC) += ucc.o
7obj-$(CONFIG_UCC_SLOW) += ucc_slow.o 7obj-$(CONFIG_UCC_SLOW) += ucc_slow.o
8obj-$(CONFIG_UCC_FAST) += ucc_fast.o 8obj-$(CONFIG_UCC_FAST) += ucc_fast.o
9obj-$(CONFIG_QE_USB) += usb.o
10obj-$(CONFIG_QE_GPIO) += gpio.o
diff --git a/arch/powerpc/sysdev/qe_lib/gpio.c b/arch/powerpc/sysdev/qe_lib/gpio.c
new file mode 100644
index 000000000000..8e5a0bc36d0b
--- /dev/null
+++ b/arch/powerpc/sysdev/qe_lib/gpio.c
@@ -0,0 +1,149 @@
1/*
2 * QUICC Engine GPIOs
3 *
4 * Copyright (c) MontaVista Software, Inc. 2008.
5 *
6 * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
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 as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/spinlock.h>
17#include <linux/io.h>
18#include <linux/of.h>
19#include <linux/of_gpio.h>
20#include <linux/gpio.h>
21#include <asm/qe.h>
22
23struct qe_gpio_chip {
24 struct of_mm_gpio_chip mm_gc;
25 spinlock_t lock;
26
27 /* shadowed data register to clear/set bits safely */
28 u32 cpdata;
29};
30
31static inline struct qe_gpio_chip *
32to_qe_gpio_chip(struct of_mm_gpio_chip *mm_gc)
33{
34 return container_of(mm_gc, struct qe_gpio_chip, mm_gc);
35}
36
37static void qe_gpio_save_regs(struct of_mm_gpio_chip *mm_gc)
38{
39 struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc);
40 struct qe_pio_regs __iomem *regs = mm_gc->regs;
41
42 qe_gc->cpdata = in_be32(&regs->cpdata);
43}
44
45static int qe_gpio_get(struct gpio_chip *gc, unsigned int gpio)
46{
47 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
48 struct qe_pio_regs __iomem *regs = mm_gc->regs;
49 u32 pin_mask = 1 << (QE_PIO_PINS - 1 - gpio);
50
51 return in_be32(&regs->cpdata) & pin_mask;
52}
53
54static void qe_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
55{
56 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
57 struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc);
58 struct qe_pio_regs __iomem *regs = mm_gc->regs;
59 unsigned long flags;
60 u32 pin_mask = 1 << (QE_PIO_PINS - 1 - gpio);
61
62 spin_lock_irqsave(&qe_gc->lock, flags);
63
64 if (val)
65 qe_gc->cpdata |= pin_mask;
66 else
67 qe_gc->cpdata &= ~pin_mask;
68
69 out_be32(&regs->cpdata, qe_gc->cpdata);
70
71 spin_unlock_irqrestore(&qe_gc->lock, flags);
72}
73
74static int qe_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
75{
76 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
77 struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc);
78 unsigned long flags;
79
80 spin_lock_irqsave(&qe_gc->lock, flags);
81
82 __par_io_config_pin(mm_gc->regs, gpio, QE_PIO_DIR_IN, 0, 0, 0);
83
84 spin_unlock_irqrestore(&qe_gc->lock, flags);
85
86 return 0;
87}
88
89static int qe_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
90{
91 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
92 struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc);
93 unsigned long flags;
94
95 spin_lock_irqsave(&qe_gc->lock, flags);
96
97 __par_io_config_pin(mm_gc->regs, gpio, QE_PIO_DIR_OUT, 0, 0, 0);
98
99 spin_unlock_irqrestore(&qe_gc->lock, flags);
100
101 qe_gpio_set(gc, gpio, val);
102
103 return 0;
104}
105
106static int __init qe_add_gpiochips(void)
107{
108 struct device_node *np;
109
110 for_each_compatible_node(np, NULL, "fsl,mpc8323-qe-pario-bank") {
111 int ret;
112 struct qe_gpio_chip *qe_gc;
113 struct of_mm_gpio_chip *mm_gc;
114 struct of_gpio_chip *of_gc;
115 struct gpio_chip *gc;
116
117 qe_gc = kzalloc(sizeof(*qe_gc), GFP_KERNEL);
118 if (!qe_gc) {
119 ret = -ENOMEM;
120 goto err;
121 }
122
123 spin_lock_init(&qe_gc->lock);
124
125 mm_gc = &qe_gc->mm_gc;
126 of_gc = &mm_gc->of_gc;
127 gc = &of_gc->gc;
128
129 mm_gc->save_regs = qe_gpio_save_regs;
130 of_gc->gpio_cells = 2;
131 gc->ngpio = QE_PIO_PINS;
132 gc->direction_input = qe_gpio_dir_in;
133 gc->direction_output = qe_gpio_dir_out;
134 gc->get = qe_gpio_get;
135 gc->set = qe_gpio_set;
136
137 ret = of_mm_gpiochip_add(np, mm_gc);
138 if (ret)
139 goto err;
140 continue;
141err:
142 pr_err("%s: registration failed with status %d\n",
143 np->full_name, ret);
144 kfree(qe_gc);
145 /* try others anyway */
146 }
147 return 0;
148}
149arch_initcall(qe_add_gpiochips);
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index cff550eec7e8..9e82d7e725a5 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -35,7 +35,6 @@
35#include <asm/rheap.h> 35#include <asm/rheap.h>
36 36
37static void qe_snums_init(void); 37static void qe_snums_init(void);
38static void qe_muram_init(void);
39static int qe_sdma_init(void); 38static int qe_sdma_init(void);
40 39
41static DEFINE_SPINLOCK(qe_lock); 40static DEFINE_SPINLOCK(qe_lock);
@@ -88,7 +87,7 @@ phys_addr_t get_qe_base(void)
88 87
89EXPORT_SYMBOL(get_qe_base); 88EXPORT_SYMBOL(get_qe_base);
90 89
91void qe_reset(void) 90void __init qe_reset(void)
92{ 91{
93 if (qe_immr == NULL) 92 if (qe_immr == NULL)
94 qe_immr = ioremap(get_qe_base(), QE_IMMAP_SIZE); 93 qe_immr = ioremap(get_qe_base(), QE_IMMAP_SIZE);
@@ -325,97 +324,6 @@ static int qe_sdma_init(void)
325 return 0; 324 return 0;
326} 325}
327 326
328/*
329 * muram_alloc / muram_free bits.
330 */
331static DEFINE_SPINLOCK(qe_muram_lock);
332
333/* 16 blocks should be enough to satisfy all requests
334 * until the memory subsystem goes up... */
335static rh_block_t qe_boot_muram_rh_block[16];
336static rh_info_t qe_muram_info;
337
338static void qe_muram_init(void)
339{
340 struct device_node *np;
341 const u32 *address;
342 u64 size;
343 unsigned int flags;
344
345 /* initialize the info header */
346 rh_init(&qe_muram_info, 1,
347 sizeof(qe_boot_muram_rh_block) /
348 sizeof(qe_boot_muram_rh_block[0]), qe_boot_muram_rh_block);
349
350 /* Attach the usable muram area */
351 /* XXX: This is a subset of the available muram. It
352 * varies with the processor and the microcode patches activated.
353 */
354 np = of_find_compatible_node(NULL, NULL, "fsl,qe-muram-data");
355 if (!np) {
356 np = of_find_node_by_name(NULL, "data-only");
357 if (!np) {
358 WARN_ON(1);
359 return;
360 }
361 }
362
363 address = of_get_address(np, 0, &size, &flags);
364 WARN_ON(!address);
365
366 of_node_put(np);
367 if (address)
368 rh_attach_region(&qe_muram_info, *address, (int)size);
369}
370
371/* This function returns an index into the MURAM area.
372 */
373unsigned long qe_muram_alloc(int size, int align)
374{
375 unsigned long start;
376 unsigned long flags;
377
378 spin_lock_irqsave(&qe_muram_lock, flags);
379 start = rh_alloc_align(&qe_muram_info, size, align, "QE");
380 spin_unlock_irqrestore(&qe_muram_lock, flags);
381
382 return start;
383}
384EXPORT_SYMBOL(qe_muram_alloc);
385
386int qe_muram_free(unsigned long offset)
387{
388 int ret;
389 unsigned long flags;
390
391 spin_lock_irqsave(&qe_muram_lock, flags);
392 ret = rh_free(&qe_muram_info, offset);
393 spin_unlock_irqrestore(&qe_muram_lock, flags);
394
395 return ret;
396}
397EXPORT_SYMBOL(qe_muram_free);
398
399/* not sure if this is ever needed */
400unsigned long qe_muram_alloc_fixed(unsigned long offset, int size)
401{
402 unsigned long start;
403 unsigned long flags;
404
405 spin_lock_irqsave(&qe_muram_lock, flags);
406 start = rh_alloc_fixed(&qe_muram_info, offset, size, "commproc");
407 spin_unlock_irqrestore(&qe_muram_lock, flags);
408
409 return start;
410}
411EXPORT_SYMBOL(qe_muram_alloc_fixed);
412
413void qe_muram_dump(void)
414{
415 rh_dump(&qe_muram_info);
416}
417EXPORT_SYMBOL(qe_muram_dump);
418
419/* The maximum number of RISCs we support */ 327/* The maximum number of RISCs we support */
420#define MAX_QE_RISC 2 328#define MAX_QE_RISC 2
421 329
diff --git a/arch/powerpc/sysdev/qe_lib/qe_io.c b/arch/powerpc/sysdev/qe_lib/qe_io.c
index 93916a48afec..7c87460179ef 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_io.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_io.c
@@ -28,21 +28,7 @@
28 28
29#undef DEBUG 29#undef DEBUG
30 30
31#define NUM_OF_PINS 32 31static struct qe_pio_regs __iomem *par_io;
32
33struct port_regs {
34 __be32 cpodr; /* Open drain register */
35 __be32 cpdata; /* Data register */
36 __be32 cpdir1; /* Direction register */
37 __be32 cpdir2; /* Direction register */
38 __be32 cppar1; /* Pin assignment register */
39 __be32 cppar2; /* Pin assignment register */
40#ifdef CONFIG_PPC_85xx
41 u8 pad[8];
42#endif
43};
44
45static struct port_regs __iomem *par_io;
46static int num_par_io_ports = 0; 32static int num_par_io_ports = 0;
47 33
48int par_io_init(struct device_node *np) 34int par_io_init(struct device_node *np)
@@ -64,69 +50,79 @@ int par_io_init(struct device_node *np)
64 return 0; 50 return 0;
65} 51}
66 52
67int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain, 53void __par_io_config_pin(struct qe_pio_regs __iomem *par_io, u8 pin, int dir,
68 int assignment, int has_irq) 54 int open_drain, int assignment, int has_irq)
69{ 55{
70 u32 pin_mask1bit, pin_mask2bits, new_mask2bits, tmp_val; 56 u32 pin_mask1bit;
71 57 u32 pin_mask2bits;
72 if (!par_io) 58 u32 new_mask2bits;
73 return -1; 59 u32 tmp_val;
74 60
75 /* calculate pin location for single and 2 bits information */ 61 /* calculate pin location for single and 2 bits information */
76 pin_mask1bit = (u32) (1 << (NUM_OF_PINS - (pin + 1))); 62 pin_mask1bit = (u32) (1 << (QE_PIO_PINS - (pin + 1)));
77 63
78 /* Set open drain, if required */ 64 /* Set open drain, if required */
79 tmp_val = in_be32(&par_io[port].cpodr); 65 tmp_val = in_be32(&par_io->cpodr);
80 if (open_drain) 66 if (open_drain)
81 out_be32(&par_io[port].cpodr, pin_mask1bit | tmp_val); 67 out_be32(&par_io->cpodr, pin_mask1bit | tmp_val);
82 else 68 else
83 out_be32(&par_io[port].cpodr, ~pin_mask1bit & tmp_val); 69 out_be32(&par_io->cpodr, ~pin_mask1bit & tmp_val);
84 70
85 /* define direction */ 71 /* define direction */
86 tmp_val = (pin > (NUM_OF_PINS / 2) - 1) ? 72 tmp_val = (pin > (QE_PIO_PINS / 2) - 1) ?
87 in_be32(&par_io[port].cpdir2) : 73 in_be32(&par_io->cpdir2) :
88 in_be32(&par_io[port].cpdir1); 74 in_be32(&par_io->cpdir1);
89 75
90 /* get all bits mask for 2 bit per port */ 76 /* get all bits mask for 2 bit per port */
91 pin_mask2bits = (u32) (0x3 << (NUM_OF_PINS - 77 pin_mask2bits = (u32) (0x3 << (QE_PIO_PINS -
92 (pin % (NUM_OF_PINS / 2) + 1) * 2)); 78 (pin % (QE_PIO_PINS / 2) + 1) * 2));
93 79
94 /* Get the final mask we need for the right definition */ 80 /* Get the final mask we need for the right definition */
95 new_mask2bits = (u32) (dir << (NUM_OF_PINS - 81 new_mask2bits = (u32) (dir << (QE_PIO_PINS -
96 (pin % (NUM_OF_PINS / 2) + 1) * 2)); 82 (pin % (QE_PIO_PINS / 2) + 1) * 2));
97 83
98 /* clear and set 2 bits mask */ 84 /* clear and set 2 bits mask */
99 if (pin > (NUM_OF_PINS / 2) - 1) { 85 if (pin > (QE_PIO_PINS / 2) - 1) {
100 out_be32(&par_io[port].cpdir2, 86 out_be32(&par_io->cpdir2,
101 ~pin_mask2bits & tmp_val); 87 ~pin_mask2bits & tmp_val);
102 tmp_val &= ~pin_mask2bits; 88 tmp_val &= ~pin_mask2bits;
103 out_be32(&par_io[port].cpdir2, new_mask2bits | tmp_val); 89 out_be32(&par_io->cpdir2, new_mask2bits | tmp_val);
104 } else { 90 } else {
105 out_be32(&par_io[port].cpdir1, 91 out_be32(&par_io->cpdir1,
106 ~pin_mask2bits & tmp_val); 92 ~pin_mask2bits & tmp_val);
107 tmp_val &= ~pin_mask2bits; 93 tmp_val &= ~pin_mask2bits;
108 out_be32(&par_io[port].cpdir1, new_mask2bits | tmp_val); 94 out_be32(&par_io->cpdir1, new_mask2bits | tmp_val);
109 } 95 }
110 /* define pin assignment */ 96 /* define pin assignment */
111 tmp_val = (pin > (NUM_OF_PINS / 2) - 1) ? 97 tmp_val = (pin > (QE_PIO_PINS / 2) - 1) ?
112 in_be32(&par_io[port].cppar2) : 98 in_be32(&par_io->cppar2) :
113 in_be32(&par_io[port].cppar1); 99 in_be32(&par_io->cppar1);
114 100
115 new_mask2bits = (u32) (assignment << (NUM_OF_PINS - 101 new_mask2bits = (u32) (assignment << (QE_PIO_PINS -
116 (pin % (NUM_OF_PINS / 2) + 1) * 2)); 102 (pin % (QE_PIO_PINS / 2) + 1) * 2));
117 /* clear and set 2 bits mask */ 103 /* clear and set 2 bits mask */
118 if (pin > (NUM_OF_PINS / 2) - 1) { 104 if (pin > (QE_PIO_PINS / 2) - 1) {
119 out_be32(&par_io[port].cppar2, 105 out_be32(&par_io->cppar2,
120 ~pin_mask2bits & tmp_val); 106 ~pin_mask2bits & tmp_val);
121 tmp_val &= ~pin_mask2bits; 107 tmp_val &= ~pin_mask2bits;
122 out_be32(&par_io[port].cppar2, new_mask2bits | tmp_val); 108 out_be32(&par_io->cppar2, new_mask2bits | tmp_val);
123 } else { 109 } else {
124 out_be32(&par_io[port].cppar1, 110 out_be32(&par_io->cppar1,
125 ~pin_mask2bits & tmp_val); 111 ~pin_mask2bits & tmp_val);
126 tmp_val &= ~pin_mask2bits; 112 tmp_val &= ~pin_mask2bits;
127 out_be32(&par_io[port].cppar1, new_mask2bits | tmp_val); 113 out_be32(&par_io->cppar1, new_mask2bits | tmp_val);
128 } 114 }
115}
116EXPORT_SYMBOL(__par_io_config_pin);
117
118int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain,
119 int assignment, int has_irq)
120{
121 if (!par_io || port >= num_par_io_ports)
122 return -EINVAL;
129 123
124 __par_io_config_pin(&par_io[port], pin, dir, open_drain, assignment,
125 has_irq);
130 return 0; 126 return 0;
131} 127}
132EXPORT_SYMBOL(par_io_config_pin); 128EXPORT_SYMBOL(par_io_config_pin);
@@ -137,10 +133,10 @@ int par_io_data_set(u8 port, u8 pin, u8 val)
137 133
138 if (port >= num_par_io_ports) 134 if (port >= num_par_io_ports)
139 return -EINVAL; 135 return -EINVAL;
140 if (pin >= NUM_OF_PINS) 136 if (pin >= QE_PIO_PINS)
141 return -EINVAL; 137 return -EINVAL;
142 /* calculate pin location */ 138 /* calculate pin location */
143 pin_mask = (u32) (1 << (NUM_OF_PINS - 1 - pin)); 139 pin_mask = (u32) (1 << (QE_PIO_PINS - 1 - pin));
144 140
145 tmp_val = in_be32(&par_io[port].cpdata); 141 tmp_val = in_be32(&par_io[port].cpdata);
146 142
diff --git a/arch/powerpc/sysdev/qe_lib/ucc.c b/arch/powerpc/sysdev/qe_lib/ucc.c
index 0e348d9af8a6..d3c7f5af9bc8 100644
--- a/arch/powerpc/sysdev/qe_lib/ucc.c
+++ b/arch/powerpc/sysdev/qe_lib/ucc.c
@@ -26,7 +26,8 @@
26#include <asm/qe.h> 26#include <asm/qe.h>
27#include <asm/ucc.h> 27#include <asm/ucc.h>
28 28
29static DEFINE_SPINLOCK(ucc_lock); 29DEFINE_SPINLOCK(cmxgcr_lock);
30EXPORT_SYMBOL(cmxgcr_lock);
30 31
31int ucc_set_qe_mux_mii_mng(unsigned int ucc_num) 32int ucc_set_qe_mux_mii_mng(unsigned int ucc_num)
32{ 33{
@@ -35,10 +36,10 @@ int ucc_set_qe_mux_mii_mng(unsigned int ucc_num)
35 if (ucc_num > UCC_MAX_NUM - 1) 36 if (ucc_num > UCC_MAX_NUM - 1)
36 return -EINVAL; 37 return -EINVAL;
37 38
38 spin_lock_irqsave(&ucc_lock, flags); 39 spin_lock_irqsave(&cmxgcr_lock, flags);
39 clrsetbits_be32(&qe_immr->qmx.cmxgcr, QE_CMXGCR_MII_ENET_MNG, 40 clrsetbits_be32(&qe_immr->qmx.cmxgcr, QE_CMXGCR_MII_ENET_MNG,
40 ucc_num << QE_CMXGCR_MII_ENET_MNG_SHIFT); 41 ucc_num << QE_CMXGCR_MII_ENET_MNG_SHIFT);
41 spin_unlock_irqrestore(&ucc_lock, flags); 42 spin_unlock_irqrestore(&cmxgcr_lock, flags);
42 43
43 return 0; 44 return 0;
44} 45}
diff --git a/arch/powerpc/sysdev/qe_lib/usb.c b/arch/powerpc/sysdev/qe_lib/usb.c
new file mode 100644
index 000000000000..8105462078eb
--- /dev/null
+++ b/arch/powerpc/sysdev/qe_lib/usb.c
@@ -0,0 +1,55 @@
1/*
2 * QE USB routines
3 *
4 * Copyright (c) Freescale Semicondutor, Inc. 2006.
5 * Shlomi Gridish <gridish@freescale.com>
6 * Jerry Huang <Chang-Ming.Huang@freescale.com>
7 * Copyright (c) MontaVista Software, Inc. 2008.
8 * Anton Vorontsov <avorontsov@ru.mvista.com>
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
14 */
15
16#include <linux/kernel.h>
17#include <linux/errno.h>
18#include <linux/io.h>
19#include <asm/immap_qe.h>
20#include <asm/qe.h>
21
22int qe_usb_clock_set(enum qe_clock clk, int rate)
23{
24 struct qe_mux __iomem *mux = &qe_immr->qmx;
25 unsigned long flags;
26 u32 val;
27
28 switch (clk) {
29 case QE_CLK3: val = QE_CMXGCR_USBCS_CLK3; break;
30 case QE_CLK5: val = QE_CMXGCR_USBCS_CLK5; break;
31 case QE_CLK7: val = QE_CMXGCR_USBCS_CLK7; break;
32 case QE_CLK9: val = QE_CMXGCR_USBCS_CLK9; break;
33 case QE_CLK13: val = QE_CMXGCR_USBCS_CLK13; break;
34 case QE_CLK17: val = QE_CMXGCR_USBCS_CLK17; break;
35 case QE_CLK19: val = QE_CMXGCR_USBCS_CLK19; break;
36 case QE_CLK21: val = QE_CMXGCR_USBCS_CLK21; break;
37 case QE_BRG9: val = QE_CMXGCR_USBCS_BRG9; break;
38 case QE_BRG10: val = QE_CMXGCR_USBCS_BRG10; break;
39 default:
40 pr_err("%s: requested unknown clock %d\n", __func__, clk);
41 return -EINVAL;
42 }
43
44 if (qe_clock_is_brg(clk))
45 qe_setbrg(clk, rate, 1);
46
47 spin_lock_irqsave(&cmxgcr_lock, flags);
48
49 clrsetbits_be32(&mux->cmxgcr, QE_CMXGCR_USBCS, val);
50
51 spin_unlock_irqrestore(&cmxgcr_lock, flags);
52
53 return 0;
54}
55EXPORT_SYMBOL(qe_usb_clock_set);
diff --git a/drivers/serial/cpm_uart/cpm_uart.h b/drivers/serial/cpm_uart/cpm_uart.h
index 0cc39f82d7c5..5c76e0ae0582 100644
--- a/drivers/serial/cpm_uart/cpm_uart.h
+++ b/drivers/serial/cpm_uart/cpm_uart.h
@@ -6,7 +6,7 @@
6 * Copyright (C) 2004 Freescale Semiconductor, Inc. 6 * Copyright (C) 2004 Freescale Semiconductor, Inc.
7 * 7 *
8 * 2006 (c) MontaVista Software, Inc. 8 * 2006 (c) MontaVista Software, Inc.
9 * Vitaly Bordug <vbordug@ru.mvista.com> 9 * Vitaly Bordug <vbordug@ru.mvista.com>
10 * 10 *
11 * This file is licensed under the terms of the GNU General Public License 11 * This file is licensed under the terms of the GNU General Public License
12 * version 2. This program is licensed "as is" without any warranty of any 12 * version 2. This program is licensed "as is" without any warranty of any
@@ -28,7 +28,7 @@
28#define SERIAL_CPM_MAJOR 204 28#define SERIAL_CPM_MAJOR 204
29#define SERIAL_CPM_MINOR 46 29#define SERIAL_CPM_MINOR 46
30 30
31#define IS_SMC(pinfo) (pinfo->flags & FLAG_SMC) 31#define IS_SMC(pinfo) (pinfo->flags & FLAG_SMC)
32#define IS_DISCARDING(pinfo) (pinfo->flags & FLAG_DISCARDING) 32#define IS_DISCARDING(pinfo) (pinfo->flags & FLAG_DISCARDING)
33#define FLAG_DISCARDING 0x00000004 /* when set, don't discard */ 33#define FLAG_DISCARDING 0x00000004 /* when set, don't discard */
34#define FLAG_SMC 0x00000002 34#define FLAG_SMC 0x00000002
@@ -70,7 +70,7 @@ struct uart_cpm_port {
70 void (*set_lineif)(struct uart_cpm_port *); 70 void (*set_lineif)(struct uart_cpm_port *);
71 u8 brg; 71 u8 brg;
72 uint dp_addr; 72 uint dp_addr;
73 void *mem_addr; 73 void *mem_addr;
74 dma_addr_t dma_addr; 74 dma_addr_t dma_addr;
75 u32 mem_size; 75 u32 mem_size;
76 /* helpers */ 76 /* helpers */
@@ -79,14 +79,11 @@ struct uart_cpm_port {
79 /* Keep track of 'odd' SMC2 wirings */ 79 /* Keep track of 'odd' SMC2 wirings */
80 int is_portb; 80 int is_portb;
81 /* wait on close if needed */ 81 /* wait on close if needed */
82 int wait_closing; 82 int wait_closing;
83 /* value to combine with opcode to form cpm command */ 83 /* value to combine with opcode to form cpm command */
84 u32 command; 84 u32 command;
85}; 85};
86 86
87#ifndef CONFIG_PPC_CPM_NEW_BINDING
88extern int cpm_uart_port_map[UART_NR];
89#endif
90extern int cpm_uart_nr; 87extern int cpm_uart_nr;
91extern struct uart_cpm_port cpm_uart_ports[UART_NR]; 88extern struct uart_cpm_port cpm_uart_ports[UART_NR];
92 89
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c
index a19dc7ef8861..43f58dc69fc9 100644
--- a/drivers/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/serial/cpm_uart/cpm_uart_core.c
@@ -13,7 +13,7 @@
13 * Copyright (C) 2004, 2007 Freescale Semiconductor, Inc. 13 * Copyright (C) 2004, 2007 Freescale Semiconductor, Inc.
14 * (C) 2004 Intracom, S.A. 14 * (C) 2004 Intracom, S.A.
15 * (C) 2005-2006 MontaVista Software, Inc. 15 * (C) 2005-2006 MontaVista Software, Inc.
16 * Vitaly Bordug <vbordug@ru.mvista.com> 16 * Vitaly Bordug <vbordug@ru.mvista.com>
17 * 17 *
18 * This program is free software; you can redistribute it and/or modify 18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by 19 * it under the terms of the GNU General Public License as published by
@@ -42,6 +42,7 @@
42#include <linux/bootmem.h> 42#include <linux/bootmem.h>
43#include <linux/dma-mapping.h> 43#include <linux/dma-mapping.h>
44#include <linux/fs_uart_pd.h> 44#include <linux/fs_uart_pd.h>
45#include <linux/of_platform.h>
45 46
46#include <asm/io.h> 47#include <asm/io.h>
47#include <asm/irq.h> 48#include <asm/irq.h>
@@ -49,10 +50,6 @@
49#include <asm/fs_pd.h> 50#include <asm/fs_pd.h>
50#include <asm/udbg.h> 51#include <asm/udbg.h>
51 52
52#ifdef CONFIG_PPC_CPM_NEW_BINDING
53#include <linux/of_platform.h>
54#endif
55
56#if defined(CONFIG_SERIAL_CPM_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) 53#if defined(CONFIG_SERIAL_CPM_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
57#define SUPPORT_SYSRQ 54#define SUPPORT_SYSRQ
58#endif 55#endif
@@ -72,59 +69,6 @@ static void cpm_uart_initbd(struct uart_cpm_port *pinfo);
72 69
73/**************************************************************/ 70/**************************************************************/
74 71
75#ifndef CONFIG_PPC_CPM_NEW_BINDING
76/* Track which ports are configured as uarts */
77int cpm_uart_port_map[UART_NR];
78/* How many ports did we config as uarts */
79int cpm_uart_nr;
80
81/* Place-holder for board-specific stuff */
82struct platform_device* __attribute__ ((weak)) __init
83early_uart_get_pdev(int index)
84{
85 return NULL;
86}
87
88
89static void cpm_uart_count(void)
90{
91 cpm_uart_nr = 0;
92#ifdef CONFIG_SERIAL_CPM_SMC1
93 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1;
94#endif
95#ifdef CONFIG_SERIAL_CPM_SMC2
96 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2;
97#endif
98#ifdef CONFIG_SERIAL_CPM_SCC1
99 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1;
100#endif
101#ifdef CONFIG_SERIAL_CPM_SCC2
102 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2;
103#endif
104#ifdef CONFIG_SERIAL_CPM_SCC3
105 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3;
106#endif
107#ifdef CONFIG_SERIAL_CPM_SCC4
108 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4;
109#endif
110}
111
112/* Get UART number by its id */
113static int cpm_uart_id2nr(int id)
114{
115 int i;
116 if (id < UART_NR) {
117 for (i=0; i<UART_NR; i++) {
118 if (cpm_uart_port_map[i] == id)
119 return i;
120 }
121 }
122
123 /* not found or invalid argument */
124 return -1;
125}
126#endif
127
128/* 72/*
129 * Check, if transmit buffers are processed 73 * Check, if transmit buffers are processed
130*/ 74*/
@@ -935,7 +879,6 @@ static struct uart_ops cpm_uart_pops = {
935 .verify_port = cpm_uart_verify_port, 879 .verify_port = cpm_uart_verify_port,
936}; 880};
937 881
938#ifdef CONFIG_PPC_CPM_NEW_BINDING
939struct uart_cpm_port cpm_uart_ports[UART_NR]; 882struct uart_cpm_port cpm_uart_ports[UART_NR];
940 883
941static int cpm_uart_init_port(struct device_node *np, 884static int cpm_uart_init_port(struct device_node *np,
@@ -1012,153 +955,6 @@ out_mem:
1012 return ret; 955 return ret;
1013} 956}
1014 957
1015#else
1016
1017struct uart_cpm_port cpm_uart_ports[UART_NR] = {
1018 [UART_SMC1] = {
1019 .port = {
1020 .irq = SMC1_IRQ,
1021 .ops = &cpm_uart_pops,
1022 .iotype = UPIO_MEM,
1023 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SMC1].port.lock),
1024 },
1025 .flags = FLAG_SMC,
1026 .tx_nrfifos = TX_NUM_FIFO,
1027 .tx_fifosize = TX_BUF_SIZE,
1028 .rx_nrfifos = RX_NUM_FIFO,
1029 .rx_fifosize = RX_BUF_SIZE,
1030 .set_lineif = smc1_lineif,
1031 },
1032 [UART_SMC2] = {
1033 .port = {
1034 .irq = SMC2_IRQ,
1035 .ops = &cpm_uart_pops,
1036 .iotype = UPIO_MEM,
1037 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SMC2].port.lock),
1038 },
1039 .flags = FLAG_SMC,
1040 .tx_nrfifos = TX_NUM_FIFO,
1041 .tx_fifosize = TX_BUF_SIZE,
1042 .rx_nrfifos = RX_NUM_FIFO,
1043 .rx_fifosize = RX_BUF_SIZE,
1044 .set_lineif = smc2_lineif,
1045#ifdef CONFIG_SERIAL_CPM_ALT_SMC2
1046 .is_portb = 1,
1047#endif
1048 },
1049 [UART_SCC1] = {
1050 .port = {
1051 .irq = SCC1_IRQ,
1052 .ops = &cpm_uart_pops,
1053 .iotype = UPIO_MEM,
1054 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC1].port.lock),
1055 },
1056 .tx_nrfifos = TX_NUM_FIFO,
1057 .tx_fifosize = TX_BUF_SIZE,
1058 .rx_nrfifos = RX_NUM_FIFO,
1059 .rx_fifosize = RX_BUF_SIZE,
1060 .set_lineif = scc1_lineif,
1061 .wait_closing = SCC_WAIT_CLOSING,
1062 },
1063 [UART_SCC2] = {
1064 .port = {
1065 .irq = SCC2_IRQ,
1066 .ops = &cpm_uart_pops,
1067 .iotype = UPIO_MEM,
1068 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC2].port.lock),
1069 },
1070 .tx_nrfifos = TX_NUM_FIFO,
1071 .tx_fifosize = TX_BUF_SIZE,
1072 .rx_nrfifos = RX_NUM_FIFO,
1073 .rx_fifosize = RX_BUF_SIZE,
1074 .set_lineif = scc2_lineif,
1075 .wait_closing = SCC_WAIT_CLOSING,
1076 },
1077 [UART_SCC3] = {
1078 .port = {
1079 .irq = SCC3_IRQ,
1080 .ops = &cpm_uart_pops,
1081 .iotype = UPIO_MEM,
1082 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC3].port.lock),
1083 },
1084 .tx_nrfifos = TX_NUM_FIFO,
1085 .tx_fifosize = TX_BUF_SIZE,
1086 .rx_nrfifos = RX_NUM_FIFO,
1087 .rx_fifosize = RX_BUF_SIZE,
1088 .set_lineif = scc3_lineif,
1089 .wait_closing = SCC_WAIT_CLOSING,
1090 },
1091 [UART_SCC4] = {
1092 .port = {
1093 .irq = SCC4_IRQ,
1094 .ops = &cpm_uart_pops,
1095 .iotype = UPIO_MEM,
1096 .lock = __SPIN_LOCK_UNLOCKED(cpm_uart_ports[UART_SCC4].port.lock),
1097 },
1098 .tx_nrfifos = TX_NUM_FIFO,
1099 .tx_fifosize = TX_BUF_SIZE,
1100 .rx_nrfifos = RX_NUM_FIFO,
1101 .rx_fifosize = RX_BUF_SIZE,
1102 .set_lineif = scc4_lineif,
1103 .wait_closing = SCC_WAIT_CLOSING,
1104 },
1105};
1106
1107int cpm_uart_drv_get_platform_data(struct platform_device *pdev, int is_con)
1108{
1109 struct resource *r;
1110 struct fs_uart_platform_info *pdata = pdev->dev.platform_data;
1111 int idx; /* It is UART_SMCx or UART_SCCx index */
1112 struct uart_cpm_port *pinfo;
1113 int line;
1114 u32 mem, pram;
1115
1116 idx = pdata->fs_no = fs_uart_get_id(pdata);
1117
1118 line = cpm_uart_id2nr(idx);
1119 if(line < 0) {
1120 printk(KERN_ERR"%s(): port %d is not registered", __func__, idx);
1121 return -EINVAL;
1122 }
1123
1124 pinfo = (struct uart_cpm_port *) &cpm_uart_ports[idx];
1125
1126 pinfo->brg = pdata->brg;
1127
1128 if (!is_con) {
1129 pinfo->port.line = line;
1130 pinfo->port.flags = UPF_BOOT_AUTOCONF;
1131 }
1132
1133 if (!(r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs")))
1134 return -EINVAL;
1135 mem = (u32)ioremap(r->start, r->end - r->start + 1);
1136
1137 if (!(r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram")))
1138 return -EINVAL;
1139 pram = (u32)ioremap(r->start, r->end - r->start + 1);
1140
1141 if(idx > fsid_smc2_uart) {
1142 pinfo->sccp = (scc_t *)mem;
1143 pinfo->sccup = (scc_uart_t *)pram;
1144 } else {
1145 pinfo->smcp = (smc_t *)mem;
1146 pinfo->smcup = (smc_uart_t *)pram;
1147 }
1148 pinfo->tx_nrfifos = pdata->tx_num_fifo;
1149 pinfo->tx_fifosize = pdata->tx_buf_size;
1150
1151 pinfo->rx_nrfifos = pdata->rx_num_fifo;
1152 pinfo->rx_fifosize = pdata->rx_buf_size;
1153
1154 pinfo->port.uartclk = pdata->uart_clk;
1155 pinfo->port.mapbase = (unsigned long)mem;
1156 pinfo->port.irq = platform_get_irq(pdev, 0);
1157
1158 return 0;
1159}
1160#endif
1161
1162#ifdef CONFIG_SERIAL_CPM_CONSOLE 958#ifdef CONFIG_SERIAL_CPM_CONSOLE
1163/* 959/*
1164 * Print a string to the serial port trying not to disturb 960 * Print a string to the serial port trying not to disturb
@@ -1169,12 +965,7 @@ int cpm_uart_drv_get_platform_data(struct platform_device *pdev, int is_con)
1169static void cpm_uart_console_write(struct console *co, const char *s, 965static void cpm_uart_console_write(struct console *co, const char *s,
1170 u_int count) 966 u_int count)
1171{ 967{
1172#ifdef CONFIG_PPC_CPM_NEW_BINDING
1173 struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index]; 968 struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
1174#else
1175 struct uart_cpm_port *pinfo =
1176 &cpm_uart_ports[cpm_uart_port_map[co->index]];
1177#endif
1178 unsigned int i; 969 unsigned int i;
1179 cbd_t __iomem *bdp, *bdbase; 970 cbd_t __iomem *bdp, *bdbase;
1180 unsigned char *cp; 971 unsigned char *cp;
@@ -1252,7 +1043,6 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
1252 struct uart_cpm_port *pinfo; 1043 struct uart_cpm_port *pinfo;
1253 struct uart_port *port; 1044 struct uart_port *port;
1254 1045
1255#ifdef CONFIG_PPC_CPM_NEW_BINDING
1256 struct device_node *np = NULL; 1046 struct device_node *np = NULL;
1257 int i = 0; 1047 int i = 0;
1258 1048
@@ -1284,35 +1074,6 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
1284 if (ret) 1074 if (ret)
1285 return ret; 1075 return ret;
1286 1076
1287#else
1288
1289 struct fs_uart_platform_info *pdata;
1290 struct platform_device* pdev = early_uart_get_pdev(co->index);
1291
1292 if (!pdev) {
1293 pr_info("cpm_uart: console: compat mode\n");
1294 /* compatibility - will be cleaned up */
1295 cpm_uart_init_portdesc();
1296 }
1297
1298 port =
1299 (struct uart_port *)&cpm_uart_ports[cpm_uart_port_map[co->index]];
1300 pinfo = (struct uart_cpm_port *)port;
1301 if (!pdev) {
1302 if (pinfo->set_lineif)
1303 pinfo->set_lineif(pinfo);
1304 } else {
1305 pdata = pdev->dev.platform_data;
1306 if (pdata)
1307 if (pdata->init_ioports)
1308 pdata->init_ioports(pdata);
1309
1310 cpm_uart_drv_get_platform_data(pdev, 1);
1311 }
1312
1313 pinfo->flags |= FLAG_CONSOLE;
1314#endif
1315
1316 if (options) { 1077 if (options) {
1317 uart_parse_options(options, &baud, &parity, &bits, &flow); 1078 uart_parse_options(options, &baud, &parity, &bits, &flow);
1318 } else { 1079 } else {
@@ -1386,7 +1147,6 @@ static struct uart_driver cpm_reg = {
1386 .nr = UART_NR, 1147 .nr = UART_NR,
1387}; 1148};
1388 1149
1389#ifdef CONFIG_PPC_CPM_NEW_BINDING
1390static int probe_index; 1150static int probe_index;
1391 1151
1392static int __devinit cpm_uart_probe(struct of_device *ofdev, 1152static int __devinit cpm_uart_probe(struct of_device *ofdev,
@@ -1457,135 +1217,6 @@ static void __exit cpm_uart_exit(void)
1457 of_unregister_platform_driver(&cpm_uart_driver); 1217 of_unregister_platform_driver(&cpm_uart_driver);
1458 uart_unregister_driver(&cpm_reg); 1218 uart_unregister_driver(&cpm_reg);
1459} 1219}
1460#else
1461static int cpm_uart_drv_probe(struct device *dev)
1462{
1463 struct platform_device *pdev = to_platform_device(dev);
1464 struct fs_uart_platform_info *pdata;
1465 int ret = -ENODEV;
1466
1467 if(!pdev) {
1468 printk(KERN_ERR"CPM UART: platform data missing!\n");
1469 return ret;
1470 }
1471
1472 pdata = pdev->dev.platform_data;
1473
1474 if ((ret = cpm_uart_drv_get_platform_data(pdev, 0)))
1475 return ret;
1476
1477 pr_debug("cpm_uart_drv_probe: Adding CPM UART %d\n", cpm_uart_id2nr(pdata->fs_no));
1478
1479 if (pdata->init_ioports)
1480 pdata->init_ioports(pdata);
1481
1482 ret = uart_add_one_port(&cpm_reg, &cpm_uart_ports[pdata->fs_no].port);
1483
1484 return ret;
1485}
1486
1487static int cpm_uart_drv_remove(struct device *dev)
1488{
1489 struct platform_device *pdev = to_platform_device(dev);
1490 struct fs_uart_platform_info *pdata = pdev->dev.platform_data;
1491
1492 pr_debug("cpm_uart_drv_remove: Removing CPM UART %d\n",
1493 cpm_uart_id2nr(pdata->fs_no));
1494
1495 uart_remove_one_port(&cpm_reg, &cpm_uart_ports[pdata->fs_no].port);
1496 return 0;
1497}
1498
1499static struct device_driver cpm_smc_uart_driver = {
1500 .name = "fsl-cpm-smc:uart",
1501 .bus = &platform_bus_type,
1502 .probe = cpm_uart_drv_probe,
1503 .remove = cpm_uart_drv_remove,
1504};
1505
1506static struct device_driver cpm_scc_uart_driver = {
1507 .name = "fsl-cpm-scc:uart",
1508 .bus = &platform_bus_type,
1509 .probe = cpm_uart_drv_probe,
1510 .remove = cpm_uart_drv_remove,
1511};
1512
1513/*
1514 This is supposed to match uart devices on platform bus,
1515 */
1516static int match_is_uart (struct device* dev, void* data)
1517{
1518 struct platform_device* pdev = container_of(dev, struct platform_device, dev);
1519 int ret = 0;
1520 /* this was setfunc as uart */
1521 if(strstr(pdev->name,":uart")) {
1522 ret = 1;
1523 }
1524 return ret;
1525}
1526
1527
1528static int cpm_uart_init(void) {
1529
1530 int ret;
1531 int i;
1532 struct device *dev;
1533 printk(KERN_INFO "Serial: CPM driver $Revision: 0.02 $\n");
1534
1535 /* lookup the bus for uart devices */
1536 dev = bus_find_device(&platform_bus_type, NULL, 0, match_is_uart);
1537
1538 /* There are devices on the bus - all should be OK */
1539 if (dev) {
1540 cpm_uart_count();
1541 cpm_reg.nr = cpm_uart_nr;
1542
1543 if (!(ret = uart_register_driver(&cpm_reg))) {
1544 if ((ret = driver_register(&cpm_smc_uart_driver))) {
1545 uart_unregister_driver(&cpm_reg);
1546 return ret;
1547 }
1548 if ((ret = driver_register(&cpm_scc_uart_driver))) {
1549 driver_unregister(&cpm_scc_uart_driver);
1550 uart_unregister_driver(&cpm_reg);
1551 }
1552 }
1553 } else {
1554 /* No capable platform devices found - falling back to legacy mode */
1555 pr_info("cpm_uart: WARNING: no UART devices found on platform bus!\n");
1556 pr_info(
1557 "cpm_uart: the driver will guess configuration, but this mode is no longer supported.\n");
1558
1559 /* Don't run this again, if the console driver did it already */
1560 if (cpm_uart_nr == 0)
1561 cpm_uart_init_portdesc();
1562
1563 cpm_reg.nr = cpm_uart_nr;
1564 ret = uart_register_driver(&cpm_reg);
1565
1566 if (ret)
1567 return ret;
1568
1569 for (i = 0; i < cpm_uart_nr; i++) {
1570 int con = cpm_uart_port_map[i];
1571 cpm_uart_ports[con].port.line = i;
1572 cpm_uart_ports[con].port.flags = UPF_BOOT_AUTOCONF;
1573 if (cpm_uart_ports[con].set_lineif)
1574 cpm_uart_ports[con].set_lineif(&cpm_uart_ports[con]);
1575 uart_add_one_port(&cpm_reg, &cpm_uart_ports[con].port);
1576 }
1577
1578 }
1579 return ret;
1580}
1581
1582static void __exit cpm_uart_exit(void)
1583{
1584 driver_unregister(&cpm_scc_uart_driver);
1585 driver_unregister(&cpm_smc_uart_driver);
1586 uart_unregister_driver(&cpm_reg);
1587}
1588#endif
1589 1220
1590module_init(cpm_uart_init); 1221module_init(cpm_uart_init);
1591module_exit(cpm_uart_exit); 1222module_exit(cpm_uart_exit);
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm1.c b/drivers/serial/cpm_uart/cpm_uart_cpm1.c
index 74f1432bb248..0f0aff06c596 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm1.c
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm1.c
@@ -9,7 +9,7 @@
9 * Copyright (C) 2004 Freescale Semiconductor, Inc. 9 * Copyright (C) 2004 Freescale Semiconductor, Inc.
10 * (C) 2004 Intracom, S.A. 10 * (C) 2004 Intracom, S.A.
11 * (C) 2006 MontaVista Software, Inc. 11 * (C) 2006 MontaVista Software, Inc.
12 * Vitaly Bordug <vbordug@ru.mvista.com> 12 * Vitaly Bordug <vbordug@ru.mvista.com>
13 * 13 *
14 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
@@ -51,7 +51,6 @@
51 51
52/**************************************************************/ 52/**************************************************************/
53 53
54#ifdef CONFIG_PPC_CPM_NEW_BINDING
55void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) 54void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
56{ 55{
57 cpm_command(port->command, cmd); 56 cpm_command(port->command, cmd);
@@ -68,75 +67,6 @@ void cpm_uart_unmap_pram(struct uart_cpm_port *port, void __iomem *pram)
68 iounmap(pram); 67 iounmap(pram);
69} 68}
70 69
71#else
72void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
73{
74 ushort val;
75 int line = port - cpm_uart_ports;
76 volatile cpm8xx_t *cp = cpmp;
77
78 switch (line) {
79 case UART_SMC1:
80 val = mk_cr_cmd(CPM_CR_CH_SMC1, cmd) | CPM_CR_FLG;
81 break;
82 case UART_SMC2:
83 val = mk_cr_cmd(CPM_CR_CH_SMC2, cmd) | CPM_CR_FLG;
84 break;
85 case UART_SCC1:
86 val = mk_cr_cmd(CPM_CR_CH_SCC1, cmd) | CPM_CR_FLG;
87 break;
88 case UART_SCC2:
89 val = mk_cr_cmd(CPM_CR_CH_SCC2, cmd) | CPM_CR_FLG;
90 break;
91 case UART_SCC3:
92 val = mk_cr_cmd(CPM_CR_CH_SCC3, cmd) | CPM_CR_FLG;
93 break;
94 case UART_SCC4:
95 val = mk_cr_cmd(CPM_CR_CH_SCC4, cmd) | CPM_CR_FLG;
96 break;
97 default:
98 return;
99
100 }
101 cp->cp_cpcr = val;
102 while (cp->cp_cpcr & CPM_CR_FLG) ;
103}
104
105void smc1_lineif(struct uart_cpm_port *pinfo)
106{
107 pinfo->brg = 1;
108}
109
110void smc2_lineif(struct uart_cpm_port *pinfo)
111{
112 pinfo->brg = 2;
113}
114
115void scc1_lineif(struct uart_cpm_port *pinfo)
116{
117 /* XXX SCC1: insert port configuration here */
118 pinfo->brg = 1;
119}
120
121void scc2_lineif(struct uart_cpm_port *pinfo)
122{
123 /* XXX SCC2: insert port configuration here */
124 pinfo->brg = 2;
125}
126
127void scc3_lineif(struct uart_cpm_port *pinfo)
128{
129 /* XXX SCC3: insert port configuration here */
130 pinfo->brg = 3;
131}
132
133void scc4_lineif(struct uart_cpm_port *pinfo)
134{
135 /* XXX SCC4: insert port configuration here */
136 pinfo->brg = 4;
137}
138#endif
139
140/* 70/*
141 * Allocate DP-Ram and memory buffers. We need to allocate a transmit and 71 * Allocate DP-Ram and memory buffers. We need to allocate a transmit and
142 * receive buffer descriptors from dual port ram, and a character 72 * receive buffer descriptors from dual port ram, and a character
@@ -205,101 +135,3 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo)
205 135
206 cpm_dpfree(pinfo->dp_addr); 136 cpm_dpfree(pinfo->dp_addr);
207} 137}
208
209#ifndef CONFIG_PPC_CPM_NEW_BINDING
210/* Setup any dynamic params in the uart desc */
211int cpm_uart_init_portdesc(void)
212{
213 pr_debug("CPM uart[-]:init portdesc\n");
214
215 cpm_uart_nr = 0;
216#ifdef CONFIG_SERIAL_CPM_SMC1
217 cpm_uart_ports[UART_SMC1].smcp = &cpmp->cp_smc[0];
218/*
219 * Is SMC1 being relocated?
220 */
221# ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH
222 cpm_uart_ports[UART_SMC1].smcup =
223 (smc_uart_t *) & cpmp->cp_dparam[0x3C0];
224# else
225 cpm_uart_ports[UART_SMC1].smcup =
226 (smc_uart_t *) & cpmp->cp_dparam[PROFF_SMC1];
227# endif
228 cpm_uart_ports[UART_SMC1].port.mapbase =
229 (unsigned long)&cpmp->cp_smc[0];
230 cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX);
231 cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
232 cpm_uart_ports[UART_SMC1].port.uartclk = uart_clock();
233 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1;
234#endif
235
236#ifdef CONFIG_SERIAL_CPM_SMC2
237 cpm_uart_ports[UART_SMC2].smcp = &cpmp->cp_smc[1];
238 cpm_uart_ports[UART_SMC2].smcup =
239 (smc_uart_t *) & cpmp->cp_dparam[PROFF_SMC2];
240 cpm_uart_ports[UART_SMC2].port.mapbase =
241 (unsigned long)&cpmp->cp_smc[1];
242 cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX);
243 cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
244 cpm_uart_ports[UART_SMC2].port.uartclk = uart_clock();
245 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2;
246#endif
247
248#ifdef CONFIG_SERIAL_CPM_SCC1
249 cpm_uart_ports[UART_SCC1].sccp = &cpmp->cp_scc[0];
250 cpm_uart_ports[UART_SCC1].sccup =
251 (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC1];
252 cpm_uart_ports[UART_SCC1].port.mapbase =
253 (unsigned long)&cpmp->cp_scc[0];
254 cpm_uart_ports[UART_SCC1].sccp->scc_sccm &=
255 ~(UART_SCCM_TX | UART_SCCM_RX);
256 cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &=
257 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
258 cpm_uart_ports[UART_SCC1].port.uartclk = uart_clock();
259 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1;
260#endif
261
262#ifdef CONFIG_SERIAL_CPM_SCC2
263 cpm_uart_ports[UART_SCC2].sccp = &cpmp->cp_scc[1];
264 cpm_uart_ports[UART_SCC2].sccup =
265 (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC2];
266 cpm_uart_ports[UART_SCC2].port.mapbase =
267 (unsigned long)&cpmp->cp_scc[1];
268 cpm_uart_ports[UART_SCC2].sccp->scc_sccm &=
269 ~(UART_SCCM_TX | UART_SCCM_RX);
270 cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &=
271 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
272 cpm_uart_ports[UART_SCC2].port.uartclk = uart_clock();
273 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2;
274#endif
275
276#ifdef CONFIG_SERIAL_CPM_SCC3
277 cpm_uart_ports[UART_SCC3].sccp = &cpmp->cp_scc[2];
278 cpm_uart_ports[UART_SCC3].sccup =
279 (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC3];
280 cpm_uart_ports[UART_SCC3].port.mapbase =
281 (unsigned long)&cpmp->cp_scc[2];
282 cpm_uart_ports[UART_SCC3].sccp->scc_sccm &=
283 ~(UART_SCCM_TX | UART_SCCM_RX);
284 cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &=
285 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
286 cpm_uart_ports[UART_SCC3].port.uartclk = uart_clock();
287 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3;
288#endif
289
290#ifdef CONFIG_SERIAL_CPM_SCC4
291 cpm_uart_ports[UART_SCC4].sccp = &cpmp->cp_scc[3];
292 cpm_uart_ports[UART_SCC4].sccup =
293 (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC4];
294 cpm_uart_ports[UART_SCC4].port.mapbase =
295 (unsigned long)&cpmp->cp_scc[3];
296 cpm_uart_ports[UART_SCC4].sccp->scc_sccm &=
297 ~(UART_SCCM_TX | UART_SCCM_RX);
298 cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &=
299 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
300 cpm_uart_ports[UART_SCC4].port.uartclk = uart_clock();
301 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4;
302#endif
303 return 0;
304}
305#endif
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm1.h b/drivers/serial/cpm_uart/cpm_uart_cpm1.h
index ddf46d3c964b..10eecd6af6d4 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm1.h
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm1.h
@@ -2,7 +2,7 @@
2 * linux/drivers/serial/cpm_uart/cpm_uart_cpm1.h 2 * linux/drivers/serial/cpm_uart/cpm_uart_cpm1.h
3 * 3 *
4 * Driver for CPM (SCC/SMC) serial ports 4 * Driver for CPM (SCC/SMC) serial ports
5 * 5 *
6 * definitions for cpm1 6 * definitions for cpm1
7 * 7 *
8 */ 8 */
@@ -12,16 +12,6 @@
12 12
13#include <asm/cpm1.h> 13#include <asm/cpm1.h>
14 14
15/* defines for IRQs */
16#ifndef CONFIG_PPC_CPM_NEW_BINDING
17#define SMC1_IRQ (CPM_IRQ_OFFSET + CPMVEC_SMC1)
18#define SMC2_IRQ (CPM_IRQ_OFFSET + CPMVEC_SMC2)
19#define SCC1_IRQ (CPM_IRQ_OFFSET + CPMVEC_SCC1)
20#define SCC2_IRQ (CPM_IRQ_OFFSET + CPMVEC_SCC2)
21#define SCC3_IRQ (CPM_IRQ_OFFSET + CPMVEC_SCC3)
22#define SCC4_IRQ (CPM_IRQ_OFFSET + CPMVEC_SCC4)
23#endif
24
25static inline void cpm_set_brg(int brg, int baud) 15static inline void cpm_set_brg(int brg, int baud)
26{ 16{
27 cpm_setbrg(brg, baud); 17 cpm_setbrg(brg, baud);
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm2.c b/drivers/serial/cpm_uart/cpm_uart_cpm2.c
index bb862e2f54cf..b8db4d3eed36 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm2.c
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.c
@@ -5,11 +5,11 @@
5 * 5 *
6 * Maintainer: Kumar Gala (galak@kernel.crashing.org) (CPM2) 6 * Maintainer: Kumar Gala (galak@kernel.crashing.org) (CPM2)
7 * Pantelis Antoniou (panto@intracom.gr) (CPM1) 7 * Pantelis Antoniou (panto@intracom.gr) (CPM1)
8 * 8 *
9 * Copyright (C) 2004 Freescale Semiconductor, Inc. 9 * Copyright (C) 2004 Freescale Semiconductor, Inc.
10 * (C) 2004 Intracom, S.A. 10 * (C) 2004 Intracom, S.A.
11 * (C) 2006 MontaVista Software, Inc. 11 * (C) 2006 MontaVista Software, Inc.
12 * Vitaly Bordug <vbordug@ru.mvista.com> 12 * Vitaly Bordug <vbordug@ru.mvista.com>
13 * 13 *
14 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
@@ -41,9 +41,7 @@
41#include <asm/io.h> 41#include <asm/io.h>
42#include <asm/irq.h> 42#include <asm/irq.h>
43#include <asm/fs_pd.h> 43#include <asm/fs_pd.h>
44#ifdef CONFIG_PPC_CPM_NEW_BINDING
45#include <asm/prom.h> 44#include <asm/prom.h>
46#endif
47 45
48#include <linux/serial_core.h> 46#include <linux/serial_core.h>
49#include <linux/kernel.h> 47#include <linux/kernel.h>
@@ -52,7 +50,6 @@
52 50
53/**************************************************************/ 51/**************************************************************/
54 52
55#ifdef CONFIG_PPC_CPM_NEW_BINDING
56void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd) 53void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
57{ 54{
58 cpm_command(port->command, cmd); 55 cpm_command(port->command, cmd);
@@ -106,174 +103,8 @@ void cpm_uart_unmap_pram(struct uart_cpm_port *port, void __iomem *pram)
106 iounmap(pram); 103 iounmap(pram);
107} 104}
108 105
109#else
110void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
111{
112 ulong val;
113 int line = port - cpm_uart_ports;
114 volatile cpm_cpm2_t *cp = cpm2_map(im_cpm);
115
116
117 switch (line) {
118 case UART_SMC1:
119 val = mk_cr_cmd(CPM_CR_SMC1_PAGE, CPM_CR_SMC1_SBLOCK, 0,
120 cmd) | CPM_CR_FLG;
121 break;
122 case UART_SMC2:
123 val = mk_cr_cmd(CPM_CR_SMC2_PAGE, CPM_CR_SMC2_SBLOCK, 0,
124 cmd) | CPM_CR_FLG;
125 break;
126 case UART_SCC1:
127 val = mk_cr_cmd(CPM_CR_SCC1_PAGE, CPM_CR_SCC1_SBLOCK, 0,
128 cmd) | CPM_CR_FLG;
129 break;
130 case UART_SCC2:
131 val = mk_cr_cmd(CPM_CR_SCC2_PAGE, CPM_CR_SCC2_SBLOCK, 0,
132 cmd) | CPM_CR_FLG;
133 break;
134 case UART_SCC3:
135 val = mk_cr_cmd(CPM_CR_SCC3_PAGE, CPM_CR_SCC3_SBLOCK, 0,
136 cmd) | CPM_CR_FLG;
137 break;
138 case UART_SCC4:
139 val = mk_cr_cmd(CPM_CR_SCC4_PAGE, CPM_CR_SCC4_SBLOCK, 0,
140 cmd) | CPM_CR_FLG;
141 break;
142 default:
143 return;
144
145 }
146 cp->cp_cpcr = val;
147 while (cp->cp_cpcr & CPM_CR_FLG) ;
148
149 cpm2_unmap(cp);
150}
151
152void smc1_lineif(struct uart_cpm_port *pinfo)
153{
154 volatile iop_cpm2_t *io = cpm2_map(im_ioport);
155 volatile cpmux_t *cpmux = cpm2_map(im_cpmux);
156
157 /* SMC1 is only on port D */
158 io->iop_ppard |= 0x00c00000;
159 io->iop_pdird |= 0x00400000;
160 io->iop_pdird &= ~0x00800000;
161 io->iop_psord &= ~0x00c00000;
162
163 /* Wire BRG1 to SMC1 */
164 cpmux->cmx_smr &= 0x0f;
165 pinfo->brg = 1;
166
167 cpm2_unmap(cpmux);
168 cpm2_unmap(io);
169}
170
171void smc2_lineif(struct uart_cpm_port *pinfo)
172{
173 volatile iop_cpm2_t *io = cpm2_map(im_ioport);
174 volatile cpmux_t *cpmux = cpm2_map(im_cpmux);
175
176 /* SMC2 is only on port A */
177 io->iop_ppara |= 0x00c00000;
178 io->iop_pdira |= 0x00400000;
179 io->iop_pdira &= ~0x00800000;
180 io->iop_psora &= ~0x00c00000;
181
182 /* Wire BRG2 to SMC2 */
183 cpmux->cmx_smr &= 0xf0;
184 pinfo->brg = 2;
185
186 cpm2_unmap(cpmux);
187 cpm2_unmap(io);
188}
189
190void scc1_lineif(struct uart_cpm_port *pinfo)
191{
192 volatile iop_cpm2_t *io = cpm2_map(im_ioport);
193 volatile cpmux_t *cpmux = cpm2_map(im_cpmux);
194
195 /* Use Port D for SCC1 instead of other functions. */
196 io->iop_ppard |= 0x00000003;
197 io->iop_psord &= ~0x00000001; /* Rx */
198 io->iop_psord |= 0x00000002; /* Tx */
199 io->iop_pdird &= ~0x00000001; /* Rx */
200 io->iop_pdird |= 0x00000002; /* Tx */
201
202 /* Wire BRG1 to SCC1 */
203 cpmux->cmx_scr &= 0x00ffffff;
204 cpmux->cmx_scr |= 0x00000000;
205 pinfo->brg = 1;
206
207 cpm2_unmap(cpmux);
208 cpm2_unmap(io);
209}
210
211void scc2_lineif(struct uart_cpm_port *pinfo)
212{
213 /*
214 * STx GP3 uses the SCC2 secondary option pin assignment
215 * which this driver doesn't account for in the static
216 * pin assignments. This kind of board specific info
217 * really has to get out of the driver so boards can
218 * be supported in a sane fashion.
219 */
220 volatile cpmux_t *cpmux = cpm2_map(im_cpmux);
221#ifndef CONFIG_STX_GP3
222 volatile iop_cpm2_t *io = cpm2_map(im_ioport);
223
224 io->iop_pparb |= 0x008b0000;
225 io->iop_pdirb |= 0x00880000;
226 io->iop_psorb |= 0x00880000;
227 io->iop_pdirb &= ~0x00030000;
228 io->iop_psorb &= ~0x00030000;
229#endif
230 cpmux->cmx_scr &= 0xff00ffff;
231 cpmux->cmx_scr |= 0x00090000;
232 pinfo->brg = 2;
233
234 cpm2_unmap(cpmux);
235 cpm2_unmap(io);
236}
237
238void scc3_lineif(struct uart_cpm_port *pinfo)
239{
240 volatile iop_cpm2_t *io = cpm2_map(im_ioport);
241 volatile cpmux_t *cpmux = cpm2_map(im_cpmux);
242
243 io->iop_pparb |= 0x008b0000;
244 io->iop_pdirb |= 0x00880000;
245 io->iop_psorb |= 0x00880000;
246 io->iop_pdirb &= ~0x00030000;
247 io->iop_psorb &= ~0x00030000;
248 cpmux->cmx_scr &= 0xffff00ff;
249 cpmux->cmx_scr |= 0x00001200;
250 pinfo->brg = 3;
251
252 cpm2_unmap(cpmux);
253 cpm2_unmap(io);
254}
255
256void scc4_lineif(struct uart_cpm_port *pinfo)
257{
258 volatile iop_cpm2_t *io = cpm2_map(im_ioport);
259 volatile cpmux_t *cpmux = cpm2_map(im_cpmux);
260
261 io->iop_ppard |= 0x00000600;
262 io->iop_psord &= ~0x00000600; /* Tx/Rx */
263 io->iop_pdird &= ~0x00000200; /* Rx */
264 io->iop_pdird |= 0x00000400; /* Tx */
265
266 cpmux->cmx_scr &= 0xffffff00;
267 cpmux->cmx_scr |= 0x0000001b;
268 pinfo->brg = 4;
269
270 cpm2_unmap(cpmux);
271 cpm2_unmap(io);
272}
273#endif
274
275/* 106/*
276 * Allocate DP-Ram and memory buffers. We need to allocate a transmit and 107 * Allocate DP-Ram and memory buffers. We need to allocate a transmit and
277 * receive buffer descriptors from dual port ram, and a character 108 * receive buffer descriptors from dual port ram, and a character
278 * buffer area from host mem. If we are allocating for the console we need 109 * buffer area from host mem. If we are allocating for the console we need
279 * to do it from bootmem 110 * to do it from bootmem
@@ -340,111 +171,3 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo)
340 171
341 cpm_dpfree(pinfo->dp_addr); 172 cpm_dpfree(pinfo->dp_addr);
342} 173}
343
344#ifndef CONFIG_PPC_CPM_NEW_BINDING
345/* Setup any dynamic params in the uart desc */
346int cpm_uart_init_portdesc(void)
347{
348#if defined(CONFIG_SERIAL_CPM_SMC1) || defined(CONFIG_SERIAL_CPM_SMC2)
349 u16 *addr;
350#endif
351 pr_debug("CPM uart[-]:init portdesc\n");
352
353 cpm_uart_nr = 0;
354#ifdef CONFIG_SERIAL_CPM_SMC1
355 cpm_uart_ports[UART_SMC1].smcp = (smc_t *) cpm2_map(im_smc[0]);
356 cpm_uart_ports[UART_SMC1].port.mapbase =
357 (unsigned long)cpm_uart_ports[UART_SMC1].smcp;
358
359 cpm_uart_ports[UART_SMC1].smcup =
360 (smc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SMC1], PROFF_SMC_SIZE);
361 addr = (u16 *)cpm2_map_size(im_dprambase[PROFF_SMC1_BASE], 2);
362 *addr = PROFF_SMC1;
363 cpm2_unmap(addr);
364
365 cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX);
366 cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
367 cpm_uart_ports[UART_SMC1].port.uartclk = uart_clock();
368 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1;
369#endif
370
371#ifdef CONFIG_SERIAL_CPM_SMC2
372 cpm_uart_ports[UART_SMC2].smcp = (smc_t *) cpm2_map(im_smc[1]);
373 cpm_uart_ports[UART_SMC2].port.mapbase =
374 (unsigned long)cpm_uart_ports[UART_SMC2].smcp;
375
376 cpm_uart_ports[UART_SMC2].smcup =
377 (smc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SMC2], PROFF_SMC_SIZE);
378 addr = (u16 *)cpm2_map_size(im_dprambase[PROFF_SMC2_BASE], 2);
379 *addr = PROFF_SMC2;
380 cpm2_unmap(addr);
381
382 cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX);
383 cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
384 cpm_uart_ports[UART_SMC2].port.uartclk = uart_clock();
385 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2;
386#endif
387
388#ifdef CONFIG_SERIAL_CPM_SCC1
389 cpm_uart_ports[UART_SCC1].sccp = (scc_t *) cpm2_map(im_scc[0]);
390 cpm_uart_ports[UART_SCC1].port.mapbase =
391 (unsigned long)cpm_uart_ports[UART_SCC1].sccp;
392 cpm_uart_ports[UART_SCC1].sccup =
393 (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC1], PROFF_SCC_SIZE);
394
395 cpm_uart_ports[UART_SCC1].sccp->scc_sccm &=
396 ~(UART_SCCM_TX | UART_SCCM_RX);
397 cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &=
398 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
399 cpm_uart_ports[UART_SCC1].port.uartclk = uart_clock();
400 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1;
401#endif
402
403#ifdef CONFIG_SERIAL_CPM_SCC2
404 cpm_uart_ports[UART_SCC2].sccp = (scc_t *) cpm2_map(im_scc[1]);
405 cpm_uart_ports[UART_SCC2].port.mapbase =
406 (unsigned long)cpm_uart_ports[UART_SCC2].sccp;
407 cpm_uart_ports[UART_SCC2].sccup =
408 (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC2], PROFF_SCC_SIZE);
409
410 cpm_uart_ports[UART_SCC2].sccp->scc_sccm &=
411 ~(UART_SCCM_TX | UART_SCCM_RX);
412 cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &=
413 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
414 cpm_uart_ports[UART_SCC2].port.uartclk = uart_clock();
415 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2;
416#endif
417
418#ifdef CONFIG_SERIAL_CPM_SCC3
419 cpm_uart_ports[UART_SCC3].sccp = (scc_t *) cpm2_map(im_scc[2]);
420 cpm_uart_ports[UART_SCC3].port.mapbase =
421 (unsigned long)cpm_uart_ports[UART_SCC3].sccp;
422 cpm_uart_ports[UART_SCC3].sccup =
423 (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC3], PROFF_SCC_SIZE);
424
425 cpm_uart_ports[UART_SCC3].sccp->scc_sccm &=
426 ~(UART_SCCM_TX | UART_SCCM_RX);
427 cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &=
428 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
429 cpm_uart_ports[UART_SCC3].port.uartclk = uart_clock();
430 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3;
431#endif
432
433#ifdef CONFIG_SERIAL_CPM_SCC4
434 cpm_uart_ports[UART_SCC4].sccp = (scc_t *) cpm2_map(im_scc[3]);
435 cpm_uart_ports[UART_SCC4].port.mapbase =
436 (unsigned long)cpm_uart_ports[UART_SCC4].sccp;
437 cpm_uart_ports[UART_SCC4].sccup =
438 (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC4], PROFF_SCC_SIZE);
439
440 cpm_uart_ports[UART_SCC4].sccp->scc_sccm &=
441 ~(UART_SCCM_TX | UART_SCCM_RX);
442 cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &=
443 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
444 cpm_uart_ports[UART_SCC4].port.uartclk = uart_clock();
445 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4;
446#endif
447
448 return 0;
449}
450#endif
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm2.h b/drivers/serial/cpm_uart/cpm_uart_cpm2.h
index 40006a7dce46..7194c63dcf5f 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm2.h
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.h
@@ -2,7 +2,7 @@
2 * linux/drivers/serial/cpm_uart/cpm_uart_cpm2.h 2 * linux/drivers/serial/cpm_uart/cpm_uart_cpm2.h
3 * 3 *
4 * Driver for CPM (SCC/SMC) serial ports 4 * Driver for CPM (SCC/SMC) serial ports
5 * 5 *
6 * definitions for cpm2 6 * definitions for cpm2
7 * 7 *
8 */ 8 */
@@ -12,16 +12,6 @@
12 12
13#include <asm/cpm2.h> 13#include <asm/cpm2.h>
14 14
15/* defines for IRQs */
16#ifndef CONFIG_PPC_CPM_NEW_BINDING
17#define SMC1_IRQ SIU_INT_SMC1
18#define SMC2_IRQ SIU_INT_SMC2
19#define SCC1_IRQ SIU_INT_SCC1
20#define SCC2_IRQ SIU_INT_SCC2
21#define SCC3_IRQ SIU_INT_SCC3
22#define SCC4_IRQ SIU_INT_SCC4
23#endif
24
25static inline void cpm_set_brg(int brg, int baud) 15static inline void cpm_set_brg(int brg, int baud)
26{ 16{
27 cpm_setbrg(brg, baud); 17 cpm_setbrg(brg, baud);
diff --git a/include/asm-powerpc/cache.h b/include/asm-powerpc/cache.h
index 53507046a1b1..81de6eb3455d 100644
--- a/include/asm-powerpc/cache.h
+++ b/include/asm-powerpc/cache.h
@@ -8,6 +8,9 @@
8#if defined(CONFIG_8xx) || defined(CONFIG_403GCX) 8#if defined(CONFIG_8xx) || defined(CONFIG_403GCX)
9#define L1_CACHE_SHIFT 4 9#define L1_CACHE_SHIFT 4
10#define MAX_COPY_PREFETCH 1 10#define MAX_COPY_PREFETCH 1
11#elif defined(CONFIG_PPC_E500MC)
12#define L1_CACHE_SHIFT 6
13#define MAX_COPY_PREFETCH 4
11#elif defined(CONFIG_PPC32) 14#elif defined(CONFIG_PPC32)
12#define L1_CACHE_SHIFT 5 15#define L1_CACHE_SHIFT 5
13#define MAX_COPY_PREFETCH 4 16#define MAX_COPY_PREFETCH 4
diff --git a/include/asm-powerpc/cpm.h b/include/asm-powerpc/cpm.h
index ede38ffe466a..63a55337c2de 100644
--- a/include/asm-powerpc/cpm.h
+++ b/include/asm-powerpc/cpm.h
@@ -96,6 +96,7 @@ unsigned long cpm_muram_alloc(unsigned long size, unsigned long align);
96int cpm_muram_free(unsigned long offset); 96int cpm_muram_free(unsigned long offset);
97unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size); 97unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size);
98void __iomem *cpm_muram_addr(unsigned long offset); 98void __iomem *cpm_muram_addr(unsigned long offset);
99unsigned long cpm_muram_offset(void __iomem *addr);
99dma_addr_t cpm_muram_dma(void __iomem *addr); 100dma_addr_t cpm_muram_dma(void __iomem *addr);
100int cpm_command(u32 command, u8 opcode); 101int cpm_command(u32 command, u8 opcode);
101 102
diff --git a/include/asm-powerpc/cpm1.h b/include/asm-powerpc/cpm1.h
index 3df439678006..2ff798744c1d 100644
--- a/include/asm-powerpc/cpm1.h
+++ b/include/asm-powerpc/cpm1.h
@@ -42,35 +42,15 @@
42 42
43#define mk_cr_cmd(CH, CMD) ((CMD << 8) | (CH << 4)) 43#define mk_cr_cmd(CH, CMD) ((CMD << 8) | (CH << 4))
44 44
45#ifndef CONFIG_PPC_CPM_NEW_BINDING
46/* The dual ported RAM is multi-functional. Some areas can be (and are
47 * being) used for microcode. There is an area that can only be used
48 * as data ram for buffer descriptors, which is all we use right now.
49 * Currently the first 512 and last 256 bytes are used for microcode.
50 */
51#define CPM_DATAONLY_BASE ((uint)0x0800)
52#define CPM_DATAONLY_SIZE ((uint)0x0700)
53#define CPM_DP_NOSPACE ((uint)0x7fffffff)
54#endif
55
56/* Export the base address of the communication processor registers 45/* Export the base address of the communication processor registers
57 * and dual port ram. 46 * and dual port ram.
58 */ 47 */
59extern cpm8xx_t __iomem *cpmp; /* Pointer to comm processor */ 48extern cpm8xx_t __iomem *cpmp; /* Pointer to comm processor */
60 49
61#ifdef CONFIG_PPC_CPM_NEW_BINDING
62#define cpm_dpalloc cpm_muram_alloc 50#define cpm_dpalloc cpm_muram_alloc
63#define cpm_dpfree cpm_muram_free 51#define cpm_dpfree cpm_muram_free
64#define cpm_dpram_addr cpm_muram_addr 52#define cpm_dpram_addr cpm_muram_addr
65#define cpm_dpram_phys cpm_muram_dma 53#define cpm_dpram_phys cpm_muram_dma
66#else
67extern unsigned long cpm_dpalloc(uint size, uint align);
68extern int cpm_dpfree(unsigned long offset);
69extern unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align);
70extern void cpm_dpdump(void);
71extern void *cpm_dpram_addr(unsigned long offset);
72extern uint cpm_dpram_phys(u8 *addr);
73#endif
74 54
75extern void cpm_setbrg(uint brg, uint rate); 55extern void cpm_setbrg(uint brg, uint rate);
76 56
diff --git a/include/asm-powerpc/cpm2.h b/include/asm-powerpc/cpm2.h
index 4c85ed9cd43f..2c7fd9cee291 100644
--- a/include/asm-powerpc/cpm2.h
+++ b/include/asm-powerpc/cpm2.h
@@ -78,24 +78,6 @@
78#define mk_cr_cmd(PG, SBC, MCN, OP) \ 78#define mk_cr_cmd(PG, SBC, MCN, OP) \
79 ((PG << 26) | (SBC << 21) | (MCN << 6) | OP) 79 ((PG << 26) | (SBC << 21) | (MCN << 6) | OP)
80 80
81#ifndef CONFIG_PPC_CPM_NEW_BINDING
82/* Dual Port RAM addresses. The first 16K is available for almost
83 * any CPM use, so we put the BDs there. The first 128 bytes are
84 * used for SMC1 and SMC2 parameter RAM, so we start allocating
85 * BDs above that. All of this must change when we start
86 * downloading RAM microcode.
87 */
88#define CPM_DATAONLY_BASE ((uint)128)
89#define CPM_DP_NOSPACE ((uint)0x7fffffff)
90#if defined(CONFIG_8272) || defined(CONFIG_MPC8555)
91#define CPM_DATAONLY_SIZE ((uint)(8 * 1024) - CPM_DATAONLY_BASE)
92#define CPM_FCC_SPECIAL_BASE ((uint)0x00009000)
93#else
94#define CPM_DATAONLY_SIZE ((uint)(16 * 1024) - CPM_DATAONLY_BASE)
95#define CPM_FCC_SPECIAL_BASE ((uint)0x0000b000)
96#endif
97#endif
98
99/* The number of pages of host memory we allocate for CPM. This is 81/* The number of pages of host memory we allocate for CPM. This is
100 * done early in kernel initialization to get physically contiguous 82 * done early in kernel initialization to get physically contiguous
101 * pages. 83 * pages.
@@ -107,17 +89,9 @@
107 */ 89 */
108extern cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor */ 90extern cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor */
109 91
110#ifdef CONFIG_PPC_CPM_NEW_BINDING
111#define cpm_dpalloc cpm_muram_alloc 92#define cpm_dpalloc cpm_muram_alloc
112#define cpm_dpfree cpm_muram_free 93#define cpm_dpfree cpm_muram_free
113#define cpm_dpram_addr cpm_muram_addr 94#define cpm_dpram_addr cpm_muram_addr
114#else
115extern unsigned long cpm_dpalloc(uint size, uint align);
116extern int cpm_dpfree(unsigned long offset);
117extern unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align);
118extern void cpm_dpdump(void);
119extern void *cpm_dpram_addr(unsigned long offset);
120#endif
121 95
122extern void cpm_setbrg(uint brg, uint rate); 96extern void cpm_setbrg(uint brg, uint rate);
123extern void cpm2_fastbrg(uint brg, uint rate, int div16); 97extern void cpm2_fastbrg(uint brg, uint rate, int div16);
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h
index 1e79673b7316..9106113ae0b5 100644
--- a/include/asm-powerpc/cputable.h
+++ b/include/asm-powerpc/cputable.h
@@ -132,7 +132,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,
132#define CPU_FTR_TAU ASM_CONST(0x0000000000000010) 132#define CPU_FTR_TAU ASM_CONST(0x0000000000000010)
133#define CPU_FTR_CAN_DOZE ASM_CONST(0x0000000000000020) 133#define CPU_FTR_CAN_DOZE ASM_CONST(0x0000000000000020)
134#define CPU_FTR_USE_TB ASM_CONST(0x0000000000000040) 134#define CPU_FTR_USE_TB ASM_CONST(0x0000000000000040)
135#define CPU_FTR_604_PERF_MON ASM_CONST(0x0000000000000080) 135#define CPU_FTR_L2CSR ASM_CONST(0x0000000000000080)
136#define CPU_FTR_601 ASM_CONST(0x0000000000000100) 136#define CPU_FTR_601 ASM_CONST(0x0000000000000100)
137#define CPU_FTR_HPTE_TABLE ASM_CONST(0x0000000000000200) 137#define CPU_FTR_HPTE_TABLE ASM_CONST(0x0000000000000200)
138#define CPU_FTR_CAN_NAP ASM_CONST(0x0000000000000400) 138#define CPU_FTR_CAN_NAP ASM_CONST(0x0000000000000400)
@@ -245,8 +245,7 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,
245 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \ 245 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \
246 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 246 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE)
247#define CPU_FTRS_604 (CPU_FTR_COMMON | \ 247#define CPU_FTRS_604 (CPU_FTR_COMMON | \
248 CPU_FTR_USE_TB | CPU_FTR_604_PERF_MON | CPU_FTR_HPTE_TABLE | \ 248 CPU_FTR_USE_TB | CPU_FTR_HPTE_TABLE | CPU_FTR_PPC_LE)
249 CPU_FTR_PPC_LE)
250#define CPU_FTRS_740_NOTAU (CPU_FTR_COMMON | \ 249#define CPU_FTRS_740_NOTAU (CPU_FTR_COMMON | \
251 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \ 250 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | CPU_FTR_L2CR | \
252 CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE) 251 CPU_FTR_HPTE_TABLE | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE)
@@ -347,10 +346,14 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,
347#define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ 346#define CPU_FTRS_E200 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \
348 CPU_FTR_NODSISRALIGN | CPU_FTR_COHERENT_ICACHE | \ 347 CPU_FTR_NODSISRALIGN | CPU_FTR_COHERENT_ICACHE | \
349 CPU_FTR_UNIFIED_ID_CACHE) 348 CPU_FTR_UNIFIED_ID_CACHE)
350#define CPU_FTRS_E500 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ 349#define CPU_FTRS_E500 (CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \
350 CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_NODSISRALIGN)
351#define CPU_FTRS_E500_2 (CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \
352 CPU_FTR_SPE_COMP | CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_BIG_PHYS | \
351 CPU_FTR_NODSISRALIGN) 353 CPU_FTR_NODSISRALIGN)
352#define CPU_FTRS_E500_2 (CPU_FTR_USE_TB | CPU_FTR_SPE_COMP | \ 354#define CPU_FTRS_E500MC (CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB | \
353 CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN) 355 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_BIG_PHYS | CPU_FTR_NODSISRALIGN | \
356 CPU_FTR_L2CSR)
354#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) 357#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN)
355 358
356/* 64-bit CPUs */ 359/* 64-bit CPUs */
@@ -421,7 +424,7 @@ enum {
421 CPU_FTRS_E200 | 424 CPU_FTRS_E200 |
422#endif 425#endif
423#ifdef CONFIG_E500 426#ifdef CONFIG_E500
424 CPU_FTRS_E500 | CPU_FTRS_E500_2 | 427 CPU_FTRS_E500 | CPU_FTRS_E500_2 | CPU_FTRS_E500MC |
425#endif 428#endif
426 0, 429 0,
427}; 430};
@@ -461,7 +464,7 @@ enum {
461 CPU_FTRS_E200 & 464 CPU_FTRS_E200 &
462#endif 465#endif
463#ifdef CONFIG_E500 466#ifdef CONFIG_E500
464 CPU_FTRS_E500 & CPU_FTRS_E500_2 & 467 CPU_FTRS_E500 & CPU_FTRS_E500_2 & CPU_FTRS_E500MC &
465#endif 468#endif
466 CPU_FTRS_POSSIBLE, 469 CPU_FTRS_POSSIBLE,
467}; 470};
diff --git a/include/asm-powerpc/fsl_gtm.h b/include/asm-powerpc/fsl_gtm.h
new file mode 100644
index 000000000000..8e8c9b5032d3
--- /dev/null
+++ b/include/asm-powerpc/fsl_gtm.h
@@ -0,0 +1,47 @@
1/*
2 * Freescale General-purpose Timers Module
3 *
4 * Copyright (c) Freescale Semicondutor, Inc. 2006.
5 * Shlomi Gridish <gridish@freescale.com>
6 * Jerry Huang <Chang-Ming.Huang@freescale.com>
7 * Copyright (c) MontaVista Software, Inc. 2008.
8 * Anton Vorontsov <avorontsov@ru.mvista.com>
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
14 */
15
16#ifndef __ASM_FSL_GTM_H
17#define __ASM_FSL_GTM_H
18
19#include <linux/types.h>
20
21struct gtm;
22
23struct gtm_timer {
24 unsigned int irq;
25
26 struct gtm *gtm;
27 bool requested;
28 u8 __iomem *gtcfr;
29 __be16 __iomem *gtmdr;
30 __be16 __iomem *gtpsr;
31 __be16 __iomem *gtcnr;
32 __be16 __iomem *gtrfr;
33 __be16 __iomem *gtevr;
34};
35
36extern struct gtm_timer *gtm_get_timer16(void);
37extern struct gtm_timer *gtm_get_specific_timer16(struct gtm *gtm,
38 unsigned int timer);
39extern void gtm_put_timer16(struct gtm_timer *tmr);
40extern int gtm_set_timer16(struct gtm_timer *tmr, unsigned long usec,
41 bool reload);
42extern int gtm_set_exact_timer16(struct gtm_timer *tmr, u16 usec,
43 bool reload);
44extern void gtm_stop_timer16(struct gtm_timer *tmr);
45extern void gtm_ack_timer16(struct gtm_timer *tmr, u16 events);
46
47#endif /* __ASM_FSL_GTM_H */
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h
index 54ed64df95b8..989922621e35 100644
--- a/include/asm-powerpc/machdep.h
+++ b/include/asm-powerpc/machdep.h
@@ -262,6 +262,7 @@ struct machdep_calls {
262#endif 262#endif
263}; 263};
264 264
265extern void e500_idle(void);
265extern void power4_idle(void); 266extern void power4_idle(void);
266extern void power4_cpu_offline_powersave(void); 267extern void power4_cpu_offline_powersave(void);
267extern void ppc6xx_idle(void); 268extern void ppc6xx_idle(void);
diff --git a/include/asm-powerpc/qe.h b/include/asm-powerpc/qe.h
index c3be6e2e1490..edee15d269ea 100644
--- a/include/asm-powerpc/qe.h
+++ b/include/asm-powerpc/qe.h
@@ -16,6 +16,8 @@
16#define _ASM_POWERPC_QE_H 16#define _ASM_POWERPC_QE_H
17#ifdef __KERNEL__ 17#ifdef __KERNEL__
18 18
19#include <linux/spinlock.h>
20#include <asm/cpm.h>
19#include <asm/immap_qe.h> 21#include <asm/immap_qe.h>
20 22
21#define QE_NUM_OF_SNUM 28 23#define QE_NUM_OF_SNUM 28
@@ -74,10 +76,38 @@ enum qe_clock {
74 QE_CLK_DUMMY 76 QE_CLK_DUMMY
75}; 77};
76 78
79static inline bool qe_clock_is_brg(enum qe_clock clk)
80{
81 return clk >= QE_BRG1 && clk <= QE_BRG16;
82}
83
84extern spinlock_t cmxgcr_lock;
85
77/* Export QE common operations */ 86/* Export QE common operations */
78extern void qe_reset(void); 87extern void __init qe_reset(void);
88
89/* QE PIO */
90#define QE_PIO_PINS 32
91
92struct qe_pio_regs {
93 __be32 cpodr; /* Open drain register */
94 __be32 cpdata; /* Data register */
95 __be32 cpdir1; /* Direction register */
96 __be32 cpdir2; /* Direction register */
97 __be32 cppar1; /* Pin assignment register */
98 __be32 cppar2; /* Pin assignment register */
99#ifdef CONFIG_PPC_85xx
100 u8 pad[8];
101#endif
102};
103
79extern int par_io_init(struct device_node *np); 104extern int par_io_init(struct device_node *np);
80extern int par_io_of_config(struct device_node *np); 105extern int par_io_of_config(struct device_node *np);
106#define QE_PIO_DIR_IN 2
107#define QE_PIO_DIR_OUT 1
108extern void __par_io_config_pin(struct qe_pio_regs __iomem *par_io, u8 pin,
109 int dir, int open_drain, int assignment,
110 int has_irq);
81extern int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain, 111extern int par_io_config_pin(u8 port, u8 pin, int dir, int open_drain,
82 int assignment, int has_irq); 112 int assignment, int has_irq);
83extern int par_io_data_set(u8 port, u8 pin, u8 val); 113extern int par_io_data_set(u8 port, u8 pin, u8 val);
@@ -89,20 +119,13 @@ unsigned int qe_get_brg_clk(void);
89int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier); 119int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier);
90int qe_get_snum(void); 120int qe_get_snum(void);
91void qe_put_snum(u8 snum); 121void qe_put_snum(u8 snum);
92unsigned long qe_muram_alloc(int size, int align); 122/* we actually use cpm_muram implementation, define this for convenience */
93int qe_muram_free(unsigned long offset); 123#define qe_muram_init cpm_muram_init
94unsigned long qe_muram_alloc_fixed(unsigned long offset, int size); 124#define qe_muram_alloc cpm_muram_alloc
95void qe_muram_dump(void); 125#define qe_muram_alloc_fixed cpm_muram_alloc_fixed
96 126#define qe_muram_free cpm_muram_free
97static inline void __iomem *qe_muram_addr(unsigned long offset) 127#define qe_muram_addr cpm_muram_addr
98{ 128#define qe_muram_offset cpm_muram_offset
99 return (void __iomem *)&qe_immr->muram[offset];
100}
101
102static inline unsigned long qe_muram_offset(void __iomem *addr)
103{
104 return addr - (void __iomem *)qe_immr->muram;
105}
106 129
107/* Structure that defines QE firmware binary files. 130/* Structure that defines QE firmware binary files.
108 * 131 *
@@ -156,6 +179,9 @@ int qe_upload_firmware(const struct qe_firmware *firmware);
156/* Obtain information on the uploaded firmware */ 179/* Obtain information on the uploaded firmware */
157struct qe_firmware_info *qe_get_firmware_info(void); 180struct qe_firmware_info *qe_get_firmware_info(void);
158 181
182/* QE USB */
183int qe_usb_clock_set(enum qe_clock clk, int rate);
184
159/* Buffer descriptors */ 185/* Buffer descriptors */
160struct qe_bd { 186struct qe_bd {
161 __be16 status; 187 __be16 status;
@@ -166,20 +192,6 @@ struct qe_bd {
166#define BD_STATUS_MASK 0xffff0000 192#define BD_STATUS_MASK 0xffff0000
167#define BD_LENGTH_MASK 0x0000ffff 193#define BD_LENGTH_MASK 0x0000ffff
168 194
169#define BD_SC_EMPTY 0x8000 /* Receive is empty */
170#define BD_SC_READY 0x8000 /* Transmit is ready */
171#define BD_SC_WRAP 0x2000 /* Last buffer descriptor */
172#define BD_SC_INTRPT 0x1000 /* Interrupt on change */
173#define BD_SC_LAST 0x0800 /* Last buffer in frame */
174#define BD_SC_CM 0x0200 /* Continous mode */
175#define BD_SC_ID 0x0100 /* Rec'd too many idles */
176#define BD_SC_P 0x0100 /* xmt preamble */
177#define BD_SC_BR 0x0020 /* Break received */
178#define BD_SC_FR 0x0010 /* Framing error */
179#define BD_SC_PR 0x0008 /* Parity error */
180#define BD_SC_OV 0x0002 /* Overrun */
181#define BD_SC_CD 0x0001 /* ?? */
182
183/* Alignment */ 195/* Alignment */
184#define QE_INTR_TABLE_ALIGN 16 /* ??? */ 196#define QE_INTR_TABLE_ALIGN 16 /* ??? */
185#define QE_ALIGNMENT_OF_BD 8 197#define QE_ALIGNMENT_OF_BD 8
@@ -254,6 +266,16 @@ enum comm_dir {
254#define QE_CMXGCR_MII_ENET_MNG 0x00007000 266#define QE_CMXGCR_MII_ENET_MNG 0x00007000
255#define QE_CMXGCR_MII_ENET_MNG_SHIFT 12 267#define QE_CMXGCR_MII_ENET_MNG_SHIFT 12
256#define QE_CMXGCR_USBCS 0x0000000f 268#define QE_CMXGCR_USBCS 0x0000000f
269#define QE_CMXGCR_USBCS_CLK3 0x1
270#define QE_CMXGCR_USBCS_CLK5 0x2
271#define QE_CMXGCR_USBCS_CLK7 0x3
272#define QE_CMXGCR_USBCS_CLK9 0x4
273#define QE_CMXGCR_USBCS_CLK13 0x5
274#define QE_CMXGCR_USBCS_CLK17 0x6
275#define QE_CMXGCR_USBCS_CLK19 0x7
276#define QE_CMXGCR_USBCS_CLK21 0x8
277#define QE_CMXGCR_USBCS_BRG9 0x9
278#define QE_CMXGCR_USBCS_BRG10 0xa
257 279
258/* QE CECR Commands. 280/* QE CECR Commands.
259*/ 281*/
@@ -283,7 +305,7 @@ enum comm_dir {
283#define QE_HPAC_START_TX 0x0000060b 305#define QE_HPAC_START_TX 0x0000060b
284#define QE_HPAC_START_RX 0x0000070b 306#define QE_HPAC_START_RX 0x0000070b
285#define QE_USB_STOP_TX 0x0000000a 307#define QE_USB_STOP_TX 0x0000000a
286#define QE_USB_RESTART_TX 0x0000000b 308#define QE_USB_RESTART_TX 0x0000000c
287#define QE_QMC_STOP_TX 0x0000000c 309#define QE_QMC_STOP_TX 0x0000000c
288#define QE_QMC_STOP_RX 0x0000000d 310#define QE_QMC_STOP_RX 0x0000000d
289#define QE_SS7_SU_FIL_RESET 0x0000000e 311#define QE_SS7_SU_FIL_RESET 0x0000000e
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h
index edc0cfd7f6e2..079999b032af 100644
--- a/include/asm-powerpc/reg.h
+++ b/include/asm-powerpc/reg.h
@@ -240,7 +240,7 @@
240#define HID0_DAPUEN (1<<8) /* Debug APU enable */ 240#define HID0_DAPUEN (1<<8) /* Debug APU enable */
241#define HID0_SGE (1<<7) /* Store Gathering Enable */ 241#define HID0_SGE (1<<7) /* Store Gathering Enable */
242#define HID0_SIED (1<<7) /* Serial Instr. Execution [Disable] */ 242#define HID0_SIED (1<<7) /* Serial Instr. Execution [Disable] */
243#define HID0_DFCA (1<<6) /* Data Cache Flush Assist */ 243#define HID0_DCFA (1<<6) /* Data Cache Flush Assist */
244#define HID0_LRSTK (1<<4) /* Link register stack - 745x */ 244#define HID0_LRSTK (1<<4) /* Link register stack - 745x */
245#define HID0_BTIC (1<<5) /* Branch Target Instr Cache Enable */ 245#define HID0_BTIC (1<<5) /* Branch Target Instr Cache Enable */
246#define HID0_ABE (1<<3) /* Address Broadcast Enable */ 246#define HID0_ABE (1<<3) /* Address Broadcast Enable */
diff --git a/include/asm-powerpc/reg_booke.h b/include/asm-powerpc/reg_booke.h
index cf54a3f31753..be980f4ee495 100644
--- a/include/asm-powerpc/reg_booke.h
+++ b/include/asm-powerpc/reg_booke.h
@@ -61,6 +61,8 @@
61#define SPRN_SPEFSCR 0x200 /* SPE & Embedded FP Status & Control */ 61#define SPRN_SPEFSCR 0x200 /* SPE & Embedded FP Status & Control */
62#define SPRN_BBEAR 0x201 /* Branch Buffer Entry Address Register */ 62#define SPRN_BBEAR 0x201 /* Branch Buffer Entry Address Register */
63#define SPRN_BBTAR 0x202 /* Branch Buffer Target Address Register */ 63#define SPRN_BBTAR 0x202 /* Branch Buffer Target Address Register */
64#define SPRN_L1CFG0 0x203 /* L1 Cache Configure Register 0 */
65#define SPRN_L1CFG1 0x204 /* L1 Cache Configure Register 1 */
64#define SPRN_ATB 0x20E /* Alternate Time Base */ 66#define SPRN_ATB 0x20E /* Alternate Time Base */
65#define SPRN_ATBL 0x20E /* Alternate Time Base Lower */ 67#define SPRN_ATBL 0x20E /* Alternate Time Base Lower */
66#define SPRN_ATBU 0x20F /* Alternate Time Base Upper */ 68#define SPRN_ATBU 0x20F /* Alternate Time Base Upper */
@@ -78,6 +80,7 @@
78#define SPRN_DSRR1 0x23F /* Debug Save and Restore Register 1 */ 80#define SPRN_DSRR1 0x23F /* Debug Save and Restore Register 1 */
79#define SPRN_SPRG8 0x25C /* Special Purpose Register General 8 */ 81#define SPRN_SPRG8 0x25C /* Special Purpose Register General 8 */
80#define SPRN_SPRG9 0x25D /* Special Purpose Register General 9 */ 82#define SPRN_SPRG9 0x25D /* Special Purpose Register General 9 */
83#define SPRN_L1CSR2 0x25E /* L1 Cache Control and Status Register 2 */
81#define SPRN_MAS0 0x270 /* MMU Assist Register 0 */ 84#define SPRN_MAS0 0x270 /* MMU Assist Register 0 */
82#define SPRN_MAS1 0x271 /* MMU Assist Register 1 */ 85#define SPRN_MAS1 0x271 /* MMU Assist Register 1 */
83#define SPRN_MAS2 0x272 /* MMU Assist Register 2 */ 86#define SPRN_MAS2 0x272 /* MMU Assist Register 2 */
@@ -108,6 +111,8 @@
108#define SPRN_L1CSR1 0x3F3 /* L1 Cache Control and Status Register 1 */ 111#define SPRN_L1CSR1 0x3F3 /* L1 Cache Control and Status Register 1 */
109#define SPRN_PIT 0x3DB /* Programmable Interval Timer */ 112#define SPRN_PIT 0x3DB /* Programmable Interval Timer */
110#define SPRN_BUCSR 0x3F5 /* Branch Unit Control and Status */ 113#define SPRN_BUCSR 0x3F5 /* Branch Unit Control and Status */
114#define SPRN_L2CSR0 0x3F9 /* L2 Data Cache Control and Status Register 0 */
115#define SPRN_L2CSR1 0x3FA /* L2 Data Cache Control and Status Register 1 */
111#define SPRN_DCCR 0x3FA /* Data Cache Cacheability Register */ 116#define SPRN_DCCR 0x3FA /* Data Cache Cacheability Register */
112#define SPRN_ICCR 0x3FB /* Instruction Cache Cacheability Register */ 117#define SPRN_ICCR 0x3FB /* Instruction Cache Cacheability Register */
113#define SPRN_SVR 0x3FF /* System Version Register */ 118#define SPRN_SVR 0x3FF /* System Version Register */
@@ -210,6 +215,7 @@
210#ifdef CONFIG_BOOKE 215#ifdef CONFIG_BOOKE
211#define DBSR_IC 0x08000000 /* Instruction Completion */ 216#define DBSR_IC 0x08000000 /* Instruction Completion */
212#define DBSR_BT 0x04000000 /* Branch Taken */ 217#define DBSR_BT 0x04000000 /* Branch Taken */
218#define DBSR_IRPT 0x02000000 /* Exception Debug Event */
213#define DBSR_TIE 0x01000000 /* Trap Instruction Event */ 219#define DBSR_TIE 0x01000000 /* Trap Instruction Event */
214#define DBSR_IAC1 0x00800000 /* Instr Address Compare 1 Event */ 220#define DBSR_IAC1 0x00800000 /* Instr Address Compare 1 Event */
215#define DBSR_IAC2 0x00400000 /* Instr Address Compare 2 Event */ 221#define DBSR_IAC2 0x00400000 /* Instr Address Compare 2 Event */
@@ -219,10 +225,14 @@
219#define DBSR_DAC1W 0x00040000 /* Data Addr Compare 1 Write Event */ 225#define DBSR_DAC1W 0x00040000 /* Data Addr Compare 1 Write Event */
220#define DBSR_DAC2R 0x00020000 /* Data Addr Compare 2 Read Event */ 226#define DBSR_DAC2R 0x00020000 /* Data Addr Compare 2 Read Event */
221#define DBSR_DAC2W 0x00010000 /* Data Addr Compare 2 Write Event */ 227#define DBSR_DAC2W 0x00010000 /* Data Addr Compare 2 Write Event */
228#define DBSR_RET 0x00008000 /* Return Debug Event */
229#define DBSR_CIRPT 0x00000040 /* Critical Interrupt Taken Event */
230#define DBSR_CRET 0x00000020 /* Critical Return Debug Event */
222#endif 231#endif
223#ifdef CONFIG_40x 232#ifdef CONFIG_40x
224#define DBSR_IC 0x80000000 /* Instruction Completion */ 233#define DBSR_IC 0x80000000 /* Instruction Completion */
225#define DBSR_BT 0x40000000 /* Branch taken */ 234#define DBSR_BT 0x40000000 /* Branch taken */
235#define DBSR_IRPT 0x20000000 /* Exception Debug Event */
226#define DBSR_TIE 0x10000000 /* Trap Instruction debug Event */ 236#define DBSR_TIE 0x10000000 /* Trap Instruction debug Event */
227#define DBSR_IAC1 0x04000000 /* Instruction Address Compare 1 Event */ 237#define DBSR_IAC1 0x04000000 /* Instruction Address Compare 1 Event */
228#define DBSR_IAC2 0x02000000 /* Instruction Address Compare 2 Event */ 238#define DBSR_IAC2 0x02000000 /* Instruction Address Compare 2 Event */
@@ -253,6 +263,7 @@
253#define ESR_BO 0x00020000 /* Byte Ordering */ 263#define ESR_BO 0x00020000 /* Byte Ordering */
254 264
255/* Bit definitions related to the DBCR0. */ 265/* Bit definitions related to the DBCR0. */
266#if defined(CONFIG_40x)
256#define DBCR0_EDM 0x80000000 /* External Debug Mode */ 267#define DBCR0_EDM 0x80000000 /* External Debug Mode */
257#define DBCR0_IDM 0x40000000 /* Internal Debug Mode */ 268#define DBCR0_IDM 0x40000000 /* Internal Debug Mode */
258#define DBCR0_RST 0x30000000 /* all the bits in the RST field */ 269#define DBCR0_RST 0x30000000 /* all the bits in the RST field */
@@ -261,20 +272,69 @@
261#define DBCR0_RST_CORE 0x10000000 /* Core Reset */ 272#define DBCR0_RST_CORE 0x10000000 /* Core Reset */
262#define DBCR0_RST_NONE 0x00000000 /* No Reset */ 273#define DBCR0_RST_NONE 0x00000000 /* No Reset */
263#define DBCR0_IC 0x08000000 /* Instruction Completion */ 274#define DBCR0_IC 0x08000000 /* Instruction Completion */
275#define DBCR0_ICMP DBCR0_IC
264#define DBCR0_BT 0x04000000 /* Branch Taken */ 276#define DBCR0_BT 0x04000000 /* Branch Taken */
277#define DBCR0_BRT DBCR0_BT
265#define DBCR0_EDE 0x02000000 /* Exception Debug Event */ 278#define DBCR0_EDE 0x02000000 /* Exception Debug Event */
279#define DBCR0_IRPT DBCR0_EDE
266#define DBCR0_TDE 0x01000000 /* TRAP Debug Event */ 280#define DBCR0_TDE 0x01000000 /* TRAP Debug Event */
267#define DBCR0_IA1 0x00800000 /* Instr Addr compare 1 enable */ 281#define DBCR0_IA1 0x00800000 /* Instr Addr compare 1 enable */
282#define DBCR0_IAC1 DBCR0_IA1
268#define DBCR0_IA2 0x00400000 /* Instr Addr compare 2 enable */ 283#define DBCR0_IA2 0x00400000 /* Instr Addr compare 2 enable */
284#define DBCR0_IAC2 DBCR0_IA2
269#define DBCR0_IA12 0x00200000 /* Instr Addr 1-2 range enable */ 285#define DBCR0_IA12 0x00200000 /* Instr Addr 1-2 range enable */
270#define DBCR0_IA12X 0x00100000 /* Instr Addr 1-2 range eXclusive */ 286#define DBCR0_IA12X 0x00100000 /* Instr Addr 1-2 range eXclusive */
271#define DBCR0_IA3 0x00080000 /* Instr Addr compare 3 enable */ 287#define DBCR0_IA3 0x00080000 /* Instr Addr compare 3 enable */
288#define DBCR0_IAC3 DBCR0_IA3
272#define DBCR0_IA4 0x00040000 /* Instr Addr compare 4 enable */ 289#define DBCR0_IA4 0x00040000 /* Instr Addr compare 4 enable */
290#define DBCR0_IAC4 DBCR0_IA4
273#define DBCR0_IA34 0x00020000 /* Instr Addr 3-4 range Enable */ 291#define DBCR0_IA34 0x00020000 /* Instr Addr 3-4 range Enable */
274#define DBCR0_IA34X 0x00010000 /* Instr Addr 3-4 range eXclusive */ 292#define DBCR0_IA34X 0x00010000 /* Instr Addr 3-4 range eXclusive */
275#define DBCR0_IA12T 0x00008000 /* Instr Addr 1-2 range Toggle */ 293#define DBCR0_IA12T 0x00008000 /* Instr Addr 1-2 range Toggle */
276#define DBCR0_IA34T 0x00004000 /* Instr Addr 3-4 range Toggle */ 294#define DBCR0_IA34T 0x00004000 /* Instr Addr 3-4 range Toggle */
277#define DBCR0_FT 0x00000001 /* Freeze Timers on debug event */ 295#define DBCR0_FT 0x00000001 /* Freeze Timers on debug event */
296#elif defined(CONFIG_BOOKE)
297#define DBCR0_EDM 0x80000000 /* External Debug Mode */
298#define DBCR0_IDM 0x40000000 /* Internal Debug Mode */
299#define DBCR0_RST 0x30000000 /* all the bits in the RST field */
300/* DBCR0_RST_* is 44x specific and not followed in fsl booke */
301#define DBCR0_RST_SYSTEM 0x30000000 /* System Reset */
302#define DBCR0_RST_CHIP 0x20000000 /* Chip Reset */
303#define DBCR0_RST_CORE 0x10000000 /* Core Reset */
304#define DBCR0_RST_NONE 0x00000000 /* No Reset */
305#define DBCR0_ICMP 0x08000000 /* Instruction Completion */
306#define DBCR0_IC DBCR0_ICMP
307#define DBCR0_BRT 0x04000000 /* Branch Taken */
308#define DBCR0_BT DBCR0_BRT
309#define DBCR0_IRPT 0x02000000 /* Exception Debug Event */
310#define DBCR0_TDE 0x01000000 /* TRAP Debug Event */
311#define DBCR0_TIE DBCR0_TDE
312#define DBCR0_IAC1 0x00800000 /* Instr Addr compare 1 enable */
313#define DBCR0_IAC2 0x00400000 /* Instr Addr compare 2 enable */
314#define DBCR0_IAC3 0x00200000 /* Instr Addr compare 3 enable */
315#define DBCR0_IAC4 0x00100000 /* Instr Addr compare 4 enable */
316#define DBCR0_DAC1R 0x00080000 /* DAC 1 Read enable */
317#define DBCR0_DAC1W 0x00040000 /* DAC 1 Write enable */
318#define DBCR0_DAC2R 0x00020000 /* DAC 2 Read enable */
319#define DBCR0_DAC2W 0x00010000 /* DAC 2 Write enable */
320#define DBCR0_RET 0x00008000 /* Return Debug Event */
321#define DBCR0_CIRPT 0x00000040 /* Critical Interrupt Taken Event */
322#define DBCR0_CRET 0x00000020 /* Critical Return Debug Event */
323#define DBCR0_FT 0x00000001 /* Freeze Timers on debug event */
324
325/* Bit definitions related to the DBCR1. */
326#define DBCR1_IAC12M 0x00800000 /* Instr Addr 1-2 range enable */
327#define DBCR1_IAC12MX 0x00C00000 /* Instr Addr 1-2 range eXclusive */
328#define DBCR1_IAC12AT 0x00010000 /* Instr Addr 1-2 range Toggle */
329#define DBCR1_IAC34M 0x00000080 /* Instr Addr 3-4 range enable */
330#define DBCR1_IAC34MX 0x000000C0 /* Instr Addr 3-4 range eXclusive */
331#define DBCR1_IAC34AT 0x00000001 /* Instr Addr 3-4 range Toggle */
332
333/* Bit definitions related to the DBCR2. */
334#define DBCR2_DAC12M 0x00800000 /* DAC 1-2 range enable */
335#define DBCR2_DAC12MX 0x00C00000 /* DAC 1-2 range eXclusive */
336#define DBCR2_DAC12A 0x00200000 /* DAC 1-2 Asynchronous */
337#endif
278 338
279/* Bit definitions related to the TCR. */ 339/* Bit definitions related to the TCR. */
280#define TCR_WP(x) (((x)&0x3)<<30) /* WDT Period */ 340#define TCR_WP(x) (((x)&0x3)<<30) /* WDT Period */
@@ -336,6 +396,20 @@
336#define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */ 396#define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */
337#define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */ 397#define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */
338 398
399/* Bit definitions for L2CSR0. */
400#define L2CSR0_L2E 0x80000000 /* L2 Cache Enable */
401#define L2CSR0_L2PE 0x40000000 /* L2 Cache Parity/ECC Enable */
402#define L2CSR0_L2WP 0x1c000000 /* L2 I/D Way Partioning */
403#define L2CSR0_L2CM 0x03000000 /* L2 Cache Coherency Mode */
404#define L2CSR0_L2FI 0x00200000 /* L2 Cache Flash Invalidate */
405#define L2CSR0_L2IO 0x00100000 /* L2 Cache Instruction Only */
406#define L2CSR0_L2DO 0x00010000 /* L2 Cache Data Only */
407#define L2CSR0_L2REP 0x00003000 /* L2 Line Replacement Algo */
408#define L2CSR0_L2FL 0x00000800 /* L2 Cache Flush */
409#define L2CSR0_L2LFC 0x00000400 /* L2 Cache Lock Flash Clear */
410#define L2CSR0_L2LOA 0x00000080 /* L2 Cache Lock Overflow Allocate */
411#define L2CSR0_L2LO 0x00000020 /* L2 Cache Lock Overflow */
412
339/* Bit definitions for SGR. */ 413/* Bit definitions for SGR. */
340#define SGR_NORMAL 0 /* Speculative fetching allowed. */ 414#define SGR_NORMAL 0 /* Speculative fetching allowed. */
341#define SGR_GUARDED 1 /* Speculative fetching disallowed. */ 415#define SGR_GUARDED 1 /* Speculative fetching disallowed. */
diff --git a/include/asm-powerpc/synch.h b/include/asm-powerpc/synch.h
index 2cda3c38a9fa..42a1ef590690 100644
--- a/include/asm-powerpc/synch.h
+++ b/include/asm-powerpc/synch.h
@@ -4,7 +4,7 @@
4 4
5#include <linux/stringify.h> 5#include <linux/stringify.h>
6 6
7#ifdef __powerpc64__ 7#if defined(__powerpc64__) || defined(CONFIG_PPC_E500MC)
8#define __SUBARCH_HAS_LWSYNC 8#define __SUBARCH_HAS_LWSYNC
9#endif 9#endif
10 10