summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/sound/st,stm32-i2s.yaml
blob: b4f44f9c7c7d0fd9c8079e8b30e5b8bf87d4323d (plain)
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>;
            };
        };
    };

...