162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci# Copyright (C) 2008-2011 Freescale Semiconductor Inc.
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/crypto/fsl,sec-v4.0.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: Freescale SEC 4
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - '"Horia Geantă" <horia.geanta@nxp.com>'
1262306a36Sopenharmony_ci  - Pankaj Gupta <pankaj.gupta@nxp.com>
1362306a36Sopenharmony_ci  - Gaurav Jain <gaurav.jain@nxp.com>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cidescription: |
1662306a36Sopenharmony_ci  NOTE: the SEC 4 is also known as Freescale's Cryptographic Accelerator
1762306a36Sopenharmony_ci  Accelerator and Assurance Module (CAAM).
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci  SEC 4 h/w can process requests from 2 types of sources.
2062306a36Sopenharmony_ci  1. DPAA Queue Interface (HW interface between Queue Manager & SEC 4).
2162306a36Sopenharmony_ci  2. Job Rings (HW interface between cores & SEC 4 registers).
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  High Speed Data Path Configuration:
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  HW interface between QM & SEC 4 and also BM & SEC 4, on DPAA-enabled parts
2662306a36Sopenharmony_ci  such as the P4080.  The number of simultaneous dequeues the QI can make is
2762306a36Sopenharmony_ci  equal to the number of Descriptor Controller (DECO) engines in a particular
2862306a36Sopenharmony_ci  SEC version.  E.g., the SEC 4.0 in the P4080 has 5 DECOs and can thus
2962306a36Sopenharmony_ci  dequeue from 5 subportals simultaneously.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  Job Ring Data Path Configuration:
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  Each JR is located on a separate 4k page, they may (or may not) be made visible
3462306a36Sopenharmony_ci  in the memory partition devoted to a particular core.  The P4080 has 4 JRs, so
3562306a36Sopenharmony_ci  up to 4 JRs can be configured; and all 4 JRs process requests in parallel.
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciproperties:
3862306a36Sopenharmony_ci  compatible:
3962306a36Sopenharmony_ci    oneOf:
4062306a36Sopenharmony_ci      - items:
4162306a36Sopenharmony_ci          - const: fsl,sec-v5.4
4262306a36Sopenharmony_ci          - const: fsl,sec-v5.0
4362306a36Sopenharmony_ci          - const: fsl,sec-v4.0
4462306a36Sopenharmony_ci      - items:
4562306a36Sopenharmony_ci          - enum:
4662306a36Sopenharmony_ci              - fsl,imx6ul-caam
4762306a36Sopenharmony_ci              - fsl,sec-v5.0
4862306a36Sopenharmony_ci          - const: fsl,sec-v4.0
4962306a36Sopenharmony_ci      - const: fsl,sec-v4.0
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  reg:
5262306a36Sopenharmony_ci    maxItems: 1
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  ranges:
5562306a36Sopenharmony_ci    maxItems: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  '#address-cells':
5862306a36Sopenharmony_ci    enum: [1, 2]
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  '#size-cells':
6162306a36Sopenharmony_ci    enum: [1, 2]
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  clocks:
6462306a36Sopenharmony_ci    minItems: 1
6562306a36Sopenharmony_ci    maxItems: 4
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  clock-names:
6862306a36Sopenharmony_ci    minItems: 1
6962306a36Sopenharmony_ci    maxItems: 4
7062306a36Sopenharmony_ci    items:
7162306a36Sopenharmony_ci      enum: [mem, aclk, ipg, emi_slow]
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  dma-coherent: true
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci  interrupts:
7662306a36Sopenharmony_ci    maxItems: 1
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  fsl,sec-era:
7962306a36Sopenharmony_ci    description: Defines the 'ERA' of the SEC device.
8062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_cipatternProperties:
8362306a36Sopenharmony_ci  '^jr@[0-9a-f]+$':
8462306a36Sopenharmony_ci    type: object
8562306a36Sopenharmony_ci    additionalProperties: false
8662306a36Sopenharmony_ci    description:
8762306a36Sopenharmony_ci      Job Ring (JR) Node. Defines data processing interface to SEC 4 across the
8862306a36Sopenharmony_ci      peripheral bus for purposes of processing cryptographic descriptors. The
8962306a36Sopenharmony_ci      specified address range can be made visible to one (or more) cores. The
9062306a36Sopenharmony_ci      interrupt defined for this node is controlled within the address range of
9162306a36Sopenharmony_ci      this node.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci    properties:
9462306a36Sopenharmony_ci      compatible:
9562306a36Sopenharmony_ci        oneOf:
9662306a36Sopenharmony_ci          - items:
9762306a36Sopenharmony_ci              - const: fsl,sec-v5.4-job-ring
9862306a36Sopenharmony_ci              - const: fsl,sec-v5.0-job-ring
9962306a36Sopenharmony_ci              - const: fsl,sec-v4.0-job-ring
10062306a36Sopenharmony_ci          - items:
10162306a36Sopenharmony_ci              - const: fsl,sec-v5.0-job-ring
10262306a36Sopenharmony_ci              - const: fsl,sec-v4.0-job-ring
10362306a36Sopenharmony_ci          - const: fsl,sec-v4.0-job-ring
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci      reg:
10662306a36Sopenharmony_ci        maxItems: 1
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci      interrupts:
10962306a36Sopenharmony_ci        maxItems: 1
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci      fsl,liodn:
11262306a36Sopenharmony_ci        description:
11362306a36Sopenharmony_ci          Specifies the LIODN to be used in conjunction with the ppid-to-liodn
11462306a36Sopenharmony_ci          table that specifies the PPID to LIODN mapping. Needed if the PAMU is
11562306a36Sopenharmony_ci          used.  Value is a 12 bit value where value is a LIODN ID for this JR.
11662306a36Sopenharmony_ci          This property is normally set by boot firmware.
11762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
11862306a36Sopenharmony_ci        maximum: 0xfff
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci  '^rtic@[0-9a-f]+$':
12162306a36Sopenharmony_ci    type: object
12262306a36Sopenharmony_ci    additionalProperties: false
12362306a36Sopenharmony_ci    description:
12462306a36Sopenharmony_ci      Run Time Integrity Check (RTIC) Node. Defines a register space that
12562306a36Sopenharmony_ci      contains up to 5 sets of addresses and their lengths (sizes) that will be
12662306a36Sopenharmony_ci      checked at run time.  After an initial hash result is calculated, these
12762306a36Sopenharmony_ci      addresses are checked by HW to monitor any change.  If any memory is
12862306a36Sopenharmony_ci      modified, a Security Violation is triggered (see SNVS definition).
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci    properties:
13162306a36Sopenharmony_ci      compatible:
13262306a36Sopenharmony_ci        oneOf:
13362306a36Sopenharmony_ci          - items:
13462306a36Sopenharmony_ci              - const: fsl,sec-v5.4-rtic
13562306a36Sopenharmony_ci              - const: fsl,sec-v5.0-rtic
13662306a36Sopenharmony_ci              - const: fsl,sec-v4.0-rtic
13762306a36Sopenharmony_ci          - const: fsl,sec-v4.0-rtic
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci      reg:
14062306a36Sopenharmony_ci        maxItems: 1
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci      ranges:
14362306a36Sopenharmony_ci        maxItems: 1
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci      interrupts:
14662306a36Sopenharmony_ci        maxItems: 1
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci      '#address-cells':
14962306a36Sopenharmony_ci        const: 1
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci      '#size-cells':
15262306a36Sopenharmony_ci        const: 1
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci    patternProperties:
15562306a36Sopenharmony_ci      '^rtic-[a-z]@[0-9a-f]+$':
15662306a36Sopenharmony_ci        type: object
15762306a36Sopenharmony_ci        additionalProperties: false
15862306a36Sopenharmony_ci        description:
15962306a36Sopenharmony_ci          Run Time Integrity Check (RTIC) Memory Node defines individual RTIC
16062306a36Sopenharmony_ci          memory regions that are used to perform run-time integrity check of
16162306a36Sopenharmony_ci          memory areas that should not modified. The node defines a register
16262306a36Sopenharmony_ci          that contains the memory address & length (combined) and a second
16362306a36Sopenharmony_ci          register that contains the hash result in big endian format.
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci        properties:
16662306a36Sopenharmony_ci          compatible:
16762306a36Sopenharmony_ci            oneOf:
16862306a36Sopenharmony_ci              - items:
16962306a36Sopenharmony_ci                  - const: fsl,sec-v5.4-rtic-memory
17062306a36Sopenharmony_ci                  - const: fsl,sec-v5.0-rtic-memory
17162306a36Sopenharmony_ci                  - const: fsl,sec-v4.0-rtic-memory
17262306a36Sopenharmony_ci              - const: fsl,sec-v4.0-rtic-memory
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci          reg:
17562306a36Sopenharmony_ci            items:
17662306a36Sopenharmony_ci              - description: RTIC memory address
17762306a36Sopenharmony_ci              - description: RTIC hash result
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci          fsl,liodn:
18062306a36Sopenharmony_ci            description:
18162306a36Sopenharmony_ci              Specifies the LIODN to be used in conjunction with the
18262306a36Sopenharmony_ci              ppid-to-liodn table that specifies the PPID to LIODN mapping.
18362306a36Sopenharmony_ci              Needed if the PAMU is used.  Value is a 12 bit value where value
18462306a36Sopenharmony_ci              is a LIODN ID for this JR. This property is normally set by boot
18562306a36Sopenharmony_ci              firmware.
18662306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
18762306a36Sopenharmony_ci            maximum: 0xfff
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci          fsl,rtic-region:
19062306a36Sopenharmony_ci            description:
19162306a36Sopenharmony_ci              Specifies the HW address (36 bit address) for this region
19262306a36Sopenharmony_ci              followed by the length of the HW partition to be checked;
19362306a36Sopenharmony_ci              the address is represented as a 64 bit quantity followed
19462306a36Sopenharmony_ci              by a 32 bit length.
19562306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32-array
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_cirequired:
19862306a36Sopenharmony_ci  - compatible
19962306a36Sopenharmony_ci  - reg
20062306a36Sopenharmony_ci  - ranges
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciadditionalProperties: false
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ciexamples:
20562306a36Sopenharmony_ci  - |
20662306a36Sopenharmony_ci    crypto@300000 {
20762306a36Sopenharmony_ci        compatible = "fsl,sec-v4.0";
20862306a36Sopenharmony_ci        #address-cells = <1>;
20962306a36Sopenharmony_ci        #size-cells = <1>;
21062306a36Sopenharmony_ci        reg = <0x300000 0x10000>;
21162306a36Sopenharmony_ci        ranges = <0 0x300000 0x10000>;
21262306a36Sopenharmony_ci        interrupts = <92 2>;
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci        jr@1000 {
21562306a36Sopenharmony_ci            compatible = "fsl,sec-v4.0-job-ring";
21662306a36Sopenharmony_ci            reg = <0x1000 0x1000>;
21762306a36Sopenharmony_ci            interrupts = <88 2>;
21862306a36Sopenharmony_ci        };
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci        jr@2000 {
22162306a36Sopenharmony_ci            compatible = "fsl,sec-v4.0-job-ring";
22262306a36Sopenharmony_ci            reg = <0x2000 0x1000>;
22362306a36Sopenharmony_ci            interrupts = <89 2>;
22462306a36Sopenharmony_ci        };
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci        jr@3000 {
22762306a36Sopenharmony_ci            compatible = "fsl,sec-v4.0-job-ring";
22862306a36Sopenharmony_ci            reg = <0x3000 0x1000>;
22962306a36Sopenharmony_ci            interrupts = <90 2>;
23062306a36Sopenharmony_ci        };
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci        jr@4000 {
23362306a36Sopenharmony_ci            compatible = "fsl,sec-v4.0-job-ring";
23462306a36Sopenharmony_ci            reg = <0x4000 0x1000>;
23562306a36Sopenharmony_ci            interrupts = <91 2>;
23662306a36Sopenharmony_ci        };
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci        rtic@6000 {
23962306a36Sopenharmony_ci            compatible = "fsl,sec-v4.0-rtic";
24062306a36Sopenharmony_ci            #address-cells = <1>;
24162306a36Sopenharmony_ci            #size-cells = <1>;
24262306a36Sopenharmony_ci            reg = <0x6000 0x100>;
24362306a36Sopenharmony_ci            ranges = <0x0 0x6100 0xe00>;
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci            rtic-a@0 {
24662306a36Sopenharmony_ci                compatible = "fsl,sec-v4.0-rtic-memory";
24762306a36Sopenharmony_ci                reg = <0x00 0x20>, <0x100 0x80>;
24862306a36Sopenharmony_ci            };
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci            rtic-b@20 {
25162306a36Sopenharmony_ci                compatible = "fsl,sec-v4.0-rtic-memory";
25262306a36Sopenharmony_ci                reg = <0x20 0x20>, <0x200 0x80>;
25362306a36Sopenharmony_ci            };
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci            rtic-c@40 {
25662306a36Sopenharmony_ci                compatible = "fsl,sec-v4.0-rtic-memory";
25762306a36Sopenharmony_ci                reg = <0x40 0x20>, <0x300 0x80>;
25862306a36Sopenharmony_ci            };
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci            rtic-d@60 {
26162306a36Sopenharmony_ci                compatible = "fsl,sec-v4.0-rtic-memory";
26262306a36Sopenharmony_ci                reg = <0x60 0x20>, <0x500 0x80>;
26362306a36Sopenharmony_ci            };
26462306a36Sopenharmony_ci        };
26562306a36Sopenharmony_ci    };
26662306a36Sopenharmony_ci...
267