public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: herbert@gondor.apana.org.au, davem@davemloft.net,
	robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org,
	horia.geanta@nxp.com, pankaj.gupta@nxp.com, gaurav.jain@nxp.com,
	shawnguo@kernel.org, s.hauer@pengutronix.de
Cc: kernel@pengutronix.de, stefan@agner.ch,
	linux-crypto@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, Peng Fan <peng.fan@nxp.com>
Subject: [PATCH 2/9] dt-bindings: crypto: fsl-sec4: convert to DT schema
Date: Wed,  1 Mar 2023 09:56:55 +0800	[thread overview]
Message-ID: <20230301015702.3388458-3-peng.fan@oss.nxp.com> (raw)
In-Reply-To: <20230301015702.3388458-1-peng.fan@oss.nxp.com>

From: Peng Fan <peng.fan@nxp.com>

Convert the fsl-sec4 binding to DT schema

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 .../devicetree/bindings/crypto/fsl-sec4.yaml  | 324 ++++++++++++++++++
 1 file changed, 324 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/crypto/fsl-sec4.yaml

diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec4.yaml b/Documentation/devicetree/bindings/crypto/fsl-sec4.yaml
new file mode 100644
index 000000000000..678c8389ef49
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/fsl-sec4.yaml
@@ -0,0 +1,324 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/crypto/fsl-sec4.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP SEC4 Crypto Binding
+
+description:
+  CONTENTS
+    -Overview
+    -SEC 4 Node
+    -Job Ring Node
+    -Run Time Integrity Check (RTIC) Node
+    -Run Time Integrity Check (RTIC) Memory Node
+  NOTE, the SEC 4 is also known as Freescale's Cryptographic Accelerator
+  Accelerator and Assurance Module (CAAM).
+  For information on SEC4 SNVS, ref fsl-sec4-snvs.yaml
+
+  =====================================================================
+  Overview
+
+  DESCRIPTION
+
+  SEC 4 h/w can process requests from 2 types of sources.
+  1. DPAA Queue Interface (HW interface between Queue Manager & SEC 4).
+  2. Job Rings (HW interface between cores & SEC 4 registers).
+
+  High Speed Data Path Configuration,
+
+  HW interface between QM & SEC 4 and also BM & SEC 4, on DPAA-enabled parts
+  such as the P4080.  The number of simultaneous dequeues the QI can make is
+  equal to the number of Descriptor Controller (DECO) engines in a particular
+  SEC version.  E.g., the SEC 4.0 in the P4080 has 5 DECOs and can thus
+  dequeue from 5 subportals simultaneously.
+
+  Job Ring Data Path Configuration,
+
+  Each JR is located on a separate 4k page, they may (or may not) be made visible
+  in the memory partition devoted to a particular core.  The P4080 has 4 JRs, so
+  up to 4 JRs can be configured; and all 4 JRs process requests in parallel.
+
+maintainers:
+  - Peng Fan <peng.fan@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - fsl,sec-v4.0
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  reg:
+    maxItems: 1
+
+  ranges:
+    description:
+      A standard property. Specifies the physical address range of the SEC
+      4.0 register space (-SNVS not included).  A triplet that includes the
+      child address, parent address, & length.
+
+  interrupts:
+    description:
+      Specifies the interrupts generated by this device.  The value of the
+      interrupts property consists of one interrupt specifier. The format
+      of the specifier is defined by the binding document describing the
+      node's interrupt parent.
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 4
+
+  clock-names:
+    oneOf:
+      - items:
+          - const: mem
+          - const: aclk
+          - const: ipg
+          - const: emi_slow
+      - items:
+          - const: aclk
+          - const: ipg
+      - items:
+          - const: ipg
+          - const: aclk
+          - const: mem
+
+  fsl,sec-era:
+    description:
+      Optional. A standard property. Define the 'ERA' of the SEC device.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+patternProperties:
+  "jr@[0-9a-f]+$":
+    type: object
+    description:
+      Child of the crypto node defines data processing interface to SEC 4
+      across the peripheral bus for purposes of processing
+      cryptographic descriptors. The specified address
+      range can be made visible to one (or more) cores.
+      The interrupt defined for this node is controlled within
+      the address range of this node.
+
+    properties:
+      compatible:
+        enum:
+          - fsl,sec-v4.0-job-ring
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        description:
+          Specifies the interrupts generated by this device.  The value of the
+          interrupts property consists of one interrupt specifier. The format
+          of the specifier is defined by the binding document describing the
+          node's interrupt parent.
+        maxItems: 1
+
+      fsl,liodn:
+        description:
+          Specifies the LIODN to be used in conjunction with the ppid-to-liodn
+          table that specifies the PPID to LIODN mapping. Needed if the PAMU
+          is used.  Value is a 12 bit value where value is a LIODN ID for this
+          JR. This property is normally set by boot firmware.
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        maximum: 0x1
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+
+  "rtic@[0-9a-f]+$":
+    type: object
+    description:
+      Run Time Integrity Check (RTIC) Node. Child node of the crypto node.
+      Defines a register space that contains up to 5 sets of addresses and
+      their lengths (sizes) that will be checked at run time.  After an
+      initial hash result is calculated, these addresses are checked by HW
+      to monitor any change.  If any memory is modified, a Security Violation
+      is triggered (see SNVS definition).
+
+    properties:
+      compatible:
+        enum:
+          - fsl,sec-v4.0-rtic
+
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 1
+
+      reg:
+        minItems: 1
+        maxItems: 2
+
+      ranges:
+        description:
+          A standard property.  Specifies the physical address range of the
+          SEC 4 register space (-SNVS not included).  A triplet that includes
+          the child address, parent address, & length.
+
+    required:
+      - compatible
+      - reg
+      - "#address-cells"
+      - "#size-cells"
+      - ranges
+
+    patternProperties:
+      "rtic-[a-f]@[0-9]+$":
+        type: object
+        description:
+          Run Time Integrity Check (RTIC) Memory Node. A child node that
+          defines individual RTIC memory regions that are used to perform
+          run-time integrity check of memory areas that should not modified.
+          The node defines a register that contains the memory address &
+          length (combined) and a second register that contains the hash
+          result in big endian format.
+
+        properties:
+          compatible:
+            enum:
+              - fsl,sec-v4.0-rtic-memory
+
+          reg:
+            minItems: 1
+            maxItems: 2
+
+          fsl,rtic-region:
+            description:
+              Specifies the HW address (36 bit address) for this region
+              followed by the length of the HW partition to be checked;
+              the address is represented as a 64 bit quantity followed
+              by a 32 bit length.
+            $ref: /schemas/types.yaml#/definitions/uint32-array
+            minItems: 1
+            maxItems: 3
+
+          fsl,liodn:
+            description:
+              Specifies the LIODN to be used in conjunction with
+              the ppid-to-liodn table that specifies the PPID to LIODN
+              mapping.  Needed if the PAMU is used.  Value is a 12 bit value
+              where value is a LIODN ID for this RTIC memory region. This
+              property is normally set by boot firmware.
+            $ref: /schemas/types.yaml#/definitions/uint32-array
+            minItems: 1
+            maxItems: 3
+
+        required:
+          - compatible
+          - reg
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  # iMX6QDL/SX requires four clocks
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/imx6qdl-clock.h>
+
+    crypto@300000 {
+        compatible = "fsl,sec-v4.0";
+        fsl,sec-era = <2>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        reg = <0x300000 0x10000>;
+        ranges = <0 0x300000 0x10000>;
+        interrupt-parent = <&mpic>;
+        interrupts = <92 2>;
+        clocks = <&clks IMX6QDL_CLK_CAAM_MEM>,
+                 <&clks IMX6QDL_CLK_CAAM_ACLK>,
+                 <&clks IMX6QDL_CLK_CAAM_IPG>,
+                 <&clks IMX6QDL_CLK_EIM_SLOW>;
+        clock-names = "mem", "aclk", "ipg", "emi_slow";
+
+        sec_jr0: jr@1000 {
+            compatible = "fsl,sec-v4.0-job-ring";
+            reg = <0x1000 0x1000>;
+            interrupt-parent = <&mpic>;
+            interrupts = <88 2>;
+        };
+
+        sec_jr1: jr@2000 {
+           compatible = "fsl,sec-v4.0-job-ring";
+           reg = <0x2000 0x1000>;
+           interrupt-parent = <&mpic>;
+           interrupts = <89 2>;
+        };
+
+        sec_jr2: jr@3000 {
+          compatible = "fsl,sec-v4.0-job-ring";
+          reg = <0x3000 0x1000>;
+          interrupt-parent = <&mpic>;
+          interrupts = <90 2>;
+        };
+
+        sec_jr3: jr@4000 {
+           compatible = "fsl,sec-v4.0-job-ring";
+           reg = <0x4000 0x1000>;
+           interrupt-parent = <&mpic>;
+           interrupts = <91 2>;
+        };
+
+        rtic@6000 {
+            compatible = "fsl,sec-v4.0-rtic";
+            #address-cells = <1>;
+            #size-cells = <1>;
+            reg = <0x6000 0x100>;
+            ranges = <0x0 0x6100 0xe00>;
+
+            rtic_a: rtic-a@0 {
+               compatible = "fsl,sec-v4.0-rtic-memory";
+               reg = <0x00 0x20 0x100 0x80>;
+            };
+
+            rtic_b: rtic-b@20 {
+                compatible = "fsl,sec-v4.0-rtic-memory";
+                reg = <0x20 0x20 0x200 0x80>;
+            };
+
+            rtic_c: rtic-c@40 {
+                compatible = "fsl,sec-v4.0-rtic-memory";
+                reg = <0x40 0x20 0x300 0x80>;
+            };
+
+            rtic_d: rtic-d@60 {
+                compatible = "fsl,sec-v4.0-rtic-memory";
+                reg = <0x60 0x20 0x500 0x80>;
+            };
+        };
+    };
+
+  # iMX6UL does only require three clocks
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/imx6ul-clock.h>
+
+    crypto: crypto@2140000 {
+        compatible = "fsl,sec-v4.0";
+        #address-cells = <1>;
+        #size-cells = <1>;
+        reg = <0x2140000 0x3c000>;
+        ranges = <0 0x2140000 0x3c000>;
+        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+
+        clocks = <&clks IMX6UL_CLK_CAAM_IPG>,
+                 <&clks IMX6UL_CLK_CAAM_ACLK>,
+                 <&clks IMX6UL_CLK_CAAM_MEM>;
+        clock-names = "ipg", "aclk", "mem";
+    };
+...
-- 
2.37.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-03-01  2:07 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-01  1:56 [PATCH 0/9] dt-bindings: crypto: convert fsl-sec4 to DT schema Peng Fan (OSS)
2023-03-01  1:56 ` [PATCH 1/9] ARM: dts: vfxxx: drop the number after jr Peng Fan (OSS)
2023-03-01  1:56 ` Peng Fan (OSS) [this message]
2023-03-03  9:53   ` [PATCH 2/9] dt-bindings: crypto: fsl-sec4: convert to DT schema Krzysztof Kozlowski
2023-03-01  1:56 ` [PATCH 3/9] dt-bindings: crypto: fsl-sec4: support sec5.4/0 and i.MX6UL Peng Fan (OSS)
2023-03-03  9:55   ` Krzysztof Kozlowski
2023-03-07  6:56   ` Gaurav Jain
2023-03-01  1:56 ` [PATCH 4/9] dt-bindings: crypto: add fsl-sec4-snvs DT schema Peng Fan (OSS)
2023-03-01  3:07   ` Rob Herring
2023-03-03  9:58   ` Krzysztof Kozlowski
2023-03-01  1:56 ` [PATCH 5/9] dt-bindings: crypto: fsl-sec4-snvs: add simple-mfd compatible Peng Fan (OSS)
2023-03-03 10:00   ` Krzysztof Kozlowski
2023-03-01  1:56 ` [PATCH 6/9] dt-bindings: crypto: fsl-sec4-snvs: add fsl sec 5.x compatible Peng Fan (OSS)
2023-03-03 10:01   ` Krzysztof Kozlowski
2023-03-07  6:47   ` Gaurav Jain
2023-03-07  6:58     ` Peng Fan
2023-03-01  1:57 ` [PATCH 7/9] dt-bindings: crypto: drop fsl-sec4 txt binding Peng Fan (OSS)
2023-03-02 13:26   ` kernel test robot
2023-03-03 10:02   ` Krzysztof Kozlowski
2023-03-01  1:57 ` [PATCH 8/9] dt-bindings: crypto: fsl-sec4-snvs: add snvs-lpgpr support Peng Fan (OSS)
2023-03-03 10:03   ` Krzysztof Kozlowski
2023-03-01  1:57 ` [PATCH 9/9] dt-bindings: crypto: fsl-sec4-snvs: add poweroff support Peng Fan (OSS)
2023-03-03 10:03   ` Krzysztof Kozlowski
2023-03-01  3:06 ` [PATCH 0/9] dt-bindings: crypto: convert fsl-sec4 to DT schema Rob Herring
2023-03-01  3:10   ` Peng Fan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230301015702.3388458-3-peng.fan@oss.nxp.com \
    --to=peng.fan@oss.nxp.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=gaurav.jain@nxp.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=horia.geanta@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pankaj.gupta@nxp.com \
    --cc=peng.fan@nxp.com \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=stefan@agner.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox