Merge commit '81fd23e2b3ccf71c807e671444e8accaba98ca53' of https://git.pengutronix...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / ata / nvidia,tegra-ahci.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/ata/nvidia,tegra-ahci.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Tegra AHCI SATA Controller
8
9 maintainers:
10   - Thierry Reding <thierry.reding@gmail.com>
11   - Jonathan Hunter <jonathanh@nvidia.com>
12
13 properties:
14   compatible:
15     enum:
16       - nvidia,tegra124-ahci
17       - nvidia,tegra132-ahci
18       - nvidia,tegra210-ahci
19       - nvidia,tegra186-ahci
20
21   reg:
22     minItems: 2
23     items:
24       - description: AHCI registers
25       - description: SATA configuration and IPFS registers
26       - description: SATA AUX registers
27
28   interrupts:
29     maxItems: 1
30
31   clock-names:
32     items:
33       - const: sata
34       - const: sata-oob
35
36   clocks:
37     maxItems: 2
38
39   reset-names:
40     minItems: 2
41     items:
42       - const: sata
43       - const: sata-cold
44       - const: sata-oob
45
46   resets:
47     minItems: 2
48     maxItems: 3
49
50   iommus:
51     maxItems: 1
52
53   interconnect-names:
54     items:
55       - const: dma-mem
56       - const: write
57
58   interconnects:
59     maxItems: 2
60
61   power-domains:
62     items:
63       - description: SAX power-domain
64
65   phy-names:
66     items:
67       - const: sata-0
68
69   phys:
70     maxItems: 1
71
72   hvdd-supply:
73     description: SATA HVDD regulator supply.
74
75   vddio-supply:
76     description: SATA VDDIO regulator supply.
77
78   avdd-supply:
79     description: SATA AVDD regulator supply.
80
81   target-5v-supply:
82     description: SATA 5V power regulator supply.
83
84   target-12v-supply:
85     description: SATA 12V power regulator supply.
86
87 required:
88   - compatible
89   - reg
90   - interrupts
91   - clock-names
92   - clocks
93   - reset-names
94   - resets
95
96 allOf:
97   - if:
98       properties:
99         compatible:
100           contains:
101             enum:
102               - nvidia,tegra124-ahci
103               - nvidia,tegra132-ahci
104     then:
105       properties:
106         reg:
107           maxItems: 2
108         reset-names:
109           minItems: 3
110         resets:
111           minItems: 3
112       required:
113         - phys
114         - phy-names
115         - hvdd-supply
116         - vddio-supply
117         - avdd-supply
118
119   - if:
120       properties:
121         compatible:
122           contains:
123             enum:
124               - nvidia,tegra210-ahci
125     then:
126       properties:
127         reg:
128           minItems: 3
129         reset-names:
130           minItems: 3
131         resets:
132           minItems: 3
133
134   - if:
135       properties:
136         compatible:
137           contains:
138             enum:
139               - nvidia,tegra186-ahci
140     then:
141       properties:
142         reg:
143           minItems: 3
144         reset-names:
145           maxItems: 2
146         resets:
147           maxItems: 2
148       required:
149         - iommus
150         - interconnect-names
151         - interconnects
152         - power-domains
153
154 additionalProperties: true
155
156 examples:
157   - |
158     #include <dt-bindings/clock/tegra210-car.h>
159     #include <dt-bindings/reset/tegra210-car.h>
160     #include <dt-bindings/interrupt-controller/arm-gic.h>
161
162     sata@70020000 {
163             compatible = "nvidia,tegra210-ahci";
164             reg = <0x70027000 0x00002000>, /* AHCI */
165                   <0x70020000 0x00007000>, /* SATA */
166                   <0x70001100 0x00010000>; /* SATA AUX */
167             interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
168             clocks = <&tegra_car TEGRA210_CLK_SATA>,
169                      <&tegra_car TEGRA210_CLK_SATA_OOB>;
170             clock-names = "sata", "sata-oob";
171             resets = <&tegra_car 124>,
172                      <&tegra_car 129>,
173                      <&tegra_car 123>;
174             reset-names = "sata", "sata-cold", "sata-oob";
175     };