Merge tag 'block-6.13-20242901' of git://git.kernel.dk/linux
[drm/drm-misc.git] / Documentation / devicetree / bindings / sound / microchip,sama7g5-i2smcc.yaml
blobfb630a184350bdcc1ce9401066ad86903d78526f
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/sound/microchip,sama7g5-i2smcc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Microchip I2S Multi-Channel Controller
9 maintainers:
10   - Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
12 description:
13   The I2SMCC complies with the Inter-IC Sound (I2S) bus specification and
14   supports a Time Division Multiplexed (TDM) interface with external
15   multi-channel audio codecs. It consists of a receiver, a transmitter and a
16   common clock generator that can be enabled separately to provide Adapter,
17   Client or Controller modes with receiver and/or transmitter active.
18   On later I2SMCC versions (starting with Microchip's SAMA7G5) I2S
19   multi-channel is supported by using multiple data pins, output and
20   input, without TDM.
22 properties:
23   "#sound-dai-cells":
24     const: 0
26   compatible:
27     oneOf:
28       - enum:
29           - microchip,sam9x60-i2smcc
30           - microchip,sama7g5-i2smcc
31       - items:
32           - enum:
33               - microchip,sam9x7-i2smcc
34           - const: microchip,sam9x60-i2smcc
36   reg:
37     maxItems: 1
39   interrupts:
40     maxItems: 1
42   clocks:
43     items:
44       - description: Peripheral Bus Clock
45       - description: Generic Clock (Optional). Should be set mostly when Master
46           Mode is required.
47     minItems: 1
49   clock-names:
50     items:
51       - const: pclk
52       - const: gclk
53     minItems: 1
55   dmas:
56     items:
57       - description: TX DMA Channel
58       - description: RX DMA Channel
60   dma-names:
61     items:
62       - const: tx
63       - const: rx
65   microchip,tdm-data-pair:
66     description:
67       Represents the DIN/DOUT pair pins that are used to receive/send
68       TDM data. It is optional and it is only needed if the controller
69       uses the TDM mode.
70     $ref: /schemas/types.yaml#/definitions/uint8
71     enum: [0, 1, 2, 3]
72     default: 0
74 allOf:
75   - $ref: dai-common.yaml#
76   - if:
77       properties:
78         compatible:
79           const: microchip,sam9x60-i2smcc
80     then:
81       properties:
82         microchip,tdm-data-pair: false
84 required:
85   - "#sound-dai-cells"
86   - compatible
87   - reg
88   - interrupts
89   - clocks
90   - clock-names
91   - dmas
92   - dma-names
94 unevaluatedProperties: false
96 examples:
97   - |
98     #include <dt-bindings/dma/at91.h>
99     #include <dt-bindings/interrupt-controller/arm-gic.h>
101     i2s@f001c000 {
102         #sound-dai-cells = <0>;
103         compatible = "microchip,sam9x60-i2smcc";
104         reg = <0xf001c000 0x100>;
105         interrupts = <34 IRQ_TYPE_LEVEL_HIGH 7>;
106         dmas = <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
107                        AT91_XDMAC_DT_PERID(36))>,
108                <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
109                        AT91_XDMAC_DT_PERID(37))>;
110         dma-names = "tx", "rx";
111         clocks = <&i2s_clk>, <&i2s_gclk>;
112         clock-names = "pclk", "gclk";
113         pinctrl-names = "default";
114         pinctrl-0 = <&pinctrl_i2s_default>;
115     };