Skip to content

Commit 485df22

Browse files
vijendarmukundabroonie
authored andcommitted
ASoC: sdw_utils/intel/amd: refactor dai link init logic
Add 'no_pcm' as parameter for asoc_sdw_init_dai_link() so that same function can be used for SOF and legacy(No DSP) stack. Pass 'no_pcm' as 1 for Intel and AMD SOF based machine drivers. Signed-off-by: Vijendar Mukunda <[email protected]> Reviewed-by: Bard Liao <[email protected]> Reviewed-by: Liam Girdwood <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 0196105 commit 485df22

File tree

4 files changed

+18
-16
lines changed

4 files changed

+18
-16
lines changed

include/sound/soc_sdw_utils.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,14 +152,15 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
152152
struct snd_soc_dai_link_component *cpus, int cpus_num,
153153
struct snd_soc_dai_link_component *platform_component,
154154
int num_platforms, struct snd_soc_dai_link_component *codecs,
155-
int codecs_num, int (*init)(struct snd_soc_pcm_runtime *rtd),
155+
int codecs_num, int no_pcm,
156+
int (*init)(struct snd_soc_pcm_runtime *rtd),
156157
const struct snd_soc_ops *ops);
157158

158159
int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *dai_links,
159160
int *be_id, char *name, int playback, int capture,
160161
const char *cpu_dai_name, const char *platform_comp_name,
161162
int num_platforms, const char *codec_name,
162-
const char *codec_dai_name,
163+
const char *codec_dai_name, int no_pcm,
163164
int (*init)(struct snd_soc_pcm_runtime *rtd),
164165
const struct snd_soc_ops *ops);
165166

sound/soc/amd/acp/acp-sdw-sof-mach.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
236236
asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
237237
cpus, num_cpus, platform_component,
238238
ARRAY_SIZE(platform_component), codecs, num_codecs,
239-
asoc_sdw_rtd_init, &sdw_ops);
239+
1, asoc_sdw_rtd_init, &sdw_ops);
240240

241241
/*
242242
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
@@ -285,7 +285,7 @@ static int create_sdw_dailinks(struct snd_soc_card *card,
285285
}
286286

287287
static int create_dmic_dailinks(struct snd_soc_card *card,
288-
struct snd_soc_dai_link **dai_links, int *be_id)
288+
struct snd_soc_dai_link **dai_links, int *be_id, int no_pcm)
289289
{
290290
struct device *dev = card->dev;
291291
int ret;
@@ -294,7 +294,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
294294
0, 1, // DMIC only supports capture
295295
"acp-sof-dmic", platform_component->name,
296296
ARRAY_SIZE(platform_component),
297-
"dmic-codec", "dmic-hifi",
297+
"dmic-codec", "dmic-hifi", no_pcm,
298298
asoc_sdw_dmic_init, NULL);
299299
if (ret)
300300
return ret;
@@ -377,7 +377,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
377377
if (ctx->ignore_internal_dmic) {
378378
dev_warn(dev, "Ignoring ACP DMIC\n");
379379
} else {
380-
ret = create_dmic_dailinks(card, &dai_links, &be_id);
380+
ret = create_dmic_dailinks(card, &dai_links, &be_id, 1);
381381
if (ret)
382382
return ret;
383383
}

sound/soc/intel/boards/sof_sdw.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
790790
asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
791791
cpus, num_cpus, platform_component,
792792
ARRAY_SIZE(platform_component), codecs, num_codecs,
793-
asoc_sdw_rtd_init, &sdw_ops);
793+
1, asoc_sdw_rtd_init, &sdw_ops);
794794

795795
/*
796796
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
@@ -867,7 +867,7 @@ static int create_ssp_dailinks(struct snd_soc_card *card,
867867
playback, capture, cpu_dai_name,
868868
platform_component->name,
869869
ARRAY_SIZE(platform_component), codec_name,
870-
ssp_info->dais[0].dai_name, NULL,
870+
ssp_info->dais[0].dai_name, 1, NULL,
871871
ssp_info->ops);
872872
if (ret)
873873
return ret;
@@ -892,7 +892,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
892892
0, 1, // DMIC only supports capture
893893
"DMIC01 Pin", platform_component->name,
894894
ARRAY_SIZE(platform_component),
895-
"dmic-codec", "dmic-hifi",
895+
"dmic-codec", "dmic-hifi", 1,
896896
asoc_sdw_dmic_init, NULL);
897897
if (ret)
898898
return ret;
@@ -903,7 +903,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
903903
0, 1, // DMIC only supports capture
904904
"DMIC16k Pin", platform_component->name,
905905
ARRAY_SIZE(platform_component),
906-
"dmic-codec", "dmic-hifi",
906+
"dmic-codec", "dmic-hifi", 1,
907907
/* don't call asoc_sdw_dmic_init() twice */
908908
NULL, NULL);
909909
if (ret)
@@ -947,7 +947,7 @@ static int create_hdmi_dailinks(struct snd_soc_card *card,
947947
1, 0, // HDMI only supports playback
948948
cpu_dai_name, platform_component->name,
949949
ARRAY_SIZE(platform_component),
950-
codec_name, codec_dai_name,
950+
codec_name, codec_dai_name, 1,
951951
i == 0 ? sof_sdw_hdmi_init : NULL, NULL);
952952
if (ret)
953953
return ret;
@@ -975,7 +975,7 @@ static int create_bt_dailinks(struct snd_soc_card *card,
975975
1, 1, cpu_dai_name, platform_component->name,
976976
ARRAY_SIZE(platform_component),
977977
snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
978-
NULL, NULL);
978+
1, NULL, NULL);
979979
if (ret)
980980
return ret;
981981

sound/soc/sdw_utils/soc_sdw_utils.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,15 +1015,16 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
10151015
struct snd_soc_dai_link_component *cpus, int cpus_num,
10161016
struct snd_soc_dai_link_component *platform_component,
10171017
int num_platforms, struct snd_soc_dai_link_component *codecs,
1018-
int codecs_num, int (*init)(struct snd_soc_pcm_runtime *rtd),
1018+
int codecs_num, int no_pcm,
1019+
int (*init)(struct snd_soc_pcm_runtime *rtd),
10191020
const struct snd_soc_ops *ops)
10201021
{
10211022
dev_dbg(dev, "create dai link %s, id %d\n", name, *be_id);
10221023
dai_links->id = (*be_id)++;
10231024
dai_links->name = name;
10241025
dai_links->platforms = platform_component;
10251026
dai_links->num_platforms = num_platforms;
1026-
dai_links->no_pcm = 1;
1027+
dai_links->no_pcm = no_pcm;
10271028
dai_links->cpus = cpus;
10281029
dai_links->num_cpus = cpus_num;
10291030
dai_links->codecs = codecs;
@@ -1039,7 +1040,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
10391040
int *be_id, char *name, int playback, int capture,
10401041
const char *cpu_dai_name, const char *platform_comp_name,
10411042
int num_platforms, const char *codec_name,
1042-
const char *codec_dai_name,
1043+
const char *codec_dai_name, int no_pcm,
10431044
int (*init)(struct snd_soc_pcm_runtime *rtd),
10441045
const struct snd_soc_ops *ops)
10451046
{
@@ -1058,7 +1059,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
10581059

10591060
asoc_sdw_init_dai_link(dev, dai_links, be_id, name, playback, capture,
10601061
&dlc[0], 1, &dlc[1], num_platforms,
1061-
&dlc[2], 1, init, ops);
1062+
&dlc[2], 1, no_pcm, init, ops);
10621063

10631064
return 0;
10641065
}

0 commit comments

Comments
 (0)