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