Commit Graph

313 Commits

Author SHA1 Message Date
Takashi Iwai
85e013a18a Merge branch 'topic/usb-audio' into for-linus
* topic/usb-audio:
  ALSA: usb - Add boot quirk for C-Media 6206 USB Audio
  ALSA: usb-audio - errata corrige for quirk
  ALSA: usb-audio - Add quirk for Roland/Edirol M-16DX
  ALSA: usb-audio - quirk for USB Aureon cards
2009-06-10 07:26:49 +02:00
Takashi Iwai
eabaf0634a Merge branch 'topic/pcm-delay' into for-linus
* topic/pcm-delay:
  ALSA: usbaudio - Add delay account
  ALSA: Add extra delay count in PCM
2009-06-10 07:26:40 +02:00
Dan Allongo
92a43793a9 ALSA: usb - Add boot quirk for C-Media 6206 USB Audio
Added boot quirk for C-Media CM6206 device in snd_usb_audio_probe.
The function snd_usb_cm6206_boot_quirk sets up six internal 16-bit
registers in order to initialize the device. Values for the registers
came from sniffing USB traffic under Windows since only four of the six
are documented in the datasheet for CM106 and some reserved bits were
also being set.

[Minor coding-style fixes by tiwai]

Signed-off-by: Dan Allongo <gongo2k1@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-08 19:08:42 +02:00
Andrea Borgia
ca85b6ba59 ALSA: usb-audio - errata corrige for quirk
Cut'n'paste mistake, whose likely result was nothing at all.
Correct version is "USB_DEVICE", not "USB_DEVICE_VENDOR_SPEC".

Signed-off-by: Andrea Borgia <andrea@borgia.bo.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-03 08:05:32 +02:00
Daniel Mack
c6e24d4db8 ALSA: snd_usb_caiaq: bump version number
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-02 14:03:58 +02:00
Daniel Mack
bafeee5b1f ALSA: snd_usb_caiaq: give better shortname
If not passed as module option, provide an own card ID with the newly
introduced snd_set_card_id() call.

This will prevent ALSA from calling choose_default_name() which only
takes the last part of a name containing whitespaces. This for example
caused 'Audio 4 DJ' to be shortened to 'DJ', which was not very
descriptive.

The implementation now takes the short name and removes all whitespaces
from it which is much nicer.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-02 12:55:59 +02:00
Daniel Mack
1a1df6f043 ALSA: snd_usb_caiaq: give better longname
The serial number is of no interest in the longname, remove it. This
gives space for the usb path information which is more informative.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-02 09:47:33 +02:00
Daniel Mack
d3873a1be9 ALSA: snd_usb_caiaq: use strlcpy
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-02 09:41:16 +02:00
Daniel Mack
9318dce503 ALSA: snd_usb_caiaq: clean whitespaces
Cosmetic changes only, no code change.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-02 09:39:29 +02:00
Takashi Iwai
6efd2cd5e8 ALSA: usb-audio - Add quirk for Roland/Edirol M-16DX
Added a half-working quirk for Roland/Edirol M-16DX.
This enables the capture on the device but the playback on it seems still
problematic becuase of lack of sync with the capture clock.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-01 10:59:51 +02:00
Andrea Borgia
93bfd01227 ALSA: usb-audio - quirk for USB Aureon cards
Add quirk to provide proper naming of the Terratec Aureon 5.1 MkII
USB card.

Signed-off-by: Andrea Borgia <andrea@borgia.bo.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-01 10:48:54 +02:00
Clemens Ladisch
55de5ef970 sound: usb-audio: make the MotU Fastlane work again
Kernel 2.6.18 broke the MotU Fastlane, which uses duplicate endpoint
numbers in a manner that is not only illegal but also confuses the
kernel's endpoint descriptor caching mechanism.  To work around this, we
have to add a separate usb_set_interface() call to guide the USB core to
the correct descriptors.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Reported-and-tested-by: David Fries <david@fries.net>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-05-27 11:25:33 +02:00
Takashi Iwai
ae1ec5e1e9 ALSA: usbaudio - Add delay account
Manage the PCM delay account based on the queued URBs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-05-05 14:47:21 +02:00
Takashi Iwai
2008f137e9 ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers
Added SNDRV_PCM_INFO_BATCH flag to PCM info field of some drivers that
really don't give the precise pointer value.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-28 15:06:44 +02:00
Takashi Iwai
5530f41bd2 Merge branch 'fix/caiaq' into for-linus
* fix/caiaq:
  ALSA: snd-usb-caiaq: fix reported elapsed periods
2009-04-27 17:15:41 +02:00
Daniel Mack
a9b487fa1e ALSA: snd-usb-caiaq: fix reported elapsed periods
Reset the internal period position counter upon stream startup. This
fixes initial aplay underruns and problems related to latency picky
applications such as pulseaudio.

Bumped the version number to 1.3.14.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-27 12:32:52 +02:00
Takashi Iwai
a7b554ad7e Merge branch 'fix/usx2y' into for-linus
* fix/usx2y:
  ALSA: us122l: add snd_us122l_free()
  ALSA: us122l: Fix signedness in comparisions
2009-04-21 07:43:10 +02:00
Karsten Wiese
5d4af1be06 ALSA: us122l: add snd_us122l_free()
Use it to clean up snd_us122l_card_used[].

Without patch unplugging of an US122L soundcard didn't reset the
corresponding element of snd_us122l_card_used[] to 0.
The (SNDRV_CARDS + 1)th plugging in did not result in creating the soundcard
device anymore.
Index values supplied with the modprobe command line were not used correctly
anymore after the first unplugging of an US122L.

Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
Cc: stable@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-20 13:39:38 +02:00
Karsten Wiese
f600f6c482 ALSA: us122l: Fix signedness in comparisions
Within 2.6.30's mergewindow, struct urb's transfer_buffer_length has become
unsigned. This changed an "int > int" comparision to an "unsigned > int" one
in snd_usb_122l.
Fix this by using a local int variable instead of urb->transfer_buffer_length
in comparisions.

Shorten playback_prep_freqn() a bit and tweak error-paths in
usb_stream_prepare_playback().

Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-17 15:24:07 +02:00
Takashi Iwai
f4723b224d Merge branch 'topic/memdup_user' into for-linus
* topic/memdup_user:
  ALSA: sound/pci: use memdup_user()
  ALSA: sound/usb: use memdup_user()
  ALSA: sound/isa: use memdup_user()
  ALSA: sound/core: use memdup_user()
2009-04-15 11:24:27 +02:00
Daniel Mack
936e7d0339 ALSA: snd-usb-caiaq: rename files to remove redundant information in file pathes
Cleanup only, no functional change.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-14 13:31:17 +02:00
Daniel Mack
e431cf4568 ALSA: snd-usb-caiaq: clean up header includes
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-14 13:29:57 +02:00
Li Zefan
85385c1551 ALSA: sound/usb: use memdup_user()
Remove open-coded memdup_user().

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-14 12:39:39 +02:00
Clemens Ladisch
a7d9c0990d sound: usb-audio: allow period sizes less than 1 ms
To enable periods shorter than 1 ms, we have to make sure that short
periods are only available for alternate settings that have a small
enough data packet interval.  Furthermore, the code that aligns URBs to
USB frames is now superfluous.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-07 04:11:28 +02:00
Clemens Ladisch
744b89e542 sound: usb-audio: save data packet interval in audioformat structure
The data packet interval needs to be available in the audioformat
structure, together with the other audio format parameters, so that it
can be used to influence ALSA hardware parameters.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-07 04:11:24 +02:00
Clemens Ladisch
4608eb089b sound: usb-audio: remove check_hw_params_convention()
This removes the check_hw_params_convention() function because
1) it is not necessary, as the hw_rule_* functions also work correctly
   (i.e., as no-ops) when the device supports all combinations of the
   audio format parameters; and
2) it would become too complex when adding a fourth altsetting-dependent
   hardware parameter, as this would require another three loops to
   check dependecies with rate/channels/format.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-07 04:11:21 +02:00
Clemens Ladisch
488fe1665f sound: usb-audio: show sample format width in proc file
When listing the device's sample formats in the stream? proc file, the
sample format number itself is rather obscure, so we better show the
format width, too.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-04-07 04:11:16 +02:00
Takashi Iwai
c441c2971d Merge branch 'topic/usb-caiaq' into for-linus 2009-03-24 00:36:23 +01:00
Takashi Iwai
afad17c0ae Merge branch 'topic/usb-audio' into for-linus 2009-03-24 00:36:22 +01:00
Takashi Iwai
e0d2054fd3 Merge branch 'topic/misc' into for-linus 2009-03-24 00:35:50 +01:00
Takashi Iwai
c2f43981e5 Merge branch 'topic/hwdep-cleanup' into for-linus 2009-03-24 00:35:41 +01:00
Takashi Iwai
dec14f8c0e Merge branch 'topic/snd_card_new-err' into for-linus 2009-03-24 00:35:35 +01:00
Daniel Mack
28514fe5bb ALSA: snd-usb-caiaq: bump version number
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-03-18 11:31:26 +01:00
Daniel Mack
9311c9b4f1 ALSA: snd-usb-caiaq: drop bogus iso packets
Drop inbound packets that are smaller than expected. This has been
observed at the very beginning of the streaming transaction.

And when the hardware is in panic mode (which can only very rarely
happen in case of massive EMI chaos), mute the input channels.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Tested-by: Mark Hills <mark@pogo.org.uk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-03-18 11:31:08 +01:00
Daniel Mack
1313e70414 ALSA: snd-usb-caiaq: only warn once on streaming errors
Limit the number of printed warnings to one in case of streaming errors.
printk() happens to be expensive, especially in code called as often as
here.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-03-18 11:27:51 +01:00
Clemens Ladisch
b1c86bb807 sound: usb-audio: fix queue length check for high speed devices
When checking for the maximum queue length, we have to take into account
that MAX_QUEUE is measured in milliseconds (i.e., frames) while the unit
of urb_packs is whatever data packet interval the device uses (possibly
less than one frame when using high speed devices).

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-03-02 14:50:01 +01:00
Clemens Ladisch
eab2b553c3 sound: usb-audio: fix rules check for 32-channel devices
When storing the channel numbers used by a format, and if the device
happens to support 32 channels, the code would try to store 1<<32 in
a 32-bit value.

Since no valid format can have zero channels, we can use 1<<(channels-1)
instead of 1<<channels so that all the channel numbers that we test for
fit into 32 bits.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-03-02 14:49:58 +01:00
Hannes Eder
3a755ec2e8 ALSA: sound/usb/usx2y: fix sparse warning: do-while statement is not a compound ...
Fix this sparse warning:
  sound/usb/usx2y/usbusx2y.c:231:33: warning: do-while statement is not a compound statement

Signed-off-by: Hannes Eder <hannes@hanneseder.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-26 09:57:19 +01:00
Hannes Eder
619389882b ALSA: sound/usb/usx2y: fix sparse warning: Should it be static?
Impact: Move declaration to header file.

Fix this sparse warning:
  sound/usb/usx2y/usx2yhwdeppcm.c:739:5: warning: symbol 'usX2Y_hwdep_pcm_new' was not declared. Should it be static?

Signed-off-by: Hannes Eder <hannes@hanneseder.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-26 09:57:17 +01:00
Clemens Ladisch
f3990e610a sound: usb-audio: remove MIN_PACKS_URB
Remove the MIN_PACKS_URB symbol because other limits can force the
number of packets down to one, regardless of the value of this symbol,
and nobody has ever changed it anyway.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-20 11:14:55 +01:00
Joris van Rantwijk
3b03cc5b86 ALSA: usb-audio - Workaround for misdetected sample rate with CM6207
The CM6207 incorrectly advertises its 96 kHz playback setting as 48 kHz
in its USB device descriptor. This patch extends an existing workaround
in usbaudio.c to also cover the CM6207.

This resolves issue 0004249 in the ALSA bug tracker.

Signed-off-by: Joris van Rantwijk <jorispubl@xs4all.nl>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-16 22:58:23 +01:00
Takashi Iwai
0412558c87 ALSA: usb-audio - Fix non-continuous rate detection
The detection of non-continuous rates (given via rate tables) isn't
processed properly (e.g. for type II).

This patch fixes and simplifies the detection code.

Tested-by: Joris van Rantwijk <jorispubl@xs4all.nl>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-16 22:48:12 +01:00
Clemens Ladisch
e156ac4c57 sound: usb-audio: fix uninitialized variable with M-Audio MIDI interfaces
Fix the snd_usbmidi_create_endpoints_midiman() function, which forgot to
set the out_interval member of the endpoint info structure for Midiman/
M-Audio devices.  Since kernel 2.6.24, any non-zero value makes the
driver use interrupt transfers instead of bulk transfers.  With EHCI
controllers, these random interval values result in unbearably large
latencies for output MIDI transfers.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Reported-by: David <devurandom@foobox.com>
Tested-by: David <devurandom@foobox.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-16 15:31:48 +01:00
Clemens Ladisch
894dcd7878 sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices
For audio devices that do not have proper audio descriptors (e.g.,
Edirol UA-20), we use hardcoded parameters from our quirks list.
However, we must still read the maximum packet size from the standard
endpoint descriptor; otherwise, we might use packets that are too big
and therefore rejected by the USB core.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-06 09:47:12 +01:00
Takashi Iwai
54530bded6 ALSA: usb - Add missing KERN_* prefix to printk
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-05 15:55:18 +01:00
Mark Hills
238c0270ba ALSA: snd-usb-caiaq: Increase version number to 1.3.12
Indicates fixes affecting control messages and switching of input mode
on Audio 8 DJ and Audio 4 DJ.

Signed-off-by: Mark Hills <mark@pogo.org.uk>
Acked-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-05 09:34:13 +01:00
Mark Hills
a8564155a9 ALSA: snd-usb-caiaq: Remove duplicate A8DJ control
Remove a duplicate control which causes an error when it is registered,
and causes later controls to not be registered. The device does not have
a fourth ground lift control.

Signed-off-by: Mark Hills <mark@pogo.org.uk>
Acked-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-05 09:33:52 +01:00
Mark Hills
9a9527ed49 ALSA: snd-usb-caiaq: Do not expose hardware input mode 0 of A4DJ
In the context of the Audio 4 DJ (when compared to Audio 8 DJ), hardware
input mode 0 is not used. Expose modes 1 (line) and 2 (phono) to the user
as modes 0 and 1 respectively.

Signed-off-by: Mark Hills <mark@pogo.org.uk>
Acked-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-05 09:33:24 +01:00
Mark Hills
e3ca4c9982 ALSA: snd-usb-caiaq: Set default input mode of A4DJ
Do not start the device with input mode undefined. Mimic the behaviour of
the Audio 8 DJ and start in phono input mode.

Signed-off-by: Mark Hills <mark@pogo.org.uk>
Acked-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-05 09:32:39 +01:00
Mark Hills
705350f8bd ALSA: snd-usb-caiaq: Send the correct command when setting controls
Fixes a bug where an incorrect command was sent which had no effect on the
device.

Signed-off-by: Mark Hills <mark@pogo.org.uk>
Acked-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-02-05 09:31:53 +01:00