1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/apple,mca.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Apple MCA I2S transceiver
8
9description: |
10  MCA is an I2S transceiver peripheral found on M1 and other Apple chips. It is
11  composed of a number of identical clusters which can operate independently
12  or in an interlinked fashion. Up to 6 clusters have been seen on an MCA.
13
14maintainers:
15  - Martin Povišer <povik+lin@cutebit.org>
16
17allOf:
18  - $ref: dai-common.yaml#
19
20properties:
21  compatible:
22    items:
23      - enum:
24          - apple,t6000-mca
25          - apple,t8103-mca
26          - apple,t8112-mca
27      - const: apple,mca
28
29  reg:
30    items:
31      - description: Register region of the MCA clusters proper
32      - description: Register region of the DMA glue and its FIFOs
33
34  interrupts:
35    minItems: 4
36    maxItems: 6
37    description:
38      One interrupt per each cluster
39
40  '#address-cells':
41    const: 1
42
43  '#size-cells':
44    const: 0
45
46  dmas:
47    minItems: 16
48    maxItems: 24
49    description:
50      DMA channels corresponding to the SERDES units in the peripheral. They are
51      listed in groups of four per cluster, and within the group they are given
52      as associated to the TXA, RXA, TXB, RXB units.
53
54  dma-names:
55    minItems: 16
56    items:
57      - const: tx0a
58      - const: rx0a
59      - const: tx0b
60      - const: rx0b
61      - const: tx1a
62      - const: rx1a
63      - const: tx1b
64      - const: rx1b
65      - const: tx2a
66      - const: rx2a
67      - const: tx2b
68      - const: rx2b
69      - const: tx3a
70      - const: rx3a
71      - const: tx3b
72      - const: rx3b
73      - const: tx4a
74      - const: rx4a
75      - const: tx4b
76      - const: rx4b
77      - const: tx5a
78      - const: rx5a
79      - const: tx5b
80      - const: rx5b
81    description: |
82      Names for the DMA channels: 'tx'/'rx', then cluster number, then 'a'/'b'
83      based on the associated SERDES unit.
84
85  clocks:
86    minItems: 4
87    maxItems: 6
88    description:
89      Clusters' input reference clock.
90
91  resets:
92    maxItems: 1
93
94  power-domains:
95    minItems: 5
96    maxItems: 7
97    description:
98      First a general power domain for register access, then the power
99      domains of individual clusters for their operation.
100
101  '#sound-dai-cells':
102    const: 1
103
104required:
105  - compatible
106  - reg
107  - dmas
108  - dma-names
109  - clocks
110  - power-domains
111  - '#sound-dai-cells'
112
113unevaluatedProperties: false
114
115examples:
116  - |
117    mca: i2s@9b600000 {
118      compatible = "apple,t6000-mca", "apple,mca";
119      reg = <0x9b600000 0x10000>,
120            <0x9b200000 0x20000>;
121
122      clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>;
123      power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
124                      <&ps_mca2>, <&ps_mca3>;
125      dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
126             <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
127             <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
128             <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>;
129      dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
130                  "tx1a", "rx1a", "tx1b", "rx1b",
131                  "tx2a", "rx2a", "tx2b", "rx2b",
132                  "tx3a", "rx3a", "tx3b", "rx3b";
133
134      #sound-dai-cells = <1>;
135    };
136