Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81575670 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/topic/core' into asoc-next

parents e7ac4fb6 2820f615
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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*


+1 −5
Original line number Original line Diff line number Diff line
@@ -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 }


@@ -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,
@@ -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);
+1 −0
Original line number Original line Diff line number Diff line
@@ -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
+12 −55
Original line number Original line Diff line number Diff line
@@ -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);
@@ -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)
@@ -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;
@@ -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
+0 −30
Original line number Original line Diff line number Diff line
@@ -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