diff mbox series

ASoC: simple-card: Add dummy dai support simple sound card

Message ID 1614254912-15746-1-git-send-email-shengjiu.wang@nxp.com
State New
Headers show
Series ASoC: simple-card: Add dummy dai support simple sound card | expand

Commit Message

Shengjiu Wang Feb. 25, 2021, 12:08 p.m. UTC
If sound card doesn't need specific codec device, just
dummy codec is enough, then we can link the dummy component
directly.

In this case, user needs to specify below setting in
devicetree. Previously the sound-dai is a node of codec,
now we check if it is zero before parsing the node, zero
means dummy component is specified.

	simple-audio-card,codec {
		sound-dai = <0>;
	};

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 sound/soc/generic/simple-card.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Shengjiu Wang Feb. 26, 2021, 6:05 a.m. UTC | #1
On Thu, Feb 25, 2021 at 9:17 PM Mark Brown <broonie@kernel.org> wrote:
>
> On Thu, Feb 25, 2021 at 08:08:32PM +0800, Shengjiu Wang wrote:
>
> > If sound card doesn't need specific codec device, just
> > dummy codec is enough, then we can link the dummy component
> > directly.
>
> This is a big red flag - what circumstances are these?  If it's a simple
> CODEC with no control then the general approach is to provide a driver
> which announces the capabilities of the CODEC and can be bound to as
> normal, the dummy component should never actively be used.

For the DMIC, SPDIF, HDMI ARC device or other
similar device that there is no codec connected,  then dummy codec is
just used for registering the sound card.

best regards
wang shengjiu
Mark Brown March 2, 2021, 4:32 p.m. UTC | #2
On Fri, Feb 26, 2021 at 02:05:29PM +0800, Shengjiu Wang wrote:
> On Thu, Feb 25, 2021 at 9:17 PM Mark Brown <broonie@kernel.org> wrote:
> > On Thu, Feb 25, 2021 at 08:08:32PM +0800, Shengjiu Wang wrote:

> > > If sound card doesn't need specific codec device, just
> > > dummy codec is enough, then we can link the dummy component
> > > directly.

> > This is a big red flag - what circumstances are these?  If it's a simple
> > CODEC with no control then the general approach is to provide a driver
> > which announces the capabilities of the CODEC and can be bound to as
> > normal, the dummy component should never actively be used.

> For the DMIC, SPDIF, HDMI ARC device or other
> similar device that there is no codec connected,  then dummy codec is
> just used for registering the sound card.

There are logical CODECs there, and we already have devices set up for
those (like dmic.c for example).  All the above cases have at least
some constraints from the spec for the interface.
diff mbox series

Patch

diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
index c262281bc64d..8b0cabd1bad1 100644
--- a/sound/soc/generic/simple-card.c
+++ b/sound/soc/generic/simple-card.c
@@ -34,10 +34,19 @@  static int asoc_simple_parse_dai(struct device_node *node,
 {
 	struct of_phandle_args args;
 	int ret;
+	u32 val;
 
 	if (!node)
 		return 0;
 
+	ret = of_property_read_u32(node, DAI, &val);
+	if (val == 0) {
+		dlc->of_node       = NULL;
+		dlc->dai_name      = "snd-soc-dummy-dai";
+		dlc->name          = "snd-soc-dummy";
+		return 0;
+	}
+
 	/*
 	 * Get node via "sound-dai = <&phandle port>"
 	 * it will be used as xxx_of_node on soc_bind_dai_link()