Skip to content

Commit a441eff

Browse files
committed
Soundwire dai link init logic refactor
Merge series from Vijendar Mukunda <[email protected]>: This patch series refactors the SoundWire dai link init logic for Intel and AMD generic SoundWire machine driver and also updates the stream_name in dai_links structure. Link: thesofproject#5218
2 parents ff96429 + d280cf5 commit a441eff

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-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
@@ -838,7 +838,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
838838
asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
839839
cpus, num_cpus, platform_component,
840840
ARRAY_SIZE(platform_component), codecs, num_codecs,
841-
asoc_sdw_rtd_init, &sdw_ops);
841+
1, asoc_sdw_rtd_init, &sdw_ops);
842842

843843
/*
844844
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
@@ -915,7 +915,7 @@ static int create_ssp_dailinks(struct snd_soc_card *card,
915915
playback, capture, cpu_dai_name,
916916
platform_component->name,
917917
ARRAY_SIZE(platform_component), codec_name,
918-
ssp_info->dais[0].dai_name, NULL,
918+
ssp_info->dais[0].dai_name, 1, NULL,
919919
ssp_info->ops);
920920
if (ret)
921921
return ret;
@@ -940,7 +940,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
940940
0, 1, // DMIC only supports capture
941941
"DMIC01 Pin", platform_component->name,
942942
ARRAY_SIZE(platform_component),
943-
"dmic-codec", "dmic-hifi",
943+
"dmic-codec", "dmic-hifi", 1,
944944
asoc_sdw_dmic_init, NULL);
945945
if (ret)
946946
return ret;
@@ -951,7 +951,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
951951
0, 1, // DMIC only supports capture
952952
"DMIC16k Pin", platform_component->name,
953953
ARRAY_SIZE(platform_component),
954-
"dmic-codec", "dmic-hifi",
954+
"dmic-codec", "dmic-hifi", 1,
955955
/* don't call asoc_sdw_dmic_init() twice */
956956
NULL, NULL);
957957
if (ret)
@@ -995,7 +995,7 @@ static int create_hdmi_dailinks(struct snd_soc_card *card,
995995
1, 0, // HDMI only supports playback
996996
cpu_dai_name, platform_component->name,
997997
ARRAY_SIZE(platform_component),
998-
codec_name, codec_dai_name,
998+
codec_name, codec_dai_name, 1,
999999
i == 0 ? sof_sdw_hdmi_init : NULL, NULL);
10001000
if (ret)
10011001
return ret;
@@ -1023,7 +1023,7 @@ static int create_bt_dailinks(struct snd_soc_card *card,
10231023
1, 1, cpu_dai_name, platform_component->name,
10241024
ARRAY_SIZE(platform_component),
10251025
snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
1026-
NULL, NULL);
1026+
1, NULL, NULL);
10271027
if (ret)
10281028
return ret;
10291029

sound/soc/sdw_utils/soc_sdw_utils.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,15 +1015,17 @@ 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;
1025+
dai_links->stream_name = name;
10241026
dai_links->platforms = platform_component;
10251027
dai_links->num_platforms = num_platforms;
1026-
dai_links->no_pcm = 1;
1028+
dai_links->no_pcm = no_pcm;
10271029
dai_links->cpus = cpus;
10281030
dai_links->num_cpus = cpus_num;
10291031
dai_links->codecs = codecs;
@@ -1039,7 +1041,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
10391041
int *be_id, char *name, int playback, int capture,
10401042
const char *cpu_dai_name, const char *platform_comp_name,
10411043
int num_platforms, const char *codec_name,
1042-
const char *codec_dai_name,
1044+
const char *codec_dai_name, int no_pcm,
10431045
int (*init)(struct snd_soc_pcm_runtime *rtd),
10441046
const struct snd_soc_ops *ops)
10451047
{
@@ -1058,7 +1060,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
10581060

10591061
asoc_sdw_init_dai_link(dev, dai_links, be_id, name, playback, capture,
10601062
&dlc[0], 1, &dlc[1], num_platforms,
1061-
&dlc[2], 1, init, ops);
1063+
&dlc[2], 1, no_pcm, init, ops);
10621064

10631065
return 0;
10641066
}

0 commit comments

Comments
 (0)