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

Commit ddff42e5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "This ended up with a larger set of fixes than wished, unfortunately.

  As diffstat shows, the majority of changes are for various ASoC
  drivers (Realtek, Wolfson codec drivers, etc), in addition to a couple
  of HD-audio regression fixes.  All these are reasonably small and
  nothing to scare much"

* tag 'sound-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (29 commits)
  ALSA: hda - Disable power_save_node for Thinkpads
  ALSA: hda/tegra - async probe for avoiding module loading deadlock
  ASoC: rt5645: Prevent the pop sound in case of playback and the jack is plugging
  ASoC: rt5645: Increase the delay time to remove the pop sound
  ASoC: rt5645: Use the type SOC_DAPM_SINGLE_AUTODISABLE to prevent the weird sound in runtime of power up
  ASoC: pxa: pxa2xx-ac97: fix dma requestor lines
  MAINTAINERS: Update website and git repo for Wolfson Microelectronics
  ASoC: fsl_ssi: Fix checking of dai format for AC97 mode
  ASoC: wm0010: fix error path
  ASoC: wm0010: fix memory leak
  ASoC: wm8960: correct the max register value of mic boost pga
  ASoC: wm8962: remove 64k sample rate support
  ASoC: davinci-mcasp: Fix devm_kasprintf format string
  ASoC: fix broken pxa SoC support
  ASoC: davinci-mcasp: Set .symmetric_rates = 1 in snd_soc_dai_driver
  ASoC: au1x: psc-i2s: Fix unused variable 'ret' warning
  ASoC: SPEAr: Make SND_SPEAR_SOC select SND_SOC_GENERIC_DMAENGINE_PCM
  ASoC: mediatek: Increase periods_min in capture
  ASoC: davinci-mcasp: Revise the FIFO threshold calculation
  ASoC: wm8960: correct gain value for input PGA and add microphone PGA
  ...
parents 966966a6 7f57d803
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -11249,7 +11249,6 @@ VOLTAGE AND CURRENT REGULATOR FRAMEWORK
M:	Liam Girdwood <lgirdwood@gmail.com>
M:	Mark Brown <broonie@kernel.org>
L:	linux-kernel@vger.kernel.org
W:	http://opensource.wolfsonmicro.com/node/15
W:	http://www.slimlogic.co.uk/?p=48
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
S:	Supported
@@ -11378,17 +11377,15 @@ WM97XX TOUCHSCREEN DRIVERS
M:	Mark Brown <broonie@kernel.org>
M:	Liam Girdwood <lrg@slimlogic.co.uk>
L:	linux-input@vger.kernel.org
T:	git git://opensource.wolfsonmicro.com/linux-2.6-touch
W:	http://opensource.wolfsonmicro.com/node/7
W:	https://github.com/CirrusLogic/linux-drivers/wiki
S:	Supported
F:	drivers/input/touchscreen/*wm97*
F:	include/linux/wm97xx.h

WOLFSON MICROELECTRONICS DRIVERS
L:	patches@opensource.wolfsonmicro.com
T:	git git://opensource.wolfsonmicro.com/linux-2.6-asoc
T:	git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
W:	http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
T:	git https://github.com/CirrusLogic/linux-drivers.git
W:	https://github.com/CirrusLogic/linux-drivers/wiki
S:	Supported
F:	Documentation/hwmon/wm83??
F:	arch/arm/mach-s3c64xx/mach-crag6410*
+8 −7
Original line number Diff line number Diff line
@@ -9,6 +9,14 @@ menuconfig SND_ARM
	  Drivers that are implemented on ASoC can be found in
	  "ALSA for SoC audio support" section.

config SND_PXA2XX_LIB
	tristate
	select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97
	select SND_DMAENGINE_PCM

config SND_PXA2XX_LIB_AC97
	bool

if SND_ARM

config SND_ARMAACI
@@ -21,13 +29,6 @@ config SND_PXA2XX_PCM
	tristate
	select SND_PCM

config SND_PXA2XX_LIB
	tristate
	select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97

config SND_PXA2XX_LIB_AC97
	bool

config SND_PXA2XX_AC97
	tristate "AC97 driver for the Intel PXA2xx chip"
	depends on ARCH_PXA
+25 −5
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ struct hda_tegra {
	struct clk *hda2codec_2x_clk;
	struct clk *hda2hdmi_clk;
	void __iomem *regs;
	struct work_struct probe_work;
};

#ifdef CONFIG_PM
@@ -294,7 +295,9 @@ static int hda_tegra_dev_disconnect(struct snd_device *device)
static int hda_tegra_dev_free(struct snd_device *device)
{
	struct azx *chip = device->device_data;
	struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);

	cancel_work_sync(&hda->probe_work);
	if (azx_bus(chip)->chip_init) {
		azx_stop_all_streams(chip);
		azx_stop_chip(chip);
@@ -426,6 +429,9 @@ static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev)
/*
 * constructor
 */

static void hda_tegra_probe_work(struct work_struct *work);

static int hda_tegra_create(struct snd_card *card,
			    unsigned int driver_caps,
			    struct hda_tegra *hda)
@@ -452,6 +458,8 @@ static int hda_tegra_create(struct snd_card *card,
	chip->single_cmd = false;
	chip->snoop = true;

	INIT_WORK(&hda->probe_work, hda_tegra_probe_work);

	err = azx_bus_init(chip, NULL, &hda_tegra_io_ops);
	if (err < 0)
		return err;
@@ -499,6 +507,21 @@ static int hda_tegra_probe(struct platform_device *pdev)
	card->private_data = chip;

	dev_set_drvdata(&pdev->dev, card);
	schedule_work(&hda->probe_work);

	return 0;

out_free:
	snd_card_free(card);
	return err;
}

static void hda_tegra_probe_work(struct work_struct *work)
{
	struct hda_tegra *hda = container_of(work, struct hda_tegra, probe_work);
	struct azx *chip = &hda->chip;
	struct platform_device *pdev = to_platform_device(hda->dev);
	int err;

	err = hda_tegra_first_init(chip, pdev);
	if (err < 0)
@@ -520,11 +543,8 @@ static int hda_tegra_probe(struct platform_device *pdev)
	chip->running = 1;
	snd_hda_set_power_save(&chip->bus, power_save * 1000);

	return 0;

 out_free:
	snd_card_free(card);
	return err;
	return; /* no error return from async probe */
}

static int hda_tegra_remove(struct platform_device *pdev)
+19 −12
Original line number Diff line number Diff line
@@ -4188,6 +4188,24 @@ static void alc_fixup_disable_aamix(struct hda_codec *codec,
	}
}

/* fixup for Thinkpad docks: add dock pins, avoid HP parser fixup */
static void alc_fixup_tpt440_dock(struct hda_codec *codec,
				  const struct hda_fixup *fix, int action)
{
	static const struct hda_pintbl pincfgs[] = {
		{ 0x16, 0x21211010 }, /* dock headphone */
		{ 0x19, 0x21a11010 }, /* dock mic */
		{ }
	};
	struct alc_spec *spec = codec->spec;

	if (action == HDA_FIXUP_ACT_PRE_PROBE) {
		spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
		codec->power_save_node = 0; /* avoid click noises */
		snd_hda_apply_pincfgs(codec, pincfgs);
	}
}

static void alc_shutup_dell_xps13(struct hda_codec *codec)
{
	struct alc_spec *spec = codec->spec;
@@ -4562,7 +4580,6 @@ enum {
	ALC255_FIXUP_HEADSET_MODE_NO_HP_MIC,
	ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
	ALC292_FIXUP_TPT440_DOCK,
	ALC292_FIXUP_TPT440_DOCK2,
	ALC283_FIXUP_BXBT2807_MIC,
	ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED,
	ALC282_FIXUP_ASPIRE_V5_PINS,
@@ -5029,17 +5046,7 @@ static const struct hda_fixup alc269_fixups[] = {
	},
	[ALC292_FIXUP_TPT440_DOCK] = {
		.type = HDA_FIXUP_FUNC,
		.v.func = alc269_fixup_pincfg_no_hp_to_lineout,
		.chained = true,
		.chain_id = ALC292_FIXUP_TPT440_DOCK2
	},
	[ALC292_FIXUP_TPT440_DOCK2] = {
		.type = HDA_FIXUP_PINS,
		.v.pins = (const struct hda_pintbl[]) {
			{ 0x16, 0x21211010 }, /* dock headphone */
			{ 0x19, 0x21a11010 }, /* dock mic */
			{ }
		},
		.v.func = alc_fixup_tpt440_dock,
		.chained = true,
		.chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
	},
+0 −1
Original line number Diff line number Diff line
@@ -296,7 +296,6 @@ static int au1xpsc_i2s_drvprobe(struct platform_device *pdev)
{
	struct resource *iores, *dmares;
	unsigned long sel;
	int ret;
	struct au1xpsc_audio_data *wd;

	wd = devm_kzalloc(&pdev->dev, sizeof(struct au1xpsc_audio_data),
Loading