Commit Graph

335902 Commits

Author SHA1 Message Date
Eldad Zack
fde854bdaf ALSA: usb-audio: replace hardcoded value with const
In this context, 0x01 is USB_ENDPOINT_XFER_ISOC.

Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-29 08:42:33 +01:00
Takashi Iwai
361dab3ec2 ALSA: hda - Call snd_array_init() early and only once
This is a preliminary patch for introducing a protection to access
races of snd_array instances.  Call snd_array_init() appropriately
at the initialization time and don't call it twice.

Also the allocations of codec-spec structs are cleaned up by helper
functions in patch_sigmatel.c and patch_analog.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-28 09:03:39 +01:00
Takashi Iwai
04324ccc75 ALSA: usb-audio: add channel map support
Add the support for channel maps of the PCM streams on USB audio
devices.  The channel map information is already found in
ChannelConfig descriptor entries, which haven't been referred until
now.

Each chmap entry is added to audioformat list entry and copied to TLV
dynamically instead of creating a whole chmap array.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-26 16:24:02 +01:00
Takashi Iwai
7cc17a31ff ALSA: Extend chmap definitions for UAC2
USB audio class 2 has more channel map positions than we currently
have.  Let's add missing definitions.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-26 16:18:59 +01:00
Takashi Iwai
48779a0b8f ALSA: usb-audio: fix delay account during pause
When a playback stream is paused, the stream isn't actually stopped,
thus we still need to take care of the in-flight data amount for the
delay calculation.  Otherwise the value of subs->last_delay is no
longer reliable and can give a bogus value after resuming from pause.
This will result in "delay: estimated XX, actual YY" error messages.

Also, during pause after all in flight data are processed
(i.e. last_delay = 0), we don't have to calculate the actual delay
from the current frame.  Give a short path in such a case.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-23 16:07:11 +01:00
Takashi Iwai
3f94fad095 ALSA: usb-audio: ignore delay calculation for capture stream
It doesn't make sense to calculate the delay for capture streams in
the current implementation.  It's always zero, so we should skip the
computation in snd_usb_pcm_pointer() in the case of capture.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-23 15:37:32 +01:00
Takashi Iwai
ffe4d12b15 ALSA: hda - Add a fixup for internal mic on MacBook Pro 8,1
The internal mic on MBP81 gives only the right channel, and the left
channel is static.  Add a verb to fix the ADC2 channel mode to expand
mono right to stereo.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=50781
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-23 08:37:32 +01:00
Takashi Iwai
98415eacb3 ALSA: hda - Add missing verb applications in patch_cirrus.c
We forgot to apply the fixup verbs in cs_init().

But adding the fixup verbs will break mbp101 fixup that has been fixed
recently again, since the mbp101 fixup contains the wrong verbs to
override.  So these bogus verbs must be removed, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-23 08:37:32 +01:00
Takashi Iwai
829e87e04c ALSA: hda - Move static ADC setup for CS4206 to init verbs
It's constant, so better to be put in the static init array.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-23 08:37:31 +01:00
Takashi Iwai
2ba509a6ba Merge branch 'for-linus' into for-next 2012-11-22 21:22:39 +01:00
Daniel Mack
947d299686 ALSA: snd-usb: properly initialize the sync endpoint
Jeffrey Barish reported an obvious bug in the pcm part of the usb-audio
driver which causes the code to not initialize the sync endpoint from
configure_endpoint().

Reported-by: Jeffrey Barish <jeff_barish@earthlink.net>
Signed-off-by: Daniel Mack <zonque@gmail.com>
Cc: stable@kernel.org [3.5+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 21:22:33 +01:00
Takashi Iwai
2efa1d59fe ALSA: emu10k1: Add missing ifdef for emu->suspend reference
It's defined only for PM.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 21:21:20 +01:00
Takashi Iwai
8232932d32 ALSA: hdsp: Add missing inclusion of linux/vmalloc.h
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 21:19:18 +01:00
Takashi Iwai
4f86f120d9 ALSA: emu10k1: don't update firmware during suspend/resume
Add a flag to suppress the update in emu1010_firmware_thread() during
suspend/resume.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:48:11 +01:00
Takashi Iwai
b209c4dfcd ALSA: emu10k1: cache emu1010 firmware
Instead of calling request_firmware() at each time, keep the obtained
firmware internally and reuse it.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:48:09 +01:00
Takashi Iwai
90caaef6a1 ALSA: hdsp: improve firmware caching
As the recent firmware code tries to reread and cache the firmware by
itself, it's even better to keep the struct firmware data instead of
keeping a local copy.  Also, it makes little sense to disable the fw
loader for this driver, so added the explicit dependency, too.

Last, but not least, allocate the firmware data loaded via ioctl in
vmalloc'ed buffer instead, as the firmware size isn't that small.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:48:07 +01:00
Takashi Iwai
7009fa568b ALSA: ymfpci: Use kmalloc for register buffer for PM
Th buffer to save registers for PM is enough small for kmalloc(), not
necessary to use vmalloc().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:48:05 +01:00
Takashi Iwai
e39ae85644 ALSA: hda - Don't release firmware when CONFIG_PM is set
The new firmware code tries to re-read the formerly read firmware
files before suspend.  Thus it's wiser to keep the "patch" firmware in
the driver for avoiding this unnecessary re-reading.

Of course, this will consume a bit of memory for unused stuff, but
the patch fw is supposed to be fairly small, so it's more benefit in
the end.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:48:03 +01:00
Takashi Iwai
0d144de9af ALSA: vx: hard dependency on the standard fw loader
Yet again like previous two commits, drop the old hwdep user-space
firmware code from vx driver (snd-vxpocket and snd-vx222).

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:48:01 +01:00
Takashi Iwai
d19144987c ALSA: pcxhr: hard dependency on the standard fw loader
Like the previous commit for mixart, drop the home-baked fw loader
code.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:47:59 +01:00
Takashi Iwai
cba46f11cb ALSA: mixart: hard dependency on the standard fw loader
It makes no longer sense to keep the old hwdep user-space firmware
loading, which has been deprecated since ages ago.

Just add a hard dependency on CONFIG_FW_LOADER and drop the useless
code.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:47:57 +01:00
Takashi Iwai
3fdf1469ee ALSA: hda - Don't overwrite the pin default configs
Since we keep the pin default config values anyway internally, we
don't have to set the values in the codec.  This patch removes the
code writing the pincfg values.

As a gratis bonus, we can remove also the code restoring the original
pincfg values at PM resume or module free.  This will give us more
benefit, as it can reduce the unnecessary power-up of codecs.

This won't change the driver functionality.  The only difference would
be that the codec proc file will show the original pincfg values
instead of the actually referred values.  The actually referred values
can be determined from sysfs *_pin_configs files.
(Also hda-emu was updated to follow this change.)

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-22 17:45:45 +01:00
Takashi Iwai
e15f1b43e1 ALSA: hda - Remove shutup calls in free callbacks
The free callback is called at the state where no extra verbs are
executed, thus calling *_shutup() is useless, as it's checking the
shutdown flag.  Remove such superfluous calls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 15:06:13 +01:00
Takashi Iwai
efc2f8de1d ALSA: hda - Use standard helper functions in patch_hdmi.c
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 15:06:05 +01:00
Takashi Iwai
b0db6063db ALSA: usb-audio: process pending stop at PCM hw_free and close
PCM hw_free and close should wait until all the pending stop
operations have been finished.  Basically only PCM trigger callback
should use non-wait calls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 11:43:58 +01:00
Takashi Iwai
b2eb950de2 ALSA: usb-audio: stop both data and sync endpoints asynchronously
As we are stopping the endpoints asynchronously now, it's better to
trigger the stop of both data and sync endpoints and wait for pending
stopping operations, instead of the sequential trigger-and-wait
procedure.

So the wait argument in snd_usb_endpoint_stop() is dropped, and it's
expected that the caller synchronizes explicitly by calling
snd_usb_endpoint_sync_pending_stop().  (Actually there is only one
place calling this, so it was safe to change.)

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 11:43:56 +01:00
Takashi Iwai
ccc1696d52 ALSA: usb-audio: simplify endpoint deactivation code
For further code simplification, drop the conditional call for
usb_kill_urb() with can_wait argument in deactivate_urbs(), and use
only usb_unlink_urb() and wait_clear_urbs() pairs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 11:43:54 +01:00
Takashi Iwai
a9bb36261e ALSA: usb-audio: simplify snd_usb_endpoint_start/stop arguments
Reduce the redundant arguments for snd_usb_endpoint_start() and
snd_usb_endpoint_stop().  Also replaced from int to bool.

No functional changes by this commit.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 11:43:40 +01:00
Takashi Iwai
20d32022a8 ALSA: usb-audio: Deprecate async_unlink option
The async unlink behavior has been working over years.  The option was
provided only as a workaround for 2.4.x kernel.  Let's get rid of it.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 11:37:40 +01:00
Sachin Kamat
8ad10dc6d3 ALSA: usb-audio: Return meaningful error codes instead of -1 in format.c
Also, silences the following smatch warning:
sound/usb/format.c:170 parse_audio_format_rates_v1() warn:
returning -1 instead of -ENOMEM is sloppy

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 11:31:52 +01:00
Sachin Kamat
27b2a22c71 ALSA: usb/6fire: Fix potential NULL pointer dereference in comm.c
'rt' was dereferenced before the NULL check.
Moved the code after the check.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 10:43:52 +01:00
Sachin Kamat
6cf9515207 ALSA: pcm: Fix return code in pcm_native.c
Return the value obtained from snd_pcm_hw_constraint_minmax() instead
of -EINVAL. Silences the following smatch warning:
sound/core/pcm_native.c:2003 snd_pcm_hw_constraints_complete() info:
why not propagate 'err' from snd_pcm_hw_constraint_minmax() instead of -22?

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 10:43:35 +01:00
Sachin Kamat
51d503de02 ALSA: PCM: Remove redundant null check before kfree
kfree on a null pointer is a no-op.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 10:43:26 +01:00
David Henningsson
34c3d1926b ALSA: hda - Cirrus: Correctly clear line_out_pins when moving to speaker
If this array is not cleared, the jack related code later might
fail to create "Internal Speaker Phantom Jack" on Dell Inspiron 3420 and
Dell Vostro 2420.

BugLink: https://bugs.launchpad.net/bugs/1076840
Cc: stable@vger.kernel.org (3.6+)
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 10:09:02 +01:00
David Henningsson
af02dde8a6 ALSA: hda - Add support for Realtek ALC292
We found a new codec ID 292, and that just a simple quirk would enable
sound output/input on this ALC292 chip.

BugLink: https://bugs.launchpad.net/bugs/1081466
Cc: stable@vger.kernel.org
Tested-by: Acelan Kao <acelan.kao@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-21 09:06:04 +01:00
Takashi Iwai
789e05275e ASoC: Fixes for v3.7
The biggest batch of fixes here is the Kirkwood DMA fixes, plus a couple
 of other small fixes.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJQrEALAAoJELSic+t+oim9BHgP/37A90Xw+cLnTNnr4BRYPl0b
 eeyaCiYxr1VEg11zz+hyID4dBfca+ijUUmEsL/gSMRXb2L228l7P5FcXEKOVac9d
 xqcq59ZFu3QA5m2CcachT0t9QXegFTMMlqJ4G2lp6RDoXeU+RpSxC/M28wdLpOt+
 CNV/qgptupEXTQJxLxyQ8B3rNU98yAWNruuZ2NWFeQxbxJZVFEHhQtBgAzOxPu2e
 aKMPt7NzV3KSYySOffwCCW0Pj1DC85oSQR0SzI8lcJd8FtmKxJS3wjpZyNwXb3tN
 D2o5MEuyHckJE3JHnmtfbj2VtD97EhiewSiAwqh6pCb8/qO7Pte/+5QVBNv0mBnk
 TIKN68YTeheNVP8v0C9baBW99bqFofGpA6nOw4v0G3k7B11GxtQ9lp5BdDH3tz8m
 lI1zJckAwuSfvC/H9xqS89GKaW3JBpu1nRuICBYGsbWAjPbLKr4i8YMJyVLi3CPN
 o+ocfC5ZT/TdICE7VW09+4viiVO+gg7Tvp5VndIZX5/rpJU1vmKc5ag149t+fhRt
 rmlGSumO9KyTVxEI8CnGsZJXYOF8kJ5BxvKJI7FFUjLa1pE6FYLa6kaaSDs0HGG9
 PdkoplCg7hVSaWSio5tzRfj5ObZWzIoiBBzLTp5PgBTL38YhCvVaK4aw0bjqWSJN
 d5ar1sD4uznNqkjYkdbv
 =V7+d
 -----END PGP SIGNATURE-----

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

ASoC: Fixes for v3.7

The biggest batch of fixes here is the Kirkwood DMA fixes, plus a couple
of other small fixes.
2012-11-21 07:18:11 +01:00
Mark Brown
a6366c519c Merge branches 'fix/arizona', 'fix/cs4271', 'fix/kirkwood' and 'fix/samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into tmp 2012-11-21 11:41:15 +09:00
Russell King
3ccdf5bbdf ASoC: kirkwood-i2s: more pause-mode fixes
Don't even momentarily set the pause status when starting the channel;
if we do, we should check the busy bit to ensure that we comply with
the spec.  In any case, it isn't necessary; we will not active on a
START event so there is no need to pause the DMA.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-11-21 10:38:39 +09:00
Russell King
982b604bc5 ASoC: kirkwood-i2s: fix DMA underruns
Stress testing the driver with multiple start/stop events causes
kirkwood-dma to report underrun errors (which used to cause the kernel
to lock up solidly).  This is because kirkwood-i2s is not respecting
the restrictions imposed on clearing the 'pause' bit.  Follow what the
spec says; the busy bit must be read as being clear twice before the
pause bit can be released.  This solves the underruns.

However, it has been noticed that the busy bit occasionally does not
clear itself, hence the waiting is bounded to 5ms maximum to avoid a
new reason for the kernel to lockup.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-11-21 10:38:39 +09:00
Russell King
2424d45810 ASoC: kirkwood-i2s: fix DCO lock detection
This is part of a patch found in Rabeeh Khoury's git tree for the
cubox, which is further attributed to Sebastian Hesselbrath.

Rather than masking the KIRKWOOD_DCO_SPCR_STATUS register contents
against the registers virtual address, let's actually use the bit
definition for the locked status, as required in the documentation.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-11-21 10:38:38 +09:00
Russell King
25ec6bbb63 ASoC: kirkwood-dma: don't ignore other irq causes on error
Ignoring the real cause of the interrupt is not a good idea; this
behaviour has been observed to bring Dove platforms to silently
lockup.  Instead, on error fall through to the normal interrupt
processing.

This is especially important on Dove platforms as errors are
handled separately, and allows us to clear down the real cause of
the interrupt.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-11-21 10:38:38 +09:00
Russell King
ae6a5d3772 ASoC: kirkwood-dma: fix use of virt_to_phys()
This is part of a patch found in Rabeeh Khoury's git tree for the
cubox.

You can not use virt_to_phys() on the address returned from
dma_alloc_coherent(); it may not be part of the kernel direct-mapped
memory.  Fix this to use the DMA address instead.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-11-21 10:38:16 +09:00
Takashi Iwai
87af0b80c9 Merge branch 'for-linus' into for-next
Merge the recent HD-audio codec change for fixing recursive suspend
calls.

Conflicts:
	sound/pci/hda/hda_codec.c
2012-11-19 21:25:27 +01:00
Takashi Iwai
2ea3c6a2c7 ALSA: hda - Limit runtime PM support only to known Intel chips
We've got a report that the runtime PM may make the codec the
unresponsive on AMD platforms.  Since the feature has been tested only
on the recent Intel platforms, it's safer to limit the support to such
devices for now.

This patch adds a new DCAPS bit flag indicating the runtime PM
support, and mark it for Intel controllers.

Reported-and-tested-by: Julian Wollrath <jwollrath@web.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-19 21:23:57 +01:00
Dylan Reid
08a978db51 ALSA: hda - Fix Acer Aspire models with analog mics.
The Acer Aspire AO756 has an analog built-in mic on nid 0x1b and an
external mic on nid 0x19.  The BIOS doesn't set this up.

The mic detect on this Acer Aspire netbook and Acer C7 ChromeBook is
only valid when the headphone is plugged.  The detect circuit relies on
the tip detect switch being closed on the jack.  Tell hda_jack to ignore
the mic sense unless the headphones are plugged.

Signed-off-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-19 19:50:34 +01:00
Dylan Reid
0619ba8c17 ALSA: hda - Allow jack state to depend on another jack
Introduce the concept of a "gated" jack.  The gated jack's pin sense
is
only valid when the "gating" jack is plugged.  This requires checking
the gating jack when the gated jack changes and re-checking the gated
jack when the gating jack is plugged/unplugged.

This allows handling of devices where the mic jack detect floats when
the headphone jack is unplugged.

[Rewritten for fixing the possible snd_array reallocation, covering
 the missing callback calls and jack sync operations, as well as some
 code cleanups -- tiwai]

Signed-off-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-19 19:49:58 +01:00
Takashi Iwai
989c318715 ALSA: hda - Fix recursive suspend/resume call
When the bus reset is performed during the suspend/resume (including
the power-saving too), it calls snd_hda_suspend() and
snd_hda_resume() again, and deadlocks eventually.

For avoiding the recursive call, add a new flag indicating that the PM
is being performed, and don't go to the bus reset mode when it's on.

Reported-and-tested-by: Julian Wollrath <jwollrath@web.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-19 14:14:58 +01:00
Takashi Iwai
0ced14fbda Merge branch 'usb-midi-fix-3.7' of git://git.alsa-project.org/alsa-kprivate into for-linus
Merge a regression fix for USB MIDI on non-standard usb-audio drivers
by Clemens.
2012-11-19 09:55:06 +01:00
Clemens Ladisch
e99ddfde6a ALSA: ua101, usx2y: fix broken MIDI output
Commit 88a8516a21 (ALSA: usbaudio: implement USB autosuspend) added
autosuspend code to all files making up the snd-usb-audio driver.
However, midi.c is part of snd-usb-lib and is also used by other
drivers, not all of which support autosuspend.  Thus, calls to
usb_autopm_get_interface() could fail, and this unexpected error would
result in the MIDI output being completely unusable.

Make it work by ignoring the error that is expected with drivers that do
not support autosuspend.

Reported-by: Colin Fletcher <colin.m.fletcher@googlemail.com>
Reported-by: Devin Venable <venable.devin@gmail.com>
Reported-by: Dr Nick Bailey <nicholas.bailey@glasgow.ac.uk>
Reported-by: Jannis Achstetter <jannis_achstetter@web.de>
Reported-by: Rui Nuno Capela <rncbc@rncbc.org>
Cc: Oliver Neukum <oliver@neukum.org>
Cc: 2.6.39+ <stable@vger.kernel.org>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2012-11-18 17:15:24 +01:00
Dan Carpenter
379170a42c sound: oss/sb_audio: cap value in sb201_audio_set_speed()
We set "s" before we have capped "speed" so it could be the wrong value.
This could lead to a divide by zero bug.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-11-18 10:24:49 +01:00