• Kuninori Morimoto's avatar
    ASoC: soc-core: remove snd_soc_rtdcom_list · 613fb500
    Kuninori Morimoto authored
    Current ALSA SoC is using struct snd_soc_rtdcom_list to
    connecting component to rtd by using list_head.
    
    	struct snd_soc_rtdcom_list {
    		struct snd_soc_component *component;
    		struct list_head list; /* rtd::component_list */
    	};
    
    	struct snd_soc_pcm_runtime {
    		...
    		struct list_head component_list; /* list of connected components */
    		...
    	};
    
    The CPU/Codec/Platform component which will be connected to rtd (a)
    is indicated via dai_link at snd_soc_add_pcm_runtime()
    
    	int snd_soc_add_pcm_runtime(...)
    	{
    		...
    		/* Find CPU from registered CPUs */
    		rtd->cpu_dai = snd_soc_find_dai(dai_link->cpus);
    		...
    (a)		snd_soc_rtdcom_add(rtd, rtd->cpu_dai->component);
    		...
    
    		/* Find CODEC from registered CODECs */
    (b)		for_each_link_codecs(dai_link, i, codec) {
    			rtd->codec_dais[i] = snd_soc_find_dai(codec);
    			...
    (a)			snd_soc_rtdcom_add(rtd, rtd->codec_dais[i]->component);
    		}
    		...
    
    		/* Find PLATFORM from registered PLATFORMs */
    (b)		for_each_link_platforms(dai_link, i, platform) {
    			for_each_component(component) {
    				...
    (a)				snd_soc_rtdcom_add(rtd, component);
    			}
    		}
    
    	}
    
    It shows, it is possible to know how many components will be
    connected to rtd by using
    
    	dai_link->num_cpus
    	dai_link->num_codecs
    	dai_link->num_platforms
    
    If so, we can use component pointer array instead of list_head,
    in such case, code can be more simple.
    This patch removes struct snd_soc_rtdcom_list that is only
    of temporary value, and convert to pointer array.
    Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Reviewed-By: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
    Link: https://lore.kernel.org/r/87a76wt4wm.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    613fb500
soc-component.c 13.7 KB