2 Oct
2014
2 Oct
'14
8:37 p.m.
On Wed, 1 Oct 2014 17:05:32 +0300 Jyri Sarha jsarha@ti.com wrote:
case AFMT_I2S: reg_write(priv, REG_MUX_AP, MUX_AP_SELECT_I2S); clksel_aip = AIP_CLKSEL_AIP_I2S; clksel_fs = AIP_CLKSEL_FS_ACLK;
cts_n = CTS_N_M(3) | CTS_N_K(3);
/* with I2S input, the CTS_N predivider depends on
* the sample width */
switch (priv->audio_sample_format) {
case SNDRV_PCM_FORMAT_S16_LE:
cts_n = CTS_N_M(3) | CTS_N_K(1);
break;
case SNDRV_PCM_FORMAT_S24_LE:
cts_n = CTS_N_M(3) | CTS_N_K(2);
break;
default:
Setting the default here does not really help, because priv->audio_sample_format is initialized to SNDRV_PCM_FORMAT_S24_LE in tda998x_encoder_set_config(). But I am Ok with the default being changed for 24 bit samples on i2s interface.
case SNDRV_PCM_FORMAT_S32_LE:
cts_n = CTS_N_M(3) | CTS_N_K(3);
break;
}
I looked again at the original driver and they set K = 1 for 16 bits and K = 3 for 24 or 32 bits.
Anyway, letting K = 3 for 16 bits works for me, so, I will not change this code in the next version.
Thanks.
--
Ken ar c'hentaƱ | ** Breizh ha Linux atav! **
Jef | http://moinejf.free.fr/