06 Nov, 2011
1 commit
-
If the device is unplugged while running, it is possible for a PCM
device to be closed after the disconnect callback has returned. This
means that kill_stream_urb() and disable_iso_interface() would try to
access already-invalid or freed USB data structures.The function free_usb_related_resources() was intended to prevent this,
but forgot to clear the affected variables.Reported-and-tested-by: Olivier Courtay
Signed-off-by: Clemens Ladisch
Cc: 2.6.33+
Signed-off-by: Takashi Iwai
04 Nov, 2011
2 commits
-
Some BIOS report invalid pins as digital output pins. The driver checks
the connection but it doesn't do it fully correctly, and it leaves some
undefined value as the audio-out widget, which makes the driver spewing
warnings. This patch fixes the issue.Reference: https://bugzilla.novell.com/show_bug.cgi?id=727348
Cc:
Signed-off-by: Takashi Iwai
03 Nov, 2011
3 commits
-
Revise stac92xx_parse_auto_config to automatically scan for digital input
and output converters.Signed-off-by: Charles Chin
Signed-off-by: Takashi Iwai -
Just clean-up what GCC caught.
Signed-off-by: Takashi Iwai
-
When the driver finds multiple ADCs, it tries to create an alternative
capture PCM stream. However, these secondary ADCs might be useless or
in uncontrolled paths in some cases, e.g. when auto-mic or dynamic
ADC-switching is enabled. Also, when only a single capture source is
available, the multi-streams don't make sense, too.With this patch, the driver checks such condition and skips the alt
stream appropriately.Cc:
Signed-off-by: Takashi Iwai
02 Nov, 2011
6 commits
-
These codecs have SPDIF-in, which is new to the 92HD83xxx compatible
families, so a bit of logic is added to support them.Signed-off-by: Charles Chin
Cc:
Signed-off-by: Takashi Iwai -
The power-widget control in patch_stac92hd83xxx() never worked properly,
thus it's safer to turn it off as default for now.Signed-off-by: Charles Chin
Cc:
Signed-off-by: Takashi Iwai -
HD-audio spec defines a bit in pin default configuration for indicating
that the pin isn't used for jack-detection although the codec is capable
of it. Better to check this bit as well in jack_is_detectable() helper
function.Reported-by: Raymond Yau
Signed-off-by: Takashi Iwai -
Signed-off-by: Mark Brown
Cc: stable@kernel.org -
Since there is no current software control for these they would otherwise
be left enabled, consuming power.Signed-off-by: Mark Brown
Cc: stable@kernel.org -
The WM8962 has a separate software reset for the PLL registers. Ensure that
these are reset also on startup.Signed-off-by: Mark Brown
Cc: stable@kernel.org
01 Nov, 2011
3 commits
-
should be included instead of
Signed-off-by: Takashi Iwai
-
If a line in the firmware file is larger than the given buffer size (and
so the firmware file size), size is set to a value larger than the actual
buffer size. This results in an overflow in the buffer passed.Signed-off-by: Alexander Stein
Signed-off-by: Takashi Iwai -
We can't just pass back the return value of snd_soc_update_bits() as it
will be 1 if a bit changed rather than zero.Signed-off-by: Mark Brown
31 Oct, 2011
8 commits
-
Set `invert' bit for Capture Switch. Otherwise analogue is muted when
Capture Switch is ON.Signed-off-by: Hong Xu
Signed-off-by: Mark Brown
Cc: stable@kernel.org -
Current implementation in wm8711_set_dai_fmt always clear BIT[3:2]
(the Input Audio Data Bit Length Select) of WM8711_IFACE(07h) register.
Input Audio Data Bit Length Select bits are set by wm8711_hw_params,
we should leave BIT[3:2] untouched in wm8711_set_dai_fmt.Signed-off-by: Axel Lin
Signed-off-by: Mark Brown
Cc: stable@kernel.org -
The Input Audio Data Bit Length Select is controlled by BIT[3:2] of
WM8711_IFACE(07h) register.
Current code incorrectly masks BIT[1:0] which is for Audio Data Format Select.Signed-off-by: Axel Lin
Signed-off-by: Mark Brown
Cc: stable@kernel.org -
v3: detection code is x86 and KVM specific, hide it under ifdef
v2: add detection for virtual environments (KVM and Parallels)This patch is intended to improve performance in virtualized environments
like Parallels Desktop or KVM/VirtualBox/QEMU (virtual ICH/AC97 audio).I/O access is very time-expensive operation in virtual world: VCPU
can be rescheduled and in the worst case we get more than 10ms delay on
each I/O access.In the virtual environment loop exit rule
(old_civ == current_civ && old_picb == current_picb) is never satisfied,
because old_picb is never the same as current_picb due to delay inspired
by reading current_civ. As a result loop ended by timeout and we get 10x
more I/O operations.Experimental data from Prallels Desktop 7, RHEL6 guest (I/O ops per
second):Original code:
In Port Counter Callback
f014 41550 fffff00000179d00 ac97_bm_read_civ+0x000
f018 41387 fffff0000017a580 ac97_bm_read_picb+0x000With patch:
In Port Counter Callback
f014 4090 fffff00000179d00 ac97_bm_read_civ+0x000
f018 1964 fffff0000017a580 ac97_bm_read_picb+0x000Signed-off-by: Konstantin Ozerkov
Signed-off-by: Denis V. Lunev
Signed-off-by: Takashi Iwai -
From the Windows INF file, we know the firmware ranges for all RME
cards. For PCIe, a single revision ID per device (RayDAT, MADI, AIO,
AES) is used. Contrary, the older PCI versions use ranges, that is,
one revision ID per firmware version.Instead of listing all possible revisions individually, match the range.
This commit enables all MADI and AES PCI versions ever shipped.
Signed-off-by: Adrian Knoth
Signed-off-by: Takashi Iwai -
HDSP_VERSION_BIT has to be ORed with HDSP_S_LOAD. This fixes the detection
of at least some RME RPM boxes.Signed-off-by: Adrian Knoth
Signed-off-by: Takashi Iwai -
SNDRV_HDSPM_IOCTL_GET_STATUS is supposed to query the current card
status, so we have to return what we receive on the MADI wire (RX), not
what we transmit (TX) to others. The latter is a config item to be
queried via SNDRV_HDSPM_IOCTL_GET_CONFIG.Signed-off-by: Adrian Knoth
Signed-off-by: Takashi Iwai -
Smatch complains that if device is INT_MAX then device + 1 can
overflow. It just means we would have an annoying loop while we
check all the devices from -2147483648 to SNDRV_MINOR_HWDEPS.Signed-off-by: Dan Carpenter
Signed-off-by: Takashi Iwai
27 Oct, 2011
12 commits
-
It seems that Conexant CX20549 chip handle only a single input-amp even
though the audio-input widget has multiple sources. This has been never
clear, and I implemented in the current way based on the debug information
I got at the early time -- the device reacts individual input-amp values
for different sources. This is true for another Conexant codec, but it's
not applied to CX20549 actually.This patch changes the auto-parser code to handle a single input-amp
per audio-in widget for CX20549. After applying this, you'll see only a
single "Capture" volume control instead of separate "Mic" or "Line"
captures when the device is set up to use a single ADC.We haven't tested 20551 and 20561 codecs yet. If these show the similar
behavior like 20549, they need to set spec->single_adc_amp=1, too.Cc:
Signed-off-by: Takashi Iwai -
In the old Conexant chips (5045, 5047, 5051 and 5066), a single EAPD
may handle both headphone and speaker outputs while it's assigned only
to one of them. Turning off dynamically leads to the unexpected silent
output in such a configuration with the auto-mute function.Since it's difficult to know how the EAPD is handled in the actual h/w
implementation, better to keep EAPD on while running for such codecs.Cc:
Signed-off-by: Takashi Iwai -
ALC260 has multiple mixer widgets connected to the shared DAC, but the
driver currently doesn't check this possibility and ignores when the DAC
is shared with others. This resulted in the silent output from some
routes because of lack of the amp setup.This patch adds the workaround for it by checking the route even with the
shared DAC, but also checking the conflict with the existing control for
the very same widget NID.Reference: https://bugzilla.novell.com/show_bug.cgi?id=726812
Signed-off-by: Takashi Iwai
-
According to the datasheet:
Page0 / Register8: Audio Serial Data interface Control Register A
BIT 7: Bit Clock Directional Control
0: Bit clock is an input (slave mode)
1: Bit clock is an output (master mode)BIT 6: Word Clock Directional Control
0: Word clock is an input (slave mode)
1: Word clock is an output (master mode)Current code sets BIT_CLK_MASTER and WORD_CLK_MASTER bits for master mode,
but does not clear these bits for slave mode.Signed-off-by: Axel Lin
Signed-off-by: Mark Brown -
According to the datasheet:
Digital Audio Interface Format (07h) register:
BIT6: Master/slave mode
0: Slave
1: MasterCurrent code sets TLV320AIC23_MS_MASTER bit for master mode,
but does not clear it for slave mode.Signed-off-by: Axel Lin
Signed-off-by: Mark Brown -
According to the datasheet:
BCLK is controlled by BIT[4:2] of WM8940_CLOCK(06h) register.Signed-off-by: Chris Paulson-Ellis
Signed-off-by: Axel Lin
Signed-off-by: Mark Brown -
Reported-by: Chris Paulson-Ellis
Signed-off-by: Axel Lin
Signed-off-by: Mark Brown
Cc: stable@vger.kernel.org -
The association numbers of surround/CLFE speaker pins aren't correctly
mapped by the auto-parser. This patch fixes the CLFE speaker pin to the
right assoc value (from 3 to 1).Tested-by: Nika Topolchanskaya
Signed-off-by: Takashi Iwai
26 Oct, 2011
2 commits
-
When 5.1 or more headphone or speaker pins are provided, the parser still
takes as is without fixing the order of channel mapping, which leads in
the unexpected strange channel order by surround outputs.This patch fixes the issue by applying the same fix-up not only to
line_out_pins[] but also hp_pins[] and speaker_pins[].Signed-off-by: Takashi Iwai
-
Signed-off-by: Alexander Stein
Signed-off-by: Takashi Iwai
25 Oct, 2011
1 commit
-
Now back to kernel.org but without -2.6 suffix.
Signed-off-by: Takashi Iwai
24 Oct, 2011
1 commit
-
The revision 0x100300 was found for ALC662. It seems to work well
with patch_alc662.Cc: stable@kernel.org
BugLink: http://bugs.launchpad.net/bugs/877373
Tested-by: Shengyao Xue
Signed-off-by: David Henningsson
Acked-by: Kailang Yang
Signed-off-by: Takashi Iwai
22 Oct, 2011
1 commit
-
codec->hw_write is broken now, convert codec->hw_write to snd_soc_write.
The hardware has 2 banks of registers sharing a section in I2C register space.
The 1st bank is the primary one and is cached.
The 2nd bank is for loading coefficients only and they do not need cache.
These coefficients registers are therefore direct writes.
Thus we set cache_bypass flag to deal with this before calling snd_soc_write.Signed-off-by: Axel Lin
Acked-by: Liam Girdwood
Signed-off-by: Mark Brown