* [PATCH v2 0/2] ASoC: simple-card-utils: support system-clock-id DT property
@ 2026-05-15 16:13 Sen Wang
2026-05-15 16:13 ` [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property Sen Wang
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Sen Wang @ 2026-05-15 16:13 UTC (permalink / raw)
To: Mark Brown, Kuninori Morimoto, Liam Girdwood, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai
Cc: linux-sound, devicetree, linux-kernel, Sen Wang
Adding an optional, u32 system-clock-id DT property into the generic machine
driver so clocking topology info can be exposed in DT.
Sen Wang (2):
dt-bindings: sound: simple-card: add system-clock-id property
ASoC: simple-card-utils: support system-clock-id DT property
Documentation/devicetree/bindings/sound/audio-graph-port.yaml | 2 +
Documentation/devicetree/bindings/sound/simple-card.yaml | 10 +++++++
include/sound/simple_card_utils.h | 1 +
sound/soc/generic/simple-card-utils.c | 13 +++++----
4 files changed, 21 insertions(+), 5 deletions(-)
---
base-commit: f5ffe03e0678 (linux-next)
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property 2026-05-15 16:13 [PATCH v2 0/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang @ 2026-05-15 16:13 ` Sen Wang 2026-05-16 9:54 ` Krzysztof Kozlowski 2026-05-15 16:13 ` [PATCH v2 2/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang 2026-05-15 19:32 ` [PATCH v2 0/2] " Wang, Sen 2 siblings, 1 reply; 7+ messages in thread From: Sen Wang @ 2026-05-15 16:13 UTC (permalink / raw) To: Mark Brown, Kuninori Morimoto, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai Cc: linux-sound, devicetree, linux-kernel, Sen Wang Document the new optional "system-clock-id" u32 property for cpu/codec sub-nodes in simple-audio-card and audio-graph-card. The property maps directly to the clk_id argument of snd_soc_dai_set_sysclk(). When absent the existing default of 0 is used, so no existing DT is affected. CPU and codec sub-nodes are parsed independently; each side may carry a different value to select different clock sources on the two DAIs within the same dai-link. Signed-off-by: Sen Wang <sen@ti.com> --- changes in V2: - Newly added (V1 is RFC) diff --git a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml index d1cbfc5edd3a..8094a76b9b4a 100644 --- a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml +++ b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml @@ -67,6 +67,8 @@ definitions: $ref: simple-card.yaml#/definitions/system-clock-direction-out system-clock-fixed: $ref: simple-card.yaml#/definitions/system-clock-fixed + system-clock-id: + $ref: simple-card.yaml#/definitions/system-clock-id dai-format: description: audio format. diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml index a14716b2732f..47a02d340d5e 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.yaml +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml @@ -49,6 +49,14 @@ definitions: single fixed sampling rate. $ref: /schemas/types.yaml#/definitions/flag + system-clock-id: + description: + Selects which system clock to configure via set_sysclk(). Corresponds + to the clk_id argument of snd_soc_dai_set_sysclk(). When absent the + driver default (0) is used. CPU and codec sub-nodes are parsed + independently so each side may carry a different value. + $ref: /schemas/types.yaml#/definitions/uint32 + mclk-fs: description: | Multiplication factor between stream rate and codec mclk. @@ -135,6 +143,8 @@ definitions: $ref: "#/definitions/system-clock-direction-out" system-clock-fixed: $ref: "#/definitions/system-clock-fixed" + system-clock-id: + $ref: "#/definitions/system-clock-id" required: - sound-dai ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property 2026-05-15 16:13 ` [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property Sen Wang @ 2026-05-16 9:54 ` Krzysztof Kozlowski 2026-05-16 10:17 ` Wang, Sen 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2026-05-16 9:54 UTC (permalink / raw) To: Sen Wang Cc: Mark Brown, Kuninori Morimoto, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel On Fri, May 15, 2026 at 11:13:57AM -0500, Sen Wang wrote: > Document the new optional "system-clock-id" u32 property for cpu/codec > sub-nodes in simple-audio-card and audio-graph-card. > > The property maps directly to the clk_id argument of > snd_soc_dai_set_sysclk(). When absent the existing default of 0 is That's driver argument in bindings. Poor way to start discussion. Please describe the hardware instead. > used, so no existing DT is affected. CPU and codec sub-nodes are > parsed independently; each side may carry a different value to select > different clock sources on the two DAIs within the same dai-link. Again, nothing about the hardware here. > > Signed-off-by: Sen Wang <sen@ti.com> > --- > changes in V2: > - Newly added (V1 is RFC) > > diff --git a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml > index d1cbfc5edd3a..8094a76b9b4a 100644 > --- a/Documentation/devicetree/bindings/sound/audio-graph-port.yaml > +++ b/Documentation/devicetree/bindings/sound/audio-graph-port.yaml > @@ -67,6 +67,8 @@ definitions: > $ref: simple-card.yaml#/definitions/system-clock-direction-out > system-clock-fixed: > $ref: simple-card.yaml#/definitions/system-clock-fixed > + system-clock-id: > + $ref: simple-card.yaml#/definitions/system-clock-id > > dai-format: > description: audio format. > diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml > index a14716b2732f..47a02d340d5e 100644 > --- a/Documentation/devicetree/bindings/sound/simple-card.yaml > +++ b/Documentation/devicetree/bindings/sound/simple-card.yaml > @@ -49,6 +49,14 @@ definitions: > single fixed sampling rate. > $ref: /schemas/types.yaml#/definitions/flag > > + system-clock-id: > + description: > + Selects which system clock to configure via set_sysclk(). Corresponds > + to the clk_id argument of snd_soc_dai_set_sysclk(). When absent the So now driver APIs are part of binding :/. No. You should have built on top or use previous discussion instead of making new mistakes: https://lore.kernel.org/linux-devicetree/20221022162742.21671-2-aidanmacdonald.0x0@gmail.com/ Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property 2026-05-16 9:54 ` Krzysztof Kozlowski @ 2026-05-16 10:17 ` Wang, Sen 0 siblings, 0 replies; 7+ messages in thread From: Wang, Sen @ 2026-05-16 10:17 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Mark Brown, Kuninori Morimoto, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel On 5/16/2026 4:54 AM, Krzysztof Kozlowski wrote: > On Fri, May 15, 2026 at 11:13:57AM -0500, Sen Wang wrote: >> Document the new optional "system-clock-id" u32 property for cpu/codec >> sub-nodes in simple-audio-card and audio-graph-card. (snip) > So now driver APIs are part of binding :/. No. > > You should have built on top or use previous discussion instead of > making new mistakes: > https://lore.kernel.org/linux-devicetree/20221022162742.21671-2-aidanmacdonald.0x0@gmail.com/ > Thanks for your insight Krzysztof, definitely failed my due diligence in finding previous discussions :/. Let me see if I can do some refactor in ASoC clks instead. Best, Sen Wang ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] ASoC: simple-card-utils: support system-clock-id DT property 2026-05-15 16:13 [PATCH v2 0/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang 2026-05-15 16:13 ` [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property Sen Wang @ 2026-05-15 16:13 ` Sen Wang 2026-05-15 16:37 ` sashiko-bot 2026-05-15 19:32 ` [PATCH v2 0/2] " Wang, Sen 2 siblings, 1 reply; 7+ messages in thread From: Sen Wang @ 2026-05-15 16:13 UTC (permalink / raw) To: Mark Brown, Kuninori Morimoto, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai Cc: linux-sound, devicetree, linux-kernel, Sen Wang The generic machine driver never had a mechanism to adjust for various clk_ids that is tailored for individual codec & cpu peripheral driver. simple_util_dai_init() has hardcoded 0, thus making non-default clock IDs unreachable from DTS. Boards needing a specific clk_id have had no choice but to write dedicated machine drivers. Add an optional "system-clock-id" u32 property to the cpu/codec sub-node and use it in all three set_sysclk() call sites. When absent clk_id stays 0, preserving identical behavior for all existing boards. And since simple_util_parse_clk() is invoked once per sub-node, per-DAI independence can be preserved as cpu and codec sub-nodes carry independent clk_id values. E.g., the following dts topology would be supported: cpu { system-clock-id = <6>; } codec { system-clock-id = <1>; } Signed-off-by: Sen Wang <sen@ti.com> --- Apologies Morimoto-san, when finalizing the patch I realize a few more places need to be changed, can you kindly re-review and give your acked-by? Changes in v2: - Adopted sysclk func changes for mclk cases - Links to v1 (RFC): https://lore.kernel.org/all/20260514212802.3569643-1-sen@ti.com/ diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index 915e6ae5f68d..f221fba92e5e 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -26,6 +26,7 @@ struct simple_util_dai { const char *name; unsigned int sysclk; int clk_direction; + int clk_id; int slots; int slot_width; unsigned int tx_slot_mask; diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 4cf3a5395763..ce7e960db5e9 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -290,6 +290,9 @@ int simple_util_parse_clk(struct device *dev, if (of_property_read_bool(node, "system-clock-direction-out")) simple_dai->clk_direction = SND_SOC_CLOCK_OUT; + if (!of_property_read_u32(node, "system-clock-id", &val)) + simple_dai->clk_id = val; + return 0; } EXPORT_SYMBOL_GPL(simple_util_parse_clk); @@ -506,14 +509,16 @@ int simple_util_hw_params(struct snd_pcm_substream *substream, /* CPU first */ for_each_rtd_cpu_dais(rtd, i, sdai) { pdai = simple_props_to_dai_cpu(props, i); - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); + ret = snd_soc_dai_set_sysclk(sdai, pdai->clk_id, + mclk, pdai->clk_direction); if (ret && ret != -ENOTSUPP) goto end; } for_each_rtd_codec_dais(rtd, i, sdai) { pdai = simple_props_to_dai_codec(props, i); - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); + ret = snd_soc_dai_set_sysclk(sdai, pdai->clk_id, + mclk, pdai->clk_direction); if (ret && ret != -ENOTSUPP) goto end; } @@ -521,14 +526,16 @@ int simple_util_hw_params(struct snd_pcm_substream *substream, /* default: codec first */ for_each_rtd_codec_dais(rtd, i, sdai) { pdai = simple_props_to_dai_codec(props, i); - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); + ret = snd_soc_dai_set_sysclk(sdai, pdai->clk_id, + mclk, pdai->clk_direction); if (ret && ret != -ENOTSUPP) goto end; } for_each_rtd_cpu_dais(rtd, i, sdai) { pdai = simple_props_to_dai_cpu(props, i); - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); + ret = snd_soc_dai_set_sysclk(sdai, pdai->clk_id, + mclk, pdai->clk_direction); if (ret && ret != -ENOTSUPP) goto end; } @@ -587,7 +594,8 @@ static int simple_init_dai(struct simple_util_priv *priv, return 0; if (simple_dai->sysclk) { - ret = snd_soc_dai_set_sysclk(dai, 0, simple_dai->sysclk, + ret = snd_soc_dai_set_sysclk(dai, simple_dai->clk_id, + simple_dai->sysclk, simple_dai->clk_direction); if (ret && ret != -ENOTSUPP) { dev_err(dai->dev, "simple-card: set_sysclk error\n"); ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] ASoC: simple-card-utils: support system-clock-id DT property 2026-05-15 16:13 ` [PATCH v2 2/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang @ 2026-05-15 16:37 ` sashiko-bot 0 siblings, 0 replies; 7+ messages in thread From: sashiko-bot @ 2026-05-15 16:37 UTC (permalink / raw) To: Sen Wang; +Cc: conor+dt, krzk+dt, devicetree, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] The commit introduces asymmetric sysclk configuration by failing to update `clk_id` in the shutdown path, leading to incorrect hardware states and resource leaks. -- commit fb04cb3ea63c6e1c03c9835d2530dab5d343394b Author: Sen Wang <sen@ti.com> ASoC: simple-card-utils: support system-clock-id DT property This commit adds an optional system-clock-id DT property to the cpu/codec sub-nodes. It updates simple_util_parse_clk(), simple_util_hw_params(), and simple_init_dai() to read and use this clock ID instead of hardcoding 0. > diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c > index e5cb602fd2487..441f68df85220 100644 > --- a/sound/soc/generic/simple-card-utils.c > +++ b/sound/soc/generic/simple-card-utils.c [ ... ] > @@ -506,14 +509,16 @@ int simple_util_hw_params(struct snd_pcm_substream *substream, > /* CPU first */ > for_each_rtd_cpu_dais(rtd, i, sdai) { > pdai = simple_props_to_dai_cpu(props, i); > - ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); > + ret = snd_soc_dai_set_sysclk(sdai, pdai->clk_id, > + mclk, pdai->clk_direction); Does the teardown path in simple_util_shutdown() also need to be updated to use clk_id? It currently hardcodes 0 when disabling the clock: sound/soc/generic/simple-card-utils.c:simple_util_shutdown() { ... for_each_prop_dai_cpu(props, i, dai) { struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, i); if (props->mclk_fs && !dai->clk_fixed && !snd_soc_dai_active(cpu_dai)) snd_soc_dai_set_sysclk(cpu_dai, 0, 0, dai->clk_direction); ... } If a device is configured with a non-zero system-clock-id, will the shutdown path disable the wrong clock, leaving the intended clock running? -- Sashiko AI review · https://sashiko.dev/#/patchset/20260515161358.1462453-1-sen@ti.com?part=2 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] ASoC: simple-card-utils: support system-clock-id DT property 2026-05-15 16:13 [PATCH v2 0/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang 2026-05-15 16:13 ` [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property Sen Wang 2026-05-15 16:13 ` [PATCH v2 2/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang @ 2026-05-15 19:32 ` Wang, Sen 2 siblings, 0 replies; 7+ messages in thread From: Wang, Sen @ 2026-05-15 19:32 UTC (permalink / raw) To: Mark Brown, Kuninori Morimoto, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela, Takashi Iwai Cc: linux-sound, devicetree, linux-kernel On 5/15/2026 11:13 AM, Sen Wang wrote: > Adding an optional, u32 system-clock-id DT property into the generic machine > driver so clocking topology info can be exposed in DT. > Sorry folks, Sashiko has caught a major bug in my patch. No need to review this. Will send out a V3. Best, Sen Wang ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-16 10:18 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-15 16:13 [PATCH v2 0/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang 2026-05-15 16:13 ` [PATCH v2 1/2] dt-bindings: sound: simple-card: add system-clock-id property Sen Wang 2026-05-16 9:54 ` Krzysztof Kozlowski 2026-05-16 10:17 ` Wang, Sen 2026-05-15 16:13 ` [PATCH v2 2/2] ASoC: simple-card-utils: support system-clock-id DT property Sen Wang 2026-05-15 16:37 ` sashiko-bot 2026-05-15 19:32 ` [PATCH v2 0/2] " Wang, Sen
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.