2222struct avs_dma_data {
2323 struct avs_tplg_path_template * template ;
2424 struct avs_path * path ;
25+ struct avs_dev * adev ;
2526 /*
2627 * link stream is stored within substream's runtime
2728 * private_data to fulfill the needs of codec BE path
@@ -60,7 +61,7 @@ static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_d
6061 const struct snd_soc_dai_ops * ops )
6162{
6263 struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
63- struct avs_dev * adev = to_avs_dev (dai -> dev );
64+ struct avs_dev * adev = to_avs_dev (dai -> component -> dev );
6465 struct avs_tplg_path_template * template ;
6566 struct avs_dma_data * data ;
6667
@@ -77,6 +78,7 @@ static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_d
7778
7879 data -> substream = substream ;
7980 data -> template = template ;
81+ data -> adev = adev ;
8082 snd_soc_dai_set_dma_data (dai , substream , data );
8183
8284 if (rtd -> dai_link -> ignore_suspend )
@@ -88,13 +90,12 @@ static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_d
8890static void avs_dai_shutdown (struct snd_pcm_substream * substream , struct snd_soc_dai * dai )
8991{
9092 struct snd_soc_pcm_runtime * rtd = snd_soc_substream_to_rtd (substream );
91- struct avs_dev * adev = to_avs_dev (dai -> dev );
9293 struct avs_dma_data * data ;
9394
9495 data = snd_soc_dai_get_dma_data (dai , substream );
9596
9697 if (rtd -> dai_link -> ignore_suspend )
97- adev -> num_lp_paths -- ;
98+ data -> adev -> num_lp_paths -- ;
9899
99100 snd_soc_dai_set_dma_data (dai , substream , NULL );
100101 kfree (data );
@@ -107,7 +108,6 @@ static int avs_dai_hw_params(struct snd_pcm_substream *substream,
107108{
108109 struct avs_dma_data * data ;
109110 struct avs_path * path ;
110- struct avs_dev * adev = to_avs_dev (dai -> dev );
111111 int ret ;
112112
113113 data = snd_soc_dai_get_dma_data (dai , substream );
@@ -124,7 +124,7 @@ static int avs_dai_hw_params(struct snd_pcm_substream *substream,
124124 params_rate (be_hw_params ), params_channels (be_hw_params ),
125125 params_width (be_hw_params ), params_physical_width (be_hw_params ));
126126
127- path = avs_path_create (adev , dma_id , data -> template , fe_hw_params , be_hw_params );
127+ path = avs_path_create (data -> adev , dma_id , data -> template , fe_hw_params , be_hw_params );
128128 if (IS_ERR (path )) {
129129 ret = PTR_ERR (path );
130130 dev_err (dai -> dev , "create path failed: %d\n" , ret );
@@ -505,8 +505,7 @@ static int avs_dai_fe_startup(struct snd_pcm_substream *substream, struct snd_so
505505{
506506 struct snd_pcm_runtime * runtime = substream -> runtime ;
507507 struct avs_dma_data * data ;
508- struct avs_dev * adev = to_avs_dev (dai -> dev );
509- struct hdac_bus * bus = & adev -> base .core ;
508+ struct hdac_bus * bus ;
510509 struct hdac_ext_stream * host_stream ;
511510 int ret ;
512511
@@ -515,6 +514,7 @@ static int avs_dai_fe_startup(struct snd_pcm_substream *substream, struct snd_so
515514 return ret ;
516515
517516 data = snd_soc_dai_get_dma_data (dai , substream );
517+ bus = & data -> adev -> base .core ;
518518
519519 host_stream = snd_hdac_ext_stream_assign (bus , substream , HDAC_EXT_STREAM_TYPE_HOST );
520520 if (!host_stream ) {
@@ -655,7 +655,6 @@ static int avs_dai_fe_prepare(struct snd_pcm_substream *substream, struct snd_so
655655 struct snd_pcm_runtime * runtime = substream -> runtime ;
656656 struct snd_soc_pcm_stream * stream_info ;
657657 struct avs_dma_data * data ;
658- struct avs_dev * adev = to_avs_dev (dai -> dev );
659658 struct hdac_ext_stream * host_stream ;
660659 unsigned int format_val ;
661660 struct hdac_bus * bus ;
@@ -685,7 +684,7 @@ static int avs_dai_fe_prepare(struct snd_pcm_substream *substream, struct snd_so
685684 if (ret < 0 )
686685 return ret ;
687686
688- ret = avs_dai_prepare (adev , substream , dai );
687+ ret = avs_dai_prepare (data -> adev , substream , dai );
689688 if (ret )
690689 return ret ;
691690
0 commit comments