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    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
87required:
88  - compatible
89  - reg
90  - interrupts
91  - clock-names
92  - clocks
93  - reset-names
94  - resets
95
96allOf:
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
154additionalProperties: true
155
156examples:
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    };
176