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

Commit 1c6770a3 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-v3.10-rc7' of...

Merge tag 'asoc-v3.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Updates for v3.10

A few small updates, one small core fix and several simple driver ones.
The wm8962 changes are a little large but are pretty important.
parents e32aa85a b12a5306
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_AD1980 if SND_SOC_AC97_BUS
	select SND_SOC_AD73311
	select SND_SOC_ADAU1373 if I2C
	select SND_SOC_ADAV80X
	select SND_SOC_ADAV80X if SND_SOC_I2C_AND_SPI
	select SND_SOC_ADS117X
	select SND_SOC_AK4104 if SPI_MASTER
	select SND_SOC_AK4535 if I2C
+24 −11
Original line number Diff line number Diff line
@@ -1600,7 +1600,6 @@ static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol,
			    struct snd_ctl_elem_value *ucontrol)
{
	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
	u16 *reg_cache = codec->reg_cache;
	int ret;

	/* Apply the update (if any) */
@@ -1609,16 +1608,19 @@ static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol,
		return 0;

	/* If the left PGA is enabled hit that VU bit... */
	if (snd_soc_read(codec, WM8962_PWR_MGMT_2) & WM8962_HPOUTL_PGA_ENA)
		return snd_soc_write(codec, WM8962_HPOUTL_VOLUME,
				     reg_cache[WM8962_HPOUTL_VOLUME]);
	ret = snd_soc_read(codec, WM8962_PWR_MGMT_2);
	if (ret & WM8962_HPOUTL_PGA_ENA) {
		snd_soc_write(codec, WM8962_HPOUTL_VOLUME,
			      snd_soc_read(codec, WM8962_HPOUTL_VOLUME));
		return 1;
	}

	/* ...otherwise the right.  The VU is stereo. */
	if (snd_soc_read(codec, WM8962_PWR_MGMT_2) & WM8962_HPOUTR_PGA_ENA)
		return snd_soc_write(codec, WM8962_HPOUTR_VOLUME,
				     reg_cache[WM8962_HPOUTR_VOLUME]);
	if (ret & WM8962_HPOUTR_PGA_ENA)
		snd_soc_write(codec, WM8962_HPOUTR_VOLUME,
			      snd_soc_read(codec, WM8962_HPOUTR_VOLUME));

	return 0;
	return 1;
}

/* The VU bits for the speakers are in a different register to the mute
@@ -3374,7 +3376,6 @@ static int wm8962_probe(struct snd_soc_codec *codec)
	int ret;
	struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
	struct wm8962_pdata *pdata = dev_get_platdata(codec->dev);
	u16 *reg_cache = codec->reg_cache;
	int i, trigger, irq_pol;
	bool dmicclk, dmicdat;

@@ -3432,8 +3433,9 @@ static int wm8962_probe(struct snd_soc_codec *codec)

		/* Put the speakers into mono mode? */
		if (pdata->spk_mono)
			reg_cache[WM8962_CLASS_D_CONTROL_2]
				|= WM8962_SPK_MONO;
			snd_soc_update_bits(codec, WM8962_CLASS_D_CONTROL_2,
				WM8962_SPK_MONO_MASK, WM8962_SPK_MONO);


		/* Micbias setup, detection enable and detection
		 * threasholds. */
@@ -3721,6 +3723,17 @@ static int wm8962_runtime_resume(struct device *dev)

	regcache_sync(wm8962->regmap);

	regmap_update_bits(wm8962->regmap, WM8962_ANTI_POP,
			   WM8962_STARTUP_BIAS_ENA | WM8962_VMID_BUF_ENA,
			   WM8962_STARTUP_BIAS_ENA | WM8962_VMID_BUF_ENA);

	/* Bias enable at 2*5k (fast start-up) */
	regmap_update_bits(wm8962->regmap, WM8962_PWR_MGMT_1,
			   WM8962_BIAS_ENA | WM8962_VMID_SEL_MASK,
			   WM8962_BIAS_ENA | 0x180);

	msleep(5);

	return 0;
}

+1 −1
Original line number Diff line number Diff line
@@ -279,7 +279,7 @@ static const struct soc_enum wm_adsp2_rate_enum[] = {
			      ARIZONA_DSP1_RATE_SHIFT, 0xf,
			      ARIZONA_RATE_ENUM_SIZE,
			      arizona_rate_text, arizona_rate_val),
	SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP3_CONTROL_1,
	SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP4_CONTROL_1,
			      ARIZONA_DSP1_RATE_SHIFT, 0xf,
			      ARIZONA_RATE_ENUM_SIZE,
			      arizona_rate_text, arizona_rate_val),
+2 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ static int dapm_up_seq[] = {
	[snd_soc_dapm_virt_mux] = 5,
	[snd_soc_dapm_value_mux] = 5,
	[snd_soc_dapm_dac] = 6,
	[snd_soc_dapm_switch] = 7,
	[snd_soc_dapm_mixer] = 7,
	[snd_soc_dapm_mixer_named_ctl] = 7,
	[snd_soc_dapm_pga] = 8,
@@ -83,6 +84,7 @@ static int dapm_down_seq[] = {
	[snd_soc_dapm_line] = 2,
	[snd_soc_dapm_out_drv] = 2,
	[snd_soc_dapm_pga] = 4,
	[snd_soc_dapm_switch] = 5,
	[snd_soc_dapm_mixer_named_ctl] = 5,
	[snd_soc_dapm_mixer] = 5,
	[snd_soc_dapm_dac] = 6,