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

powerpc/dma/raidengine: add raidengine device

The RaidEngine is a new Freescale hardware that used for parity
computation offloading in RAID5/6.

This patch adds the device node in device tree and related binding
documentation.

Signed-off-by: Harninder Rai <harninder.rai@freescale.com>
Signed-off-by: Naveen Burmi <naveenburmi@freescale.com>
Signed-off-by: Xuelin Shi <b29237@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

authored by

Xuelin Shi and committed by
Kumar Gala
1723d909 5320b507

+173
+81
Documentation/devicetree/bindings/powerpc/fsl/raideng.txt
··· 1 + * Freescale 85xx RAID Engine nodes 2 + 3 + RAID Engine nodes are defined to describe on-chip RAID accelerators. Each RAID 4 + Engine should have a separate node. 5 + 6 + Supported chips: 7 + P5020, P5040 8 + 9 + Required properties: 10 + 11 + - compatible: Should contain "fsl,raideng-v1.0" as the value 12 + This identifies RAID Engine block. 1 in 1.0 represents 13 + major number whereas 0 represents minor number. The 14 + version matches the hardware IP version. 15 + - reg: offset and length of the register set for the device 16 + - ranges: standard ranges property specifying the translation 17 + between child address space and parent address space 18 + 19 + Example: 20 + /* P5020 */ 21 + raideng: raideng@320000 { 22 + compatible = "fsl,raideng-v1.0"; 23 + #address-cells = <1>; 24 + #size-cells = <1>; 25 + reg = <0x320000 0x10000>; 26 + ranges = <0 0x320000 0x10000>; 27 + }; 28 + 29 + 30 + There must be a sub-node for each job queue present in RAID Engine 31 + This node must be a sub-node of the main RAID Engine node 32 + 33 + - compatible: Should contain "fsl,raideng-v1.0-job-queue" as the value 34 + This identifies the job queue interface 35 + - reg: offset and length of the register set for job queue 36 + - ranges: standard ranges property specifying the translation 37 + between child address space and parent address space 38 + 39 + Example: 40 + /* P5020 */ 41 + raideng_jq0@1000 { 42 + compatible = "fsl,raideng-v1.0-job-queue"; 43 + reg = <0x1000 0x1000>; 44 + ranges = <0x0 0x1000 0x1000>; 45 + }; 46 + 47 + 48 + There must be a sub-node for each job ring present in RAID Engine 49 + This node must be a sub-node of job queue node 50 + 51 + - compatible: Must contain "fsl,raideng-v1.0-job-ring" as the value 52 + This identifies job ring. Should contain either 53 + "fsl,raideng-v1.0-hp-ring" or "fsl,raideng-v1.0-lp-ring" 54 + depending upon whether ring has high or low priority 55 + - reg: offset and length of the register set for job ring 56 + - interrupts: interrupt mapping for job ring IRQ 57 + 58 + Optional property: 59 + 60 + - fsl,liodn: Specifies the LIODN to be used for Job Ring. This 61 + property is normally set by firmware. Value 62 + is of 12-bits which is the LIODN number for this JR. 63 + This property is used by the IOMMU (PAMU) to distinquish 64 + transactions from this JR and than be able to do address 65 + translation & protection accordingly. 66 + 67 + Example: 68 + /* P5020 */ 69 + raideng_jq0@1000 { 70 + compatible = "fsl,raideng-v1.0-job-queue"; 71 + reg = <0x1000 0x1000>; 72 + ranges = <0x0 0x1000 0x1000>; 73 + 74 + raideng_jr0: jr@0 { 75 + compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-hp-ring"; 76 + reg = <0x0 0x400>; 77 + interrupts = <139 2 0 0>; 78 + interrupt-parent = <&mpic>; 79 + fsl,liodn = <0x41>; 80 + }; 81 + };
+1
arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
··· 354 354 /include/ "qoriq-sata2-0.dtsi" 355 355 /include/ "qoriq-sata2-1.dtsi" 356 356 /include/ "qoriq-sec4.2-0.dtsi" 357 + /include/ "qoriq-raid1.0-0.dtsi" 357 358 };
+6
arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi
··· 73 73 rtic_c = &rtic_c; 74 74 rtic_d = &rtic_d; 75 75 sec_mon = &sec_mon; 76 + 77 + raideng = &raideng; 78 + raideng_jr0 = &raideng_jr0; 79 + raideng_jr1 = &raideng_jr1; 80 + raideng_jr2 = &raideng_jr2; 81 + raideng_jr3 = &raideng_jr3; 76 82 }; 77 83 78 84 cpus {
+85
arch/powerpc/boot/dts/fsl/qoriq-raid1.0-0.dtsi
··· 1 + /* 2 + * QorIQ RAID 1.0 device tree stub [ controller @ offset 0x320000 ] 3 + * 4 + * Copyright 2012 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 + raideng: raideng@320000 { 36 + compatible = "fsl,raideng-v1.0"; 37 + #address-cells = <1>; 38 + #size-cells = <1>; 39 + reg = <0x320000 0x10000>; 40 + ranges = <0 0x320000 0x10000>; 41 + 42 + raideng_jq0@1000 { 43 + compatible = "fsl,raideng-v1.0-job-queue"; 44 + #address-cells = <1>; 45 + #size-cells = <1>; 46 + reg = <0x1000 0x1000>; 47 + ranges = <0x0 0x1000 0x1000>; 48 + 49 + raideng_jr0: jr@0 { 50 + compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-hp-ring"; 51 + reg = <0x0 0x400>; 52 + interrupts = <139 2 0 0>; 53 + interrupt-parent = <&mpic>; 54 + }; 55 + 56 + raideng_jr1: jr@400 { 57 + compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-lp-ring"; 58 + reg = <0x400 0x400>; 59 + interrupts = <140 2 0 0>; 60 + interrupt-parent = <&mpic>; 61 + }; 62 + }; 63 + 64 + raideng_jq1@2000 { 65 + compatible = "fsl,raideng-v1.0-job-queue"; 66 + #address-cells = <1>; 67 + #size-cells = <1>; 68 + reg = <0x2000 0x1000>; 69 + ranges = <0x0 0x2000 0x1000>; 70 + 71 + raideng_jr2: jr@0 { 72 + compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-hp-ring"; 73 + reg = <0x0 0x400>; 74 + interrupts = <141 2 0 0>; 75 + interrupt-parent = <&mpic>; 76 + }; 77 + 78 + raideng_jr3: jr@400 { 79 + compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-lp-ring"; 80 + reg = <0x400 0x400>; 81 + interrupts = <142 2 0 0>; 82 + interrupt-parent = <&mpic>; 83 + }; 84 + }; 85 + };