@@ -85,6 +85,21 @@ static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_d
85
85
return 0 ;
86
86
}
87
87
88
+ static void avs_dai_shutdown (struct snd_pcm_substream * substream , struct snd_soc_dai * dai )
89
+ {
90
+ struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
91
+ struct avs_dev * adev = to_avs_dev (dai -> dev );
92
+ struct avs_dma_data * data ;
93
+
94
+ data = snd_soc_dai_get_dma_data (dai , substream );
95
+
96
+ if (rtd -> dai_link -> ignore_suspend )
97
+ adev -> num_lp_paths -- ;
98
+
99
+ snd_soc_dai_set_dma_data (dai , substream , NULL );
100
+ kfree (data );
101
+ }
102
+
88
103
static int avs_dai_hw_params (struct snd_pcm_substream * substream ,
89
104
struct snd_pcm_hw_params * fe_hw_params ,
90
105
struct snd_pcm_hw_params * be_hw_params , struct snd_soc_dai * dai ,
@@ -166,21 +181,6 @@ static int avs_dai_nonhda_be_startup(struct snd_pcm_substream *substream, struct
166
181
return avs_dai_startup (substream , dai , false, & avs_dai_nonhda_be_ops );
167
182
}
168
183
169
- static void avs_dai_nonhda_be_shutdown (struct snd_pcm_substream * substream , struct snd_soc_dai * dai )
170
- {
171
- struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
172
- struct avs_dev * adev = to_avs_dev (dai -> dev );
173
- struct avs_dma_data * data ;
174
-
175
- if (rtd -> dai_link -> ignore_suspend )
176
- adev -> num_lp_paths -- ;
177
-
178
- data = snd_soc_dai_get_dma_data (dai , substream );
179
-
180
- snd_soc_dai_set_dma_data (dai , substream , NULL );
181
- kfree (data );
182
- }
183
-
184
184
static int avs_dai_nonhda_be_hw_params (struct snd_pcm_substream * substream ,
185
185
struct snd_pcm_hw_params * hw_params , struct snd_soc_dai * dai )
186
186
{
@@ -266,7 +266,7 @@ static int avs_dai_nonhda_be_trigger(struct snd_pcm_substream *substream, int cm
266
266
267
267
static const struct snd_soc_dai_ops avs_dai_nonhda_be_ops = {
268
268
.startup = avs_dai_nonhda_be_startup ,
269
- .shutdown = avs_dai_nonhda_be_shutdown ,
269
+ .shutdown = avs_dai_shutdown ,
270
270
.hw_params = avs_dai_nonhda_be_hw_params ,
271
271
.hw_free = avs_dai_nonhda_be_hw_free ,
272
272
.prepare = avs_dai_nonhda_be_prepare ,
@@ -290,7 +290,7 @@ static int avs_dai_hda_be_startup(struct snd_pcm_substream *substream, struct sn
290
290
link_stream = snd_hdac_ext_stream_assign (& codec -> bus -> core , substream ,
291
291
HDAC_EXT_STREAM_TYPE_LINK );
292
292
if (!link_stream ) {
293
- avs_dai_nonhda_be_shutdown (substream , dai );
293
+ avs_dai_shutdown (substream , dai );
294
294
return - EBUSY ;
295
295
}
296
296
@@ -306,7 +306,7 @@ static void avs_dai_hda_be_shutdown(struct snd_pcm_substream *substream, struct
306
306
snd_hdac_ext_stream_release (link_stream , HDAC_EXT_STREAM_TYPE_LINK );
307
307
substream -> runtime -> private_data = NULL ;
308
308
309
- avs_dai_nonhda_be_shutdown (substream , dai );
309
+ avs_dai_shutdown (substream , dai );
310
310
}
311
311
312
312
static int avs_dai_hda_be_hw_params (struct snd_pcm_substream * substream ,
@@ -558,18 +558,12 @@ static int avs_dai_fe_startup(struct snd_pcm_substream *substream, struct snd_so
558
558
559
559
static void avs_dai_fe_shutdown (struct snd_pcm_substream * substream , struct snd_soc_dai * dai )
560
560
{
561
- struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
562
- struct avs_dev * adev = to_avs_dev (dai -> dev );
563
561
struct avs_dma_data * data ;
564
562
565
- if (rtd -> dai_link -> ignore_suspend )
566
- adev -> num_lp_paths -- ;
567
-
568
563
data = snd_soc_dai_get_dma_data (dai , substream );
569
564
570
- snd_soc_dai_set_dma_data (dai , substream , NULL );
571
565
snd_hdac_ext_stream_release (data -> host_stream , HDAC_EXT_STREAM_TYPE_HOST );
572
- kfree ( data );
566
+ avs_dai_shutdown ( substream , dai );
573
567
}
574
568
575
569
static int avs_dai_fe_hw_params (struct snd_pcm_substream * substream ,
0 commit comments