On Thu, Jan 30, 2014 at 12:08:06PM +0100, Jean-Francois Moine wrote: > - if (format == p->audio_format) { > + if (format == p->audio_format && > + params_format(params) == priv->audio_sample_format) { > reg_write(priv, REG_ENA_AP, p->audio_cfg); > return; I find the above confusing and probably deserving of a comment explaining the logic. I think it's trying to skip noop configuration updates? > } > p->audio_format = format; > + priv->audio_sample_format = params_format(params); You should be using params_width() for the number of bits per sample.