ASoC: imx-card: improve the sound quality for low rate
authorShengjiu Wang <shengjiu.wang@nxp.com>
Tue, 4 Jan 2022 10:40:35 +0000 (18:40 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:04:20 +0000 (11:04 +0100)
[ Upstream commit 3969341813eb56d2dfc39bb64229359a6ae3c195 ]

According to RM, on auto mode:
For codec AK4458 and AK4497, the lowest ratio of MLCK/FS is 256
if sample rate is 8kHz-48kHz,
For codec AK5558, the lowest ratio of MLCK/FS is 512 if sample
rate is 8kHz-48kHz.

With these setting the sound quality for 8kHz-48kHz can be improved.

Fixes: aa736700f42f ("ASoC: imx-card: Add imx-card machine driver")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/1641292835-19085-4-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/fsl/imx-card.c

index ad15974..db94718 100644 (file)
@@ -120,7 +120,7 @@ struct imx_card_data {
 
 static struct imx_akcodec_fs_mul ak4458_fs_mul[] = {
        /* Normal, < 32kHz */
-       { .rmin = 8000,   .rmax = 24000,  .wmin = 1024, .wmax = 1024, },
+       { .rmin = 8000,   .rmax = 24000,  .wmin = 256,  .wmax = 1024, },
        /* Normal, 32kHz */
        { .rmin = 32000,  .rmax = 32000,  .wmin = 256,  .wmax = 1024, },
        /* Normal */
@@ -151,8 +151,8 @@ static struct imx_akcodec_fs_mul ak4497_fs_mul[] = {
         * Table 7      - mapping multiplier and speed mode
         * Tables 8 & 9 - mapping speed mode and LRCK fs
         */
-       { .rmin = 8000,   .rmax = 32000,  .wmin = 1024, .wmax = 1024, }, /* Normal, <= 32kHz */
-       { .rmin = 44100,  .rmax = 48000,  .wmin = 512,  .wmax = 512, }, /* Normal */
+       { .rmin = 8000,   .rmax = 32000,  .wmin = 256,  .wmax = 1024, }, /* Normal, <= 32kHz */
+       { .rmin = 44100,  .rmax = 48000,  .wmin = 256,  .wmax = 512, }, /* Normal */
        { .rmin = 88200,  .rmax = 96000,  .wmin = 256,  .wmax = 256, }, /* Double */
        { .rmin = 176400, .rmax = 192000, .wmin = 128,  .wmax = 128, }, /* Quad */
        { .rmin = 352800, .rmax = 384000, .wmin = 128,  .wmax = 128, }, /* Oct */
@@ -164,7 +164,7 @@ static struct imx_akcodec_fs_mul ak4497_fs_mul[] = {
  * (Table 4 from datasheet)
  */
 static struct imx_akcodec_fs_mul ak5558_fs_mul[] = {
-       { .rmin = 8000,   .rmax = 32000,  .wmin = 1024, .wmax = 1024, },
+       { .rmin = 8000,   .rmax = 32000,  .wmin = 512,  .wmax = 1024, },
        { .rmin = 44100,  .rmax = 48000,  .wmin = 512,  .wmax = 512, },
        { .rmin = 88200,  .rmax = 96000,  .wmin = 256,  .wmax = 256, },
        { .rmin = 176400, .rmax = 192000, .wmin = 128,  .wmax = 128, },