summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/dma/nvidia,tegra186-gpc-dma.yaml
blob: bc093c783d98666c7e1cd537a6e6769b9c33e8f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/dma/nvidia,tegra186-gpc-dma.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVIDIA Tegra GPC DMA Controller

description: |
  The Tegra General Purpose Central (GPC) DMA controller is used for faster
  data transfers between memory to memory, memory to device and device to
  memory.

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Rajesh Gumasta <rgumasta@nvidia.com>
  - Akhil R <akhilrajeev@nvidia.com>

properties:
  compatible:
    oneOf:
      - enum:
          - nvidia,tegra264-gpcdma
          - nvidia,tegra186-gpcdma
      - items:
          - enum:
              - nvidia,tegra234-gpcdma
              - nvidia,tegra194-gpcdma
          - const: nvidia,tegra186-gpcdma

  "#dma-cells":
    const: 1

  reg:
    maxItems: 1

  interrupts:
    description:
      Should contain all of the per-channel DMA interrupts in
      ascending order with respect to the DMA channel index.
    minItems: 1
    maxItems: 32

  resets:
    maxItems: 1

  reset-names:
    const: gpcdma

  iommus:
    maxItems: 1

  iommu-map:
    description:
      Maps DMA channel numbers to IOMMU stream IDs. A single entry can map all
      channels when stream IDs are contiguous. In systems where the channels or
      stream IDs are not contiguous, multiple entries may be needed.
    minItems: 1
    maxItems: 32

  dma-coherent: true

  dma-channel-mask:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - "#dma-cells"
  - iommus
  - dma-channel-mask

allOf:
  - $ref: dma-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra186-gpcdma
    then:
      required:
        - resets
        - reset-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/memory/tegra186-mc.h>
    #include <dt-bindings/reset/tegra186-reset.h>

    dma-controller@2600000 {
        compatible = "nvidia,tegra186-gpcdma";
        reg = <0x2600000 0x210000>;
        resets = <&bpmp TEGRA186_RESET_GPCDMA>;
        reset-names = "gpcdma";
        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
        #dma-cells = <1>;
        iommus = <&smmu TEGRA186_SID_GPCDMA_0>;
        dma-coherent;
        dma-channel-mask = <0xfffffffe>;
    };
...