ASoC: cs42l73: If Internal MCLK is >= 6.4MHz, then set SCLK to 64*Fs.
authorPaul Handrigan <Paul.Handrigan@cirrus.com>
Tue, 5 Mar 2013 19:12:56 +0000 (13:12 -0600)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 6 Mar 2013 04:51:30 +0000 (12:51 +0800)
Signed-off-by: Paul Handrigan <Paul.Handrigan@cirrus.com>
Acked-by: Brian Austin <brian.austin@cirrus.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/cs42l73.c

index 6361dab48bd103c147454bef68025aff7298a381..3b20c86cdb01671c283cec22b58aa6fac5acddcd 100644 (file)
@@ -1180,7 +1180,11 @@ static int cs42l73_pcm_hw_params(struct snd_pcm_substream *substream,
                priv->config[id].mmcc &= 0xC0;
                priv->config[id].mmcc |= cs42l73_mclk_coeffs[mclk_coeff].mmcc;
                priv->config[id].spc &= 0xFC;
-               priv->config[id].spc |= MCK_SCLK_MCLK;
+               /* Use SCLK=64*Fs if internal MCLK >= 6.4MHz */
+               if (priv->mclk >= 6400000)
+                       priv->config[id].spc |= MCK_SCLK_64FS;
+               else
+                       priv->config[id].spc |= MCK_SCLK_MCLK;
        } else {
                /* CS42L73 Slave */
                priv->config[id].spc &= 0xFC;