Merge branch 'for-5.6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[platform/kernel/linux-rpi.git] / include / sound / soc.h
index efb8bad..d97c4aa 100644 (file)
@@ -471,6 +471,9 @@ bool snd_soc_runtime_ignore_pmdown_time(struct snd_soc_pcm_runtime *rtd);
 void snd_soc_runtime_activate(struct snd_soc_pcm_runtime *rtd, int stream);
 void snd_soc_runtime_deactivate(struct snd_soc_pcm_runtime *rtd, int stream);
 
+int snd_soc_runtime_calc_hw(struct snd_soc_pcm_runtime *rtd,
+                           struct snd_pcm_hardware *hw, int stream);
+
 int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd,
        unsigned int dai_fmt);
 
@@ -855,6 +858,11 @@ struct snd_soc_dai_link {
             ((platform) = &link->platforms[i]);                        \
             (i)++)
 
+#define for_each_link_cpus(link, i, cpu)                               \
+       for ((i) = 0;                                                   \
+            ((i) < link->num_cpus) && ((cpu) = &link->cpus[i]);        \
+            (i)++)
+
 /*
  * Sample 1 : Single CPU/Codec/Platform
  *
@@ -1110,6 +1118,14 @@ struct snd_soc_card {
 #define for_each_card_components(card, component)                      \
        list_for_each_entry(component, &(card)->component_dev_list, card_list)
 
+#define for_each_card_dapms(card, dapm)                                        \
+       list_for_each_entry(dapm, &card->dapm_list, list)
+
+#define for_each_card_widgets(card, w)\
+       list_for_each_entry(w, &card->widgets, list)
+#define for_each_card_widgets_safe(card, w, _w)        \
+       list_for_each_entry_safe(w, _w, &card->widgets, list)
+
 /* SoC machine DAI configuration, glues a codec and cpu DAI together */
 struct snd_soc_pcm_runtime {
        struct device *dev;
@@ -1133,6 +1149,9 @@ struct snd_soc_pcm_runtime {
        struct snd_soc_dai **codec_dais;
        unsigned int num_codecs;
 
+       struct snd_soc_dai **cpu_dais;
+       unsigned int num_cpus;
+
        struct delayed_work delayed_work;
        void (*close_delayed_work_func)(struct snd_soc_pcm_runtime *rtd);
 #ifdef CONFIG_DEBUG_FS
@@ -1153,13 +1172,20 @@ struct snd_soc_pcm_runtime {
        for ((i) = 0;                                                   \
             ((i) < rtd->num_components) && ((component) = rtd->components[i]);\
             (i)++)
-#define for_each_rtd_codec_dai(rtd, i, dai)\
-       for ((i) = 0;                                                  \
-            ((i) < rtd->num_codecs) && ((dai) = rtd->codec_dais[i]); \
+#define for_each_rtd_cpu_dais(rtd, i, dai)                             \
+       for ((i) = 0;                                                   \
+            ((i) < rtd->num_cpus) && ((dai) = rtd->cpu_dais[i]);       \
+            (i)++)
+#define for_each_rtd_cpu_dais_rollback(rtd, i, dai)            \
+       for (; (--(i) >= 0) && ((dai) = rtd->cpu_dais[i]);)
+#define for_each_rtd_codec_dais(rtd, i, dai)                           \
+       for ((i) = 0;                                                   \
+            ((i) < rtd->num_codecs) && ((dai) = rtd->codec_dais[i]);   \
             (i)++)
-#define for_each_rtd_codec_dai_rollback(rtd, i, dai)           \
+#define for_each_rtd_codec_dais_rollback(rtd, i, dai)          \
        for (; (--(i) >= 0) && ((dai) = rtd->codec_dais[i]);)
 
+
 void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd);
 
 /* mixer control */