Commit 0c7985e1 authored by Mark Brown's avatar Mark Brown

Merge existing fixes from asoc/for-5.15

parents 6880fa6c 7bd5d979
...@@ -17891,7 +17891,8 @@ M: Olivier Moysan <olivier.moysan@foss.st.com> ...@@ -17891,7 +17891,8 @@ M: Olivier Moysan <olivier.moysan@foss.st.com>
M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com> M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/iio/adc/st,stm32-*.yaml F: Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml
F: Documentation/devicetree/bindings/sound/st,stm32-*.yaml
F: sound/soc/stm/ F: sound/soc/stm/
STM32 TIMER/LPTIMER DRIVERS STM32 TIMER/LPTIMER DRIVERS
......
...@@ -1073,6 +1073,16 @@ static int fsl_esai_probe(struct platform_device *pdev) ...@@ -1073,6 +1073,16 @@ static int fsl_esai_probe(struct platform_device *pdev)
if (ret < 0) if (ret < 0)
goto err_pm_get_sync; goto err_pm_get_sync;
/*
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret = imx_pcm_dma_init(pdev, IMX_ESAI_DMABUF_SIZE);
if (ret) {
dev_err(&pdev->dev, "failed to init imx pcm dma: %d\n", ret);
goto err_pm_get_sync;
}
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_esai_component, ret = devm_snd_soc_register_component(&pdev->dev, &fsl_esai_component,
&fsl_esai_dai, 1); &fsl_esai_dai, 1);
if (ret) { if (ret) {
...@@ -1082,12 +1092,6 @@ static int fsl_esai_probe(struct platform_device *pdev) ...@@ -1082,12 +1092,6 @@ static int fsl_esai_probe(struct platform_device *pdev)
INIT_WORK(&esai_priv->work, fsl_esai_hw_reset); INIT_WORK(&esai_priv->work, fsl_esai_hw_reset);
ret = imx_pcm_dma_init(pdev, IMX_ESAI_DMABUF_SIZE);
if (ret) {
dev_err(&pdev->dev, "failed to init imx pcm dma: %d\n", ret);
goto err_pm_get_sync;
}
return ret; return ret;
err_pm_get_sync: err_pm_get_sync:
......
...@@ -737,18 +737,23 @@ static int fsl_micfil_probe(struct platform_device *pdev) ...@@ -737,18 +737,23 @@ static int fsl_micfil_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
regcache_cache_only(micfil->regmap, true); regcache_cache_only(micfil->regmap, true);
/*
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret) {
dev_err(&pdev->dev, "failed to pcm register\n");
return ret;
}
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_micfil_component, ret = devm_snd_soc_register_component(&pdev->dev, &fsl_micfil_component,
&fsl_micfil_dai, 1); &fsl_micfil_dai, 1);
if (ret) { if (ret) {
dev_err(&pdev->dev, "failed to register component %s\n", dev_err(&pdev->dev, "failed to register component %s\n",
fsl_micfil_component.name); fsl_micfil_component.name);
return ret;
} }
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret)
dev_err(&pdev->dev, "failed to pcm register\n");
return ret; return ret;
} }
......
...@@ -1152,11 +1152,10 @@ static int fsl_sai_probe(struct platform_device *pdev) ...@@ -1152,11 +1152,10 @@ static int fsl_sai_probe(struct platform_device *pdev)
if (ret < 0) if (ret < 0)
goto err_pm_get_sync; goto err_pm_get_sync;
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_component, /*
&sai->cpu_dai_drv, 1); * Register platform component before registering cpu dai for there
if (ret) * is not defer probe for platform component in snd_soc_add_pcm_runtime().
goto err_pm_get_sync; */
if (sai->soc_data->use_imx_pcm) { if (sai->soc_data->use_imx_pcm) {
ret = imx_pcm_dma_init(pdev, IMX_SAI_DMABUF_SIZE); ret = imx_pcm_dma_init(pdev, IMX_SAI_DMABUF_SIZE);
if (ret) if (ret)
...@@ -1167,6 +1166,11 @@ static int fsl_sai_probe(struct platform_device *pdev) ...@@ -1167,6 +1166,11 @@ static int fsl_sai_probe(struct platform_device *pdev)
goto err_pm_get_sync; goto err_pm_get_sync;
} }
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_component,
&sai->cpu_dai_drv, 1);
if (ret)
goto err_pm_get_sync;
return ret; return ret;
err_pm_get_sync: err_pm_get_sync:
......
...@@ -1434,16 +1434,20 @@ static int fsl_spdif_probe(struct platform_device *pdev) ...@@ -1434,16 +1434,20 @@ static int fsl_spdif_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
regcache_cache_only(spdif_priv->regmap, true); regcache_cache_only(spdif_priv->regmap, true);
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_spdif_component, /*
&spdif_priv->cpu_dai_drv, 1); * Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret = imx_pcm_dma_init(pdev, IMX_SPDIF_DMABUF_SIZE);
if (ret) { if (ret) {
dev_err(&pdev->dev, "failed to register DAI: %d\n", ret); dev_err_probe(&pdev->dev, ret, "imx_pcm_dma_init failed\n");
goto err_pm_disable; goto err_pm_disable;
} }
ret = imx_pcm_dma_init(pdev, IMX_SPDIF_DMABUF_SIZE); ret = devm_snd_soc_register_component(&pdev->dev, &fsl_spdif_component,
&spdif_priv->cpu_dai_drv, 1);
if (ret) { if (ret) {
dev_err_probe(&pdev->dev, ret, "imx_pcm_dma_init failed\n"); dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
goto err_pm_disable; goto err_pm_disable;
} }
......
...@@ -1215,18 +1215,23 @@ static int fsl_xcvr_probe(struct platform_device *pdev) ...@@ -1215,18 +1215,23 @@ static int fsl_xcvr_probe(struct platform_device *pdev)
pm_runtime_enable(dev); pm_runtime_enable(dev);
regcache_cache_only(xcvr->regmap, true); regcache_cache_only(xcvr->regmap, true);
/*
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret = devm_snd_dmaengine_pcm_register(dev, NULL, 0);
if (ret) {
dev_err(dev, "failed to pcm register\n");
return ret;
}
ret = devm_snd_soc_register_component(dev, &fsl_xcvr_comp, ret = devm_snd_soc_register_component(dev, &fsl_xcvr_comp,
&fsl_xcvr_dai, 1); &fsl_xcvr_dai, 1);
if (ret) { if (ret) {
dev_err(dev, "failed to register component %s\n", dev_err(dev, "failed to register component %s\n",
fsl_xcvr_comp.name); fsl_xcvr_comp.name);
return ret;
} }
ret = devm_snd_dmaengine_pcm_register(dev, NULL, 0);
if (ret)
dev_err(dev, "failed to pcm register\n");
return ret; return ret;
} }
......
...@@ -929,6 +929,11 @@ static int create_sdw_dailink(struct snd_soc_card *card, ...@@ -929,6 +929,11 @@ static int create_sdw_dailink(struct snd_soc_card *card,
cpus + *cpu_id, cpu_dai_num, cpus + *cpu_id, cpu_dai_num,
codecs, codec_num, codecs, codec_num,
NULL, &sdw_ops); NULL, &sdw_ops);
/*
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
* based on wait_for_completion(), tag them as 'nonatomic'.
*/
dai_links[*be_index].nonatomic = true;
ret = set_codec_init_func(card, link, dai_links + (*be_index)++, ret = set_codec_init_func(card, link, dai_links + (*be_index)++,
playback, group_id); playback, group_id);
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_MEDIATEK config SND_SOC_MEDIATEK
tristate tristate
select REGMAP_MMIO
config SND_SOC_MT2701 config SND_SOC_MT2701
tristate "ASoC support for Mediatek MT2701 chip" tristate "ASoC support for Mediatek MT2701 chip"
...@@ -188,7 +189,9 @@ config SND_SOC_MT8192_MT6359_RT1015_RT5682 ...@@ -188,7 +189,9 @@ config SND_SOC_MT8192_MT6359_RT1015_RT5682
config SND_SOC_MT8195 config SND_SOC_MT8195
tristate "ASoC support for Mediatek MT8195 chip" tristate "ASoC support for Mediatek MT8195 chip"
depends on ARCH_MEDIATEK || COMPILE_TEST depends on ARCH_MEDIATEK || COMPILE_TEST
depends on COMMON_CLK
select SND_SOC_MEDIATEK select SND_SOC_MEDIATEK
select MFD_SYSCON if SND_SOC_MT6359
help help
This adds ASoC platform driver support for Mediatek MT8195 chip This adds ASoC platform driver support for Mediatek MT8195 chip
that can be used with other codecs. that can be used with other codecs.
......
...@@ -334,9 +334,11 @@ int mtk_afe_suspend(struct snd_soc_component *component) ...@@ -334,9 +334,11 @@ int mtk_afe_suspend(struct snd_soc_component *component)
devm_kcalloc(dev, afe->reg_back_up_list_num, devm_kcalloc(dev, afe->reg_back_up_list_num,
sizeof(unsigned int), GFP_KERNEL); sizeof(unsigned int), GFP_KERNEL);
for (i = 0; i < afe->reg_back_up_list_num; i++) if (afe->reg_back_up) {
regmap_read(regmap, afe->reg_back_up_list[i], for (i = 0; i < afe->reg_back_up_list_num; i++)
&afe->reg_back_up[i]); regmap_read(regmap, afe->reg_back_up_list[i],
&afe->reg_back_up[i]);
}
afe->suspended = true; afe->suspended = true;
afe->runtime_suspend(dev); afe->runtime_suspend(dev);
...@@ -356,12 +358,13 @@ int mtk_afe_resume(struct snd_soc_component *component) ...@@ -356,12 +358,13 @@ int mtk_afe_resume(struct snd_soc_component *component)
afe->runtime_resume(dev); afe->runtime_resume(dev);
if (!afe->reg_back_up) if (!afe->reg_back_up) {
dev_dbg(dev, "%s no reg_backup\n", __func__); dev_dbg(dev, "%s no reg_backup\n", __func__);
} else {
for (i = 0; i < afe->reg_back_up_list_num; i++) for (i = 0; i < afe->reg_back_up_list_num; i++)
mtk_regmap_write(regmap, afe->reg_back_up_list[i], mtk_regmap_write(regmap, afe->reg_back_up_list[i],
afe->reg_back_up[i]); afe->reg_back_up[i]);
}
afe->suspended = false; afe->suspended = false;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment