Merge remote-tracking branch 'asoc/topic/core' into asoc-next
[sfrench/cifs-2.6.git] / include / sound / soc.h
index c4a8b1947566bb659f47051f5987e01a1e2918f0..d22de9712c451d67a9ee068ab8001589f55901bd 100644 (file)
@@ -469,10 +469,10 @@ int snd_soc_register_codec(struct device *dev,
                struct snd_soc_dai_driver *dai_drv, int num_dai);
 void snd_soc_unregister_codec(struct device *dev);
 int snd_soc_register_component(struct device *dev,
-                        const struct snd_soc_component_driver *cmpnt_drv,
+                        const struct snd_soc_component_driver *component_driver,
                         struct snd_soc_dai_driver *dai_drv, int num_dai);
 int devm_snd_soc_register_component(struct device *dev,
-                        const struct snd_soc_component_driver *cmpnt_drv,
+                        const struct snd_soc_component_driver *component_driver,
                         struct snd_soc_dai_driver *dai_drv, int num_dai);
 void snd_soc_unregister_component(struct device *dev);
 int snd_soc_cache_init(struct snd_soc_codec *codec);
@@ -795,6 +795,14 @@ struct snd_soc_component_driver {
        int (*suspend)(struct snd_soc_component *);
        int (*resume)(struct snd_soc_component *);
 
+       /* component wide operations */
+       int (*set_sysclk)(struct snd_soc_component *component,
+                         int clk_id, int source, unsigned int freq, int dir);
+       int (*set_pll)(struct snd_soc_component *component, int pll_id,
+                      int source, unsigned int freq_in, unsigned int freq_out);
+       int (*set_jack)(struct snd_soc_component *component,
+                       struct snd_soc_jack *jack,  void *data);
+
        /* DT */
        int (*of_xlate_dai_name)(struct snd_soc_component *component,
                                 struct of_phandle_args *args,
@@ -858,12 +866,6 @@ struct snd_soc_component {
        /* Don't use these, use snd_soc_component_get_dapm() */
        struct snd_soc_dapm_context dapm;
 
-       const struct snd_kcontrol_new *controls;
-       unsigned int num_controls;
-       const struct snd_soc_dapm_widget *dapm_widgets;
-       unsigned int num_dapm_widgets;
-       const struct snd_soc_dapm_route *dapm_routes;
-       unsigned int num_dapm_routes;
        struct snd_soc_codec *codec;
 
        int (*probe)(struct snd_soc_component *);
@@ -871,6 +873,13 @@ struct snd_soc_component {
        int (*suspend)(struct snd_soc_component *);
        int (*resume)(struct snd_soc_component *);
 
+       int (*set_sysclk)(struct snd_soc_component *component,
+                         int clk_id, int source, unsigned int freq, int dir);
+       int (*set_pll)(struct snd_soc_component *component, int pll_id,
+                      int source, unsigned int freq_in, unsigned int freq_out);
+       int (*set_jack)(struct snd_soc_component *component,
+                       struct snd_soc_jack *jack,  void *data);
+
        /* machine specific init */
        int (*init)(struct snd_soc_component *component);
 
@@ -880,6 +889,18 @@ struct snd_soc_component {
 #endif
 };
 
+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_rtdcom(rtd, rtdcom) \
+       list_for_each_entry(rtdcom, &(rtd)->component_list, list)
+#define for_each_rtdcom_safe(rtd, rtdcom1, rtdcom2) \
+       list_for_each_entry_safe(rtdcom1, rtdcom2, &(rtd)->component_list, list)
+
 /* SoC Audio Codec device */
 struct snd_soc_codec {
        struct device *dev;
@@ -888,7 +909,6 @@ struct snd_soc_codec {
        struct list_head list;
 
        /* runtime */
-       unsigned int cache_bypass:1; /* Suppress access to the cache */
        unsigned int cache_init:1; /* codec cache has been initialized */
 
        /* codec IO */
@@ -898,10 +918,6 @@ struct snd_soc_codec {
 
        /* component */
        struct snd_soc_component component;
-
-#ifdef CONFIG_DEBUG_FS
-       struct dentry *debugfs_reg;
-#endif
 };
 
 /* codec driver */
@@ -1224,7 +1240,7 @@ struct snd_soc_pcm_runtime {
        struct snd_pcm *pcm;
        struct snd_compr *compr;
        struct snd_soc_codec *codec;
-       struct snd_soc_platform *platform;
+       struct snd_soc_platform *platform; /* will be removed */
        struct snd_soc_dai *codec_dai;
        struct snd_soc_dai *cpu_dai;
 
@@ -1234,11 +1250,11 @@ struct snd_soc_pcm_runtime {
        struct delayed_work delayed_work;
 #ifdef CONFIG_DEBUG_FS
        struct dentry *debugfs_dpcm_root;
-       struct dentry *debugfs_dpcm_state;
 #endif
 
        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 dev_registered:1;
@@ -1465,6 +1481,13 @@ void snd_soc_component_async_complete(struct snd_soc_component *component);
 int snd_soc_component_test_bits(struct snd_soc_component *component,
        unsigned int reg, unsigned int mask, unsigned int value);
 
+/* component wide operations */
+int snd_soc_component_set_sysclk(struct snd_soc_component *component,
+                       int clk_id, int source, unsigned int freq, int dir);
+int snd_soc_component_set_pll(struct snd_soc_component *component, int pll_id,
+                             int source, unsigned int freq_in,
+                             unsigned int freq_out);
+
 #ifdef CONFIG_REGMAP
 
 void snd_soc_component_init_regmap(struct snd_soc_component *component,