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

Commit ef890ae9 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

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

ASoC: Updates for 3.5

All driver specific and fairly small.  The pxa-ssp changes are larger
than I'd like but they're build failures and are pretty clear to
inspection.
parents 2e8b2b29 3419ae78
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ static const struct platform_device_id ssp_id_table[] = {
	{ "pxa25x-nssp",	PXA25x_NSSP },
	{ "pxa27x-ssp",		PXA27x_SSP },
	{ "pxa168-ssp",		PXA168_SSP },
	{ "pxa910-ssp",		PXA910_SSP },
	{ },
};

+2 −0
Original line number Diff line number Diff line
@@ -160,7 +160,9 @@ enum pxa_ssp_type {
	PXA25x_SSP,  /* pxa 210, 250, 255, 26x */
	PXA25x_NSSP, /* pxa 255, 26x (including ASSP) */
	PXA27x_SSP,
	PXA3xx_SSP,
	PXA168_SSP,
	PXA910_SSP,
	CE4100_SSP,
};

+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ struct pxa2xx_spi_chip {
	void (*cs_control)(u32 command);
};

#ifdef CONFIG_ARCH_PXA
#if defined(CONFIG_ARCH_PXA) || defined(CONFIG_ARCH_MMP)

#include <linux/clk.h>
#include <mach/dma.h>
+12 −14
Original line number Diff line number Diff line
@@ -1863,6 +1863,7 @@ static int wm8904_set_bias_level(struct snd_soc_codec *codec,
				return ret;
			}

			regcache_cache_only(wm8904->regmap, false);
			regcache_sync(wm8904->regmap);

			/* Enable bias */
@@ -1899,14 +1900,8 @@ static int wm8904_set_bias_level(struct snd_soc_codec *codec,
		snd_soc_update_bits(codec, WM8904_BIAS_CONTROL_0,
				    WM8904_BIAS_ENA, 0);

#ifdef CONFIG_REGULATOR
		/* Post 2.6.34 we will be able to get a callback when
		 * the regulators are disabled which we can use but
		 * for now just assume that the power will be cut if
		 * the regulator API is in use.
		 */
		codec->cache_sync = 1;
#endif
		regcache_cache_only(wm8904->regmap, true);
		regcache_mark_dirty(wm8904->regmap);

		regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies),
				       wm8904->supplies);
@@ -2084,10 +2079,8 @@ static int wm8904_probe(struct snd_soc_codec *codec)
{
	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
	struct wm8904_pdata *pdata = wm8904->pdata;
	u16 *reg_cache = codec->reg_cache;
	int ret, i;

	codec->cache_sync = 1;
	codec->control_data = wm8904->regmap;

	switch (wm8904->devtype) {
@@ -2150,6 +2143,7 @@ static int wm8904_probe(struct snd_soc_codec *codec)
		goto err_enable;
	}

	regcache_cache_only(wm8904->regmap, true);
	/* Change some default settings - latch VU and enable ZC */
	snd_soc_update_bits(codec, WM8904_ADC_DIGITAL_VOLUME_LEFT,
			    WM8904_ADC_VU, WM8904_ADC_VU);
@@ -2180,14 +2174,18 @@ static int wm8904_probe(struct snd_soc_codec *codec)
			if (!pdata->gpio_cfg[i])
				continue;

			reg_cache[WM8904_GPIO_CONTROL_1 + i]
				= pdata->gpio_cfg[i] & 0xffff;
			regmap_update_bits(wm8904->regmap,
					   WM8904_GPIO_CONTROL_1 + i,
					   0xffff,
					   pdata->gpio_cfg[i]);
		}

		/* Zero is the default value for these anyway */
		for (i = 0; i < WM8904_MIC_REGS; i++)
			reg_cache[WM8904_MIC_BIAS_CONTROL_0 + i]
				= pdata->mic_cfg[i];
			regmap_update_bits(wm8904->regmap,
					   WM8904_MIC_BIAS_CONTROL_0 + i,
					   0xffff,
					   pdata->mic_cfg[i]);
	}

	/* Set Class W by default - this will be managed by the Class
+3 −5
Original line number Diff line number Diff line
@@ -2837,8 +2837,6 @@ static int wm8996_probe(struct snd_soc_codec *codec)
		}
	}

	regcache_cache_only(codec->control_data, true);

	/* Apply platform data settings */
	snd_soc_update_bits(codec, WM8996_LINE_INPUT_CONTROL,
			    WM8996_INL_MODE_MASK | WM8996_INR_MODE_MASK,
@@ -3051,7 +3049,6 @@ static int wm8996_remove(struct snd_soc_codec *codec)
	for (i = 0; i < ARRAY_SIZE(wm8996->supplies); i++)
		regulator_unregister_notifier(wm8996->supplies[i].consumer,
					      &wm8996->disable_nb[i]);
	regulator_bulk_free(ARRAY_SIZE(wm8996->supplies), wm8996->supplies);

	return 0;
}
@@ -3206,14 +3203,15 @@ static __devinit int wm8996_i2c_probe(struct i2c_client *i2c,
	dev_info(&i2c->dev, "revision %c\n",
		 (reg & WM8996_CHIP_REV_MASK) + 'A');

	regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), wm8996->supplies);

	ret = wm8996_reset(wm8996);
	if (ret < 0) {
		dev_err(&i2c->dev, "Failed to issue reset\n");
		goto err_regmap;
	}

	regcache_cache_only(wm8996->regmap, true);
	regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), wm8996->supplies);

	wm8996_init_gpio(wm8996);

	ret = snd_soc_register_codec(&i2c->dev,
Loading