diff mbox series

ASoC: qcom: common: Respect status = "disabled" on DAI link nodes

Message ID 20211025105503.49444-1-stephan@gerhold.net (mailing list archive)
State Accepted
Commit 4b29d5a0bdb9c0d52356dd04b4c08180e0c8aa71
Headers show
Series ASoC: qcom: common: Respect status = "disabled" on DAI link nodes | expand

Commit Message

Stephan Gerhold Oct. 25, 2021, 10:55 a.m. UTC
At the moment, the DAI link nodes in the device tree always have to be
specified completely in each device tree. However, the available
interfaces (e.g. Primary/Secondary/Tertiary/Quaternary MI2S) are common
for all devices of a SoC, so the majority of the definitions can be
placed in a common device tree include to reduce boilerplate.

Make it possible to define such stubs in device tree includes by
respecting the "status" property for the DAI link nodes. This is
a trivial change that just requires switching to the _available_
OF functions that check the "status" property additionally.

This allows defining a stub like:

	sound_dai_quaternary: dai-link-quaternary {
		link-name = "Quaternary MI2S";
		status = "disabled"; /* Needs extra codec configuration */
		cpu {
			sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
		};
		platform {
			sound-dai = <&q6routing>;
		};
	};

where the codec would be filled in by the device-specific device tree.

For existing device trees this change does not make any difference.
A missing "status" property is treated like status = "okay".

Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
---
 sound/soc/qcom/common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Srinivas Kandagatla Oct. 25, 2021, 12:33 p.m. UTC | #1
On 25/10/2021 11:55, Stephan Gerhold wrote:
> At the moment, the DAI link nodes in the device tree always have to be
> specified completely in each device tree. However, the available
> interfaces (e.g. Primary/Secondary/Tertiary/Quaternary MI2S) are common
> for all devices of a SoC, so the majority of the definitions can be
> placed in a common device tree include to reduce boilerplate.
> 
> Make it possible to define such stubs in device tree includes by
> respecting the "status" property for the DAI link nodes. This is
> a trivial change that just requires switching to the _available_
> OF functions that check the "status" property additionally. >
> This allows defining a stub like:
> 
> 	sound_dai_quaternary: dai-link-quaternary {
> 		link-name = "Quaternary MI2S";
> 		status = "disabled"; /* Needs extra codec configuration */
> 		cpu {
> 			sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
> 		};
> 		platform {
> 			sound-dai = <&q6routing>;
> 		};
> 	};
> 
> where the codec would be filled in by the device-specific device tree.
> 
> For existing device trees this change does not make any difference.
> A missing "status" property is treated like status = "okay".

> 
> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Stephan Gerhold <stephan@gerhold.net>

Thanks for the patch,

Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

--srini
> ---
>   sound/soc/qcom/common.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c
> index 09af00700700..2e1c618f7529 100644
> --- a/sound/soc/qcom/common.c
> +++ b/sound/soc/qcom/common.c
> @@ -44,7 +44,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
>   		return ret;
>   
>   	/* Populate links */
> -	num_links = of_get_child_count(dev->of_node);
> +	num_links = of_get_available_child_count(dev->of_node);
>   
>   	/* Allocate the DAI link array */
>   	card->dai_link = devm_kcalloc(dev, num_links, sizeof(*link), GFP_KERNEL);
> @@ -54,7 +54,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
>   	card->num_links = num_links;
>   	link = card->dai_link;
>   
> -	for_each_child_of_node(dev->of_node, np) {
> +	for_each_available_child_of_node(dev->of_node, np) {
>   		dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
>   		if (!dlc) {
>   			ret = -ENOMEM;
>
Mark Brown Oct. 25, 2021, 7:40 p.m. UTC | #2
On Mon, 25 Oct 2021 12:55:03 +0200, Stephan Gerhold wrote:
> At the moment, the DAI link nodes in the device tree always have to be
> specified completely in each device tree. However, the available
> interfaces (e.g. Primary/Secondary/Tertiary/Quaternary MI2S) are common
> for all devices of a SoC, so the majority of the definitions can be
> placed in a common device tree include to reduce boilerplate.
> 
> Make it possible to define such stubs in device tree includes by
> respecting the "status" property for the DAI link nodes. This is
> a trivial change that just requires switching to the _available_
> OF functions that check the "status" property additionally.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] ASoC: qcom: common: Respect status = "disabled" on DAI link nodes
      commit: 4b29d5a0bdb9c0d52356dd04b4c08180e0c8aa71

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
diff mbox series

Patch

diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c
index 09af00700700..2e1c618f7529 100644
--- a/sound/soc/qcom/common.c
+++ b/sound/soc/qcom/common.c
@@ -44,7 +44,7 @@  int qcom_snd_parse_of(struct snd_soc_card *card)
 		return ret;
 
 	/* Populate links */
-	num_links = of_get_child_count(dev->of_node);
+	num_links = of_get_available_child_count(dev->of_node);
 
 	/* Allocate the DAI link array */
 	card->dai_link = devm_kcalloc(dev, num_links, sizeof(*link), GFP_KERNEL);
@@ -54,7 +54,7 @@  int qcom_snd_parse_of(struct snd_soc_card *card)
 	card->num_links = num_links;
 	link = card->dai_link;
 
-	for_each_child_of_node(dev->of_node, np) {
+	for_each_available_child_of_node(dev->of_node, np) {
 		dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
 		if (!dlc) {
 			ret = -ENOMEM;