]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/sound/soc.h
Merge tag '5.6-rc-small-smb3-fix-for-stable' of git://git.samba.org/sfrench/cifs-2.6
[linux.git] / include / sound / soc.h
index 26289679982647ca6feb176624c1db65948dfa76..f0e4f36f83bfa7d349f54d278cc46e5db235d8bb 100644 (file)
@@ -464,10 +464,8 @@ static inline int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
 
 void snd_soc_disconnect_sync(struct device *dev);
 
-struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
-               const char *dai_link, int stream);
 struct snd_soc_pcm_runtime *snd_soc_get_pcm_runtime(struct snd_soc_card *card,
-               const char *dai_link);
+                               struct snd_soc_dai_link *dai_link);
 
 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);
@@ -738,19 +736,9 @@ struct snd_soc_compr_ops {
        int (*trigger)(struct snd_compr_stream *);
 };
 
-struct snd_soc_rtdcom_list {
-       struct snd_soc_component *component;
-       struct list_head list; /* rtd::component_list */
-};
 struct snd_soc_component*
 snd_soc_rtdcom_lookup(struct snd_soc_pcm_runtime *rtd,
                       const char *driver_name);
-#define for_each_rtd_components(rtd, rtdcom, _component)               \
-       for (rtdcom = list_first_entry(&(rtd)->component_list,          \
-                                      typeof(*rtdcom), list);          \
-            (&rtdcom->list != &(rtd)->component_list) &&               \
-                    (_component = rtdcom->component);                  \
-            rtdcom = list_next_entry(rtdcom, list))
 
 struct snd_soc_dai_link_component {
        const char *name;
@@ -852,7 +840,6 @@ struct snd_soc_dai_link {
        /* Do not create a PCM for this DAI link (Backend link) */
        unsigned int ignore:1;
 
-       struct list_head list; /* DAI link list of the soc card */
 #ifdef CONFIG_SND_SOC_TOPOLOGY
        struct snd_soc_dobj dobj; /* For topology */
 #endif
@@ -952,6 +939,7 @@ struct snd_soc_dai_link {
 #define COMP_CODEC(_name, _dai)                { .name = _name, .dai_name = _dai, }
 #define COMP_PLATFORM(_name)           { .name = _name }
 #define COMP_AUX(_name)                        { .name = _name }
+#define COMP_CODEC_CONF(_name)         { .name = _name }
 #define COMP_DUMMY()                   { .name = "snd-soc-dummy", .dai_name = "snd-soc-dummy-dai", }
 
 extern struct snd_soc_dai_link_component null_dailink_component[0];
@@ -962,8 +950,7 @@ struct snd_soc_codec_conf {
         * specify device either by device name, or by
         * DT/OF node, but not both.
         */
-       const char *dev_name;
-       struct device_node *of_node;
+       struct snd_soc_dai_link_component dlc;
 
        /*
         * optional map of kcontrol, widget and path name prefixes that are
@@ -989,7 +976,9 @@ struct snd_soc_card {
        const char *long_name;
        const char *driver_name;
        const char *components;
+#ifdef CONFIG_DMI
        char dmi_longname[80];
+#endif /* CONFIG_DMI */
        char topology_shortname[32];
 
        struct device *dev;
@@ -1037,7 +1026,6 @@ struct snd_soc_card {
        /* CPU <--> Codec DAI links  */
        struct snd_soc_dai_link *dai_link;  /* predefined links only */
        int num_links;  /* predefined links only */
-       struct list_head dai_link_list; /* all links */
 
        struct list_head rtd_list;
        int num_rtd;
@@ -1107,11 +1095,6 @@ struct snd_soc_card {
             ((i) < (card)->num_aux_devs) && ((aux) = &(card)->aux_dev[i]); \
             (i)++)
 
-#define for_each_card_links(card, link)                                \
-       list_for_each_entry(link, &(card)->dai_link_list, list)
-#define for_each_card_links_safe(card, link, _link)                    \
-       list_for_each_entry_safe(link, _link, &(card)->dai_link_list, list)
-
 #define for_each_card_rtds(card, rtd)                  \
        list_for_each_entry(rtd, &(card)->rtd_list, list)
 #define for_each_card_rtds_safe(card, rtd, _rtd)       \
@@ -1157,12 +1140,18 @@ struct snd_soc_pcm_runtime {
 
        unsigned int num; /* 0-based and monotonic increasing */
        struct list_head list; /* rtd list of the soc card */
-       struct list_head component_list; /* list of connected components */
 
        /* bit field */
        unsigned int pop_wait:1;
        unsigned int fe_compr:1; /* for Dynamic PCM */
+
+       int num_components;
+       struct snd_soc_component *components[0]; /* CPU/Codec/Platform */
 };
+#define for_each_rtd_components(rtd, i, component)                     \
+       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]); \
@@ -1170,6 +1159,7 @@ struct snd_soc_pcm_runtime {
 #define for_each_rtd_codec_dai_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 */
 struct soc_mixer_control {
@@ -1333,13 +1323,10 @@ int snd_soc_of_get_dai_link_codecs(struct device *dev,
                                   struct snd_soc_dai_link *dai_link);
 void snd_soc_of_put_dai_link_codecs(struct snd_soc_dai_link *dai_link);
 
-int snd_soc_add_dai_link(struct snd_soc_card *card,
-                               struct snd_soc_dai_link *dai_link);
-void snd_soc_remove_dai_link(struct snd_soc_card *card,
-                            struct snd_soc_dai_link *dai_link);
-struct snd_soc_dai_link *snd_soc_find_dai_link(struct snd_soc_card *card,
-                                              int id, const char *name,
-                                              const char *stream_name);
+int snd_soc_add_pcm_runtime(struct snd_soc_card *card,
+                           struct snd_soc_dai_link *dai_link);
+void snd_soc_remove_pcm_runtime(struct snd_soc_card *card,
+                               struct snd_soc_pcm_runtime *rtd);
 
 struct snd_soc_dai *snd_soc_register_dai(struct snd_soc_component *component,
                                         struct snd_soc_dai_driver *dai_drv,
@@ -1409,11 +1396,6 @@ static inline void snd_soc_dapm_mutex_unlock(struct snd_soc_dapm_context *dapm)
        mutex_unlock(&dapm->card->dapm_mutex);
 }
 
-/* bypass */
-int snd_soc_pcm_lib_ioctl(struct snd_soc_component *component,
-                         struct snd_pcm_substream *substream,
-                         unsigned int cmd, void *arg);
-
 #include <sound/soc-component.h>
 
 #endif