diff options
Diffstat (limited to 'arch/powerpc')
53 files changed, 1323 insertions, 309 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 1af22579e3d4..79f25cef32df 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -141,7 +141,7 @@ config GENERIC_NVRAM | |||
141 | bool | 141 | bool |
142 | default y if PPC32 | 142 | default y if PPC32 |
143 | 143 | ||
144 | config SCHED_NO_NO_OMIT_FRAME_POINTER | 144 | config SCHED_OMIT_FRAME_POINTER |
145 | bool | 145 | bool |
146 | default y | 146 | default y |
147 | 147 | ||
diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts index 6235fca445de..524af7ef9f26 100644 --- a/arch/powerpc/boot/dts/asp834x-redboot.dts +++ b/arch/powerpc/boot/dts/asp834x-redboot.dts | |||
@@ -199,8 +199,26 @@ | |||
199 | reg = <0x2>; | 199 | reg = <0x2>; |
200 | device_type = "ethernet-phy"; | 200 | device_type = "ethernet-phy"; |
201 | }; | 201 | }; |
202 | |||
203 | tbi0: tbi-phy@11 { | ||
204 | reg = <0x11>; | ||
205 | device_type = "tbi-phy"; | ||
206 | }; | ||
202 | }; | 207 | }; |
203 | 208 | ||
209 | mdio@25520 { | ||
210 | #address-cells = <1>; | ||
211 | #size-cells = <0>; | ||
212 | compatible = "fsl,gianfar-tbi"; | ||
213 | reg = <0x25520 0x20>; | ||
214 | |||
215 | tbi1: tbi-phy@11 { | ||
216 | reg = <0x11>; | ||
217 | device_type = "tbi-phy"; | ||
218 | }; | ||
219 | }; | ||
220 | |||
221 | |||
204 | enet0: ethernet@24000 { | 222 | enet0: ethernet@24000 { |
205 | cell-index = <0>; | 223 | cell-index = <0>; |
206 | device_type = "network"; | 224 | device_type = "network"; |
@@ -210,6 +228,7 @@ | |||
210 | local-mac-address = [ 00 08 e5 11 32 33 ]; | 228 | local-mac-address = [ 00 08 e5 11 32 33 ]; |
211 | interrupts = <32 0x8 33 0x8 34 0x8>; | 229 | interrupts = <32 0x8 33 0x8 34 0x8>; |
212 | interrupt-parent = <&ipic>; | 230 | interrupt-parent = <&ipic>; |
231 | tbi-handle = <&tbi0>; | ||
213 | phy-handle = <&phy0>; | 232 | phy-handle = <&phy0>; |
214 | linux,network-index = <0>; | 233 | linux,network-index = <0>; |
215 | }; | 234 | }; |
@@ -223,6 +242,7 @@ | |||
223 | local-mac-address = [ 00 08 e5 11 32 34 ]; | 242 | local-mac-address = [ 00 08 e5 11 32 34 ]; |
224 | interrupts = <35 0x8 36 0x8 37 0x8>; | 243 | interrupts = <35 0x8 36 0x8 37 0x8>; |
225 | interrupt-parent = <&ipic>; | 244 | interrupt-parent = <&ipic>; |
245 | tbi-handle = <&tbi1>; | ||
226 | phy-handle = <&phy1>; | 246 | phy-handle = <&phy1>; |
227 | linux,network-index = <1>; | 247 | linux,network-index = <1>; |
228 | }; | 248 | }; |
diff --git a/arch/powerpc/boot/dts/ksi8560.dts b/arch/powerpc/boot/dts/ksi8560.dts index 49737589ffc8..3bfff47418db 100644 --- a/arch/powerpc/boot/dts/ksi8560.dts +++ b/arch/powerpc/boot/dts/ksi8560.dts | |||
@@ -141,8 +141,26 @@ | |||
141 | reg = <0x2>; | 141 | reg = <0x2>; |
142 | device_type = "ethernet-phy"; | 142 | device_type = "ethernet-phy"; |
143 | }; | 143 | }; |
144 | |||
145 | tbi0: tbi-phy@11 { | ||
146 | reg = <0x11>; | ||
147 | device_type = "tbi-phy"; | ||
148 | }; | ||
144 | }; | 149 | }; |
145 | 150 | ||
151 | mdio@25520 { | ||
152 | #address-cells = <1>; | ||
153 | #size-cells = <0>; | ||
154 | compatible = "fsl,gianfar-tbi"; | ||
155 | reg = <0x25520 0x20>; | ||
156 | |||
157 | tbi1: tbi-phy@11 { | ||
158 | reg = <0x11>; | ||
159 | device_type = "tbi-phy"; | ||
160 | }; | ||
161 | }; | ||
162 | |||
163 | |||
146 | enet0: ethernet@24000 { | 164 | enet0: ethernet@24000 { |
147 | device_type = "network"; | 165 | device_type = "network"; |
148 | model = "TSEC"; | 166 | model = "TSEC"; |
@@ -152,6 +170,7 @@ | |||
152 | local-mac-address = [ 00 00 00 00 00 00 ]; | 170 | local-mac-address = [ 00 00 00 00 00 00 ]; |
153 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; | 171 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; |
154 | interrupt-parent = <&mpic>; | 172 | interrupt-parent = <&mpic>; |
173 | tbi-handle = <&tbi0>; | ||
155 | phy-handle = <&PHY1>; | 174 | phy-handle = <&PHY1>; |
156 | }; | 175 | }; |
157 | 176 | ||
@@ -164,6 +183,7 @@ | |||
164 | local-mac-address = [ 00 00 00 00 00 00 ]; | 183 | local-mac-address = [ 00 00 00 00 00 00 ]; |
165 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; | 184 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; |
166 | interrupt-parent = <&mpic>; | 185 | interrupt-parent = <&mpic>; |
186 | tbi-handle = <&tbi1>; | ||
167 | phy-handle = <&PHY2>; | 187 | phy-handle = <&PHY2>; |
168 | }; | 188 | }; |
169 | 189 | ||
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts index 503031766825..d4df8b6857a4 100644 --- a/arch/powerpc/boot/dts/mpc8313erdb.dts +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts | |||
@@ -190,6 +190,7 @@ | |||
190 | local-mac-address = [ 00 00 00 00 00 00 ]; | 190 | local-mac-address = [ 00 00 00 00 00 00 ]; |
191 | interrupts = <37 0x8 36 0x8 35 0x8>; | 191 | interrupts = <37 0x8 36 0x8 35 0x8>; |
192 | interrupt-parent = <&ipic>; | 192 | interrupt-parent = <&ipic>; |
193 | tbi-handle = < &tbi0 >; | ||
193 | phy-handle = < &phy1 >; | 194 | phy-handle = < &phy1 >; |
194 | fsl,magic-packet; | 195 | fsl,magic-packet; |
195 | 196 | ||
@@ -210,6 +211,10 @@ | |||
210 | reg = <0x4>; | 211 | reg = <0x4>; |
211 | device_type = "ethernet-phy"; | 212 | device_type = "ethernet-phy"; |
212 | }; | 213 | }; |
214 | tbi0: tbi-phy@11 { | ||
215 | reg = <0x11>; | ||
216 | device_type = "tbi-phy"; | ||
217 | }; | ||
213 | }; | 218 | }; |
214 | }; | 219 | }; |
215 | 220 | ||
@@ -222,9 +227,24 @@ | |||
222 | local-mac-address = [ 00 00 00 00 00 00 ]; | 227 | local-mac-address = [ 00 00 00 00 00 00 ]; |
223 | interrupts = <34 0x8 33 0x8 32 0x8>; | 228 | interrupts = <34 0x8 33 0x8 32 0x8>; |
224 | interrupt-parent = <&ipic>; | 229 | interrupt-parent = <&ipic>; |
230 | tbi-handle = < &tbi1 >; | ||
225 | phy-handle = < &phy4 >; | 231 | phy-handle = < &phy4 >; |
226 | sleep = <&pmc 0x10000000>; | 232 | sleep = <&pmc 0x10000000>; |
227 | fsl,magic-packet; | 233 | fsl,magic-packet; |
234 | |||
235 | mdio@25520 { | ||
236 | #address-cells = <1>; | ||
237 | #size-cells = <0>; | ||
238 | compatible = "fsl,gianfar-tbi"; | ||
239 | reg = <0x25520 0x20>; | ||
240 | |||
241 | tbi1: tbi-phy@11 { | ||
242 | reg = <0x11>; | ||
243 | device_type = "tbi-phy"; | ||
244 | }; | ||
245 | }; | ||
246 | |||
247 | |||
228 | }; | 248 | }; |
229 | 249 | ||
230 | serial0: serial@4500 { | 250 | serial0: serial@4500 { |
diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts index d3d3097b873a..072c9b0f8c8e 100644 --- a/arch/powerpc/boot/dts/mpc8315erdb.dts +++ b/arch/powerpc/boot/dts/mpc8315erdb.dts | |||
@@ -205,8 +205,25 @@ | |||
205 | reg = <0x1>; | 205 | reg = <0x1>; |
206 | device_type = "ethernet-phy"; | 206 | device_type = "ethernet-phy"; |
207 | }; | 207 | }; |
208 | tbi0: tbi-phy@11 { | ||
209 | reg = <0x11>; | ||
210 | device_type = "tbi-phy"; | ||
211 | }; | ||
212 | }; | ||
213 | |||
214 | mdio@25520 { | ||
215 | #address-cells = <1>; | ||
216 | #size-cells = <0>; | ||
217 | compatible = "fsl,gianfar-tbi"; | ||
218 | reg = <0x25520 0x20>; | ||
219 | |||
220 | tbi1: tbi-phy@11 { | ||
221 | reg = <0x11>; | ||
222 | device_type = "tbi-phy"; | ||
223 | }; | ||
208 | }; | 224 | }; |
209 | 225 | ||
226 | |||
210 | enet0: ethernet@24000 { | 227 | enet0: ethernet@24000 { |
211 | cell-index = <0>; | 228 | cell-index = <0>; |
212 | device_type = "network"; | 229 | device_type = "network"; |
@@ -216,6 +233,7 @@ | |||
216 | local-mac-address = [ 00 00 00 00 00 00 ]; | 233 | local-mac-address = [ 00 00 00 00 00 00 ]; |
217 | interrupts = <32 0x8 33 0x8 34 0x8>; | 234 | interrupts = <32 0x8 33 0x8 34 0x8>; |
218 | interrupt-parent = <&ipic>; | 235 | interrupt-parent = <&ipic>; |
236 | tbi-handle = <&tbi0>; | ||
219 | phy-handle = < &phy0 >; | 237 | phy-handle = < &phy0 >; |
220 | }; | 238 | }; |
221 | 239 | ||
@@ -228,6 +246,7 @@ | |||
228 | local-mac-address = [ 00 00 00 00 00 00 ]; | 246 | local-mac-address = [ 00 00 00 00 00 00 ]; |
229 | interrupts = <35 0x8 36 0x8 37 0x8>; | 247 | interrupts = <35 0x8 36 0x8 37 0x8>; |
230 | interrupt-parent = <&ipic>; | 248 | interrupt-parent = <&ipic>; |
249 | tbi-handle = <&tbi1>; | ||
231 | phy-handle = < &phy1 >; | 250 | phy-handle = < &phy1 >; |
232 | }; | 251 | }; |
233 | 252 | ||
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts index 5ba5c6633b81..b5eda94a8e2a 100644 --- a/arch/powerpc/boot/dts/mpc8349emitx.dts +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts | |||
@@ -183,6 +183,22 @@ | |||
183 | reg = <0x1c>; | 183 | reg = <0x1c>; |
184 | device_type = "ethernet-phy"; | 184 | device_type = "ethernet-phy"; |
185 | }; | 185 | }; |
186 | tbi0: tbi-phy@11 { | ||
187 | reg = <0x11>; | ||
188 | device_type = "tbi-phy"; | ||
189 | }; | ||
190 | }; | ||
191 | |||
192 | mdio@25520 { | ||
193 | #address-cells = <1>; | ||
194 | #size-cells = <0>; | ||
195 | compatible = "fsl,gianfar-tbi"; | ||
196 | reg = <0x25520 0x20>; | ||
197 | |||
198 | tbi1: tbi-phy@11 { | ||
199 | reg = <0x11>; | ||
200 | device_type = "tbi-phy"; | ||
201 | }; | ||
186 | }; | 202 | }; |
187 | 203 | ||
188 | enet0: ethernet@24000 { | 204 | enet0: ethernet@24000 { |
@@ -194,6 +210,7 @@ | |||
194 | local-mac-address = [ 00 00 00 00 00 00 ]; | 210 | local-mac-address = [ 00 00 00 00 00 00 ]; |
195 | interrupts = <32 0x8 33 0x8 34 0x8>; | 211 | interrupts = <32 0x8 33 0x8 34 0x8>; |
196 | interrupt-parent = <&ipic>; | 212 | interrupt-parent = <&ipic>; |
213 | tbi-handle = <&tbi0>; | ||
197 | phy-handle = <&phy1c>; | 214 | phy-handle = <&phy1c>; |
198 | linux,network-index = <0>; | 215 | linux,network-index = <0>; |
199 | }; | 216 | }; |
@@ -210,6 +227,7 @@ | |||
210 | /* Vitesse 7385 isn't on the MDIO bus */ | 227 | /* Vitesse 7385 isn't on the MDIO bus */ |
211 | fixed-link = <1 1 1000 0 0>; | 228 | fixed-link = <1 1 1000 0 0>; |
212 | linux,network-index = <1>; | 229 | linux,network-index = <1>; |
230 | tbi-handle = <&tbi1>; | ||
213 | }; | 231 | }; |
214 | 232 | ||
215 | serial0: serial@4500 { | 233 | serial0: serial@4500 { |
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts index fd4bbc4cbe30..c87a6015e165 100644 --- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts +++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts | |||
@@ -162,6 +162,10 @@ | |||
162 | reg = <0x1c>; | 162 | reg = <0x1c>; |
163 | device_type = "ethernet-phy"; | 163 | device_type = "ethernet-phy"; |
164 | }; | 164 | }; |
165 | tbi0: tbi-phy@11 { | ||
166 | reg = <0x11>; | ||
167 | device_type = "tbi-phy"; | ||
168 | }; | ||
165 | }; | 169 | }; |
166 | 170 | ||
167 | enet0: ethernet@24000 { | 171 | enet0: ethernet@24000 { |
@@ -173,6 +177,7 @@ | |||
173 | local-mac-address = [ 00 00 00 00 00 00 ]; | 177 | local-mac-address = [ 00 00 00 00 00 00 ]; |
174 | interrupts = <32 0x8 33 0x8 34 0x8>; | 178 | interrupts = <32 0x8 33 0x8 34 0x8>; |
175 | interrupt-parent = <&ipic>; | 179 | interrupt-parent = <&ipic>; |
180 | tbi-handle = <&tbi0>; | ||
176 | phy-handle = <&phy1c>; | 181 | phy-handle = <&phy1c>; |
177 | linux,network-index = <0>; | 182 | linux,network-index = <0>; |
178 | }; | 183 | }; |
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index c986c541e9bb..d9adba01c09c 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -185,8 +185,25 @@ | |||
185 | reg = <0x1>; | 185 | reg = <0x1>; |
186 | device_type = "ethernet-phy"; | 186 | device_type = "ethernet-phy"; |
187 | }; | 187 | }; |
188 | tbi0: tbi-phy@11 { | ||
189 | reg = <0x11>; | ||
190 | device_type = "tbi-phy"; | ||
191 | }; | ||
192 | }; | ||
193 | |||
194 | mdio@25520 { | ||
195 | #address-cells = <1>; | ||
196 | #size-cells = <0>; | ||
197 | compatible = "fsl,gianfar-tbi"; | ||
198 | reg = <0x25520 0x20>; | ||
199 | |||
200 | tbi1: tbi-phy@11 { | ||
201 | reg = <0x11>; | ||
202 | device_type = "tbi-phy"; | ||
203 | }; | ||
188 | }; | 204 | }; |
189 | 205 | ||
206 | |||
190 | enet0: ethernet@24000 { | 207 | enet0: ethernet@24000 { |
191 | cell-index = <0>; | 208 | cell-index = <0>; |
192 | device_type = "network"; | 209 | device_type = "network"; |
@@ -196,6 +213,7 @@ | |||
196 | local-mac-address = [ 00 00 00 00 00 00 ]; | 213 | local-mac-address = [ 00 00 00 00 00 00 ]; |
197 | interrupts = <32 0x8 33 0x8 34 0x8>; | 214 | interrupts = <32 0x8 33 0x8 34 0x8>; |
198 | interrupt-parent = <&ipic>; | 215 | interrupt-parent = <&ipic>; |
216 | tbi-handle = <&tbi0>; | ||
199 | phy-handle = <&phy0>; | 217 | phy-handle = <&phy0>; |
200 | linux,network-index = <0>; | 218 | linux,network-index = <0>; |
201 | }; | 219 | }; |
@@ -209,6 +227,7 @@ | |||
209 | local-mac-address = [ 00 00 00 00 00 00 ]; | 227 | local-mac-address = [ 00 00 00 00 00 00 ]; |
210 | interrupts = <35 0x8 36 0x8 37 0x8>; | 228 | interrupts = <35 0x8 36 0x8 37 0x8>; |
211 | interrupt-parent = <&ipic>; | 229 | interrupt-parent = <&ipic>; |
230 | tbi-handle = <&tbi1>; | ||
212 | phy-handle = <&phy1>; | 231 | phy-handle = <&phy1>; |
213 | linux,network-index = <1>; | 232 | linux,network-index = <1>; |
214 | }; | 233 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts index 0484561bd2c0..1d14d7052e6d 100644 --- a/arch/powerpc/boot/dts/mpc8377_mds.dts +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts | |||
@@ -193,8 +193,25 @@ | |||
193 | reg = <0x3>; | 193 | reg = <0x3>; |
194 | device_type = "ethernet-phy"; | 194 | device_type = "ethernet-phy"; |
195 | }; | 195 | }; |
196 | tbi0: tbi-phy@11 { | ||
197 | reg = <0x11>; | ||
198 | device_type = "tbi-phy"; | ||
199 | }; | ||
200 | }; | ||
201 | |||
202 | mdio@25520 { | ||
203 | #address-cells = <1>; | ||
204 | #size-cells = <0>; | ||
205 | compatible = "fsl,gianfar-tbi"; | ||
206 | reg = <0x25520 0x20>; | ||
207 | |||
208 | tbi1: tbi-phy@11 { | ||
209 | reg = <0x11>; | ||
210 | device_type = "tbi-phy"; | ||
211 | }; | ||
196 | }; | 212 | }; |
197 | 213 | ||
214 | |||
198 | enet0: ethernet@24000 { | 215 | enet0: ethernet@24000 { |
199 | cell-index = <0>; | 216 | cell-index = <0>; |
200 | device_type = "network"; | 217 | device_type = "network"; |
@@ -205,6 +222,7 @@ | |||
205 | interrupts = <32 0x8 33 0x8 34 0x8>; | 222 | interrupts = <32 0x8 33 0x8 34 0x8>; |
206 | phy-connection-type = "mii"; | 223 | phy-connection-type = "mii"; |
207 | interrupt-parent = <&ipic>; | 224 | interrupt-parent = <&ipic>; |
225 | tbi-handle = <&tbi0>; | ||
208 | phy-handle = <&phy2>; | 226 | phy-handle = <&phy2>; |
209 | }; | 227 | }; |
210 | 228 | ||
@@ -218,6 +236,7 @@ | |||
218 | interrupts = <35 0x8 36 0x8 37 0x8>; | 236 | interrupts = <35 0x8 36 0x8 37 0x8>; |
219 | phy-connection-type = "mii"; | 237 | phy-connection-type = "mii"; |
220 | interrupt-parent = <&ipic>; | 238 | interrupt-parent = <&ipic>; |
239 | tbi-handle = <&tbi1>; | ||
221 | phy-handle = <&phy3>; | 240 | phy-handle = <&phy3>; |
222 | }; | 241 | }; |
223 | 242 | ||
diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts index 9fe8e4c96b18..9413af3b9925 100644 --- a/arch/powerpc/boot/dts/mpc8377_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts | |||
@@ -210,8 +210,25 @@ | |||
210 | reg = <0x2>; | 210 | reg = <0x2>; |
211 | device_type = "ethernet-phy"; | 211 | device_type = "ethernet-phy"; |
212 | }; | 212 | }; |
213 | tbi0: tbi-phy@11 { | ||
214 | reg = <0x11>; | ||
215 | device_type = "tbi-phy"; | ||
216 | }; | ||
217 | }; | ||
218 | |||
219 | mdio@25520 { | ||
220 | #address-cells = <1>; | ||
221 | #size-cells = <0>; | ||
222 | compatible = "fsl,gianfar-tbi"; | ||
223 | reg = <0x25520 0x20>; | ||
224 | |||
225 | tbi1: tbi-phy@11 { | ||
226 | reg = <0x11>; | ||
227 | device_type = "tbi-phy"; | ||
228 | }; | ||
213 | }; | 229 | }; |
214 | 230 | ||
231 | |||
215 | enet0: ethernet@24000 { | 232 | enet0: ethernet@24000 { |
216 | cell-index = <0>; | 233 | cell-index = <0>; |
217 | device_type = "network"; | 234 | device_type = "network"; |
@@ -222,6 +239,7 @@ | |||
222 | interrupts = <32 0x8 33 0x8 34 0x8>; | 239 | interrupts = <32 0x8 33 0x8 34 0x8>; |
223 | phy-connection-type = "mii"; | 240 | phy-connection-type = "mii"; |
224 | interrupt-parent = <&ipic>; | 241 | interrupt-parent = <&ipic>; |
242 | tbi-handle = <&tbi0>; | ||
225 | phy-handle = <&phy2>; | 243 | phy-handle = <&phy2>; |
226 | }; | 244 | }; |
227 | 245 | ||
@@ -236,6 +254,7 @@ | |||
236 | phy-connection-type = "mii"; | 254 | phy-connection-type = "mii"; |
237 | interrupt-parent = <&ipic>; | 255 | interrupt-parent = <&ipic>; |
238 | fixed-link = <1 1 1000 0 0>; | 256 | fixed-link = <1 1 1000 0 0>; |
257 | tbi-handle = <&tbi1>; | ||
239 | }; | 258 | }; |
240 | 259 | ||
241 | serial0: serial@4500 { | 260 | serial0: serial@4500 { |
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts index 67a08d2e2ff2..b85fc02682d2 100644 --- a/arch/powerpc/boot/dts/mpc8378_mds.dts +++ b/arch/powerpc/boot/dts/mpc8378_mds.dts | |||
@@ -232,8 +232,25 @@ | |||
232 | reg = <0x3>; | 232 | reg = <0x3>; |
233 | device_type = "ethernet-phy"; | 233 | device_type = "ethernet-phy"; |
234 | }; | 234 | }; |
235 | tbi0: tbi-phy@11 { | ||
236 | reg = <0x11>; | ||
237 | device_type = "tbi-phy"; | ||
238 | }; | ||
239 | }; | ||
240 | |||
241 | mdio@25520 { | ||
242 | #address-cells = <1>; | ||
243 | #size-cells = <0>; | ||
244 | compatible = "fsl,gianfar-tbi"; | ||
245 | reg = <0x25520 0x20>; | ||
246 | |||
247 | tbi1: tbi-phy@11 { | ||
248 | reg = <0x11>; | ||
249 | device_type = "tbi-phy"; | ||
250 | }; | ||
235 | }; | 251 | }; |
236 | 252 | ||
253 | |||
237 | enet0: ethernet@24000 { | 254 | enet0: ethernet@24000 { |
238 | cell-index = <0>; | 255 | cell-index = <0>; |
239 | device_type = "network"; | 256 | device_type = "network"; |
@@ -244,6 +261,7 @@ | |||
244 | interrupts = <32 0x8 33 0x8 34 0x8>; | 261 | interrupts = <32 0x8 33 0x8 34 0x8>; |
245 | phy-connection-type = "mii"; | 262 | phy-connection-type = "mii"; |
246 | interrupt-parent = <&ipic>; | 263 | interrupt-parent = <&ipic>; |
264 | tbi-handle = <&tbi0>; | ||
247 | phy-handle = <&phy2>; | 265 | phy-handle = <&phy2>; |
248 | }; | 266 | }; |
249 | 267 | ||
@@ -257,6 +275,7 @@ | |||
257 | interrupts = <35 0x8 36 0x8 37 0x8>; | 275 | interrupts = <35 0x8 36 0x8 37 0x8>; |
258 | phy-connection-type = "mii"; | 276 | phy-connection-type = "mii"; |
259 | interrupt-parent = <&ipic>; | 277 | interrupt-parent = <&ipic>; |
278 | tbi-handle = <&tbi1>; | ||
260 | phy-handle = <&phy3>; | 279 | phy-handle = <&phy3>; |
261 | }; | 280 | }; |
262 | 281 | ||
diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts index 3a6d5287539c..23c10ce22c2c 100644 --- a/arch/powerpc/boot/dts/mpc8378_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts | |||
@@ -210,8 +210,25 @@ | |||
210 | reg = <0x2>; | 210 | reg = <0x2>; |
211 | device_type = "ethernet-phy"; | 211 | device_type = "ethernet-phy"; |
212 | }; | 212 | }; |
213 | tbi0: tbi-phy@11 { | ||
214 | reg = <0x11>; | ||
215 | device_type = "tbi-phy"; | ||
216 | }; | ||
217 | }; | ||
218 | |||
219 | mdio@25520 { | ||
220 | #address-cells = <1>; | ||
221 | #size-cells = <0>; | ||
222 | compatible = "fsl,gianfar-tbi"; | ||
223 | reg = <0x25520 0x20>; | ||
224 | |||
225 | tbi1: tbi-phy@11 { | ||
226 | reg = <0x11>; | ||
227 | device_type = "tbi-phy"; | ||
228 | }; | ||
213 | }; | 229 | }; |
214 | 230 | ||
231 | |||
215 | enet0: ethernet@24000 { | 232 | enet0: ethernet@24000 { |
216 | cell-index = <0>; | 233 | cell-index = <0>; |
217 | device_type = "network"; | 234 | device_type = "network"; |
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts index 323370a2b5ff..acf06c438dbf 100644 --- a/arch/powerpc/boot/dts/mpc8379_mds.dts +++ b/arch/powerpc/boot/dts/mpc8379_mds.dts | |||
@@ -232,6 +232,22 @@ | |||
232 | reg = <0x3>; | 232 | reg = <0x3>; |
233 | device_type = "ethernet-phy"; | 233 | device_type = "ethernet-phy"; |
234 | }; | 234 | }; |
235 | tbi0: tbi-phy@11 { | ||
236 | reg = <0x11>; | ||
237 | device_type = "tbi-phy"; | ||
238 | }; | ||
239 | }; | ||
240 | |||
241 | mdio@25520 { | ||
242 | #address-cells = <1>; | ||
243 | #size-cells = <0>; | ||
244 | compatible = "fsl,gianfar-tbi"; | ||
245 | reg = <0x25520 0x20>; | ||
246 | |||
247 | tbi1: tbi-phy@11 { | ||
248 | reg = <0x11>; | ||
249 | device_type = "tbi-phy"; | ||
250 | }; | ||
235 | }; | 251 | }; |
236 | 252 | ||
237 | enet0: ethernet@24000 { | 253 | enet0: ethernet@24000 { |
@@ -244,6 +260,7 @@ | |||
244 | interrupts = <32 0x8 33 0x8 34 0x8>; | 260 | interrupts = <32 0x8 33 0x8 34 0x8>; |
245 | phy-connection-type = "mii"; | 261 | phy-connection-type = "mii"; |
246 | interrupt-parent = <&ipic>; | 262 | interrupt-parent = <&ipic>; |
263 | tbi-handle = <&tbi0>; | ||
247 | phy-handle = <&phy2>; | 264 | phy-handle = <&phy2>; |
248 | }; | 265 | }; |
249 | 266 | ||
@@ -257,6 +274,7 @@ | |||
257 | interrupts = <35 0x8 36 0x8 37 0x8>; | 274 | interrupts = <35 0x8 36 0x8 37 0x8>; |
258 | phy-connection-type = "mii"; | 275 | phy-connection-type = "mii"; |
259 | interrupt-parent = <&ipic>; | 276 | interrupt-parent = <&ipic>; |
277 | tbi-handle = <&tbi1>; | ||
260 | phy-handle = <&phy3>; | 278 | phy-handle = <&phy3>; |
261 | }; | 279 | }; |
262 | 280 | ||
diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts index ee64def19210..72cdc3c4c7e3 100644 --- a/arch/powerpc/boot/dts/mpc8379_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts | |||
@@ -210,6 +210,22 @@ | |||
210 | reg = <0x2>; | 210 | reg = <0x2>; |
211 | device_type = "ethernet-phy"; | 211 | device_type = "ethernet-phy"; |
212 | }; | 212 | }; |
213 | tbi0: tbi-phy@11 { | ||
214 | reg = <0x11>; | ||
215 | device_type = "tbi-phy"; | ||
216 | }; | ||
217 | }; | ||
218 | |||
219 | mdio@25520 { | ||
220 | #address-cells = <1>; | ||
221 | #size-cells = <0>; | ||
222 | compatible = "fsl,gianfar-tbi"; | ||
223 | reg = <0x25520 0x20>; | ||
224 | |||
225 | tbi1: tbi-phy@11 { | ||
226 | reg = <0x11>; | ||
227 | device_type = "tbi-phy"; | ||
228 | }; | ||
213 | }; | 229 | }; |
214 | 230 | ||
215 | enet0: ethernet@24000 { | 231 | enet0: ethernet@24000 { |
@@ -222,6 +238,7 @@ | |||
222 | interrupts = <32 0x8 33 0x8 34 0x8>; | 238 | interrupts = <32 0x8 33 0x8 34 0x8>; |
223 | phy-connection-type = "mii"; | 239 | phy-connection-type = "mii"; |
224 | interrupt-parent = <&ipic>; | 240 | interrupt-parent = <&ipic>; |
241 | tbi-handle = <&tbi0>; | ||
225 | phy-handle = <&phy2>; | 242 | phy-handle = <&phy2>; |
226 | }; | 243 | }; |
227 | 244 | ||
@@ -236,6 +253,7 @@ | |||
236 | phy-connection-type = "mii"; | 253 | phy-connection-type = "mii"; |
237 | interrupt-parent = <&ipic>; | 254 | interrupt-parent = <&ipic>; |
238 | fixed-link = <1 1 1000 0 0>; | 255 | fixed-link = <1 1 1000 0 0>; |
256 | tbi-handle = <&tbi1>; | ||
239 | }; | 257 | }; |
240 | 258 | ||
241 | serial0: serial@4500 { | 259 | serial0: serial@4500 { |
diff --git a/arch/powerpc/boot/dts/mpc8536ds.dts b/arch/powerpc/boot/dts/mpc8536ds.dts index 35db1e5440c7..3c905df1812c 100644 --- a/arch/powerpc/boot/dts/mpc8536ds.dts +++ b/arch/powerpc/boot/dts/mpc8536ds.dts | |||
@@ -155,6 +155,22 @@ | |||
155 | reg = <1>; | 155 | reg = <1>; |
156 | device_type = "ethernet-phy"; | 156 | device_type = "ethernet-phy"; |
157 | }; | 157 | }; |
158 | tbi0: tbi-phy@11 { | ||
159 | reg = <0x11>; | ||
160 | device_type = "tbi-phy"; | ||
161 | }; | ||
162 | }; | ||
163 | |||
164 | mdio@26520 { | ||
165 | #address-cells = <1>; | ||
166 | #size-cells = <0>; | ||
167 | compatible = "fsl,gianfar-tbi"; | ||
168 | reg = <0x26520 0x20>; | ||
169 | |||
170 | tbi1: tbi-phy@11 { | ||
171 | reg = <0x11>; | ||
172 | device_type = "tbi-phy"; | ||
173 | }; | ||
158 | }; | 174 | }; |
159 | 175 | ||
160 | usb@22000 { | 176 | usb@22000 { |
@@ -186,6 +202,7 @@ | |||
186 | local-mac-address = [ 00 00 00 00 00 00 ]; | 202 | local-mac-address = [ 00 00 00 00 00 00 ]; |
187 | interrupts = <29 2 30 2 34 2>; | 203 | interrupts = <29 2 30 2 34 2>; |
188 | interrupt-parent = <&mpic>; | 204 | interrupt-parent = <&mpic>; |
205 | tbi-handle = <&tbi0>; | ||
189 | phy-handle = <&phy1>; | 206 | phy-handle = <&phy1>; |
190 | phy-connection-type = "rgmii-id"; | 207 | phy-connection-type = "rgmii-id"; |
191 | }; | 208 | }; |
@@ -199,6 +216,7 @@ | |||
199 | local-mac-address = [ 00 00 00 00 00 00 ]; | 216 | local-mac-address = [ 00 00 00 00 00 00 ]; |
200 | interrupts = <31 2 32 2 33 2>; | 217 | interrupts = <31 2 32 2 33 2>; |
201 | interrupt-parent = <&mpic>; | 218 | interrupt-parent = <&mpic>; |
219 | tbi-handle = <&tbi1>; | ||
202 | phy-handle = <&phy0>; | 220 | phy-handle = <&phy0>; |
203 | phy-connection-type = "rgmii-id"; | 221 | phy-connection-type = "rgmii-id"; |
204 | }; | 222 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts index 9568bfaff8f7..79570ffe41b9 100644 --- a/arch/powerpc/boot/dts/mpc8540ads.dts +++ b/arch/powerpc/boot/dts/mpc8540ads.dts | |||
@@ -150,6 +150,34 @@ | |||
150 | reg = <0x3>; | 150 | reg = <0x3>; |
151 | device_type = "ethernet-phy"; | 151 | device_type = "ethernet-phy"; |
152 | }; | 152 | }; |
153 | tbi0: tbi-phy@11 { | ||
154 | reg = <0x11>; | ||
155 | device_type = "tbi-phy"; | ||
156 | }; | ||
157 | }; | ||
158 | |||
159 | mdio@25520 { | ||
160 | #address-cells = <1>; | ||
161 | #size-cells = <0>; | ||
162 | compatible = "fsl,gianfar-tbi"; | ||
163 | reg = <0x25520 0x20>; | ||
164 | |||
165 | tbi1: tbi-phy@11 { | ||
166 | reg = <0x11>; | ||
167 | device_type = "tbi-phy"; | ||
168 | }; | ||
169 | }; | ||
170 | |||
171 | mdio@26520 { | ||
172 | #address-cells = <1>; | ||
173 | #size-cells = <0>; | ||
174 | compatible = "fsl,gianfar-tbi"; | ||
175 | reg = <0x26520 0x20>; | ||
176 | |||
177 | tbi2: tbi-phy@11 { | ||
178 | reg = <0x11>; | ||
179 | device_type = "tbi-phy"; | ||
180 | }; | ||
153 | }; | 181 | }; |
154 | 182 | ||
155 | enet0: ethernet@24000 { | 183 | enet0: ethernet@24000 { |
@@ -161,6 +189,7 @@ | |||
161 | local-mac-address = [ 00 00 00 00 00 00 ]; | 189 | local-mac-address = [ 00 00 00 00 00 00 ]; |
162 | interrupts = <29 2 30 2 34 2>; | 190 | interrupts = <29 2 30 2 34 2>; |
163 | interrupt-parent = <&mpic>; | 191 | interrupt-parent = <&mpic>; |
192 | tbi-handle = <&tbi0>; | ||
164 | phy-handle = <&phy0>; | 193 | phy-handle = <&phy0>; |
165 | }; | 194 | }; |
166 | 195 | ||
@@ -173,6 +202,7 @@ | |||
173 | local-mac-address = [ 00 00 00 00 00 00 ]; | 202 | local-mac-address = [ 00 00 00 00 00 00 ]; |
174 | interrupts = <35 2 36 2 40 2>; | 203 | interrupts = <35 2 36 2 40 2>; |
175 | interrupt-parent = <&mpic>; | 204 | interrupt-parent = <&mpic>; |
205 | tbi-handle = <&tbi1>; | ||
176 | phy-handle = <&phy1>; | 206 | phy-handle = <&phy1>; |
177 | }; | 207 | }; |
178 | 208 | ||
@@ -185,6 +215,7 @@ | |||
185 | local-mac-address = [ 00 00 00 00 00 00 ]; | 215 | local-mac-address = [ 00 00 00 00 00 00 ]; |
186 | interrupts = <41 2>; | 216 | interrupts = <41 2>; |
187 | interrupt-parent = <&mpic>; | 217 | interrupt-parent = <&mpic>; |
218 | tbi-handle = <&tbi2>; | ||
188 | phy-handle = <&phy3>; | 219 | phy-handle = <&phy3>; |
189 | }; | 220 | }; |
190 | 221 | ||
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts index 6480f4fd96e0..221036a8ce23 100644 --- a/arch/powerpc/boot/dts/mpc8541cds.dts +++ b/arch/powerpc/boot/dts/mpc8541cds.dts | |||
@@ -144,6 +144,22 @@ | |||
144 | reg = <0x1>; | 144 | reg = <0x1>; |
145 | device_type = "ethernet-phy"; | 145 | device_type = "ethernet-phy"; |
146 | }; | 146 | }; |
147 | tbi0: tbi-phy@11 { | ||
148 | reg = <0x11>; | ||
149 | device_type = "tbi-phy"; | ||
150 | }; | ||
151 | }; | ||
152 | |||
153 | mdio@25520 { | ||
154 | #address-cells = <1>; | ||
155 | #size-cells = <0>; | ||
156 | compatible = "fsl,gianfar-tbi"; | ||
157 | reg = <0x25520 0x20>; | ||
158 | |||
159 | tbi1: tbi-phy@11 { | ||
160 | reg = <0x11>; | ||
161 | device_type = "tbi-phy"; | ||
162 | }; | ||
147 | }; | 163 | }; |
148 | 164 | ||
149 | enet0: ethernet@24000 { | 165 | enet0: ethernet@24000 { |
@@ -155,6 +171,7 @@ | |||
155 | local-mac-address = [ 00 00 00 00 00 00 ]; | 171 | local-mac-address = [ 00 00 00 00 00 00 ]; |
156 | interrupts = <29 2 30 2 34 2>; | 172 | interrupts = <29 2 30 2 34 2>; |
157 | interrupt-parent = <&mpic>; | 173 | interrupt-parent = <&mpic>; |
174 | tbi-handle = <&tbi0>; | ||
158 | phy-handle = <&phy0>; | 175 | phy-handle = <&phy0>; |
159 | }; | 176 | }; |
160 | 177 | ||
@@ -167,6 +184,7 @@ | |||
167 | local-mac-address = [ 00 00 00 00 00 00 ]; | 184 | local-mac-address = [ 00 00 00 00 00 00 ]; |
168 | interrupts = <35 2 36 2 40 2>; | 185 | interrupts = <35 2 36 2 40 2>; |
169 | interrupt-parent = <&mpic>; | 186 | interrupt-parent = <&mpic>; |
187 | tbi-handle = <&tbi1>; | ||
170 | phy-handle = <&phy1>; | 188 | phy-handle = <&phy1>; |
171 | }; | 189 | }; |
172 | 190 | ||
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index f1fb20737e3e..b9da42105066 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -116,8 +116,26 @@ | |||
116 | reg = <0x1>; | 116 | reg = <0x1>; |
117 | device_type = "ethernet-phy"; | 117 | device_type = "ethernet-phy"; |
118 | }; | 118 | }; |
119 | |||
120 | tbi0: tbi-phy@11 { | ||
121 | reg = <0x11>; | ||
122 | device_type = "tbi-phy"; | ||
123 | }; | ||
119 | }; | 124 | }; |
120 | 125 | ||
126 | mdio@26520 { | ||
127 | #address-cells = <1>; | ||
128 | #size-cells = <0>; | ||
129 | compatible = "fsl,gianfar-tbi"; | ||
130 | reg = <0x26520 0x20>; | ||
131 | |||
132 | tbi1: tbi-phy@11 { | ||
133 | reg = <0x11>; | ||
134 | device_type = "tbi-phy"; | ||
135 | }; | ||
136 | }; | ||
137 | |||
138 | |||
121 | dma@21300 { | 139 | dma@21300 { |
122 | #address-cells = <1>; | 140 | #address-cells = <1>; |
123 | #size-cells = <1>; | 141 | #size-cells = <1>; |
@@ -169,6 +187,7 @@ | |||
169 | interrupts = <29 2 30 2 34 2>; | 187 | interrupts = <29 2 30 2 34 2>; |
170 | interrupt-parent = <&mpic>; | 188 | interrupt-parent = <&mpic>; |
171 | phy-handle = <&phy0>; | 189 | phy-handle = <&phy0>; |
190 | tbi-handle = <&tbi0>; | ||
172 | phy-connection-type = "rgmii-id"; | 191 | phy-connection-type = "rgmii-id"; |
173 | }; | 192 | }; |
174 | 193 | ||
@@ -182,6 +201,7 @@ | |||
182 | interrupts = <31 2 32 2 33 2>; | 201 | interrupts = <31 2 32 2 33 2>; |
183 | interrupt-parent = <&mpic>; | 202 | interrupt-parent = <&mpic>; |
184 | phy-handle = <&phy1>; | 203 | phy-handle = <&phy1>; |
204 | tbi-handle = <&tbi1>; | ||
185 | phy-connection-type = "rgmii-id"; | 205 | phy-connection-type = "rgmii-id"; |
186 | }; | 206 | }; |
187 | 207 | ||
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts index 431b496270dc..df774a7088ff 100644 --- a/arch/powerpc/boot/dts/mpc8548cds.dts +++ b/arch/powerpc/boot/dts/mpc8548cds.dts | |||
@@ -172,6 +172,46 @@ | |||
172 | reg = <0x3>; | 172 | reg = <0x3>; |
173 | device_type = "ethernet-phy"; | 173 | device_type = "ethernet-phy"; |
174 | }; | 174 | }; |
175 | tbi0: tbi-phy@11 { | ||
176 | reg = <0x11>; | ||
177 | device_type = "tbi-phy"; | ||
178 | }; | ||
179 | }; | ||
180 | |||
181 | mdio@25520 { | ||
182 | #address-cells = <1>; | ||
183 | #size-cells = <0>; | ||
184 | compatible = "fsl,gianfar-tbi"; | ||
185 | reg = <0x25520 0x20>; | ||
186 | |||
187 | tbi1: tbi-phy@11 { | ||
188 | reg = <0x11>; | ||
189 | device_type = "tbi-phy"; | ||
190 | }; | ||
191 | }; | ||
192 | |||
193 | mdio@26520 { | ||
194 | #address-cells = <1>; | ||
195 | #size-cells = <0>; | ||
196 | compatible = "fsl,gianfar-tbi"; | ||
197 | reg = <0x26520 0x20>; | ||
198 | |||
199 | tbi2: tbi-phy@11 { | ||
200 | reg = <0x11>; | ||
201 | device_type = "tbi-phy"; | ||
202 | }; | ||
203 | }; | ||
204 | |||
205 | mdio@27520 { | ||
206 | #address-cells = <1>; | ||
207 | #size-cells = <0>; | ||
208 | compatible = "fsl,gianfar-tbi"; | ||
209 | reg = <0x27520 0x20>; | ||
210 | |||
211 | tbi3: tbi-phy@11 { | ||
212 | reg = <0x11>; | ||
213 | device_type = "tbi-phy"; | ||
214 | }; | ||
175 | }; | 215 | }; |
176 | 216 | ||
177 | enet0: ethernet@24000 { | 217 | enet0: ethernet@24000 { |
@@ -183,6 +223,7 @@ | |||
183 | local-mac-address = [ 00 00 00 00 00 00 ]; | 223 | local-mac-address = [ 00 00 00 00 00 00 ]; |
184 | interrupts = <29 2 30 2 34 2>; | 224 | interrupts = <29 2 30 2 34 2>; |
185 | interrupt-parent = <&mpic>; | 225 | interrupt-parent = <&mpic>; |
226 | tbi-handle = <&tbi0>; | ||
186 | phy-handle = <&phy0>; | 227 | phy-handle = <&phy0>; |
187 | }; | 228 | }; |
188 | 229 | ||
@@ -195,6 +236,7 @@ | |||
195 | local-mac-address = [ 00 00 00 00 00 00 ]; | 236 | local-mac-address = [ 00 00 00 00 00 00 ]; |
196 | interrupts = <35 2 36 2 40 2>; | 237 | interrupts = <35 2 36 2 40 2>; |
197 | interrupt-parent = <&mpic>; | 238 | interrupt-parent = <&mpic>; |
239 | tbi-handle = <&tbi1>; | ||
198 | phy-handle = <&phy1>; | 240 | phy-handle = <&phy1>; |
199 | }; | 241 | }; |
200 | 242 | ||
@@ -208,6 +250,7 @@ | |||
208 | local-mac-address = [ 00 00 00 00 00 00 ]; | 250 | local-mac-address = [ 00 00 00 00 00 00 ]; |
209 | interrupts = <31 2 32 2 33 2>; | 251 | interrupts = <31 2 32 2 33 2>; |
210 | interrupt-parent = <&mpic>; | 252 | interrupt-parent = <&mpic>; |
253 | tbi-handle = <&tbi2>; | ||
211 | phy-handle = <&phy2>; | 254 | phy-handle = <&phy2>; |
212 | }; | 255 | }; |
213 | 256 | ||
@@ -220,6 +263,7 @@ | |||
220 | local-mac-address = [ 00 00 00 00 00 00 ]; | 263 | local-mac-address = [ 00 00 00 00 00 00 ]; |
221 | interrupts = <37 2 38 2 39 2>; | 264 | interrupts = <37 2 38 2 39 2>; |
222 | interrupt-parent = <&mpic>; | 265 | interrupt-parent = <&mpic>; |
266 | tbi-handle = <&tbi3>; | ||
223 | phy-handle = <&phy3>; | 267 | phy-handle = <&phy3>; |
224 | }; | 268 | }; |
225 | */ | 269 | */ |
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts index d833a5c4f476..053b01e1c93b 100644 --- a/arch/powerpc/boot/dts/mpc8555cds.dts +++ b/arch/powerpc/boot/dts/mpc8555cds.dts | |||
@@ -144,6 +144,22 @@ | |||
144 | reg = <0x1>; | 144 | reg = <0x1>; |
145 | device_type = "ethernet-phy"; | 145 | device_type = "ethernet-phy"; |
146 | }; | 146 | }; |
147 | tbi0: tbi-phy@11 { | ||
148 | reg = <0x11>; | ||
149 | device_type = "tbi-phy"; | ||
150 | }; | ||
151 | }; | ||
152 | |||
153 | mdio@25520 { | ||
154 | #address-cells = <1>; | ||
155 | #size-cells = <0>; | ||
156 | compatible = "fsl,gianfar-tbi"; | ||
157 | reg = <0x25520 0x20>; | ||
158 | |||
159 | tbi1: tbi-phy@11 { | ||
160 | reg = <0x11>; | ||
161 | device_type = "tbi-phy"; | ||
162 | }; | ||
147 | }; | 163 | }; |
148 | 164 | ||
149 | enet0: ethernet@24000 { | 165 | enet0: ethernet@24000 { |
@@ -155,6 +171,7 @@ | |||
155 | local-mac-address = [ 00 00 00 00 00 00 ]; | 171 | local-mac-address = [ 00 00 00 00 00 00 ]; |
156 | interrupts = <29 2 30 2 34 2>; | 172 | interrupts = <29 2 30 2 34 2>; |
157 | interrupt-parent = <&mpic>; | 173 | interrupt-parent = <&mpic>; |
174 | tbi-handle = <&tbi0>; | ||
158 | phy-handle = <&phy0>; | 175 | phy-handle = <&phy0>; |
159 | }; | 176 | }; |
160 | 177 | ||
@@ -167,6 +184,7 @@ | |||
167 | local-mac-address = [ 00 00 00 00 00 00 ]; | 184 | local-mac-address = [ 00 00 00 00 00 00 ]; |
168 | interrupts = <35 2 36 2 40 2>; | 185 | interrupts = <35 2 36 2 40 2>; |
169 | interrupt-parent = <&mpic>; | 186 | interrupt-parent = <&mpic>; |
187 | tbi-handle = <&tbi1>; | ||
170 | phy-handle = <&phy1>; | 188 | phy-handle = <&phy1>; |
171 | }; | 189 | }; |
172 | 190 | ||
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts index 4d1f2f284094..11b1bcbe14ce 100644 --- a/arch/powerpc/boot/dts/mpc8560ads.dts +++ b/arch/powerpc/boot/dts/mpc8560ads.dts | |||
@@ -145,6 +145,22 @@ | |||
145 | reg = <0x3>; | 145 | reg = <0x3>; |
146 | device_type = "ethernet-phy"; | 146 | device_type = "ethernet-phy"; |
147 | }; | 147 | }; |
148 | tbi0: tbi-phy@11 { | ||
149 | reg = <0x11>; | ||
150 | device_type = "tbi-phy"; | ||
151 | }; | ||
152 | }; | ||
153 | |||
154 | mdio@25520 { | ||
155 | #address-cells = <1>; | ||
156 | #size-cells = <0>; | ||
157 | compatible = "fsl,gianfar-tbi"; | ||
158 | reg = <0x25520 0x20>; | ||
159 | |||
160 | tbi1: tbi-phy@11 { | ||
161 | reg = <0x11>; | ||
162 | device_type = "tbi-phy"; | ||
163 | }; | ||
148 | }; | 164 | }; |
149 | 165 | ||
150 | enet0: ethernet@24000 { | 166 | enet0: ethernet@24000 { |
@@ -156,6 +172,7 @@ | |||
156 | local-mac-address = [ 00 00 00 00 00 00 ]; | 172 | local-mac-address = [ 00 00 00 00 00 00 ]; |
157 | interrupts = <29 2 30 2 34 2>; | 173 | interrupts = <29 2 30 2 34 2>; |
158 | interrupt-parent = <&mpic>; | 174 | interrupt-parent = <&mpic>; |
175 | tbi-handle = <&tbi0>; | ||
159 | phy-handle = <&phy0>; | 176 | phy-handle = <&phy0>; |
160 | }; | 177 | }; |
161 | 178 | ||
@@ -168,6 +185,7 @@ | |||
168 | local-mac-address = [ 00 00 00 00 00 00 ]; | 185 | local-mac-address = [ 00 00 00 00 00 00 ]; |
169 | interrupts = <35 2 36 2 40 2>; | 186 | interrupts = <35 2 36 2 40 2>; |
170 | interrupt-parent = <&mpic>; | 187 | interrupt-parent = <&mpic>; |
188 | tbi-handle = <&tbi1>; | ||
171 | phy-handle = <&phy1>; | 189 | phy-handle = <&phy1>; |
172 | }; | 190 | }; |
173 | 191 | ||
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts index c80158f7741d..1955bd9e113d 100644 --- a/arch/powerpc/boot/dts/mpc8568mds.dts +++ b/arch/powerpc/boot/dts/mpc8568mds.dts | |||
@@ -179,6 +179,22 @@ | |||
179 | reg = <0x3>; | 179 | reg = <0x3>; |
180 | device_type = "ethernet-phy"; | 180 | device_type = "ethernet-phy"; |
181 | }; | 181 | }; |
182 | tbi0: tbi-phy@11 { | ||
183 | reg = <0x11>; | ||
184 | device_type = "tbi-phy"; | ||
185 | }; | ||
186 | }; | ||
187 | |||
188 | mdio@25520 { | ||
189 | #address-cells = <1>; | ||
190 | #size-cells = <0>; | ||
191 | compatible = "fsl,gianfar-tbi"; | ||
192 | reg = <0x25520 0x20>; | ||
193 | |||
194 | tbi1: tbi-phy@11 { | ||
195 | reg = <0x11>; | ||
196 | device_type = "tbi-phy"; | ||
197 | }; | ||
182 | }; | 198 | }; |
183 | 199 | ||
184 | enet0: ethernet@24000 { | 200 | enet0: ethernet@24000 { |
@@ -190,6 +206,7 @@ | |||
190 | local-mac-address = [ 00 00 00 00 00 00 ]; | 206 | local-mac-address = [ 00 00 00 00 00 00 ]; |
191 | interrupts = <29 2 30 2 34 2>; | 207 | interrupts = <29 2 30 2 34 2>; |
192 | interrupt-parent = <&mpic>; | 208 | interrupt-parent = <&mpic>; |
209 | tbi-handle = <&tbi0>; | ||
193 | phy-handle = <&phy2>; | 210 | phy-handle = <&phy2>; |
194 | }; | 211 | }; |
195 | 212 | ||
@@ -202,6 +219,7 @@ | |||
202 | local-mac-address = [ 00 00 00 00 00 00 ]; | 219 | local-mac-address = [ 00 00 00 00 00 00 ]; |
203 | interrupts = <35 2 36 2 40 2>; | 220 | interrupts = <35 2 36 2 40 2>; |
204 | interrupt-parent = <&mpic>; | 221 | interrupt-parent = <&mpic>; |
222 | tbi-handle = <&tbi1>; | ||
205 | phy-handle = <&phy3>; | 223 | phy-handle = <&phy3>; |
206 | }; | 224 | }; |
207 | 225 | ||
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts index a10506e6fa27..21459e161d02 100644 --- a/arch/powerpc/boot/dts/mpc8572ds.dts +++ b/arch/powerpc/boot/dts/mpc8572ds.dts | |||
@@ -338,6 +338,47 @@ | |||
338 | interrupts = <10 1>; | 338 | interrupts = <10 1>; |
339 | reg = <0x3>; | 339 | reg = <0x3>; |
340 | }; | 340 | }; |
341 | |||
342 | tbi0: tbi-phy@11 { | ||
343 | reg = <0x11>; | ||
344 | device_type = "tbi-phy"; | ||
345 | }; | ||
346 | }; | ||
347 | |||
348 | mdio@25520 { | ||
349 | #address-cells = <1>; | ||
350 | #size-cells = <0>; | ||
351 | compatible = "fsl,gianfar-tbi"; | ||
352 | reg = <0x25520 0x20>; | ||
353 | |||
354 | tbi1: tbi-phy@11 { | ||
355 | reg = <0x11>; | ||
356 | device_type = "tbi-phy"; | ||
357 | }; | ||
358 | }; | ||
359 | |||
360 | mdio@26520 { | ||
361 | #address-cells = <1>; | ||
362 | #size-cells = <0>; | ||
363 | compatible = "fsl,gianfar-tbi"; | ||
364 | reg = <0x26520 0x20>; | ||
365 | |||
366 | tbi2: tbi-phy@11 { | ||
367 | reg = <0x11>; | ||
368 | device_type = "tbi-phy"; | ||
369 | }; | ||
370 | }; | ||
371 | |||
372 | mdio@27520 { | ||
373 | #address-cells = <1>; | ||
374 | #size-cells = <0>; | ||
375 | compatible = "fsl,gianfar-tbi"; | ||
376 | reg = <0x27520 0x20>; | ||
377 | |||
378 | tbi3: tbi-phy@11 { | ||
379 | reg = <0x11>; | ||
380 | device_type = "tbi-phy"; | ||
381 | }; | ||
341 | }; | 382 | }; |
342 | 383 | ||
343 | enet0: ethernet@24000 { | 384 | enet0: ethernet@24000 { |
@@ -349,6 +390,7 @@ | |||
349 | local-mac-address = [ 00 00 00 00 00 00 ]; | 390 | local-mac-address = [ 00 00 00 00 00 00 ]; |
350 | interrupts = <29 2 30 2 34 2>; | 391 | interrupts = <29 2 30 2 34 2>; |
351 | interrupt-parent = <&mpic>; | 392 | interrupt-parent = <&mpic>; |
393 | tbi-handle = <&tbi0>; | ||
352 | phy-handle = <&phy0>; | 394 | phy-handle = <&phy0>; |
353 | phy-connection-type = "rgmii-id"; | 395 | phy-connection-type = "rgmii-id"; |
354 | }; | 396 | }; |
@@ -362,6 +404,7 @@ | |||
362 | local-mac-address = [ 00 00 00 00 00 00 ]; | 404 | local-mac-address = [ 00 00 00 00 00 00 ]; |
363 | interrupts = <35 2 36 2 40 2>; | 405 | interrupts = <35 2 36 2 40 2>; |
364 | interrupt-parent = <&mpic>; | 406 | interrupt-parent = <&mpic>; |
407 | tbi-handle = <&tbi1>; | ||
365 | phy-handle = <&phy1>; | 408 | phy-handle = <&phy1>; |
366 | phy-connection-type = "rgmii-id"; | 409 | phy-connection-type = "rgmii-id"; |
367 | }; | 410 | }; |
@@ -375,6 +418,7 @@ | |||
375 | local-mac-address = [ 00 00 00 00 00 00 ]; | 418 | local-mac-address = [ 00 00 00 00 00 00 ]; |
376 | interrupts = <31 2 32 2 33 2>; | 419 | interrupts = <31 2 32 2 33 2>; |
377 | interrupt-parent = <&mpic>; | 420 | interrupt-parent = <&mpic>; |
421 | tbi-handle = <&tbi2>; | ||
378 | phy-handle = <&phy2>; | 422 | phy-handle = <&phy2>; |
379 | phy-connection-type = "rgmii-id"; | 423 | phy-connection-type = "rgmii-id"; |
380 | }; | 424 | }; |
@@ -388,6 +432,7 @@ | |||
388 | local-mac-address = [ 00 00 00 00 00 00 ]; | 432 | local-mac-address = [ 00 00 00 00 00 00 ]; |
389 | interrupts = <37 2 38 2 39 2>; | 433 | interrupts = <37 2 38 2 39 2>; |
390 | interrupt-parent = <&mpic>; | 434 | interrupt-parent = <&mpic>; |
435 | tbi-handle = <&tbi3>; | ||
391 | phy-handle = <&phy3>; | 436 | phy-handle = <&phy3>; |
392 | phy-connection-type = "rgmii-id"; | 437 | phy-connection-type = "rgmii-id"; |
393 | }; | 438 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index d2d5dcda1b4e..4481532cbe77 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -210,8 +210,49 @@ | |||
210 | reg = <3>; | 210 | reg = <3>; |
211 | device_type = "ethernet-phy"; | 211 | device_type = "ethernet-phy"; |
212 | }; | 212 | }; |
213 | tbi0: tbi-phy@11 { | ||
214 | reg = <0x11>; | ||
215 | device_type = "tbi-phy"; | ||
216 | }; | ||
217 | }; | ||
218 | |||
219 | mdio@25520 { | ||
220 | #address-cells = <1>; | ||
221 | #size-cells = <0>; | ||
222 | compatible = "fsl,gianfar-tbi"; | ||
223 | reg = <0x25520 0x20>; | ||
224 | |||
225 | tbi1: tbi-phy@11 { | ||
226 | reg = <0x11>; | ||
227 | device_type = "tbi-phy"; | ||
228 | }; | ||
229 | }; | ||
230 | |||
231 | mdio@26520 { | ||
232 | #address-cells = <1>; | ||
233 | #size-cells = <0>; | ||
234 | compatible = "fsl,gianfar-tbi"; | ||
235 | reg = <0x26520 0x20>; | ||
236 | |||
237 | tbi2: tbi-phy@11 { | ||
238 | reg = <0x11>; | ||
239 | device_type = "tbi-phy"; | ||
240 | }; | ||
241 | }; | ||
242 | |||
243 | mdio@27520 { | ||
244 | #address-cells = <1>; | ||
245 | #size-cells = <0>; | ||
246 | compatible = "fsl,gianfar-tbi"; | ||
247 | reg = <0x27520 0x20>; | ||
248 | |||
249 | tbi3: tbi-phy@11 { | ||
250 | reg = <0x11>; | ||
251 | device_type = "tbi-phy"; | ||
252 | }; | ||
213 | }; | 253 | }; |
214 | 254 | ||
255 | |||
215 | enet0: ethernet@24000 { | 256 | enet0: ethernet@24000 { |
216 | cell-index = <0>; | 257 | cell-index = <0>; |
217 | device_type = "network"; | 258 | device_type = "network"; |
@@ -221,6 +262,7 @@ | |||
221 | local-mac-address = [ 00 00 00 00 00 00 ]; | 262 | local-mac-address = [ 00 00 00 00 00 00 ]; |
222 | interrupts = <29 2 30 2 34 2>; | 263 | interrupts = <29 2 30 2 34 2>; |
223 | interrupt-parent = <&mpic>; | 264 | interrupt-parent = <&mpic>; |
265 | tbi-handle = <&tbi0>; | ||
224 | phy-handle = <&phy0>; | 266 | phy-handle = <&phy0>; |
225 | phy-connection-type = "rgmii-id"; | 267 | phy-connection-type = "rgmii-id"; |
226 | }; | 268 | }; |
@@ -234,6 +276,7 @@ | |||
234 | local-mac-address = [ 00 00 00 00 00 00 ]; | 276 | local-mac-address = [ 00 00 00 00 00 00 ]; |
235 | interrupts = <35 2 36 2 40 2>; | 277 | interrupts = <35 2 36 2 40 2>; |
236 | interrupt-parent = <&mpic>; | 278 | interrupt-parent = <&mpic>; |
279 | tbi-handle = <&tbi1>; | ||
237 | phy-handle = <&phy1>; | 280 | phy-handle = <&phy1>; |
238 | phy-connection-type = "rgmii-id"; | 281 | phy-connection-type = "rgmii-id"; |
239 | }; | 282 | }; |
@@ -247,6 +290,7 @@ | |||
247 | local-mac-address = [ 00 00 00 00 00 00 ]; | 290 | local-mac-address = [ 00 00 00 00 00 00 ]; |
248 | interrupts = <31 2 32 2 33 2>; | 291 | interrupts = <31 2 32 2 33 2>; |
249 | interrupt-parent = <&mpic>; | 292 | interrupt-parent = <&mpic>; |
293 | tbi-handle = <&tbi2>; | ||
250 | phy-handle = <&phy2>; | 294 | phy-handle = <&phy2>; |
251 | phy-connection-type = "rgmii-id"; | 295 | phy-connection-type = "rgmii-id"; |
252 | }; | 296 | }; |
@@ -260,6 +304,7 @@ | |||
260 | local-mac-address = [ 00 00 00 00 00 00 ]; | 304 | local-mac-address = [ 00 00 00 00 00 00 ]; |
261 | interrupts = <37 2 38 2 39 2>; | 305 | interrupts = <37 2 38 2 39 2>; |
262 | interrupt-parent = <&mpic>; | 306 | interrupt-parent = <&mpic>; |
307 | tbi-handle = <&tbi3>; | ||
263 | phy-handle = <&phy3>; | 308 | phy-handle = <&phy3>; |
264 | phy-connection-type = "rgmii-id"; | 309 | phy-connection-type = "rgmii-id"; |
265 | }; | 310 | }; |
diff --git a/arch/powerpc/boot/dts/sbc8349.dts b/arch/powerpc/boot/dts/sbc8349.dts index 0f941f310e44..8d365a57ebc1 100644 --- a/arch/powerpc/boot/dts/sbc8349.dts +++ b/arch/powerpc/boot/dts/sbc8349.dts | |||
@@ -177,6 +177,22 @@ | |||
177 | reg = <0x1a>; | 177 | reg = <0x1a>; |
178 | device_type = "ethernet-phy"; | 178 | device_type = "ethernet-phy"; |
179 | }; | 179 | }; |
180 | tbi0: tbi-phy@11 { | ||
181 | reg = <0x11>; | ||
182 | device_type = "tbi-phy"; | ||
183 | }; | ||
184 | }; | ||
185 | |||
186 | mdio@25520 { | ||
187 | #address-cells = <1>; | ||
188 | #size-cells = <0>; | ||
189 | compatible = "fsl,gianfar-tbi"; | ||
190 | reg = <0x25520 0x20>; | ||
191 | |||
192 | tbi1: tbi-phy@11 { | ||
193 | reg = <0x11>; | ||
194 | device_type = "tbi-phy"; | ||
195 | }; | ||
180 | }; | 196 | }; |
181 | 197 | ||
182 | enet0: ethernet@24000 { | 198 | enet0: ethernet@24000 { |
@@ -188,6 +204,7 @@ | |||
188 | local-mac-address = [ 00 00 00 00 00 00 ]; | 204 | local-mac-address = [ 00 00 00 00 00 00 ]; |
189 | interrupts = <32 0x8 33 0x8 34 0x8>; | 205 | interrupts = <32 0x8 33 0x8 34 0x8>; |
190 | interrupt-parent = <&ipic>; | 206 | interrupt-parent = <&ipic>; |
207 | tbi-handle = <&tbi0>; | ||
191 | phy-handle = <&phy0>; | 208 | phy-handle = <&phy0>; |
192 | linux,network-index = <0>; | 209 | linux,network-index = <0>; |
193 | }; | 210 | }; |
@@ -201,6 +218,7 @@ | |||
201 | local-mac-address = [ 00 00 00 00 00 00 ]; | 218 | local-mac-address = [ 00 00 00 00 00 00 ]; |
202 | interrupts = <35 0x8 36 0x8 37 0x8>; | 219 | interrupts = <35 0x8 36 0x8 37 0x8>; |
203 | interrupt-parent = <&ipic>; | 220 | interrupt-parent = <&ipic>; |
221 | tbi-handle = <&tbi1>; | ||
204 | phy-handle = <&phy1>; | 222 | phy-handle = <&phy1>; |
205 | linux,network-index = <1>; | 223 | linux,network-index = <1>; |
206 | }; | 224 | }; |
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts index 333552b4e90d..2baf4a51f224 100644 --- a/arch/powerpc/boot/dts/sbc8548.dts +++ b/arch/powerpc/boot/dts/sbc8548.dts | |||
@@ -252,6 +252,22 @@ | |||
252 | reg = <0x1a>; | 252 | reg = <0x1a>; |
253 | device_type = "ethernet-phy"; | 253 | device_type = "ethernet-phy"; |
254 | }; | 254 | }; |
255 | tbi0: tbi-phy@11 { | ||
256 | reg = <0x11>; | ||
257 | device_type = "tbi-phy"; | ||
258 | }; | ||
259 | }; | ||
260 | |||
261 | mdio@25520 { | ||
262 | #address-cells = <1>; | ||
263 | #size-cells = <0>; | ||
264 | compatible = "fsl,gianfar-tbi"; | ||
265 | reg = <0x25520 0x20>; | ||
266 | |||
267 | tbi1: tbi-phy@11 { | ||
268 | reg = <0x11>; | ||
269 | device_type = "tbi-phy"; | ||
270 | }; | ||
255 | }; | 271 | }; |
256 | 272 | ||
257 | enet0: ethernet@24000 { | 273 | enet0: ethernet@24000 { |
@@ -263,6 +279,7 @@ | |||
263 | local-mac-address = [ 00 00 00 00 00 00 ]; | 279 | local-mac-address = [ 00 00 00 00 00 00 ]; |
264 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; | 280 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; |
265 | interrupt-parent = <&mpic>; | 281 | interrupt-parent = <&mpic>; |
282 | tbi-handle = <&tbi0>; | ||
266 | phy-handle = <&phy0>; | 283 | phy-handle = <&phy0>; |
267 | }; | 284 | }; |
268 | 285 | ||
@@ -275,6 +292,7 @@ | |||
275 | local-mac-address = [ 00 00 00 00 00 00 ]; | 292 | local-mac-address = [ 00 00 00 00 00 00 ]; |
276 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; | 293 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; |
277 | interrupt-parent = <&mpic>; | 294 | interrupt-parent = <&mpic>; |
295 | tbi-handle = <&tbi1>; | ||
278 | phy-handle = <&phy1>; | 296 | phy-handle = <&phy1>; |
279 | }; | 297 | }; |
280 | 298 | ||
diff --git a/arch/powerpc/boot/dts/sbc8560.dts b/arch/powerpc/boot/dts/sbc8560.dts index db3632ef9888..01542f7062ab 100644 --- a/arch/powerpc/boot/dts/sbc8560.dts +++ b/arch/powerpc/boot/dts/sbc8560.dts | |||
@@ -168,6 +168,22 @@ | |||
168 | reg = <0x1c>; | 168 | reg = <0x1c>; |
169 | device_type = "ethernet-phy"; | 169 | device_type = "ethernet-phy"; |
170 | }; | 170 | }; |
171 | tbi0: tbi-phy@11 { | ||
172 | reg = <0x11>; | ||
173 | device_type = "tbi-phy"; | ||
174 | }; | ||
175 | }; | ||
176 | |||
177 | mdio@25520 { | ||
178 | #address-cells = <1>; | ||
179 | #size-cells = <0>; | ||
180 | compatible = "fsl,gianfar-tbi"; | ||
181 | reg = <0x25520 0x20>; | ||
182 | |||
183 | tbi1: tbi-phy@11 { | ||
184 | reg = <0x11>; | ||
185 | device_type = "tbi-phy"; | ||
186 | }; | ||
171 | }; | 187 | }; |
172 | 188 | ||
173 | enet0: ethernet@24000 { | 189 | enet0: ethernet@24000 { |
@@ -179,6 +195,7 @@ | |||
179 | local-mac-address = [ 00 00 00 00 00 00 ]; | 195 | local-mac-address = [ 00 00 00 00 00 00 ]; |
180 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; | 196 | interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>; |
181 | interrupt-parent = <&mpic>; | 197 | interrupt-parent = <&mpic>; |
198 | tbi-handle = <&tbi0>; | ||
182 | phy-handle = <&phy0>; | 199 | phy-handle = <&phy0>; |
183 | }; | 200 | }; |
184 | 201 | ||
@@ -191,6 +208,7 @@ | |||
191 | local-mac-address = [ 00 00 00 00 00 00 ]; | 208 | local-mac-address = [ 00 00 00 00 00 00 ]; |
192 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; | 209 | interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>; |
193 | interrupt-parent = <&mpic>; | 210 | interrupt-parent = <&mpic>; |
211 | tbi-handle = <&tbi1>; | ||
194 | phy-handle = <&phy1>; | 212 | phy-handle = <&phy1>; |
195 | }; | 213 | }; |
196 | 214 | ||
diff --git a/arch/powerpc/boot/dts/sbc8641d.dts b/arch/powerpc/boot/dts/sbc8641d.dts index 9652456158fb..36db981548e4 100644 --- a/arch/powerpc/boot/dts/sbc8641d.dts +++ b/arch/powerpc/boot/dts/sbc8641d.dts | |||
@@ -222,6 +222,46 @@ | |||
222 | reg = <2>; | 222 | reg = <2>; |
223 | device_type = "ethernet-phy"; | 223 | device_type = "ethernet-phy"; |
224 | }; | 224 | }; |
225 | tbi0: tbi-phy@11 { | ||
226 | reg = <0x11>; | ||
227 | device_type = "tbi-phy"; | ||
228 | }; | ||
229 | }; | ||
230 | |||
231 | mdio@25520 { | ||
232 | #address-cells = <1>; | ||
233 | #size-cells = <0>; | ||
234 | compatible = "fsl,gianfar-tbi"; | ||
235 | reg = <0x25520 0x20>; | ||
236 | |||
237 | tbi1: tbi-phy@11 { | ||
238 | reg = <0x11>; | ||
239 | device_type = "tbi-phy"; | ||
240 | }; | ||
241 | }; | ||
242 | |||
243 | mdio@26520 { | ||
244 | #address-cells = <1>; | ||
245 | #size-cells = <0>; | ||
246 | compatible = "fsl,gianfar-tbi"; | ||
247 | reg = <0x26520 0x20>; | ||
248 | |||
249 | tbi2: tbi-phy@11 { | ||
250 | reg = <0x11>; | ||
251 | device_type = "tbi-phy"; | ||
252 | }; | ||
253 | }; | ||
254 | |||
255 | mdio@27520 { | ||
256 | #address-cells = <1>; | ||
257 | #size-cells = <0>; | ||
258 | compatible = "fsl,gianfar-tbi"; | ||
259 | reg = <0x27520 0x20>; | ||
260 | |||
261 | tbi3: tbi-phy@11 { | ||
262 | reg = <0x11>; | ||
263 | device_type = "tbi-phy"; | ||
264 | }; | ||
225 | }; | 265 | }; |
226 | 266 | ||
227 | enet0: ethernet@24000 { | 267 | enet0: ethernet@24000 { |
@@ -233,6 +273,7 @@ | |||
233 | local-mac-address = [ 00 00 00 00 00 00 ]; | 273 | local-mac-address = [ 00 00 00 00 00 00 ]; |
234 | interrupts = <29 2 30 2 34 2>; | 274 | interrupts = <29 2 30 2 34 2>; |
235 | interrupt-parent = <&mpic>; | 275 | interrupt-parent = <&mpic>; |
276 | tbi-handle = <&tbi0>; | ||
236 | phy-handle = <&phy0>; | 277 | phy-handle = <&phy0>; |
237 | phy-connection-type = "rgmii-id"; | 278 | phy-connection-type = "rgmii-id"; |
238 | }; | 279 | }; |
@@ -246,6 +287,7 @@ | |||
246 | local-mac-address = [ 00 00 00 00 00 00 ]; | 287 | local-mac-address = [ 00 00 00 00 00 00 ]; |
247 | interrupts = <35 2 36 2 40 2>; | 288 | interrupts = <35 2 36 2 40 2>; |
248 | interrupt-parent = <&mpic>; | 289 | interrupt-parent = <&mpic>; |
290 | tbi-handle = <&tbi1>; | ||
249 | phy-handle = <&phy1>; | 291 | phy-handle = <&phy1>; |
250 | phy-connection-type = "rgmii-id"; | 292 | phy-connection-type = "rgmii-id"; |
251 | }; | 293 | }; |
@@ -259,6 +301,7 @@ | |||
259 | local-mac-address = [ 00 00 00 00 00 00 ]; | 301 | local-mac-address = [ 00 00 00 00 00 00 ]; |
260 | interrupts = <31 2 32 2 33 2>; | 302 | interrupts = <31 2 32 2 33 2>; |
261 | interrupt-parent = <&mpic>; | 303 | interrupt-parent = <&mpic>; |
304 | tbi-handle = <&tbi2>; | ||
262 | phy-handle = <&phy2>; | 305 | phy-handle = <&phy2>; |
263 | phy-connection-type = "rgmii-id"; | 306 | phy-connection-type = "rgmii-id"; |
264 | }; | 307 | }; |
@@ -272,6 +315,7 @@ | |||
272 | local-mac-address = [ 00 00 00 00 00 00 ]; | 315 | local-mac-address = [ 00 00 00 00 00 00 ]; |
273 | interrupts = <37 2 38 2 39 2>; | 316 | interrupts = <37 2 38 2 39 2>; |
274 | interrupt-parent = <&mpic>; | 317 | interrupt-parent = <&mpic>; |
318 | tbi-handle = <&tbi3>; | ||
275 | phy-handle = <&phy3>; | 319 | phy-handle = <&phy3>; |
276 | phy-connection-type = "rgmii-id"; | 320 | phy-connection-type = "rgmii-id"; |
277 | }; | 321 | }; |
diff --git a/arch/powerpc/boot/dts/stx_gp3_8560.dts b/arch/powerpc/boot/dts/stx_gp3_8560.dts index fcd1db6ca0a8..fff33fe6efc6 100644 --- a/arch/powerpc/boot/dts/stx_gp3_8560.dts +++ b/arch/powerpc/boot/dts/stx_gp3_8560.dts | |||
@@ -142,6 +142,22 @@ | |||
142 | reg = <4>; | 142 | reg = <4>; |
143 | device_type = "ethernet-phy"; | 143 | device_type = "ethernet-phy"; |
144 | }; | 144 | }; |
145 | tbi0: tbi-phy@11 { | ||
146 | reg = <0x11>; | ||
147 | device_type = "tbi-phy"; | ||
148 | }; | ||
149 | }; | ||
150 | |||
151 | mdio@25520 { | ||
152 | #address-cells = <1>; | ||
153 | #size-cells = <0>; | ||
154 | compatible = "fsl,gianfar-tbi"; | ||
155 | reg = <0x25520 0x20>; | ||
156 | |||
157 | tbi1: tbi-phy@11 { | ||
158 | reg = <0x11>; | ||
159 | device_type = "tbi-phy"; | ||
160 | }; | ||
145 | }; | 161 | }; |
146 | 162 | ||
147 | enet0: ethernet@24000 { | 163 | enet0: ethernet@24000 { |
@@ -153,6 +169,7 @@ | |||
153 | local-mac-address = [ 00 00 00 00 00 00 ]; | 169 | local-mac-address = [ 00 00 00 00 00 00 ]; |
154 | interrupts = <29 2 30 2 34 2>; | 170 | interrupts = <29 2 30 2 34 2>; |
155 | interrupt-parent = <&mpic>; | 171 | interrupt-parent = <&mpic>; |
172 | tbi-handle = <&tbi0>; | ||
156 | phy-handle = <&phy2>; | 173 | phy-handle = <&phy2>; |
157 | }; | 174 | }; |
158 | 175 | ||
@@ -165,6 +182,7 @@ | |||
165 | local-mac-address = [ 00 00 00 00 00 00 ]; | 182 | local-mac-address = [ 00 00 00 00 00 00 ]; |
166 | interrupts = <35 2 36 2 40 2>; | 183 | interrupts = <35 2 36 2 40 2>; |
167 | interrupt-parent = <&mpic>; | 184 | interrupt-parent = <&mpic>; |
185 | tbi-handle = <&tbi1>; | ||
168 | phy-handle = <&phy4>; | 186 | phy-handle = <&phy4>; |
169 | }; | 187 | }; |
170 | 188 | ||
diff --git a/arch/powerpc/boot/dts/tqm8540.dts b/arch/powerpc/boot/dts/tqm8540.dts index e1d260b9085e..a693f01c21aa 100644 --- a/arch/powerpc/boot/dts/tqm8540.dts +++ b/arch/powerpc/boot/dts/tqm8540.dts | |||
@@ -155,6 +155,34 @@ | |||
155 | reg = <3>; | 155 | reg = <3>; |
156 | device_type = "ethernet-phy"; | 156 | device_type = "ethernet-phy"; |
157 | }; | 157 | }; |
158 | tbi0: tbi-phy@11 { | ||
159 | reg = <0x11>; | ||
160 | device_type = "tbi-phy"; | ||
161 | }; | ||
162 | }; | ||
163 | |||
164 | mdio@25520 { | ||
165 | #address-cells = <1>; | ||
166 | #size-cells = <0>; | ||
167 | compatible = "fsl,gianfar-tbi"; | ||
168 | reg = <0x25520 0x20>; | ||
169 | |||
170 | tbi1: tbi-phy@11 { | ||
171 | reg = <0x11>; | ||
172 | device_type = "tbi-phy"; | ||
173 | }; | ||
174 | }; | ||
175 | |||
176 | mdio@26520 { | ||
177 | #address-cells = <1>; | ||
178 | #size-cells = <0>; | ||
179 | compatible = "fsl,gianfar-tbi"; | ||
180 | reg = <0x26520 0x20>; | ||
181 | |||
182 | tbi2: tbi-phy@11 { | ||
183 | reg = <0x11>; | ||
184 | device_type = "tbi-phy"; | ||
185 | }; | ||
158 | }; | 186 | }; |
159 | 187 | ||
160 | enet0: ethernet@24000 { | 188 | enet0: ethernet@24000 { |
diff --git a/arch/powerpc/boot/dts/tqm8541.dts b/arch/powerpc/boot/dts/tqm8541.dts index d76441ec5dc7..9e3f5f0dde20 100644 --- a/arch/powerpc/boot/dts/tqm8541.dts +++ b/arch/powerpc/boot/dts/tqm8541.dts | |||
@@ -154,6 +154,22 @@ | |||
154 | reg = <3>; | 154 | reg = <3>; |
155 | device_type = "ethernet-phy"; | 155 | device_type = "ethernet-phy"; |
156 | }; | 156 | }; |
157 | tbi0: tbi-phy@11 { | ||
158 | reg = <0x11>; | ||
159 | device_type = "tbi-phy"; | ||
160 | }; | ||
161 | }; | ||
162 | |||
163 | mdio@25520 { | ||
164 | #address-cells = <1>; | ||
165 | #size-cells = <0>; | ||
166 | compatible = "fsl,gianfar-tbi"; | ||
167 | reg = <0x25520 0x20>; | ||
168 | |||
169 | tbi1: tbi-phy@11 { | ||
170 | reg = <0x11>; | ||
171 | device_type = "tbi-phy"; | ||
172 | }; | ||
157 | }; | 173 | }; |
158 | 174 | ||
159 | enet0: ethernet@24000 { | 175 | enet0: ethernet@24000 { |
@@ -165,6 +181,7 @@ | |||
165 | local-mac-address = [ 00 00 00 00 00 00 ]; | 181 | local-mac-address = [ 00 00 00 00 00 00 ]; |
166 | interrupts = <29 2 30 2 34 2>; | 182 | interrupts = <29 2 30 2 34 2>; |
167 | interrupt-parent = <&mpic>; | 183 | interrupt-parent = <&mpic>; |
184 | tbi-handle = <&tbi0>; | ||
168 | phy-handle = <&phy2>; | 185 | phy-handle = <&phy2>; |
169 | }; | 186 | }; |
170 | 187 | ||
@@ -177,6 +194,7 @@ | |||
177 | local-mac-address = [ 00 00 00 00 00 00 ]; | 194 | local-mac-address = [ 00 00 00 00 00 00 ]; |
178 | interrupts = <35 2 36 2 40 2>; | 195 | interrupts = <35 2 36 2 40 2>; |
179 | interrupt-parent = <&mpic>; | 196 | interrupt-parent = <&mpic>; |
197 | tbi-handle = <&tbi1>; | ||
180 | phy-handle = <&phy1>; | 198 | phy-handle = <&phy1>; |
181 | }; | 199 | }; |
182 | 200 | ||
diff --git a/arch/powerpc/boot/dts/tqm8548-bigflash.dts b/arch/powerpc/boot/dts/tqm8548-bigflash.dts index 4199e89b4e50..15086eb65c50 100644 --- a/arch/powerpc/boot/dts/tqm8548-bigflash.dts +++ b/arch/powerpc/boot/dts/tqm8548-bigflash.dts | |||
@@ -179,6 +179,46 @@ | |||
179 | reg = <5>; | 179 | reg = <5>; |
180 | device_type = "ethernet-phy"; | 180 | device_type = "ethernet-phy"; |
181 | }; | 181 | }; |
182 | tbi0: tbi-phy@11 { | ||
183 | reg = <0x11>; | ||
184 | device_type = "tbi-phy"; | ||
185 | }; | ||
186 | }; | ||
187 | |||
188 | mdio@25520 { | ||
189 | #address-cells = <1>; | ||
190 | #size-cells = <0>; | ||
191 | compatible = "fsl,gianfar-tbi"; | ||
192 | reg = <0x25520 0x20>; | ||
193 | |||
194 | tbi1: tbi-phy@11 { | ||
195 | reg = <0x11>; | ||
196 | device_type = "tbi-phy"; | ||
197 | }; | ||
198 | }; | ||
199 | |||
200 | mdio@26520 { | ||
201 | #address-cells = <1>; | ||
202 | #size-cells = <0>; | ||
203 | compatible = "fsl,gianfar-tbi"; | ||
204 | reg = <0x26520 0x20>; | ||
205 | |||
206 | tbi2: tbi-phy@11 { | ||
207 | reg = <0x11>; | ||
208 | device_type = "tbi-phy"; | ||
209 | }; | ||
210 | }; | ||
211 | |||
212 | mdio@27520 { | ||
213 | #address-cells = <1>; | ||
214 | #size-cells = <0>; | ||
215 | compatible = "fsl,gianfar-tbi"; | ||
216 | reg = <0x27520 0x20>; | ||
217 | |||
218 | tbi3: tbi-phy@11 { | ||
219 | reg = <0x11>; | ||
220 | device_type = "tbi-phy"; | ||
221 | }; | ||
182 | }; | 222 | }; |
183 | 223 | ||
184 | enet0: ethernet@24000 { | 224 | enet0: ethernet@24000 { |
@@ -190,6 +230,7 @@ | |||
190 | local-mac-address = [ 00 00 00 00 00 00 ]; | 230 | local-mac-address = [ 00 00 00 00 00 00 ]; |
191 | interrupts = <29 2 30 2 34 2>; | 231 | interrupts = <29 2 30 2 34 2>; |
192 | interrupt-parent = <&mpic>; | 232 | interrupt-parent = <&mpic>; |
233 | tbi-handle = <&tbi0>; | ||
193 | phy-handle = <&phy2>; | 234 | phy-handle = <&phy2>; |
194 | }; | 235 | }; |
195 | 236 | ||
@@ -202,6 +243,7 @@ | |||
202 | local-mac-address = [ 00 00 00 00 00 00 ]; | 243 | local-mac-address = [ 00 00 00 00 00 00 ]; |
203 | interrupts = <35 2 36 2 40 2>; | 244 | interrupts = <35 2 36 2 40 2>; |
204 | interrupt-parent = <&mpic>; | 245 | interrupt-parent = <&mpic>; |
246 | tbi-handle = <&tbi1>; | ||
205 | phy-handle = <&phy1>; | 247 | phy-handle = <&phy1>; |
206 | }; | 248 | }; |
207 | 249 | ||
@@ -214,6 +256,7 @@ | |||
214 | local-mac-address = [ 00 00 00 00 00 00 ]; | 256 | local-mac-address = [ 00 00 00 00 00 00 ]; |
215 | interrupts = <31 2 32 2 33 2>; | 257 | interrupts = <31 2 32 2 33 2>; |
216 | interrupt-parent = <&mpic>; | 258 | interrupt-parent = <&mpic>; |
259 | tbi-handle = <&tbi2>; | ||
217 | phy-handle = <&phy3>; | 260 | phy-handle = <&phy3>; |
218 | }; | 261 | }; |
219 | 262 | ||
@@ -226,6 +269,7 @@ | |||
226 | local-mac-address = [ 00 00 00 00 00 00 ]; | 269 | local-mac-address = [ 00 00 00 00 00 00 ]; |
227 | interrupts = <37 2 38 2 39 2>; | 270 | interrupts = <37 2 38 2 39 2>; |
228 | interrupt-parent = <&mpic>; | 271 | interrupt-parent = <&mpic>; |
272 | tbi-handle = <&tbi3>; | ||
229 | phy-handle = <&phy4>; | 273 | phy-handle = <&phy4>; |
230 | }; | 274 | }; |
231 | 275 | ||
diff --git a/arch/powerpc/boot/dts/tqm8548.dts b/arch/powerpc/boot/dts/tqm8548.dts index 58ee4185454b..b7b65f5e79b6 100644 --- a/arch/powerpc/boot/dts/tqm8548.dts +++ b/arch/powerpc/boot/dts/tqm8548.dts | |||
@@ -179,6 +179,46 @@ | |||
179 | reg = <5>; | 179 | reg = <5>; |
180 | device_type = "ethernet-phy"; | 180 | device_type = "ethernet-phy"; |
181 | }; | 181 | }; |
182 | tbi0: tbi-phy@11 { | ||
183 | reg = <0x11>; | ||
184 | device_type = "tbi-phy"; | ||
185 | }; | ||
186 | }; | ||
187 | |||
188 | mdio@25520 { | ||
189 | #address-cells = <1>; | ||
190 | #size-cells = <0>; | ||
191 | compatible = "fsl,gianfar-tbi"; | ||
192 | reg = <0x25520 0x20>; | ||
193 | |||
194 | tbi1: tbi-phy@11 { | ||
195 | reg = <0x11>; | ||
196 | device_type = "tbi-phy"; | ||
197 | }; | ||
198 | }; | ||
199 | |||
200 | mdio@26520 { | ||
201 | #address-cells = <1>; | ||
202 | #size-cells = <0>; | ||
203 | compatible = "fsl,gianfar-tbi"; | ||
204 | reg = <0x26520 0x20>; | ||
205 | |||
206 | tbi2: tbi-phy@11 { | ||
207 | reg = <0x11>; | ||
208 | device_type = "tbi-phy"; | ||
209 | }; | ||
210 | }; | ||
211 | |||
212 | mdio@27520 { | ||
213 | #address-cells = <1>; | ||
214 | #size-cells = <0>; | ||
215 | compatible = "fsl,gianfar-tbi"; | ||
216 | reg = <0x27520 0x20>; | ||
217 | |||
218 | tbi3: tbi-phy@11 { | ||
219 | reg = <0x11>; | ||
220 | device_type = "tbi-phy"; | ||
221 | }; | ||
182 | }; | 222 | }; |
183 | 223 | ||
184 | enet0: ethernet@24000 { | 224 | enet0: ethernet@24000 { |
@@ -190,6 +230,7 @@ | |||
190 | local-mac-address = [ 00 00 00 00 00 00 ]; | 230 | local-mac-address = [ 00 00 00 00 00 00 ]; |
191 | interrupts = <29 2 30 2 34 2>; | 231 | interrupts = <29 2 30 2 34 2>; |
192 | interrupt-parent = <&mpic>; | 232 | interrupt-parent = <&mpic>; |
233 | tbi-handle = <&tbi0>; | ||
193 | phy-handle = <&phy2>; | 234 | phy-handle = <&phy2>; |
194 | }; | 235 | }; |
195 | 236 | ||
@@ -202,6 +243,7 @@ | |||
202 | local-mac-address = [ 00 00 00 00 00 00 ]; | 243 | local-mac-address = [ 00 00 00 00 00 00 ]; |
203 | interrupts = <35 2 36 2 40 2>; | 244 | interrupts = <35 2 36 2 40 2>; |
204 | interrupt-parent = <&mpic>; | 245 | interrupt-parent = <&mpic>; |
246 | tbi-handle = <&tbi1>; | ||
205 | phy-handle = <&phy1>; | 247 | phy-handle = <&phy1>; |
206 | }; | 248 | }; |
207 | 249 | ||
@@ -214,6 +256,7 @@ | |||
214 | local-mac-address = [ 00 00 00 00 00 00 ]; | 256 | local-mac-address = [ 00 00 00 00 00 00 ]; |
215 | interrupts = <31 2 32 2 33 2>; | 257 | interrupts = <31 2 32 2 33 2>; |
216 | interrupt-parent = <&mpic>; | 258 | interrupt-parent = <&mpic>; |
259 | tbi-handle = <&tbi2>; | ||
217 | phy-handle = <&phy3>; | 260 | phy-handle = <&phy3>; |
218 | }; | 261 | }; |
219 | 262 | ||
@@ -226,6 +269,7 @@ | |||
226 | local-mac-address = [ 00 00 00 00 00 00 ]; | 269 | local-mac-address = [ 00 00 00 00 00 00 ]; |
227 | interrupts = <37 2 38 2 39 2>; | 270 | interrupts = <37 2 38 2 39 2>; |
228 | interrupt-parent = <&mpic>; | 271 | interrupt-parent = <&mpic>; |
272 | tbi-handle = <&tbi3>; | ||
229 | phy-handle = <&phy4>; | 273 | phy-handle = <&phy4>; |
230 | }; | 274 | }; |
231 | 275 | ||
diff --git a/arch/powerpc/boot/dts/tqm8555.dts b/arch/powerpc/boot/dts/tqm8555.dts index 6f7ea59c4846..cf92b4e7945e 100644 --- a/arch/powerpc/boot/dts/tqm8555.dts +++ b/arch/powerpc/boot/dts/tqm8555.dts | |||
@@ -154,6 +154,22 @@ | |||
154 | reg = <3>; | 154 | reg = <3>; |
155 | device_type = "ethernet-phy"; | 155 | device_type = "ethernet-phy"; |
156 | }; | 156 | }; |
157 | tbi0: tbi-phy@11 { | ||
158 | reg = <0x11>; | ||
159 | device_type = "tbi-phy"; | ||
160 | }; | ||
161 | }; | ||
162 | |||
163 | mdio@25520 { | ||
164 | #address-cells = <1>; | ||
165 | #size-cells = <0>; | ||
166 | compatible = "fsl,gianfar-tbi"; | ||
167 | reg = <0x25520 0x20>; | ||
168 | |||
169 | tbi1: tbi-phy@11 { | ||
170 | reg = <0x11>; | ||
171 | device_type = "tbi-phy"; | ||
172 | }; | ||
157 | }; | 173 | }; |
158 | 174 | ||
159 | enet0: ethernet@24000 { | 175 | enet0: ethernet@24000 { |
@@ -165,6 +181,7 @@ | |||
165 | local-mac-address = [ 00 00 00 00 00 00 ]; | 181 | local-mac-address = [ 00 00 00 00 00 00 ]; |
166 | interrupts = <29 2 30 2 34 2>; | 182 | interrupts = <29 2 30 2 34 2>; |
167 | interrupt-parent = <&mpic>; | 183 | interrupt-parent = <&mpic>; |
184 | tbi-handle = <&tbi0>; | ||
168 | phy-handle = <&phy2>; | 185 | phy-handle = <&phy2>; |
169 | }; | 186 | }; |
170 | 187 | ||
@@ -177,6 +194,7 @@ | |||
177 | local-mac-address = [ 00 00 00 00 00 00 ]; | 194 | local-mac-address = [ 00 00 00 00 00 00 ]; |
178 | interrupts = <35 2 36 2 40 2>; | 195 | interrupts = <35 2 36 2 40 2>; |
179 | interrupt-parent = <&mpic>; | 196 | interrupt-parent = <&mpic>; |
197 | tbi-handle = <&tbi1>; | ||
180 | phy-handle = <&phy1>; | 198 | phy-handle = <&phy1>; |
181 | }; | 199 | }; |
182 | 200 | ||
diff --git a/arch/powerpc/boot/dts/tqm8560.dts b/arch/powerpc/boot/dts/tqm8560.dts index 3fe35208907b..9e1ab2d2f669 100644 --- a/arch/powerpc/boot/dts/tqm8560.dts +++ b/arch/powerpc/boot/dts/tqm8560.dts | |||
@@ -156,6 +156,22 @@ | |||
156 | reg = <3>; | 156 | reg = <3>; |
157 | device_type = "ethernet-phy"; | 157 | device_type = "ethernet-phy"; |
158 | }; | 158 | }; |
159 | tbi0: tbi-phy@11 { | ||
160 | reg = <0x11>; | ||
161 | device_type = "tbi-phy"; | ||
162 | }; | ||
163 | }; | ||
164 | |||
165 | mdio@25520 { | ||
166 | #address-cells = <1>; | ||
167 | #size-cells = <0>; | ||
168 | compatible = "fsl,gianfar-tbi"; | ||
169 | reg = <0x25520 0x20>; | ||
170 | |||
171 | tbi1: tbi-phy@11 { | ||
172 | reg = <0x11>; | ||
173 | device_type = "tbi-phy"; | ||
174 | }; | ||
159 | }; | 175 | }; |
160 | 176 | ||
161 | enet0: ethernet@24000 { | 177 | enet0: ethernet@24000 { |
@@ -167,6 +183,7 @@ | |||
167 | local-mac-address = [ 00 00 00 00 00 00 ]; | 183 | local-mac-address = [ 00 00 00 00 00 00 ]; |
168 | interrupts = <29 2 30 2 34 2>; | 184 | interrupts = <29 2 30 2 34 2>; |
169 | interrupt-parent = <&mpic>; | 185 | interrupt-parent = <&mpic>; |
186 | tbi-handle = <&tbi0>; | ||
170 | phy-handle = <&phy2>; | 187 | phy-handle = <&phy2>; |
171 | }; | 188 | }; |
172 | 189 | ||
@@ -179,6 +196,7 @@ | |||
179 | local-mac-address = [ 00 00 00 00 00 00 ]; | 196 | local-mac-address = [ 00 00 00 00 00 00 ]; |
180 | interrupts = <35 2 36 2 40 2>; | 197 | interrupts = <35 2 36 2 40 2>; |
181 | interrupt-parent = <&mpic>; | 198 | interrupt-parent = <&mpic>; |
199 | tbi-handle = <&tbi1>; | ||
182 | phy-handle = <&phy1>; | 200 | phy-handle = <&phy1>; |
183 | }; | 201 | }; |
184 | 202 | ||
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h index d812929390e4..cd46f023ec6d 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h | |||
@@ -267,7 +267,7 @@ extern int ucache_bsize; | |||
267 | #define ARCH_HAS_SETUP_ADDITIONAL_PAGES | 267 | #define ARCH_HAS_SETUP_ADDITIONAL_PAGES |
268 | struct linux_binprm; | 268 | struct linux_binprm; |
269 | extern int arch_setup_additional_pages(struct linux_binprm *bprm, | 269 | extern int arch_setup_additional_pages(struct linux_binprm *bprm, |
270 | int executable_stack); | 270 | int uses_interp); |
271 | #define VDSO_AUX_ENT(a,b) NEW_AUX_ENT(a,b); | 271 | #define VDSO_AUX_ENT(a,b) NEW_AUX_ENT(a,b); |
272 | 272 | ||
273 | #endif /* __KERNEL__ */ | 273 | #endif /* __KERNEL__ */ |
diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h index b298f7a631e6..e5f2ae8362f7 100644 --- a/arch/powerpc/include/asm/ftrace.h +++ b/arch/powerpc/include/asm/ftrace.h | |||
@@ -7,7 +7,19 @@ | |||
7 | 7 | ||
8 | #ifndef __ASSEMBLY__ | 8 | #ifndef __ASSEMBLY__ |
9 | extern void _mcount(void); | 9 | extern void _mcount(void); |
10 | #endif | 10 | |
11 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
12 | static inline unsigned long ftrace_call_adjust(unsigned long addr) | ||
13 | { | ||
14 | /* reloction of mcount call site is the same as the address */ | ||
15 | return addr; | ||
16 | } | ||
17 | |||
18 | struct dyn_arch_ftrace { | ||
19 | struct module *mod; | ||
20 | }; | ||
21 | #endif /* CONFIG_DYNAMIC_FTRACE */ | ||
22 | #endif /* __ASSEMBLY__ */ | ||
11 | 23 | ||
12 | #endif | 24 | #endif |
13 | 25 | ||
diff --git a/arch/powerpc/include/asm/module.h b/arch/powerpc/include/asm/module.h index e5f14b13ccf0..08454880a2c0 100644 --- a/arch/powerpc/include/asm/module.h +++ b/arch/powerpc/include/asm/module.h | |||
@@ -34,11 +34,19 @@ struct mod_arch_specific { | |||
34 | #ifdef __powerpc64__ | 34 | #ifdef __powerpc64__ |
35 | unsigned int stubs_section; /* Index of stubs section in module */ | 35 | unsigned int stubs_section; /* Index of stubs section in module */ |
36 | unsigned int toc_section; /* What section is the TOC? */ | 36 | unsigned int toc_section; /* What section is the TOC? */ |
37 | #else | 37 | #ifdef CONFIG_DYNAMIC_FTRACE |
38 | unsigned long toc; | ||
39 | unsigned long tramp; | ||
40 | #endif | ||
41 | |||
42 | #else /* powerpc64 */ | ||
38 | /* Indices of PLT sections within module. */ | 43 | /* Indices of PLT sections within module. */ |
39 | unsigned int core_plt_section; | 44 | unsigned int core_plt_section; |
40 | unsigned int init_plt_section; | 45 | unsigned int init_plt_section; |
46 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
47 | unsigned long tramp; | ||
41 | #endif | 48 | #endif |
49 | #endif /* powerpc64 */ | ||
42 | 50 | ||
43 | /* List of BUG addresses, source line numbers and filenames */ | 51 | /* List of BUG addresses, source line numbers and filenames */ |
44 | struct list_head bug_list; | 52 | struct list_head bug_list; |
@@ -68,6 +76,12 @@ struct mod_arch_specific { | |||
68 | # endif /* MODULE */ | 76 | # endif /* MODULE */ |
69 | #endif | 77 | #endif |
70 | 78 | ||
79 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
80 | # ifdef MODULE | ||
81 | asm(".section .ftrace.tramp,\"ax\",@nobits; .align 3; .previous"); | ||
82 | # endif /* MODULE */ | ||
83 | #endif | ||
84 | |||
71 | 85 | ||
72 | struct exception_table_entry; | 86 | struct exception_table_entry; |
73 | void sort_ex_table(struct exception_table_entry *start, | 87 | void sort_ex_table(struct exception_table_entry *start, |
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 089209aa2132..1308a86e9070 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -17,6 +17,7 @@ ifdef CONFIG_FUNCTION_TRACER | |||
17 | CFLAGS_REMOVE_cputable.o = -pg -mno-sched-epilog | 17 | CFLAGS_REMOVE_cputable.o = -pg -mno-sched-epilog |
18 | CFLAGS_REMOVE_prom_init.o = -pg -mno-sched-epilog | 18 | CFLAGS_REMOVE_prom_init.o = -pg -mno-sched-epilog |
19 | CFLAGS_REMOVE_btext.o = -pg -mno-sched-epilog | 19 | CFLAGS_REMOVE_btext.o = -pg -mno-sched-epilog |
20 | CFLAGS_REMOVE_prom.o = -pg -mno-sched-epilog | ||
20 | 21 | ||
21 | ifdef CONFIG_DYNAMIC_FTRACE | 22 | ifdef CONFIG_DYNAMIC_FTRACE |
22 | # dynamic ftrace setup. | 23 | # dynamic ftrace setup. |
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 7ecc0d1855c3..6f7eb7e00c79 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
@@ -1162,39 +1162,17 @@ machine_check_in_rtas: | |||
1162 | #ifdef CONFIG_DYNAMIC_FTRACE | 1162 | #ifdef CONFIG_DYNAMIC_FTRACE |
1163 | _GLOBAL(mcount) | 1163 | _GLOBAL(mcount) |
1164 | _GLOBAL(_mcount) | 1164 | _GLOBAL(_mcount) |
1165 | stwu r1,-48(r1) | 1165 | /* |
1166 | stw r3, 12(r1) | 1166 | * It is required that _mcount on PPC32 must preserve the |
1167 | stw r4, 16(r1) | 1167 | * link register. But we have r0 to play with. We use r0 |
1168 | stw r5, 20(r1) | 1168 | * to push the return address back to the caller of mcount |
1169 | stw r6, 24(r1) | 1169 | * into the ctr register, restore the link register and |
1170 | mflr r3 | 1170 | * then jump back using the ctr register. |
1171 | stw r7, 28(r1) | 1171 | */ |
1172 | mfcr r5 | 1172 | mflr r0 |
1173 | stw r8, 32(r1) | ||
1174 | stw r9, 36(r1) | ||
1175 | stw r10,40(r1) | ||
1176 | stw r3, 44(r1) | ||
1177 | stw r5, 8(r1) | ||
1178 | subi r3, r3, MCOUNT_INSN_SIZE | ||
1179 | .globl mcount_call | ||
1180 | mcount_call: | ||
1181 | bl ftrace_stub | ||
1182 | nop | ||
1183 | lwz r6, 8(r1) | ||
1184 | lwz r0, 44(r1) | ||
1185 | lwz r3, 12(r1) | ||
1186 | mtctr r0 | 1173 | mtctr r0 |
1187 | lwz r4, 16(r1) | 1174 | lwz r0, 4(r1) |
1188 | mtcr r6 | ||
1189 | lwz r5, 20(r1) | ||
1190 | lwz r6, 24(r1) | ||
1191 | lwz r0, 52(r1) | ||
1192 | lwz r7, 28(r1) | ||
1193 | lwz r8, 32(r1) | ||
1194 | mtlr r0 | 1175 | mtlr r0 |
1195 | lwz r9, 36(r1) | ||
1196 | lwz r10,40(r1) | ||
1197 | addi r1, r1, 48 | ||
1198 | bctr | 1176 | bctr |
1199 | 1177 | ||
1200 | _GLOBAL(ftrace_caller) | 1178 | _GLOBAL(ftrace_caller) |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index e0bcf9354286..383ed6eb0085 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -894,18 +894,6 @@ _GLOBAL(enter_prom) | |||
894 | #ifdef CONFIG_DYNAMIC_FTRACE | 894 | #ifdef CONFIG_DYNAMIC_FTRACE |
895 | _GLOBAL(mcount) | 895 | _GLOBAL(mcount) |
896 | _GLOBAL(_mcount) | 896 | _GLOBAL(_mcount) |
897 | /* Taken from output of objdump from lib64/glibc */ | ||
898 | mflr r3 | ||
899 | stdu r1, -112(r1) | ||
900 | std r3, 128(r1) | ||
901 | subi r3, r3, MCOUNT_INSN_SIZE | ||
902 | .globl mcount_call | ||
903 | mcount_call: | ||
904 | bl ftrace_stub | ||
905 | nop | ||
906 | ld r0, 128(r1) | ||
907 | mtlr r0 | ||
908 | addi r1, r1, 112 | ||
909 | blr | 897 | blr |
910 | 898 | ||
911 | _GLOBAL(ftrace_caller) | 899 | _GLOBAL(ftrace_caller) |
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index f4b006ed0ab1..5355244c99ff 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c | |||
@@ -9,22 +9,30 @@ | |||
9 | 9 | ||
10 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
11 | #include <linux/hardirq.h> | 11 | #include <linux/hardirq.h> |
12 | #include <linux/uaccess.h> | ||
13 | #include <linux/module.h> | ||
12 | #include <linux/ftrace.h> | 14 | #include <linux/ftrace.h> |
13 | #include <linux/percpu.h> | 15 | #include <linux/percpu.h> |
14 | #include <linux/init.h> | 16 | #include <linux/init.h> |
15 | #include <linux/list.h> | 17 | #include <linux/list.h> |
16 | 18 | ||
17 | #include <asm/cacheflush.h> | 19 | #include <asm/cacheflush.h> |
20 | #include <asm/code-patching.h> | ||
18 | #include <asm/ftrace.h> | 21 | #include <asm/ftrace.h> |
19 | 22 | ||
23 | #if 0 | ||
24 | #define DEBUGP printk | ||
25 | #else | ||
26 | #define DEBUGP(fmt , ...) do { } while (0) | ||
27 | #endif | ||
20 | 28 | ||
21 | static unsigned int ftrace_nop = 0x60000000; | 29 | static unsigned int ftrace_nop = PPC_NOP_INSTR; |
22 | 30 | ||
23 | #ifdef CONFIG_PPC32 | 31 | #ifdef CONFIG_PPC32 |
24 | # define GET_ADDR(addr) addr | 32 | # define GET_ADDR(addr) addr |
25 | #else | 33 | #else |
26 | /* PowerPC64's functions are data that points to the functions */ | 34 | /* PowerPC64's functions are data that points to the functions */ |
27 | # define GET_ADDR(addr) *(unsigned long *)addr | 35 | # define GET_ADDR(addr) (*(unsigned long *)addr) |
28 | #endif | 36 | #endif |
29 | 37 | ||
30 | 38 | ||
@@ -33,12 +41,12 @@ static unsigned int ftrace_calc_offset(long ip, long addr) | |||
33 | return (int)(addr - ip); | 41 | return (int)(addr - ip); |
34 | } | 42 | } |
35 | 43 | ||
36 | unsigned char *ftrace_nop_replace(void) | 44 | static unsigned char *ftrace_nop_replace(void) |
37 | { | 45 | { |
38 | return (char *)&ftrace_nop; | 46 | return (char *)&ftrace_nop; |
39 | } | 47 | } |
40 | 48 | ||
41 | unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr) | 49 | static unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr) |
42 | { | 50 | { |
43 | static unsigned int op; | 51 | static unsigned int op; |
44 | 52 | ||
@@ -68,49 +76,422 @@ unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr) | |||
68 | # define _ASM_PTR " .long " | 76 | # define _ASM_PTR " .long " |
69 | #endif | 77 | #endif |
70 | 78 | ||
71 | int | 79 | static int |
72 | ftrace_modify_code(unsigned long ip, unsigned char *old_code, | 80 | ftrace_modify_code(unsigned long ip, unsigned char *old_code, |
73 | unsigned char *new_code) | 81 | unsigned char *new_code) |
74 | { | 82 | { |
75 | unsigned replaced; | 83 | unsigned char replaced[MCOUNT_INSN_SIZE]; |
76 | unsigned old = *(unsigned *)old_code; | ||
77 | unsigned new = *(unsigned *)new_code; | ||
78 | int faulted = 0; | ||
79 | 84 | ||
80 | /* | 85 | /* |
81 | * Note: Due to modules and __init, code can | 86 | * Note: Due to modules and __init, code can |
82 | * disappear and change, we need to protect against faulting | 87 | * disappear and change, we need to protect against faulting |
83 | * as well as code changing. | 88 | * as well as code changing. We do this by using the |
89 | * probe_kernel_* functions. | ||
84 | * | 90 | * |
85 | * No real locking needed, this code is run through | 91 | * No real locking needed, this code is run through |
86 | * kstop_machine. | 92 | * kstop_machine, or before SMP starts. |
87 | */ | 93 | */ |
88 | asm volatile ( | 94 | |
89 | "1: lwz %1, 0(%2)\n" | 95 | /* read the text we want to modify */ |
90 | " cmpw %1, %5\n" | 96 | if (probe_kernel_read(replaced, (void *)ip, MCOUNT_INSN_SIZE)) |
91 | " bne 2f\n" | 97 | return -EFAULT; |
92 | " stwu %3, 0(%2)\n" | 98 | |
93 | "2:\n" | 99 | /* Make sure it is what we expect it to be */ |
94 | ".section .fixup, \"ax\"\n" | 100 | if (memcmp(replaced, old_code, MCOUNT_INSN_SIZE) != 0) |
95 | "3: li %0, 1\n" | 101 | return -EINVAL; |
96 | " b 2b\n" | 102 | |
97 | ".previous\n" | 103 | /* replace the text with the new text */ |
98 | ".section __ex_table,\"a\"\n" | 104 | if (probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE)) |
99 | _ASM_ALIGN "\n" | 105 | return -EPERM; |
100 | _ASM_PTR "1b, 3b\n" | 106 | |
101 | ".previous" | 107 | flush_icache_range(ip, ip + 8); |
102 | : "=r"(faulted), "=r"(replaced) | 108 | |
103 | : "r"(ip), "r"(new), | 109 | return 0; |
104 | "0"(faulted), "r"(old) | 110 | } |
105 | : "memory"); | 111 | |
106 | 112 | /* | |
107 | if (replaced != old && replaced != new) | 113 | * Helper functions that are the same for both PPC64 and PPC32. |
108 | faulted = 2; | 114 | */ |
109 | 115 | static int test_24bit_addr(unsigned long ip, unsigned long addr) | |
110 | if (!faulted) | 116 | { |
111 | flush_icache_range(ip, ip + 8); | 117 | |
112 | 118 | /* use the create_branch to verify that this offset can be branched */ | |
113 | return faulted; | 119 | return create_branch((unsigned int *)ip, addr, 0); |
120 | } | ||
121 | |||
122 | static int is_bl_op(unsigned int op) | ||
123 | { | ||
124 | return (op & 0xfc000003) == 0x48000001; | ||
125 | } | ||
126 | |||
127 | static unsigned long find_bl_target(unsigned long ip, unsigned int op) | ||
128 | { | ||
129 | static int offset; | ||
130 | |||
131 | offset = (op & 0x03fffffc); | ||
132 | /* make it signed */ | ||
133 | if (offset & 0x02000000) | ||
134 | offset |= 0xfe000000; | ||
135 | |||
136 | return ip + (long)offset; | ||
137 | } | ||
138 | |||
139 | #ifdef CONFIG_PPC64 | ||
140 | static int | ||
141 | __ftrace_make_nop(struct module *mod, | ||
142 | struct dyn_ftrace *rec, unsigned long addr) | ||
143 | { | ||
144 | unsigned int op; | ||
145 | unsigned int jmp[5]; | ||
146 | unsigned long ptr; | ||
147 | unsigned long ip = rec->ip; | ||
148 | unsigned long tramp; | ||
149 | int offset; | ||
150 | |||
151 | /* read where this goes */ | ||
152 | if (probe_kernel_read(&op, (void *)ip, sizeof(int))) | ||
153 | return -EFAULT; | ||
154 | |||
155 | /* Make sure that that this is still a 24bit jump */ | ||
156 | if (!is_bl_op(op)) { | ||
157 | printk(KERN_ERR "Not expected bl: opcode is %x\n", op); | ||
158 | return -EINVAL; | ||
159 | } | ||
160 | |||
161 | /* lets find where the pointer goes */ | ||
162 | tramp = find_bl_target(ip, op); | ||
163 | |||
164 | /* | ||
165 | * On PPC64 the trampoline looks like: | ||
166 | * 0x3d, 0x82, 0x00, 0x00, addis r12,r2, <high> | ||
167 | * 0x39, 0x8c, 0x00, 0x00, addi r12,r12, <low> | ||
168 | * Where the bytes 2,3,6 and 7 make up the 32bit offset | ||
169 | * to the TOC that holds the pointer. | ||
170 | * to jump to. | ||
171 | * 0xf8, 0x41, 0x00, 0x28, std r2,40(r1) | ||
172 | * 0xe9, 0x6c, 0x00, 0x20, ld r11,32(r12) | ||
173 | * The actually address is 32 bytes from the offset | ||
174 | * into the TOC. | ||
175 | * 0xe8, 0x4c, 0x00, 0x28, ld r2,40(r12) | ||
176 | */ | ||
177 | |||
178 | DEBUGP("ip:%lx jumps to %lx r2: %lx", ip, tramp, mod->arch.toc); | ||
179 | |||
180 | /* Find where the trampoline jumps to */ | ||
181 | if (probe_kernel_read(jmp, (void *)tramp, sizeof(jmp))) { | ||
182 | printk(KERN_ERR "Failed to read %lx\n", tramp); | ||
183 | return -EFAULT; | ||
184 | } | ||
185 | |||
186 | DEBUGP(" %08x %08x", jmp[0], jmp[1]); | ||
187 | |||
188 | /* verify that this is what we expect it to be */ | ||
189 | if (((jmp[0] & 0xffff0000) != 0x3d820000) || | ||
190 | ((jmp[1] & 0xffff0000) != 0x398c0000) || | ||
191 | (jmp[2] != 0xf8410028) || | ||
192 | (jmp[3] != 0xe96c0020) || | ||
193 | (jmp[4] != 0xe84c0028)) { | ||
194 | printk(KERN_ERR "Not a trampoline\n"); | ||
195 | return -EINVAL; | ||
196 | } | ||
197 | |||
198 | offset = (unsigned)((unsigned short)jmp[0]) << 16 | | ||
199 | (unsigned)((unsigned short)jmp[1]); | ||
200 | |||
201 | DEBUGP(" %x ", offset); | ||
202 | |||
203 | /* get the address this jumps too */ | ||
204 | tramp = mod->arch.toc + offset + 32; | ||
205 | DEBUGP("toc: %lx", tramp); | ||
206 | |||
207 | if (probe_kernel_read(jmp, (void *)tramp, 8)) { | ||
208 | printk(KERN_ERR "Failed to read %lx\n", tramp); | ||
209 | return -EFAULT; | ||
210 | } | ||
211 | |||
212 | DEBUGP(" %08x %08x\n", jmp[0], jmp[1]); | ||
213 | |||
214 | ptr = ((unsigned long)jmp[0] << 32) + jmp[1]; | ||
215 | |||
216 | /* This should match what was called */ | ||
217 | if (ptr != GET_ADDR(addr)) { | ||
218 | printk(KERN_ERR "addr does not match %lx\n", ptr); | ||
219 | return -EINVAL; | ||
220 | } | ||
221 | |||
222 | /* | ||
223 | * We want to nop the line, but the next line is | ||
224 | * 0xe8, 0x41, 0x00, 0x28 ld r2,40(r1) | ||
225 | * This needs to be turned to a nop too. | ||
226 | */ | ||
227 | if (probe_kernel_read(&op, (void *)(ip+4), MCOUNT_INSN_SIZE)) | ||
228 | return -EFAULT; | ||
229 | |||
230 | if (op != 0xe8410028) { | ||
231 | printk(KERN_ERR "Next line is not ld! (%08x)\n", op); | ||
232 | return -EINVAL; | ||
233 | } | ||
234 | |||
235 | /* | ||
236 | * Milton Miller pointed out that we can not blindly do nops. | ||
237 | * If a task was preempted when calling a trace function, | ||
238 | * the nops will remove the way to restore the TOC in r2 | ||
239 | * and the r2 TOC will get corrupted. | ||
240 | */ | ||
241 | |||
242 | /* | ||
243 | * Replace: | ||
244 | * bl <tramp> <==== will be replaced with "b 1f" | ||
245 | * ld r2,40(r1) | ||
246 | * 1: | ||
247 | */ | ||
248 | op = 0x48000008; /* b +8 */ | ||
249 | |||
250 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) | ||
251 | return -EPERM; | ||
252 | |||
253 | |||
254 | flush_icache_range(ip, ip + 8); | ||
255 | |||
256 | return 0; | ||
257 | } | ||
258 | |||
259 | #else /* !PPC64 */ | ||
260 | static int | ||
261 | __ftrace_make_nop(struct module *mod, | ||
262 | struct dyn_ftrace *rec, unsigned long addr) | ||
263 | { | ||
264 | unsigned int op; | ||
265 | unsigned int jmp[4]; | ||
266 | unsigned long ip = rec->ip; | ||
267 | unsigned long tramp; | ||
268 | |||
269 | if (probe_kernel_read(&op, (void *)ip, MCOUNT_INSN_SIZE)) | ||
270 | return -EFAULT; | ||
271 | |||
272 | /* Make sure that that this is still a 24bit jump */ | ||
273 | if (!is_bl_op(op)) { | ||
274 | printk(KERN_ERR "Not expected bl: opcode is %x\n", op); | ||
275 | return -EINVAL; | ||
276 | } | ||
277 | |||
278 | /* lets find where the pointer goes */ | ||
279 | tramp = find_bl_target(ip, op); | ||
280 | |||
281 | /* | ||
282 | * On PPC32 the trampoline looks like: | ||
283 | * 0x3d, 0x60, 0x00, 0x00 lis r11,sym@ha | ||
284 | * 0x39, 0x6b, 0x00, 0x00 addi r11,r11,sym@l | ||
285 | * 0x7d, 0x69, 0x03, 0xa6 mtctr r11 | ||
286 | * 0x4e, 0x80, 0x04, 0x20 bctr | ||
287 | */ | ||
288 | |||
289 | DEBUGP("ip:%lx jumps to %lx", ip, tramp); | ||
290 | |||
291 | /* Find where the trampoline jumps to */ | ||
292 | if (probe_kernel_read(jmp, (void *)tramp, sizeof(jmp))) { | ||
293 | printk(KERN_ERR "Failed to read %lx\n", tramp); | ||
294 | return -EFAULT; | ||
295 | } | ||
296 | |||
297 | DEBUGP(" %08x %08x ", jmp[0], jmp[1]); | ||
298 | |||
299 | /* verify that this is what we expect it to be */ | ||
300 | if (((jmp[0] & 0xffff0000) != 0x3d600000) || | ||
301 | ((jmp[1] & 0xffff0000) != 0x396b0000) || | ||
302 | (jmp[2] != 0x7d6903a6) || | ||
303 | (jmp[3] != 0x4e800420)) { | ||
304 | printk(KERN_ERR "Not a trampoline\n"); | ||
305 | return -EINVAL; | ||
306 | } | ||
307 | |||
308 | tramp = (jmp[1] & 0xffff) | | ||
309 | ((jmp[0] & 0xffff) << 16); | ||
310 | if (tramp & 0x8000) | ||
311 | tramp -= 0x10000; | ||
312 | |||
313 | DEBUGP(" %x ", tramp); | ||
314 | |||
315 | if (tramp != addr) { | ||
316 | printk(KERN_ERR | ||
317 | "Trampoline location %08lx does not match addr\n", | ||
318 | tramp); | ||
319 | return -EINVAL; | ||
320 | } | ||
321 | |||
322 | op = PPC_NOP_INSTR; | ||
323 | |||
324 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) | ||
325 | return -EPERM; | ||
326 | |||
327 | flush_icache_range(ip, ip + 8); | ||
328 | |||
329 | return 0; | ||
330 | } | ||
331 | #endif /* PPC64 */ | ||
332 | |||
333 | int ftrace_make_nop(struct module *mod, | ||
334 | struct dyn_ftrace *rec, unsigned long addr) | ||
335 | { | ||
336 | unsigned char *old, *new; | ||
337 | unsigned long ip = rec->ip; | ||
338 | |||
339 | /* | ||
340 | * If the calling address is more that 24 bits away, | ||
341 | * then we had to use a trampoline to make the call. | ||
342 | * Otherwise just update the call site. | ||
343 | */ | ||
344 | if (test_24bit_addr(ip, addr)) { | ||
345 | /* within range */ | ||
346 | old = ftrace_call_replace(ip, addr); | ||
347 | new = ftrace_nop_replace(); | ||
348 | return ftrace_modify_code(ip, old, new); | ||
349 | } | ||
350 | |||
351 | /* | ||
352 | * Out of range jumps are called from modules. | ||
353 | * We should either already have a pointer to the module | ||
354 | * or it has been passed in. | ||
355 | */ | ||
356 | if (!rec->arch.mod) { | ||
357 | if (!mod) { | ||
358 | printk(KERN_ERR "No module loaded addr=%lx\n", | ||
359 | addr); | ||
360 | return -EFAULT; | ||
361 | } | ||
362 | rec->arch.mod = mod; | ||
363 | } else if (mod) { | ||
364 | if (mod != rec->arch.mod) { | ||
365 | printk(KERN_ERR | ||
366 | "Record mod %p not equal to passed in mod %p\n", | ||
367 | rec->arch.mod, mod); | ||
368 | return -EINVAL; | ||
369 | } | ||
370 | /* nothing to do if mod == rec->arch.mod */ | ||
371 | } else | ||
372 | mod = rec->arch.mod; | ||
373 | |||
374 | return __ftrace_make_nop(mod, rec, addr); | ||
375 | |||
376 | } | ||
377 | |||
378 | #ifdef CONFIG_PPC64 | ||
379 | static int | ||
380 | __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | ||
381 | { | ||
382 | unsigned int op[2]; | ||
383 | unsigned long ip = rec->ip; | ||
384 | |||
385 | /* read where this goes */ | ||
386 | if (probe_kernel_read(op, (void *)ip, MCOUNT_INSN_SIZE * 2)) | ||
387 | return -EFAULT; | ||
388 | |||
389 | /* | ||
390 | * It should be pointing to two nops or | ||
391 | * b +8; ld r2,40(r1) | ||
392 | */ | ||
393 | if (((op[0] != 0x48000008) || (op[1] != 0xe8410028)) && | ||
394 | ((op[0] != PPC_NOP_INSTR) || (op[1] != PPC_NOP_INSTR))) { | ||
395 | printk(KERN_ERR "Expected NOPs but have %x %x\n", op[0], op[1]); | ||
396 | return -EINVAL; | ||
397 | } | ||
398 | |||
399 | /* If we never set up a trampoline to ftrace_caller, then bail */ | ||
400 | if (!rec->arch.mod->arch.tramp) { | ||
401 | printk(KERN_ERR "No ftrace trampoline\n"); | ||
402 | return -EINVAL; | ||
403 | } | ||
404 | |||
405 | /* create the branch to the trampoline */ | ||
406 | op[0] = create_branch((unsigned int *)ip, | ||
407 | rec->arch.mod->arch.tramp, BRANCH_SET_LINK); | ||
408 | if (!op[0]) { | ||
409 | printk(KERN_ERR "REL24 out of range!\n"); | ||
410 | return -EINVAL; | ||
411 | } | ||
412 | |||
413 | /* ld r2,40(r1) */ | ||
414 | op[1] = 0xe8410028; | ||
415 | |||
416 | DEBUGP("write to %lx\n", rec->ip); | ||
417 | |||
418 | if (probe_kernel_write((void *)ip, op, MCOUNT_INSN_SIZE * 2)) | ||
419 | return -EPERM; | ||
420 | |||
421 | flush_icache_range(ip, ip + 8); | ||
422 | |||
423 | return 0; | ||
424 | } | ||
425 | #else | ||
426 | static int | ||
427 | __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | ||
428 | { | ||
429 | unsigned int op; | ||
430 | unsigned long ip = rec->ip; | ||
431 | |||
432 | /* read where this goes */ | ||
433 | if (probe_kernel_read(&op, (void *)ip, MCOUNT_INSN_SIZE)) | ||
434 | return -EFAULT; | ||
435 | |||
436 | /* It should be pointing to a nop */ | ||
437 | if (op != PPC_NOP_INSTR) { | ||
438 | printk(KERN_ERR "Expected NOP but have %x\n", op); | ||
439 | return -EINVAL; | ||
440 | } | ||
441 | |||
442 | /* If we never set up a trampoline to ftrace_caller, then bail */ | ||
443 | if (!rec->arch.mod->arch.tramp) { | ||
444 | printk(KERN_ERR "No ftrace trampoline\n"); | ||
445 | return -EINVAL; | ||
446 | } | ||
447 | |||
448 | /* create the branch to the trampoline */ | ||
449 | op = create_branch((unsigned int *)ip, | ||
450 | rec->arch.mod->arch.tramp, BRANCH_SET_LINK); | ||
451 | if (!op) { | ||
452 | printk(KERN_ERR "REL24 out of range!\n"); | ||
453 | return -EINVAL; | ||
454 | } | ||
455 | |||
456 | DEBUGP("write to %lx\n", rec->ip); | ||
457 | |||
458 | if (probe_kernel_write((void *)ip, &op, MCOUNT_INSN_SIZE)) | ||
459 | return -EPERM; | ||
460 | |||
461 | flush_icache_range(ip, ip + 8); | ||
462 | |||
463 | return 0; | ||
464 | } | ||
465 | #endif /* CONFIG_PPC64 */ | ||
466 | |||
467 | int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) | ||
468 | { | ||
469 | unsigned char *old, *new; | ||
470 | unsigned long ip = rec->ip; | ||
471 | |||
472 | /* | ||
473 | * If the calling address is more that 24 bits away, | ||
474 | * then we had to use a trampoline to make the call. | ||
475 | * Otherwise just update the call site. | ||
476 | */ | ||
477 | if (test_24bit_addr(ip, addr)) { | ||
478 | /* within range */ | ||
479 | old = ftrace_nop_replace(); | ||
480 | new = ftrace_call_replace(ip, addr); | ||
481 | return ftrace_modify_code(ip, old, new); | ||
482 | } | ||
483 | |||
484 | /* | ||
485 | * Out of range jumps are called from modules. | ||
486 | * Being that we are converting from nop, it had better | ||
487 | * already have a module defined. | ||
488 | */ | ||
489 | if (!rec->arch.mod) { | ||
490 | printk(KERN_ERR "No module loaded\n"); | ||
491 | return -EINVAL; | ||
492 | } | ||
493 | |||
494 | return __ftrace_make_call(rec, addr); | ||
114 | } | 495 | } |
115 | 496 | ||
116 | int ftrace_update_ftrace_func(ftrace_func_t func) | 497 | int ftrace_update_ftrace_func(ftrace_func_t func) |
@@ -128,10 +509,10 @@ int ftrace_update_ftrace_func(ftrace_func_t func) | |||
128 | 509 | ||
129 | int __init ftrace_dyn_arch_init(void *data) | 510 | int __init ftrace_dyn_arch_init(void *data) |
130 | { | 511 | { |
131 | /* This is running in kstop_machine */ | 512 | /* caller expects data to be zero */ |
513 | unsigned long *p = data; | ||
132 | 514 | ||
133 | ftrace_mcount_set(data); | 515 | *p = 0; |
134 | 516 | ||
135 | return 0; | 517 | return 0; |
136 | } | 518 | } |
137 | |||
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index 31982d05d81a..88d9c1d5e5fb 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c | |||
@@ -69,10 +69,15 @@ void cpu_idle(void) | |||
69 | smp_mb(); | 69 | smp_mb(); |
70 | local_irq_disable(); | 70 | local_irq_disable(); |
71 | 71 | ||
72 | /* Don't trace irqs off for idle */ | ||
73 | stop_critical_timings(); | ||
74 | |||
72 | /* check again after disabling irqs */ | 75 | /* check again after disabling irqs */ |
73 | if (!need_resched() && !cpu_should_die()) | 76 | if (!need_resched() && !cpu_should_die()) |
74 | ppc_md.power_save(); | 77 | ppc_md.power_save(); |
75 | 78 | ||
79 | start_critical_timings(); | ||
80 | |||
76 | local_irq_enable(); | 81 | local_irq_enable(); |
77 | set_thread_flag(TIF_POLLING_NRFLAG); | 82 | set_thread_flag(TIF_POLLING_NRFLAG); |
78 | 83 | ||
diff --git a/arch/powerpc/kernel/init_task.c b/arch/powerpc/kernel/init_task.c index 4c85b8d56478..688b329800bd 100644 --- a/arch/powerpc/kernel/init_task.c +++ b/arch/powerpc/kernel/init_task.c | |||
@@ -7,7 +7,6 @@ | |||
7 | #include <linux/mqueue.h> | 7 | #include <linux/mqueue.h> |
8 | #include <asm/uaccess.h> | 8 | #include <asm/uaccess.h> |
9 | 9 | ||
10 | static struct fs_struct init_fs = INIT_FS; | ||
11 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 10 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
12 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 11 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
13 | struct mm_struct init_mm = INIT_MM(init_mm); | 12 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/powerpc/kernel/module_32.c b/arch/powerpc/kernel/module_32.c index 2df91a03462a..f832773fc28e 100644 --- a/arch/powerpc/kernel/module_32.c +++ b/arch/powerpc/kernel/module_32.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/fs.h> | 22 | #include <linux/fs.h> |
23 | #include <linux/string.h> | 23 | #include <linux/string.h> |
24 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
25 | #include <linux/ftrace.h> | ||
25 | #include <linux/cache.h> | 26 | #include <linux/cache.h> |
26 | #include <linux/bug.h> | 27 | #include <linux/bug.h> |
27 | #include <linux/sort.h> | 28 | #include <linux/sort.h> |
@@ -53,6 +54,9 @@ static unsigned int count_relocs(const Elf32_Rela *rela, unsigned int num) | |||
53 | r_addend = rela[i].r_addend; | 54 | r_addend = rela[i].r_addend; |
54 | } | 55 | } |
55 | 56 | ||
57 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
58 | _count_relocs++; /* add one for ftrace_caller */ | ||
59 | #endif | ||
56 | return _count_relocs; | 60 | return _count_relocs; |
57 | } | 61 | } |
58 | 62 | ||
@@ -306,5 +310,11 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
306 | return -ENOEXEC; | 310 | return -ENOEXEC; |
307 | } | 311 | } |
308 | } | 312 | } |
313 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
314 | module->arch.tramp = | ||
315 | do_plt_call(module->module_core, | ||
316 | (unsigned long)ftrace_caller, | ||
317 | sechdrs, module); | ||
318 | #endif | ||
309 | return 0; | 319 | return 0; |
310 | } | 320 | } |
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c index 1af2377e4992..8992b031a7b6 100644 --- a/arch/powerpc/kernel/module_64.c +++ b/arch/powerpc/kernel/module_64.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/moduleloader.h> | 20 | #include <linux/moduleloader.h> |
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/vmalloc.h> | 22 | #include <linux/vmalloc.h> |
23 | #include <linux/ftrace.h> | ||
23 | #include <linux/bug.h> | 24 | #include <linux/bug.h> |
24 | #include <asm/module.h> | 25 | #include <asm/module.h> |
25 | #include <asm/firmware.h> | 26 | #include <asm/firmware.h> |
@@ -163,6 +164,11 @@ static unsigned long get_stubs_size(const Elf64_Ehdr *hdr, | |||
163 | } | 164 | } |
164 | } | 165 | } |
165 | 166 | ||
167 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
168 | /* make the trampoline to the ftrace_caller */ | ||
169 | relocs++; | ||
170 | #endif | ||
171 | |||
166 | DEBUGP("Looks like a total of %lu stubs, max\n", relocs); | 172 | DEBUGP("Looks like a total of %lu stubs, max\n", relocs); |
167 | return relocs * sizeof(struct ppc64_stub_entry); | 173 | return relocs * sizeof(struct ppc64_stub_entry); |
168 | } | 174 | } |
@@ -441,5 +447,12 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, | |||
441 | } | 447 | } |
442 | } | 448 | } |
443 | 449 | ||
450 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
451 | me->arch.toc = my_r2(sechdrs, me); | ||
452 | me->arch.tramp = stub_for_addr(sechdrs, | ||
453 | (unsigned long)ftrace_caller, | ||
454 | me); | ||
455 | #endif | ||
456 | |||
444 | return 0; | 457 | return 0; |
445 | } | 458 | } |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index e619d424f73d..ad06d5c75b15 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -184,8 +184,7 @@ static void dump_vdso_pages(struct vm_area_struct * vma) | |||
184 | * This is called from binfmt_elf, we create the special vma for the | 184 | * This is called from binfmt_elf, we create the special vma for the |
185 | * vDSO and insert it into the mm struct tree | 185 | * vDSO and insert it into the mm struct tree |
186 | */ | 186 | */ |
187 | int arch_setup_additional_pages(struct linux_binprm *bprm, | 187 | int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) |
188 | int executable_stack) | ||
189 | { | 188 | { |
190 | struct mm_struct *mm = current->mm; | 189 | struct mm_struct *mm = current->mm; |
191 | struct page **vdso_pagelist; | 190 | struct page **vdso_pagelist; |
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile index d69912c07ce7..8db35278a4b4 100644 --- a/arch/powerpc/lib/Makefile +++ b/arch/powerpc/lib/Makefile | |||
@@ -6,6 +6,9 @@ ifeq ($(CONFIG_PPC64),y) | |||
6 | EXTRA_CFLAGS += -mno-minimal-toc | 6 | EXTRA_CFLAGS += -mno-minimal-toc |
7 | endif | 7 | endif |
8 | 8 | ||
9 | CFLAGS_REMOVE_code-patching.o = -pg | ||
10 | CFLAGS_REMOVE_feature-fixups.o = -pg | ||
11 | |||
9 | obj-y := string.o alloc.o \ | 12 | obj-y := string.o alloc.o \ |
10 | checksum_$(CONFIG_WORD_SIZE).o | 13 | checksum_$(CONFIG_WORD_SIZE).o |
11 | obj-$(CONFIG_PPC32) += div64.o copy_32.o crtsavres.o | 14 | obj-$(CONFIG_PPC32) += div64.o copy_32.o crtsavres.o |
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 87f1f955dea4..91c7b8636b8a 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -347,7 +347,7 @@ bad_area_nosemaphore: | |||
347 | && printk_ratelimit()) | 347 | && printk_ratelimit()) |
348 | printk(KERN_CRIT "kernel tried to execute NX-protected" | 348 | printk(KERN_CRIT "kernel tried to execute NX-protected" |
349 | " page (%lx) - exploit attempt? (uid: %d)\n", | 349 | " page (%lx) - exploit attempt? (uid: %d)\n", |
350 | address, current->uid); | 350 | address, current_uid()); |
351 | 351 | ||
352 | return SIGSEGV; | 352 | return SIGSEGV; |
353 | 353 | ||
diff --git a/arch/powerpc/oprofile/cell/spu_task_sync.c b/arch/powerpc/oprofile/cell/spu_task_sync.c index 2949126d28d1..6b793aeda72e 100644 --- a/arch/powerpc/oprofile/cell/spu_task_sync.c +++ b/arch/powerpc/oprofile/cell/spu_task_sync.c | |||
@@ -297,7 +297,7 @@ static inline unsigned long fast_get_dcookie(struct path *path) | |||
297 | { | 297 | { |
298 | unsigned long cookie; | 298 | unsigned long cookie; |
299 | 299 | ||
300 | if (path->dentry->d_cookie) | 300 | if (path->dentry->d_flags & DCACHE_COOKIE) |
301 | return (unsigned long)path->dentry; | 301 | return (unsigned long)path->dentry; |
302 | get_dcookie(path, &cookie); | 302 | get_dcookie(path, &cookie); |
303 | return cookie; | 303 | return cookie; |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index cb85d237e492..6296bfd9cb0b 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -95,8 +95,8 @@ spufs_new_inode(struct super_block *sb, int mode) | |||
95 | goto out; | 95 | goto out; |
96 | 96 | ||
97 | inode->i_mode = mode; | 97 | inode->i_mode = mode; |
98 | inode->i_uid = current->fsuid; | 98 | inode->i_uid = current_fsuid(); |
99 | inode->i_gid = current->fsgid; | 99 | inode->i_gid = current_fsgid(); |
100 | inode->i_blocks = 0; | 100 | inode->i_blocks = 0; |
101 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 101 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
102 | out: | 102 | out: |
@@ -323,7 +323,7 @@ static int spufs_context_open(struct dentry *dentry, struct vfsmount *mnt) | |||
323 | goto out; | 323 | goto out; |
324 | } | 324 | } |
325 | 325 | ||
326 | filp = dentry_open(dentry, mnt, O_RDONLY); | 326 | filp = dentry_open(dentry, mnt, O_RDONLY, current_cred()); |
327 | if (IS_ERR(filp)) { | 327 | if (IS_ERR(filp)) { |
328 | put_unused_fd(ret); | 328 | put_unused_fd(ret); |
329 | ret = PTR_ERR(filp); | 329 | ret = PTR_ERR(filp); |
@@ -562,7 +562,7 @@ static int spufs_gang_open(struct dentry *dentry, struct vfsmount *mnt) | |||
562 | goto out; | 562 | goto out; |
563 | } | 563 | } |
564 | 564 | ||
565 | filp = dentry_open(dentry, mnt, O_RDONLY); | 565 | filp = dentry_open(dentry, mnt, O_RDONLY, current_cred()); |
566 | if (IS_ERR(filp)) { | 566 | if (IS_ERR(filp)) { |
567 | put_unused_fd(ret); | 567 | put_unused_fd(ret); |
568 | ret = PTR_ERR(filp); | 568 | ret = PTR_ERR(filp); |
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c index f4e55be2eea9..afad9f5ac0ac 100644 --- a/arch/powerpc/platforms/pseries/rtasd.c +++ b/arch/powerpc/platforms/pseries/rtasd.c | |||
@@ -208,6 +208,7 @@ void pSeries_log_error(char *buf, unsigned int err_type, int fatal) | |||
208 | break; | 208 | break; |
209 | case ERR_TYPE_KERNEL_PANIC: | 209 | case ERR_TYPE_KERNEL_PANIC: |
210 | default: | 210 | default: |
211 | WARN_ON_ONCE(!irqs_disabled()); /* @@@ DEBUG @@@ */ | ||
211 | spin_unlock_irqrestore(&rtasd_log_lock, s); | 212 | spin_unlock_irqrestore(&rtasd_log_lock, s); |
212 | return; | 213 | return; |
213 | } | 214 | } |
@@ -227,6 +228,7 @@ void pSeries_log_error(char *buf, unsigned int err_type, int fatal) | |||
227 | /* Check to see if we need to or have stopped logging */ | 228 | /* Check to see if we need to or have stopped logging */ |
228 | if (fatal || !logging_enabled) { | 229 | if (fatal || !logging_enabled) { |
229 | logging_enabled = 0; | 230 | logging_enabled = 0; |
231 | WARN_ON_ONCE(!irqs_disabled()); /* @@@ DEBUG @@@ */ | ||
230 | spin_unlock_irqrestore(&rtasd_log_lock, s); | 232 | spin_unlock_irqrestore(&rtasd_log_lock, s); |
231 | return; | 233 | return; |
232 | } | 234 | } |
@@ -249,11 +251,13 @@ void pSeries_log_error(char *buf, unsigned int err_type, int fatal) | |||
249 | else | 251 | else |
250 | rtas_log_start += 1; | 252 | rtas_log_start += 1; |
251 | 253 | ||
254 | WARN_ON_ONCE(!irqs_disabled()); /* @@@ DEBUG @@@ */ | ||
252 | spin_unlock_irqrestore(&rtasd_log_lock, s); | 255 | spin_unlock_irqrestore(&rtasd_log_lock, s); |
253 | wake_up_interruptible(&rtas_log_wait); | 256 | wake_up_interruptible(&rtas_log_wait); |
254 | break; | 257 | break; |
255 | case ERR_TYPE_KERNEL_PANIC: | 258 | case ERR_TYPE_KERNEL_PANIC: |
256 | default: | 259 | default: |
260 | WARN_ON_ONCE(!irqs_disabled()); /* @@@ DEBUG @@@ */ | ||
257 | spin_unlock_irqrestore(&rtasd_log_lock, s); | 261 | spin_unlock_irqrestore(&rtasd_log_lock, s); |
258 | return; | 262 | return; |
259 | } | 263 | } |
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 26ecb96f9731..115cb16351fd 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -207,236 +207,51 @@ static int __init of_add_fixed_phys(void) | |||
207 | arch_initcall(of_add_fixed_phys); | 207 | arch_initcall(of_add_fixed_phys); |
208 | #endif /* CONFIG_FIXED_PHY */ | 208 | #endif /* CONFIG_FIXED_PHY */ |
209 | 209 | ||
210 | static int gfar_mdio_of_init_one(struct device_node *np) | 210 | #ifdef CONFIG_PPC_83xx |
211 | { | 211 | static int __init mpc83xx_wdt_init(void) |
212 | int k; | ||
213 | struct device_node *child = NULL; | ||
214 | struct gianfar_mdio_data mdio_data; | ||
215 | struct platform_device *mdio_dev; | ||
216 | struct resource res; | ||
217 | int ret; | ||
218 | |||
219 | memset(&res, 0, sizeof(res)); | ||
220 | memset(&mdio_data, 0, sizeof(mdio_data)); | ||
221 | |||
222 | ret = of_address_to_resource(np, 0, &res); | ||
223 | if (ret) | ||
224 | return ret; | ||
225 | |||
226 | /* The gianfar device will try to use the same ID created below to find | ||
227 | * this bus, to coordinate register access (since they share). */ | ||
228 | mdio_dev = platform_device_register_simple("fsl-gianfar_mdio", | ||
229 | res.start&0xfffff, &res, 1); | ||
230 | if (IS_ERR(mdio_dev)) | ||
231 | return PTR_ERR(mdio_dev); | ||
232 | |||
233 | for (k = 0; k < 32; k++) | ||
234 | mdio_data.irq[k] = PHY_POLL; | ||
235 | |||
236 | while ((child = of_get_next_child(np, child)) != NULL) { | ||
237 | int irq = irq_of_parse_and_map(child, 0); | ||
238 | if (irq != NO_IRQ) { | ||
239 | const u32 *id = of_get_property(child, "reg", NULL); | ||
240 | mdio_data.irq[*id] = irq; | ||
241 | } | ||
242 | } | ||
243 | |||
244 | ret = platform_device_add_data(mdio_dev, &mdio_data, | ||
245 | sizeof(struct gianfar_mdio_data)); | ||
246 | if (ret) | ||
247 | platform_device_unregister(mdio_dev); | ||
248 | |||
249 | return ret; | ||
250 | } | ||
251 | |||
252 | static int __init gfar_mdio_of_init(void) | ||
253 | { | ||
254 | struct device_node *np = NULL; | ||
255 | |||
256 | for_each_compatible_node(np, NULL, "fsl,gianfar-mdio") | ||
257 | gfar_mdio_of_init_one(np); | ||
258 | |||
259 | /* try the deprecated version */ | ||
260 | for_each_compatible_node(np, "mdio", "gianfar"); | ||
261 | gfar_mdio_of_init_one(np); | ||
262 | |||
263 | return 0; | ||
264 | } | ||
265 | |||
266 | arch_initcall(gfar_mdio_of_init); | ||
267 | |||
268 | static const char *gfar_tx_intr = "tx"; | ||
269 | static const char *gfar_rx_intr = "rx"; | ||
270 | static const char *gfar_err_intr = "error"; | ||
271 | |||
272 | static int __init gfar_of_init(void) | ||
273 | { | 212 | { |
213 | struct resource r; | ||
274 | struct device_node *np; | 214 | struct device_node *np; |
275 | unsigned int i; | 215 | struct platform_device *dev; |
276 | struct platform_device *gfar_dev; | 216 | u32 freq = fsl_get_sys_freq(); |
277 | struct resource res; | ||
278 | int ret; | 217 | int ret; |
279 | 218 | ||
280 | for (np = NULL, i = 0; | 219 | np = of_find_compatible_node(NULL, "watchdog", "mpc83xx_wdt"); |
281 | (np = of_find_compatible_node(np, "network", "gianfar")) != NULL; | ||
282 | i++) { | ||
283 | struct resource r[4]; | ||
284 | struct device_node *phy, *mdio; | ||
285 | struct gianfar_platform_data gfar_data; | ||
286 | const unsigned int *id; | ||
287 | const char *model; | ||
288 | const char *ctype; | ||
289 | const void *mac_addr; | ||
290 | const phandle *ph; | ||
291 | int n_res = 2; | ||
292 | |||
293 | if (!of_device_is_available(np)) | ||
294 | continue; | ||
295 | |||
296 | memset(r, 0, sizeof(r)); | ||
297 | memset(&gfar_data, 0, sizeof(gfar_data)); | ||
298 | |||
299 | ret = of_address_to_resource(np, 0, &r[0]); | ||
300 | if (ret) | ||
301 | goto err; | ||
302 | |||
303 | of_irq_to_resource(np, 0, &r[1]); | ||
304 | |||
305 | model = of_get_property(np, "model", NULL); | ||
306 | |||
307 | /* If we aren't the FEC we have multiple interrupts */ | ||
308 | if (model && strcasecmp(model, "FEC")) { | ||
309 | r[1].name = gfar_tx_intr; | ||
310 | |||
311 | r[2].name = gfar_rx_intr; | ||
312 | of_irq_to_resource(np, 1, &r[2]); | ||
313 | 220 | ||
314 | r[3].name = gfar_err_intr; | 221 | if (!np) { |
315 | of_irq_to_resource(np, 2, &r[3]); | 222 | ret = -ENODEV; |
316 | 223 | goto nodev; | |
317 | n_res += 2; | 224 | } |
318 | } | ||
319 | |||
320 | gfar_dev = | ||
321 | platform_device_register_simple("fsl-gianfar", i, &r[0], | ||
322 | n_res); | ||
323 | |||
324 | if (IS_ERR(gfar_dev)) { | ||
325 | ret = PTR_ERR(gfar_dev); | ||
326 | goto err; | ||
327 | } | ||
328 | |||
329 | mac_addr = of_get_mac_address(np); | ||
330 | if (mac_addr) | ||
331 | memcpy(gfar_data.mac_addr, mac_addr, 6); | ||
332 | |||
333 | if (model && !strcasecmp(model, "TSEC")) | ||
334 | gfar_data.device_flags = | ||
335 | FSL_GIANFAR_DEV_HAS_GIGABIT | | ||
336 | FSL_GIANFAR_DEV_HAS_COALESCE | | ||
337 | FSL_GIANFAR_DEV_HAS_RMON | | ||
338 | FSL_GIANFAR_DEV_HAS_MULTI_INTR; | ||
339 | if (model && !strcasecmp(model, "eTSEC")) | ||
340 | gfar_data.device_flags = | ||
341 | FSL_GIANFAR_DEV_HAS_GIGABIT | | ||
342 | FSL_GIANFAR_DEV_HAS_COALESCE | | ||
343 | FSL_GIANFAR_DEV_HAS_RMON | | ||
344 | FSL_GIANFAR_DEV_HAS_MULTI_INTR | | ||
345 | FSL_GIANFAR_DEV_HAS_CSUM | | ||
346 | FSL_GIANFAR_DEV_HAS_VLAN | | ||
347 | FSL_GIANFAR_DEV_HAS_EXTENDED_HASH; | ||
348 | |||
349 | ctype = of_get_property(np, "phy-connection-type", NULL); | ||
350 | |||
351 | /* We only care about rgmii-id. The rest are autodetected */ | ||
352 | if (ctype && !strcmp(ctype, "rgmii-id")) | ||
353 | gfar_data.interface = PHY_INTERFACE_MODE_RGMII_ID; | ||
354 | else | ||
355 | gfar_data.interface = PHY_INTERFACE_MODE_MII; | ||
356 | |||
357 | if (of_get_property(np, "fsl,magic-packet", NULL)) | ||
358 | gfar_data.device_flags |= FSL_GIANFAR_DEV_HAS_MAGIC_PACKET; | ||
359 | |||
360 | ph = of_get_property(np, "phy-handle", NULL); | ||
361 | if (ph == NULL) { | ||
362 | u32 *fixed_link; | ||
363 | |||
364 | fixed_link = (u32 *)of_get_property(np, "fixed-link", | ||
365 | NULL); | ||
366 | if (!fixed_link) { | ||
367 | ret = -ENODEV; | ||
368 | goto unreg; | ||
369 | } | ||
370 | |||
371 | snprintf(gfar_data.bus_id, MII_BUS_ID_SIZE, "0"); | ||
372 | gfar_data.phy_id = fixed_link[0]; | ||
373 | } else { | ||
374 | phy = of_find_node_by_phandle(*ph); | ||
375 | |||
376 | if (phy == NULL) { | ||
377 | ret = -ENODEV; | ||
378 | goto unreg; | ||
379 | } | ||
380 | |||
381 | mdio = of_get_parent(phy); | ||
382 | |||
383 | id = of_get_property(phy, "reg", NULL); | ||
384 | ret = of_address_to_resource(mdio, 0, &res); | ||
385 | if (ret) { | ||
386 | of_node_put(phy); | ||
387 | of_node_put(mdio); | ||
388 | goto unreg; | ||
389 | } | ||
390 | |||
391 | gfar_data.phy_id = *id; | ||
392 | snprintf(gfar_data.bus_id, MII_BUS_ID_SIZE, "%llx", | ||
393 | (unsigned long long)res.start&0xfffff); | ||
394 | 225 | ||
395 | of_node_put(phy); | 226 | memset(&r, 0, sizeof(r)); |
396 | of_node_put(mdio); | ||
397 | } | ||
398 | 227 | ||
399 | /* Get MDIO bus controlled by this eTSEC, if any. Normally only | 228 | ret = of_address_to_resource(np, 0, &r); |
400 | * eTSEC 1 will control an MDIO bus, not necessarily the same | 229 | if (ret) |
401 | * bus that its PHY is on ('mdio' above), so we can't just use | 230 | goto err; |
402 | * that. What we do is look for a gianfar mdio device that has | ||
403 | * overlapping registers with this device. That's really the | ||
404 | * whole point, to find the device sharing our registers to | ||
405 | * coordinate access with it. | ||
406 | */ | ||
407 | for_each_compatible_node(mdio, NULL, "fsl,gianfar-mdio") { | ||
408 | if (of_address_to_resource(mdio, 0, &res)) | ||
409 | continue; | ||
410 | |||
411 | if (res.start >= r[0].start && res.end <= r[0].end) { | ||
412 | /* Get the ID the mdio bus platform device was | ||
413 | * registered with. gfar_data.bus_id is | ||
414 | * different because it's for finding a PHY, | ||
415 | * while this is for finding a MII bus. | ||
416 | */ | ||
417 | gfar_data.mdio_bus = res.start&0xfffff; | ||
418 | of_node_put(mdio); | ||
419 | break; | ||
420 | } | ||
421 | } | ||
422 | 231 | ||
423 | ret = | 232 | dev = platform_device_register_simple("mpc83xx_wdt", 0, &r, 1); |
424 | platform_device_add_data(gfar_dev, &gfar_data, | 233 | if (IS_ERR(dev)) { |
425 | sizeof(struct | 234 | ret = PTR_ERR(dev); |
426 | gianfar_platform_data)); | 235 | goto err; |
427 | if (ret) | ||
428 | goto unreg; | ||
429 | } | 236 | } |
430 | 237 | ||
238 | ret = platform_device_add_data(dev, &freq, sizeof(freq)); | ||
239 | if (ret) | ||
240 | goto unreg; | ||
241 | |||
242 | of_node_put(np); | ||
431 | return 0; | 243 | return 0; |
432 | 244 | ||
433 | unreg: | 245 | unreg: |
434 | platform_device_unregister(gfar_dev); | 246 | platform_device_unregister(dev); |
435 | err: | 247 | err: |
248 | of_node_put(np); | ||
249 | nodev: | ||
436 | return ret; | 250 | return ret; |
437 | } | 251 | } |
438 | 252 | ||
439 | arch_initcall(gfar_of_init); | 253 | arch_initcall(mpc83xx_wdt_init); |
254 | #endif | ||
440 | 255 | ||
441 | static enum fsl_usb2_phy_modes determine_usb_phy(const char *phy_type) | 256 | static enum fsl_usb2_phy_modes determine_usb_phy(const char *phy_type) |
442 | { | 257 | { |