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      - const: apple,mca
27
28  reg:
29    items:
30      - description: Register region of the MCA clusters proper
31      - description: Register region of the DMA glue and its FIFOs
32
33  interrupts:
34    minItems: 4
35    maxItems: 6
36    description:
37      One interrupt per each cluster
38
39  '#address-cells':
40    const: 1
41
42  '#size-cells':
43    const: 0
44
45  dmas:
46    minItems: 16
47    maxItems: 24
48    description:
49      DMA channels corresponding to the SERDES units in the peripheral. They are
50      listed in groups of four per cluster, and within the group they are given
51      as associated to the TXA, RXA, TXB, RXB units.
52
53  dma-names:
54    minItems: 16
55    items:
56      - const: tx0a
57      - const: rx0a
58      - const: tx0b
59      - const: rx0b
60      - const: tx1a
61      - const: rx1a
62      - const: tx1b
63      - const: rx1b
64      - const: tx2a
65      - const: rx2a
66      - const: tx2b
67      - const: rx2b
68      - const: tx3a
69      - const: rx3a
70      - const: tx3b
71      - const: rx3b
72      - const: tx4a
73      - const: rx4a
74      - const: tx4b
75      - const: rx4b
76      - const: tx5a
77      - const: rx5a
78      - const: tx5b
79      - const: rx5b
80    description: |
81      Names for the DMA channels: 'tx'/'rx', then cluster number, then 'a'/'b'
82      based on the associated SERDES unit.
83
84  clocks:
85    minItems: 4
86    maxItems: 6
87    description:
88      Clusters' input reference clock.
89
90  resets:
91    maxItems: 1
92
93  power-domains:
94    minItems: 5
95    maxItems: 7
96    description:
97      First a general power domain for register access, then the power
98      domains of individual clusters for their operation.
99
100  '#sound-dai-cells':
101    const: 1
102
103required:
104  - compatible
105  - reg
106  - dmas
107  - dma-names
108  - clocks
109  - power-domains
110  - '#sound-dai-cells'
111
112unevaluatedProperties: false
113
114examples:
115  - |
116    mca: i2s@9b600000 {
117      compatible = "apple,t6000-mca", "apple,mca";
118      reg = <0x9b600000 0x10000>,
119            <0x9b200000 0x20000>;
120
121      clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>;
122      power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
123                      <&ps_mca2>, <&ps_mca3>;
124      dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
125             <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
126             <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
127             <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>;
128      dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
129                  "tx1a", "rx1a", "tx1b", "rx1b",
130                  "tx2a", "rx2a", "tx2b", "rx2b",
131                  "tx3a", "rx3a", "tx3b", "rx3b";
132
133      #sound-dai-cells = <1>;
134    };
135