• Kuninori Morimoto's avatar
    ASoC: soc-component: add mark for snd_soc_component_compr_open/free() · f94ba9ac
    Kuninori Morimoto authored
    soc_compr_open() does rollback when failed (A),
    but, it is almost same as soc_compr_free().
    
    	static int soc_compr_open(xxx)
    	{
    		...
    		if (ret < 0)
    			goto xxx_err;
    		...
    		return 0;
    
     ^	machine_err:
     |		...
     |	out:
    (A)		...
     |	pm_err:
     |		...
     v		return ret;
    	}
    
    The difference is
    soc_compr_free()  is for all dai/component/substream,
    rollback          is for succeeded part only.
    
    This kind of duplicated code can be a hotbed of bugs,
    thus, we want to share soc_compr_free() and rollback.
    	1) snd_soc_dai_compr_startup/shutdown()
    =>	2) snd_soc_component_compr_open/free()
    	3) snd_soc_link_compr_startup/shutdown()
    
    This patch is for 2) snd_soc_component_compr_open/free(),
    and adds new cstream mark.
    It will mark cstream when startup() was suceeded.
    If rollback happen *after* that, it will check rollback flag
    and marked cstream.
    
    It cares *previous* startup() only now,
    but we might want to check *whole* marked cstream in the future.
    This patch is using macro so that it can be easily adjust to it.
    Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Link: https://lore.kernel.org/r/87lfey5iwk.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    f94ba9ac
soc-component.h 18.4 KB