mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-29 09:13:38 +00:00
Soundwire dai link init logic refactor
Merge series from Vijendar Mukunda <Vijendar.Mukunda@amd.com>: 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: https://github.com/thesofproject/linux/pull/5218
This commit is contained in:
commit
a441eff915
@ -152,14 +152,15 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
|
||||
struct snd_soc_dai_link_component *cpus, int cpus_num,
|
||||
struct snd_soc_dai_link_component *platform_component,
|
||||
int num_platforms, struct snd_soc_dai_link_component *codecs,
|
||||
int codecs_num, int (*init)(struct snd_soc_pcm_runtime *rtd),
|
||||
int codecs_num, int no_pcm,
|
||||
int (*init)(struct snd_soc_pcm_runtime *rtd),
|
||||
const struct snd_soc_ops *ops);
|
||||
|
||||
int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *dai_links,
|
||||
int *be_id, char *name, int playback, int capture,
|
||||
const char *cpu_dai_name, const char *platform_comp_name,
|
||||
int num_platforms, const char *codec_name,
|
||||
const char *codec_dai_name,
|
||||
const char *codec_dai_name, int no_pcm,
|
||||
int (*init)(struct snd_soc_pcm_runtime *rtd),
|
||||
const struct snd_soc_ops *ops);
|
||||
|
||||
|
@ -236,7 +236,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
|
||||
asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
|
||||
cpus, num_cpus, platform_component,
|
||||
ARRAY_SIZE(platform_component), codecs, num_codecs,
|
||||
asoc_sdw_rtd_init, &sdw_ops);
|
||||
1, asoc_sdw_rtd_init, &sdw_ops);
|
||||
|
||||
/*
|
||||
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
|
||||
@ -285,7 +285,7 @@ static int create_sdw_dailinks(struct snd_soc_card *card,
|
||||
}
|
||||
|
||||
static int create_dmic_dailinks(struct snd_soc_card *card,
|
||||
struct snd_soc_dai_link **dai_links, int *be_id)
|
||||
struct snd_soc_dai_link **dai_links, int *be_id, int no_pcm)
|
||||
{
|
||||
struct device *dev = card->dev;
|
||||
int ret;
|
||||
@ -294,7 +294,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
|
||||
0, 1, // DMIC only supports capture
|
||||
"acp-sof-dmic", platform_component->name,
|
||||
ARRAY_SIZE(platform_component),
|
||||
"dmic-codec", "dmic-hifi",
|
||||
"dmic-codec", "dmic-hifi", no_pcm,
|
||||
asoc_sdw_dmic_init, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -377,7 +377,7 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
|
||||
if (ctx->ignore_internal_dmic) {
|
||||
dev_warn(dev, "Ignoring ACP DMIC\n");
|
||||
} else {
|
||||
ret = create_dmic_dailinks(card, &dai_links, &be_id);
|
||||
ret = create_dmic_dailinks(card, &dai_links, &be_id, 1);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
@ -838,7 +838,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
|
||||
asoc_sdw_init_dai_link(dev, *dai_links, be_id, name, playback, capture,
|
||||
cpus, num_cpus, platform_component,
|
||||
ARRAY_SIZE(platform_component), codecs, num_codecs,
|
||||
asoc_sdw_rtd_init, &sdw_ops);
|
||||
1, asoc_sdw_rtd_init, &sdw_ops);
|
||||
|
||||
/*
|
||||
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
|
||||
@ -915,7 +915,7 @@ static int create_ssp_dailinks(struct snd_soc_card *card,
|
||||
playback, capture, cpu_dai_name,
|
||||
platform_component->name,
|
||||
ARRAY_SIZE(platform_component), codec_name,
|
||||
ssp_info->dais[0].dai_name, NULL,
|
||||
ssp_info->dais[0].dai_name, 1, NULL,
|
||||
ssp_info->ops);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -940,7 +940,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
|
||||
0, 1, // DMIC only supports capture
|
||||
"DMIC01 Pin", platform_component->name,
|
||||
ARRAY_SIZE(platform_component),
|
||||
"dmic-codec", "dmic-hifi",
|
||||
"dmic-codec", "dmic-hifi", 1,
|
||||
asoc_sdw_dmic_init, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -951,7 +951,7 @@ static int create_dmic_dailinks(struct snd_soc_card *card,
|
||||
0, 1, // DMIC only supports capture
|
||||
"DMIC16k Pin", platform_component->name,
|
||||
ARRAY_SIZE(platform_component),
|
||||
"dmic-codec", "dmic-hifi",
|
||||
"dmic-codec", "dmic-hifi", 1,
|
||||
/* don't call asoc_sdw_dmic_init() twice */
|
||||
NULL, NULL);
|
||||
if (ret)
|
||||
@ -995,7 +995,7 @@ static int create_hdmi_dailinks(struct snd_soc_card *card,
|
||||
1, 0, // HDMI only supports playback
|
||||
cpu_dai_name, platform_component->name,
|
||||
ARRAY_SIZE(platform_component),
|
||||
codec_name, codec_dai_name,
|
||||
codec_name, codec_dai_name, 1,
|
||||
i == 0 ? sof_sdw_hdmi_init : NULL, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -1023,7 +1023,7 @@ static int create_bt_dailinks(struct snd_soc_card *card,
|
||||
1, 1, cpu_dai_name, platform_component->name,
|
||||
ARRAY_SIZE(platform_component),
|
||||
snd_soc_dummy_dlc.name, snd_soc_dummy_dlc.dai_name,
|
||||
NULL, NULL);
|
||||
1, NULL, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -1015,15 +1015,17 @@ void asoc_sdw_init_dai_link(struct device *dev, struct snd_soc_dai_link *dai_lin
|
||||
struct snd_soc_dai_link_component *cpus, int cpus_num,
|
||||
struct snd_soc_dai_link_component *platform_component,
|
||||
int num_platforms, struct snd_soc_dai_link_component *codecs,
|
||||
int codecs_num, int (*init)(struct snd_soc_pcm_runtime *rtd),
|
||||
int codecs_num, int no_pcm,
|
||||
int (*init)(struct snd_soc_pcm_runtime *rtd),
|
||||
const struct snd_soc_ops *ops)
|
||||
{
|
||||
dev_dbg(dev, "create dai link %s, id %d\n", name, *be_id);
|
||||
dai_links->id = (*be_id)++;
|
||||
dai_links->name = name;
|
||||
dai_links->stream_name = name;
|
||||
dai_links->platforms = platform_component;
|
||||
dai_links->num_platforms = num_platforms;
|
||||
dai_links->no_pcm = 1;
|
||||
dai_links->no_pcm = no_pcm;
|
||||
dai_links->cpus = cpus;
|
||||
dai_links->num_cpus = cpus_num;
|
||||
dai_links->codecs = codecs;
|
||||
@ -1039,7 +1041,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
|
||||
int *be_id, char *name, int playback, int capture,
|
||||
const char *cpu_dai_name, const char *platform_comp_name,
|
||||
int num_platforms, const char *codec_name,
|
||||
const char *codec_dai_name,
|
||||
const char *codec_dai_name, int no_pcm,
|
||||
int (*init)(struct snd_soc_pcm_runtime *rtd),
|
||||
const struct snd_soc_ops *ops)
|
||||
{
|
||||
@ -1058,7 +1060,7 @@ int asoc_sdw_init_simple_dai_link(struct device *dev, struct snd_soc_dai_link *d
|
||||
|
||||
asoc_sdw_init_dai_link(dev, dai_links, be_id, name, playback, capture,
|
||||
&dlc[0], 1, &dlc[1], num_platforms,
|
||||
&dlc[2], 1, init, ops);
|
||||
&dlc[2], 1, no_pcm, init, ops);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user