Merge remote-tracking branch 'asoc/topic/core' into asoc-next
authorMark Brown <broonie@linaro.org>
Tue, 3 Jun 2014 09:39:43 +0000 (10:39 +0100)
committerMark Brown <broonie@linaro.org>
Tue, 3 Jun 2014 09:39:43 +0000 (10:39 +0100)
1  2 
include/sound/soc.h

diff --combined include/sound/soc.h
        .info = snd_soc_info_enum_double, \
        .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, \
        .private_value = (unsigned long)&xenum }
 -#define SOC_VALUE_ENUM(xname, xenum) \
 -      SOC_ENUM(xname, xenum)
  #define SOC_SINGLE_EXT(xname, xreg, xshift, xmax, xinvert,\
         xhandler_get, xhandler_put) \
  {     .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
@@@ -382,8 -384,6 +382,8 @@@ int snd_soc_resume(struct device *dev)
  int snd_soc_poweroff(struct device *dev);
  int snd_soc_register_platform(struct device *dev,
                const struct snd_soc_platform_driver *platform_drv);
 +int devm_snd_soc_register_platform(struct device *dev,
 +              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);
@@@ -931,12 -931,7 +931,12 @@@ struct snd_soc_dai_link 
  };
  
  struct snd_soc_codec_conf {
 +      /*
 +       * specify device either by device name, or by
 +       * DT/OF node, but not both.
 +       */
        const char *dev_name;
 +      const struct device_node *of_node;
  
        /*
         * optional map of kcontrol, widget and path name prefixes that are
  
  struct snd_soc_aux_dev {
        const char *name;               /* Codec name */
 -      const char *codec_name;         /* for multi-codec */
 +
 +      /*
 +       * specify multi-codec either by device name, or by
 +       * DT/OF node, but not both.
 +       */
 +      const char *codec_name;
 +      const struct device_node *codec_of_node;
  
        /* codec/machine specific init - e.g. add machine controls */
        int (*init)(struct snd_soc_dapm_context *dapm);
@@@ -1146,6 -1135,33 +1146,33 @@@ static inline struct snd_soc_platform *
        return container_of(component, struct snd_soc_platform, component);
  }
  
+ /**
+  * snd_soc_dapm_to_codec() - Casts a DAPM context to the CODEC it is embedded in
+  * @dapm: The DAPM context to cast to the CODEC
+  *
+  * This function must only be used on DAPM contexts that are known to be part of
+  * a CODEC (e.g. in a CODEC driver). Otherwise the behavior is undefined.
+  */
+ static inline struct snd_soc_codec *snd_soc_dapm_to_codec(
+       struct snd_soc_dapm_context *dapm)
+ {
+       return container_of(dapm, struct snd_soc_codec, dapm);
+ }
+ /**
+  * snd_soc_dapm_to_platform() - Casts a DAPM context to the platform it is
+  *  embedded in
+  * @dapm: The DAPM context to cast to the platform.
+  *
+  * This function must only be used on DAPM contexts that are known to be part of
+  * a platform (e.g. in a platform driver). Otherwise the behavior is undefined.
+  */
+ static inline struct snd_soc_platform *snd_soc_dapm_to_platform(
+       struct snd_soc_dapm_context *dapm)
+ {
+       return container_of(dapm, struct snd_soc_platform, dapm);
+ }
  /* codec IO */
  unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg);
  int snd_soc_write(struct snd_soc_codec *codec, unsigned int reg,
@@@ -1326,9 -1342,7 +1353,9 @@@ int snd_soc_of_parse_tdm_slot(struct de
  int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,
                                   const char *propname);
  unsigned int snd_soc_of_parse_daifmt(struct device_node *np,
 -                                   const char *prefix);
 +                                   const char *prefix,
 +                                   struct device_node **bitclkmaster,
 +                                   struct device_node **framemaster);
  int snd_soc_of_get_dai_name(struct device_node *of_node,
                            const char **dai_name);