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

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

Merge branch 'topic/codec-dapm' of...

Merge branch 'topic/codec-dapm' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-rt5645

Conflicts:
	sound/soc/codecs/rt5645.c
parents 83c09290 4890140f
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -792,7 +792,6 @@ struct snd_soc_component {

	/* Don't use these, use snd_soc_component_get_dapm() */
	struct snd_soc_dapm_context dapm;
	struct snd_soc_dapm_context *dapm_ptr;

	const struct snd_kcontrol_new *controls;
	unsigned int num_controls;
@@ -832,9 +831,6 @@ struct snd_soc_codec {
	/* component */
	struct snd_soc_component component;

	/* Don't access this directly, use snd_soc_codec_get_dapm() */
	struct snd_soc_dapm_context dapm;

#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs_reg;
#endif
@@ -1277,7 +1273,7 @@ static inline struct snd_soc_component *snd_soc_dapm_to_component(
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);
	return snd_soc_component_to_codec(snd_soc_dapm_to_component(dapm));
}

/**
@@ -1302,7 +1298,7 @@ static inline struct snd_soc_platform *snd_soc_dapm_to_platform(
static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
	struct snd_soc_component *component)
{
	return component->dapm_ptr;
	return &component->dapm;
}

/**
@@ -1314,7 +1310,7 @@ static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm(
	struct snd_soc_codec *codec)
{
	return &codec->dapm;
	return snd_soc_component_get_dapm(&codec->component);
}

/**
+33 −42
Original line number Diff line number Diff line
@@ -2644,7 +2644,7 @@ static int rt5645_set_bias_level(struct snd_soc_codec *codec,

	switch (level) {
	case SND_SOC_BIAS_PREPARE:
		if (SND_SOC_BIAS_STANDBY == codec->dapm.bias_level) {
		if (SND_SOC_BIAS_STANDBY == snd_soc_codec_get_bias_level(codec)) {
			snd_soc_update_bits(codec, RT5645_PWR_ANLG1,
				RT5645_PWR_VREF1 | RT5645_PWR_MB |
				RT5645_PWR_BG | RT5645_PWR_VREF2,
@@ -2762,20 +2762,17 @@ static int rt5650_calibration(struct rt5645_priv *rt5645)
static void rt5645_enable_push_button_irq(struct snd_soc_codec *codec,
	bool enable)
{
	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
	struct rt5645_priv *rt5645 = snd_soc_codec_get_drvdata(codec);

	if (enable) {
		snd_soc_dapm_mutex_lock(&codec->dapm);
		snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
							"ADC L power");
		snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
							"ADC R power");
		snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
							"LDO2");
		snd_soc_dapm_force_enable_pin_unlocked(&codec->dapm,
							"Mic Det Power");
		snd_soc_dapm_sync_unlocked(&codec->dapm);
		snd_soc_dapm_mutex_unlock(&codec->dapm);
		snd_soc_dapm_mutex_lock(dapm);
		snd_soc_dapm_force_enable_pin_unlocked(dapm, "ADC L power");
		snd_soc_dapm_force_enable_pin_unlocked(dapm, "ADC R power");
		snd_soc_dapm_force_enable_pin_unlocked(dapm, "LDO2");
		snd_soc_dapm_force_enable_pin_unlocked(dapm, "Mic Det Power");
		snd_soc_dapm_sync_unlocked(dapm);
		snd_soc_dapm_mutex_unlock(dapm);

		snd_soc_update_bits(codec,
					RT5645_INT_IRQ_ST, 0x8, 0x8);
@@ -2788,23 +2785,20 @@ static void rt5645_enable_push_button_irq(struct snd_soc_codec *codec,
		snd_soc_update_bits(codec, RT5650_4BTN_IL_CMD2, 0x8000, 0x0);
		snd_soc_update_bits(codec, RT5645_INT_IRQ_ST, 0x8, 0x0);

		snd_soc_dapm_mutex_lock(&codec->dapm);
		snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
							"ADC L power");
		snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
							"ADC R power");
		snd_soc_dapm_mutex_lock(dapm);
		snd_soc_dapm_disable_pin_unlocked(dapm, "ADC L power");
		snd_soc_dapm_disable_pin_unlocked(dapm, "ADC R power");
		if (rt5645->pdata.jd_mode == 0)
			snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
								"LDO2");
		snd_soc_dapm_disable_pin_unlocked(&codec->dapm,
							"Mic Det Power");
		snd_soc_dapm_sync_unlocked(&codec->dapm);
		snd_soc_dapm_mutex_unlock(&codec->dapm);
			snd_soc_dapm_disable_pin_unlocked(dapm, "LDO2");
		snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Det Power");
		snd_soc_dapm_sync_unlocked(dapm);
		snd_soc_dapm_mutex_unlock(dapm);
	}
}

static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
{
	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
	struct rt5645_priv *rt5645 = snd_soc_codec_get_drvdata(codec);
	unsigned int val;

@@ -2813,10 +2807,9 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)

		if (codec->component.card->instantiated) {
			/* for jack type detect */
			snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO2");
			snd_soc_dapm_force_enable_pin(&codec->dapm,
				"Mic Det Power");
			snd_soc_dapm_sync(&codec->dapm);
			snd_soc_dapm_force_enable_pin(dapm, "LDO2");
			snd_soc_dapm_force_enable_pin(dapm, "Mic Det Power");
			snd_soc_dapm_sync(dapm);
		} else {
			/* Power up necessary bits for JD if dapm is
			   not ready yet */
@@ -2849,9 +2842,8 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
			}
		} else {
			if (codec->component.card->instantiated) {
				snd_soc_dapm_disable_pin(&codec->dapm,
					"Mic Det Power");
				snd_soc_dapm_sync(&codec->dapm);
				snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
				snd_soc_dapm_sync(dapm);
			} else
				regmap_update_bits(rt5645->regmap,
					RT5645_PWR_VOL, RT5645_PWR_MIC_DET, 0);
@@ -2865,11 +2857,9 @@ static int rt5645_jack_detect(struct snd_soc_codec *codec, int jack_insert)
		else {
			if (codec->component.card->instantiated) {
				if (rt5645->pdata.jd_mode == 0)
					snd_soc_dapm_disable_pin(&codec->dapm,
						"LDO2");
				snd_soc_dapm_disable_pin(&codec->dapm,
					"Mic Det Power");
				snd_soc_dapm_sync(&codec->dapm);
					snd_soc_dapm_disable_pin(dapm, "LDO2");
				snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
				snd_soc_dapm_sync(dapm);
			} else {
				if (rt5645->pdata.jd_mode == 0)
					regmap_update_bits(rt5645->regmap,
@@ -3045,24 +3035,25 @@ static int rt5645_irq_detection(struct rt5645_priv *rt5645)

static int rt5645_probe(struct snd_soc_codec *codec)
{
	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
	struct rt5645_priv *rt5645 = snd_soc_codec_get_drvdata(codec);

	rt5645->codec = codec;

	switch (rt5645->codec_type) {
	case CODEC_TYPE_RT5645:
		snd_soc_dapm_new_controls(&codec->dapm,
		snd_soc_dapm_new_controls(dapm,
			rt5645_specific_dapm_widgets,
			ARRAY_SIZE(rt5645_specific_dapm_widgets));
		snd_soc_dapm_add_routes(&codec->dapm,
		snd_soc_dapm_add_routes(dapm,
			rt5645_specific_dapm_routes,
			ARRAY_SIZE(rt5645_specific_dapm_routes));
		break;
	case CODEC_TYPE_RT5650:
		snd_soc_dapm_new_controls(&codec->dapm,
		snd_soc_dapm_new_controls(dapm,
			rt5650_specific_dapm_widgets,
			ARRAY_SIZE(rt5650_specific_dapm_widgets));
		snd_soc_dapm_add_routes(&codec->dapm,
		snd_soc_dapm_add_routes(dapm,
			rt5650_specific_dapm_routes,
			ARRAY_SIZE(rt5650_specific_dapm_routes));
		break;
@@ -3072,9 +3063,9 @@ static int rt5645_probe(struct snd_soc_codec *codec)

	/* for JD function */
	if (rt5645->pdata.jd_mode) {
		snd_soc_dapm_force_enable_pin(&codec->dapm, "JD Power");
		snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO2");
		snd_soc_dapm_sync(&codec->dapm);
		snd_soc_dapm_force_enable_pin(dapm, "JD Power");
		snd_soc_dapm_force_enable_pin(dapm, "LDO2");
		snd_soc_dapm_sync(dapm);
	}

	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -179,7 +179,7 @@ static int tas571x_set_bias_level(struct snd_soc_codec *codec,
	case SND_SOC_BIAS_PREPARE:
		break;
	case SND_SOC_BIAS_STANDBY:
		if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
		if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
			if (!IS_ERR(priv->mclk)) {
				ret = clk_prepare_enable(priv->mclk);
				if (ret) {
+7 −11
Original line number Diff line number Diff line
@@ -104,21 +104,17 @@ static int cht_aif1_hw_params(struct snd_pcm_substream *substream,
static int cht_ti_jack_event(struct notifier_block *nb,
		unsigned long event, void *data)
{

	struct snd_soc_jack *jack = (struct snd_soc_jack *)data;
	struct snd_soc_dai *codec_dai = jack->card->rtd->codec_dai;
	struct snd_soc_codec *codec = codec_dai->codec;
	struct snd_soc_dapm_context *dapm = &jack->card->dapm;

	if (event & SND_JACK_MICROPHONE) {

		snd_soc_dapm_force_enable_pin(&codec->dapm, "SHDN");
		snd_soc_dapm_force_enable_pin(&codec->dapm, "MICBIAS");
		snd_soc_dapm_sync(&codec->dapm);
		snd_soc_dapm_force_enable_pin(dapm, "SHDN");
		snd_soc_dapm_force_enable_pin(dapm, "MICBIAS");
		snd_soc_dapm_sync(dapm);
	} else {

		snd_soc_dapm_disable_pin(&codec->dapm, "MICBIAS");
		snd_soc_dapm_disable_pin(&codec->dapm, "SHDN");
		snd_soc_dapm_sync(&codec->dapm);
		snd_soc_dapm_disable_pin(dapm, "MICBIAS");
		snd_soc_dapm_disable_pin(dapm, "SHDN");
		snd_soc_dapm_sync(dapm);
	}

	return 0;
+2 −4
Original line number Diff line number Diff line
@@ -154,8 +154,7 @@ static const struct snd_soc_dapm_route omap3pandora_map[] = {

static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
{
	struct snd_soc_codec *codec = rtd->codec;
	struct snd_soc_dapm_context *dapm = &codec->dapm;
	struct snd_soc_dapm_context *dapm = &rtd->card->dapm;

	/* All TWL4030 output pins are floating */
	snd_soc_dapm_nc_pin(dapm, "EARPIECE");
@@ -174,8 +173,7 @@ static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)

static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd)
{
	struct snd_soc_codec *codec = rtd->codec;
	struct snd_soc_dapm_context *dapm = &codec->dapm;
	struct snd_soc_dapm_context *dapm = &rtd->card->dapm;

	/* Not comnnected */
	snd_soc_dapm_nc_pin(dapm, "HSMIC");
Loading