mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	topology: Merge private data before embedded controls of a widget
For a widget ABI object, its private data sits before the embedded controls, so we should merge the private data blocks at first, and then the embedded controls. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									fa7a52e636
								
							
						
					
					
						commit
						f9633ed852
					
				
					 1 changed files with 15 additions and 7 deletions
				
			
		| 
						 | 
					@ -160,7 +160,21 @@ static int tplg_build_widget(snd_tplg_t *tplg,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	base = &elem->ref_list;
 | 
						base = &elem->ref_list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* for each ref in this control elem */
 | 
						/* A widget's private data sits before the embedded controls.
 | 
				
			||||||
 | 
						 * So merge the private data blocks at first
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						 list_for_each(pos, base) {
 | 
				
			||||||
 | 
							ref = list_entry(pos, struct tplg_ref, list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (ref->type != SND_TPLG_TYPE_DATA)
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							err = tplg_copy_data(tplg, elem, ref);
 | 
				
			||||||
 | 
							if (err < 0)
 | 
				
			||||||
 | 
								return err;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Merge the embedded controls */
 | 
				
			||||||
	list_for_each(pos, base) {
 | 
						list_for_each(pos, base) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ref = list_entry(pos, struct tplg_ref, list);
 | 
							ref = list_entry(pos, struct tplg_ref, list);
 | 
				
			||||||
| 
						 | 
					@ -190,12 +204,6 @@ static int tplg_build_widget(snd_tplg_t *tplg,
 | 
				
			||||||
				err = copy_dapm_control(elem, ref->elem);
 | 
									err = copy_dapm_control(elem, ref->elem);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		case SND_TPLG_TYPE_DATA:
 | 
					 | 
				
			||||||
			err = tplg_copy_data(tplg, elem, ref);
 | 
					 | 
				
			||||||
			if (err < 0)
 | 
					 | 
				
			||||||
				return err;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue