On 9/17/19 3:05 PM, Rob Herring wrote: > On Tue, Sep 17, 2019 at 7:05 AM Maciej Falkowski > <m.falkowski@xxxxxxxxxxx> wrote: >> Convert Samsung I2S controller to newer dt-schema format. >> >> Signed-off-by: Maciej Falkowski <m.falkowski@xxxxxxxxxxx> >> Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> >> --- >> v2: >> - Added missing Signed-off-by certificate >> --- >> .../devicetree/bindings/sound/samsung-i2s.txt | 84 ------------- >> .../bindings/sound/samsung-i2s.yaml | 119 ++++++++++++++++++ >> 2 files changed, 119 insertions(+), 84 deletions(-) >> delete mode 100644 Documentation/devicetree/bindings/sound/samsung-i2s.txt >> create mode 100644 Documentation/devicetree/bindings/sound/samsung-i2s.yaml >> diff --git a/Documentation/devicetree/bindings/sound/samsung-i2s.yaml b/Documentation/devicetree/bindings/sound/samsung-i2s.yaml >> new file mode 100644 >> index 000000000000..59dc76035cb4 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/sound/samsung-i2s.yaml >> @@ -0,0 +1,119 @@ >> +# SPDX-License-Identifier: GPL-2.0 >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/sound/samsung-i2s.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Samsung SoC I2S controller >> + >> +maintainers: >> + - Krzysztof Kozlowski <krzk@xxxxxxxxxx> >> + - Sangbeom Kim <sbkim73@xxxxxxxxxxx> >> + - Sylwester Nawrocki <s.nawrocki@xxxxxxxxxxx> >> + >> +properties: >> + compatible: >> + description: | >> + samsung,s3c6410-i2s: for 8/16/24bit stereo I2S. >> + >> + samsung,s5pv210-i2s: for 8/16/24bit multichannel(5.1) I2S with >> + secondary fifo, s/w reset control and internal mux for root clk src. >> + >> + samsung,exynos5420-i2s: for 8/16/24bit multichannel(5.1) I2S for >> + playback, stereo channel capture, secondary fifo using internal >> + or external dma, s/w reset control, internal mux for root clk src >> + and 7.1 channel TDM support for playback. TDM (Time division multiplexing) >> + is to allow transfer of multiple channel audio data on single data line. >> + >> + samsung,exynos7-i2s: with all the available features of exynos5 i2s. >> + >> + exynos7 I2S has 7.1 channel TDM support for capture, secondary fifo >> + with only external dma and more no.of root clk sampling frequencies. >> + >> + samsung,exynos7-i2s1: I2S1 on previous samsung platforms supports >> + stereo channels. exynos7 i2s1 upgraded to 5.1 multichannel with >> + slightly modified bit offsets. >> + enum: >> + - "samsung,s3c6410-i2s" >> + - "samsung,s5pv210-i2s" >> + - "samsung,exynos5420-i2s" >> + - "samsung,exynos7-i2s" >> + - "samsung,exynos7-i2s1" > No need for quotes here. > >> + >> + reg: >> + maxItems: 1 >> + >> + dmas: >> + description: list of DMA controller phandle and DMA request line ordered pairs. > How many? Hi Rob, I have one problem with determining size of dmas. It seems that there are only two options for dmas: tx, rx or tx, rx, tx-sec. It looks like minItems should be two and maxItems should be three. However, some of bindings have different definition of dmas. When there is: dmas = <&pdma0 10 &pdma0 9 &pdma0 8>; the number of Items for dmas is one, when there is: dmas = <&pdma0 10>, <&pdma0 9>, <&pdma0 8>; the number of Items is three. Both of these are equal from perspective of dtc, however from schema point of view, they have different size. What is a proper solution to this kind of problem? Best regards, Maciej Falkowski >> + >> + dma-names: >> + description: | >> + identifier string for each DMA request line in the dmas property. >> + These strings correspond 1:1 with the ordered pairs in dmas. >> + >> + clocks: >> + minItems: 1 >> + maxItems: 3 >> + >> + clock-names: >> + oneOf: >> + - items: >> + - const: iis >> + - items: >> + - const: iis >> + - const: i2s_opclk0 >> + - items: >> + - const: iis >> + - const: i2s_opclk0 >> + - const: i2s_opclk1 >> + description: | >> + "iis" is the i2s bus clock. >> + For i2s1 and i2s2 - "iis", "i2s_opclk0" >> + For i2s0 - "iis", "i2s_opclk0", "i2s_opclk1" >> + >> + "#clock-cells": >> + const: 1 >> + >> + samsung,idma-addr: >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + description: | >> + Internal DMA register base address of the audio >> + sub system(used in secondary sound source). >> + >> + pinctrl-0: >> + description: Should specify pin control groups used for this controller. >> + >> + pinctrl-names: >> + const: default >> + >> + "#sound-dai-cells": >> + const: 1 >> + >> +required: >> + - compatible >> + - reg >> + - dmas >> + - dma-names >> + - clocks >> + - clock-names >> + >> +examples: >> + - | >> + i2s0: i2s@3830000 { >> + compatible = "samsung,s5pv210-i2s"; >> + reg = <0x03830000 0x100>; >> + dmas = <&pdma0 10 >> + &pdma0 9 >> + &pdma0 8>; >> + dma-names = "tx", "rx", "tx-sec"; >> + clocks = <&clock_audss 0>, // EXYNOS_I2S_BUS >> + <&clock_audss 0>, // EXYNOS_I2S_BUS >> + <&clock_audss 0>; // EXYNOS_SCLK_I2S >> + clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; >> + #clock-cells = <1>; >> + samsung,idma-addr = <0x03000000>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&i2s0_bus>; >> + #sound-dai-cells = <1>; >> + }; >> + >> -- >> 2.17.1 >> >