On Wed, 1 Oct 2014 17:05:32 +0300
Jyri Sarha <jsarha at 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/

Reply via email to