From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Rob Herring <robh@kernel.org>
Cc: broonie@kernel.org, wenst@chromium.org, lgirdwood@gmail.com,
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 19/22] ASoC: dt-bindings: mt8192: Document audio-routing and dai-link subnode
Date: Thu, 7 Mar 2024 15:26:12 +0100 [thread overview]
Message-ID: <7fa3cd50-4603-4983-8396-ec8c90fd43fa@collabora.com> (raw)
In-Reply-To: <CAL_JsqLNsS_Rx5z5F1vrYbr2g+5-wGYOq6mhtfUd7Db11F0W+Q@mail.gmail.com>
Il 07/03/24 15:03, Rob Herring ha scritto:
> On Tue, Mar 5, 2024 at 5:20 AM AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com> wrote:
>>
>> Il 04/03/24 15:23, Rob Herring ha scritto:
>>> On Tue, Feb 27, 2024 at 01:09:36PM +0100, 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 the driver's partially hardcoded configuration.
>>>>
>>>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>>>> ---
>>>> .../sound/mt8192-mt6359-rt1015-rt5682.yaml | 129 ++++++++++++++++--
>>>> 1 file changed, 121 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/sound/mt8192-mt6359-rt1015-rt5682.yaml b/Documentation/devicetree/bindings/sound/mt8192-mt6359-rt1015-rt5682.yaml
>>>> index 7e50f5d65c8f..78e221003750 100644
>>>> --- a/Documentation/devicetree/bindings/sound/mt8192-mt6359-rt1015-rt5682.yaml
>>>> +++ b/Documentation/devicetree/bindings/sound/mt8192-mt6359-rt1015-rt5682.yaml
>>>> @@ -20,6 +20,15 @@ properties:
>>>> - mediatek,mt8192_mt6359_rt1015p_rt5682
>>>> - mediatek,mt8192_mt6359_rt1015p_rt5682s
>>>>
>>>> + audio-routing:
>>>> + $ref: /schemas/types.yaml#/definitions/non-unique-string-array
>>>
>>> Already defined in sound-card-common.yaml. Add a $ref.
>>>
>>
>> Right. Done for v2.
>>
>>>> + description:
>>>> + A list of the connections between audio components. Each entry is a
>>>> + pair of strings, the first being the connection's sink, the second
>>>> + being the connection's source.
>>>> + Valid names could be the input or output widgets of audio components,
>>>> + power supplies, MicBias of codec and the software switch.
>>>
>>> Generally the names are defined here.
>>>
>>
>> ...but those drivers want to support multiple codecs and multiple boards, so
>> for each board we would maybe have to add (software defined) names in here
>> which don't always correspond to a HW pin name (but that's not really a problem).
>>
>> Sure a subset of the names can't change but, on the other hand, some others
>> can (as in, may be added).
>>
>> Hence the question:
>>
>> Is it mandatory to define the names in an enum here, or can that be avoided?
>> If it is, I can add them no problem.
>
> Does the OS depend on what the names are? As-in if a name was "bar"
> and it changed to "baz" in either the DT or the kernel, would that
> break things? If yes, then yes, you need them defined here.
>
Yes, I need them defined here, definitely.
>>
>>>> +
>>>> mediatek,platform:
>>>> $ref: /schemas/types.yaml#/definitions/phandle
>>>> description: The phandle of MT8192 ASoC platform.
>>>> @@ -27,10 +36,12 @@ properties:
>>>> mediatek,hdmi-codec:
>>>> $ref: /schemas/types.yaml#/definitions/phandle
>>>> description: The phandle of HDMI codec.
>>>> + deprecated: true
>>>>
>>>> headset-codec:
>>>> type: object
>>>> additionalProperties: false
>>>> + deprecated: true
>>>>
>>>> properties:
>>>> sound-dai:
>>>> @@ -41,6 +52,7 @@ properties:
>>>> speaker-codecs:
>>>> type: object
>>>> additionalProperties: false
>>>> + deprecated: true
>>>>
>>>> properties:
>>>> sound-dai:
>>>> @@ -51,13 +63,83 @@ properties:
>>>> required:
>>>> - sound-dai
>>>>
>>>> +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:
>>>> + enum:
>>>> + - I2S0
>>>> + - I2S1
>>>> + - I2S2
>>>> + - I2S3
>>>> + - I2S4
>>>> + - I2S5
>>>> + - I2S6
>>>> + - I2S7
>>>> + - I2S8
>>>> + - I2S9
>>>> + - TDM
>>>> +
>>>> + 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:
>>>> + 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:
>>>> + enum:
>>>> + - cpu
>>>> + - codec
>>>> +
>>>> + additionalProperties: false
>>>
>>> Move this before properties.
>>>
>>
>> Done for v2.
>>
>>>> +
>>>> + required:
>>>> + - link-name
>>>> +
>>>> additionalProperties: false
>>>>
>>>> required:
>>>> - compatible
>>>> - mediatek,platform
>>>> - - headset-codec
>>>> - - speaker-codecs
>>>> +
>>>> +allOf:
>>>> + # Disallow dai-link-xxx nodes if the legacy properties are specified
>>>
>>> xxx-dai-link?
>>>
>>
>> Oh! Yes, thanks for catching this.
>>
>> That's what I initially wanted to do, but then I opted for xxx-dai-link and
>> forgot to update this comment.
>>
>> Fixed for v2.
>>
>>>> + - if:
>>>> + patternProperties:
>>>> + ".*-dai-link$": false
>>>> + then:
>>>> + required:
>>>> + - headset-codec
>>>> + - speaker-codecs
>>>> + else:
>>>> + properties:
>>>> + headset-codec: false
>>>> + speaker-codecs: false
>>>> + mediatek,hdmi-codec: false
>>>
>>> Allowing both would preserve compatibility. That's not needed? If so,
>>> say why in the commit msg.
>>>
>>
>> I'm thinking of writing:
>>
>> "Since describing machine specific audio hardware and links replaces the
>> now deprecated old logic doing the same in a driver hardcoded fashion,
>> it is not allowed to have both the old and new properties together."
>
> What happened to that. Instead you just sent a new version with
> nothing about this.
>
The same thing that happened to that card "model" error that shouldn't have
been there because I catched it before sending and fixed, then...
...I have ultimately sent the wrong changeset. My bad.
Anyway - since that's a bigger series, I'll wait for a few days and will
send the v3 with the names added to the audio-routing and this mentioned
in the commit description (so, that's happening next week).
>> ...but in short - both the old and the new can do exactly the same, but
>> imo it doesn't make any sense to actually rely on both as:
>> 1. It's redundant (and one set of them makes the other useless);
>> 2. I want to avoid confusion (as the other set won't be parsed);
>> 3. I'm trying to *enforce* consistency as MTK cards have different
>> bindings for .. really, no good reason;
>> 4. I want to see custom stuff disappear completely (and/or as much as
>> possible anyway) and use something that is (at least somewhat) common
>> between all MTK and non-MTK or anyway as a start at least consistent
>> between MTK cards.
>>
>> In theory, though, speaking of the driver side, there's nothing preventing
>> you from specifying both audio-routing xxx-dai-link and mediatek,hdmi-codec,
>> as the drivers' action will be, in short
>> if (new_bindings)
>> forget_about_old_bindings_use_the_new_ones();
>> else
>> use_old_hardcoded_stuff(); /* and be sad */
>
> That works for newer kernels with this change, but existing kernels
> will only have:
>
> use_old_hardcoded_stuff(); /* and not know it's sad */
>
> If you want to support a new DT and old kernel, you need to populate
> both properties.
>
>> For that, I really don't want to allow both sets of properties - please, please,
>> tell me that I don't *have to* remove this block :-)
>
> Ultimately it is your decision as Mediatek maintainer, not mine. My
> only requirement is the commit message explain why the above
> combination is not important for these platforms.
>
> You could leave it, but keep both in the dts files for some time
> period. That will cause warnings, but what's a few more. The ABI
> doesn't have to be a forever thing. Things evolve and there will be
> other reasons to upgrade.
>
Thanks for explaining.
Cheers,
Angelo
next prev parent reply other threads:[~2024-03-07 14:26 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
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 [this message]
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=7fa3cd50-4603-4983-8396-ec8c90fd43fa@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=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