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