Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux into next

Freescale updates from Scott:

"Highlights include 8xx optimizations, some more work on datapath device
tree content, e300 machine check support, t1040 corenet error reporting,
and various cleanups and fixes."

+1010 -425
+70
Documentation/devicetree/bindings/powerpc/fsl/fman.txt
··· 7 7 - FMan MURAM Node 8 8 - FMan dTSEC/XGEC/mEMAC Node 9 9 - FMan IEEE 1588 Node 10 + - FMan MDIO Node 10 11 - Example 11 12 12 13 ============================================================================= ··· 358 357 }; 359 358 360 359 ============================================================================= 360 + FMan MDIO Node 361 + 362 + DESCRIPTION 363 + 364 + The MDIO is a bus to which the PHY devices are connected. 365 + 366 + PROPERTIES 367 + 368 + - compatible 369 + Usage: required 370 + Value type: <stringlist> 371 + Definition: A standard property. 372 + Must include "fsl,fman-mdio" for 1 Gb/s MDIO from FMan v2. 373 + Must include "fsl,fman-xmdio" for 10 Gb/s MDIO from FMan v2. 374 + Must include "fsl,fman-memac-mdio" for 1/10 Gb/s MDIO from 375 + FMan v3. 376 + 377 + - reg 378 + Usage: required 379 + Value type: <prop-encoded-array> 380 + Definition: A standard property. 381 + 382 + - bus-frequency 383 + Usage: optional 384 + Value type: <u32> 385 + Definition: Specifies the external MDIO bus clock speed to 386 + be used, if different from the standard 2.5 MHz. 387 + This may be due to the standard speed being unsupported (e.g. 388 + due to a hardware problem), or to advertise that all relevant 389 + components in the system support a faster speed. 390 + 391 + - interrupts 392 + Usage: required for external MDIO 393 + Value type: <prop-encoded-array> 394 + Definition: Event interrupt of external MDIO controller. 395 + 396 + - fsl,fman-internal-mdio 397 + Usage: required for internal MDIO 398 + Value type: boolean 399 + Definition: Fman has internal MDIO for internal PCS(Physical 400 + Coding Sublayer) PHYs and external MDIO for external PHYs. 401 + The settings and programming routines for internal/external 402 + MDIO are different. Must be included for internal MDIO. 403 + 404 + EXAMPLE 405 + 406 + Example for FMan v2 external MDIO: 407 + 408 + mdio@f1000 { 409 + compatible = "fsl,fman-xmdio"; 410 + reg = <0xf1000 0x1000>; 411 + interrupts = <101 2 0 0>; 412 + }; 413 + 414 + Example for FMan v3 internal MDIO: 415 + 416 + mdio@f1000 { 417 + compatible = "fsl,fman-memac-mdio"; 418 + reg = <0xf1000 0x1000>; 419 + fsl,fman-internal-mdio; 420 + }; 421 + 422 + ============================================================================= 361 423 Example 362 424 363 425 fman@400000 { ··· 594 530 ptp-timer@fe000 { 595 531 compatible = "fsl,fman-ptp-timer"; 596 532 reg = <0xfe000 0x1000>; 533 + }; 534 + 535 + mdio@f1000 { 536 + compatible = "fsl,fman-xmdio"; 537 + reg = <0xf1000 0x1000>; 538 + interrupts = <101 2 0 0>; 597 539 }; 598 540 };
+11 -1
Documentation/devicetree/bindings/soc/fsl/bman.txt
··· 36 36 Value type: <prop-encoded-array> 37 37 Definition: Standard property. The error interrupt 38 38 39 + - fsl,bman-portals 40 + Usage: Required 41 + Value type: <phandle> 42 + Definition: Phandle to this BMan instance's portals 43 + 39 44 - fsl,liodn 40 45 Usage: See pamu.txt 41 46 Value type: <prop-encoded-array> ··· 101 96 102 97 bman_fbpr: bman-fbpr { 103 98 compatible = "fsl,bman-fbpr"; 104 - alloc-ranges = <0 0 0xf 0xffffffff>; 99 + alloc-ranges = <0 0 0x10 0>; 105 100 size = <0 0x1000000>; 106 101 alignment = <0 0x1000000>; 107 102 }; 108 103 }; 109 104 110 105 The example below shows a (P4080) BMan CCSR-space node 106 + 107 + bportals: bman-portals@ff4000000 { 108 + ... 109 + }; 111 110 112 111 crypto@300000 { 113 112 ... ··· 124 115 reg = <0x31a000 0x1000>; 125 116 interrupts = <16 2 1 2>; 126 117 fsl,liodn = <0x17>; 118 + fsl,bman-portals = <&bportals>; 127 119 memory-region = <&bman_fbpr>; 128 120 }; 129 121
+12 -2
Documentation/devicetree/bindings/soc/fsl/qman.txt
··· 38 38 Value type: <prop-encoded-array> 39 39 Definition: Standard property. The error interrupt 40 40 41 + - fsl,qman-portals 42 + Usage: Required 43 + Value type: <phandle> 44 + Definition: Phandle to this QMan instance's portals 45 + 41 46 - fsl,liodn 42 47 Usage: See pamu.txt 43 48 Value type: <prop-encoded-array> ··· 118 113 119 114 qman_fqd: qman-fqd { 120 115 compatible = "fsl,qman-fqd"; 121 - alloc-ranges = <0 0 0xf 0xffffffff>; 116 + alloc-ranges = <0 0 0x10 0>; 122 117 size = <0 0x400000>; 123 118 alignment = <0 0x400000>; 124 119 }; 125 120 qman_pfdr: qman-pfdr { 126 121 compatible = "fsl,qman-pfdr"; 127 - alloc-ranges = <0 0 0xf 0xffffffff>; 122 + alloc-ranges = <0 0 0x10 0>; 128 123 size = <0 0x2000000>; 129 124 alignment = <0 0x2000000>; 130 125 }; 131 126 }; 132 127 133 128 The example below shows a (P4080) QMan CCSR-space node 129 + 130 + qportals: qman-portals@ff4200000 { 131 + ... 132 + }; 134 133 135 134 clockgen: global-utilities@e1000 { 136 135 ... ··· 163 154 reg = <0x318000 0x1000>; 164 155 interrupts = <16 2 1 3> 165 156 fsl,liodn = <0x16>; 157 + fsl,qman-portals = <&qportals>; 166 158 memory-region = <&qman_fqd &qman_pfdr>; 167 159 clocks = <&platform_pll 1>; 168 160 };
+1
arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
··· 50 50 fsl,num_tx_queues = <0x8>; 51 51 fsl,magic-packet; 52 52 local-mac-address = [ 00 00 00 00 00 00 ]; 53 + ranges; 53 54 54 55 queue-group@b0000 { 55 56 #address-cells = <1>;
+1
arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi
··· 50 50 fsl,num_tx_queues = <0x8>; 51 51 fsl,magic-packet; 52 52 local-mac-address = [ 00 00 00 00 00 00 ]; 53 + ranges; 53 54 54 55 queue-group@b1000 { 55 56 #address-cells = <1>;
+1
arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi
··· 49 49 fsl,num_tx_queues = <0x8>; 50 50 fsl,magic-packet; 51 51 local-mac-address = [ 00 00 00 00 00 00 ]; 52 + ranges; 52 53 53 54 queue-group@b2000 { 54 55 #address-cells = <1>;
+3 -3
arch/powerpc/boot/dts/fsl/pq3-gpio-0.dtsi
··· 1 1 /* 2 - * PQ3 GPIO device tree stub [ controller @ offset 0xf000 ] 2 + * PQ3 GPIO device tree stub [ controller @ offset 0xfc00 ] 3 3 * 4 4 * Copyright 2011 Freescale Semiconductor Inc. 5 5 * ··· 32 32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 33 */ 34 34 35 - gpio-controller@f000 { 35 + gpio-controller@fc00 { 36 36 #gpio-cells = <2>; 37 37 compatible = "fsl,pq3-gpio"; 38 - reg = <0xf000 0x100>; 38 + reg = <0xfc00 0x100>; 39 39 interrupts = <47 0x2 0 0>; 40 40 gpio-controller; 41 41 };
+90
arch/powerpc/boot/dts/fsl/qoriq-bman1-portals.dtsi
··· 1 + /* 2 + * QorIQ BMan Portal device tree stub for 10 portals 3 + * 4 + * Copyright 2011 - 2014 Freescale Semiconductor Inc. 5 + * 6 + * Redistribution and use in source and binary forms, with or without 7 + * modification, are permitted provided that the following conditions are met: 8 + * * Redistributions of source code must retain the above copyright 9 + * notice, this list of conditions and the following disclaimer. 10 + * * Redistributions in binary form must reproduce the above copyright 11 + * notice, this list of conditions and the following disclaimer in the 12 + * documentation and/or other materials provided with the distribution. 13 + * * Neither the name of Freescale Semiconductor nor the 14 + * names of its contributors may be used to endorse or promote products 15 + * derived from this software without specific prior written permission. 16 + * 17 + * 18 + * ALTERNATIVELY, this software may be distributed under the terms of the 19 + * GNU General Public License ("GPL") as published by the Free Software 20 + * Foundation, either version 2 of that License or (at your option) any 21 + * later version. 22 + * 23 + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 24 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 + */ 34 + 35 + &bportals { 36 + #address-cells = <1>; 37 + #size-cells = <1>; 38 + compatible = "simple-bus"; 39 + 40 + bman-portal@0 { 41 + compatible = "fsl,bman-portal"; 42 + reg = <0x0 0x4000>, <0x100000 0x1000>; 43 + interrupts = <105 2 0 0>; 44 + }; 45 + bman-portal@4000 { 46 + compatible = "fsl,bman-portal"; 47 + reg = <0x4000 0x4000>, <0x101000 0x1000>; 48 + interrupts = <107 2 0 0>; 49 + }; 50 + bman-portal@8000 { 51 + compatible = "fsl,bman-portal"; 52 + reg = <0x8000 0x4000>, <0x102000 0x1000>; 53 + interrupts = <109 2 0 0>; 54 + }; 55 + bman-portal@c000 { 56 + compatible = "fsl,bman-portal"; 57 + reg = <0xc000 0x4000>, <0x103000 0x1000>; 58 + interrupts = <111 2 0 0>; 59 + }; 60 + bman-portal@10000 { 61 + compatible = "fsl,bman-portal"; 62 + reg = <0x10000 0x4000>, <0x104000 0x1000>; 63 + interrupts = <113 2 0 0>; 64 + }; 65 + bman-portal@14000 { 66 + compatible = "fsl,bman-portal"; 67 + reg = <0x14000 0x4000>, <0x105000 0x1000>; 68 + interrupts = <115 2 0 0>; 69 + }; 70 + bman-portal@18000 { 71 + compatible = "fsl,bman-portal"; 72 + reg = <0x18000 0x4000>, <0x106000 0x1000>; 73 + interrupts = <117 2 0 0>; 74 + }; 75 + bman-portal@1c000 { 76 + compatible = "fsl,bman-portal"; 77 + reg = <0x1c000 0x4000>, <0x107000 0x1000>; 78 + interrupts = <119 2 0 0>; 79 + }; 80 + bman-portal@20000 { 81 + compatible = "fsl,bman-portal"; 82 + reg = <0x20000 0x4000>, <0x108000 0x1000>; 83 + interrupts = <121 2 0 0>; 84 + }; 85 + bman-portal@24000 { 86 + compatible = "fsl,bman-portal"; 87 + reg = <0x24000 0x4000>, <0x109000 0x1000>; 88 + interrupts = <123 2 0 0>; 89 + }; 90 + };
+41
arch/powerpc/boot/dts/fsl/qoriq-bman1.dtsi
··· 1 + /* 2 + * QorIQ BMan device tree stub [ controller @ offset 0x31a000 ] 3 + * 4 + * Copyright 2011 - 2014 Freescale Semiconductor Inc. 5 + * 6 + * Redistribution and use in source and binary forms, with or without 7 + * modification, are permitted provided that the following conditions are met: 8 + * * Redistributions of source code must retain the above copyright 9 + * notice, this list of conditions and the following disclaimer. 10 + * * Redistributions in binary form must reproduce the above copyright 11 + * notice, this list of conditions and the following disclaimer in the 12 + * documentation and/or other materials provided with the distribution. 13 + * * Neither the name of Freescale Semiconductor nor the 14 + * names of its contributors may be used to endorse or promote products 15 + * derived from this software without specific prior written permission. 16 + * 17 + * 18 + * ALTERNATIVELY, this software may be distributed under the terms of the 19 + * GNU General Public License ("GPL") as published by the Free Software 20 + * Foundation, either version 2 of that License or (at your option) any 21 + * later version. 22 + * 23 + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 24 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 + */ 34 + 35 + bman: bman@31a000 { 36 + compatible = "fsl,bman"; 37 + reg = <0x31a000 0x1000>; 38 + interrupts = <16 2 1 2>; 39 + fsl,bman-portals = <&bportals>; 40 + memory-region = <&bman_fbpr>; 41 + };
+101
arch/powerpc/boot/dts/fsl/qoriq-qman1-portals.dtsi
··· 1 + /* 2 + * QorIQ QMan Portal device tree stub for 10 portals & 15 pool channels 3 + * 4 + * Copyright 2011 - 2014 Freescale Semiconductor Inc. 5 + * 6 + * Redistribution and use in source and binary forms, with or without 7 + * modification, are permitted provided that the following conditions are met: 8 + * * Redistributions of source code must retain the above copyright 9 + * notice, this list of conditions and the following disclaimer. 10 + * * Redistributions in binary form must reproduce the above copyright 11 + * notice, this list of conditions and the following disclaimer in the 12 + * documentation and/or other materials provided with the distribution. 13 + * * Neither the name of Freescale Semiconductor nor the 14 + * names of its contributors may be used to endorse or promote products 15 + * derived from this software without specific prior written permission. 16 + * 17 + * 18 + * ALTERNATIVELY, this software may be distributed under the terms of the 19 + * GNU General Public License ("GPL") as published by the Free Software 20 + * Foundation, either version 2 of that License or (at your option) any 21 + * later version. 22 + * 23 + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 24 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 + */ 34 + 35 + &qportals { 36 + #address-cells = <1>; 37 + #size-cells = <1>; 38 + compatible = "simple-bus"; 39 + 40 + qportal0: qman-portal@0 { 41 + compatible = "fsl,qman-portal"; 42 + reg = <0x0 0x4000>, <0x100000 0x1000>; 43 + interrupts = <104 2 0 0>; 44 + fsl,qman-channel-id = <0x0>; 45 + }; 46 + qportal1: qman-portal@4000 { 47 + compatible = "fsl,qman-portal"; 48 + reg = <0x4000 0x4000>, <0x101000 0x1000>; 49 + interrupts = <106 2 0 0>; 50 + fsl,qman-channel-id = <1>; 51 + }; 52 + qportal2: qman-portal@8000 { 53 + compatible = "fsl,qman-portal"; 54 + reg = <0x8000 0x4000>, <0x102000 0x1000>; 55 + interrupts = <108 2 0 0>; 56 + fsl,qman-channel-id = <2>; 57 + }; 58 + qportal3: qman-portal@c000 { 59 + compatible = "fsl,qman-portal"; 60 + reg = <0xc000 0x4000>, <0x103000 0x1000>; 61 + interrupts = <110 2 0 0>; 62 + fsl,qman-channel-id = <3>; 63 + }; 64 + qportal4: qman-portal@10000 { 65 + compatible = "fsl,qman-portal"; 66 + reg = <0x10000 0x4000>, <0x104000 0x1000>; 67 + interrupts = <112 2 0 0>; 68 + fsl,qman-channel-id = <4>; 69 + }; 70 + qportal5: qman-portal@14000 { 71 + compatible = "fsl,qman-portal"; 72 + reg = <0x14000 0x4000>, <0x105000 0x1000>; 73 + interrupts = <114 2 0 0>; 74 + fsl,qman-channel-id = <5>; 75 + }; 76 + qportal6: qman-portal@18000 { 77 + compatible = "fsl,qman-portal"; 78 + reg = <0x18000 0x4000>, <0x106000 0x1000>; 79 + interrupts = <116 2 0 0>; 80 + fsl,qman-channel-id = <6>; 81 + }; 82 + 83 + qportal7: qman-portal@1c000 { 84 + compatible = "fsl,qman-portal"; 85 + reg = <0x1c000 0x4000>, <0x107000 0x1000>; 86 + interrupts = <118 2 0 0>; 87 + fsl,qman-channel-id = <7>; 88 + }; 89 + qportal8: qman-portal@20000 { 90 + compatible = "fsl,qman-portal"; 91 + reg = <0x20000 0x4000>, <0x108000 0x1000>; 92 + interrupts = <120 2 0 0>; 93 + fsl,qman-channel-id = <8>; 94 + }; 95 + qportal9: qman-portal@24000 { 96 + compatible = "fsl,qman-portal"; 97 + reg = <0x24000 0x4000>, <0x109000 0x1000>; 98 + interrupts = <122 2 0 0>; 99 + fsl,qman-channel-id = <9>; 100 + }; 101 + };
+41
arch/powerpc/boot/dts/fsl/qoriq-qman1.dtsi
··· 1 + /* 2 + * QorIQ QMan device tree stub [ controller @ offset 0x318000 ] 3 + * 4 + * Copyright 2011 - 2014 Freescale Semiconductor Inc. 5 + * 6 + * Redistribution and use in source and binary forms, with or without 7 + * modification, are permitted provided that the following conditions are met: 8 + * * Redistributions of source code must retain the above copyright 9 + * notice, this list of conditions and the following disclaimer. 10 + * * Redistributions in binary form must reproduce the above copyright 11 + * notice, this list of conditions and the following disclaimer in the 12 + * documentation and/or other materials provided with the distribution. 13 + * * Neither the name of Freescale Semiconductor nor the 14 + * names of its contributors may be used to endorse or promote products 15 + * derived from this software without specific prior written permission. 16 + * 17 + * 18 + * ALTERNATIVELY, this software may be distributed under the terms of the 19 + * GNU General Public License ("GPL") as published by the Free Software 20 + * Foundation, either version 2 of that License or (at your option) any 21 + * later version. 22 + * 23 + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 24 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 + */ 34 + 35 + qman: qman@318000 { 36 + compatible = "fsl,qman"; 37 + reg = <0x318000 0x1000>; 38 + interrupts = <16 2 1 3>; 39 + fsl,qman-portals = <&qportals>; 40 + memory-region = <&qman_fqd &qman_pfdr>; 41 + };
+41
arch/powerpc/boot/dts/fsl/qoriq-qman3.dtsi
··· 1 + /* 2 + * QorIQ QMan rev3 device tree stub [ controller @ offset 0x318000 ] 3 + * 4 + * Copyright 2014 Freescale Semiconductor Inc. 5 + * 6 + * Redistribution and use in source and binary forms, with or without 7 + * modification, are permitted provided that the following conditions are met: 8 + * * Redistributions of source code must retain the above copyright 9 + * notice, this list of conditions and the following disclaimer. 10 + * * Redistributions in binary form must reproduce the above copyright 11 + * notice, this list of conditions and the following disclaimer in the 12 + * documentation and/or other materials provided with the distribution. 13 + * * Neither the name of Freescale Semiconductor nor the 14 + * names of its contributors may be used to endorse or promote products 15 + * derived from this software without specific prior written permission. 16 + * 17 + * 18 + * ALTERNATIVELY, this software may be distributed under the terms of the 19 + * GNU General Public License ("GPL") as published by the Free Software 20 + * Foundation, either version 2 of that License or (at your option) any 21 + * later version. 22 + * 23 + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 24 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 + */ 34 + 35 + qman: qman@318000 { 36 + compatible = "fsl,qman"; 37 + reg = <0x318000 0x2000>; 38 + interrupts = <16 2 1 3>; 39 + fsl,qman-portals = <&qportals>; 40 + memory-region = <&qman_fqd &qman_pfdr>; 41 + };
+280
arch/powerpc/boot/dts/mvme2500.dts
··· 1 + /* 2 + * Device tree source for the Emerson/Artesyn MVME2500 3 + * 4 + * Copyright 2014 Elettra-Sincrotrone Trieste S.C.p.A. 5 + * 6 + * This program is free software; you can redistribute it and/or modify it 7 + * under the terms of the GNU General Public License as published by the 8 + * Free Software Foundation; either version 2 of the License, or (at your 9 + * option) any later version. 10 + * 11 + * Based on: P2020 DS Device Tree Source 12 + * Copyright 2009 Freescale Semiconductor Inc. 13 + */ 14 + 15 + /include/ "fsl/p2020si-pre.dtsi" 16 + 17 + / { 18 + model = "MVME2500"; 19 + compatible = "artesyn,MVME2500"; 20 + 21 + aliases { 22 + serial2 = &serial2; 23 + serial3 = &serial3; 24 + serial4 = &serial4; 25 + serial5 = &serial5; 26 + }; 27 + 28 + memory { 29 + device_type = "memory"; 30 + }; 31 + 32 + soc: soc@ffe00000 { 33 + ranges = <0x0 0 0xffe00000 0x100000>; 34 + 35 + i2c@3000 { 36 + hwmon@4c { 37 + compatible = "adi,adt7461"; 38 + reg = <0x4c>; 39 + }; 40 + 41 + rtc@68 { 42 + compatible = "dallas,ds1337"; 43 + reg = <0x68>; 44 + interrupts = <8 1 0 0>; 45 + }; 46 + 47 + eeprom@54 { 48 + compatible = "atmel,24c64"; 49 + reg = <0x54>; 50 + }; 51 + 52 + eeprom@52 { 53 + compatible = "atmel,24c512"; 54 + reg = <0x52>; 55 + }; 56 + 57 + eeprom@53 { 58 + compatible = "atmel,24c512"; 59 + reg = <0x53>; 60 + }; 61 + 62 + eeprom@50 { 63 + compatible = "atmel,24c02"; 64 + reg = <0x50>; 65 + }; 66 + 67 + }; 68 + 69 + spi0: spi@7000 { 70 + fsl,espi-num-chipselects = <2>; 71 + 72 + flash@0 { 73 + compatible = "atmel,at25df641"; 74 + reg = <0>; 75 + spi-max-frequency = <10000000>; 76 + }; 77 + flash@1 { 78 + compatible = "atmel,at25df641"; 79 + reg = <1>; 80 + spi-max-frequency = <10000000>; 81 + }; 82 + }; 83 + 84 + usb@22000 { 85 + dr_mode = "host"; 86 + phy_type = "ulpi"; 87 + }; 88 + 89 + enet0: ethernet@24000 { 90 + tbi-handle = <&tbi0>; 91 + phy-handle = <&phy1>; 92 + phy-connection-type = "rgmii-id"; 93 + }; 94 + 95 + mdio@24520 { 96 + phy1: ethernet-phy@1 { 97 + compatible = "brcm,bcm54616S"; 98 + interrupts = <6 1 0 0>; 99 + reg = <0x1>; 100 + }; 101 + 102 + phy2: ethernet-phy@2 { 103 + compatible = "brcm,bcm54616S"; 104 + interrupts = <6 1 0 0>; 105 + reg = <0x2>; 106 + }; 107 + 108 + phy3: ethernet-phy@3 { 109 + compatible = "brcm,bcm54616S"; 110 + interrupts = <5 1 0 0>; 111 + reg = <0x3>; 112 + }; 113 + 114 + phy7: ethernet-phy@7 { 115 + compatible = "brcm,bcm54616S"; 116 + interrupts = <7 1 0 0>; 117 + reg = <0x7>; 118 + }; 119 + 120 + tbi0: tbi-phy@11 { 121 + reg = <0x11>; 122 + device_type = "tbi-phy"; 123 + }; 124 + }; 125 + 126 + enet1: ethernet@25000 { 127 + tbi-handle = <&tbi1>; 128 + phy-handle = <&phy7>; 129 + phy-connection-type = "rgmii-id"; 130 + }; 131 + 132 + mdio@25520 { 133 + tbi1: tbi-phy@11 { 134 + reg = <0x11>; 135 + device_type = "tbi-phy"; 136 + }; 137 + }; 138 + 139 + enet2: ethernet@26000 { 140 + tbi-handle = <&tbi2>; 141 + phy-handle = <&phy3>; 142 + phy-connection-type = "rgmii-id"; 143 + }; 144 + 145 + mdio@26520 { 146 + tbi2: tbi-phy@11 { 147 + reg = <0x11>; 148 + device_type = "tbi-phy"; 149 + }; 150 + }; 151 + }; 152 + 153 + lbc: localbus@ffe05000 { 154 + reg = <0 0xffe05000 0 0x1000>; 155 + 156 + ranges = <0x0 0x0 0x0 0xfff00000 0x00080000 157 + 0x1 0x0 0x0 0xffc40000 0x00010000 158 + 0x2 0x0 0x0 0xffc50000 0x00010000 159 + 0x3 0x0 0x0 0xffc60000 0x00010000 160 + 0x4 0x0 0x0 0xffc70000 0x00010000 161 + 0x6 0x0 0x0 0xffc80000 0x00010000 162 + 0x5 0x0 0x0 0xffdf0000 0x00008000>; 163 + 164 + serial2: serial@1,0 { 165 + device_type = "serial"; 166 + compatible = "ns16550"; 167 + reg = <0x1 0x0 0x100>; 168 + clock-frequency = <1843200>; 169 + interrupts = <11 2 0 0>; 170 + }; 171 + 172 + serial3: serial@2,0 { 173 + device_type = "serial"; 174 + compatible = "ns16550"; 175 + reg = <0x2 0x0 0x100>; 176 + clock-frequency = <1843200>; 177 + interrupts = <1 2 0 0>; 178 + }; 179 + 180 + serial4: serial@3,0 { 181 + device_type = "serial"; 182 + compatible = "ns16550"; 183 + reg = <0x3 0x0 0x100>; 184 + clock-frequency = <1843200>; 185 + interrupts = <2 2 0 0>; 186 + }; 187 + 188 + serial5: serial@4,0 { 189 + device_type = "serial"; 190 + compatible = "ns16550"; 191 + reg = <0x4 0x0 0x100>; 192 + clock-frequency = <1843200>; 193 + interrupts = <3 2 0 0>; 194 + }; 195 + 196 + mram@0,0 { 197 + compatible = "everspin,mram", "mtd-ram"; 198 + reg = <0x0 0x0 0x80000>; 199 + bank-width = <2>; 200 + }; 201 + 202 + board-control@5,0 { 203 + compatible = "artesyn,mvme2500-fpga"; 204 + reg = <0x5 0x0 0x01000>; 205 + }; 206 + 207 + cpld@6,0 { 208 + compatible = "artesyn,mvme2500-cpld"; 209 + reg = <0x6 0x0 0x10000>; 210 + interrupts = <9 1 0 0>; 211 + }; 212 + }; 213 + 214 + pci0: pcie@ffe08000 { 215 + reg = <0 0xffe08000 0 0x1000>; 216 + ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 217 + 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; 218 + pcie@0 { 219 + ranges = <0x2000000 0x0 0x80000000 220 + 0x2000000 0x0 0x80000000 221 + 0x0 0x20000000 222 + 223 + 0x1000000 0x0 0x0 224 + 0x1000000 0x0 0x0 225 + 0x0 0x10000>; 226 + }; 227 + }; 228 + 229 + pci1: pcie@ffe09000 { 230 + reg = <0 0xffe09000 0 0x1000>; 231 + ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 232 + 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; 233 + pcie@0 { 234 + ranges = <0x2000000 0x0 0xa0000000 235 + 0x2000000 0x0 0xa0000000 236 + 0x0 0x20000000 237 + 238 + 0x1000000 0x0 0x0 239 + 0x1000000 0x0 0x0 240 + 0x0 0x10000>; 241 + }; 242 + 243 + }; 244 + 245 + pci2: pcie@ffe0a000 { 246 + reg = <0 0xffe0a000 0 0x1000>; 247 + ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000 248 + 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>; 249 + pcie@0 { 250 + ranges = <0x2000000 0x0 0xc0000000 251 + 0x2000000 0x0 0xc0000000 252 + 0x0 0x20000000 253 + 254 + 0x1000000 0x0 0x0 255 + 0x1000000 0x0 0x0 256 + 0x0 0x10000>; 257 + }; 258 + }; 259 + }; 260 + 261 + /include/ "fsl/p2020si-post.dtsi" 262 + 263 + / { 264 + soc@ffe00000 { 265 + serial@4600 { 266 + status = "disabled"; 267 + }; 268 + 269 + i2c@3100 { 270 + status = "disabled"; 271 + }; 272 + 273 + sdhc@2e000 { 274 + compatible = "fsl,p2020-esdhc", "fsl,esdhc"; 275 + non-removable; 276 + }; 277 + 278 + }; 279 + 280 + };
-281
arch/powerpc/boot/dts/t4240emu.dts
··· 1 - /* 2 - * T4240 emulator Device Tree Source 3 - * 4 - * Copyright 2013 Freescale Semiconductor Inc. 5 - * 6 - * Redistribution and use in source and binary forms, with or without 7 - * modification, are permitted provided that the following conditions are met: 8 - * * Redistributions of source code must retain the above copyright 9 - * notice, this list of conditions and the following disclaimer. 10 - * * Redistributions in binary form must reproduce the above copyright 11 - * notice, this list of conditions and the following disclaimer in the 12 - * documentation and/or other materials provided with the distribution. 13 - * * Neither the name of Freescale Semiconductor nor the 14 - * names of its contributors may be used to endorse or promote products 15 - * derived from this software without specific prior written permission. 16 - * 17 - * 18 - * ALTERNATIVELY, this software may be distributed under the terms of the 19 - * GNU General Public License ("GPL") as published by the Free Software 20 - * Foundation, either version 2 of that License or (at your option) any 21 - * later version. 22 - * 23 - * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY 24 - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 - * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 - */ 34 - 35 - /dts-v1/; 36 - 37 - /include/ "fsl/e6500_power_isa.dtsi" 38 - / { 39 - compatible = "fsl,T4240"; 40 - #address-cells = <2>; 41 - #size-cells = <2>; 42 - interrupt-parent = <&mpic>; 43 - 44 - aliases { 45 - ccsr = &soc; 46 - 47 - serial0 = &serial0; 48 - serial1 = &serial1; 49 - serial2 = &serial2; 50 - serial3 = &serial3; 51 - dma0 = &dma0; 52 - dma1 = &dma1; 53 - }; 54 - 55 - cpus { 56 - #address-cells = <1>; 57 - #size-cells = <0>; 58 - 59 - cpu0: PowerPC,e6500@0 { 60 - device_type = "cpu"; 61 - reg = <0 1>; 62 - next-level-cache = <&L2_1>; 63 - fsl,portid-mapping = <0x80000000>; 64 - }; 65 - cpu1: PowerPC,e6500@2 { 66 - device_type = "cpu"; 67 - reg = <2 3>; 68 - next-level-cache = <&L2_1>; 69 - fsl,portid-mapping = <0x80000000>; 70 - }; 71 - cpu2: PowerPC,e6500@4 { 72 - device_type = "cpu"; 73 - reg = <4 5>; 74 - next-level-cache = <&L2_1>; 75 - fsl,portid-mapping = <0x80000000>; 76 - }; 77 - cpu3: PowerPC,e6500@6 { 78 - device_type = "cpu"; 79 - reg = <6 7>; 80 - next-level-cache = <&L2_1>; 81 - fsl,portid-mapping = <0x80000000>; 82 - }; 83 - 84 - cpu4: PowerPC,e6500@8 { 85 - device_type = "cpu"; 86 - reg = <8 9>; 87 - next-level-cache = <&L2_2>; 88 - fsl,portid-mapping = <0x40000000>; 89 - }; 90 - cpu5: PowerPC,e6500@10 { 91 - device_type = "cpu"; 92 - reg = <10 11>; 93 - next-level-cache = <&L2_2>; 94 - fsl,portid-mapping = <0x40000000>; 95 - }; 96 - cpu6: PowerPC,e6500@12 { 97 - device_type = "cpu"; 98 - reg = <12 13>; 99 - next-level-cache = <&L2_2>; 100 - fsl,portid-mapping = <0x40000000>; 101 - }; 102 - cpu7: PowerPC,e6500@14 { 103 - device_type = "cpu"; 104 - reg = <14 15>; 105 - next-level-cache = <&L2_2>; 106 - fsl,portid-mapping = <0x40000000>; 107 - }; 108 - 109 - cpu8: PowerPC,e6500@16 { 110 - device_type = "cpu"; 111 - reg = <16 17>; 112 - next-level-cache = <&L2_3>; 113 - fsl,portid-mapping = <0x20000000>; 114 - }; 115 - cpu9: PowerPC,e6500@18 { 116 - device_type = "cpu"; 117 - reg = <18 19>; 118 - next-level-cache = <&L2_3>; 119 - fsl,portid-mapping = <0x20000000>; 120 - }; 121 - cpu10: PowerPC,e6500@20 { 122 - device_type = "cpu"; 123 - reg = <20 21>; 124 - next-level-cache = <&L2_3>; 125 - fsl,portid-mapping = <0x20000000>; 126 - }; 127 - cpu11: PowerPC,e6500@22 { 128 - device_type = "cpu"; 129 - reg = <22 23>; 130 - next-level-cache = <&L2_3>; 131 - fsl,portid-mapping = <0x20000000>; 132 - }; 133 - }; 134 - }; 135 - 136 - / { 137 - model = "fsl,T4240QDS"; 138 - compatible = "fsl,T4240EMU", "fsl,T4240QDS"; 139 - #address-cells = <2>; 140 - #size-cells = <2>; 141 - interrupt-parent = <&mpic>; 142 - 143 - ifc: localbus@ffe124000 { 144 - reg = <0xf 0xfe124000 0 0x2000>; 145 - ranges = <0 0 0xf 0xe8000000 0x08000000 146 - 2 0 0xf 0xff800000 0x00010000 147 - 3 0 0xf 0xffdf0000 0x00008000>; 148 - 149 - nor@0,0 { 150 - #address-cells = <1>; 151 - #size-cells = <1>; 152 - compatible = "cfi-flash"; 153 - reg = <0x0 0x0 0x8000000>; 154 - 155 - bank-width = <2>; 156 - device-width = <1>; 157 - }; 158 - 159 - }; 160 - 161 - memory { 162 - device_type = "memory"; 163 - }; 164 - 165 - soc: soc@ffe000000 { 166 - ranges = <0x00000000 0xf 0xfe000000 0x1000000>; 167 - reg = <0xf 0xfe000000 0 0x00001000>; 168 - 169 - }; 170 - }; 171 - 172 - &ifc { 173 - #address-cells = <2>; 174 - #size-cells = <1>; 175 - compatible = "fsl,ifc", "simple-bus"; 176 - interrupts = <25 2 0 0>; 177 - }; 178 - 179 - &soc { 180 - #address-cells = <1>; 181 - #size-cells = <1>; 182 - device_type = "soc"; 183 - compatible = "simple-bus"; 184 - 185 - soc-sram-error { 186 - compatible = "fsl,soc-sram-error"; 187 - interrupts = <16 2 1 29>; 188 - }; 189 - 190 - corenet-law@0 { 191 - compatible = "fsl,corenet-law"; 192 - reg = <0x0 0x1000>; 193 - fsl,num-laws = <32>; 194 - }; 195 - 196 - ddr1: memory-controller@8000 { 197 - compatible = "fsl,qoriq-memory-controller-v4.7", 198 - "fsl,qoriq-memory-controller"; 199 - reg = <0x8000 0x1000>; 200 - interrupts = <16 2 1 23>; 201 - }; 202 - 203 - ddr2: memory-controller@9000 { 204 - compatible = "fsl,qoriq-memory-controller-v4.7", 205 - "fsl,qoriq-memory-controller"; 206 - reg = <0x9000 0x1000>; 207 - interrupts = <16 2 1 22>; 208 - }; 209 - 210 - ddr3: memory-controller@a000 { 211 - compatible = "fsl,qoriq-memory-controller-v4.7", 212 - "fsl,qoriq-memory-controller"; 213 - reg = <0xa000 0x1000>; 214 - interrupts = <16 2 1 21>; 215 - }; 216 - 217 - cpc: l3-cache-controller@10000 { 218 - compatible = "fsl,t4240-l3-cache-controller", "cache"; 219 - reg = <0x10000 0x1000 220 - 0x11000 0x1000 221 - 0x12000 0x1000>; 222 - interrupts = <16 2 1 27 223 - 16 2 1 26 224 - 16 2 1 25>; 225 - }; 226 - 227 - corenet-cf@18000 { 228 - compatible = "fsl,corenet2-cf", "fsl,corenet-cf"; 229 - reg = <0x18000 0x1000>; 230 - interrupts = <16 2 1 31>; 231 - fsl,ccf-num-csdids = <32>; 232 - fsl,ccf-num-snoopids = <32>; 233 - }; 234 - 235 - iommu@20000 { 236 - compatible = "fsl,pamu-v1.0", "fsl,pamu"; 237 - reg = <0x20000 0x6000>; 238 - fsl,portid-mapping = <0x8000>; 239 - interrupts = < 240 - 24 2 0 0 241 - 16 2 1 30>; 242 - }; 243 - 244 - /include/ "fsl/qoriq-mpic.dtsi" 245 - 246 - guts: global-utilities@e0000 { 247 - compatible = "fsl,t4240-device-config", "fsl,qoriq-device-config-2.0"; 248 - reg = <0xe0000 0xe00>; 249 - fsl,has-rstcr; 250 - fsl,liodn-bits = <12>; 251 - }; 252 - 253 - /include/ "fsl/qoriq-clockgen2.dtsi" 254 - global-utilities@e1000 { 255 - compatible = "fsl,t4240-clockgen", "fsl,qoriq-clockgen-2.0"; 256 - }; 257 - 258 - /include/ "fsl/qoriq-dma-0.dtsi" 259 - /include/ "fsl/qoriq-dma-1.dtsi" 260 - 261 - /include/ "fsl/qoriq-i2c-0.dtsi" 262 - /include/ "fsl/qoriq-i2c-1.dtsi" 263 - /include/ "fsl/qoriq-duart-0.dtsi" 264 - /include/ "fsl/qoriq-duart-1.dtsi" 265 - 266 - L2_1: l2-cache-controller@c20000 { 267 - compatible = "fsl,t4240-l2-cache-controller"; 268 - reg = <0xc20000 0x40000>; 269 - next-level-cache = <&cpc>; 270 - }; 271 - L2_2: l2-cache-controller@c60000 { 272 - compatible = "fsl,t4240-l2-cache-controller"; 273 - reg = <0xc60000 0x40000>; 274 - next-level-cache = <&cpc>; 275 - }; 276 - L2_3: l2-cache-controller@ca0000 { 277 - compatible = "fsl,t4240-l2-cache-controller"; 278 - reg = <0xca0000 0x40000>; 279 - next-level-cache = <&cpc>; 280 - }; 281 - };
+2
arch/powerpc/configs/corenet32_smp_defconfig
··· 75 75 CONFIG_MTD_NAND=y 76 76 CONFIG_MTD_NAND_FSL_ELBC=y 77 77 CONFIG_MTD_NAND_FSL_IFC=y 78 + CONFIG_MTD_SPI_NOR=y 78 79 CONFIG_BLK_DEV_LOOP=y 79 80 CONFIG_BLK_DEV_RAM=y 80 81 CONFIG_BLK_DEV_RAM_SIZE=131072 ··· 93 92 CONFIG_PATA_SIL680=y 94 93 CONFIG_NETDEVICES=y 95 94 CONFIG_FSL_PQ_MDIO=y 95 + CONFIG_FSL_XGMAC_MDIO=y 96 96 CONFIG_E1000=y 97 97 CONFIG_E1000E=y 98 98 CONFIG_AT803X_PHY=y
+5
arch/powerpc/configs/corenet64_smp_defconfig
··· 69 69 CONFIG_MTD_NAND=y 70 70 CONFIG_MTD_NAND_FSL_ELBC=y 71 71 CONFIG_MTD_NAND_FSL_IFC=y 72 + CONFIG_MTD_SPI_NOR=y 72 73 CONFIG_MTD_UBI=y 73 74 CONFIG_BLK_DEV_LOOP=y 74 75 CONFIG_BLK_DEV_RAM=y ··· 80 79 CONFIG_SATA_SIL24=y 81 80 CONFIG_NETDEVICES=y 82 81 CONFIG_DUMMY=y 82 + CONFIG_FSL_PQ_MDIO=y 83 + CONFIG_FSL_XGMAC_MDIO=y 83 84 CONFIG_E1000E=y 85 + CONFIG_VITESSE_PHY=y 86 + CONFIG_FIXED_PHY=y 84 87 CONFIG_INPUT_FF_MEMLESS=m 85 88 # CONFIG_INPUT_MOUSEDEV is not set 86 89 # CONFIG_INPUT_KEYBOARD is not set
+13 -3
arch/powerpc/configs/mpc85xx_defconfig
··· 42 42 CONFIG_TQM8555=y 43 43 CONFIG_TQM8560=y 44 44 CONFIG_SBC8548=y 45 + CONFIG_MVME2500=y 45 46 CONFIG_QUICC_ENGINE=y 46 47 CONFIG_QE_GPIO=y 47 48 CONFIG_HIGHMEM=y ··· 50 49 CONFIG_MATH_EMULATION=y 51 50 CONFIG_FORCE_MAX_ZONEORDER=12 52 51 CONFIG_PCI=y 52 + CONFIG_PCIEPORTBUS=y 53 + # CONFIG_PCIEASPM is not set 53 54 CONFIG_PCI_MSI=y 54 55 CONFIG_RAPIDIO=y 55 56 CONFIG_NET=y ··· 88 85 CONFIG_MTD_CFI=y 89 86 CONFIG_MTD_CFI_INTELEXT=y 90 87 CONFIG_MTD_CFI_AMDSTD=y 88 + CONFIG_MTD_PHYSMAP=y 91 89 CONFIG_MTD_PHYSMAP_OF=y 90 + CONFIG_MTD_PLATRAM=y 91 + CONFIG_MTD_M25P80=y 92 92 CONFIG_MTD_NAND=y 93 93 CONFIG_MTD_NAND_FSL_ELBC=y 94 94 CONFIG_MTD_NAND_FSL_IFC=y 95 + CONFIG_MTD_SPI_NOR=y 95 96 CONFIG_MTD_UBI=y 96 97 CONFIG_BLK_DEV_LOOP=y 97 98 CONFIG_BLK_DEV_NBD=y ··· 127 120 CONFIG_DAVICOM_PHY=y 128 121 CONFIG_CICADA_PHY=y 129 122 CONFIG_VITESSE_PHY=y 123 + CONFIG_BROADCOM_PHY=y 130 124 CONFIG_FIXED_PHY=y 131 125 CONFIG_INPUT_FF_MEMLESS=m 132 126 # CONFIG_INPUT_MOUSEDEV is not set ··· 136 128 CONFIG_SERIO_LIBPS2=y 137 129 CONFIG_SERIAL_8250=y 138 130 CONFIG_SERIAL_8250_CONSOLE=y 139 - CONFIG_SERIAL_8250_NR_UARTS=2 140 - CONFIG_SERIAL_8250_RUNTIME_UARTS=2 131 + CONFIG_SERIAL_8250_NR_UARTS=6 132 + CONFIG_SERIAL_8250_RUNTIME_UARTS=6 141 133 CONFIG_SERIAL_8250_MANY_PORTS=y 142 134 CONFIG_SERIAL_8250_DETECT_IRQ=y 143 135 CONFIG_SERIAL_8250_RSA=y ··· 150 142 CONFIG_SPI_FSL_SPI=y 151 143 CONFIG_SPI_FSL_ESPI=y 152 144 CONFIG_GPIO_MPC8XXX=y 153 - # CONFIG_HWMON is not set 145 + CONFIG_HWMON=m 146 + CONFIG_SENSORS_LM90=m 154 147 CONFIG_FB=y 155 148 CONFIG_FB_FSL_DIU=y 156 149 # CONFIG_VGA_CONSOLE is not set ··· 194 185 CONFIG_MMC_SDHCI_OF_ESDHC=y 195 186 CONFIG_EDAC=y 196 187 CONFIG_EDAC_MM_EDAC=y 188 + CONFIG_EDAC_MPC85XX=y 197 189 CONFIG_RTC_CLASS=y 198 190 CONFIG_RTC_DRV_DS1307=y 199 191 CONFIG_RTC_DRV_DS1374=y
+1
arch/powerpc/configs/mpc85xx_smp_defconfig
··· 91 91 CONFIG_MTD_NAND=y 92 92 CONFIG_MTD_NAND_FSL_ELBC=y 93 93 CONFIG_MTD_NAND_FSL_IFC=y 94 + CONFIG_MTD_SPI_NOR=y 94 95 CONFIG_MTD_UBI=y 95 96 CONFIG_BLK_DEV_LOOP=y 96 97 CONFIG_BLK_DEV_NBD=y
+4
arch/powerpc/include/asm/pci-bridge.h
··· 119 119 extern int indirect_read_config(struct pci_bus *bus, unsigned int devfn, 120 120 int offset, int len, u32 *val); 121 121 122 + extern int __indirect_read_config(struct pci_controller *hose, 123 + unsigned char bus_number, unsigned int devfn, 124 + int offset, int len, u32 *val); 125 + 122 126 extern int indirect_write_config(struct pci_bus *bus, unsigned int devfn, 123 127 int offset, int len, u32 val); 124 128
+14 -9
arch/powerpc/include/asm/pgtable-ppc32.h
··· 178 178 andc %1,%0,%5\n\ 179 179 or %1,%1,%6\n\ 180 180 /* 0x200 == Extended encoding, bit 22 */ \ 181 - /* Bit 22 has to be 1 if neither _PAGE_USER nor _PAGE_RW are set */ \ 182 - rlwimi %1,%1,32-2,0x200\n /* get _PAGE_USER */ \ 183 - rlwinm %3,%1,32-1,0x200\n /* get _PAGE_RW */ \ 184 - or %1,%3,%1\n\ 185 - xori %1,%1,0x200\n" 186 - " stwcx. %1,0,%4\n\ 181 + /* Bit 22 has to be 1 when _PAGE_USER is unset and _PAGE_RO is set */ \ 182 + rlwimi %1,%1,32-1,0x200\n /* get _PAGE_RO */ \ 183 + rlwinm %3,%1,32-2,0x200\n /* get _PAGE_USER */ \ 184 + andc %1,%1,%3\n\ 185 + stwcx. %1,0,%4\n\ 187 186 bne- 1b" 188 187 : "=&r" (old), "=&r" (tmp), "=m" (*p), "=&r" (tmp2) 189 188 : "r" (p), "r" (clr), "r" (set), "m" (*p) ··· 274 275 static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, 275 276 pte_t *ptep) 276 277 { 277 - pte_update(ptep, (_PAGE_RW | _PAGE_HWWRITE), 0); 278 + pte_update(ptep, (_PAGE_RW | _PAGE_HWWRITE), _PAGE_RO); 278 279 } 279 280 static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, 280 281 unsigned long addr, pte_t *ptep) ··· 285 286 286 287 static inline void __ptep_set_access_flags(pte_t *ptep, pte_t entry) 287 288 { 288 - unsigned long bits = pte_val(entry) & 289 + unsigned long set = pte_val(entry) & 289 290 (_PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_RW | _PAGE_EXEC); 290 - pte_update(ptep, 0, bits); 291 + unsigned long clr = ~pte_val(entry) & _PAGE_RO; 292 + 293 + pte_update(ptep, clr, set); 291 294 } 292 295 293 296 #define __HAVE_ARCH_PTE_SAME ··· 347 346 #define pte_to_pgoff(pte) (pte_val(pte) >> 3) 348 347 #define pgoff_to_pte(off) ((pte_t) { ((off) << 3) | _PAGE_FILE }) 349 348 349 + #ifndef CONFIG_PPC_4K_PAGES 350 + void pgtable_cache_init(void); 351 + #else 350 352 /* 351 353 * No page table caches to initialise 352 354 */ 353 355 #define pgtable_cache_init() do { } while (0) 356 + #endif 354 357 355 358 extern int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep, 356 359 pmd_t **pmdp);
+5 -2
arch/powerpc/include/asm/pgtable.h
··· 30 30 #include <asm/tlbflush.h> 31 31 32 32 /* Generic accessors to PTE bits */ 33 - static inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_RW; } 33 + static inline int pte_write(pte_t pte) 34 + { return (pte_val(pte) & (_PAGE_RW | _PAGE_RO)) != _PAGE_RO; } 34 35 static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } 35 36 static inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; } 36 37 static inline int pte_file(pte_t pte) { return pte_val(pte) & _PAGE_FILE; } ··· 116 115 117 116 /* Generic modifiers for PTE bits */ 118 117 static inline pte_t pte_wrprotect(pte_t pte) { 119 - pte_val(pte) &= ~(_PAGE_RW | _PAGE_HWWRITE); return pte; } 118 + pte_val(pte) &= ~(_PAGE_RW | _PAGE_HWWRITE); 119 + pte_val(pte) |= _PAGE_RO; return pte; } 120 120 static inline pte_t pte_mkclean(pte_t pte) { 121 121 pte_val(pte) &= ~(_PAGE_DIRTY | _PAGE_HWWRITE); return pte; } 122 122 static inline pte_t pte_mkold(pte_t pte) { 123 123 pte_val(pte) &= ~_PAGE_ACCESSED; return pte; } 124 124 static inline pte_t pte_mkwrite(pte_t pte) { 125 + pte_val(pte) &= ~_PAGE_RO; 125 126 pte_val(pte) |= _PAGE_RW; return pte; } 126 127 static inline pte_t pte_mkdirty(pte_t pte) { 127 128 pte_val(pte) |= _PAGE_DIRTY; return pte; }
+4 -5
arch/powerpc/include/asm/pte-8xx.h
··· 46 46 * require a TLB exception handler change. It is assumed unused bits 47 47 * are always zero. 48 48 */ 49 - #define _PAGE_RW 0x0400 /* lsb PP bits, inverted in HW */ 49 + #define _PAGE_RO 0x0400 /* lsb PP bits */ 50 50 #define _PAGE_USER 0x0800 /* msb PP bits */ 51 - /* set when neither _PAGE_USER nor _PAGE_RW are set */ 51 + /* set when _PAGE_USER is unset and _PAGE_RO is set */ 52 52 #define _PAGE_KNLRO 0x0200 53 53 54 54 #define _PMD_PRESENT 0x0001 ··· 62 62 #define PTE_ATOMIC_UPDATES 1 63 63 64 64 /* We need to add _PAGE_SHARED to kernel pages */ 65 - #define _PAGE_KERNEL_RO (_PAGE_SHARED | _PAGE_KNLRO) 66 - #define _PAGE_KERNEL_ROX (_PAGE_EXEC | _PAGE_KNLRO) 67 - #define _PAGE_KERNEL_RW (_PAGE_DIRTY | _PAGE_RW | _PAGE_HWWRITE) 65 + #define _PAGE_KERNEL_RO (_PAGE_SHARED | _PAGE_RO | _PAGE_KNLRO) 66 + #define _PAGE_KERNEL_ROX (_PAGE_EXEC | _PAGE_RO | _PAGE_KNLRO) 68 67 69 68 #endif /* __KERNEL__ */ 70 69 #endif /* _ASM_POWERPC_PTE_8xx_H */
+17 -8
arch/powerpc/include/asm/pte-common.h
··· 34 34 #ifndef _PAGE_PSIZE 35 35 #define _PAGE_PSIZE 0 36 36 #endif 37 + /* _PAGE_RO and _PAGE_RW shall not be defined at the same time */ 38 + #ifndef _PAGE_RO 39 + #define _PAGE_RO 0 40 + #else 41 + #define _PAGE_RW 0 42 + #endif 37 43 #ifndef _PMD_PRESENT_MASK 38 44 #define _PMD_PRESENT_MASK _PMD_PRESENT 39 45 #endif ··· 48 42 #define PMD_PAGE_SIZE(pmd) bad_call_to_PMD_PAGE_SIZE() 49 43 #endif 50 44 #ifndef _PAGE_KERNEL_RO 51 - #define _PAGE_KERNEL_RO 0 45 + #define _PAGE_KERNEL_RO (_PAGE_RO) 52 46 #endif 53 47 #ifndef _PAGE_KERNEL_ROX 54 - #define _PAGE_KERNEL_ROX (_PAGE_EXEC) 48 + #define _PAGE_KERNEL_ROX (_PAGE_EXEC | _PAGE_RO) 55 49 #endif 56 50 #ifndef _PAGE_KERNEL_RW 57 51 #define _PAGE_KERNEL_RW (_PAGE_DIRTY | _PAGE_RW | _PAGE_HWWRITE) ··· 101 95 /* Mask of bits returned by pte_pgprot() */ 102 96 #define PAGE_PROT_BITS (_PAGE_GUARDED | _PAGE_COHERENT | _PAGE_NO_CACHE | \ 103 97 _PAGE_WRITETHRU | _PAGE_ENDIAN | _PAGE_4K_PFN | \ 104 - _PAGE_USER | _PAGE_ACCESSED | \ 98 + _PAGE_USER | _PAGE_ACCESSED | _PAGE_RO | \ 105 99 _PAGE_RW | _PAGE_HWWRITE | _PAGE_DIRTY | _PAGE_EXEC) 106 100 107 101 #ifdef CONFIG_NUMA_BALANCING ··· 134 128 */ 135 129 #define PAGE_NONE __pgprot(_PAGE_BASE) 136 130 #define PAGE_SHARED __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW) 137 - #define PAGE_SHARED_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW | _PAGE_EXEC) 138 - #define PAGE_COPY __pgprot(_PAGE_BASE | _PAGE_USER) 139 - #define PAGE_COPY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_EXEC) 140 - #define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_USER) 141 - #define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_EXEC) 131 + #define PAGE_SHARED_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW | \ 132 + _PAGE_EXEC) 133 + #define PAGE_COPY __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RO) 134 + #define PAGE_COPY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RO | \ 135 + _PAGE_EXEC) 136 + #define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RO) 137 + #define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RO | \ 138 + _PAGE_EXEC) 142 139 143 140 #define __P000 PAGE_NONE 144 141 #define __P001 PAGE_READONLY
+1
arch/powerpc/kernel/cputable.c
··· 1133 1133 .icache_bsize = 32, 1134 1134 .dcache_bsize = 32, 1135 1135 .cpu_setup = __setup_cpu_603, 1136 + .machine_check = machine_check_generic, 1136 1137 .num_pmcs = 4, 1137 1138 .oprofile_cpu_type = "ppc/e300", 1138 1139 .oprofile_type = PPC_OPROFILE_FSL_EMB,
+42 -79
arch/powerpc/kernel/head_8xx.S
··· 319 319 * pin the first 8MB of kernel memory */ 320 320 andis. r11, r10, 0x8000 /* Address >= 0x80000000 */ 321 321 #endif 322 - mfspr r11, SPRN_M_TW /* Get level 1 table base address */ 322 + mfspr r11, SPRN_M_TW /* Get level 1 table */ 323 323 #ifdef CONFIG_MODULES 324 324 beq 3f 325 - lis r11, (swapper_pg_dir-PAGE_OFFSET)@h 326 - ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l 325 + lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha 327 326 3: 328 327 #endif 329 - /* Extract level 1 index */ 330 - rlwinm r10, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 331 - lwzx r11, r10, r11 /* Get the level 1 entry */ 332 - rlwinm. r10, r11,0,0,19 /* Extract page descriptor page address */ 333 - beq 2f /* If zero, don't try to find a pte */ 328 + /* Insert level 1 index */ 329 + rlwimi r11, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 330 + lwz r11, (swapper_pg_dir-PAGE_OFFSET)@l(r11) /* Get the level 1 entry */ 334 331 335 - /* We have a pte table, so load the MI_TWC with the attributes 336 - * for this "segment." 337 - */ 332 + /* Load the MI_TWC with the attributes for this "segment." */ 338 333 MTSPR_CPU6(SPRN_MI_TWC, r11, r3) /* Set segment attributes */ 339 - mfspr r11, SPRN_SRR0 /* Get effective address of fault */ 334 + rlwinm r11, r11,0,0,19 /* Extract page descriptor page address */ 340 335 /* Extract level 2 index */ 341 - rlwinm r11, r11, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29 336 + rlwinm r10, r10, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29 342 337 lwzx r10, r10, r11 /* Get the pte */ 343 338 344 339 #ifdef CONFIG_SWAP 345 - andi. r11, r10, _PAGE_ACCESSED | _PAGE_PRESENT 346 - cmpwi cr0, r11, _PAGE_ACCESSED | _PAGE_PRESENT 347 - li r11, RPN_PATTERN 348 - bne- cr0, 2f 349 - #else 350 - li r11, RPN_PATTERN 340 + rlwinm r11, r10, 32-5, _PAGE_PRESENT 341 + and r11, r11, r10 342 + rlwimi r10, r11, 0, _PAGE_PRESENT 351 343 #endif 344 + li r11, RPN_PATTERN 352 345 /* The Linux PTE won't go exactly into the MMU TLB. 353 346 * Software indicator bits 21 and 28 must be clear. 354 347 * Software indicator bits 24, 25, 26, and 27 must be ··· 359 366 mfspr r10, SPRN_SPRG_SCRATCH2 360 367 EXCEPTION_EPILOG_0 361 368 rfi 362 - 2: 363 - mfspr r10, SPRN_SRR1 364 - /* clear all error bits as TLB Miss 365 - * sets a few unconditionally 366 - */ 367 - rlwinm r10, r10, 0, 0xffff 368 - mtspr SPRN_SRR1, r10 369 - 370 - /* Restore registers */ 371 - #ifdef CONFIG_8xx_CPU6 372 - mfspr r3, SPRN_DAR 373 - mtspr SPRN_DAR, r11 /* Tag DAR */ 374 - #endif 375 - mfspr r10, SPRN_SPRG_SCRATCH2 376 - b InstructionTLBError1 377 369 378 370 . = 0x1200 379 371 DataStoreTLBMiss: ··· 373 395 * kernel page tables. 374 396 */ 375 397 andis. r11, r10, 0x8000 376 - mfspr r11, SPRN_M_TW /* Get level 1 table base address */ 398 + mfspr r11, SPRN_M_TW /* Get level 1 table */ 377 399 beq 3f 378 - lis r11, (swapper_pg_dir-PAGE_OFFSET)@h 379 - ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l 400 + lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha 380 401 3: 381 - /* Extract level 1 index */ 382 - rlwinm r10, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 383 - lwzx r11, r10, r11 /* Get the level 1 entry */ 384 - rlwinm. r10, r11,0,0,19 /* Extract page descriptor page address */ 385 - beq 2f /* If zero, don't try to find a pte */ 402 + /* Insert level 1 index */ 403 + rlwimi r11, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 404 + lwz r11, (swapper_pg_dir-PAGE_OFFSET)@l(r11) /* Get the level 1 entry */ 386 405 387 406 /* We have a pte table, so load fetch the pte from the table. 388 407 */ 389 - mfspr r10, SPRN_MD_EPN /* Get address of fault */ 390 408 /* Extract level 2 index */ 391 409 rlwinm r10, r10, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29 392 410 rlwimi r10, r11, 0, 0, 32 - PAGE_SHIFT - 1 /* Add level 2 base */ ··· 415 441 and r11, r11, r10 416 442 rlwimi r10, r11, 0, _PAGE_PRESENT 417 443 #endif 418 - /* invert RW */ 419 - xori r10, r10, _PAGE_RW 420 - 421 444 /* The Linux PTE won't go exactly into the MMU TLB. 422 445 * Software indicator bits 22 and 28 must be clear. 423 446 * Software indicator bits 24, 25, 26, and 27 must be 424 447 * set. All other Linux PTE bits control the behavior 425 448 * of the MMU. 426 449 */ 427 - 2: li r11, RPN_PATTERN 450 + li r11, RPN_PATTERN 428 451 rlwimi r10, r11, 0, 24, 28 /* Set 24-27, clear 28 */ 429 452 MTSPR_CPU6(SPRN_MD_RPN, r10, r3) /* Update TLB entry */ 430 453 ··· 440 469 */ 441 470 . = 0x1300 442 471 InstructionTLBError: 443 - EXCEPTION_PROLOG_0 444 - InstructionTLBError1: 445 - EXCEPTION_PROLOG_1 446 - EXCEPTION_PROLOG_2 472 + EXCEPTION_PROLOG 447 473 mr r4,r12 448 474 mr r5,r9 449 475 andis. r10,r5,0x4000 ··· 500 532 /* define if you don't want to use self modifying code */ 501 533 #define NO_SELF_MODIFYING_CODE 502 534 FixupDAR:/* Entry point for dcbx workaround. */ 503 - #ifdef CONFIG_8xx_CPU6 504 - mtspr SPRN_DAR, r3 505 - #endif 506 535 mtspr SPRN_SPRG_SCRATCH2, r10 507 536 /* fetch instruction from memory. */ 508 537 mfspr r10, SPRN_SRR0 509 538 andis. r11, r10, 0x8000 /* Address >= 0x80000000 */ 510 - mfspr r11, SPRN_M_TW /* Get level 1 table base address */ 511 - beq- 3f /* Branch if user space */ 512 - lis r11, (swapper_pg_dir-PAGE_OFFSET)@h 513 - ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l 514 - /* Extract level 1 index */ 515 - 3: rlwinm r10, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 516 - lwzx r11, r10, r11 /* Get the level 1 entry */ 517 - rlwinm r10, r11,0,0,19 /* Extract page descriptor page address */ 518 - mfspr r11, SPRN_SRR0 /* Get effective address of fault */ 519 - /* Extract level 2 index */ 520 - rlwinm r11, r11, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29 521 - lwzx r11, r10, r11 /* Get the pte */ 522 - #ifdef CONFIG_8xx_CPU6 523 - mfspr r3, SPRN_DAR 524 - #endif 539 + mfspr r11, SPRN_M_TW /* Get level 1 table */ 540 + beq 3f 541 + lis r11, (swapper_pg_dir-PAGE_OFFSET)@ha 542 + /* Insert level 1 index */ 543 + 3: rlwimi r11, r10, 32 - ((PAGE_SHIFT - 2) << 1), (PAGE_SHIFT - 2) << 1, 29 544 + lwz r11, (swapper_pg_dir-PAGE_OFFSET)@l(r11) /* Get the level 1 entry */ 545 + rlwinm r11, r11,0,0,19 /* Extract page descriptor page address */ 546 + /* Insert level 2 index */ 547 + rlwimi r11, r10, 32 - (PAGE_SHIFT - 2), 32 - PAGE_SHIFT, 29 548 + lwz r11, 0(r11) /* Get the pte */ 525 549 /* concat physical page address(r11) and page offset(r10) */ 526 - mfspr r10, SPRN_SRR0 527 550 rlwimi r11, r10, 0, 32 - PAGE_SHIFT, 31 528 551 lwz r11,0(r11) 529 552 /* Check if it really is a dcbx instruction. */ ··· 664 705 * init's THREAD like the context switch code does, but this is 665 706 * easier......until someone changes init's static structures. 666 707 */ 667 - lis r6, swapper_pg_dir@h 668 - ori r6, r6, swapper_pg_dir@l 708 + lis r6, swapper_pg_dir@ha 669 709 tophys(r6,r6) 670 710 #ifdef CONFIG_8xx_CPU6 671 711 lis r4, cpu6_errata_word@h ··· 843 885 stw r4, 0x4(r5) 844 886 #endif 845 887 888 + /* Register M_TW will contain base address of level 1 table minus the 889 + * lower part of the kernel PGDIR base address, so that all accesses to 890 + * level 1 table are done relative to lower part of kernel PGDIR base 891 + * address. 892 + */ 893 + li r5, (swapper_pg_dir-PAGE_OFFSET)@l 894 + sub r4, r4, r5 895 + tophys (r4, r4) 846 896 #ifdef CONFIG_8xx_CPU6 847 897 lis r6, cpu6_errata_word@h 848 898 ori r6, r6, cpu6_errata_word@l 849 - tophys (r4, r4) 850 899 li r7, 0x3f80 851 900 stw r7, 12(r6) 852 901 lwz r7, 12(r6) 853 - mtspr SPRN_M_TW, r4 /* Update MMU base address */ 902 + #endif 903 + mtspr SPRN_M_TW, r4 /* Update pointeur to level 1 table */ 904 + #ifdef CONFIG_8xx_CPU6 854 905 li r7, 0x3380 855 906 stw r7, 12(r6) 856 907 lwz r7, 12(r6) 857 - mtspr SPRN_M_CASID, r3 /* Update context */ 858 - #else 859 - mtspr SPRN_M_CASID,r3 /* Update context */ 860 - tophys (r4, r4) 861 - mtspr SPRN_M_TW, r4 /* and pgd */ 862 908 #endif 909 + mtspr SPRN_M_CASID, r3 /* Update context */ 863 910 SYNC 864 911 blr 865 912
-2
arch/powerpc/mm/fsl_booke_mmu.c
··· 67 67 phys_addr_t phys; 68 68 } tlbcam_addrs[NUM_TLBCAMS]; 69 69 70 - extern unsigned int tlbcam_index; 71 - 72 70 unsigned long tlbcam_sz(int idx) 73 71 { 74 72 return tlbcam_addrs[idx].limit - tlbcam_addrs[idx].start + 1;
+42 -1
arch/powerpc/mm/mmu_context_nohash.c
··· 52 52 #include <asm/mmu_context.h> 53 53 #include <asm/tlbflush.h> 54 54 55 + #include "mmu_decl.h" 56 + 55 57 static unsigned int first_context, last_context; 56 58 static unsigned int next_context, nr_free_contexts; 57 59 static unsigned long *context_map; 58 60 static unsigned long *stale_map[NR_CPUS]; 59 61 static struct mm_struct **context_mm; 60 62 static DEFINE_RAW_SPINLOCK(context_lock); 63 + static bool no_selective_tlbil; 61 64 62 65 #define CTX_MAP_SIZE \ 63 66 (sizeof(unsigned long) * (last_context / BITS_PER_LONG + 1)) ··· 135 132 return MMU_NO_CONTEXT; 136 133 } 137 134 #endif /* CONFIG_SMP */ 135 + 136 + static unsigned int steal_all_contexts(void) 137 + { 138 + struct mm_struct *mm; 139 + int cpu = smp_processor_id(); 140 + unsigned int id; 141 + 142 + for (id = first_context; id <= last_context; id++) { 143 + /* Pick up the victim mm */ 144 + mm = context_mm[id]; 145 + 146 + pr_hardcont(" | steal %d from 0x%p", id, mm); 147 + 148 + /* Mark this mm as having no context anymore */ 149 + mm->context.id = MMU_NO_CONTEXT; 150 + if (id != first_context) { 151 + context_mm[id] = NULL; 152 + __clear_bit(id, context_map); 153 + #ifdef DEBUG_MAP_CONSISTENCY 154 + mm->context.active = 0; 155 + #endif 156 + } 157 + __clear_bit(id, stale_map[cpu]); 158 + } 159 + 160 + /* Flush the TLB for all contexts (not to be used on SMP) */ 161 + _tlbil_all(); 162 + 163 + nr_free_contexts = last_context - first_context; 164 + 165 + return first_context; 166 + } 138 167 139 168 /* Note that this will also be called on SMP if all other CPUs are 140 169 * offlined, which means that it may be called for cpu != 0. For ··· 276 241 goto stolen; 277 242 } 278 243 #endif /* CONFIG_SMP */ 279 - id = steal_context_up(id); 244 + if (no_selective_tlbil) 245 + id = steal_all_contexts(); 246 + else 247 + id = steal_context_up(id); 280 248 goto stolen; 281 249 } 282 250 nr_free_contexts--; ··· 445 407 if (mmu_has_feature(MMU_FTR_TYPE_8xx)) { 446 408 first_context = 0; 447 409 last_context = 15; 410 + no_selective_tlbil = true; 448 411 } else if (mmu_has_feature(MMU_FTR_TYPE_47x)) { 449 412 first_context = 1; 450 413 last_context = 65535; 414 + no_selective_tlbil = false; 451 415 } else { 452 416 first_context = 1; 453 417 last_context = 255; 418 + no_selective_tlbil = false; 454 419 } 455 420 456 421 #ifdef DEBUG_CLAMP_LAST_CONTEXT
+15 -4
arch/powerpc/mm/pgtable_32.c
··· 63 63 #endif /* HAVE_BATS */ 64 64 65 65 #ifdef HAVE_TLBCAM 66 - extern unsigned int tlbcam_index; 67 66 extern phys_addr_t v_mapped_by_tlbcam(unsigned long va); 68 67 extern unsigned long p_mapped_by_tlbcam(phys_addr_t pa); 69 68 #else /* !HAVE_TLBCAM */ ··· 72 73 73 74 #define PGDIR_ORDER (32 + PGD_T_LOG2 - PGDIR_SHIFT) 74 75 76 + #ifndef CONFIG_PPC_4K_PAGES 77 + static struct kmem_cache *pgtable_cache; 78 + 79 + void pgtable_cache_init(void) 80 + { 81 + pgtable_cache = kmem_cache_create("PGDIR cache", 1 << PGDIR_ORDER, 82 + 1 << PGDIR_ORDER, 0, NULL); 83 + if (pgtable_cache == NULL) 84 + panic("Couldn't allocate pgtable caches"); 85 + } 86 + #endif 87 + 75 88 pgd_t *pgd_alloc(struct mm_struct *mm) 76 89 { 77 90 pgd_t *ret; 78 91 79 92 /* pgdir take page or two with 4K pages and a page fraction otherwise */ 80 93 #ifndef CONFIG_PPC_4K_PAGES 81 - ret = kzalloc(1 << PGDIR_ORDER, GFP_KERNEL); 94 + ret = kmem_cache_alloc(pgtable_cache, GFP_KERNEL | __GFP_ZERO); 82 95 #else 83 96 ret = (pgd_t *)__get_free_pages(GFP_KERNEL|__GFP_ZERO, 84 97 PGDIR_ORDER - PAGE_SHIFT); ··· 101 90 void pgd_free(struct mm_struct *mm, pgd_t *pgd) 102 91 { 103 92 #ifndef CONFIG_PPC_4K_PAGES 104 - kfree((void *)pgd); 93 + kmem_cache_free(pgtable_cache, (void *)pgd); 105 94 #else 106 95 free_pages((unsigned long)pgd, PGDIR_ORDER - PAGE_SHIFT); 107 96 #endif ··· 158 147 ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags) 159 148 { 160 149 /* writeable implies dirty for kernel addresses */ 161 - if (flags & _PAGE_RW) 150 + if ((flags & (_PAGE_RW | _PAGE_RO)) != _PAGE_RO) 162 151 flags |= _PAGE_DIRTY | _PAGE_HWWRITE; 163 152 164 153 /* we don't want to let _PAGE_USER and _PAGE_EXEC leak out */
+4 -1
arch/powerpc/mm/tlb_nohash.c
··· 284 284 struct cpumask *cpu_mask; 285 285 unsigned int pid; 286 286 287 + if (unlikely(!mm)) 288 + return; 289 + 287 290 preempt_disable(); 288 - pid = mm ? mm->context.id : 0; 291 + pid = mm->context.id; 289 292 if (unlikely(pid == MMU_NO_CONTEXT)) 290 293 goto bail; 291 294 cpu_mask = mm_cpumask(mm);
+8 -2
arch/powerpc/perf/core-fsl-emb.c
··· 330 330 } 331 331 local64_set(&event->hw.prev_count, val); 332 332 333 - if (!(flags & PERF_EF_START)) { 333 + if (unlikely(!(flags & PERF_EF_START))) { 334 334 event->hw.state = PERF_HES_STOPPED | PERF_HES_UPTODATE; 335 335 val = 0; 336 + } else { 337 + event->hw.state &= ~(PERF_HES_STOPPED | PERF_HES_UPTODATE); 336 338 } 337 339 338 340 write_pmc(i, val); ··· 391 389 static void fsl_emb_pmu_start(struct perf_event *event, int ef_flags) 392 390 { 393 391 unsigned long flags; 392 + unsigned long val; 394 393 s64 left; 395 394 396 395 if (event->hw.idx < 0 || !event->hw.sample_period) ··· 408 405 409 406 event->hw.state = 0; 410 407 left = local64_read(&event->hw.period_left); 411 - write_pmc(event->hw.idx, left); 408 + val = 0; 409 + if (left < 0x80000000L) 410 + val = 0x80000000L - left; 411 + write_pmc(event->hw.idx, val); 412 412 413 413 perf_event_update_userpage(event); 414 414 perf_pmu_enable(event->pmu);
+1 -2
arch/powerpc/platforms/83xx/usb.c
··· 162 162 163 163 iounmap(immap); 164 164 165 - if (immr_node) 166 - of_node_put(immr_node); 165 + of_node_put(immr_node); 167 166 168 167 /* Map USB SOC space */ 169 168 ret = of_address_to_resource(np, 0, &res);
+6
arch/powerpc/platforms/85xx/Kconfig
··· 241 241 help 242 242 Enable this to support functionality in Servergy's CTS-1000 systems. 243 243 244 + config MVME2500 245 + bool "Artesyn MVME2500" 246 + select DEFAULT_UIMAGE 247 + help 248 + This option enables support for the Emerson/Artesyn MVME2500 board. 249 + 244 250 endif # PPC32 245 251 246 252 config PPC_QEMU_E500
+1
arch/powerpc/platforms/85xx/Makefile
··· 31 31 obj-$(CONFIG_GE_IMP3A) += ge_imp3a.o 32 32 obj-$(CONFIG_PPC_QEMU_E500) += qemu_e500.o 33 33 obj-$(CONFIG_SGY_CTS1000) += sgy_cts1000.o 34 + obj-$(CONFIG_MVME2500) += mvme2500.o
+74
arch/powerpc/platforms/85xx/mvme2500.c
··· 1 + /* 2 + * Board setup routines for the Emerson/Artesyn MVME2500 3 + * 4 + * Copyright 2014 Elettra-Sincrotrone Trieste S.C.p.A. 5 + * 6 + * Based on earlier code by: 7 + * 8 + * Xianghua Xiao (x.xiao@freescale.com) 9 + * Tom Armistead (tom.armistead@emerson.com) 10 + * Copyright 2012 Emerson 11 + * 12 + * This program is free software; you can redistribute it and/or modify it 13 + * under the terms of the GNU General Public License as published by the 14 + * Free Software Foundation; either version 2 of the License, or (at your 15 + * option) any later version. 16 + * 17 + * Author Alessio Igor Bogani <alessio.bogani@elettra.eu> 18 + * 19 + */ 20 + 21 + #include <linux/pci.h> 22 + #include <asm/udbg.h> 23 + #include <asm/mpic.h> 24 + #include <sysdev/fsl_soc.h> 25 + #include <sysdev/fsl_pci.h> 26 + 27 + #include "mpc85xx.h" 28 + 29 + void __init mvme2500_pic_init(void) 30 + { 31 + struct mpic *mpic = mpic_alloc(NULL, 0, 32 + MPIC_BIG_ENDIAN | MPIC_SINGLE_DEST_CPU, 33 + 0, 256, " OpenPIC "); 34 + BUG_ON(mpic == NULL); 35 + mpic_init(mpic); 36 + } 37 + 38 + /* 39 + * Setup the architecture 40 + */ 41 + static void __init mvme2500_setup_arch(void) 42 + { 43 + if (ppc_md.progress) 44 + ppc_md.progress("mvme2500_setup_arch()", 0); 45 + fsl_pci_assign_primary(); 46 + pr_info("MVME2500 board from Artesyn\n"); 47 + } 48 + 49 + machine_arch_initcall(mvme2500, mpc85xx_common_publish_devices); 50 + 51 + /* 52 + * Called very early, device-tree isn't unflattened 53 + */ 54 + static int __init mvme2500_probe(void) 55 + { 56 + unsigned long root = of_get_flat_dt_root(); 57 + 58 + return of_flat_dt_is_compatible(root, "artesyn,MVME2500"); 59 + } 60 + 61 + define_machine(mvme2500) { 62 + .name = "MVME2500", 63 + .probe = mvme2500_probe, 64 + .setup_arch = mvme2500_setup_arch, 65 + .init_IRQ = mvme2500_pic_init, 66 + #ifdef CONFIG_PCI 67 + .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 68 + .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 69 + #endif 70 + .get_irq = mpic_get_irq, 71 + .restart = fsl_rstcr_restart, 72 + .calibrate_decr = generic_calibrate_decr, 73 + .progress = udbg_progress, 74 + };
+4 -7
arch/powerpc/sysdev/fsl_pci.c
··· 68 68 u32 val = 0; 69 69 70 70 if (hose->indirect_type & PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK) { 71 - if (hose->ops->read == fsl_indirect_read_config) { 72 - struct pci_bus bus; 73 - bus.number = hose->first_busno; 74 - bus.sysdata = hose; 75 - bus.ops = hose->ops; 76 - indirect_read_config(&bus, 0, PCIE_LTSSM, 4, &val); 77 - } else 71 + if (hose->ops->read == fsl_indirect_read_config) 72 + __indirect_read_config(hose, hose->first_busno, 0, 73 + PCIE_LTSSM, 4, &val); 74 + else 78 75 early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val); 79 76 if (val < PCIE_LTSSM_L0) 80 77 return 1;
+17 -8
arch/powerpc/sysdev/indirect_pci.c
··· 20 20 #include <asm/pci-bridge.h> 21 21 #include <asm/machdep.h> 22 22 23 - int indirect_read_config(struct pci_bus *bus, unsigned int devfn, 24 - int offset, int len, u32 *val) 23 + int __indirect_read_config(struct pci_controller *hose, 24 + unsigned char bus_number, unsigned int devfn, 25 + int offset, int len, u32 *val) 25 26 { 26 - struct pci_controller *hose = pci_bus_to_host(bus); 27 27 volatile void __iomem *cfg_data; 28 28 u8 cfg_type = 0; 29 29 u32 bus_no, reg; 30 30 31 31 if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) { 32 - if (bus->number != hose->first_busno) 32 + if (bus_number != hose->first_busno) 33 33 return PCIBIOS_DEVICE_NOT_FOUND; 34 34 if (devfn != 0) 35 35 return PCIBIOS_DEVICE_NOT_FOUND; 36 36 } 37 37 38 38 if (ppc_md.pci_exclude_device) 39 - if (ppc_md.pci_exclude_device(hose, bus->number, devfn)) 39 + if (ppc_md.pci_exclude_device(hose, bus_number, devfn)) 40 40 return PCIBIOS_DEVICE_NOT_FOUND; 41 41 42 42 if (hose->indirect_type & PPC_INDIRECT_TYPE_SET_CFG_TYPE) 43 - if (bus->number != hose->first_busno) 43 + if (bus_number != hose->first_busno) 44 44 cfg_type = 1; 45 45 46 - bus_no = (bus->number == hose->first_busno) ? 47 - hose->self_busno : bus->number; 46 + bus_no = (bus_number == hose->first_busno) ? 47 + hose->self_busno : bus_number; 48 48 49 49 if (hose->indirect_type & PPC_INDIRECT_TYPE_EXT_REG) 50 50 reg = ((offset & 0xf00) << 16) | (offset & 0xfc); ··· 75 75 break; 76 76 } 77 77 return PCIBIOS_SUCCESSFUL; 78 + } 79 + 80 + int indirect_read_config(struct pci_bus *bus, unsigned int devfn, 81 + int offset, int len, u32 *val) 82 + { 83 + struct pci_controller *hose = pci_bus_to_host(bus); 84 + 85 + return __indirect_read_config(hose, bus->number, devfn, offset, len, 86 + val); 78 87 } 79 88 80 89 int indirect_write_config(struct pci_bus *bus, unsigned int devfn,
+3 -3
arch/powerpc/sysdev/qe_lib/qe.c
··· 497 497 * saved microcode information and put in the new. 498 498 */ 499 499 memset(&qe_firmware_info, 0, sizeof(qe_firmware_info)); 500 - strcpy(qe_firmware_info.id, firmware->id); 500 + strlcpy(qe_firmware_info.id, firmware->id, sizeof(qe_firmware_info.id)); 501 501 qe_firmware_info.extended_modes = firmware->extended_modes; 502 502 memcpy(qe_firmware_info.vtraps, firmware->vtraps, 503 503 sizeof(firmware->vtraps)); ··· 583 583 /* Copy the data into qe_firmware_info*/ 584 584 sprop = of_get_property(fw, "id", NULL); 585 585 if (sprop) 586 - strncpy(qe_firmware_info.id, sprop, 587 - sizeof(qe_firmware_info.id) - 1); 586 + strlcpy(qe_firmware_info.id, sprop, 587 + sizeof(qe_firmware_info.id)); 588 588 589 589 prop = of_find_property(fw, "extended-modes", NULL); 590 590 if (prop && (prop->length == sizeof(u64))) {
+34 -2
drivers/memory/fsl-corenet-cf.c
··· 27 27 struct ccf_info { 28 28 enum ccf_version version; 29 29 int err_reg_offs; 30 + bool has_brr; 30 31 }; 31 32 32 33 static const struct ccf_info ccf1_info = { 33 34 .version = CCF1, 34 35 .err_reg_offs = 0xa00, 36 + .has_brr = false, 35 37 }; 36 38 37 39 static const struct ccf_info ccf2_info = { 38 40 .version = CCF2, 39 41 .err_reg_offs = 0xe40, 42 + .has_brr = true, 40 43 }; 44 + 45 + /* 46 + * This register is present but not documented, with different values for 47 + * IP_ID, on other chips with fsl,corenet2-cf such as t4240 and b4860. 48 + */ 49 + #define CCF_BRR 0xbf8 50 + #define CCF_BRR_IPID 0xffff0000 51 + #define CCF_BRR_IPID_T1040 0x09310000 41 52 42 53 static const struct of_device_id ccf_matches[] = { 43 54 { ··· 77 66 /* LAE/CV also valid for errdis and errinten */ 78 67 #define ERRDET_LAE (1 << 0) /* Local Access Error */ 79 68 #define ERRDET_CV (1 << 1) /* Coherency Violation */ 69 + #define ERRDET_UTID (1 << 2) /* Unavailable Target ID (t1040) */ 70 + #define ERRDET_MCST (1 << 3) /* Multicast Stash (t1040) */ 80 71 #define ERRDET_CTYPE_SHIFT 26 /* Capture Type (ccf2 only) */ 81 72 #define ERRDET_CTYPE_MASK (0x1f << ERRDET_CTYPE_SHIFT) 82 73 #define ERRDET_CAP (1 << 31) /* Capture Valid (ccf2 only) */ ··· 97 84 struct device *dev; 98 85 void __iomem *regs; 99 86 struct ccf_err_regs __iomem *err_regs; 87 + bool t1040; 100 88 }; 101 89 102 90 static irqreturn_t ccf_irq(int irq, void *dev_id) ··· 156 142 if (errdet & ERRDET_CV) 157 143 dev_crit(ccf->dev, "Coherency Violation\n"); 158 144 145 + if (errdet & ERRDET_UTID) 146 + dev_crit(ccf->dev, "Unavailable Target ID\n"); 147 + 148 + if (errdet & ERRDET_MCST) 149 + dev_crit(ccf->dev, "Multicast Stash\n"); 150 + 159 151 if (cap_valid) { 160 152 dev_crit(ccf->dev, "address 0x%09llx, src id 0x%x\n", 161 153 addr, src_id); ··· 177 157 struct ccf_private *ccf; 178 158 struct resource *r; 179 159 const struct of_device_id *match; 160 + u32 errinten; 180 161 int ret, irq; 181 162 182 163 match = of_match_device(ccf_matches, &pdev->dev); ··· 204 183 ccf->info = match->data; 205 184 ccf->err_regs = ccf->regs + ccf->info->err_reg_offs; 206 185 186 + if (ccf->info->has_brr) { 187 + u32 brr = ioread32be(ccf->regs + CCF_BRR); 188 + 189 + if ((brr & CCF_BRR_IPID) == CCF_BRR_IPID_T1040) 190 + ccf->t1040 = true; 191 + } 192 + 207 193 dev_set_drvdata(&pdev->dev, ccf); 208 194 209 195 irq = platform_get_irq(pdev, 0); ··· 225 197 return ret; 226 198 } 227 199 200 + errinten = ERRDET_LAE | ERRDET_CV; 201 + if (ccf->t1040) 202 + errinten |= ERRDET_UTID | ERRDET_MCST; 203 + 228 204 switch (ccf->info->version) { 229 205 case CCF1: 230 206 /* On CCF1 this register enables rather than disables. */ 231 - iowrite32be(ERRDET_LAE | ERRDET_CV, &ccf->err_regs->errdis); 207 + iowrite32be(errinten, &ccf->err_regs->errdis); 232 208 break; 233 209 234 210 case CCF2: 235 211 iowrite32be(0, &ccf->err_regs->errdis); 236 - iowrite32be(ERRDET_LAE | ERRDET_CV, &ccf->err_regs->errinten); 212 + iowrite32be(errinten, &ccf->err_regs->errinten); 237 213 break; 238 214 } 239 215