File tree Expand file tree Collapse file tree 9 files changed +69
-35
lines changed Expand file tree Collapse file tree 9 files changed +69
-35
lines changed Original file line number Diff line number Diff line change @@ -17891,7 +17891,8 @@ M: Olivier Moysan <olivier.moysan@foss.st.com>
1789117891M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
1789217892L: alsa-devel@alsa-project.org (moderated for non-subscribers)
1789317893S: Maintained
17894- F: Documentation/devicetree/bindings/iio/adc/st,stm32-*.yaml
17894+ F: Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml
17895+ F: Documentation/devicetree/bindings/sound/st,stm32-*.yaml
1789517896F: sound/soc/stm/
1789617897
1789717898STM32 TIMER/LPTIMER DRIVERS
Original file line number Diff line number Diff line change @@ -1073,6 +1073,16 @@ static int fsl_esai_probe(struct platform_device *pdev)
10731073 if (ret < 0 )
10741074 goto err_pm_get_sync ;
10751075
1076+ /*
1077+ * Register platform component before registering cpu dai for there
1078+ * is not defer probe for platform component in snd_soc_add_pcm_runtime().
1079+ */
1080+ ret = imx_pcm_dma_init (pdev , IMX_ESAI_DMABUF_SIZE );
1081+ if (ret ) {
1082+ dev_err (& pdev -> dev , "failed to init imx pcm dma: %d\n" , ret );
1083+ goto err_pm_get_sync ;
1084+ }
1085+
10761086 ret = devm_snd_soc_register_component (& pdev -> dev , & fsl_esai_component ,
10771087 & fsl_esai_dai , 1 );
10781088 if (ret ) {
@@ -1082,12 +1092,6 @@ static int fsl_esai_probe(struct platform_device *pdev)
10821092
10831093 INIT_WORK (& esai_priv -> work , fsl_esai_hw_reset );
10841094
1085- ret = imx_pcm_dma_init (pdev , IMX_ESAI_DMABUF_SIZE );
1086- if (ret ) {
1087- dev_err (& pdev -> dev , "failed to init imx pcm dma: %d\n" , ret );
1088- goto err_pm_get_sync ;
1089- }
1090-
10911095 return ret ;
10921096
10931097err_pm_get_sync :
Original file line number Diff line number Diff line change @@ -737,18 +737,23 @@ static int fsl_micfil_probe(struct platform_device *pdev)
737737 pm_runtime_enable (& pdev -> dev );
738738 regcache_cache_only (micfil -> regmap , true);
739739
740+ /*
741+ * Register platform component before registering cpu dai for there
742+ * is not defer probe for platform component in snd_soc_add_pcm_runtime().
743+ */
744+ ret = devm_snd_dmaengine_pcm_register (& pdev -> dev , NULL , 0 );
745+ if (ret ) {
746+ dev_err (& pdev -> dev , "failed to pcm register\n" );
747+ return ret ;
748+ }
749+
740750 ret = devm_snd_soc_register_component (& pdev -> dev , & fsl_micfil_component ,
741751 & fsl_micfil_dai , 1 );
742752 if (ret ) {
743753 dev_err (& pdev -> dev , "failed to register component %s\n" ,
744754 fsl_micfil_component .name );
745- return ret ;
746755 }
747756
748- ret = devm_snd_dmaengine_pcm_register (& pdev -> dev , NULL , 0 );
749- if (ret )
750- dev_err (& pdev -> dev , "failed to pcm register\n" );
751-
752757 return ret ;
753758}
754759
Original file line number Diff line number Diff line change @@ -1152,11 +1152,10 @@ static int fsl_sai_probe(struct platform_device *pdev)
11521152 if (ret < 0 )
11531153 goto err_pm_get_sync ;
11541154
1155- ret = devm_snd_soc_register_component (& pdev -> dev , & fsl_component ,
1156- & sai -> cpu_dai_drv , 1 );
1157- if (ret )
1158- goto err_pm_get_sync ;
1159-
1155+ /*
1156+ * Register platform component before registering cpu dai for there
1157+ * is not defer probe for platform component in snd_soc_add_pcm_runtime().
1158+ */
11601159 if (sai -> soc_data -> use_imx_pcm ) {
11611160 ret = imx_pcm_dma_init (pdev , IMX_SAI_DMABUF_SIZE );
11621161 if (ret )
@@ -1167,6 +1166,11 @@ static int fsl_sai_probe(struct platform_device *pdev)
11671166 goto err_pm_get_sync ;
11681167 }
11691168
1169+ ret = devm_snd_soc_register_component (& pdev -> dev , & fsl_component ,
1170+ & sai -> cpu_dai_drv , 1 );
1171+ if (ret )
1172+ goto err_pm_get_sync ;
1173+
11701174 return ret ;
11711175
11721176err_pm_get_sync :
Original file line number Diff line number Diff line change @@ -1434,16 +1434,20 @@ static int fsl_spdif_probe(struct platform_device *pdev)
14341434 pm_runtime_enable (& pdev -> dev );
14351435 regcache_cache_only (spdif_priv -> regmap , true);
14361436
1437- ret = devm_snd_soc_register_component (& pdev -> dev , & fsl_spdif_component ,
1438- & spdif_priv -> cpu_dai_drv , 1 );
1437+ /*
1438+ * Register platform component before registering cpu dai for there
1439+ * is not defer probe for platform component in snd_soc_add_pcm_runtime().
1440+ */
1441+ ret = imx_pcm_dma_init (pdev , IMX_SPDIF_DMABUF_SIZE );
14391442 if (ret ) {
1440- dev_err (& pdev -> dev , "failed to register DAI: %d \n", ret );
1443+ dev_err_probe (& pdev -> dev , ret , "imx_pcm_dma_init failed \n" );
14411444 goto err_pm_disable ;
14421445 }
14431446
1444- ret = imx_pcm_dma_init (pdev , IMX_SPDIF_DMABUF_SIZE );
1447+ ret = devm_snd_soc_register_component (& pdev -> dev , & fsl_spdif_component ,
1448+ & spdif_priv -> cpu_dai_drv , 1 );
14451449 if (ret ) {
1446- dev_err_probe (& pdev -> dev , ret , "imx_pcm_dma_init failed\n" );
1450+ dev_err (& pdev -> dev , " failed to register DAI: %d \n", ret );
14471451 goto err_pm_disable ;
14481452 }
14491453
Original file line number Diff line number Diff line change @@ -1215,18 +1215,23 @@ static int fsl_xcvr_probe(struct platform_device *pdev)
12151215 pm_runtime_enable (dev );
12161216 regcache_cache_only (xcvr -> regmap , true);
12171217
1218+ /*
1219+ * Register platform component before registering cpu dai for there
1220+ * is not defer probe for platform component in snd_soc_add_pcm_runtime().
1221+ */
1222+ ret = devm_snd_dmaengine_pcm_register (dev , NULL , 0 );
1223+ if (ret ) {
1224+ dev_err (dev , "failed to pcm register\n" );
1225+ return ret ;
1226+ }
1227+
12181228 ret = devm_snd_soc_register_component (dev , & fsl_xcvr_comp ,
12191229 & fsl_xcvr_dai , 1 );
12201230 if (ret ) {
12211231 dev_err (dev , "failed to register component %s\n" ,
12221232 fsl_xcvr_comp .name );
1223- return ret ;
12241233 }
12251234
1226- ret = devm_snd_dmaengine_pcm_register (dev , NULL , 0 );
1227- if (ret )
1228- dev_err (dev , "failed to pcm register\n" );
1229-
12301235 return ret ;
12311236}
12321237
Original file line number Diff line number Diff line change @@ -929,6 +929,11 @@ static int create_sdw_dailink(struct snd_soc_card *card,
929929 cpus + * cpu_id , cpu_dai_num ,
930930 codecs , codec_num ,
931931 NULL , & sdw_ops );
932+ /*
933+ * SoundWire DAILINKs use 'stream' functions and Bank Switch operations
934+ * based on wait_for_completion(), tag them as 'nonatomic'.
935+ */
936+ dai_links [* be_index ].nonatomic = true;
932937
933938 ret = set_codec_init_func (card , link , dai_links + (* be_index )++ ,
934939 playback , group_id );
Original file line number Diff line number Diff line change 11# SPDX-License-Identifier: GPL-2.0-only
22config SND_SOC_MEDIATEK
33 tristate
4+ select REGMAP_MMIO
45
56config SND_SOC_MT2701
67 tristate "ASoC support for Mediatek MT2701 chip"
@@ -188,7 +189,9 @@ config SND_SOC_MT8192_MT6359_RT1015_RT5682
188189config SND_SOC_MT8195
189190 tristate "ASoC support for Mediatek MT8195 chip"
190191 depends on ARCH_MEDIATEK || COMPILE_TEST
192+ depends on COMMON_CLK
191193 select SND_SOC_MEDIATEK
194+ select MFD_SYSCON if SND_SOC_MT6359
192195 help
193196 This adds ASoC platform driver support for Mediatek MT8195 chip
194197 that can be used with other codecs.
Original file line number Diff line number Diff line change @@ -334,9 +334,11 @@ int mtk_afe_suspend(struct snd_soc_component *component)
334334 devm_kcalloc (dev , afe -> reg_back_up_list_num ,
335335 sizeof (unsigned int ), GFP_KERNEL );
336336
337- for (i = 0 ; i < afe -> reg_back_up_list_num ; i ++ )
338- regmap_read (regmap , afe -> reg_back_up_list [i ],
339- & afe -> reg_back_up [i ]);
337+ if (afe -> reg_back_up ) {
338+ for (i = 0 ; i < afe -> reg_back_up_list_num ; i ++ )
339+ regmap_read (regmap , afe -> reg_back_up_list [i ],
340+ & afe -> reg_back_up [i ]);
341+ }
340342
341343 afe -> suspended = true;
342344 afe -> runtime_suspend (dev );
@@ -356,12 +358,13 @@ int mtk_afe_resume(struct snd_soc_component *component)
356358
357359 afe -> runtime_resume (dev );
358360
359- if (!afe -> reg_back_up )
361+ if (!afe -> reg_back_up ) {
360362 dev_dbg (dev , "%s no reg_backup\n" , __func__ );
361-
362- for (i = 0 ; i < afe -> reg_back_up_list_num ; i ++ )
363- mtk_regmap_write (regmap , afe -> reg_back_up_list [i ],
364- afe -> reg_back_up [i ]);
363+ } else {
364+ for (i = 0 ; i < afe -> reg_back_up_list_num ; i ++ )
365+ mtk_regmap_write (regmap , afe -> reg_back_up_list [i ],
366+ afe -> reg_back_up [i ]);
367+ }
365368
366369 afe -> suspended = false;
367370 return 0 ;
You can’t perform that action at this time.
0 commit comments