ASoC: Fix data format configuration for S3C64XX IISv2
authorJoonyoung Shim <jy0922.shim@samsung.com>
Tue, 18 Aug 2009 12:56:19 +0000 (21:56 +0900)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 18 Aug 2009 15:02:36 +0000 (16:02 +0100)
The data format configuration for S3C64xx IISv2 was hardcoded for IISMOD
register. This patch changes to the defined values it.

And instead of bits 9 and 10 of IISMOD we should clear bits 13 and 14.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
arch/arm/plat-s3c/include/plat/regs-s3c2412-iis.h
sound/soc/s3c24xx/s3c-i2s-v2.c

index 0fad757..07659da 100644 (file)
 #define S3C2412_IISCON_RXDMA_ACTIVE    (1 << 1)
 #define S3C2412_IISCON_IIS_ACTIVE      (1 << 0)
 
+#define S3C64XX_IISMOD_BLC_16BIT       (0 << 13)
+#define S3C64XX_IISMOD_BLC_8BIT                (1 << 13)
+#define S3C64XX_IISMOD_BLC_24BIT       (2 << 13)
+#define S3C64XX_IISMOD_BLC_MASK                (3 << 13)
+
 #define S3C64XX_IISMOD_IMS_PCLK                (0 << 10)
 #define S3C64XX_IISMOD_IMS_SYSMUX      (1 << 10)
 
index 1a28317..ebfb2f6 100644 (file)
@@ -357,19 +357,19 @@ static int s3c2412_i2s_hw_params(struct snd_pcm_substream *substream,
 #endif
 
 #ifdef CONFIG_PLAT_S3C64XX
-       iismod &= ~0x606;
+       iismod &= ~(S3C64XX_IISMOD_BLC_MASK | S3C2412_IISMOD_BCLK_MASK);
        /* Sample size */
        switch (params_format(params)) {
        case SNDRV_PCM_FORMAT_S8:
                /* 8 bit sample, 16fs BCLK */
-               iismod |= 0x2004;
+               iismod |= (S3C64XX_IISMOD_BLC_8BIT | S3C2412_IISMOD_BCLK_16FS);
                break;
        case SNDRV_PCM_FORMAT_S16_LE:
                /* 16 bit sample, 32fs BCLK */
                break;
        case SNDRV_PCM_FORMAT_S24_LE:
                /* 24 bit sample, 48fs BCLK */
-               iismod |= 0x4002;
+               iismod |= (S3C64XX_IISMOD_BLC_24BIT | S3C2412_IISMOD_BCLK_48FS);
                break;
        }
 #endif