All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs
@ 2018-04-16 18:26 Kirill Marinushkin
  2018-04-16 18:26 ` [PATCH alsa-lib v4 1/4] ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format() Kirill Marinushkin
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-16 18:26 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, Pan Xiuli, Pierre-Louis Bossart, Liam Girdwood,
	Mark Brown, Kirill Marinushkin

Hello Takashi,

This patch series waits since 20th of February, because it modifies UAPI headers
and should be done in sync with Linux and ALSA. I see that previously there was
no clear understanding, how to do this in sync.

We discussed with you on 02 Apr 2018, and you suggested the following steps:

Step 1. A person from Intel, who knows the topic (Pierre), adds his
"Reviewed-by" or "Acked-by" tags
Step 2. I clarify with Mark to apply the Linux part (different patch series)
Step 3. After that, I clarify with you to apply the ALSA part (this patch
series)

The step 1 is done. Old patches are reviewed by Pierre, so they have his
"Reviewed-by" tag. New patches are suggested by him, and we agreed on the
implementation, so they have his "Acked-by" tag.

The step 2 is done. Mark applied the corresponding part to his Linux tree [1].

Now we are on the step 3. If you don't have anything against this patch series,
please apply it to ALSA.

Best Regards,
Kirill

[1] https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git

Kirill Marinushkin (4):
  ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format()
  ASoC: topology: Add missing clock gating parameter when parsing
    hw_configs
  ASoC: topology: Add definitions for mclk_direction values
  ASoC: topology: Add alias conf parameter names for hw_configs

 include/sound/asoc.h                       | 29 +++++++++--
 include/topology.h                         |  8 +--
 src/conf/topology/broadwell/broadwell.conf |  4 +-
 src/topology/pcm.c                         | 81 +++++++++++++++++++++++-------
 4 files changed, 95 insertions(+), 27 deletions(-)

-- 
2.13.6

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH alsa-lib v4 1/4] ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format()
  2018-04-16 18:26 [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Kirill Marinushkin
@ 2018-04-16 18:26 ` Kirill Marinushkin
  2018-04-16 18:26   ` Kirill Marinushkin
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-16 18:26 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Pierre-Louis Bossart, Jaroslav Kysela, Mark Brown, Pan Xiuli,
	Liam Girdwood, alsa-devel, Kirill Marinushkin, linux-kernel

The values of bclk and fsync are inverted WRT the codec. But the existing
solution already works for Broadwell, see the alsa-lib config:

`alsa-lib/src/conf/topology/broadwell/broadwell.conf`

This commit provides the backwards-compatible solution to fix this misuse.
This commit goes in pair with the corresponding patch for linux.

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tested-by: Pan Xiuli <xiuli.pan@linux.intel.com>
Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org
---
 include/sound/asoc.h                       | 16 ++++++++++++++--
 include/topology.h                         |  4 ++--
 src/conf/topology/broadwell/broadwell.conf |  4 ++--
 src/topology/pcm.c                         | 30 ++++++++++++++++++++++++++----
 4 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/include/sound/asoc.h b/include/sound/asoc.h
index 0f5d9f9a..89b00703 100644
--- a/include/sound/asoc.h
+++ b/include/sound/asoc.h
@@ -156,6 +156,18 @@
 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS    (1 << 2)
 #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP            (1 << 3)
 
+/* DAI topology BCLK parameter
+ * For the backwards capability, by default codec is bclk master
+ */
+#define SND_SOC_TPLG_BCLK_CM         0 /* codec is bclk master */
+#define SND_SOC_TPLG_BCLK_CS         1 /* codec is bclk slave */
+
+/* DAI topology FSYNC parameter
+ * For the backwards capability, by default codec is fsync master
+ */
+#define SND_SOC_TPLG_FSYNC_CM         0 /* codec is fsync master */
+#define SND_SOC_TPLG_FSYNC_CS         1 /* codec is fsync slave */
+
 /*
  * Block Header.
  * This header precedes all object and object arrays below.
@@ -311,8 +323,8 @@ struct snd_soc_tplg_hw_config {
 	__u8 clock_gated;	/* 1 if clock can be gated to save power */
 	__u8 invert_bclk;	/* 1 for inverted BCLK, 0 for normal */
 	__u8 invert_fsync;	/* 1 for inverted frame clock, 0 for normal */
-	__u8 bclk_master;	/* 1 for master of BCLK, 0 for slave */
-	__u8 fsync_master;	/* 1 for master of FSYNC, 0 for slave */
+	__u8 bclk_master;	/* SND_SOC_TPLG_BCLK_ value */
+	__u8 fsync_master;	/* SND_SOC_TPLG_FSYNC_ value */
 	__u8 mclk_direction;    /* 0 for input, 1 for output */
 	__le16 reserved;	/* for 32bit alignment */
 	__le32 mclk_rate;	/* MCLK or SYSCLK freqency in Hz */
diff --git a/include/topology.h b/include/topology.h
index 8779da4d..5d7b46df 100644
--- a/include/topology.h
+++ b/include/topology.h
@@ -1000,8 +1000,8 @@ struct snd_tplg_hw_config_template {
 	unsigned char clock_gated;      /* 1 if clock can be gated to save power */
 	unsigned char  invert_bclk;     /* 1 for inverted BCLK, 0 for normal */
 	unsigned char  invert_fsync;    /* 1 for inverted frame clock, 0 for normal */
-	unsigned char  bclk_master;     /* 1 for master of BCLK, 0 for slave */
-	unsigned char  fsync_master;    /* 1 for master of FSYNC, 0 for slave */
+	unsigned char  bclk_master;     /* SND_SOC_TPLG_BCLK_ value */
+	unsigned char  fsync_master;    /* SND_SOC_TPLG_FSYNC_ value */
 	unsigned char  mclk_direction;  /* 0 for input, 1 for output */
 	unsigned short reserved;        /* for 32bit alignment */
 	unsigned int mclk_rate;	        /* MCLK or SYSCLK freqency in Hz */
diff --git a/src/conf/topology/broadwell/broadwell.conf b/src/conf/topology/broadwell/broadwell.conf
index b8405d93..09fc4daa 100644
--- a/src/conf/topology/broadwell/broadwell.conf
+++ b/src/conf/topology/broadwell/broadwell.conf
@@ -393,8 +393,8 @@ SectionGraph."dsp" {
 SectionHWConfig."CodecHWConfig" {
 	id "1"
 	format "I2S"		# physical audio format.
-	bclk   "master"		# Platform is master of bit clock
-	fsync  "master"		# platform is master of fsync
+	bclk   "codec_slave"	# platform is master of bit clock (codec is slave)
+	fsync  "codec_slave"	# platform is master of fsync (codec is slave)
 }
 
 SectionLink."Codec" {
diff --git a/src/topology/pcm.c b/src/topology/pcm.c
index bb47b9af..d0395182 100644
--- a/src/topology/pcm.c
+++ b/src/topology/pcm.c
@@ -1141,8 +1141,19 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
-			if (!strcmp(val, "master"))
-				hw_cfg->bclk_master = true;
+			if (!strcmp(val, "master")) {
+				/* For backwards capability,
+				 * "master" == "codec is slave"
+				 */
+				SNDERR("warning: deprecated bclk value '%s'\n",
+				       val);
+
+				hw_cfg->bclk_master = SND_SOC_TPLG_BCLK_CS;
+			} else if (!strcmp(val, "codec_slave")) {
+				hw_cfg->bclk_master = SND_SOC_TPLG_BCLK_CS;
+			} else if (!strcmp(val, "codec_master")) {
+				hw_cfg->bclk_master = SND_SOC_TPLG_BCLK_CM;
+			}
 			continue;
 		}
 
@@ -1167,8 +1178,19 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
-			if (!strcmp(val, "master"))
-				hw_cfg->fsync_master = true;
+			if (!strcmp(val, "master")) {
+				/* For backwards capability,
+				 * "master" == "codec is slave"
+				 */
+				SNDERR("warning: deprecated fsync value '%s'\n",
+				       val);
+
+				hw_cfg->fsync_master = SND_SOC_TPLG_FSYNC_CS;
+			} else if (!strcmp(val, "codec_slave")) {
+				hw_cfg->fsync_master = SND_SOC_TPLG_FSYNC_CS;
+			} else if (!strcmp(val, "codec_master")) {
+				hw_cfg->fsync_master = SND_SOC_TPLG_FSYNC_CM;
+			}
 			continue;
 		}
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH alsa-lib v4 2/4] ASoC: topology: Add missing clock gating parameter when parsing hw_configs
  2018-04-16 18:26 [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Kirill Marinushkin
@ 2018-04-16 18:26   ` Kirill Marinushkin
  2018-04-16 18:26   ` Kirill Marinushkin
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-16 18:26 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Pierre-Louis Bossart, Jaroslav Kysela, Mark Brown, Pan Xiuli,
	Liam Girdwood, alsa-devel, Kirill Marinushkin, linux-kernel

Clock gating parameter is a part of `dai_fmt`. It is supported by
`alsa-lib` when creating a topology binary file, but ignored by kernel
when loading this topology file.

After applying this commit, the clock gating parameter is not ignored any
more. This solution is backwards compatible. The existing behaviour is
not broken, because by default the parameter value is 0 and is ignored.

snd_soc_tplg_hw_config.clock_gated = 0 => no effect
snd_soc_tplg_hw_config.clock_gated = 1 => SND_SOC_DAIFMT_GATED
snd_soc_tplg_hw_config.clock_gated = 2 => SND_SOC_DAIFMT_CONT

For example, the following config, based on
alsa-lib/src/conf/topology/broadwell/broadwell.conf, is now supported:

~~~~
SectionHWConfig."CodecHWConfig" {
        id "1"
        format "I2S"            # physical audio format.
        pm_gate_clocks "true"   # clock can be gated
}

SectionLink."Codec" {

        # used for binding to the physical link
        id "0"

        hw_configs [
                "CodecHWConfig"
        ]

        default_hw_conf_id "1"
}
~~~~

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pan Xiuli <xiuli.pan@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org
---
 include/sound/asoc.h | 7 ++++++-
 include/topology.h   | 2 +-
 src/topology/pcm.c   | 6 +++++-
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/include/sound/asoc.h b/include/sound/asoc.h
index 89b00703..297e837c 100644
--- a/include/sound/asoc.h
+++ b/include/sound/asoc.h
@@ -135,6 +135,11 @@
 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS      (1 << 1)
 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS    (1 << 2)
 
+/* DAI clock gating */
+#define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED	0
+#define SND_SOC_TPLG_DAI_CLK_GATE_GATED	1
+#define SND_SOC_TPLG_DAI_CLK_GATE_CONT		2
+
 /* DAI physical PCM data formats.
  * Add new formats to the end of the list.
  */
@@ -320,7 +325,7 @@ struct snd_soc_tplg_hw_config {
 	__le32 size;            /* in bytes of this structure */
 	__le32 id;		/* unique ID - - used to match */
 	__le32 fmt;		/* SND_SOC_DAI_FORMAT_ format value */
-	__u8 clock_gated;	/* 1 if clock can be gated to save power */
+	__u8 clock_gated;	/* SND_SOC_TPLG_DAI_CLK_GATE_ value */
 	__u8 invert_bclk;	/* 1 for inverted BCLK, 0 for normal */
 	__u8 invert_fsync;	/* 1 for inverted frame clock, 0 for normal */
 	__u8 bclk_master;	/* SND_SOC_TPLG_BCLK_ value */
diff --git a/include/topology.h b/include/topology.h
index 5d7b46df..3793115c 100644
--- a/include/topology.h
+++ b/include/topology.h
@@ -997,7 +997,7 @@ struct snd_tplg_pcm_template {
 struct snd_tplg_hw_config_template {
 	int id;                         /* unique ID - - used to match */
 	unsigned int fmt;               /* SND_SOC_DAI_FORMAT_ format value */
-	unsigned char clock_gated;      /* 1 if clock can be gated to save power */
+	unsigned char clock_gated;      /* SND_SOC_TPLG_DAI_CLK_GATE_ value */
 	unsigned char  invert_bclk;     /* 1 for inverted BCLK, 0 for normal */
 	unsigned char  invert_fsync;    /* 1 for inverted frame clock, 0 for normal */
 	unsigned char  bclk_master;     /* SND_SOC_TPLG_BCLK_ value */
diff --git a/src/topology/pcm.c b/src/topology/pcm.c
index d0395182..b53f6b03 100644
--- a/src/topology/pcm.c
+++ b/src/topology/pcm.c
@@ -1233,7 +1233,11 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 				return -EINVAL;
 
 			if (!strcmp(val, "true"))
-				hw_cfg->clock_gated = true;
+				hw_cfg->clock_gated =
+					SND_SOC_TPLG_DAI_CLK_GATE_GATED;
+			else
+				hw_cfg->clock_gated =
+					SND_SOC_TPLG_DAI_CLK_GATE_CONT;
 			continue;
 		}
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH alsa-lib v4 2/4] ASoC: topology: Add missing clock gating parameter when parsing hw_configs
@ 2018-04-16 18:26   ` Kirill Marinushkin
  0 siblings, 0 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-16 18:26 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, linux-kernel, Pan Xiuli, Pierre-Louis Bossart,
	Liam Girdwood, Mark Brown, Kirill Marinushkin

Clock gating parameter is a part of `dai_fmt`. It is supported by
`alsa-lib` when creating a topology binary file, but ignored by kernel
when loading this topology file.

After applying this commit, the clock gating parameter is not ignored any
more. This solution is backwards compatible. The existing behaviour is
not broken, because by default the parameter value is 0 and is ignored.

snd_soc_tplg_hw_config.clock_gated = 0 => no effect
snd_soc_tplg_hw_config.clock_gated = 1 => SND_SOC_DAIFMT_GATED
snd_soc_tplg_hw_config.clock_gated = 2 => SND_SOC_DAIFMT_CONT

For example, the following config, based on
alsa-lib/src/conf/topology/broadwell/broadwell.conf, is now supported:

~~~~
SectionHWConfig."CodecHWConfig" {
        id "1"
        format "I2S"            # physical audio format.
        pm_gate_clocks "true"   # clock can be gated
}

SectionLink."Codec" {

        # used for binding to the physical link
        id "0"

        hw_configs [
                "CodecHWConfig"
        ]

        default_hw_conf_id "1"
}
~~~~

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pan Xiuli <xiuli.pan@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org
---
 include/sound/asoc.h | 7 ++++++-
 include/topology.h   | 2 +-
 src/topology/pcm.c   | 6 +++++-
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/include/sound/asoc.h b/include/sound/asoc.h
index 89b00703..297e837c 100644
--- a/include/sound/asoc.h
+++ b/include/sound/asoc.h
@@ -135,6 +135,11 @@
 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS      (1 << 1)
 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS    (1 << 2)
 
+/* DAI clock gating */
+#define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED	0
+#define SND_SOC_TPLG_DAI_CLK_GATE_GATED	1
+#define SND_SOC_TPLG_DAI_CLK_GATE_CONT		2
+
 /* DAI physical PCM data formats.
  * Add new formats to the end of the list.
  */
@@ -320,7 +325,7 @@ struct snd_soc_tplg_hw_config {
 	__le32 size;            /* in bytes of this structure */
 	__le32 id;		/* unique ID - - used to match */
 	__le32 fmt;		/* SND_SOC_DAI_FORMAT_ format value */
-	__u8 clock_gated;	/* 1 if clock can be gated to save power */
+	__u8 clock_gated;	/* SND_SOC_TPLG_DAI_CLK_GATE_ value */
 	__u8 invert_bclk;	/* 1 for inverted BCLK, 0 for normal */
 	__u8 invert_fsync;	/* 1 for inverted frame clock, 0 for normal */
 	__u8 bclk_master;	/* SND_SOC_TPLG_BCLK_ value */
diff --git a/include/topology.h b/include/topology.h
index 5d7b46df..3793115c 100644
--- a/include/topology.h
+++ b/include/topology.h
@@ -997,7 +997,7 @@ struct snd_tplg_pcm_template {
 struct snd_tplg_hw_config_template {
 	int id;                         /* unique ID - - used to match */
 	unsigned int fmt;               /* SND_SOC_DAI_FORMAT_ format value */
-	unsigned char clock_gated;      /* 1 if clock can be gated to save power */
+	unsigned char clock_gated;      /* SND_SOC_TPLG_DAI_CLK_GATE_ value */
 	unsigned char  invert_bclk;     /* 1 for inverted BCLK, 0 for normal */
 	unsigned char  invert_fsync;    /* 1 for inverted frame clock, 0 for normal */
 	unsigned char  bclk_master;     /* SND_SOC_TPLG_BCLK_ value */
diff --git a/src/topology/pcm.c b/src/topology/pcm.c
index d0395182..b53f6b03 100644
--- a/src/topology/pcm.c
+++ b/src/topology/pcm.c
@@ -1233,7 +1233,11 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 				return -EINVAL;
 
 			if (!strcmp(val, "true"))
-				hw_cfg->clock_gated = true;
+				hw_cfg->clock_gated =
+					SND_SOC_TPLG_DAI_CLK_GATE_GATED;
+			else
+				hw_cfg->clock_gated =
+					SND_SOC_TPLG_DAI_CLK_GATE_CONT;
 			continue;
 		}
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH alsa-lib v4 3/4] ASoC: topology: Add definitions for mclk_direction values
  2018-04-16 18:26 [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Kirill Marinushkin
  2018-04-16 18:26 ` [PATCH alsa-lib v4 1/4] ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format() Kirill Marinushkin
  2018-04-16 18:26   ` Kirill Marinushkin
@ 2018-04-16 18:26 ` Kirill Marinushkin
  2018-04-16 18:26 ` [PATCH alsa-lib v4 4/4] ASoC: topology: Add alias conf parameter names for hw_configs Kirill Marinushkin
  2018-04-20  7:29 ` [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Takashi Iwai
  4 siblings, 0 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-16 18:26 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, Pan Xiuli, Pierre-Louis Bossart, Liam Girdwood,
	Mark Brown, Kirill Marinushkin

Current comment makes not clear the direction of mclk. Previously, similar
description caused a misunderstanding for bclk_master and fsync_master.

This commit solves the potential confusion the same way it is solved for
bclk_master and fsync_master.

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pan Xiuli <xiuli.pan@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: alsa-devel@alsa-project.org
---
 include/sound/asoc.h |  6 +++++-
 include/topology.h   |  2 +-
 src/topology/pcm.c   | 15 +++++++++++++--
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/include/sound/asoc.h b/include/sound/asoc.h
index 297e837c..bb8aec78 100644
--- a/include/sound/asoc.h
+++ b/include/sound/asoc.h
@@ -140,6 +140,10 @@
 #define SND_SOC_TPLG_DAI_CLK_GATE_GATED	1
 #define SND_SOC_TPLG_DAI_CLK_GATE_CONT		2
 
+/* DAI mclk_direction */
+#define SND_SOC_TPLG_MCLK_CO            0 /* for codec, mclk is output */
+#define SND_SOC_TPLG_MCLK_CI            1 /* for codec, mclk is input */
+
 /* DAI physical PCM data formats.
  * Add new formats to the end of the list.
  */
@@ -330,7 +334,7 @@ struct snd_soc_tplg_hw_config {
 	__u8 invert_fsync;	/* 1 for inverted frame clock, 0 for normal */
 	__u8 bclk_master;	/* SND_SOC_TPLG_BCLK_ value */
 	__u8 fsync_master;	/* SND_SOC_TPLG_FSYNC_ value */
-	__u8 mclk_direction;    /* 0 for input, 1 for output */
+	__u8 mclk_direction;    /* SND_SOC_TPLG_MCLK_ value */
 	__le16 reserved;	/* for 32bit alignment */
 	__le32 mclk_rate;	/* MCLK or SYSCLK freqency in Hz */
 	__le32 bclk_rate;	/* BCLK freqency in Hz */
diff --git a/include/topology.h b/include/topology.h
index 3793115c..27da7308 100644
--- a/include/topology.h
+++ b/include/topology.h
@@ -1002,7 +1002,7 @@ struct snd_tplg_hw_config_template {
 	unsigned char  invert_fsync;    /* 1 for inverted frame clock, 0 for normal */
 	unsigned char  bclk_master;     /* SND_SOC_TPLG_BCLK_ value */
 	unsigned char  fsync_master;    /* SND_SOC_TPLG_FSYNC_ value */
-	unsigned char  mclk_direction;  /* 0 for input, 1 for output */
+	unsigned char  mclk_direction;  /* SND_SOC_TPLG_MCLK_ value */
 	unsigned short reserved;        /* for 32bit alignment */
 	unsigned int mclk_rate;	        /* MCLK or SYSCLK freqency in Hz */
 	unsigned int bclk_rate;	        /* BCLK freqency in Hz */
diff --git a/src/topology/pcm.c b/src/topology/pcm.c
index b53f6b03..2ce1651b 100644
--- a/src/topology/pcm.c
+++ b/src/topology/pcm.c
@@ -1223,8 +1223,19 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
-			if (!strcmp(val, "master"))
-				hw_cfg->mclk_direction = true;
+			if (!strcmp(val, "master")) {
+				/* For backwards capability,
+				 * "master" == "for codec, mclk is input"
+				 */
+				SNDERR("warning: deprecated mclk value '%s'\n",
+				       val);
+
+				hw_cfg->mclk_direction = SND_SOC_TPLG_MCLK_CI;
+			} else if (!strcmp(val, "codec_mclk_in")) {
+				hw_cfg->mclk_direction = SND_SOC_TPLG_MCLK_CI;
+			} else if (!strcmp(val, "codec_mclk_out")) {
+				hw_cfg->mclk_direction = SND_SOC_TPLG_MCLK_CO;
+			}
 			continue;
 		}
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH alsa-lib v4 4/4] ASoC: topology: Add alias conf parameter names for hw_configs
  2018-04-16 18:26 [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Kirill Marinushkin
                   ` (2 preceding siblings ...)
  2018-04-16 18:26 ` [PATCH alsa-lib v4 3/4] ASoC: topology: Add definitions for mclk_direction values Kirill Marinushkin
@ 2018-04-16 18:26 ` Kirill Marinushkin
  2018-04-20  7:29 ` [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Takashi Iwai
  4 siblings, 0 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-16 18:26 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, Pan Xiuli, Pierre-Louis Bossart, Liam Girdwood,
	Mark Brown, Kirill Marinushkin

Currently, some parameter names in conf differ from field names in struct.
These look like typos.

This commit suggests to add aliases for such parameters, so that the names
in conf are similar to names in struct. This solution is backwards
compatible.

If the difference between conf names and struct names is done on purpose -
this commit can be dropped.

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pan Xiuli <xiuli.pan@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: alsa-devel@alsa-project.org
---
 src/topology/pcm.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/topology/pcm.c b/src/topology/pcm.c
index 2ce1651b..8ebfafd8 100644
--- a/src/topology/pcm.c
+++ b/src/topology/pcm.c
@@ -1126,7 +1126,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "format") == 0) {
+		if (strcmp(id, "format") == 0 ||
+		    strcmp(id, "fmt") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1137,7 +1138,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "bclk") == 0) {
+		if (strcmp(id, "bclk") == 0 ||
+		    strcmp(id, "bclk_master") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1157,7 +1159,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "bclk_freq") == 0) {
+		if (strcmp(id, "bclk_freq") == 0 ||
+		    strcmp(id, "bclk_rate") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1165,7 +1168,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "bclk_invert") == 0) {
+		if (strcmp(id, "bclk_invert") == 0 ||
+		    strcmp(id, "invert_bclk") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1174,7 +1178,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "fsync") == 0) {
+		if (strcmp(id, "fsync") == 0 ||
+		    strcmp(id, "fsync_master") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1194,7 +1199,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "fsync_invert") == 0) {
+		if (strcmp(id, "fsync_invert") == 0 ||
+		    strcmp(id, "invert_fsync") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1203,7 +1209,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "fsync_freq") == 0) {
+		if (strcmp(id, "fsync_freq") == 0 ||
+		    strcmp(id, "fsync_rate") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1211,7 +1218,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "mclk_freq") == 0) {
+		if (strcmp(id, "mclk_freq") == 0 ||
+		    strcmp(id, "mclk_rate") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1219,7 +1227,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "mclk") == 0) {
+		if (strcmp(id, "mclk") == 0 ||
+		    strcmp(id, "mclk_direction") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
@@ -1239,7 +1248,8 @@ int tplg_parse_hw_config(snd_tplg_t *tplg, snd_config_t *cfg,
 			continue;
 		}
 
-		if (strcmp(id, "pm_gate_clocks") == 0) {
+		if (strcmp(id, "pm_gate_clocks") == 0 ||
+		    strcmp(id, "clock_gated") == 0) {
 			if (snd_config_get_string(n, &val) < 0)
 				return -EINVAL;
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs
  2018-04-16 18:26 [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Kirill Marinushkin
                   ` (3 preceding siblings ...)
  2018-04-16 18:26 ` [PATCH alsa-lib v4 4/4] ASoC: topology: Add alias conf parameter names for hw_configs Kirill Marinushkin
@ 2018-04-20  7:29 ` Takashi Iwai
  2018-04-20 11:45   ` Mark Brown
  2018-04-20 17:29   ` Kirill Marinushkin
  4 siblings, 2 replies; 9+ messages in thread
From: Takashi Iwai @ 2018-04-20  7:29 UTC (permalink / raw)
  To: Kirill Marinushkin
  Cc: alsa-devel, Pan Xiuli, Pierre-Louis Bossart, Liam Girdwood, Mark Brown

On Mon, 16 Apr 2018 20:26:37 +0200,
Kirill Marinushkin wrote:
> 
> Hello Takashi,
> 
> This patch series waits since 20th of February, because it modifies UAPI headers
> and should be done in sync with Linux and ALSA. I see that previously there was
> no clear understanding, how to do this in sync.
> 
> We discussed with you on 02 Apr 2018, and you suggested the following steps:
> 
> Step 1. A person from Intel, who knows the topic (Pierre), adds his
> "Reviewed-by" or "Acked-by" tags
> Step 2. I clarify with Mark to apply the Linux part (different patch series)
> Step 3. After that, I clarify with you to apply the ALSA part (this patch
> series)
> 
> The step 1 is done. Old patches are reviewed by Pierre, so they have his
> "Reviewed-by" tag. New patches are suggested by him, and we agreed on the
> implementation, so they have his "Acked-by" tag.
> 
> The step 2 is done. Mark applied the corresponding part to his Linux tree [1].
> 
> Now we are on the step 3. If you don't have anything against this patch series,
> please apply it to ALSA.

Ideally, Mark should send the pull request for the uapi changes he
applied so that they are "fixated" before going further to user-space
patches.

But this topology change is no intrusive ABI breakage, so I applied
now as is.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs
  2018-04-20  7:29 ` [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Takashi Iwai
@ 2018-04-20 11:45   ` Mark Brown
  2018-04-20 17:29   ` Kirill Marinushkin
  1 sibling, 0 replies; 9+ messages in thread
From: Mark Brown @ 2018-04-20 11:45 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, Pan Xiuli, Pierre-Louis Bossart, Liam Girdwood,
	Kirill Marinushkin


[-- Attachment #1.1: Type: text/plain, Size: 486 bytes --]

On Fri, Apr 20, 2018 at 09:29:53AM +0200, Takashi Iwai wrote:

> Ideally, Mark should send the pull request for the uapi changes he
> applied so that they are "fixated" before going further to user-space
> patches.

Unfortunately that's a bit annoying to do now without using topic
branches...

> But this topology change is no intrusive ABI breakage, so I applied
> now as is.

Yeah, it didn't look like there was an actual dependency which was why I
didn't immediately push anything.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs
  2018-04-20  7:29 ` [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Takashi Iwai
  2018-04-20 11:45   ` Mark Brown
@ 2018-04-20 17:29   ` Kirill Marinushkin
  1 sibling, 0 replies; 9+ messages in thread
From: Kirill Marinushkin @ 2018-04-20 17:29 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: alsa-devel, Pan Xiuli, Pierre-Louis Bossart, Liam Girdwood, Mark Brown

On 04/20/18 09:29, Takashi Iwai wrote:
> On Mon, 16 Apr 2018 20:26:37 +0200,
> Kirill Marinushkin wrote:
>> Hello Takashi,
>>
>> This patch series waits since 20th of February, because it modifies UAPI headers
>> and should be done in sync with Linux and ALSA. I see that previously there was
>> no clear understanding, how to do this in sync.
>>
>> We discussed with you on 02 Apr 2018, and you suggested the following steps:
>>
>> Step 1. A person from Intel, who knows the topic (Pierre), adds his
>> "Reviewed-by" or "Acked-by" tags
>> Step 2. I clarify with Mark to apply the Linux part (different patch series)
>> Step 3. After that, I clarify with you to apply the ALSA part (this patch
>> series)
>>
>> The step 1 is done. Old patches are reviewed by Pierre, so they have his
>> "Reviewed-by" tag. New patches are suggested by him, and we agreed on the
>> implementation, so they have his "Acked-by" tag.
>>
>> The step 2 is done. Mark applied the corresponding part to his Linux tree [1].
>>
>> Now we are on the step 3. If you don't have anything against this patch series,
>> please apply it to ALSA.
> Ideally, Mark should send the pull request for the uapi changes he
> applied so that they are "fixated" before going further to user-space
> patches.
>
> But this topology change is no intrusive ABI breakage, so I applied
> now as is.

Thank you

>
>
> thanks,
>
> Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-04-20 17:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-16 18:26 [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Kirill Marinushkin
2018-04-16 18:26 ` [PATCH alsa-lib v4 1/4] ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format() Kirill Marinushkin
2018-04-16 18:26 ` [PATCH alsa-lib v4 2/4] ASoC: topology: Add missing clock gating parameter when parsing hw_configs Kirill Marinushkin
2018-04-16 18:26   ` Kirill Marinushkin
2018-04-16 18:26 ` [PATCH alsa-lib v4 3/4] ASoC: topology: Add definitions for mclk_direction values Kirill Marinushkin
2018-04-16 18:26 ` [PATCH alsa-lib v4 4/4] ASoC: topology: Add alias conf parameter names for hw_configs Kirill Marinushkin
2018-04-20  7:29 ` [PATCH alsa-lib v4 0/4] alsa-lib: ASoC: topology: Improve hw_configs Takashi Iwai
2018-04-20 11:45   ` Mark Brown
2018-04-20 17:29   ` Kirill Marinushkin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.