OSDN Git Service

topology: ABI - Define new types for physical DAI
authorGuneshwor Singh <guneshwor.o.singh@intel.com>
Wed, 16 Nov 2016 06:42:25 +0000 (14:42 +0800)
committerTakashi Iwai <tiwai@suse.de>
Tue, 22 Nov 2016 06:50:25 +0000 (07:50 +0100)
Define the type and ABI struct for physical DAIs (e.g. backend DAIs).
They are new to ABI and so no backward compatibility risk.

Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com>
Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/asoc.h

index e14843b..1232f1e 100644 (file)
 #define SND_SOC_TPLG_TYPE_CODEC_LINK   9
 #define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
 #define SND_SOC_TPLG_TYPE_PDATA                11
-#define SND_SOC_TPLG_TYPE_MAX  SND_SOC_TPLG_TYPE_PDATA
+#define SND_SOC_TPLG_TYPE_DAI          12
+#define SND_SOC_TPLG_TYPE_MAX          SND_SOC_TPLG_TYPE_DAI
 
 /* vendor block IDs - please add new vendor types to end */
 #define SND_SOC_TPLG_TYPE_VENDOR_FW    1000
 #define SND_SOC_TPLG_TUPLE_TYPE_WORD   4
 #define SND_SOC_TPLG_TUPLE_TYPE_SHORT  5
 
+/* DAI flags */
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES         (1 << 0)
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS      (1 << 1)
+#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS    (1 << 2)
+
 /* DAI physical PCM data formats.
  * Add new formats to the end of the list.
  */
@@ -510,4 +516,27 @@ struct snd_soc_tplg_link_config {
        __le32 flags;           /* SND_SOC_TPLG_LNK_FLGBIT_* flag value */
        struct snd_soc_tplg_private priv;
 } __attribute__((packed));
+
+/*
+ * Describes SW/FW specific features of physical DAI.
+ * It can be used to configure backend DAIs for DPCM.
+ *
+ * File block representation for physical DAI :-
+ * +-----------------------------------+-----+
+ * | struct snd_soc_tplg_hdr           |  1  |
+ * +-----------------------------------+-----+
+ * | struct snd_soc_tplg_dai           |  N  |
+ * +-----------------------------------+-----+
+ */
+struct snd_soc_tplg_dai {
+       __le32 size;            /* in bytes of this structure */
+       char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* name - used to match */
+       __le32 dai_id;          /* unique ID - used to match */
+       __le32 playback;        /* supports playback mode */
+       __le32 capture;         /* supports capture mode */
+       struct snd_soc_tplg_stream_caps caps[2]; /* playback and capture for DAI */
+       __le32 flag_mask;       /* bitmask of flags to configure */
+       __le32 flags;           /* SND_SOC_TPLG_DAI_FLGBIT_* */
+       struct snd_soc_tplg_private priv;
+} __attribute__((packed));
 #endif