[alsa-devel] [PATCH v2 1/2] dt-bindings: sound: Convert Samsung I2S controller to dt-schema

Maciej Falkowski m.falkowski at samsung.com
Wed Sep 18 12:08:25 CEST 2019


On 9/17/19 3:05 PM, Rob Herring wrote:

> On Tue, Sep 17, 2019 at 7:05 AM Maciej Falkowski
> <m.falkowski at samsung.com> wrote:
>> Convert Samsung I2S controller to newer dt-schema format.
>>
>> Signed-off-by: Maciej Falkowski <m.falkowski at samsung.com>
>> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
>> ---
>> 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 at kernel.org>
>> +  - Sangbeom Kim <sbkim73 at samsung.com>
>> +  - Sylwester Nawrocki <s.nawrocki at samsung.com>
>> +
>> +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 at 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
>>
>


More information about the Alsa-devel mailing list