Loading MAINTAINERS +1 −0 Original line number Original line Diff line number Diff line Loading @@ -7683,6 +7683,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://alsa-project.org/main/index.php/ASoC W: http://alsa-project.org/main/index.php/ASoC S: Supported S: Supported F: Documentation/sound/alsa/soc/ F: sound/soc/ F: sound/soc/ F: include/sound/soc* F: include/sound/soc* Loading include/sound/soc.h +1 −5 Original line number Original line Diff line number Diff line Loading @@ -234,7 +234,7 @@ .private_value = xdata } .private_value = xdata } #define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \ #define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ .info = snd_soc_info_enum_ext, \ .info = snd_soc_info_enum_double, \ .get = xhandler_get, .put = xhandler_put, \ .get = xhandler_get, .put = xhandler_put, \ .private_value = (unsigned long)&xenum } .private_value = (unsigned long)&xenum } Loading Loading @@ -489,8 +489,6 @@ int snd_soc_add_dai_controls(struct snd_soc_dai *dai, const struct snd_kcontrol_new *controls, int num_controls); const struct snd_kcontrol_new *controls, int num_controls); int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol, int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); struct snd_ctl_elem_info *uinfo); int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol, int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol); int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol, int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol, Loading @@ -501,8 +499,6 @@ int snd_soc_put_value_enum_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol); int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); struct snd_ctl_elem_info *uinfo); int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol); Loading sound/soc/codecs/Kconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,7 @@ config SND_SOC_I2C_AND_SPI config SND_SOC_ALL_CODECS config SND_SOC_ALL_CODECS tristate "Build all ASoC CODEC drivers" tristate "Build all ASoC CODEC drivers" depends on COMPILE_TEST select SND_SOC_88PM860X if MFD_88PM860X select SND_SOC_88PM860X if MFD_88PM860X select SND_SOC_L3 select SND_SOC_L3 select SND_SOC_AB8500_CODEC if ABX500_CORE select SND_SOC_AB8500_CODEC if ABX500_CORE Loading sound/soc/soc-core.c +12 −55 Original line number Original line Diff line number Diff line Loading @@ -50,8 +50,6 @@ #define NAME_SIZE 32 #define NAME_SIZE 32 static DECLARE_WAIT_QUEUE_HEAD(soc_pm_waitq); #ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS struct dentry *snd_soc_debugfs_root; struct dentry *snd_soc_debugfs_root; EXPORT_SYMBOL_GPL(snd_soc_debugfs_root); EXPORT_SYMBOL_GPL(snd_soc_debugfs_root); Loading Loading @@ -543,6 +541,15 @@ static int soc_ac97_dev_register(struct snd_soc_codec *codec) } } #endif #endif static void codec2codec_close_delayed_work(struct work_struct *work) { /* Currently nothing to do for c2c links * Since c2c links are internal nodes in the DAPM graph and * don't interface with the outside world or application layer * we don't have to do any special handling on close. */ } #ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP /* powers down audio subsystem for suspend */ /* powers down audio subsystem for suspend */ int snd_soc_suspend(struct device *dev) int snd_soc_suspend(struct device *dev) Loading Loading @@ -1441,6 +1448,9 @@ static int soc_probe_link_dais(struct snd_soc_card *card, int num, int order) return ret; return ret; } } } else { } else { INIT_DELAYED_WORK(&rtd->delayed_work, codec2codec_close_delayed_work); /* link the DAI widgets */ /* link the DAI widgets */ play_w = codec_dai->playback_widget; play_w = codec_dai->playback_widget; capture_w = cpu_dai->capture_widget; capture_w = cpu_dai->capture_widget; Loading Loading @@ -2709,59 +2719,6 @@ int snd_soc_put_value_enum_double(struct snd_kcontrol *kcontrol, } } EXPORT_SYMBOL_GPL(snd_soc_put_value_enum_double); EXPORT_SYMBOL_GPL(snd_soc_put_value_enum_double); /** * snd_soc_info_enum_ext - external enumerated single mixer info callback * @kcontrol: mixer control * @uinfo: control element information * * Callback to provide information about an external enumerated * single mixer. * * Returns 0 for success. */ int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; uinfo->count = 1; uinfo->value.enumerated.items = e->max; if (uinfo->value.enumerated.item > e->max - 1) uinfo->value.enumerated.item = e->max - 1; strcpy(uinfo->value.enumerated.name, e->texts[uinfo->value.enumerated.item]); return 0; } EXPORT_SYMBOL_GPL(snd_soc_info_enum_ext); /** * snd_soc_info_volsw_ext - external single mixer info callback * @kcontrol: mixer control * @uinfo: control element information * * Callback to provide information about a single external mixer control. * * Returns 0 for success. */ int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { int max = kcontrol->private_value; if (max == 1 && !strstr(kcontrol->id.name, " Volume")) uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; else uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; uinfo->count = 1; uinfo->value.integer.min = 0; uinfo->value.integer.max = max; return 0; } EXPORT_SYMBOL_GPL(snd_soc_info_volsw_ext); /** /** * snd_soc_info_volsw - single mixer info callback * snd_soc_info_volsw - single mixer info callback * @kcontrol: mixer control * @kcontrol: mixer control Loading sound/soc/soc-dapm.c +0 −30 Original line number Original line Diff line number Diff line Loading @@ -174,36 +174,6 @@ static inline struct snd_soc_dapm_widget *dapm_cnew_widget( return kmemdup(_widget, sizeof(*_widget), GFP_KERNEL); return kmemdup(_widget, sizeof(*_widget), GFP_KERNEL); } } /* get snd_card from DAPM context */ static inline struct snd_card *dapm_get_snd_card( struct snd_soc_dapm_context *dapm) { if (dapm->codec) return dapm->codec->card->snd_card; else if (dapm->platform) return dapm->platform->card->snd_card; else BUG(); /* unreachable */ return NULL; } /* get soc_card from DAPM context */ static inline struct snd_soc_card *dapm_get_soc_card( struct snd_soc_dapm_context *dapm) { if (dapm->codec) return dapm->codec->card; else if (dapm->platform) return dapm->platform->card; else BUG(); /* unreachable */ return NULL; } static void dapm_reset(struct snd_soc_card *card) static void dapm_reset(struct snd_soc_card *card) { { struct snd_soc_dapm_widget *w; struct snd_soc_dapm_widget *w; Loading Loading
MAINTAINERS +1 −0 Original line number Original line Diff line number Diff line Loading @@ -7683,6 +7683,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://alsa-project.org/main/index.php/ASoC W: http://alsa-project.org/main/index.php/ASoC S: Supported S: Supported F: Documentation/sound/alsa/soc/ F: sound/soc/ F: sound/soc/ F: include/sound/soc* F: include/sound/soc* Loading
include/sound/soc.h +1 −5 Original line number Original line Diff line number Diff line Loading @@ -234,7 +234,7 @@ .private_value = xdata } .private_value = xdata } #define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \ #define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ .info = snd_soc_info_enum_ext, \ .info = snd_soc_info_enum_double, \ .get = xhandler_get, .put = xhandler_put, \ .get = xhandler_get, .put = xhandler_put, \ .private_value = (unsigned long)&xenum } .private_value = (unsigned long)&xenum } Loading Loading @@ -489,8 +489,6 @@ int snd_soc_add_dai_controls(struct snd_soc_dai *dai, const struct snd_kcontrol_new *controls, int num_controls); const struct snd_kcontrol_new *controls, int num_controls); int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol, int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); struct snd_ctl_elem_info *uinfo); int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol, int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol); int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol, int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol, Loading @@ -501,8 +499,6 @@ int snd_soc_put_value_enum_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol); int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); struct snd_ctl_elem_info *uinfo); int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol); Loading
sound/soc/codecs/Kconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,7 @@ config SND_SOC_I2C_AND_SPI config SND_SOC_ALL_CODECS config SND_SOC_ALL_CODECS tristate "Build all ASoC CODEC drivers" tristate "Build all ASoC CODEC drivers" depends on COMPILE_TEST select SND_SOC_88PM860X if MFD_88PM860X select SND_SOC_88PM860X if MFD_88PM860X select SND_SOC_L3 select SND_SOC_L3 select SND_SOC_AB8500_CODEC if ABX500_CORE select SND_SOC_AB8500_CODEC if ABX500_CORE Loading
sound/soc/soc-core.c +12 −55 Original line number Original line Diff line number Diff line Loading @@ -50,8 +50,6 @@ #define NAME_SIZE 32 #define NAME_SIZE 32 static DECLARE_WAIT_QUEUE_HEAD(soc_pm_waitq); #ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS struct dentry *snd_soc_debugfs_root; struct dentry *snd_soc_debugfs_root; EXPORT_SYMBOL_GPL(snd_soc_debugfs_root); EXPORT_SYMBOL_GPL(snd_soc_debugfs_root); Loading Loading @@ -543,6 +541,15 @@ static int soc_ac97_dev_register(struct snd_soc_codec *codec) } } #endif #endif static void codec2codec_close_delayed_work(struct work_struct *work) { /* Currently nothing to do for c2c links * Since c2c links are internal nodes in the DAPM graph and * don't interface with the outside world or application layer * we don't have to do any special handling on close. */ } #ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP /* powers down audio subsystem for suspend */ /* powers down audio subsystem for suspend */ int snd_soc_suspend(struct device *dev) int snd_soc_suspend(struct device *dev) Loading Loading @@ -1441,6 +1448,9 @@ static int soc_probe_link_dais(struct snd_soc_card *card, int num, int order) return ret; return ret; } } } else { } else { INIT_DELAYED_WORK(&rtd->delayed_work, codec2codec_close_delayed_work); /* link the DAI widgets */ /* link the DAI widgets */ play_w = codec_dai->playback_widget; play_w = codec_dai->playback_widget; capture_w = cpu_dai->capture_widget; capture_w = cpu_dai->capture_widget; Loading Loading @@ -2709,59 +2719,6 @@ int snd_soc_put_value_enum_double(struct snd_kcontrol *kcontrol, } } EXPORT_SYMBOL_GPL(snd_soc_put_value_enum_double); EXPORT_SYMBOL_GPL(snd_soc_put_value_enum_double); /** * snd_soc_info_enum_ext - external enumerated single mixer info callback * @kcontrol: mixer control * @uinfo: control element information * * Callback to provide information about an external enumerated * single mixer. * * Returns 0 for success. */ int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; uinfo->count = 1; uinfo->value.enumerated.items = e->max; if (uinfo->value.enumerated.item > e->max - 1) uinfo->value.enumerated.item = e->max - 1; strcpy(uinfo->value.enumerated.name, e->texts[uinfo->value.enumerated.item]); return 0; } EXPORT_SYMBOL_GPL(snd_soc_info_enum_ext); /** * snd_soc_info_volsw_ext - external single mixer info callback * @kcontrol: mixer control * @uinfo: control element information * * Callback to provide information about a single external mixer control. * * Returns 0 for success. */ int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { int max = kcontrol->private_value; if (max == 1 && !strstr(kcontrol->id.name, " Volume")) uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; else uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; uinfo->count = 1; uinfo->value.integer.min = 0; uinfo->value.integer.max = max; return 0; } EXPORT_SYMBOL_GPL(snd_soc_info_volsw_ext); /** /** * snd_soc_info_volsw - single mixer info callback * snd_soc_info_volsw - single mixer info callback * @kcontrol: mixer control * @kcontrol: mixer control Loading
sound/soc/soc-dapm.c +0 −30 Original line number Original line Diff line number Diff line Loading @@ -174,36 +174,6 @@ static inline struct snd_soc_dapm_widget *dapm_cnew_widget( return kmemdup(_widget, sizeof(*_widget), GFP_KERNEL); return kmemdup(_widget, sizeof(*_widget), GFP_KERNEL); } } /* get snd_card from DAPM context */ static inline struct snd_card *dapm_get_snd_card( struct snd_soc_dapm_context *dapm) { if (dapm->codec) return dapm->codec->card->snd_card; else if (dapm->platform) return dapm->platform->card->snd_card; else BUG(); /* unreachable */ return NULL; } /* get soc_card from DAPM context */ static inline struct snd_soc_card *dapm_get_soc_card( struct snd_soc_dapm_context *dapm) { if (dapm->codec) return dapm->codec->card; else if (dapm->platform) return dapm->platform->card; else BUG(); /* unreachable */ return NULL; } static void dapm_reset(struct snd_soc_card *card) static void dapm_reset(struct snd_soc_card *card) { { struct snd_soc_dapm_widget *w; struct snd_soc_dapm_widget *w; Loading