firefly-linux-kernel-4.4.55.git
12 years agoALSA: hda_intel: Add Oaktrail identifiers
Li Peng [Wed, 28 Dec 2011 15:17:26 +0000 (15:17 +0000)]
ALSA: hda_intel: Add Oaktrail identifiers

Oaktrail has 0x8086, 0x080a - AZX_DRIVER_SCH

Taken from the Meego patches for Oaktrail

Signed-off-by: Li Peng <peng.li@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Fix left-over merge issues in patch_hdmi.c
Takashi Iwai [Tue, 20 Dec 2011 14:53:07 +0000 (15:53 +0100)]
ALSA: hda - Fix left-over merge issues in patch_hdmi.c

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'test/hda-jack' into topic/hda
Takashi Iwai [Tue, 20 Dec 2011 14:42:57 +0000 (15:42 +0100)]
Merge branch 'test/hda-jack' into topic/hda

Conflicts:
sound/pci/hda/patch_hdmi.c
sound/pci/hda/patch_via.c

12 years agoMerge branch 'fix/hda' into topic/hda
Takashi Iwai [Tue, 20 Dec 2011 14:32:39 +0000 (15:32 +0100)]
Merge branch 'fix/hda' into topic/hda

12 years agoALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo
David Henningsson [Wed, 14 Dec 2011 07:52:30 +0000 (15:52 +0800)]
ALSA: HDA: Use LPIB Position fix for Intel SCH Poulsbo

Several people with this chipset have reported inconsistent/sloppy
values for position reporting when the DMA position buffer is used,
and that setting position_fix=1 have fixed their problems.

BugLink: https://bugs.launchpad.net/bugs/825709
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Check non-snoop in a single place
Takashi Iwai [Wed, 14 Dec 2011 08:27:04 +0000 (09:27 +0100)]
ALSA: hda - Check non-snoop in a single place

Merge the checks for VIA and ATI-HDMI into a single place for better
code-flow management.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: HDA: Add support for new AMD products
Andiry Xu [Wed, 14 Dec 2011 08:10:27 +0000 (16:10 +0800)]
ALSA: HDA: Add support for new AMD products

This patch adds HDMI audio support for new AMD products. As HW default
disable snoop, force non-snoop mode in HD audio driver.

Signed-off-by: Andiry Xu <andiry.xu@amd.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda: remove unused quirk for inverted mute led
Gustavo Maciel Dias Vieira [Sun, 4 Dec 2011 17:14:10 +0000 (15:14 -0200)]
ALSA: hda: remove unused quirk for inverted mute led

Commit b99a776d0b17ae0f3a54e86009887a00ac4889d0 removed all effects of
the STAC92HD83* model quirk "hp". However, it left the model selection
and documentation behind, confusing users with inverted mute
leds. Completely remove this quirk and its documentation.

Signed-off-by: Gustavo Maciel Dias Vieira <gustavo@sagui.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda: fix mute led polarity for HP laptops with buggy BIOS
Gustavo Maciel Dias Vieira [Tue, 13 Dec 2011 13:47:22 +0000 (11:47 -0200)]
ALSA: hda: fix mute led polarity for HP laptops with buggy BIOS

Some HP laptop models do not have a properly filled OEM string used
to set the gpio and polarity of the mute led. Make the mute led
configuration work for this case.

Signed-off-by: Gustavo Maciel Dias Vieira <gustavo@sagui.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - GPIO to control mute LED may be enabled on HP systems with no such HW
Vitaliy Kulikov [Mon, 12 Dec 2011 23:35:13 +0000 (17:35 -0600)]
ALSA: hda - GPIO to control mute LED may be enabled on HP systems with no such HW

This may lead to problems (like loss of sound) as GPIO pin may be used
for different function (SPDIF OUT, EAPD etc) on those systems. This patch
disables default mute LED GPIO configuration on all new codecs as all new
HP systems are expected to provide explicit mute LED configuration in SMBIOS.

Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: HDA: Realtek: Take vmaster dac from multiout dac list
David Henningsson [Fri, 9 Dec 2011 10:27:42 +0000 (18:27 +0800)]
ALSA: HDA: Realtek: Take vmaster dac from multiout dac list

With the auto-parser we can choose the dac nid for vmaster from
the DACs we already know, instead of hard-coding it. This is more
future-proof and was actually wrong on one machine.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device
David Henningsson [Mon, 12 Dec 2011 06:01:17 +0000 (14:01 +0800)]
ALSA: HDA: Set position fix to LPIB for an Atom/Poulsbo based device

For the Asus 1101HA, reporting position by reading the DMA position
buffer map seems unstable and often wrong. The reporter says that
position_fix=LPIB works much better (although not 100%, but this is
probably due to other issues).

The controller chip is an Intel Poulsbo 8086:811b (rev 07) controller,
and complete alsa-info is available here:
https://launchpadlibrarian.net/86691768/alsa-info.txt.1TNwyE5Ea7

Cc: stable@kernel.org (3.0+)
BugLink: http://bugs.launchpad.net/bugs/825709
Tested-by: Stefano Lodi
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'fix/hda' into topic/hda
Takashi Iwai [Wed, 7 Dec 2011 16:33:09 +0000 (17:33 +0100)]
Merge branch 'fix/hda' into topic/hda

Conflicts:
sound/pci/hda/patch_realtek.c

12 years agoALSA: hda/realtek - Fix lost speaker volume controls
Takashi Iwai [Wed, 7 Dec 2011 16:20:30 +0000 (17:20 +0100)]
ALSA: hda/realtek - Fix lost speaker volume controls

When there are the same or more number of HP pins are available, HP pins
are used as the primary outputs instead of the speaker pins.  But, in
some cases (especially with ALC663 & co), some DACs are available only
with a later pin and it's assigned to a speaker, and since the driver
parses the pins from the lower NID, such a DAC was skipped eventually
without assignments.  This resulted in a regression, the missing speaker
volume control in the new parser.

As a workaround for this, now the driver retries the pin->DAC mapping
again after restoring the speaker-pins as primary.  This is still an ad
hoc fix, but it works so far for most of Realtek codecs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda/realtek - Create "Bass Speaker" for two speaker pins
Takashi Iwai [Wed, 7 Dec 2011 16:14:20 +0000 (17:14 +0100)]
ALSA: hda/realtek - Create "Bass Speaker" for two speaker pins

On systems with two speaker pins, the secondary speaker pin is mostly
assigned to a bass speaker instead of a surround.  Thus it makes more
sense to rename the control properly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda/realtek - Don't create extra controls with channel suffix
Takashi Iwai [Wed, 7 Dec 2011 15:55:19 +0000 (16:55 +0100)]
ALSA: hda/realtek - Don't create extra controls with channel suffix

The multiple headphone or speaker pins are usually provided to
output the same stream unlike line-out jacks (which are supposed
to be multi-channel surrounds).  Thus giving a mixer name like
"Headphone Surround" is rather confusing.  Instead, when multiple
headphone volumes are available, use index with the same "Headphone"
name.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'fix/asoc' into for-linus
Takashi Iwai [Tue, 6 Dec 2011 12:22:28 +0000 (13:22 +0100)]
Merge branch 'fix/asoc' into for-linus

12 years agoALSA: hda - Fix remaining VREF mute-LED NID check in post-3.1 changes
Takashi Iwai [Tue, 6 Dec 2011 12:17:23 +0000 (13:17 +0100)]
ALSA: hda - Fix remaining VREF mute-LED NID check in post-3.1 changes

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'fix/hda-idt-fix' into fix/hda
Takashi Iwai [Tue, 6 Dec 2011 12:19:25 +0000 (13:19 +0100)]
Merge branch 'fix/hda-idt-fix' into fix/hda

12 years agoALSA: hda - Fix GPIO LED setup for IDT 92HD75 codecs
Takashi Iwai [Sun, 4 Dec 2011 12:44:06 +0000 (13:44 +0100)]
ALSA: hda - Fix GPIO LED setup for IDT 92HD75 codecs

Some HP laptops with IDT 92HD75 codecs may use a GPIO > 4 for the mute
LED, but currently the driver doesn't check this properly, and confuses
the mute LED behavior.  This ended up with the silent output  on some
HP laptops due to  having another GPIO used as external amp control.

This patch fixes the problem by checking the max GPIO count and
comparing with the given value from DMI entry instead of magic fixed
value 4 and 8, and adding a new field to indicate the VREF mute-LED
behavior.

Reported-and-tested-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: Provide a more complete DMA driver stub
Mark Brown [Mon, 5 Dec 2011 20:50:45 +0000 (20:50 +0000)]
ASoC: Provide a more complete DMA driver stub

Allow userspace applications to do more parameter setting by providing a
more complete stub DMA driver specifying a wildcard set of formats and
channels and essentially random values for the DMA parameters. This is
required for useful runtime operation of the dummy DMA driver until we
are able to figure out how to power up links and do hw_params() from DAPM.

Sending to stable as without this the dummy driver is not terribly
useful.

Reported-by: Kyung-Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>
Tested-by: Kyung-Kwee Ryu <Kyung-Kwee.Ryu@wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
12 years agoASoC: Remove references to corgi and spitz from machine driver document
Mark Brown [Mon, 5 Dec 2011 18:27:25 +0000 (18:27 +0000)]
ASoC: Remove references to corgi and spitz from machine driver document

They're not currently actively worked on, the hardware being rather
obsolete by now.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: Make SND_SOC_MX27VIS_AIC32X4 depend on I2C
Axel Lin [Sun, 4 Dec 2011 08:11:16 +0000 (16:11 +0800)]
ASoC: Make SND_SOC_MX27VIS_AIC32X4 depend on I2C

SND_SOC_MX27VIS_AIC32X4 selects SND_SOC_TLV320AIC32X4,
but SND_SOC_TLV320AIC32X4 needs CONFIG_I2C.
So we need to make SND_SOC_MX27VIS_AIC32X4 depend on I2C.
otherwise I got below build error if CONFIG_I2C is not selected.

  CC      sound/soc/codecs/tlv320aic32x4.o
sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_read':
sound/soc/codecs/tlv320aic32x4.c:323: error: implicit declaration of function 'i2c_smbus_read_byte_data'
sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_probe':
sound/soc/codecs/tlv320aic32x4.c:641: error: 'i2c_master_send' undeclared (first use in this function)
sound/soc/codecs/tlv320aic32x4.c:641: error: (Each undeclared identifier is reported only once
sound/soc/codecs/tlv320aic32x4.c:641: error: for each function it appears in.)
sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_modinit':
sound/soc/codecs/tlv320aic32x4.c:763: error: implicit declaration of function 'i2c_add_driver'
sound/soc/codecs/tlv320aic32x4.c: In function 'aic32x4_exit':
sound/soc/codecs/tlv320aic32x4.c:774: error: implicit declaration of function 'i2c_del_driver'
make[3]: *** [sound/soc/codecs/tlv320aic32x4.o] Error 1
make[2]: *** [sound/soc/codecs] Error 2
make[1]: *** [sound/soc] Error 2
make: *** [sound] Error 2

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: Fix dependency for SND_SOC_RAUMFELD and SND_PXA2XX_SOC_HX4700
Axel Lin [Sun, 4 Dec 2011 08:30:18 +0000 (16:30 +0800)]
ASoC: Fix dependency for SND_SOC_RAUMFELD and SND_PXA2XX_SOC_HX4700

SND_SOC_RAUMFELD selects SND_SOC_CS4270 which needs CONFIG_I2C,
and also selects SND_SOC_AK4104 which needs SPI_MASTER.
Thus make SND_SOC_RAUMFELD depend on I2C && SPI_MASTER.

Add depend on SPI_MASTER to fix below build error if CONFIG_SPI_MASTER
is not selected.

  LD      .tmp_vmlinux1
sound/built-in.o: In function `ak4104_spi_write':
last.c:(.text+0x290cc): undefined reference to `spi_sync'
sound/built-in.o: In function `ak4104_probe':
last.c:(.text+0x292a0): undefined reference to `spi_write_then_read'
sound/built-in.o: In function `ak4104_spi_probe':
last.c:(.text+0x29398): undefined reference to `spi_setup'
sound/built-in.o: In function `ak4104_init':
last.c:(.init.text+0x4ec): undefined reference to `spi_register_driver'
make: *** [.tmp_vmlinux1] Error 1

Add depend on I2C to fix below build error if CONFIG_I2C is not selected:
  CC      sound/soc/codecs/cs4270.o
sound/soc/codecs/cs4270.c: In function 'cs4270_i2c_probe':
sound/soc/codecs/cs4270.c:657: error: implicit declaration of function 'i2c_smbus_read_byte_data'
sound/soc/codecs/cs4270.c: In function 'cs4270_init':
sound/soc/codecs/cs4270.c:730: error: implicit declaration of function 'i2c_add_driver'
sound/soc/codecs/cs4270.c: In function 'cs4270_exit':
sound/soc/codecs/cs4270.c:736: error: implicit declaration of function 'i2c_del_driver'
make[3]: *** [sound/soc/codecs/cs4270.o] Error 1
make[2]: *** [sound/soc/codecs] Error 2
make[1]: *** [sound/soc] Error 2
make: *** [sound] Error 2

SND_PXA2XX_SOC_HX4700 selects SND_SOC_AK4641 which needs CONFIG_I2C.
Thus make SND_PXA2XX_SOC_HX4700 depend on I2C.

Add depend on I2C to fix below build error if CONFIG_I2C is not selected:
  CC      sound/soc/codecs/ak4641.o
sound/soc/codecs/ak4641.c: In function 'ak4641_modinit':
sound/soc/codecs/ak4641.c:646: error: implicit declaration of function 'i2c_add_driver'
sound/soc/codecs/ak4641.c: In function 'ak4641_exit':
sound/soc/codecs/ak4641.c:656: error: implicit declaration of function 'i2c_del_driver'
make[3]: *** [sound/soc/codecs/ak4641.o] Error 1
make[2]: *** [sound/soc/codecs] Error 2
make[1]: *** [sound/soc] Error 2
make: *** [sound] Error 2

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: uda1380: Return proper error in uda1380_modinit failure path
Axel Lin [Sun, 4 Dec 2011 11:35:20 +0000 (19:35 +0800)]
ASoC: uda1380: Return proper error in uda1380_modinit failure path

Return proper error for uda1380_modinit if i2c_add_driver() fails.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: kirkwood: Make SND_KIRKWOOD_SOC_OPENRD and SND_KIRKWOOD_SOC_T5325 depend on I2C
Axel Lin [Sat, 3 Dec 2011 10:38:25 +0000 (18:38 +0800)]
ASoC: kirkwood: Make SND_KIRKWOOD_SOC_OPENRD and SND_KIRKWOOD_SOC_T5325 depend on I2C

SND_KIRKWOOD_SOC_T5325 selects SND_SOC_ALC5623, but SND_SOC_ALC5623 needs
CONFIG_I2C. So we need to make SND_KIRKWOOD_SOC_T5325 depend on I2C,
otherwise I got below build error if CONFIG_I2C is not selected.

  CC      sound/soc/codecs/alc5623.o
sound/soc/codecs/alc5623.c: In function 'alc5623_i2c_probe':
sound/soc/codecs/alc5623.c:1002: error: implicit declaration of function 'i2c_smbus_read_word_data'
sound/soc/codecs/alc5623.c:1009: error: implicit declaration of function 'i2c_smbus_read_byte_data'
sound/soc/codecs/alc5623.c: In function 'alc5623_modinit':
sound/soc/codecs/alc5623.c:1096: error: implicit declaration of function 'i2c_add_driver'
sound/soc/codecs/alc5623.c: In function 'alc5623_modexit':
sound/soc/codecs/alc5623.c:1108: error: implicit declaration of function 'i2c_del_driver'
make[3]: *** [sound/soc/codecs/alc5623.o] Error 1
make[2]: *** [sound/soc/codecs] Error 2
make[1]: *** [sound/soc] Error 2
make: *** [sound] Error 2

Also fix the same issue for SND_KIRKWOOD_SOC_OPENRD.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: Mark WM8994 ADC muxes as virtual
Mark Brown [Sun, 14 Aug 2011 04:39:20 +0000 (13:39 +0900)]
ASoC: Mark WM8994 ADC muxes as virtual

Since they don't actually have power bits but do have events associated
with them it's important that we bootstrap their state properly which
making them virtual does.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoALSA: hda/realtek - Fix Oops in alc_mux_select()
Takashi Iwai [Fri, 2 Dec 2011 14:29:12 +0000 (15:29 +0100)]
ALSA: hda/realtek - Fix Oops in alc_mux_select()

When no imux is available (e.g. a single capture source),
alc_auto_init_input_src() may trigger an Oops due to the access to -1.
Add a proper zero-check to avoid it.

Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: sis7019 - give slow codecs more time to reset
David Dillow [Fri, 2 Dec 2011 04:26:53 +0000 (23:26 -0500)]
ALSA: sis7019 - give slow codecs more time to reset

There are some AC97 codec and board combinations that have been observed
to take a very long time to respond after the cold reset has completed.
In one case, more than 350 ms was required. To allow users to have sound
on those platforms, we'll wait up to 500ms for the codec to become
ready.

As a board may have multiple codecs, with some faster than others to
reset, we add a module parameter to inform the driver which codecs
should be present.

Reported-by: KotCzarny <tjosko@yahoo.com>
Signed-off-by: David Dillow <dave@thedillows.org>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Integrate input-jack stuff into kctl-jack
Takashi Iwai [Thu, 1 Dec 2011 16:41:36 +0000 (17:41 +0100)]
ALSA: hda - Integrate input-jack stuff into kctl-jack

Instead of managing input-jack stuff separately, call all stuff inside
the kctl-jack creation, deletion and report.  The caller no longer needs
to care about input-jack.

The better integration between input-jack and kctl-jack should be done
in the upper layer in near future, but for now, it's implemented locally
for more tests.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'fix/asoc' into for-linus
Takashi Iwai [Thu, 1 Dec 2011 15:32:18 +0000 (16:32 +0100)]
Merge branch 'fix/asoc' into for-linus

12 years agoMerge branch 'fix/hda' into topic/hda
Takashi Iwai [Thu, 1 Dec 2011 12:51:18 +0000 (13:51 +0100)]
Merge branch 'fix/hda' into topic/hda

12 years agoALSA: hda - Fix S3/S4 problem on machines with VREF-pin mute-LED
Charles Chin [Thu, 1 Dec 2011 10:21:00 +0000 (11:21 +0100)]
ALSA: hda - Fix S3/S4 problem on machines with VREF-pin mute-LED

The verb command in stac92xx_post_suspend caused the audio to stop
working after resuming from S3 mode on HP laptops with the VREF-pin
mute-LED control.  Removing relevant post_suspend registering.

Although removing D3 on AFG is no optimal solution, the impact should
be small in comparison with the broken S3/S4.

Signed-off-by: Charles Chin <Charles.Chin@idt.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda_intel - revert a quirk that affect VIA chipsets
Marc Vertes [Tue, 29 Nov 2011 11:21:17 +0000 (12:21 +0100)]
ALSA: hda_intel - revert a quirk that affect VIA chipsets

This quirk sould be reverted. It has the following probems:

1) The quirk was intended to "ASUS MV2-MX SE" motherboards only, but the
ID used matches a much broader range, potentially all boards containing a
VIA chipset model in the family of vendor VIA 0x1106 and audio device ID
0x3288, which encompasses VIA-VT82xx, VIA-VT1xx and VIA-VT20xx chipsets.

2) VIA chipsets rely on azx_via_get_position() to handle correctly dma
transfers during capture. Using POS_FIX_LPIB instead of POS_FIX_VIACOMBO
leads to partially corrupted input buffers during capture. The effects
of this bug are not immediately visible, it took strong DSP expertise,
some expensive signal generator and a spectrum analyzer to identify it
and verify correct behaviour using original default.

3) It's almost certain that the quirk did not fix the real problem,
if there was one. Refer to original submission:
http://mailman.alsa-project.org/pipermail/alsa-devel/2010-February/025109.html

Signed-of-by: Marc Vertes <mvertes@sigfox.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Avoid touching mute-VREF pin for IDT codecs
Takashi Iwai [Tue, 29 Nov 2011 12:01:30 +0000 (13:01 +0100)]
ALSA: hda - Avoid touching mute-VREF pin for IDT codecs

Some HP laptops use a pin VREF for controlling the mute LED, and such a
pin shouldn't be powered off.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agofirmware: Sigma: Fix endianess issues
Lars-Peter Clausen [Mon, 28 Nov 2011 08:44:16 +0000 (09:44 +0100)]
firmware: Sigma: Fix endianess issues

Currently the SigmaDSP firmware loader only works correctly on little-endian
systems. Fix this by using the proper endianess conversion functions.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
12 years agofirmware: Sigma: Skip header during CRC generation
Lars-Peter Clausen [Mon, 28 Nov 2011 08:44:15 +0000 (09:44 +0100)]
firmware: Sigma: Skip header during CRC generation

The firmware header is not part of the CRC, so skip it. Otherwise the firmware
will be rejected due to non-matching CRCs.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
12 years agofirmware: Sigma: Prevent out of bounds memory access
Lars-Peter Clausen [Mon, 28 Nov 2011 08:44:14 +0000 (09:44 +0100)]
firmware: Sigma: Prevent out of bounds memory access

The SigmaDSP firmware loader currently does not perform enough boundary size
checks when processing the firmware. As a result it is possible that a
malformed firmware can cause an out of bounds memory access.

This patch adds checks which ensure that both the action header and the payload
are completely inside the firmware data boundaries before processing them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
12 years agoALSA: usb-audio - Support for Roland GAIA SH-01 Synthesizer
John F Leach [Tue, 29 Nov 2011 00:41:27 +0000 (19:41 -0500)]
ALSA: usb-audio - Support for Roland GAIA SH-01 Synthesizer

Added table quirks entry for Roland GAIA SH-01 Synthesizer based upon
Roland SH-201 table entry as template.  USB MIDI and audio was tested
with Muse and Audacity.

Signed-off-by: John F Leach <jfleach@jfleach.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: Supply dcs_codes for newer WM1811 revisions
Mark Brown [Mon, 28 Nov 2011 18:48:46 +0000 (18:48 +0000)]
ASoC: Supply dcs_codes for newer WM1811 revisions

Based on initial data.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: Error out if we can't generate a LRCLK at all for WM8994
Mark Brown [Mon, 28 Nov 2011 21:16:56 +0000 (21:16 +0000)]
ASoC: Error out if we can't generate a LRCLK at all for WM8994

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoMerge branch 'fix/hda' into for-linus
Takashi Iwai [Sun, 27 Nov 2011 16:59:07 +0000 (17:59 +0100)]
Merge branch 'fix/hda' into for-linus

12 years agoALSA: hda - Fix jack-detection control of VT1708
Takashi Iwai [Thu, 24 Nov 2011 15:33:09 +0000 (16:33 +0100)]
ALSA: hda - Fix jack-detection control of VT1708

VT1708 has no support for unsolicited events per jack-plug, the driver
implements the workq for polling the jack-detection.  The mixer element
"Jack Detect" was supposed to control this behavior on/off, but this
doesn't work properly as is now.  The workq is always started and the
HP automute is always enabled.

This patch fixes the jack-detect control behavior by triggering / stopping
the work appropriately at the state change.  Also the work checks the
internal state to continue scheduling or not.

Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - cut and paste typo in cs420x_models[]
Dan Carpenter [Thu, 24 Nov 2011 11:48:24 +0000 (14:48 +0300)]
ALSA: hda - cut and paste typo in cs420x_models[]

The CS420X_IMAC27 was copied from the line before but CS420X_APPLE
was clearly intented.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: Correct name of Speyside Main Speaker widget
Mark Brown [Sun, 27 Nov 2011 15:54:49 +0000 (15:54 +0000)]
ASoC: Correct name of Speyside Main Speaker widget

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoALSA: hda - Increase the max number of coverters/pins in patch_hdmi.c
Takashi Iwai [Thu, 24 Nov 2011 13:44:19 +0000 (14:44 +0100)]
ALSA: hda - Increase the max number of coverters/pins in patch_hdmi.c

The new hardware tends to have more and more.  As a temporary fix, just
increase the number for now.

For a long-term solution, we should assign the cvts/pins dynamically.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Supports more audio streams
Takashi Iwai [Thu, 24 Nov 2011 13:31:46 +0000 (14:31 +0100)]
ALSA: hda - Supports more audio streams

So far, the driver supports up to 10 streams.  This is a restriction in
hda_intel.c and hda_codec.c: in the former, the fixed array size limits
the amount, and in the latter, the fixed device-number assignment table
(in get_empty_pcm_device()) limits the possibility.

This patch reduces the restriction by
- using linked list for managing PCM instances in hda_intel.c, and
- assigning non-fixed device numbers for the extra devices

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'fix/hda' into topic/hda
Takashi Iwai [Wed, 23 Nov 2011 16:08:42 +0000 (17:08 +0100)]
Merge branch 'fix/hda' into topic/hda

Conflicts:
sound/pci/hda/patch_realtek.c

12 years agoMerge branch 'fix/asoc' into for-linus
Takashi Iwai [Wed, 23 Nov 2011 16:07:16 +0000 (17:07 +0100)]
Merge branch 'fix/asoc' into for-linus

12 years agoASoC: skip resume of soc-audio devices without codecs
Eric Miao [Wed, 23 Nov 2011 14:37:00 +0000 (22:37 +0800)]
ASoC: skip resume of soc-audio devices without codecs

There are cases where there is no working codec on the soc-audio devices,
and snd_soc_suspend() will skip such device when suspending. Yet its
counterpart snd_soc_resume() does not check this, causing complaints
about spinlock lockup:

[  176.726087] BUG: spinlock lockup on CPU#0, kworker/0:2/1067, d8ab82a8
[  176.732539] [<80014a14>] (unwind_backtrace+0x0/0xec) from [<805b3fc8>] (dump_stack+0x20/0x24)
[  176.741082] [<805b3fc8>] (dump_stack+0x20/0x24) from [<80322208>] (do_raw_spin_lock+0x118/0x158)
[  176.749882] [<80322208>] (do_raw_spin_lock+0x118/0x158) from [<805b7874>] (_raw_spin_lock_irqsave+0x5c/0x68)
[  176.759723] [<805b7874>] (_raw_spin_lock_irqsave+0x5c/0x68) from [<8002a020>] (__wake_up+0x2c/0x5c)
[  176.768781] [<8002a020>] (__wake_up+0x2c/0x5c) from [<804a6de8>] (soc_resume_deferred+0x3c/0x2b0)
[  176.777666] [<804a6de8>] (soc_resume_deferred+0x3c/0x2b0) from [<8004ee20>] (process_one_work+0x2e8/0x50c)
[  176.787334] [<8004ee20>] (process_one_work+0x2e8/0x50c) from [<8004fd08>] (worker_thread+0x1c8/0x2e0)
[  176.796566] [<8004fd08>] (worker_thread+0x1c8/0x2e0) from [<80053ec8>] (kthread+0xa4/0xb0)
[  176.804843] [<80053ec8>] (kthread+0xa4/0xb0) from [<8000ea70>] (kernel_thread_exit+0x0/0x8)

Signed-off-by: Eric Miao <eric.miao@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: cs42l51: Fix off-by-one for reg_cache_size
Axel Lin [Wed, 23 Nov 2011 04:46:11 +0000 (12:46 +0800)]
ASoC: cs42l51: Fix off-by-one for reg_cache_size

Just checking the code in cs42l51_fill_cache():
The cache pointer points to codec->reg_cache + 1.
I think it is because CS42L51_FIRSTREG is 0x01,
so codec->reg_cache[0] is not used here.

Then we read CS42L51_NUMREGS bytes to cache.
So we need reg_cache_size to be CS42L51_NUMREGS + 1.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: drop support for PlayPaq with WM8510
Paul Bolle [Wed, 23 Nov 2011 09:39:10 +0000 (10:39 +0100)]
ASoC: drop support for PlayPaq with WM8510

SoC Audio support for PlayPaq with WM8510 got added in commit 9aaca9683b
("[ALSA] Revised AT32 ASoC Patch"). That support depends on
BOARD_PLAYPAQ. That Kconfig symbol didn't exist when that support got
added in v2.6.27. It still doesn't. It has never been possible to even
build this driver. Drop it.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoALSA: hda/realtek - Minor cleanup
Takashi Iwai [Wed, 23 Nov 2011 06:52:15 +0000 (07:52 +0100)]
ALSA: hda/realtek - Minor cleanup

Use an inline function for the common pattern for assigning a capsrc.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda/realtek - Fix missing inits of item indices for auto-mic
Takashi Iwai [Wed, 23 Nov 2011 06:38:59 +0000 (07:38 +0100)]
ALSA: hda/realtek - Fix missing inits of item indices for auto-mic

When the imux entries are rebuilt in alc_rebuild_imux_for_auto_mic(),
the initialization of index field is missing.  It may work without it
casually when the original imux was created by the auto-parser, but
it's definitely broken in the case of static configs where no imux was
parsed beforehand.  Because of this, the auto-mic switching doesn't
work properly on some model options.

This patch adds the missing initialization of index field.

Reported-by: Dmitry Nezhevenko <dion@inhex.net>
Cc: <stable@kernel.org> [v3.1]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Fix invalid pin and GPIO for Apple laptops with CS codecs
Takashi Iwai [Tue, 22 Nov 2011 19:00:31 +0000 (20:00 +0100)]
ALSA: hda - Fix invalid pin and GPIO for Apple laptops with CS codecs

The PCI SSID 8086:7270 is commonly used for multiple Apple machines,
thus we can't use it as identifier for a unique model.  Because of this
conflict, some machines show weird behavior.  For example, MacBook Air
shows Front and Surround speakers although only Surround works due to
the wrongly overridden pin-configuration for imac27.

This patch fixes two things:
- Stop the wrong pin-config override of imac27 by removing PCI SSID
  entry for avoiding the wrong mappings,
- Add the generic GPIO setup for Apple machines by checking the codec
  SSID vendor bits

Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Dirk Hohndel <hohndel@infradead.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Check subdevice mask in snd_hda_check_board_codec_sid_config()
Takashi Iwai [Tue, 22 Nov 2011 18:58:56 +0000 (19:58 +0100)]
ALSA: hda - Check subdevice mask in snd_hda_check_board_codec_sid_config()

In snd_hda_check_board_codec_sid_config(), not only comparing with the
exact value but allow the bit-mask comparison for vendor-only, etc.

Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Dirk Hohndel <hohndel@infradead.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: mpc8610: tell the CS4270 codec that it's the master
Timur Tabi [Tue, 22 Nov 2011 20:38:59 +0000 (14:38 -0600)]
ASoC: mpc8610: tell the CS4270 codec that it's the master

Commit ac601555 ("ASoC: Return early with -EINVAL if invalid dai format is
detected") requires the machine driver to tell the CS4270 codec driver
whether the CS4270 should be configured for master or slave operation.

Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: cs4720: use snd_soc_cache_sync()
Daniel Mack [Tue, 22 Nov 2011 16:17:23 +0000 (17:17 +0100)]
ASoC: cs4720: use snd_soc_cache_sync()

Replace the manual register restore mechanism in cs4270.c and call the
generic snd_soc_cache_sync() handler instead.

This factors code out in favour of core facilities and also fixes a
bus confusion that is most probably caused by intermixing i2c-regmap
functions and i2c_smbus_* accessors.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Reported-and-tested-by: Sven Neumann <s.neumann@raumfeld.com>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: SAMSUNG: Fix build error
Boojin Kim [Tue, 22 Nov 2011 02:03:22 +0000 (11:03 +0900)]
ASoC: SAMSUNG: Fix build error

This patch adds <linux/modules.h> to fix following build errors.

sound/soc/codecs/wm8994.c: In function 'wm8994_readable':
sound/soc/codecs/wm8994.c:58: warning: unused variable 'wm8994'
sound/soc/samsung/smdk_wm8994.c:176: error: expected declaration specifiers or '...' before string constant
sound/soc/samsung/smdk_wm8994.c:176: warning: data definition has no type or storage class
sound/soc/samsung/smdk_wm8994.c:176: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'
sound/soc/samsung/smdk_wm8994.c:176: warning: function declaration isn't a prototype
sound/soc/samsung/smdk_wm8994.c:177: error: expected declaration specifiers or '...' before string constant

Signed-off-by: Boojin Kim <boojin.kim@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: max9877: Update register if either val or val2 is changed
Axel Lin [Tue, 22 Nov 2011 06:47:44 +0000 (14:47 +0800)]
ASoC: max9877: Update register if either val or val2 is changed

In the case of ((max9877_regs[reg] >> shift) & mask) != val
but ((max9877_regs[reg2] >> shift) & mask) == val2,
current code does not update the registers.

Fix the logic to update registers if either val or val2 is changed.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: Fix wrong define for AD1836_ADC_WORD_OFFSET
Axel Lin [Tue, 22 Nov 2011 01:46:51 +0000 (09:46 +0800)]
ASoC: Fix wrong define for AD1836_ADC_WORD_OFFSET

According to the datasheet:
The BIT[5:4] of ADC Control Register 2 is to control the word width.
        00 = 25 Bits
        01 = 20 Bits
        10 = 16 Bits
        11 = Invalid

Thus, the AD1836_ADC_WORD_OFFSET should be defined as 4.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
12 years agoALSA: hda - fail ELD reading early
Wu Fengguang [Tue, 22 Nov 2011 08:46:23 +0000 (16:46 +0800)]
ALSA: hda - fail ELD reading early

With the ELD repoll mechanism, we can (and should) fail the ELD reading
immediately when find something obviously wrong and let the caller retry
after some delay.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: lx6464es - fix device communication via command bus
Tim Blechmann [Tue, 22 Nov 2011 10:15:45 +0000 (11:15 +0100)]
ALSA: lx6464es - fix device communication via command bus

commit 6175ddf06b6172046a329e3abfd9c901a43efd2e optimized the mem*io
functions that have been used to send commands to the device. these
optimizations somehow corrupted the communication with the lx6464es,
that resulted the device to be unusable with kernels after 2.6.33.

this patch emulates the memcpy_*_io functions via a loop to avoid these
problems.

Signed-off-by: Tim Blechmann <tim@klingt.org>
LKML-Reference: <4ECB5257.4040600@ladisch.de>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: lx6464es - command buffer API cleanup
Tim Blechmann [Tue, 22 Nov 2011 10:15:44 +0000 (11:15 +0100)]
ALSA: lx6464es - command buffer API cleanup

the command buffer is only accessed from one file, so we can declare the
specific functions as static in that file

Signed-off-by: Tim Blechmann <tim@klingt.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - repoll ELD content for multiple times
Wu Fengguang [Fri, 18 Nov 2011 22:59:32 +0000 (16:59 -0600)]
ALSA: hda - repoll ELD content for multiple times

Improve the one-shot ELD repoll to up to 6 retries.

Up to now the 300ms looks sufficient for the test boxes. However
I'm a bit worried about how well it can fit the wider user base.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hdspm - Fix PCI ID for PCIe RME MADI cards
Adrian Knoth [Mon, 21 Nov 2011 15:15:36 +0000 (16:15 +0100)]
ALSA: hdspm - Fix PCI ID for PCIe RME MADI cards

Commit c09403dcc5698abf214329fbbf3cf8dbb5558bea has introduced a
regression: PCIe versions of RME MADI were no longer detected, because
the MADIface ID (0xd5) was used instead of the correct 0xd2.

This commit fixes the problem.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: Ensure WM8731 register cache is synced when resuming from disabled
Mark Brown [Mon, 21 Nov 2011 11:55:41 +0000 (11:55 +0000)]
ASoC: Ensure WM8731 register cache is synced when resuming from disabled

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
12 years agoALSA: hda - Don't add channel suffix for headphone pin labels
Takashi Iwai [Mon, 21 Nov 2011 13:34:20 +0000 (14:34 +0100)]
ALSA: hda - Don't add channel suffix for headphone pin labels

The multiple headphone pins are usually handled as copied from the same
source, not as individual channels like front and surround.  Thus it'd
be more correct to avoid the channel suffix for "Headphone" pin labels
in snd_hda_get_pin_label() but give an index number instead.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Fix a typo
Takashi Iwai [Mon, 21 Nov 2011 13:17:16 +0000 (14:17 +0100)]
ALSA: hda - Fix a typo

Reported-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'DB_RANGE-size-fixes' of git://git.alsa-project.org/alsa-kprivate into...
Mark Brown [Mon, 21 Nov 2011 11:28:11 +0000 (11:28 +0000)]
Merge branch 'DB_RANGE-size-fixes' of git://git.alsa-project.org/alsa-kprivate into for-3.2

12 years agoALSA: cs5535 - Fix an endianness conversion
Dan Carpenter [Sun, 20 Nov 2011 20:57:49 +0000 (23:57 +0300)]
ALSA: cs5535 - Fix an endianness conversion

desc->size is supposed to be a le16 type.  On a big endian system the
current code will set ->size to zero.  We fixed a similar bug
on the next line but missed this one.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: cs4271: Fix wrong mask parameter in some snd_soc_update_bits calls
Axel Lin [Sat, 19 Nov 2011 06:41:07 +0000 (14:41 +0800)]
ASoC: cs4271: Fix wrong mask parameter in some snd_soc_update_bits calls

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Alexander Sverdlin <subaparts@yandex.ru>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
12 years agoASoC: wm_hubs: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:15:31 +0000 (15:15 +0100)]
ASoC: wm_hubs: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
reading more data than actually is in the array.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoASoC: wm9090: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:14:55 +0000 (15:14 +0100)]
ASoC: wm9090: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
reading more data than actually is in the arrays.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoASoC: wm8993: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:14:11 +0000 (15:14 +0100)]
ASoC: wm8993: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
reading more data than actually is in the array.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoASoC: wm8962: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:13:27 +0000 (15:13 +0100)]
ASoC: wm8962: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
reading more data than actually is in the arrays.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoASoC: sgtl5000: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:12:26 +0000 (15:12 +0100)]
ASoC: sgtl5000: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
reading more data than actually is in the array.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoASoC: rt5631: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:11:54 +0000 (15:11 +0100)]
ASoC: rt5631: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
the last entry from being omitted.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoASoC: adau1373: fix DB_RANGE size
Clemens Ladisch [Sun, 20 Nov 2011 14:10:27 +0000 (15:10 +0100)]
ASoC: adau1373: fix DB_RANGE size

Give the correct number of entries to TLV_DB_RANGE_HEAD to prevent
reading more data than actually is in the array.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
12 years agoALSA: hda - Add pin fix for Alienware M17x R3
Takashi Iwai [Sat, 19 Nov 2011 10:41:30 +0000 (11:41 +0100)]
ALSA: hda - Add pin fix for Alienware M17x R3

Reported-by: Albert Pool <albertpool@solcon.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoASoC: wm8753: Skip noop reconfiguration of DAI mode
Timo Juhani Lindfors [Thu, 17 Nov 2011 00:52:50 +0000 (02:52 +0200)]
ASoC: wm8753: Skip noop reconfiguration of DAI mode

This patch makes it possible to set DAI mode to its currently applied
value even if codec is active. This is necessary to allow

aplay -t raw -r 44100 -f S16_LE -c 2 < /dev/urandom &
alsactl store -f backup.state
alsactl restore -f backup.state

to work without returning errors. This patch is based on a patch sent
by Klaus Kurzmann <mok@fluxnetz.de>.

Signed-off-by: Timo Juhani Lindfors <timo.lindfors@iki.fi>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
12 years agoALSA: hda - Fix the connection selection of ADCs on Cirrus codecs
Takashi Iwai [Wed, 16 Nov 2011 17:05:11 +0000 (18:05 +0100)]
ALSA: hda - Fix the connection selection of ADCs on Cirrus codecs

spec->cur_adc isn't set until cs_capture_pcm_prepare() is called although
the driver tries to select the connection at init time and at auto-mic
switch.  This results in the access to the widget NID 0, which is
obviously invalid, also a wrong capture source.

This patch fixes the issue by issuing the connect-select verb conditionally
at appropriate places.

Reported-and-tested-by: Dylan Reid <dgreid@chromium.org>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Give more unique names by snd_hda_get_pin_label()
Takashi Iwai [Wed, 16 Nov 2011 14:33:26 +0000 (15:33 +0100)]
ALSA: hda - Give more unique names by snd_hda_get_pin_label()

The function now gives more unique names for the output pins by adding
some prefix and suffix for the location and the channels.  Otherwise, it
can pass the index number.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Add missing inclusion of linux/export.h
Takashi Iwai [Wed, 16 Nov 2011 13:28:33 +0000 (14:28 +0100)]
ALSA: hda - Add missing inclusion of linux/export.h

This is needed newly since 3.2...

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Add missing initialization of kctl jack status
Takashi Iwai [Mon, 14 Nov 2011 09:32:21 +0000 (10:32 +0100)]
ALSA: hda - Add missing initialization of kctl jack status

Otherwise the jack kctls will report invalid values until the jack
is re-plugged.

Reported-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda/jack - Fix the assignment of input jack-type
Takashi Iwai [Fri, 11 Nov 2011 16:54:19 +0000 (17:54 +0100)]
ALSA: hda/jack - Fix the assignment of input jack-type

The type field was lost during the transition.  Restored.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda/jack - Fix NULL-dereference at probing
Takashi Iwai [Fri, 11 Nov 2011 16:53:03 +0000 (17:53 +0100)]
ALSA: hda/jack - Fix NULL-dereference at probing

At probing time, the elements that aren't assigned to kctl or jack may
be called.  Need proper NULL-checks.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: HDA: Jack: Export required functions from hda_jack.c
David Henningsson [Fri, 11 Nov 2011 16:13:15 +0000 (17:13 +0100)]
ALSA: HDA: Jack: Export required functions from hda_jack.c

These two functions are being used by the codec-idt and codec-hdmi
modules, so they need to be exported properly.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Merge input-jack helpers to hda_jack.c
Takashi Iwai [Wed, 2 Nov 2011 07:54:51 +0000 (08:54 +0100)]
ALSA: hda - Merge input-jack helpers to hda_jack.c

We can use the very same table in hda_jack.c for managing the list for
input-jack elements, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: Introduce common helper functions for jack-detection control
Takashi Iwai [Wed, 2 Nov 2011 07:36:06 +0000 (08:36 +0100)]
ALSA: Introduce common helper functions for jack-detection control

Now move the helper function for creating and reporting the jack-detection
to the common place.  The driver that needs this functionality should
select CONFIG_SND_KCTL_JACK kconfig.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Manage unsol tags in hda_jack.c
Takashi Iwai [Thu, 27 Oct 2011 23:16:55 +0000 (01:16 +0200)]
ALSA: hda - Manage unsol tags in hda_jack.c

Manage the tags assigned for unsolicited events dynamically together
with the jack-detection routines.  Basically this is almost same as what
we've done in patch_sigmatel.c.  Assign the new tag number for each new
unsol event, associate with the given NID and the action type, etc.

With this change, now all pins looked over in snd_hda_jack_add_kctls()
are actually enabled for detection now even if the pins aren't used for
jack-retasking by the driver.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Create jack-detection kcontrols
Takashi Iwai [Thu, 27 Oct 2011 22:03:22 +0000 (00:03 +0200)]
ALSA: hda - Create jack-detection kcontrols

Create kcontrols for pin jack-detections, which work similarly like
jack-input layer.  Each control will notify when the jack is plugged or
unplugged, and also user can read the value at any time via the normal
control API.

The control elements are created with iface=CARD, so that they won't
appear in the mixer apps.

So far, only the pins that enabled the jack-detection are registered.
For covering all pins, the transition of the common unsol-tag handling
would be needed.  Stay tuned.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Cache the jack-detection value
Takashi Iwai [Thu, 27 Oct 2011 20:12:46 +0000 (22:12 +0200)]
ALSA: hda - Cache the jack-detection value

Introduce a table containing the pins and their jack-detection states
for avoiding the unnecessary verbs to check the pin status at each time.

When the unsol event is enabled via snd_hda_jack_detect_enable(), it
automatically adds the given NID to the table.  Then the driver supposes
that the codec driver will set the dirty flag appropariately when an
unsolicited event is invoked for that pin.

The behavior for reading other pins that aren't registered in the table
doesn't change.  Only the pins assigned to the table are cached, so far.

In near futre, this table can be extended to use the central place for
the unsolicited events of all pins, etc, and eventually include the
jack-detect kcontrols that replace the current input-jack stuff.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - Introduce snd_hda_get_pin_label()
Takashi Iwai [Thu, 27 Oct 2011 18:47:07 +0000 (20:47 +0200)]
ALSA: hda - Introduce snd_hda_get_pin_label()

Create a new helper function snd_hda_get_pin_label() for getting a label
string for both input and output pins.  hda_get_input_pin_label() is
obsoleted by this function, and the callers are replaced appropriately
now by this patch.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoMerge branch 'fix/hda' into topic/hda
Takashi Iwai [Wed, 16 Nov 2011 10:05:55 +0000 (11:05 +0100)]
Merge branch 'fix/hda' into topic/hda

12 years agoALSA: hda - Update URLs in document
Takashi Iwai [Wed, 16 Nov 2011 09:52:01 +0000 (10:52 +0100)]
ALSA: hda - Update URLs in document

Some stuff was moved from kernel.org to other places.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - move eld->spk_alloc fixup to hdmi_update_eld()
Wu Fengguang [Wed, 16 Nov 2011 08:29:48 +0000 (16:29 +0800)]
ALSA: hda - move eld->spk_alloc fixup to hdmi_update_eld()

It looks more natural and saves two lines of code.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - delayed ELD repoll
Wu Fengguang [Wed, 16 Nov 2011 08:29:47 +0000 (16:29 +0800)]
ALSA: hda - delayed ELD repoll

The Intel HDMI chips (ironlake at least) are found to have ~250ms delay
between the ELD_Valid=1 hotplug event is send and the ELD buffer becomes
actually readable. During the time the ELD buffer is mysteriously all 0.

Fix it by scheduling a delayed work to re-read ELD buffer after 300ms.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda - fix ELD memory leak
Wu Fengguang [Wed, 16 Nov 2011 08:29:46 +0000 (16:29 +0800)]
ALSA: hda - fix ELD memory leak

memset(eld) clears eld->proc_entry which will leak the struct
snd_info_entry when unloading module.

Fix it by
- memset only the fields before eld->eld_buffer
- set eld->eld_valid to true _after_ all eld fields have been filled

Cc: <stable@kernel.org>
Cc: Pierre-louis Bossart <pierre-louis.bossart@intel.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
12 years agoALSA: hda/realtek - Move ALC880 model=lg-lw to auto-parser
Takashi Iwai [Tue, 15 Nov 2011 13:46:25 +0000 (14:46 +0100)]
ALSA: hda/realtek - Move ALC880 model=lg-lw to auto-parser

ALC880 model=lg-lw works fine with the auto-parser as is.

Signed-off-by: Takashi Iwai <tiwai@suse.de>