diff mbox

[4/8] ASoC: samsung: i2s: Define the parameters list for SAMSUNG_I2S_OPCLK

Message ID 20180205154403.13520-5-s.nawrocki@samsung.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

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 anumeration is exported instead of directly using register bitfield
values.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
 sound/soc/samsung/i2s-regs.h | 11 ++++++-----
 sound/soc/samsung/i2s.c      |  2 +-
 sound/soc/samsung/i2s.h      | 11 ++++++++---
 3 files changed, 15 insertions(+), 9 deletions(-)

Comments

Krzysztof Kozlowski Feb. 6, 2018, 12:26 p.m. UTC | #1
On Mon, Feb 5, 2018 at 4:43 PM, Sylwester Nawrocki
<s.nawrocki@samsung.com> wrote:
> 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 anumeration is exported instead of directly using register bitfield
> values.
>
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
>  sound/soc/samsung/i2s-regs.h | 11 ++++++-----
>  sound/soc/samsung/i2s.c      |  2 +-
>  sound/soc/samsung/i2s.h      | 11 ++++++++---
>  3 files changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/sound/soc/samsung/i2s-regs.h b/sound/soc/samsung/i2s-regs.h
> index fe6914005494..964985ea2e80 100644
> --- a/sound/soc/samsung/i2s-regs.h
> +++ b/sound/soc/samsung/i2s-regs.h
> @@ -65,11 +65,12 @@
>  #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
> diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
> index 1c05170e4999..6d768cdb4326 100644
> --- a/sound/soc/samsung/i2s.c
> +++ b/sound/soc/samsung/i2s.c
> @@ -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;
> diff --git a/sound/soc/samsung/i2s.h b/sound/soc/samsung/i2s.h
> index 79781de2f247..a9832a9555cb 100644
> --- a/sound/soc/samsung/i2s.h
> +++ b/sound/soc/samsung/i2s.h
> @@ -16,11 +16,16 @@
>  #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 */

This part of patch seems to be unrelated (and it includes some cleanups).

Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
On 02/06/2018 01:26 PM, Krzysztof Kozlowski wrote:
> On Mon, Feb 5, 2018 at 4:43 PM, Sylwester Nawrocki
> <s.nawrocki@samsung.com> wrote:

>> diff --git a/sound/soc/samsung/i2s.h b/sound/soc/samsung/i2s.h
>> index 79781de2f247..a9832a9555cb 100644
>> --- a/sound/soc/samsung/i2s.h
>> +++ b/sound/soc/samsung/i2s.h
>> @@ -16,11 +16,16 @@
>>  #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 */
> 
> This part of patch seems to be unrelated (and it includes some cleanups).

This is actually the main part of the patch, an API exported to other
drivers.  The whitespace changes are for keeping the alignment uniform,
I could just drop them.
Krzysztof Kozlowski Feb. 12, 2018, 10 a.m. UTC | #3
On Wed, Feb 7, 2018 at 5:23 PM, Sylwester Nawrocki
<s.nawrocki@samsung.com> wrote:
> On 02/06/2018 01:26 PM, Krzysztof Kozlowski wrote:
>> On Mon, Feb 5, 2018 at 4:43 PM, Sylwester Nawrocki
>> <s.nawrocki@samsung.com> wrote:
>
>>> diff --git a/sound/soc/samsung/i2s.h b/sound/soc/samsung/i2s.h
>>> index 79781de2f247..a9832a9555cb 100644
>>> --- a/sound/soc/samsung/i2s.h
>>> +++ b/sound/soc/samsung/i2s.h
>>> @@ -16,11 +16,16 @@
>>>  #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 */
>>
>> This part of patch seems to be unrelated (and it includes some cleanups).
>
> This is actually the main part of the patch, an API exported to other
> drivers.

You are right, I looked at it without the context of 5/8 and I assumed
you are changing existing user of the defines...

> The whitespace changes are for keeping the alignment uniform,
> I could just drop them.

Let it be then.

Acked-by: Krzysztof Kozlowski <krzk@kernel.org>

Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/sound/soc/samsung/i2s-regs.h b/sound/soc/samsung/i2s-regs.h
index fe6914005494..964985ea2e80 100644
--- a/sound/soc/samsung/i2s-regs.h
+++ b/sound/soc/samsung/i2s-regs.h
@@ -65,11 +65,12 @@ 
 #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
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index 1c05170e4999..6d768cdb4326 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -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;
diff --git a/sound/soc/samsung/i2s.h b/sound/soc/samsung/i2s.h
index 79781de2f247..a9832a9555cb 100644
--- a/sound/soc/samsung/i2s.h
+++ b/sound/soc/samsung/i2s.h
@@ -16,11 +16,16 @@ 
 #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 */