]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - include/sound/soc.h
Merge remote-tracking branch 'asoc/topic/dma' into asoc-next
[mirror_ubuntu-artful-kernel.git] / include / sound / soc.h
index a6a059ca387471083de2dc2e21e1584f6796925f..85c15226103b09c17c3b48b6366b182cac235ded 100644 (file)
@@ -324,6 +324,8 @@ struct snd_soc_dai_link;
 struct snd_soc_platform_driver;
 struct snd_soc_codec;
 struct snd_soc_codec_driver;
+struct snd_soc_component;
+struct snd_soc_component_driver;
 struct soc_enum;
 struct snd_soc_jack;
 struct snd_soc_jack_zone;
@@ -371,12 +373,20 @@ int snd_soc_suspend(struct device *dev);
 int snd_soc_resume(struct device *dev);
 int snd_soc_poweroff(struct device *dev);
 int snd_soc_register_platform(struct device *dev,
-               struct snd_soc_platform_driver *platform_drv);
+               const struct snd_soc_platform_driver *platform_drv);
 void snd_soc_unregister_platform(struct device *dev);
+int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform,
+               const struct snd_soc_platform_driver *platform_drv);
+void snd_soc_remove_platform(struct snd_soc_platform *platform);
+struct snd_soc_platform *snd_soc_lookup_platform(struct device *dev);
 int snd_soc_register_codec(struct device *dev,
                const struct snd_soc_codec_driver *codec_drv,
                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,
+                        struct snd_soc_dai_driver *dai_drv, int num_dai);
+void snd_soc_unregister_component(struct device *dev);
 int snd_soc_codec_volatile_register(struct snd_soc_codec *codec,
                                    unsigned int reg);
 int snd_soc_codec_readable_register(struct snd_soc_codec *codec,
@@ -801,10 +811,10 @@ struct snd_soc_platform_driver {
                struct snd_soc_dai *);
 
        /* platform stream pcm ops */
-       struct snd_pcm_ops *ops;
+       const struct snd_pcm_ops *ops;
 
        /* platform stream compress ops */
-       struct snd_compr_ops *compr_ops;
+       const struct snd_compr_ops *compr_ops;
 
        /* platform stream completion event */
        int (*stream_event)(struct snd_soc_dapm_context *dapm, int event);
@@ -823,7 +833,7 @@ struct snd_soc_platform {
        const char *name;
        int id;
        struct device *dev;
-       struct snd_soc_platform_driver *driver;
+       const struct snd_soc_platform_driver *driver;
        struct mutex mutex;
 
        unsigned int suspended:1; /* platform is suspended */
@@ -841,6 +851,20 @@ struct snd_soc_platform {
 #endif
 };
 
+struct snd_soc_component_driver {
+       const char *name;
+};
+
+struct snd_soc_component {
+       const char *name;
+       int id;
+       int num_dai;
+       struct device *dev;
+       struct list_head list;
+
+       const struct snd_soc_component_driver *driver;
+};
+
 struct snd_soc_dai_link {
        /* config - must be set by machine driver */
        const char *name;                       /* Codec name */
@@ -1086,7 +1110,6 @@ struct soc_enum {
        unsigned int mask;
        const char * const *texts;
        const unsigned int *values;
-       void *dapm;
 };
 
 /* codec IO */