Unverified Commit 850d1746 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: add and use asoc_dummy_dlc

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

Many ASoC drivers are using dummy DAI.
I have 2 concern about it. 1st one is there is no guarantee that local
strings ("snd-soc-dummy-dai",  "snd-soc-dummy") are kept until the card
was binded if it was added at subfunction.
2nd one is we can use common snd_soc_dai_link_component for it.
This patch-set adds common asoc_dummy_dlc, and use it.
parents 7f5d6036 5a7bec81
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -73,7 +73,6 @@ struct asoc_simple_priv {
	struct snd_soc_dai_link *dai_link;
	struct asoc_simple_dai *dais;
	struct snd_soc_dai_link_component *dlcs;
	struct snd_soc_dai_link_component dummy;
	struct snd_soc_codec_conf *codec_conf;
	struct gpio_desc *pa_gpio;
	const struct snd_soc_ops *ops;
+1 −0
Original line number Diff line number Diff line
@@ -878,6 +878,7 @@ asoc_link_to_platform(struct snd_soc_dai_link *link, int n) {
#define COMP_DUMMY()			{ .name = "snd-soc-dummy", .dai_name = "snd-soc-dummy-dai", }

extern struct snd_soc_dai_link_component null_dailink_component[0];
extern struct snd_soc_dai_link_component asoc_dummy_dlc;


struct snd_soc_codec_conf {
+18 −25
Original line number Diff line number Diff line
@@ -795,13 +795,6 @@ SND_SOC_DAILINK_DEF(dmic_codec,
		DAILINK_COMP_ARRAY(COMP_CODEC("dmic-codec", "dmic-hifi")));

/* Declare ACP CPU components */
static struct snd_soc_dai_link_component dummy_codec[] = {
	{
		.name = "snd-soc-dummy",
		.dai_name = "snd-soc-dummy-dai",
	}
};

static struct snd_soc_dai_link_component platform_component[] = {
	{
		 .name = "acp_asoc_renoir.0",
@@ -912,8 +905,8 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
		links[i].no_pcm = 1;
		if (!drv_data->hs_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->hs_codec_id == RT5682) {
			links[i].codecs = rt5682;
@@ -943,8 +936,8 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
		links[i].no_pcm = 1;
		if (!drv_data->hs_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->hs_codec_id == NAU8825) {
			links[i].codecs = nau8825;
@@ -973,8 +966,8 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
		links[i].no_pcm = 1;
		if (!drv_data->amp_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->amp_codec_id == RT1019) {
			links[i].codecs = rt1019;
@@ -1005,8 +998,8 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
		links[i].no_pcm = 1;
		if (!drv_data->amp_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->amp_codec_id == MAX98360A) {
			links[i].codecs = max98360a;
@@ -1076,8 +1069,8 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
		links[i].dpcm_capture = 1;
		if (!drv_data->hs_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->hs_codec_id == RT5682) {
			links[i].codecs = rt5682;
@@ -1110,8 +1103,8 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
		links[i].dpcm_capture = 1;
		if (!drv_data->hs_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->hs_codec_id == NAU8825) {
			links[i].codecs = nau8825;
@@ -1138,8 +1131,8 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
		links[i].dpcm_playback = 1;
		if (!drv_data->amp_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->amp_codec_id == RT1019) {
			links[i].codecs = rt1019;
@@ -1173,8 +1166,8 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
		links[i].dpcm_playback = 1;
		if (!drv_data->amp_codec_id) {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		if (drv_data->amp_codec_id == MAX98360A) {
			links[i].codecs = max98360a;
@@ -1201,8 +1194,8 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card)
			links[i].num_codecs = ARRAY_SIZE(dmic_codec);
		} else {
			/* Use dummy codec if codec id not specified */
			links[i].codecs = dummy_codec;
			links[i].num_codecs = ARRAY_SIZE(dummy_codec);
			links[i].codecs = &asoc_dummy_dlc;
			links[i].num_codecs = 1;
		}
		links[i].cpus = pdm_dmic;
		links[i].num_cpus = ARRAY_SIZE(pdm_dmic);
+3 −5
Original line number Diff line number Diff line
@@ -473,21 +473,19 @@ static int atmel_classd_asoc_card_init(struct device *dev,
	if (!dai_link)
		return -ENOMEM;

	comp = devm_kzalloc(dev, 2 * sizeof(*comp), GFP_KERNEL);
	comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL);
	if (!comp)
		return -ENOMEM;

	dai_link->cpus		= &comp[0];
	dai_link->codecs	= &comp[1];
	dai_link->cpus		= comp;
	dai_link->codecs	= &asoc_dummy_dlc;

	dai_link->num_cpus	= 1;
	dai_link->num_codecs	= 1;

	dai_link->name			= "CLASSD";
	dai_link->stream_name		= "CLASSD PCM";
	dai_link->codecs->dai_name	= "snd-soc-dummy-dai";
	dai_link->cpus->dai_name	= dev_name(dev);
	dai_link->codecs->name		= "snd-soc-dummy";

	card->dai_link	= dai_link;
	card->num_links	= 1;
+3 −5
Original line number Diff line number Diff line
@@ -496,21 +496,19 @@ static int atmel_pdmic_asoc_card_init(struct device *dev,
	if (!dai_link)
		return -ENOMEM;

	comp = devm_kzalloc(dev, 2 * sizeof(*comp), GFP_KERNEL);
	comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL);
	if (!comp)
		return -ENOMEM;

	dai_link->cpus		= &comp[0];
	dai_link->codecs	= &comp[1];
	dai_link->cpus		= comp;
	dai_link->codecs	= &asoc_dummy_dlc;

	dai_link->num_cpus	= 1;
	dai_link->num_codecs	= 1;

	dai_link->name			= "PDMIC";
	dai_link->stream_name		= "PDMIC PCM";
	dai_link->codecs->dai_name	= "snd-soc-dummy-dai";
	dai_link->cpus->dai_name	= dev_name(dev);
	dai_link->codecs->name		= "snd-soc-dummy";

	card->dai_link	= dai_link;
	card->num_links	= 1;
Loading