Documentation / devicetree / bindings / sound / st,stm32-i2s.yaml


Based on kernel version 6.14. Page generated on 2025-04-02 08:20 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/st,stm32-i2s.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: STMicroelectronics STM32 SPI/I2S Controller

maintainers:
  - Olivier Moysan <olivier.moysan@foss.st.com>

description:
  The SPI/I2S block supports I2S/PCM protocols when configured on I2S mode.
  Only some SPI instances support I2S.

properties:
  compatible:
    enum:
      - st,stm32h7-i2s
      - st,stm32mp25-i2s
 
  "#sound-dai-cells":
    const: 0

  reg:
    maxItems: 1

  clocks:
    items:
      - description: clock feeding the peripheral bus interface.
      - description: clock feeding the internal clock generator.
      - description: I2S parent clock for sampling rates multiple of 8kHz.
      - description: I2S parent clock for sampling rates multiple of 11.025kHz.
    minItems: 2

  clock-names:
    items:
      - const: pclk
      - const: i2sclk
      - const: x8k
      - const: x11k
    minItems: 2

  interrupts:
    maxItems: 1

  dmas:
    items:
      - description: audio capture DMA.
      - description: audio playback DMA.

  dma-names:
    items:
      - const: rx
      - const: tx

  resets:
    maxItems: 1
 
  "#clock-cells":
    description: Configure the I2S device as MCLK clock provider.
    const: 0

  port:
    $ref: audio-graph-port.yaml#
    unevaluatedProperties: false

  access-controllers:
    minItems: 1
    maxItems: 2

required:
  - compatible
  - "#sound-dai-cells"
  - reg
  - clocks
  - clock-names
  - interrupts
  - dmas
  - dma-names

allOf:
  - $ref: dai-common.yaml#
  - if:
      properties:
        compatible:
          contains:
            const: st,stm32h7-i2s

    then:
      properties:
        clocks:
          minItems: 4

        clock-names:
          minItems: 4

  - if:
      properties:
        compatible:
          contains:
            const: st,stm32mp25-i2s

    then:
      properties:
        clocks:
          maxItems: 2

        clock-names:
          maxItems: 2

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/stm32mp1-clks.h>
    i2s2: audio-controller@4000b000 {
        compatible = "st,stm32h7-i2s";
        #sound-dai-cells = <0>;
        reg = <0x4000b000 0x400>;
        clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
        clock-names = "pclk", "i2sclk", "x8k", "x11k";
        interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
        dmas = <&dmamux1 39 0x400 0x01>,
               <&dmamux1 40 0x400 0x01>;
        dma-names = "rx", "tx";
        pinctrl-names = "default";
        pinctrl-0 = <&i2s2_pins_a>;
 
        /* assume audio-graph */
        port {
            codec_endpoint: endpoint {
                remote-endpoint = <&codec_endpoint>;
            };
        };
    };

...