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.
This commit is contained in:
commit
850d174696
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -207,8 +207,8 @@ static int imx_audmix_probe(struct platform_device *pdev)
|
||||
for (i = 0; i < num_dai; i++) {
|
||||
struct snd_soc_dai_link_component *dlc;
|
||||
|
||||
/* for CPU/Codec x 2 */
|
||||
dlc = devm_kcalloc(&pdev->dev, 4, sizeof(*dlc), GFP_KERNEL);
|
||||
/* for CPU x 2 */
|
||||
dlc = devm_kcalloc(&pdev->dev, 2, sizeof(*dlc), GFP_KERNEL);
|
||||
if (!dlc)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -244,7 +244,7 @@ static int imx_audmix_probe(struct platform_device *pdev)
|
||||
*/
|
||||
priv->dai[i].cpus =
|
||||
priv->dai[i].platforms = &dlc[0];
|
||||
priv->dai[i].codecs = &dlc[1];
|
||||
priv->dai[i].codecs = &asoc_dummy_dlc;
|
||||
|
||||
priv->dai[i].num_cpus = 1;
|
||||
priv->dai[i].num_codecs = 1;
|
||||
@ -252,8 +252,6 @@ static int imx_audmix_probe(struct platform_device *pdev)
|
||||
|
||||
priv->dai[i].name = dai_name;
|
||||
priv->dai[i].stream_name = "HiFi-AUDMIX-FE";
|
||||
priv->dai[i].codecs->dai_name = "snd-soc-dummy-dai";
|
||||
priv->dai[i].codecs->name = "snd-soc-dummy";
|
||||
priv->dai[i].cpus->of_node = args.np;
|
||||
priv->dai[i].cpus->dai_name = dev_name(&cpu_pdev->dev);
|
||||
priv->dai[i].dynamic = 1;
|
||||
@ -270,15 +268,13 @@ static int imx_audmix_probe(struct platform_device *pdev)
|
||||
be_cp = devm_kasprintf(&pdev->dev, GFP_KERNEL,
|
||||
"AUDMIX-Capture-%d", i);
|
||||
|
||||
priv->dai[num_dai + i].cpus = &dlc[2];
|
||||
priv->dai[num_dai + i].codecs = &dlc[3];
|
||||
priv->dai[num_dai + i].cpus = &dlc[1];
|
||||
priv->dai[num_dai + i].codecs = &asoc_dummy_dlc;
|
||||
|
||||
priv->dai[num_dai + i].num_cpus = 1;
|
||||
priv->dai[num_dai + i].num_codecs = 1;
|
||||
|
||||
priv->dai[num_dai + i].name = be_name;
|
||||
priv->dai[num_dai + i].codecs->dai_name = "snd-soc-dummy-dai";
|
||||
priv->dai[num_dai + i].codecs->name = "snd-soc-dummy";
|
||||
priv->dai[num_dai + i].cpus->of_node = audmix_np;
|
||||
priv->dai[num_dai + i].cpus->dai_name = be_name;
|
||||
priv->dai[num_dai + i].no_pcm = 1;
|
||||
|
@ -615,17 +615,8 @@ static int imx_card_parse_of(struct imx_card_data *data)
|
||||
plat_data->type = CODEC_AK5552;
|
||||
|
||||
} else {
|
||||
dlc = devm_kzalloc(dev, sizeof(*dlc), GFP_KERNEL);
|
||||
if (!dlc) {
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
link->codecs = dlc;
|
||||
link->codecs = &asoc_dummy_dlc;
|
||||
link->num_codecs = 1;
|
||||
|
||||
link->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
link->codecs->name = "snd-soc-dummy";
|
||||
}
|
||||
|
||||
if (!strncmp(link->name, "HiFi-ASRC-FE", 12)) {
|
||||
|
@ -92,8 +92,7 @@ static int imx_rpmsg_probe(struct platform_device *pdev)
|
||||
/* Optional codec node */
|
||||
ret = of_parse_phandle_with_fixed_args(np, "audio-codec", 0, 0, &args);
|
||||
if (ret) {
|
||||
data->dai.codecs->dai_name = "snd-soc-dummy-dai";
|
||||
data->dai.codecs->name = "snd-soc-dummy";
|
||||
*data->dai.codecs = asoc_dummy_dlc;
|
||||
} else {
|
||||
struct clk *clk;
|
||||
|
||||
|
@ -26,7 +26,7 @@ static int imx_spdif_audio_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
|
||||
comp = devm_kzalloc(&pdev->dev, 2 * sizeof(*comp), GFP_KERNEL);
|
||||
comp = devm_kzalloc(&pdev->dev, sizeof(*comp), GFP_KERNEL);
|
||||
if (!data || !comp) {
|
||||
ret = -ENOMEM;
|
||||
goto end;
|
||||
@ -37,8 +37,8 @@ static int imx_spdif_audio_probe(struct platform_device *pdev)
|
||||
* platform is using soc-generic-dmaengine-pcm
|
||||
*/
|
||||
data->dai.cpus =
|
||||
data->dai.platforms = &comp[0];
|
||||
data->dai.codecs = &comp[1];
|
||||
data->dai.platforms = comp;
|
||||
data->dai.codecs = &asoc_dummy_dlc;
|
||||
|
||||
data->dai.num_cpus = 1;
|
||||
data->dai.num_codecs = 1;
|
||||
@ -46,8 +46,6 @@ static int imx_spdif_audio_probe(struct platform_device *pdev)
|
||||
|
||||
data->dai.name = "S/PDIF PCM";
|
||||
data->dai.stream_name = "S/PDIF PCM";
|
||||
data->dai.codecs->dai_name = "snd-soc-dummy-dai";
|
||||
data->dai.codecs->name = "snd-soc-dummy";
|
||||
data->dai.cpus->of_node = spdif_np;
|
||||
data->dai.playback_only = true;
|
||||
data->dai.capture_only = true;
|
||||
|
@ -889,11 +889,6 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
|
||||
li->link, dai_num, cnf_num);
|
||||
|
||||
/* dummy CPU/Codec */
|
||||
priv->dummy.of_node = NULL;
|
||||
priv->dummy.dai_name = "snd-soc-dummy-dai";
|
||||
priv->dummy.name = "snd-soc-dummy";
|
||||
|
||||
priv->dai_props = dai_props;
|
||||
priv->dai_link = dai_link;
|
||||
priv->dais = dais;
|
||||
@ -919,7 +914,7 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
} else {
|
||||
/* DPCM Be's CPU = dummy */
|
||||
dai_props[i].cpus =
|
||||
dai_link[i].cpus = &priv->dummy;
|
||||
dai_link[i].cpus = &asoc_dummy_dlc;
|
||||
dai_props[i].num.cpus =
|
||||
dai_link[i].num_cpus = 1;
|
||||
}
|
||||
@ -943,7 +938,7 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
} else {
|
||||
/* DPCM Fe's Codec = dummy */
|
||||
dai_props[i].codecs =
|
||||
dai_link[i].codecs = &priv->dummy;
|
||||
dai_link[i].codecs = &asoc_dummy_dlc;
|
||||
dai_props[i].num.codecs =
|
||||
dai_link[i].num_codecs = 1;
|
||||
}
|
||||
|
@ -28,13 +28,11 @@ static int avs_create_dai_link(struct device *dev, const char *platform_name, in
|
||||
|
||||
dl->name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-Codec", ssp_port);
|
||||
dl->cpus = devm_kzalloc(dev, sizeof(*dl->cpus), GFP_KERNEL);
|
||||
dl->codecs = devm_kzalloc(dev, sizeof(*dl->codecs), GFP_KERNEL);
|
||||
if (!dl->name || !dl->cpus || !dl->codecs)
|
||||
if (!dl->name || !dl->cpus)
|
||||
return -ENOMEM;
|
||||
|
||||
dl->cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", ssp_port);
|
||||
dl->codecs->name = devm_kasprintf(dev, GFP_KERNEL, "snd-soc-dummy");
|
||||
dl->codecs->dai_name = devm_kasprintf(dev, GFP_KERNEL, "snd-soc-dummy-dai");
|
||||
dl->codecs = &asoc_dummy_dlc;
|
||||
if (!dl->cpus->dai_name || !dl->codecs->name || !dl->codecs->dai_name)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -254,7 +254,6 @@ static void hdmi_link_init(struct snd_soc_card *card,
|
||||
struct sof_card_private *ctx,
|
||||
struct snd_soc_acpi_mach *mach)
|
||||
{
|
||||
struct snd_soc_dai_link *link;
|
||||
int i;
|
||||
|
||||
if (mach->mach_params.common_hdmi_codec_drv &&
|
||||
@ -267,11 +266,8 @@ static void hdmi_link_init(struct snd_soc_card *card,
|
||||
* if HDMI is not enabled in kernel config, or
|
||||
* hdmi codec is not supported
|
||||
*/
|
||||
for (i = HDMI_LINK_START; i <= HDMI_LINE_END; i++) {
|
||||
link = &card->dai_link[i];
|
||||
link->codecs[0].name = "snd-soc-dummy";
|
||||
link->codecs[0].dai_name = "snd-soc-dummy-dai";
|
||||
}
|
||||
for (i = HDMI_LINK_START; i <= HDMI_LINE_END; i++)
|
||||
card->dai_link[i].codecs[0] = asoc_dummy_dlc;
|
||||
}
|
||||
|
||||
static int snd_ehl_rt5660_probe(struct platform_device *pdev)
|
||||
|
@ -61,9 +61,6 @@ static const struct snd_soc_dapm_route skl_hda_map[] = {
|
||||
{ "Alt Analog CPU Capture", NULL, "Alt Analog Codec Capture" },
|
||||
};
|
||||
|
||||
SND_SOC_DAILINK_DEF(dummy_codec,
|
||||
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")));
|
||||
|
||||
static int skl_hda_card_late_probe(struct snd_soc_card *card)
|
||||
{
|
||||
return skl_hda_hdmi_jack_init(card);
|
||||
@ -158,9 +155,8 @@ static int skl_hda_fill_card_info(struct snd_soc_acpi_mach_params *mach_params)
|
||||
card->num_dapm_widgets = ARRAY_SIZE(skl_hda_widgets);
|
||||
if (!ctx->idisp_codec) {
|
||||
for (i = 0; i < IDISP_DAI_COUNT; i++) {
|
||||
skl_hda_be_dai_links[i].codecs = dummy_codec;
|
||||
skl_hda_be_dai_links[i].num_codecs =
|
||||
ARRAY_SIZE(dummy_codec);
|
||||
skl_hda_be_dai_links[i].codecs = &asoc_dummy_dlc;
|
||||
skl_hda_be_dai_links[i].num_codecs = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -296,13 +296,6 @@ static struct snd_soc_dai_link_component dmic_component[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component dummy_component[] = {
|
||||
{
|
||||
.name = "snd-soc-dummy",
|
||||
.dai_name = "snd-soc-dummy-dai",
|
||||
}
|
||||
};
|
||||
|
||||
static int create_spk_amp_dai_links(struct device *dev,
|
||||
struct snd_soc_dai_link *links,
|
||||
struct snd_soc_dai_link_component *cpus,
|
||||
@ -510,8 +503,8 @@ static int create_bt_offload_dai_links(struct device *dev,
|
||||
goto devm_err;
|
||||
|
||||
links[*id].id = *id;
|
||||
links[*id].codecs = dummy_component;
|
||||
links[*id].num_codecs = ARRAY_SIZE(dummy_component);
|
||||
links[*id].codecs = &asoc_dummy_dlc;
|
||||
links[*id].num_codecs = 1;
|
||||
links[*id].platforms = platform_component;
|
||||
links[*id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
|
||||
|
@ -393,13 +393,6 @@ static struct snd_soc_dai_link_component dmic_component[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component dummy_component[] = {
|
||||
{
|
||||
.name = "snd-soc-dummy",
|
||||
.dai_name = "snd-soc-dummy-dai",
|
||||
}
|
||||
};
|
||||
|
||||
static int sof_es8336_late_probe(struct snd_soc_card *card)
|
||||
{
|
||||
struct sof_es8336_private *priv = snd_soc_card_get_drvdata(card);
|
||||
@ -572,8 +565,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
if (!links[id].name)
|
||||
return NULL;
|
||||
links[id].id = id + hdmi_id_offset;
|
||||
links[id].codecs = dummy_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(dummy_component);
|
||||
links[id].codecs = &asoc_dummy_dlc;
|
||||
links[id].num_codecs = 1;
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
links[id].dpcm_capture = 1;
|
||||
|
@ -346,13 +346,6 @@ static struct snd_soc_dai_link_component nau8318_components[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component dummy_component[] = {
|
||||
{
|
||||
.name = "snd-soc-dummy",
|
||||
.dai_name = "snd-soc-dummy-dai",
|
||||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
int ssp_codec,
|
||||
int ssp_amp,
|
||||
@ -532,8 +525,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
links[id].name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
||||
if (!links[id].name)
|
||||
goto devm_err;
|
||||
links[id].codecs = dummy_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(dummy_component);
|
||||
links[id].codecs = &asoc_dummy_dlc;
|
||||
links[id].num_codecs = 1;
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
links[id].dpcm_playback = 1;
|
||||
|
@ -331,8 +331,7 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
devm_kasprintf(dev, GFP_KERNEL,
|
||||
"intel-hdmi-hifi%d", i);
|
||||
} else {
|
||||
idisp_components[i - 1].name = "snd-soc-dummy";
|
||||
idisp_components[i - 1].dai_name = "snd-soc-dummy-dai";
|
||||
idisp_components[i - 1] = asoc_dummy_dlc;
|
||||
}
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
|
@ -607,13 +607,6 @@ static struct snd_soc_dai_link_component dmic_component[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component dummy_component[] = {
|
||||
{
|
||||
.name = "snd-soc-dummy",
|
||||
.dai_name = "snd-soc-dummy-dai",
|
||||
}
|
||||
};
|
||||
|
||||
#define IDISP_CODEC_MASK 0x4
|
||||
|
||||
static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
@ -745,8 +738,7 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
} else {
|
||||
idisp_components[i - 1].name = "snd-soc-dummy";
|
||||
idisp_components[i - 1].dai_name = "snd-soc-dummy-dai";
|
||||
idisp_components[i - 1] = asoc_dummy_dlc;
|
||||
}
|
||||
|
||||
links[id].codecs = &idisp_components[i - 1];
|
||||
@ -841,8 +833,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
links[id].name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
||||
if (!links[id].name)
|
||||
goto devm_err;
|
||||
links[id].codecs = dummy_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(dummy_component);
|
||||
links[id].codecs = &asoc_dummy_dlc;
|
||||
links[id].num_codecs = 1;
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
links[id].dpcm_playback = 1;
|
||||
|
@ -1488,8 +1488,7 @@ HDMI:
|
||||
if (!idisp_components[i].dai_name)
|
||||
return -ENOMEM;
|
||||
} else {
|
||||
idisp_components[i].name = "snd-soc-dummy";
|
||||
idisp_components[i].dai_name = "snd-soc-dummy-dai";
|
||||
idisp_components[i] = asoc_dummy_dlc;
|
||||
}
|
||||
|
||||
cpu_name = devm_kasprintf(dev, GFP_KERNEL,
|
||||
@ -1514,21 +1513,13 @@ HDMI:
|
||||
if (!name)
|
||||
return -ENOMEM;
|
||||
|
||||
ssp_components = devm_kzalloc(dev, sizeof(*ssp_components),
|
||||
GFP_KERNEL);
|
||||
if (!ssp_components)
|
||||
return -ENOMEM;
|
||||
|
||||
ssp_components->name = "snd-soc-dummy";
|
||||
ssp_components->dai_name = "snd-soc-dummy-dai";
|
||||
|
||||
cpu_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", port);
|
||||
if (!cpu_name)
|
||||
return -ENOMEM;
|
||||
|
||||
cpus[cpu_id].dai_name = cpu_name;
|
||||
init_dai_link(dev, links + link_index, be_id, name, 1, 1,
|
||||
cpus + cpu_id, 1, ssp_components, 1, NULL, NULL);
|
||||
cpus + cpu_id, 1, &asoc_dummy_dlc, 1, NULL, NULL);
|
||||
}
|
||||
|
||||
card->dai_link = links;
|
||||
|
@ -167,13 +167,6 @@ static struct snd_soc_dai_link_component dmic_component[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_link_component dummy_component[] = {
|
||||
{
|
||||
.name = "snd-soc-dummy",
|
||||
.dai_name = "snd-soc-dummy-dai",
|
||||
}
|
||||
};
|
||||
|
||||
static int sof_hdmi_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct sof_card_private *ctx = snd_soc_card_get_drvdata(rtd->card);
|
||||
@ -233,8 +226,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
if (!links[id].name)
|
||||
return NULL;
|
||||
links[id].id = id;
|
||||
links[id].codecs = dummy_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(dummy_component);
|
||||
links[id].codecs = &asoc_dummy_dlc;
|
||||
links[id].num_codecs = 1;
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
links[id].dpcm_capture = 1;
|
||||
@ -331,8 +324,7 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
if (!idisp_components[i - 1].dai_name)
|
||||
goto devm_err;
|
||||
} else {
|
||||
idisp_components[i - 1].name = "snd-soc-dummy";
|
||||
idisp_components[i - 1].dai_name = "snd-soc-dummy-dai";
|
||||
idisp_components[i - 1] = asoc_dummy_dlc;
|
||||
}
|
||||
|
||||
links[id].codecs = &idisp_components[i - 1];
|
||||
@ -360,8 +352,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
||||
links[id].name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port);
|
||||
if (!links[id].name)
|
||||
goto devm_err;
|
||||
links[id].codecs = dummy_component;
|
||||
links[id].num_codecs = ARRAY_SIZE(dummy_component);
|
||||
links[id].codecs = &asoc_dummy_dlc;
|
||||
links[id].num_codecs = 1;
|
||||
links[id].platforms = platform_component;
|
||||
links[id].num_platforms = ARRAY_SIZE(platform_component);
|
||||
links[id].dpcm_playback = 1;
|
||||
|
@ -120,20 +120,18 @@ static int axg_card_add_tdm_loopback(struct snd_soc_card *card,
|
||||
if (!lb->name)
|
||||
return -ENOMEM;
|
||||
|
||||
dlc = devm_kzalloc(card->dev, 2 * sizeof(*dlc), GFP_KERNEL);
|
||||
dlc = devm_kzalloc(card->dev, sizeof(*dlc), GFP_KERNEL);
|
||||
if (!dlc)
|
||||
return -ENOMEM;
|
||||
|
||||
lb->cpus = &dlc[0];
|
||||
lb->codecs = &dlc[1];
|
||||
lb->cpus = dlc;
|
||||
lb->codecs = &asoc_dummy_dlc;
|
||||
lb->num_cpus = 1;
|
||||
lb->num_codecs = 1;
|
||||
|
||||
lb->stream_name = lb->name;
|
||||
lb->cpus->of_node = pad->cpus->of_node;
|
||||
lb->cpus->dai_name = "TDM Loopback";
|
||||
lb->codecs->name = "snd-soc-dummy";
|
||||
lb->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
lb->dpcm_capture = 1;
|
||||
lb->no_pcm = 1;
|
||||
lb->ops = &axg_card_tdm_be_ops;
|
||||
|
@ -183,21 +183,13 @@ int meson_card_set_fe_link(struct snd_soc_card *card,
|
||||
struct device_node *node,
|
||||
bool is_playback)
|
||||
{
|
||||
struct snd_soc_dai_link_component *codec;
|
||||
|
||||
codec = devm_kzalloc(card->dev, sizeof(*codec), GFP_KERNEL);
|
||||
if (!codec)
|
||||
return -ENOMEM;
|
||||
|
||||
link->codecs = codec;
|
||||
link->codecs = &asoc_dummy_dlc;
|
||||
link->num_codecs = 1;
|
||||
|
||||
link->dynamic = 1;
|
||||
link->dpcm_merged_format = 1;
|
||||
link->dpcm_merged_chan = 1;
|
||||
link->dpcm_merged_rate = 1;
|
||||
link->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
link->codecs->name = "snd-soc-dummy";
|
||||
|
||||
if (is_playback)
|
||||
link->dpcm_playback = 1;
|
||||
|
@ -140,17 +140,8 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
|
||||
}
|
||||
} else {
|
||||
/* DPCM frontend */
|
||||
dlc = devm_kzalloc(dev, sizeof(*dlc), GFP_KERNEL);
|
||||
if (!dlc) {
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
link->codecs = dlc;
|
||||
link->codecs = &asoc_dummy_dlc;
|
||||
link->num_codecs = 1;
|
||||
|
||||
link->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
link->codecs->name = "snd-soc-dummy";
|
||||
link->dynamic = 1;
|
||||
}
|
||||
|
||||
|
@ -1693,10 +1693,7 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
|
||||
dlc = (struct snd_soc_dai_link_component *)(link + 1);
|
||||
|
||||
link->cpus = &dlc[0];
|
||||
link->codecs = &dlc[1];
|
||||
|
||||
link->num_cpus = 1;
|
||||
link->num_codecs = 1;
|
||||
|
||||
link->dobj.index = tplg->index;
|
||||
link->dobj.type = SND_SOC_DOBJ_DAI_LINK;
|
||||
@ -1721,16 +1718,19 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
|
||||
}
|
||||
}
|
||||
|
||||
link->codecs->name = "snd-soc-dummy";
|
||||
link->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
|
||||
/*
|
||||
* Many topology is assuming link has Platform.
|
||||
* This might be overwritten at soc_tplg_dai_link_load().
|
||||
* Many topology are assuming link has Codec / Platform, and
|
||||
* these might be overwritten at soc_tplg_dai_link_load().
|
||||
* Don't use &asoc_dummy_dlc here.
|
||||
*/
|
||||
link->platforms = &dlc[2];
|
||||
link->platforms->name = "snd-soc-dummy";
|
||||
link->num_platforms = 1;
|
||||
link->codecs = &dlc[1]; /* Don't use &asoc_dummy_dlc here */
|
||||
link->codecs->name = "snd-soc-dummy";
|
||||
link->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
link->num_codecs = 1;
|
||||
|
||||
link->platforms = &dlc[2]; /* Don't use &asoc_dummy_dlc here */
|
||||
link->platforms->name = "snd-soc-dummy";
|
||||
link->num_platforms = 1;
|
||||
|
||||
/* enable DPCM */
|
||||
link->dynamic = 1;
|
||||
|
@ -224,6 +224,13 @@ int snd_soc_component_is_dummy(struct snd_soc_component *component)
|
||||
(component->driver == &dummy_codec));
|
||||
}
|
||||
|
||||
struct snd_soc_dai_link_component asoc_dummy_dlc = {
|
||||
.of_node = NULL,
|
||||
.dai_name = "snd-soc-dummy-dai",
|
||||
.name = "snd-soc-dummy",
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(asoc_dummy_dlc);
|
||||
|
||||
static int snd_soc_dummy_probe(struct platform_device *pdev)
|
||||
{
|
||||
int ret;
|
||||
|
@ -32,7 +32,7 @@ static int sof_nocodec_bes_setup(struct device *dev,
|
||||
|
||||
/* set up BE dai_links */
|
||||
for (i = 0; i < link_num; i++) {
|
||||
dlc = devm_kcalloc(dev, 3, sizeof(*dlc), GFP_KERNEL);
|
||||
dlc = devm_kcalloc(dev, 2, sizeof(*dlc), GFP_KERNEL);
|
||||
if (!dlc)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -44,8 +44,8 @@ static int sof_nocodec_bes_setup(struct device *dev,
|
||||
links[i].stream_name = links[i].name;
|
||||
|
||||
links[i].cpus = &dlc[0];
|
||||
links[i].codecs = &dlc[1];
|
||||
links[i].platforms = &dlc[2];
|
||||
links[i].codecs = &asoc_dummy_dlc;
|
||||
links[i].platforms = &dlc[1];
|
||||
|
||||
links[i].num_cpus = 1;
|
||||
links[i].num_codecs = 1;
|
||||
@ -55,8 +55,6 @@ static int sof_nocodec_bes_setup(struct device *dev,
|
||||
links[i].no_pcm = 1;
|
||||
links[i].cpus->dai_name = drv[i].name;
|
||||
links[i].platforms->name = dev_name(dev->parent);
|
||||
links[i].codecs->dai_name = "snd-soc-dummy-dai";
|
||||
links[i].codecs->name = "snd-soc-dummy";
|
||||
if (drv[i].playback.channels_min)
|
||||
links[i].dpcm_playback = 1;
|
||||
if (drv[i].capture.channels_min)
|
||||
|
@ -365,19 +365,17 @@ static int omap_hdmi_audio_probe(struct platform_device *pdev)
|
||||
if (!card->dai_link)
|
||||
return -ENOMEM;
|
||||
|
||||
compnent = devm_kzalloc(dev, 2 * sizeof(*compnent), GFP_KERNEL);
|
||||
compnent = devm_kzalloc(dev, sizeof(*compnent), GFP_KERNEL);
|
||||
if (!compnent)
|
||||
return -ENOMEM;
|
||||
card->dai_link->cpus = &compnent[0];
|
||||
card->dai_link->cpus = compnent;
|
||||
card->dai_link->num_cpus = 1;
|
||||
card->dai_link->codecs = &compnent[1];
|
||||
card->dai_link->codecs = &asoc_dummy_dlc;
|
||||
card->dai_link->num_codecs = 1;
|
||||
|
||||
card->dai_link->name = card->name;
|
||||
card->dai_link->stream_name = card->name;
|
||||
card->dai_link->cpus->dai_name = dev_name(ad->dssdev);
|
||||
card->dai_link->codecs->name = "snd-soc-dummy";
|
||||
card->dai_link->codecs->dai_name = "snd-soc-dummy-dai";
|
||||
card->num_links = 1;
|
||||
card->dev = dev;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user