]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/sound/soc-dai.h
Merge remote-tracking branches 'asoc/topic/tlv320aic31xx', 'asoc/topic/topology'...
[karo-tx-linux.git] / include / sound / soc-dai.h
index 964b7de1a1cc2ebd8cd58fe16487cc631caf9f71..200e1f04c16612f14be43acfe9569cab2af7e673 100644 (file)
@@ -15,6 +15,7 @@
 
 
 #include <linux/list.h>
+#include <sound/asoc.h>
 
 struct snd_pcm_substream;
 struct snd_soc_dapm_widget;
@@ -26,13 +27,13 @@ struct snd_compr_stream;
  * Describes the physical PCM data formating and clocking. Add new formats
  * to the end.
  */
-#define SND_SOC_DAIFMT_I2S             1 /* I2S mode */
-#define SND_SOC_DAIFMT_RIGHT_J         2 /* Right Justified mode */
-#define SND_SOC_DAIFMT_LEFT_J          3 /* Left Justified mode */
-#define SND_SOC_DAIFMT_DSP_A           4 /* L data MSB after FRM LRC */
-#define SND_SOC_DAIFMT_DSP_B           5 /* L data MSB during FRM LRC */
-#define SND_SOC_DAIFMT_AC97            6 /* AC97 */
-#define SND_SOC_DAIFMT_PDM             7 /* Pulse density modulation */
+#define SND_SOC_DAIFMT_I2S             SND_SOC_DAI_FORMAT_I2S
+#define SND_SOC_DAIFMT_RIGHT_J         SND_SOC_DAI_FORMAT_RIGHT_J
+#define SND_SOC_DAIFMT_LEFT_J          SND_SOC_DAI_FORMAT_LEFT_J
+#define SND_SOC_DAIFMT_DSP_A           SND_SOC_DAI_FORMAT_DSP_A
+#define SND_SOC_DAIFMT_DSP_B           SND_SOC_DAI_FORMAT_DSP_B
+#define SND_SOC_DAIFMT_AC97            SND_SOC_DAI_FORMAT_AC97
+#define SND_SOC_DAIFMT_PDM             SND_SOC_DAI_FORMAT_PDM
 
 /* left and right justified also known as MSB and LSB respectively */
 #define SND_SOC_DAIFMT_MSB             SND_SOC_DAIFMT_LEFT_J
@@ -207,6 +208,30 @@ struct snd_soc_dai_ops {
                struct snd_soc_dai *);
 };
 
+struct snd_soc_cdai_ops {
+       /*
+        * for compress ops
+        */
+       int (*startup)(struct snd_compr_stream *,
+                       struct snd_soc_dai *);
+       int (*shutdown)(struct snd_compr_stream *,
+                       struct snd_soc_dai *);
+       int (*set_params)(struct snd_compr_stream *,
+                       struct snd_compr_params *, struct snd_soc_dai *);
+       int (*get_params)(struct snd_compr_stream *,
+                       struct snd_codec *, struct snd_soc_dai *);
+       int (*set_metadata)(struct snd_compr_stream *,
+                       struct snd_compr_metadata *, struct snd_soc_dai *);
+       int (*get_metadata)(struct snd_compr_stream *,
+                       struct snd_compr_metadata *, struct snd_soc_dai *);
+       int (*trigger)(struct snd_compr_stream *, int,
+                       struct snd_soc_dai *);
+       int (*pointer)(struct snd_compr_stream *,
+                       struct snd_compr_tstamp *, struct snd_soc_dai *);
+       int (*ack)(struct snd_compr_stream *, size_t,
+                       struct snd_soc_dai *);
+};
+
 /*
  * Digital Audio Interface Driver.
  *
@@ -236,6 +261,7 @@ struct snd_soc_dai_driver {
 
        /* ops */
        const struct snd_soc_dai_ops *ops;
+       const struct snd_soc_cdai_ops *cops;
 
        /* DAI capabilities */
        struct snd_soc_pcm_stream capture;
@@ -268,8 +294,9 @@ struct snd_soc_dai {
        unsigned int symmetric_rates:1;
        unsigned int symmetric_channels:1;
        unsigned int symmetric_samplebits:1;
+       unsigned int probed:1;
+
        unsigned int active;
-       unsigned char probed:1;
 
        struct snd_soc_dapm_widget *playback_widget;
        struct snd_soc_dapm_widget *capture_widget;