| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (C) 2008-2011 Freescale Semiconductor Inc. |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/crypto/fsl,sec-v4.0.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Freescale SEC 4 |
| |
| maintainers: |
| - '"Horia Geantă" <horia.geanta@nxp.com>' |
| - Pankaj Gupta <pankaj.gupta@nxp.com> |
| - Gaurav Jain <gaurav.jain@nxp.com> |
| |
| description: | |
| NOTE: the SEC 4 is also known as Freescale's Cryptographic Accelerator |
| Accelerator and Assurance Module (CAAM). |
| |
| 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. |
| |
| properties: |
| compatible: |
| oneOf: |
| - items: |
| - const: fsl,sec-v5.4 |
| - const: fsl,sec-v5.0 |
| - const: fsl,sec-v4.0 |
| - items: |
| - enum: |
| - fsl,imx6ul-caam |
| - fsl,sec-v5.0 |
| - const: fsl,sec-v4.0 |
| - const: fsl,sec-v4.0 |
| |
| reg: |
| maxItems: 1 |
| |
| ranges: |
| maxItems: 1 |
| |
| '#address-cells': |
| enum: [1, 2] |
| |
| '#size-cells': |
| enum: [1, 2] |
| |
| clocks: |
| minItems: 1 |
| maxItems: 4 |
| |
| clock-names: |
| minItems: 1 |
| maxItems: 4 |
| items: |
| enum: [mem, aclk, ipg, emi_slow] |
| |
| dma-coherent: true |
| |
| interrupts: |
| maxItems: 1 |
| |
| fsl,sec-era: |
| description: Defines the 'ERA' of the SEC device. |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| |
| patternProperties: |
| '^jr@[0-9a-f]+$': |
| type: object |
| additionalProperties: false |
| description: |
| Job Ring (JR) 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: |
| oneOf: |
| - items: |
| - const: fsl,sec-v5.4-job-ring |
| - const: fsl,sec-v5.0-job-ring |
| - const: fsl,sec-v4.0-job-ring |
| - items: |
| - const: fsl,sec-v5.0-job-ring |
| - const: fsl,sec-v4.0-job-ring |
| - const: fsl,sec-v4.0-job-ring |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| 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 |
| maximum: 0xfff |
| |
| '^rtic@[0-9a-f]+$': |
| type: object |
| additionalProperties: false |
| description: |
| Run Time Integrity Check (RTIC) 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: |
| oneOf: |
| - items: |
| - const: fsl,sec-v5.4-rtic |
| - const: fsl,sec-v5.0-rtic |
| - const: fsl,sec-v4.0-rtic |
| - const: fsl,sec-v4.0-rtic |
| |
| reg: |
| maxItems: 1 |
| |
| ranges: |
| maxItems: 1 |
| |
| interrupts: |
| maxItems: 1 |
| |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 1 |
| |
| patternProperties: |
| '^rtic-[a-z]@[0-9a-f]+$': |
| type: object |
| additionalProperties: false |
| description: |
| Run Time Integrity Check (RTIC) Memory Node 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: |
| oneOf: |
| - items: |
| - const: fsl,sec-v5.4-rtic-memory |
| - const: fsl,sec-v5.0-rtic-memory |
| - const: fsl,sec-v4.0-rtic-memory |
| - const: fsl,sec-v4.0-rtic-memory |
| |
| reg: |
| items: |
| - description: RTIC memory address |
| - description: RTIC hash result |
| |
| 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 |
| maximum: 0xfff |
| |
| 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 |
| |
| required: |
| - compatible |
| - reg |
| - ranges |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| crypto@300000 { |
| compatible = "fsl,sec-v4.0"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| reg = <0x300000 0x10000>; |
| ranges = <0 0x300000 0x10000>; |
| interrupts = <92 2>; |
| |
| jr@1000 { |
| compatible = "fsl,sec-v4.0-job-ring"; |
| reg = <0x1000 0x1000>; |
| interrupts = <88 2>; |
| }; |
| |
| jr@2000 { |
| compatible = "fsl,sec-v4.0-job-ring"; |
| reg = <0x2000 0x1000>; |
| interrupts = <89 2>; |
| }; |
| |
| jr@3000 { |
| compatible = "fsl,sec-v4.0-job-ring"; |
| reg = <0x3000 0x1000>; |
| interrupts = <90 2>; |
| }; |
| |
| jr@4000 { |
| compatible = "fsl,sec-v4.0-job-ring"; |
| reg = <0x4000 0x1000>; |
| 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@0 { |
| compatible = "fsl,sec-v4.0-rtic-memory"; |
| reg = <0x00 0x20>, <0x100 0x80>; |
| }; |
| |
| rtic-b@20 { |
| compatible = "fsl,sec-v4.0-rtic-memory"; |
| reg = <0x20 0x20>, <0x200 0x80>; |
| }; |
| |
| rtic-c@40 { |
| compatible = "fsl,sec-v4.0-rtic-memory"; |
| reg = <0x40 0x20>, <0x300 0x80>; |
| }; |
| |
| rtic-d@60 { |
| compatible = "fsl,sec-v4.0-rtic-memory"; |
| reg = <0x60 0x20>, <0x500 0x80>; |
| }; |
| }; |
| }; |
| ... |