mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	topology: Define a function to build a single physical DAI link
Code refactoring. Rename the function to build all physical links from tplg_build_link_config() to tplg_build_links(). And define a new function build_link() to build a single physical DAI link element. The function build_link() will be extended to handle more properties of a physical DAI link (e.g. backend or codec-codec link). Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									18652f4629
								
							
						
					
					
						commit
						53f7711769
					
				
					 3 changed files with 25 additions and 8 deletions
				
			
		| 
						 | 
					@ -271,11 +271,11 @@ static int tplg_build_integ(snd_tplg_t *tplg)
 | 
				
			||||||
	if (err <  0)
 | 
						if (err <  0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = tplg_build_link_cfg(tplg, SND_TPLG_TYPE_BE);
 | 
						err = tplg_build_links(tplg, SND_TPLG_TYPE_BE);
 | 
				
			||||||
	if (err <  0)
 | 
						if (err <  0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = tplg_build_link_cfg(tplg, SND_TPLG_TYPE_CC);
 | 
						err = tplg_build_links(tplg, SND_TPLG_TYPE_CC);
 | 
				
			||||||
	if (err <  0)
 | 
						if (err <  0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,12 +148,31 @@ static int tplg_build_stream_cfg(snd_tplg_t *tplg,
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int build_link(snd_tplg_t *tplg, struct tplg_elem *elem)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct snd_soc_tplg_link_config *link = elem->link;
 | 
				
			||||||
 | 
						struct tplg_elem *ref_elem = NULL;
 | 
				
			||||||
 | 
						struct snd_soc_tplg_link_cmpnt  *codec, *cmpnt;
 | 
				
			||||||
 | 
						struct tplg_ref *ref;
 | 
				
			||||||
 | 
						struct list_head *base, *pos;
 | 
				
			||||||
 | 
						int i, num_hw_configs = 0, err = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = tplg_build_stream_cfg(tplg, link->stream,
 | 
				
			||||||
 | 
									    link->num_streams);
 | 
				
			||||||
 | 
						if (err < 0)
 | 
				
			||||||
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* add link to manifest */
 | 
				
			||||||
 | 
						tplg->manifest.dai_link_elems++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* build BE/CC DAI link configurations */
 | 
					/* build BE/CC DAI link configurations */
 | 
				
			||||||
int tplg_build_link_cfg(snd_tplg_t *tplg, unsigned int type)
 | 
					int tplg_build_links(snd_tplg_t *tplg, unsigned int type)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct list_head *base, *pos;
 | 
						struct list_head *base, *pos;
 | 
				
			||||||
	struct tplg_elem *elem;
 | 
						struct tplg_elem *elem;
 | 
				
			||||||
	struct snd_soc_tplg_link_config *link;
 | 
					 | 
				
			||||||
	int err = 0;
 | 
						int err = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (type) {
 | 
						switch (type) {
 | 
				
			||||||
| 
						 | 
					@ -175,9 +194,7 @@ int tplg_build_link_cfg(snd_tplg_t *tplg, unsigned int type)
 | 
				
			||||||
			return -EINVAL;
 | 
								return -EINVAL;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		link = elem->link;
 | 
							err =  build_link(tplg, elem);
 | 
				
			||||||
		err = tplg_build_stream_cfg(tplg, link->stream,
 | 
					 | 
				
			||||||
			link->num_streams);
 | 
					 | 
				
			||||||
		if (err < 0)
 | 
							if (err < 0)
 | 
				
			||||||
			return err;
 | 
								return err;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -284,6 +284,6 @@ int tplg_add_bytes(snd_tplg_t *tplg, struct snd_tplg_bytes_template *bytes_ctl,
 | 
				
			||||||
		   struct tplg_elem **e);
 | 
							   struct tplg_elem **e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int tplg_build_pcms(snd_tplg_t *tplg, unsigned int type);
 | 
					int tplg_build_pcms(snd_tplg_t *tplg, unsigned int type);
 | 
				
			||||||
int tplg_build_link_cfg(snd_tplg_t *tplg, unsigned int type);
 | 
					int tplg_build_links(snd_tplg_t *tplg, unsigned int type);
 | 
				
			||||||
int tplg_add_link_object(snd_tplg_t *tplg, snd_tplg_obj_template_t *t);
 | 
					int tplg_add_link_object(snd_tplg_t *tplg, snd_tplg_obj_template_t *t);
 | 
				
			||||||
int tplg_add_pcm_object(snd_tplg_t *tplg, snd_tplg_obj_template_t *t);
 | 
					int tplg_add_pcm_object(snd_tplg_t *tplg, snd_tplg_obj_template_t *t);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue