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