Linux Sound subsystem development
 help / color / mirror / Atom feed
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, broonie@kernel.org
Cc: wenst@chromium.org, lgirdwood@gmail.com, robh@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org,
	matthias.bgg@gmail.com, perex@perex.cz, tiwai@suse.com,
	trevor.wu@mediatek.com, maso.huang@mediatek.com,
	xiazhengqiao@huaqin.corp-partner.google.com, arnd@arndb.de,
	kuninori.morimoto.gx@renesas.com, shraash@google.com,
	amergnat@baylibre.com, nicolas.ferre@microchip.com,
	u.kleine-koenig@pengutronix.de, dianders@chromium.org,
	frank.li@vivo.com, allen-kh.cheng@mediatek.com,
	eugen.hristev@collabora.com, claudiu.beznea@tuxon.dev,
	jarkko.nikula@bitmer.com, jiaxin.yu@mediatek.com,
	alpernebiyasak@gmail.com, ckeepax@opensource.cirrus.com,
	zhourui@huaqin.corp-partner.google.com, nfraprado@collabora.com,
	alsa-devel@alsa-project.org, shane.chien@mediatek.com,
	linux-sound@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, kernel@collabora.com
Subject: Re: [PATCH 18/22] ASoC: dt-bindings: mt8195: Document audio-routing and dai-link subnode
Date: Thu, 29 Feb 2024 10:10:51 +0100	[thread overview]
Message-ID: <37181fc1-a485-427c-b3d2-2fcfb192e6e9@collabora.com> (raw)
In-Reply-To: <32ff2f66-7a94-41ed-b77b-f78da2e57446@linaro.org>

Il 29/02/24 09:25, Krzysztof Kozlowski ha scritto:
> On 27/02/2024 13:09, AngeloGioacchino Del Regno wrote:
>> Document the dai-link subnodes and the audio-routing property, allowing
>> to describe machine specific audio hardware and links in device tree.
>>
>> While at it, also deprecate the old properties which were previously
>> used with driver hardcoded configuration.
>>
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> ---
> 
> 
>>   
>>     mediatek,adsp:
>>       $ref: /schemas/types.yaml#/definitions/phandle
>> @@ -45,12 +56,75 @@ properties:
>>         A list of the desired dai-links in the sound card. Each entry is a
>>         name defined in the machine driver.
>>   
>> +patternProperties:
>> +  ".*-dai-link$":
>> +    type: object
>> +    description:
>> +      Container for dai-link level properties and CODEC sub-nodes.
>> +
>> +    properties:
>> +      link-name:
>> +        description: Indicates dai-link name and PCM stream name
>> +        items:
> 
> That's not a list, but just enum.
> 

Ok! Will change for v2.

>> +          enum:
>> +            - DPTX_BE
>> +            - ETDM1_IN_BE
>> +            - ETDM2_IN_BE
>> +            - ETDM1_OUT_BE
>> +            - ETDM2_OUT_BE
>> +            - ETDM3_OUT_BE
>> +            - PCM1_BE
>> +
>> +      codec:
>> +        description: Holds subnode which indicates codec dai.
>> +        type: object
>> +        additionalProperties: false
>> +        properties:
>> +          sound-dai:
>> +            minItems: 1
>> +            maxItems: 2
>> +        required:
>> +          - sound-dai
>> +
>> +      dai-format:
>> +        description: audio format
>> +        items:
> 
> Ditto
> 
>> +          enum:
>> +            - i2s
>> +            - right_j
>> +            - left_j
>> +            - dsp_a
>> +            - dsp_b
>> +
>> +      mediatek,clk-provider:
>> +        $ref: /schemas/types.yaml#/definitions/string
>> +        description: Indicates dai-link clock master.
>> +        items:
> 
> Ditto
> 
>> +          enum:
>> +            - cpu
>> +            - codec
>> +
>> +    additionalProperties: false
> 
> This goes either to the top of the section (after type:object) for
> readability or after required: block below.
> 

I think I actually saw this in some other binding, that's why it's there... or
maybe I am confusing something else - whatever.

I'll move it, anyway - thanks

>> +
>> +    required:
>> +      - link-name
>> +
>>   additionalProperties: false
> 
>>   
>>   required:
>>     - compatible
>>     - mediatek,platform
>>   
>> +# Disallow legacy properties if dai-link-xxx nodes are specified
>> +if:
>> +  not:
> 
> I don't think this works. To test if node is present or node, you would
> need to use required.
> https://elixir.bootlin.com/linux/v6.4-rc7/source/Documentation/devicetree/bindings/net/qcom,ipa.yaml#L174
> 
> Are you sure this if:then: works as expected?
> 

Honestly, coming up with something that worked took me almost a full hour.
I was going a bit crazy over this one :-)

btw - Yes, it does work.

If you wanna give it a shot too, patch 21 and 22 are introducing the audio-routing
and (x)-dai-link nodes in (respectively) mt8195-cherry.dtsi and mt8186-corsola.dtsi
devicetrees - and those do validate just fine both with and without those patches.

I also tested this by adding the forbidden dptx-codec/hdmi-codec properties along
with the dai-link nodes in the example of this yaml file, and I've verified that
adding those makes the validation fail as expected.

Exactly, this is what I want and also what I've tested with dtbs/dt_binding_check:

fmt: (test nodes/properties) <- (result)

x-dai-link { ... }; mediatek,dptx-codec = <...>; <- FAIL (OK)
x-dai-link { ... }; mediatek,hdmi-codec = <...>; <- FAIL (OK)
x-dai-link { ... }; mediatek,dptx-codec = ..; mediatek,hdmi-codec .. <- FAIL (OK)

x-dai-link { ... }; (none of those two) <- PASS (OK)

(NO x-dai-link) mediatek,dptx-codec = <...> <- PASS (OK)
(NO x-dai-link) mediatek,hdmi-codec = <...> <- PASS (OK)
(NO x-dai-link) mediatek,dptx-codec = <...> mediatek,hdmi-codec = <...> <- PASS(OK)

...and of course, also tested the easy part
dai-link-x { ... }; <- FAIL (OK)    :-)

Cheers,
Angelo

> 
>> +    patternProperties:
>> +      ".*-dai-link$": false
>> +then:
>> +  properties:
>> +    mediatek,dptx-codec: false
>> +    mediatek,hdmi-codec: false
>> +
>>   examples:
>>     - |
>>   
> 
> 
> Best regards,
> Krzysztof
> 




  reply	other threads:[~2024-02-29  9:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-27 12:09 [PATCH 00/22] ASoC: Cleanup MediaTek soundcard machine drivers AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 01/22] ASoC: mediatek: mt8192-afe-pcm: Convert to devm_pm_runtime_enable() AngeloGioacchino Del Regno
2024-02-29  3:23   ` Chen-Yu Tsai
2024-02-27 12:09 ` [PATCH 02/22] ASoC: mediatek: mt8192-afe-pcm: Simplify with dev_err_probe() AngeloGioacchino Del Regno
2024-02-29  3:25   ` Chen-Yu Tsai
2024-02-27 12:09 ` [PATCH 03/22] ASoC: mediatek: Commonize ADDA rate transform functions and enums AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 04/22] ASoC: mediatek: Assign dummy when codec not specified for a DAI link AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 05/22] ASoC: mediatek: Add common machine soundcard driver probe mechanism AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 06/22] ASoC: mediatek: common: Constify struct mtk_sof_priv AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 07/22] ASoC: mediatek: mt8188: Migrate to mtk_soundcard_common_probe AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 08/22] ASoC: mediatek: mt8195: " AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 09/22] ASoC: mediatek: mt8192: " AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 10/22] ASoC: mediatek: mt8186: " AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 11/22] ASoC: mediatek: Add common snd_soc_ops .startup() callback AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 12/22] ASoC: mediatek: mt8195: Migrate to the common mtk_soundcard_startup AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 13/22] ASoC: mediatek: mt8192: " AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 14/22] ASoC: mediatek: mt8186-rt1019: " AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 15/22] ASoC: mediatek: Add common mtk_afe_component_probe callback AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 16/22] ASoC: mediatek: Use common mtk_afe_pcm_platform with common probe cb AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 17/22] ASoC: mediatek: mt8186: Unify mt8186-mt6366 machine drivers AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 18/22] ASoC: dt-bindings: mt8195: Document audio-routing and dai-link subnode AngeloGioacchino Del Regno
2024-02-29  8:25   ` Krzysztof Kozlowski
2024-02-29  9:10     ` AngeloGioacchino Del Regno [this message]
2024-02-27 12:09 ` [PATCH 19/22] ASoC: dt-bindings: mt8192: " AngeloGioacchino Del Regno
2024-03-04 14:23   ` Rob Herring
2024-03-05 11:20     ` AngeloGioacchino Del Regno
2024-03-07 14:03       ` Rob Herring
2024-03-07 14:26         ` AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 20/22] ASoC: dt-bindings: mt8186: " AngeloGioacchino Del Regno
2024-03-04 14:24   ` Rob Herring
2024-02-27 12:09 ` [PATCH 21/22] arm64: dts: mediatek: mt8195-cherry: Specify sound DAI links and routing AngeloGioacchino Del Regno
2024-02-27 12:09 ` [PATCH 22/22] arm64: dts: mediatek: mt8186-corsola: " AngeloGioacchino Del Regno

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=37181fc1-a485-427c-b3d2-2fcfb192e6e9@collabora.com \
    --to=angelogioacchino.delregno@collabora.com \
    --cc=allen-kh.cheng@mediatek.com \
    --cc=alpernebiyasak@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=amergnat@baylibre.com \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=eugen.hristev@collabora.com \
    --cc=frank.li@vivo.com \
    --cc=jarkko.nikula@bitmer.com \
    --cc=jiaxin.yu@mediatek.com \
    --cc=kernel@collabora.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=maso.huang@mediatek.com \
    --cc=matthias.bgg@gmail.com \
    --cc=nfraprado@collabora.com \
    --cc=nicolas.ferre@microchip.com \
    --cc=perex@perex.cz \
    --cc=robh@kernel.org \
    --cc=shane.chien@mediatek.com \
    --cc=shraash@google.com \
    --cc=tiwai@suse.com \
    --cc=trevor.wu@mediatek.com \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=wenst@chromium.org \
    --cc=xiazhengqiao@huaqin.corp-partner.google.com \
    --cc=zhourui@huaqin.corp-partner.google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox