ASoC: samsung: i2s: Define the parameters list for SAMSUNG_I2S_OPCLK
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Mon, 12 Feb 2018 16:15:35 +0000 (17:15 +0100)
committerJunghoon Kim <jhoon20.kim@samsung.com>
Thu, 14 Feb 2019 05:56:24 +0000 (14:56 +0900)
The SAMSUNG_I2S_OPCLK is not currently used by any card driver thus we can
safely change semantics of 'dir' argument of the I2S set_sysclk() callback.
Now an enumeration is exported instead of directly using register bit field
values.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/samsung/i2s-regs.h
sound/soc/samsung/i2s.c
sound/soc/samsung/i2s.h

index fe69140..964985e 100644 (file)
 #define CON_RXDMA_ACTIVE       (1 << 1)
 #define CON_ACTIVE             (1 << 0)
 
-#define MOD_OPCLK_CDCLK_OUT    (0 << 30)
-#define MOD_OPCLK_CDCLK_IN     (1 << 30)
-#define MOD_OPCLK_BCLK_OUT     (2 << 30)
-#define MOD_OPCLK_PCLK         (3 << 30)
-#define MOD_OPCLK_MASK         (3 << 30)
+#define MOD_OPCLK_SHIFT                30
+#define MOD_OPCLK_CDCLK_OUT    (0 << MOD_OPCLK_SHIFT)
+#define MOD_OPCLK_CDCLK_IN     (1 << MOD_OPCLK_SHIFT)
+#define MOD_OPCLK_BCLK_OUT     (2 << MOD_OPCLK_SHIFT)
+#define MOD_OPCLK_PCLK         (3 << MOD_OPCLK_SHIFT)
+#define MOD_OPCLK_MASK         (3 << MOD_OPCLK_SHIFT)
 #define MOD_TXS_IDMA           (1 << 28) /* Sec_TXFIFO use I-DMA */
 
 #define MOD_BLCS_SHIFT         26
index 7b57ad1..b6407fb 100644 (file)
@@ -489,7 +489,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
        switch (clk_id) {
        case SAMSUNG_I2S_OPCLK:
                mask = MOD_OPCLK_MASK;
-               val = dir;
+               val = (dir << MOD_OPCLK_SHIFT) & MOD_OPCLK_MASK;
                break;
        case SAMSUNG_I2S_CDCLK:
                mask = 1 << i2s_regs->cdclkcon_off;
index 79781de..a9832a9 100644 (file)
 #define SAMSUNG_I2S_DAI        "samsung-i2s"
 #define SAMSUNG_I2S_DAI_SEC    "samsung-i2s-sec"
 
-#define SAMSUNG_I2S_DIV_BCLK   1
+#define SAMSUNG_I2S_DIV_BCLK           1
 
-#define SAMSUNG_I2S_RCLKSRC_0  0
-#define SAMSUNG_I2S_RCLKSRC_1  1
+#define SAMSUNG_I2S_RCLKSRC_0          0
+#define SAMSUNG_I2S_RCLKSRC_1          1
 #define SAMSUNG_I2S_CDCLK              2
+/* Operation clock for IIS logic */
 #define SAMSUNG_I2S_OPCLK              3
+#define  SAMSUNG_I2S_OPCLK_CDCLK_OUT   0       /* CODEC clock out */
+#define  SAMSUNG_I2S_OPCLK_CDCLK_IN    1       /* CODEC clock in */
+#define  SAMSUNG_I2S_OPCLK_BCLK_OUT    2       /* Bit clock out */
+#define  SAMSUNG_I2S_OPCLK_PCLK                3       /* Audio bus clock */
 
 #endif /* __SND_SOC_SAMSUNG_I2S_H */