Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ba6529c authored by Isaac J. Manjarres's avatar Isaac J. Manjarres
Browse files

dt-bindings: Add device-tree bindings for the ION memory manager

Add the device-tree bindings that describe the device-tree
properties for the MSM ION memory manager.

Change-Id: I757dc97ebcde58a71f4358d54eacf11478e109c3
parent b9cc3f53
Loading
Loading
Loading
Loading
+134 −0
Original line number Original line Diff line number Diff line
%YAML 1.2
---
$id: "http://devicetree.org/schemas/arm/msm/msm_ion.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: ION Memory Manager binding

maintainers:
  - Isaac J. Manjarres <isaacm@quicinc.com>

description: |
  ION is a memory manager that allows for sharing of buffers between different
  processes and between user space and kernel space. ION manages different
  memory spaces by separating the memory spaces into heaps.

  All child nodes of a qcom,msm-ion node are interpreted as ION heap
  configurations.

properties:
  $nodename:
    const: qcom,ion
    description: Container of ION heap nodes

  compatible:
    items:
      -const: qcom,msm-ion

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

patternProperties:
  '^qcom,ion-heap@[0-9]+$':
    properties:
      reg:
        maxItems: 1
        description: The ID assigned to this heap.

      memory-region:
        $ref: '/schemas/types.yaml#/definitions/phandle'
        maxItems: 1
        description: |
          Specifies the reserved memory region that this heap will allocate
          memory from. This property is only required for heaps that draw memory
          from a particular reserved memory region. Refer to
          Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
          for more information.

      qcom,ion-heap-type:
        $ref: '/schemas/types.yaml#/definitions/string'
        maxItems: 1
        items:
          - enum:
              - SYSTEM
              - CARVEOUT
              - SECURE_CARVEOUT
              - DMA
              - HYP_CMA
              - SYSTEM_SECURE
              - SECURE_DMA
        description: |
          The heap type to use for this heap. Heaps of type SECURE_CARVEOUT
          are expected to contain multiple child nodes, as seen below.

      $nodename:
        properties:
          memory-region:
            $ref: '/schemas/types.yaml#/definitions/phandle'
            maxItems: 1
            description: |
              Specifies the reserved memory region that this heap will allocate
              memory from. Refer to the reserved-memory binding documentation
              for more information.

          token:
            $ref: '/schemas/types.yaml#/definitions/uint32'
            minItems: 1
            description: |
              Specifies the set of secure domains which will be able to access
              the memory-region.

        required:
          - memory-region
          - token

    required:
      - reg
      - qcom,ion-heap-type

required:
  - compatible
  - '#address-cells'
  - '#size-cells'

examples:
  - |
    qcom,ion {
        compatible = "qcom,msm-ion";
        #address-cells = <1>;
        #size-cells = <0>;

        system_heap: qcom,ion-heap@25 {
            reg = <25>;
            qcom,ion-heap-type = "SYSTEM";
        };

        qcom,ion-heap@22 { /* ADSP HEAP */
            reg = <22>;
            memory-region = <&adsp_mem>;
            qcom,ion-heap-type = "DMA";
        };

        qcom,ion-heap@10 { /* SECURE DISPLAY HEAP */
            reg = <10>;
            memory-region = <&secure_display_memory>;
            qcom,ion-heap-type = "HYP_CMA";
        };

        qcom,ion-heap@9 {
            reg = <9>;
            qcom,ion-heap-type = "SYSTEM_SECURE";
        };

        qcom,ion-heap@14 {
            reg = <14>;
            qcom,ion-heap-type = "SECURE_CARVEOUT";
            node1 {
                memory-region = <&cp_region>;
                token = <ION_FLAG_CP_TOUCH>;
            };
        };
    };