1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/nvme/apple,nvme-ans.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Apple ANS NVM Express host controller
8
9maintainers:
10  - Sven Peter <sven@svenpeter.dev>
11
12properties:
13  compatible:
14    items:
15      - enum:
16          - apple,t8103-nvme-ans2
17          - apple,t6000-nvme-ans2
18      - const: apple,nvme-ans2
19
20  reg:
21    items:
22      - description: NVMe and NVMMU registers
23      - description: ANS2 co-processor control registers
24
25  reg-names:
26    items:
27      - const: nvme
28      - const: ans
29
30  resets:
31    maxItems: 1
32
33  power-domains:
34    # two domains for t8103, three for t6000
35    minItems: 2
36    items:
37      - description: power domain for the NVMe controller.
38      - description: power domain for the first PCIe bus connecting the NVMe
39          controller to the storage modules.
40      - description: optional power domain for the second PCIe bus
41          connecting the NVMe controller to the storage modules.
42
43  power-domain-names:
44    minItems: 2
45    items:
46      - const: ans
47      - const: apcie0
48      - const: apcie1
49
50  mboxes:
51    maxItems: 1
52    description: Mailbox of the ANS2 co-processor
53
54  interrupts:
55    maxItems: 1
56
57  apple,sart:
58    $ref: /schemas/types.yaml#/definitions/phandle
59    description: |
60      Reference to the SART address filter.
61
62      The SART address filter is documented in iommu/apple,sart.yaml.
63
64if:
65  properties:
66    compatible:
67      contains:
68        const: apple,t8103-nvme-ans2
69then:
70  properties:
71    power-domains:
72      maxItems: 2
73    power-domain-names:
74      maxItems: 2
75else:
76  properties:
77    power-domains:
78      minItems: 3
79    power-domain-names:
80      minItems: 3
81
82required:
83  - compatible
84  - reg
85  - reg-names
86  - resets
87  - power-domains
88  - power-domain-names
89  - mboxes
90  - interrupts
91  - apple,sart
92
93additionalProperties: false
94
95examples:
96  - |
97    #include <dt-bindings/interrupt-controller/apple-aic.h>
98    #include <dt-bindings/interrupt-controller/irq.h>
99
100    nvme@7bcc0000 {
101      compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
102      reg = <0x7bcc0000 0x40000>, <0x77400000 0x4000>;
103      reg-names = "nvme", "ans";
104      interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
105      mboxes = <&ans>;
106      apple,sart = <&sart>;
107      power-domains = <&ps_ans2>, <&ps_apcie_st>;
108      power-domain-names = "ans", "apcie0";
109      resets = <&ps_ans2>;
110    };
111