diff mbox

[v2,2/3] ASoC: topology: Move v4 manifest header data structures to uapi

Message ID 1527191363-21021-2-git-send-email-linux@roeck-us.net (mailing list archive)
State Accepted
Commit 348f48220b97130817de4aa2058569133c5cc051
Headers show

Commit Message

Guenter Roeck May 24, 2018, 7:49 p.m. UTC
From: Guenter Roeck <groeck@chromium.org>

Topology manifest v4 is still part of the ABI. Move its data structures
into the uapi header file.

No functional change.

Signed-off-by: Guenter Roeck <groeck@chromium.org>
---
v2: Added patch to series

 include/uapi/sound/asoc.h | 57 +++++++++++++++++++++++++++++++++++++++
 sound/soc/soc-topology.c  | 56 --------------------------------------
 2 files changed, 57 insertions(+), 56 deletions(-)

Comments

Lin, Mengdong May 29, 2018, 7:51 a.m. UTC | #1
> -----Original Message-----
> From: alsa-devel-bounces@alsa-project.org [mailto:alsa-devel-bounces@alsa-
> project.org] On Behalf Of Guenter Roeck
> Sent: Friday, May 25, 2018 3:49 AM

> From: Guenter Roeck <groeck@chromium.org>
> 
> Topology manifest v4 is still part of the ABI. Move its data structures into the
> uapi header file.
> 
> No functional change.

It looks good. The v4 version of topology ABI should be in uapi header file.

Previously, we hid the v4 ABI in kernel and hoped people stop using it. But the topology files of old ABI were already shipped out and backward compatibility issue has been there. Thanks for fixing this.

Thanks
Mengdong

> 
> Signed-off-by: Guenter Roeck <groeck@chromium.org>
> ---
> v2: Added patch to series
> 
>  include/uapi/sound/asoc.h | 57
> +++++++++++++++++++++++++++++++++++++++
>  sound/soc/soc-topology.c  | 56 --------------------------------------
>  2 files changed, 57 insertions(+), 56 deletions(-)
> 
> diff --git a/include/uapi/sound/asoc.h b/include/uapi/sound/asoc.h index
> 69c37ecbff7e..a9df4900789c 100644
> --- a/include/uapi/sound/asoc.h
> +++ b/include/uapi/sound/asoc.h
> @@ -552,4 +552,61 @@ struct snd_soc_tplg_dai {
>  	__le32 flags;           /* SND_SOC_TPLG_DAI_FLGBIT_* */
>  	struct snd_soc_tplg_private priv;
>  } __attribute__((packed));
> +
> +/*
> + * Old version of ABI structs, supported for backward compatibility.
> + */
> +
> +/* Manifest v4 */
> +struct snd_soc_tplg_manifest_v4 {
> +	__le32 size;		/* in bytes of this structure */
> +	__le32 control_elems;	/* number of control elements */
> +	__le32 widget_elems;	/* number of widget elements */
> +	__le32 graph_elems;	/* number of graph elements */
> +	__le32 pcm_elems;	/* number of PCM elements */
> +	__le32 dai_link_elems;	/* number of DAI link elements */
> +	struct snd_soc_tplg_private priv;
> +} __packed;
> +
> +/* Stream Capabilities v4 */
> +struct snd_soc_tplg_stream_caps_v4 {
> +	__le32 size;		/* in bytes of this structure */
> +	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
> +	__le64 formats;	/* supported formats SNDRV_PCM_FMTBIT_* */
> +	__le32 rates;		/* supported rates SNDRV_PCM_RATE_* */
> +	__le32 rate_min;	/* min rate */
> +	__le32 rate_max;	/* max rate */
> +	__le32 channels_min;	/* min channels */
> +	__le32 channels_max;	/* max channels */
> +	__le32 periods_min;	/* min number of periods */
> +	__le32 periods_max;	/* max number of periods */
> +	__le32 period_size_min;	/* min period size bytes */
> +	__le32 period_size_max;	/* max period size bytes */
> +	__le32 buffer_size_min;	/* min buffer size bytes */
> +	__le32 buffer_size_max;	/* max buffer size bytes */
> +} __packed;
> +
> +/* PCM v4 */
> +struct snd_soc_tplg_pcm_v4 {
> +	__le32 size;		/* in bytes of this structure */
> +	char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
> +	char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
> +	__le32 pcm_id;		/* unique ID - used to match with DAI link */
> +	__le32 dai_id;		/* unique ID - used to match */
> +	__le32 playback;	/* supports playback mode */
> +	__le32 capture;		/* supports capture mode */
> +	__le32 compress;	/* 1 = compressed; 0 = PCM */
> +	struct snd_soc_tplg_stream
> stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
> +	__le32 num_streams;	/* number of streams */
> +	struct snd_soc_tplg_stream_caps_v4 caps[2]; /* playback and capture
> +for DAI */ } __packed;
> +
> +/* Physical link config v4 */
> +struct snd_soc_tplg_link_config_v4 {
> +	__le32 size;            /* in bytes of this structure */
> +	__le32 id;              /* unique ID - used to match */
> +	struct snd_soc_tplg_stream
> stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback
> and captrure */
> +	__le32 num_streams;     /* number of streams */
> +} __packed;
> +
>  #endif
> diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index
> d66b2e5ccd67..40753c6a2554 100644
> --- a/sound/soc/soc-topology.c
> +++ b/sound/soc/soc-topology.c
> @@ -54,62 +54,6 @@
>  #define SOC_TPLG_PASS_START	SOC_TPLG_PASS_MANIFEST
>  #define SOC_TPLG_PASS_END	SOC_TPLG_PASS_LINK
> 
> -/*
> - * Old version of ABI structs, supported for backward compatibility.
> - */
> -
> -/* Manifest v4 */
> -struct snd_soc_tplg_manifest_v4 {
> -	__le32 size;		/* in bytes of this structure */
> -	__le32 control_elems;	/* number of control elements */
> -	__le32 widget_elems;	/* number of widget elements */
> -	__le32 graph_elems;	/* number of graph elements */
> -	__le32 pcm_elems;	/* number of PCM elements */
> -	__le32 dai_link_elems;	/* number of DAI link elements */
> -	struct snd_soc_tplg_private priv;
> -} __packed;
> -
> -/* Stream Capabilities v4 */
> -struct snd_soc_tplg_stream_caps_v4 {
> -	__le32 size;		/* in bytes of this structure */
> -	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
> -	__le64 formats;	/* supported formats SNDRV_PCM_FMTBIT_* */
> -	__le32 rates;		/* supported rates SNDRV_PCM_RATE_* */
> -	__le32 rate_min;	/* min rate */
> -	__le32 rate_max;	/* max rate */
> -	__le32 channels_min;	/* min channels */
> -	__le32 channels_max;	/* max channels */
> -	__le32 periods_min;	/* min number of periods */
> -	__le32 periods_max;	/* max number of periods */
> -	__le32 period_size_min;	/* min period size bytes */
> -	__le32 period_size_max;	/* max period size bytes */
> -	__le32 buffer_size_min;	/* min buffer size bytes */
> -	__le32 buffer_size_max;	/* max buffer size bytes */
> -} __packed;
> -
> -/* PCM v4 */
> -struct snd_soc_tplg_pcm_v4 {
> -	__le32 size;		/* in bytes of this structure */
> -	char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
> -	char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
> -	__le32 pcm_id;		/* unique ID - used to match with DAI link */
> -	__le32 dai_id;		/* unique ID - used to match */
> -	__le32 playback;	/* supports playback mode */
> -	__le32 capture;		/* supports capture mode */
> -	__le32 compress;	/* 1 = compressed; 0 = PCM */
> -	struct snd_soc_tplg_stream
> stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
> -	__le32 num_streams;	/* number of streams */
> -	struct snd_soc_tplg_stream_caps_v4 caps[2]; /* playback and capture
> for DAI */
> -} __packed;
> -
> -/* Physical link config v4 */
> -struct snd_soc_tplg_link_config_v4 {
> -	__le32 size;            /* in bytes of this structure */
> -	__le32 id;              /* unique ID - used to match */
> -	struct snd_soc_tplg_stream
> stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback
> and captrure */
> -	__le32 num_streams;     /* number of streams */
> -} __packed;
> -
>  /* topology context */
>  struct soc_tplg {
>  	const struct firmware *fw;
> --
> 2.17.0.441.gb46fe60e1d-goog
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
diff mbox

Patch

diff --git a/include/uapi/sound/asoc.h b/include/uapi/sound/asoc.h
index 69c37ecbff7e..a9df4900789c 100644
--- a/include/uapi/sound/asoc.h
+++ b/include/uapi/sound/asoc.h
@@ -552,4 +552,61 @@  struct snd_soc_tplg_dai {
 	__le32 flags;           /* SND_SOC_TPLG_DAI_FLGBIT_* */
 	struct snd_soc_tplg_private priv;
 } __attribute__((packed));
+
+/*
+ * Old version of ABI structs, supported for backward compatibility.
+ */
+
+/* Manifest v4 */
+struct snd_soc_tplg_manifest_v4 {
+	__le32 size;		/* in bytes of this structure */
+	__le32 control_elems;	/* number of control elements */
+	__le32 widget_elems;	/* number of widget elements */
+	__le32 graph_elems;	/* number of graph elements */
+	__le32 pcm_elems;	/* number of PCM elements */
+	__le32 dai_link_elems;	/* number of DAI link elements */
+	struct snd_soc_tplg_private priv;
+} __packed;
+
+/* Stream Capabilities v4 */
+struct snd_soc_tplg_stream_caps_v4 {
+	__le32 size;		/* in bytes of this structure */
+	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+	__le64 formats;	/* supported formats SNDRV_PCM_FMTBIT_* */
+	__le32 rates;		/* supported rates SNDRV_PCM_RATE_* */
+	__le32 rate_min;	/* min rate */
+	__le32 rate_max;	/* max rate */
+	__le32 channels_min;	/* min channels */
+	__le32 channels_max;	/* max channels */
+	__le32 periods_min;	/* min number of periods */
+	__le32 periods_max;	/* max number of periods */
+	__le32 period_size_min;	/* min period size bytes */
+	__le32 period_size_max;	/* max period size bytes */
+	__le32 buffer_size_min;	/* min buffer size bytes */
+	__le32 buffer_size_max;	/* max buffer size bytes */
+} __packed;
+
+/* PCM v4 */
+struct snd_soc_tplg_pcm_v4 {
+	__le32 size;		/* in bytes of this structure */
+	char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+	char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
+	__le32 pcm_id;		/* unique ID - used to match with DAI link */
+	__le32 dai_id;		/* unique ID - used to match */
+	__le32 playback;	/* supports playback mode */
+	__le32 capture;		/* supports capture mode */
+	__le32 compress;	/* 1 = compressed; 0 = PCM */
+	struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
+	__le32 num_streams;	/* number of streams */
+	struct snd_soc_tplg_stream_caps_v4 caps[2]; /* playback and capture for DAI */
+} __packed;
+
+/* Physical link config v4 */
+struct snd_soc_tplg_link_config_v4 {
+	__le32 size;            /* in bytes of this structure */
+	__le32 id;              /* unique ID - used to match */
+	struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
+	__le32 num_streams;     /* number of streams */
+} __packed;
+
 #endif
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
index d66b2e5ccd67..40753c6a2554 100644
--- a/sound/soc/soc-topology.c
+++ b/sound/soc/soc-topology.c
@@ -54,62 +54,6 @@ 
 #define SOC_TPLG_PASS_START	SOC_TPLG_PASS_MANIFEST
 #define SOC_TPLG_PASS_END	SOC_TPLG_PASS_LINK
 
-/*
- * Old version of ABI structs, supported for backward compatibility.
- */
-
-/* Manifest v4 */
-struct snd_soc_tplg_manifest_v4 {
-	__le32 size;		/* in bytes of this structure */
-	__le32 control_elems;	/* number of control elements */
-	__le32 widget_elems;	/* number of widget elements */
-	__le32 graph_elems;	/* number of graph elements */
-	__le32 pcm_elems;	/* number of PCM elements */
-	__le32 dai_link_elems;	/* number of DAI link elements */
-	struct snd_soc_tplg_private priv;
-} __packed;
-
-/* Stream Capabilities v4 */
-struct snd_soc_tplg_stream_caps_v4 {
-	__le32 size;		/* in bytes of this structure */
-	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
-	__le64 formats;	/* supported formats SNDRV_PCM_FMTBIT_* */
-	__le32 rates;		/* supported rates SNDRV_PCM_RATE_* */
-	__le32 rate_min;	/* min rate */
-	__le32 rate_max;	/* max rate */
-	__le32 channels_min;	/* min channels */
-	__le32 channels_max;	/* max channels */
-	__le32 periods_min;	/* min number of periods */
-	__le32 periods_max;	/* max number of periods */
-	__le32 period_size_min;	/* min period size bytes */
-	__le32 period_size_max;	/* max period size bytes */
-	__le32 buffer_size_min;	/* min buffer size bytes */
-	__le32 buffer_size_max;	/* max buffer size bytes */
-} __packed;
-
-/* PCM v4 */
-struct snd_soc_tplg_pcm_v4 {
-	__le32 size;		/* in bytes of this structure */
-	char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
-	char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
-	__le32 pcm_id;		/* unique ID - used to match with DAI link */
-	__le32 dai_id;		/* unique ID - used to match */
-	__le32 playback;	/* supports playback mode */
-	__le32 capture;		/* supports capture mode */
-	__le32 compress;	/* 1 = compressed; 0 = PCM */
-	struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
-	__le32 num_streams;	/* number of streams */
-	struct snd_soc_tplg_stream_caps_v4 caps[2]; /* playback and capture for DAI */
-} __packed;
-
-/* Physical link config v4 */
-struct snd_soc_tplg_link_config_v4 {
-	__le32 size;            /* in bytes of this structure */
-	__le32 id;              /* unique ID - used to match */
-	struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
-	__le32 num_streams;     /* number of streams */
-} __packed;
-
 /* topology context */
 struct soc_tplg {
 	const struct firmware *fw;