]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/sound/soc.h
drm/i915: fix Haswell FDI link training code
[karo-tx-linux.git] / include / sound / soc.h
index e063380f63a2517f724641f5f84d7a300f95335c..91244a096c190223c17272aa23d219f47b40ab71 100644 (file)
 #include <linux/interrupt.h>
 #include <linux/kernel.h>
 #include <linux/regmap.h>
+#include <linux/log2.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
+#include <sound/compress_driver.h>
 #include <sound/control.h>
 #include <sound/ac97_codec.h>
 
                 .platform_max = xmax} }
 #define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmax, xtexts) \
 {      .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
-       .max = xmax, .texts = xtexts }
+       .max = xmax, .texts = xtexts, \
+       .mask = xmax ? roundup_pow_of_two(xmax) - 1 : 0}
 #define SOC_ENUM_SINGLE(xreg, xshift, xmax, xtexts) \
        SOC_ENUM_DOUBLE(xreg, xshift, xshift, xmax, xtexts)
 #define SOC_ENUM_SINGLE_EXT(xmax, xtexts) \
@@ -399,6 +402,7 @@ int snd_soc_platform_read(struct snd_soc_platform *platform,
 int snd_soc_platform_write(struct snd_soc_platform *platform,
                                        unsigned int reg, unsigned int val);
 int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num);
+int soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num);
 
 struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
                const char *dai_link, int stream);
@@ -632,6 +636,13 @@ struct snd_soc_ops {
        int (*trigger)(struct snd_pcm_substream *, int);
 };
 
+struct snd_soc_compr_ops {
+       int (*startup)(struct snd_compr_stream *);
+       void (*shutdown)(struct snd_compr_stream *);
+       int (*set_params)(struct snd_compr_stream *);
+       int (*trigger)(struct snd_compr_stream *);
+};
+
 /* SoC cache ops */
 struct snd_soc_cache_ops {
        const char *name;
@@ -787,9 +798,12 @@ struct snd_soc_platform_driver {
        snd_pcm_sframes_t (*delay)(struct snd_pcm_substream *,
                struct snd_soc_dai *);
 
-       /* platform stream ops */
+       /* platform stream pcm ops */
        struct snd_pcm_ops *ops;
 
+       /* platform stream compress ops */
+       struct snd_compr_ops *compr_ops;
+
        /* platform stream completion event */
        int (*stream_event)(struct snd_soc_dapm_context *dapm, int event);
 
@@ -891,6 +905,7 @@ struct snd_soc_dai_link {
 
        /* machine stream operations */
        struct snd_soc_ops *ops;
+       struct snd_soc_compr_ops *compr_ops;
 };
 
 struct snd_soc_codec_conf {
@@ -1027,6 +1042,7 @@ struct snd_soc_pcm_runtime {
 
        /* runtime devices */
        struct snd_pcm *pcm;
+       struct snd_compr *compr;
        struct snd_soc_codec *codec;
        struct snd_soc_platform *platform;
        struct snd_soc_dai *codec_dai;