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 Original line Diff line number Diff line
@@ -11249,7 +11249,6 @@ VOLTAGE AND CURRENT REGULATOR FRAMEWORK
M:	Liam Girdwood <lgirdwood@gmail.com>
M:	Liam Girdwood <lgirdwood@gmail.com>
M:	Mark Brown <broonie@kernel.org>
M:	Mark Brown <broonie@kernel.org>
L:	linux-kernel@vger.kernel.org
L:	linux-kernel@vger.kernel.org
W:	http://opensource.wolfsonmicro.com/node/15
W:	http://www.slimlogic.co.uk/?p=48
W:	http://www.slimlogic.co.uk/?p=48
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
S:	Supported
S:	Supported
@@ -11378,17 +11377,15 @@ WM97XX TOUCHSCREEN DRIVERS
M:	Mark Brown <broonie@kernel.org>
M:	Mark Brown <broonie@kernel.org>
M:	Liam Girdwood <lrg@slimlogic.co.uk>
M:	Liam Girdwood <lrg@slimlogic.co.uk>
L:	linux-input@vger.kernel.org
L:	linux-input@vger.kernel.org
T:	git git://opensource.wolfsonmicro.com/linux-2.6-touch
W:	https://github.com/CirrusLogic/linux-drivers/wiki
W:	http://opensource.wolfsonmicro.com/node/7
S:	Supported
S:	Supported
F:	drivers/input/touchscreen/*wm97*
F:	drivers/input/touchscreen/*wm97*
F:	include/linux/wm97xx.h
F:	include/linux/wm97xx.h


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


config SND_ARMAACI
config SND_ARMAACI
@@ -21,13 +29,6 @@ config SND_PXA2XX_PCM
	tristate
	tristate
	select SND_PCM
	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
config SND_PXA2XX_AC97
	tristate "AC97 driver for the Intel PXA2xx chip"
	tristate "AC97 driver for the Intel PXA2xx chip"
	depends on ARCH_PXA
	depends on ARCH_PXA
+25 −5
Original line number Original line Diff line number Diff line
@@ -73,6 +73,7 @@ struct hda_tegra {
	struct clk *hda2codec_2x_clk;
	struct clk *hda2codec_2x_clk;
	struct clk *hda2hdmi_clk;
	struct clk *hda2hdmi_clk;
	void __iomem *regs;
	void __iomem *regs;
	struct work_struct probe_work;
};
};


#ifdef CONFIG_PM
#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)
static int hda_tegra_dev_free(struct snd_device *device)
{
{
	struct azx *chip = device->device_data;
	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) {
	if (azx_bus(chip)->chip_init) {
		azx_stop_all_streams(chip);
		azx_stop_all_streams(chip);
		azx_stop_chip(chip);
		azx_stop_chip(chip);
@@ -426,6 +429,9 @@ static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev)
/*
/*
 * constructor
 * constructor
 */
 */

static void hda_tegra_probe_work(struct work_struct *work);

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


	INIT_WORK(&hda->probe_work, hda_tegra_probe_work);

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


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


	return 0;

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


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


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