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