@ -427,24 +427,24 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
if ( ! runtime - > hw . rates ) {
printk ( KERN_ERR " asoc: %s <-> %s No matching rates \n " ,
codec_dai - > name , cpu_dai - > name ) ;
goto machine _err;
goto config _err;
}
if ( ! runtime - > hw . formats ) {
printk ( KERN_ERR " asoc: %s <-> %s No matching formats \n " ,
codec_dai - > name , cpu_dai - > name ) ;
goto machine _err;
goto config _err;
}
if ( ! runtime - > hw . channels_min | | ! runtime - > hw . channels_max ) {
printk ( KERN_ERR " asoc: %s <-> %s No matching channels \n " ,
codec_dai - > name , cpu_dai - > name ) ;
goto machine _err;
goto config _err;
}
/* Symmetry only applies if we've already got an active stream. */
if ( cpu_dai - > active | | codec_dai - > active ) {
ret = soc_pcm_apply_symmetry ( substream ) ;
if ( ret ! = 0 )
goto machine _err;
goto config _err;
}
pr_debug ( " asoc: %s <-> %s info: \n " , codec_dai - > name , cpu_dai - > name ) ;
@ -464,10 +464,14 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
mutex_unlock ( & pcm_mutex ) ;
return 0 ;
machine _err:
config _err:
if ( machine - > ops & & machine - > ops - > shutdown )
machine - > ops - > shutdown ( substream ) ;
machine_err :
if ( codec_dai - > ops - > shutdown )
codec_dai - > ops - > shutdown ( substream , codec_dai ) ;
codec_dai_err :
if ( platform - > pcm_ops - > close )
platform - > pcm_ops - > close ( substream ) ;