xref: /freebsd/sys/contrib/device-tree/Bindings/sound/mchp,i2s-mcc.yaml (revision 8bab661a3316d8bd9b9fbd11a3b4371b91507bd2)
12eb4d8dcSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
22eb4d8dcSEmmanuel Vadot%YAML 1.2
32eb4d8dcSEmmanuel Vadot---
42eb4d8dcSEmmanuel Vadot$id: http://devicetree.org/schemas/sound/mchp,i2s-mcc.yaml#
52eb4d8dcSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
62eb4d8dcSEmmanuel Vadot
72eb4d8dcSEmmanuel Vadottitle: Microchip I2S Multi-Channel Controller
82eb4d8dcSEmmanuel Vadot
92eb4d8dcSEmmanuel Vadotmaintainers:
102eb4d8dcSEmmanuel Vadot  - Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
112eb4d8dcSEmmanuel Vadot
122eb4d8dcSEmmanuel Vadotdescription:
132eb4d8dcSEmmanuel Vadot  The I2SMCC complies with the Inter-IC Sound (I2S) bus specification and
142eb4d8dcSEmmanuel Vadot  supports a Time Division Multiplexed (TDM) interface with external
152eb4d8dcSEmmanuel Vadot  multi-channel audio codecs. It consists of a receiver, a transmitter and a
162eb4d8dcSEmmanuel Vadot  common clock generator that can be enabled separately to provide Adapter,
172eb4d8dcSEmmanuel Vadot  Client or Controller modes with receiver and/or transmitter active.
182eb4d8dcSEmmanuel Vadot  On later I2SMCC versions (starting with Microchip's SAMA7G5) I2S
192eb4d8dcSEmmanuel Vadot  multi-channel is supported by using multiple data pins, output and
202eb4d8dcSEmmanuel Vadot  input, without TDM.
212eb4d8dcSEmmanuel Vadot
222eb4d8dcSEmmanuel Vadotproperties:
232eb4d8dcSEmmanuel Vadot  "#sound-dai-cells":
242eb4d8dcSEmmanuel Vadot    const: 0
252eb4d8dcSEmmanuel Vadot
262eb4d8dcSEmmanuel Vadot  compatible:
272eb4d8dcSEmmanuel Vadot    enum:
282eb4d8dcSEmmanuel Vadot      - microchip,sam9x60-i2smcc
292eb4d8dcSEmmanuel Vadot      - microchip,sama7g5-i2smcc
302eb4d8dcSEmmanuel Vadot
312eb4d8dcSEmmanuel Vadot  reg:
322eb4d8dcSEmmanuel Vadot    maxItems: 1
332eb4d8dcSEmmanuel Vadot
342eb4d8dcSEmmanuel Vadot  interrupts:
352eb4d8dcSEmmanuel Vadot    maxItems: 1
362eb4d8dcSEmmanuel Vadot
372eb4d8dcSEmmanuel Vadot  clocks:
382eb4d8dcSEmmanuel Vadot    items:
392eb4d8dcSEmmanuel Vadot      - description: Peripheral Bus Clock
402eb4d8dcSEmmanuel Vadot      - description: Generic Clock (Optional). Should be set mostly when Master
412eb4d8dcSEmmanuel Vadot          Mode is required.
422eb4d8dcSEmmanuel Vadot    minItems: 1
432eb4d8dcSEmmanuel Vadot
442eb4d8dcSEmmanuel Vadot  clock-names:
452eb4d8dcSEmmanuel Vadot    items:
462eb4d8dcSEmmanuel Vadot      - const: pclk
472eb4d8dcSEmmanuel Vadot      - const: gclk
482eb4d8dcSEmmanuel Vadot    minItems: 1
492eb4d8dcSEmmanuel Vadot
502eb4d8dcSEmmanuel Vadot  dmas:
512eb4d8dcSEmmanuel Vadot    items:
522eb4d8dcSEmmanuel Vadot      - description: TX DMA Channel
532eb4d8dcSEmmanuel Vadot      - description: RX DMA Channel
542eb4d8dcSEmmanuel Vadot
552eb4d8dcSEmmanuel Vadot  dma-names:
562eb4d8dcSEmmanuel Vadot    items:
572eb4d8dcSEmmanuel Vadot      - const: tx
582eb4d8dcSEmmanuel Vadot      - const: rx
592eb4d8dcSEmmanuel Vadot
602eb4d8dcSEmmanuel Vadot  microchip,tdm-data-pair:
612eb4d8dcSEmmanuel Vadot    description:
622eb4d8dcSEmmanuel Vadot      Represents the DIN/DOUT pair pins that are used to receive/send
632eb4d8dcSEmmanuel Vadot      TDM data. It is optional and it is only needed if the controller
642eb4d8dcSEmmanuel Vadot      uses the TDM mode.
652eb4d8dcSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint8
662eb4d8dcSEmmanuel Vadot    enum: [0, 1, 2, 3]
672eb4d8dcSEmmanuel Vadot    default: 0
682eb4d8dcSEmmanuel Vadot
69*8bab661aSEmmanuel VadotallOf:
70*8bab661aSEmmanuel Vadot  - $ref: dai-common.yaml#
71*8bab661aSEmmanuel Vadot  - if:
722eb4d8dcSEmmanuel Vadot      properties:
732eb4d8dcSEmmanuel Vadot        compatible:
742eb4d8dcSEmmanuel Vadot          const: microchip,sam9x60-i2smcc
752eb4d8dcSEmmanuel Vadot    then:
762eb4d8dcSEmmanuel Vadot      properties:
772eb4d8dcSEmmanuel Vadot        microchip,tdm-data-pair: false
782eb4d8dcSEmmanuel Vadot
792eb4d8dcSEmmanuel Vadotrequired:
802eb4d8dcSEmmanuel Vadot  - "#sound-dai-cells"
812eb4d8dcSEmmanuel Vadot  - compatible
822eb4d8dcSEmmanuel Vadot  - reg
832eb4d8dcSEmmanuel Vadot  - interrupts
842eb4d8dcSEmmanuel Vadot  - clocks
852eb4d8dcSEmmanuel Vadot  - clock-names
862eb4d8dcSEmmanuel Vadot  - dmas
872eb4d8dcSEmmanuel Vadot  - dma-names
882eb4d8dcSEmmanuel Vadot
89*8bab661aSEmmanuel VadotunevaluatedProperties: false
902eb4d8dcSEmmanuel Vadot
912eb4d8dcSEmmanuel Vadotexamples:
922eb4d8dcSEmmanuel Vadot  - |
932eb4d8dcSEmmanuel Vadot    #include <dt-bindings/dma/at91.h>
942eb4d8dcSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
952eb4d8dcSEmmanuel Vadot
962eb4d8dcSEmmanuel Vadot    i2s@f001c000 {
972eb4d8dcSEmmanuel Vadot        #sound-dai-cells = <0>;
982eb4d8dcSEmmanuel Vadot        compatible = "microchip,sam9x60-i2smcc";
992eb4d8dcSEmmanuel Vadot        reg = <0xf001c000 0x100>;
1002eb4d8dcSEmmanuel Vadot        interrupts = <34 IRQ_TYPE_LEVEL_HIGH 7>;
1012eb4d8dcSEmmanuel Vadot        dmas = <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
1022eb4d8dcSEmmanuel Vadot                       AT91_XDMAC_DT_PERID(36))>,
1032eb4d8dcSEmmanuel Vadot               <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
1042eb4d8dcSEmmanuel Vadot                       AT91_XDMAC_DT_PERID(37))>;
1052eb4d8dcSEmmanuel Vadot        dma-names = "tx", "rx";
1062eb4d8dcSEmmanuel Vadot        clocks = <&i2s_clk>, <&i2s_gclk>;
1072eb4d8dcSEmmanuel Vadot        clock-names = "pclk", "gclk";
1082eb4d8dcSEmmanuel Vadot        pinctrl-names = "default";
1092eb4d8dcSEmmanuel Vadot        pinctrl-0 = <&pinctrl_i2s_default>;
1102eb4d8dcSEmmanuel Vadot    };
111