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