Commit graph

191 commits

Author SHA1 Message Date
Clemens Ladisch
987411b7d8 [ALSA] usb-audio: work around wrong frequency in CM6501 descriptors
The C-Media CM6501 chip's descriptors say that altsetting 5 supports
48 kHz, but it actually plays at 96 kHz.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2007-01-09 09:06:15 +01:00
Tobias Klauser
cf78bbc4b1 [ALSA] sound/usb/usbaudio: Handle return value of usb_register()
Handle the return value of usb_register() in the module_init function.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-12-20 08:55:31 +01:00
Nick Piggin
cd54e7e543 [PATCH] mm: incorrect VM_FAULT_OOM returns from drivers
Some drivers are returning OOM when it is not in response to a memory
shortage.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Cc: Dave Airlie <airlied@linux.ie>
Cc: Jaroslav Kysela <perex@suse.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07 08:39:20 -08:00
Mariusz Kozlowski
68df9de1d0 usb: usbmixer free kill urb cleanup
- usb_free_urb() cleanup
- usb_kill_urb() cleanup

Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-12-01 14:23:35 -08:00
Mariusz Kozlowski
f5e135af87 usb: usbmidi kill urb cleanup
- usb_kill_urb() cleanup

Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-12-01 14:23:35 -08:00
Takashi Iwai
de1b8b93a0 [ALSA] Fix hang-up at disconnection of usb-audio
Fix hang-up at disconnection of usb-audio devices while accessing PCM.
Don't handle PCM operations any more after shutdown flag is set.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-11-28 13:46:38 +01:00
Karsten Wiese
635bbb355e [ALSA] Repair snd-usb-usx2y for usb 2.6.18
urb->start_frame rolls over beyond MAX_INT now.
This is for stable kernel and stable alsa.

Signed-off-by: Karsten Wiese <annabellesgarden@yahoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-10-06 20:23:02 +02:00
Karsten Wiese
9b08c2aa54 [ALSA] Fix bug in snd-usb-usx2y's usX2Y_pcms_lock_check()
Fix bug in snd-usb-usx2y's usX2Y_pcms_lock_check()
substream can be NULL......
in mainline, bug was introduced by:
2006-06-22  [ALSA] Add O_APPEND flag support to PCM

Signed-off-by: Karsten Wiese <annabellesgarden@yahoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-10-06 20:23:01 +02:00
David Howells
7d12e780e0 IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
of passing regs around manually through all ~1800 interrupt handlers in the
Linux kernel.

The regs pointer is used in few places, but it potentially costs both stack
space and code to pass it around.  On the FRV arch, removing the regs parameter
from all the genirq function results in a 20% speed up of the IRQ exit path
(ie: from leaving timer_interrupt() to leaving do_IRQ()).

Where appropriate, an arch may override the generic storage facility and do
something different with the variable.  On FRV, for instance, the address is
maintained in GR28 at all times inside the kernel as part of general exception
handling.

Having looked over the code, it appears that the parameter may be handed down
through up to twenty or so layers of functions.  Consider a USB character
device attached to a USB hub, attached to a USB controller that posts its
interrupts through a cascaded auxiliary interrupt controller.  A character
device driver may want to pass regs to the sysrq handler through the input
layer which adds another few layers of parameter passing.

I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
main part of the code on FRV and i386, though I can't test most of the drivers.
I've also done partial conversion for powerpc and MIPS - these at least compile
with minimal configurations.

This will affect all archs.  Mostly the changes should be relatively easy.
Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

	struct pt_regs *old_regs = set_irq_regs(regs);

And put the old one back at the end:

	set_irq_regs(old_regs);

Don't pass regs through to generic_handle_irq() or __do_IRQ().

In timer_interrupt(), this sort of change will be necessary:

	-	update_process_times(user_mode(regs));
	-	profile_tick(CPU_PROFILING, regs);
	+	update_process_times(user_mode(get_irq_regs()));
	+	profile_tick(CPU_PROFILING);

I'd like to move update_process_times()'s use of get_irq_regs() into itself,
except that i386, alone of the archs, uses something other than user_mode().

Some notes on the interrupt handling in the drivers:

 (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
     the input_dev struct.

 (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
     something different depending on whether it's been supplied with a regs
     pointer or not.

 (*) Various IRQ handler function pointers have been moved to type
     irq_handler_t.

Signed-Off-By: David Howells <dhowells@redhat.com>
(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-10-05 15:10:12 +01:00
Alexey Dobriyan
52978be636 [PATCH] kmemdup: some users
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-01 00:39:19 -07:00
Pete Zaitcev
38e2bfc94e USB: Dealias -110 code (more complete)
The purpose of this patch is to split off the case when a device does
not reply on the lower level (which is reported by HC hardware), and
a case when the device accepted the request, but does not reply at
upper level. This redefinition allows to diagnose issues easier,
without asking the user if the -110 happened "immediately".

The usbmon splits such cases already thanks to its timestamp, but
it's not always available.

I adjusted all drivers which I found affected (by searching for "urb").
Out of tree drivers may suffer a little bit, but I do not expect much
breakage. At worst they may print a few messages.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-09-27 11:59:00 -07:00
Clemens Ladisch
fef8a0c03d [ALSA] usb-audio: add mixer control names for the Aureon 5.1 MkII
Add a mixer name map for the TerraTec Aureon 5.1 MkII USB.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:48:30 +02:00
Clemens Ladisch
92b9ac78f9 [ALSA] usb-audio: increase number of packets per URB
To decrease the USB interrupts rate, increase both the default and the
maximum number of packets per URB.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:48:17 +02:00
Luke Ross
a79eee8d3d [ALSA] Support for non-standard rates in USB audio driver
There's at least one USB audio chipset out there which supports only one
non-standard rate (ID 0e6a:0310 supports 46875Hz). There's a few other
patches for this card which are unsatisfactory because they attempt to
map this rate to 44.1k leading to sound distortion.
The patch below uses SNDRV_PCM_RATE_KNOT to properly support the
non-standard rates where they are available.

Signed-off-by: Luke Ross <luke@lukeross.name>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:44:58 +02:00
Takashi Iwai
727f317a10 [ALSA] usb-audio - Fix a typo of CONFIG_PROC_FS
Fixed a typo of CONFIG_PROC_FS in usbaudio.c.
The stream proc file appears again.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:40:04 +02:00
Clemens Ladisch
f1265391ea [ALSA] usb-audio: add more Yamaha devices
Add some quirks for some unknown Yamaha USB MIDI devices.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:38:22 +02:00
Takashi Iwai
7bc5ba7e02 [ALSA] Add TLV support to snd-usb-audio driver
Added TLV-read support to snd-usb-audio driver for passing
the volume dB scale information to user-space.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:37:54 +02:00
Takashi Iwai
c461482c80 [ALSA] Unregister device files at disconnection
Orignally proposed by Sam Revitch <sam.revitch@gmail.com>.
Unregister device files at disconnection to avoid the futher accesses.
Also, the dev_unregister callback is removed and replaced with the
combination of disconnect + free.
A new function snd_card_free_when_closed() is introduced, which is
used in USB disconnect callback.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-09-23 10:36:58 +02:00
Panagiotis Issaris
59feddb25f [ALSA] Conversions from kmalloc+memset to k(z|c)alloc
sound: Conversions from kmalloc+memset to k(c|z)alloc.

Signed-off-by: Panagiotis Issaris <takis@issaris.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-08-03 15:21:18 +02:00
Sam Revitch
e217e30c35 [ALSA] usb-audio support for Turtle Beach Roadie
From: Sam Revitch <sam.revitch@gmail.com>Recently a Turtle Beach Audio Advantage Roadie device ended up in my
possession.  It seems to work with the snd-usb-audio driver, but only
using the headphone jack in 2-channel mode.  The device has a DIN
connector carrying six more channels that are otherwise silent.
C-Media has freely available documentation for the CM106 chip around
which this device is based, and enabling 8-channel output, or
6-channel output with the headphone jack following the front pair is a
matter of setting one of its registers.
Attached is a patch to try to enable 5.1 output mode at probe time.
It seems to work correctly with my device.  There is quite list of
other configurables for this device that might deserve controls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-06-28 19:30:39 +02:00
Ben Williamson
c4a87ef4de [ALSA] USB midi: Remove duplicate CS_AUDIO_* #defines
Removed the CS_AUDIO_* #defines, which were duplicates of the
class-specific USB_DT_CS_* #defines in <linux/usb_ch9.h>.

Signed-off-by: Ben Williamson <ben.williamson@greyinnovation.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-06-22 21:34:31 +02:00
Takashi Iwai
f8c7579051 [ALSA] usbaudio - Fix a typo
Fix a typo introduced by the last fix.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-06-22 21:33:50 +02:00
Clemens Ladisch
faf8d11743 [ALSA] usb-audio: add workaround for CSR Bluetooth Headphones (Saitek A-250)
Some devices don't have the required class-specific endpoint descriptors.
Instead of making this case an error, this patch makes the driver guess the
endpoint attributes.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-06-22 21:33:47 +02:00
Raimonds Cicans
4d1a70dad0 [ALSA] add support for SB Live! 24-Bit External remote control
This patch rewrites the remote control code to use a table for
the peculiarities of the various SB models, and adds support
for a third model.

Signed-off-by: Raimonds Cicans <ray@vardes.lv>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-06-22 21:33:30 +02:00
Clemens Ladisch
a7b928ac5f [ALSA] rawmidi: add get_port_info callback for sequencer information flags
Add a get_port_info callback to the snd_rawmidi_global_ops structure to
allow the USB MIDI driver to supply information flags for the sequencer
ports created by seq_midi.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-06-22 21:33:20 +02:00
Takashi Iwai
0df63e44c3 [ALSA] Add O_APPEND flag support to PCM
Added O_APPEND flag support to PCM to enable shared substreams
among multiple processes.  This mechanism is used by dmix and
dsnoop plugins.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-06-22 21:33:13 +02:00
Takashi Iwai
bf850204a7 [ALSA] Remove unneeded read/write_size fields in proc text ops
Remove unneeded read/write_size fields in proc text ops.
snd_info_set_text_ops() is fixed, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-06-22 21:33:09 +02:00
Clemens Ladisch
bc56eff127 [ALSA] add another Phase 26 quirk
Add a quirk entry for the TerraTec Phase 26 with yet another product ID.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-04-27 21:10:04 +02:00
Takashi Iwai
14790f1c73 [ALSA] Test volume resolution of usb audio at initialization
Test the volume of usb audio whether actually it works and adjusts
the resolution value according to it.

Some USB audio devices report a lower resolution than it reacts.
The only possible check is to write and read a volume value.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-31 17:59:00 +02:00
Alexey Dobriyan
7f927fcc2f [PATCH] Typo fixes
Fix a lot of typos.  Eyeballed by jmc@ in OpenBSD.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-28 09:16:08 -08:00
Jesper Juhl
878b478919 [ALSA] fix resource leak in usbmixer
Modules: USB generic driver

We may leak 'namelist' in sound/usb/usbmixer.c::parse_audio_selector_unit()

Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-22 10:39:28 +01:00
Clemens Ladisch
c7a93b852b [ALSA] usb-audio: add Maya44 mixer control names
Modules: USB generic driver

Add mixer control names for the AudioTrak Maya44 USB.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:39:11 +01:00
Clemens Ladisch
9808dc962f [ALSA] usb-audio: add Casio PL-40R support
Modules: USB generic driver

Add a quirk entry for the Casio PL-40R.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:39:07 +01:00
Clemens Ladisch
4ccb4a4387 [ALSA] usb-audio: add MDP-5/EZ-J24 support
Modules: USB generic driver

Add support for the Yamaha MDP-5 and EZ-J24.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:38:41 +01:00
Thibault LE MEUR
e311334ee6 [ALSA] Fixes audiophile usb analog capture with the new device_setup parameter
Modules: Documentation,USB generic driver

The patch adds the 'device_setup' module parameter and a specific
quirk to correctly initialize the audiophile usb device: this fixes
the distorted sound bug on the Analog capture port. Backward
compatibility is achieved by simply omitting the new parameter.

Signed-off-by: Thibault LE MEUR <Thibault.LeMeur@supelec.fr>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-22 10:38:38 +01:00
Clemens Ladisch
3e964432f5 [ALSA] usb-audio: add error message about missing split iso support
Modules: USB generic driver

Add an error message for -ENOSYS for situations when split iso support
is needed but not enabled.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:38:20 +01:00
Clemens Ladisch
318d27f8b4 [ALSA] usb-audio: change Casio quirk product name
Modules: USB generic driver

Use a generic name for USB device 0x07cf:0x6802 because this ID is used
by several devices without a product ID.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:36:53 +01:00
Clemens Ladisch
32e19e882c [ALSA] usb-audio: show USB error descriptions
Modules: USB generic driver

When usb_submit_urb() fails, show an error description instead of just
the error code.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:36:37 +01:00
Clemens Ladisch
0243ef71ac [ALSA] usb-audio: add Casio AP-80R support
Modules: USB generic driver

Add a quirk for the Casio AP-80R.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:36:29 +01:00
Dave Jones
a2df813bea [ALSA] fix usbmixer double kfree
Modules: USB generic driver

snd_ctl_add() kfree's the kcontrol already if we fail there,
so this driver is currently doing a double kfree.

Coverity bug #959

Signed-off-by: Dave Jones <davej@redhat.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-22 10:35:19 +01:00
Clemens Ladisch
62f09c3d32 [ALSA] usb-audio: optimize snd_usbmidi_count_bits()
Modules: USB generic driver

Reduce the code size of the snd_usbmidi_count_bits() function by using
simpler operations.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:31:19 +01:00
Jesper Juhl
9c4be3d334 [ALSA] no need to check pointers passed to vfree() for NULL
Modules: Digigram VX core,USB generic driver

There's no need to check pointers passed to vfree() for NULL.

Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-22 10:29:21 +01:00
Clemens Ladisch
b2b8229dde [ALSA] usb-audio: add Miditech Play'n Roll support
Modules: USB generic driver

Add a quirk entry for the Miditech Play'n Roll.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:28:31 +01:00
Clemens Ladisch
cc7a59bd8d [ALSA] usb-audio: rename QUIRK_MIDI_MIDITECH to QUIRK_MIDI_CME
Modules: USB generic driver

Rename QUIRK_MIDI_MIDITECH to QUIRK_MIDI_CME because Miditech keyboards
are built by CME and use the same protocol, and don't force a Miditech
product name for the USB ID used by both Miditech and CME UF-x
keyboards.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:28:22 +01:00
Clemens Ladisch
119c4ff52e [ALSA] usb-audio: add UM-1EX/UM-2EX information
Modules: USB generic driver

Add comments with information about UM-1EX/UM-2EX devices.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:27:14 +01:00
Clemens Ladisch
05422575d4 [ALSA] usb-audio: fix number of G-70 ports
Modules: USB generic driver

The G-70 has one MIDI port in each direction, no two.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:27:10 +01:00
Jaroslav Kysela
3f72a30ccf [ALSA] snd_pcm_format_name() is no longer exported
Modules: PCM Midlevel,USB generic driver

Because snd_pcm_format_name() function is used only for informational
purposes, it is no longer exported from the PCM midlevel to reduce
space and dependency. usbaudio module shows only numeric value for format.

Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-03-22 10:27:05 +01:00
Clemens Ladisch
cdca881d79 [ALSA] usb-audio: add Roland G-70 support
Modules: USB generic driver

Add a quirk entry for the Roland G-70.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:26:24 +01:00
Ingo Molnar
12aa757905 [ALSA] semaphore -> mutex (Archs, misc buses)
Semaphore to mutex conversion.

The conversion was generated via scripts, and the result was validated
automatically via a script as well.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-22 10:25:43 +01:00
Clemens Ladisch
415b09e455 [ALSA] usb-audio: add Edirol PC-50 support
Modules: USB generic driver

Add a quirk entry for the Edirol PC-50.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:23:47 +01:00
Jaroslav Kysela
21a3479a0b [ALSA] PCM midlevel & PCM OSS - make procfs & OSS plugin code optional
Modules: ALSA Core,PCM Midlevel,ALSA<-OSS emulation,USB generic driver

1) The verbose procfs code for the PCM midlevel and usb audio
   can be removed now (more patches will follow).
   CONFIG_SND_VERBOSE_PROCFS
2) The PCM OSS plugin system can be also compiled optionaly.
   CONFIG_SND_PCM_OSS_PLUGINS

Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2006-03-22 10:23:12 +01:00
Clemens Ladisch
9568f461e5 [ALSA] usb-audio: factor out packet size calculation code
Modules: USB generic driver

Move the common packet size calculation code from
prepare_startup_playback_urb() and prepare_playback_urb() to a new
function.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:22:27 +01:00
Clemens Ladisch
7c79b7682e [ALSA] usb-audio: cosmetic changes
Modules: USB generic driver

Move some entries around to keep them sorted by ID.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-03-22 10:22:22 +01:00
Brent Cook
e03173fce2 [ALSA] Add support for EDIROL UM-3ex
Modules: USB generic driver

This is my naive attempt at adding ALSA device support. The attached
patch provides support for the EDIROL UM-3ex. This is a 3-port USB midi
interface with a built-in USB hub and the ability to chain 2 other
UM-3x's in a master-slave configuration. I only have one, so I do not
know how this works in practice.

Though this is a 3-port device, I had to throw in that 4th 'Control' interface
to the definition in order to make the 3rd port work. If I set in/out_cables
to 0x000b, a 3rd interface appears on the driver, but it does nothing.
Changing it to 0x000f allows the 3rd interface to work, but of course
interface 4 does not work because it does not exist.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-03-22 10:22:14 +01:00
Clemens Ladisch
3315937825 [ALSA] usb-audio: fix non-48k sample rates with SB Audigy 2 ZS
Modules: USB generic driver

On the Audigy 2 ZS, disable all sample rate that are not a multiple of
48 kHz because the others work only with the digital output which is
not yet supported.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-01-22 16:24:16 +01:00
Clemens Ladisch
4b28492834 [ALSA] usb-audio: don't use empty packets at start of playback
Modules: USB generic driver

Some widespread USB interface chips with adaptive iso endpoints hang
after receiving a series of empty packets when they expect data (ALSA
bug#1585).  To avoid this, we have to send packets containing silence
(zero samples) instead.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-01-22 16:24:09 +01:00
Linus Torvalds
4da5cc2cec Merge git://git.kernel.org/pub/scm/linux/kernel/git/perex/alsa 2006-01-04 16:38:36 -08:00
Greg Kroah-Hartman
75318d2d7c [PATCH] USB: remove .owner field from struct usb_driver
It is no longer needed, so let's remove it, saving a bit of memory.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-01-04 13:48:34 -08:00
Clemens Ladisch
1f14a657d8 [ALSA] usb-audio: fix Edirol UA-20 support
Modules: USB generic driver

Somebody at Edirol fucked up and released a new revision of the UA-20
without class-specific descriptors, so now we have to hard-code the
sample format.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2006-01-03 12:29:32 +01:00
Takashi Iwai
bbe85bbd02 [ALSA] Remove xxx_t typedefs: USB-USX2Y
Modules: USB USX2Y

Remove xxx_t typedefs from the USB-USX2Y driver.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-01-03 12:19:56 +01:00
Takashi Iwai
86e07d3465 [ALSA] Remove xxx_t typedefs: USB-Audio
Modules: USB generic driver

Remove xxx_t typedefs from the USB-Audio driver.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-01-03 12:19:55 +01:00
Takashi Iwai
cb432379ef [ALSA] usx2y - Code clean up
Modules: USB USX2Y

Clean up snd-usb-usx2y driver code:

- Avoid unnecessary cast
- Fix spaces/indents
- Use kzalloc()
- Remove weird debug prints

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-01-03 12:17:09 +01:00
Takashi Iwai
c3e6f7d876 [ALSA] Remove superfluous pcm_free callbacks
Remove superflous pcm_free callbacks.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2006-01-03 12:16:21 +01:00
Hugh Dickins
1cdca61bf8 [PATCH] unpaged: sound nopage get_page
Something noticed when studying use of VM_RESERVED in different drivers:
snd_usX2Y_hwdep_pcm_vm_nopage omitted to get_page: fixed.

And how did this work before?  Aargh!  That nopage is returning a page from
within a buffer allocated by snd_malloc_pages, which allocates a high-order
page, then does SetPageReserved on each 0-order page within.

That would have worked in 2.6.14, because when the area was unmapped,
PageReserved inhibited put_page.  2.6.15-rc1 removed that inhibition (while
leaving ineffective PageReserveds around for now), but it hasn't caused
trouble because..  we've not been freeing from VM_RESERVED at all.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-22 09:13:42 -08:00
Jaroslav Kysela
c2f2f0fa38 [ALSA] usb-audio: remove duplicate fixup entry (Hercules DJ Console)
Modules: USB generic driver

Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2005-11-04 13:26:03 +01:00
Clemens Ladisch
b55bbf06e8 [ALSA] usb-audio: start submitting URBs in the prepared state
Modules: USB generic driver

If we submit all our URBs when a playback stream is started, the first
hwptr_done update for each URB happens at the same time.  This results
in an underrun when there isn't enough PCM data available at this
point for all URBs.

To avoid this, we begin submitting our URBs earlier (when the stream
is prepared), with empy packets.  When the stream is started, the
prepare_playback_urb() call for each URB will be run only when the
respective URB has completed previously, so the first hwptr_done
updates will be done nicely staggered.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-11-04 13:25:06 +01:00
Clemens Ladisch
c8a7e5c40d [ALSA] usb-audio: remove superfluous include
Modules: USB generic driver

Remove a superfluous include of the sound/minors.h header.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:20:03 +01:00
Nishanth Aravamudan
8433a509c0 [ALSA] Fix schedule_timeout usage
Use schedule_timeout_{,un}interruptible() instead of
set_current_state()/schedule_timeout() to reduce kernel size.  Also use
human-time conversion functions instead of hard-coded division to avoid
rounding issues.

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-11-04 13:19:49 +01:00
Takashi Iwai
d3d579f84e [ALSA] Add missing KERN_* prefix
Modules: ALSA<-OSS emulation,USB generic driver,USB USX2Y

Added missing KERN_* prefix to printk.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-11-04 13:19:32 +01:00
Clemens Ladisch
f0597a416d [ALSA] usb-audio: don't call usb_reset_configuration() when probing
Modules: USB generic driver

Remove the usb_reset_configuration() call from the probe callback
because it isn't needed and it may interfere with other drivers
already loaded for the device.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:18:58 +01:00
Takashi Iwai
b1d5776d86 [ALSA] Remove vmalloc wrapper, kfree_nocheck()
- Remove vmalloc wrapper
- Add release_and_free_resource() to remove kfree_nocheck() from each driver
  and simplify the code

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-11-04 13:18:00 +01:00
Clemens Ladisch
3527a008cb [ALSA] usb-audio: remove old compatibility wrappers (2/2)
Modules: USB generic driver

Move the usb_complete_callback() compatibility wrapper out of the
kernel tree.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:16:39 +01:00
Clemens Ladisch
3cfc1eb181 [ALSA] usb-audio: remove old compatibility wrappers (1/2)
Modules: USB generic driver

Move the usb_pipe_needs_resubmit() compatibility wrapper out of the
kernel tree.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:16:37 +01:00
Clemens Ladisch
d879f0ccf5 [ALSA] usb-audio: add quirk comments
Modules: USB generic driver

Add more comments about other device modes and unsupported devices to
the Roland part of the quirks table.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:16:28 +01:00
Clemens Ladisch
dfedc5f47c [ALSA] usb-audio: ignore Hercules DJ Console mixer errors
Modules: USB generic driver

Add a quirk entry for the Hercules DJ Console to ignore timeouts on
some mixer control transfers.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:15:59 +01:00
Clemens Ladisch
d1bda04554 [ALSA] usb-audio: simplify MIDI quirk handling
Modules: USB generic driver

Simplify the handling of MIDI quirks by treating an interface without
quirks as a QUIRK_MIDI_STANDARD_INTERFACE.

This also fixes the bug where a MIDI_STANDARD quirk would not be
recognized.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-11-04 13:15:49 +01:00
Al Viro
55016f10e3 [PATCH] gfp_t: drivers/usb
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-28 08:16:49 -07:00
Clemens Ladisch
a25f175c2f [ALSA] usb-audio: add MIDI quirk for Hercules DJ Console
USB generic driver
Add a quirk entry for the external MIDI ports of the
Windows Edition of the Hercules DJ Console.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:46:42 +02:00
Clemens Ladisch
9c9565f709 [ALSA] usb-audio: add another ID for Hercules DJ Console
USB generic driver
Add a mixer quirk entry for the Hercules DJ Console (Windows Edition)
that uses a different USB product ID.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:46:40 +02:00
Clemens Ladisch
d31cbbfd80 [ALSA] usb-audio: increase max buffer size
USB generic driver
Increase the maximum PCM buffer size to 1 MB.  The USB driver doesn't
have any inherent buffer size limit, and big multichannel interfaces
may benefit from this.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:46:11 +02:00
Clemens Ladisch
31ab9523ed [ALSA] usb-audio: add another ID for the TerraTec PHASE26
USB generic driver
There is another revision of the PHASE26 with a different product ID;
add a quirk entry for that, too.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:46:06 +02:00
Clemens Ladisch
f542fda8f8 [ALSA] usb-audio: add more Yamaha USB MIDI devices
USB generic driver
Add quirk entries for four unknown Yamaha USB MIDI devices.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:46:03 +02:00
Clemens Ladisch
5a2a68f5a1 [ALSA] usb-audio: add Roland RD-700SX support
USB generic driver
Add a quirk entry for the Roland RD-700SX.
This should work for the RD-300SX, too.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:45:49 +02:00
Clemens Ladisch
460dc98afc [ALSA] usb-audio: ignore Hercules DJ Console mixer errors
USB generic driver
Add a quirk entry for the Hercules DJ Console to ignore timeouts on
some mixer control transfers.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-10-07 14:45:33 +02:00
Takashi Iwai
561b220a4d [ALSA] Replace with kzalloc() - others
Documentation,SA11xx UDA1341 driver,Generic drivers,MPU401 UART,OPL3
OPL4,Digigram VX core,I2C cs8427,I2C lib core,I2C tea6330t,L3 drivers
AK4114 receiver,AK4117 receiver,PDAudioCF driver,PPC PMAC driver
SPARC AMD7930 driver,SPARC cs4231 driver,Synth,Common EMU synth
USB generic driver,USB USX2Y
Replace kcalloc(1,..) with kzalloc().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-12 10:48:22 +02:00
Clemens Ladisch
49045d3d4d [ALSA] usb-audio: add SNDRV_PCM_INFO_BATCH flag
USB generic driver
Add the SNDRV_PCM_INFO_BATCH flag to the PCM hardware information to
indicate that the driver uses double buffering.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-09-12 10:41:10 +02:00
Alan Stern
b375a0495f [PATCH] USB: URB_ASYNC_UNLINK flag removed from the kernel
29 July 2005, Cambridge, MA:

This afternoon Alan Stern submitted a patch to remove the URB_ASYNC_UNLINK
flag from the Linux kernel.  Mr. Stern explained, "This flag is a relic
from an earlier, less-well-designed system.  For over a year it hasn't
been used for anything other than printing warning messages."

An anonymous spokesman for the Linux kernel development community
commented, "This is exactly the sort of thing we see happening all the
time.  As the kernel evolves, support for old techniques and old code can
be jettisoned and replaced by newer, better approaches.  Proprietary
operating systems do not have the freedom or flexibility to change so
quickly."

Mr. Stern, a staff member at Harvard University's Rowland Institute who
works on Linux only as a hobby, noted that the patch (labelled as548) did
not update two files, keyspan.c and option.c, in the USB drivers' "serial"
subdirectory.  "Those files need more extensive changes," he remarked.
"They examine the status field of several URBs at times when they're not
supposed to.  That will need to be fixed before the URB_ASYNC_UNLINK flag
is removed."

Greg Kroah-Hartman, the kernel maintainer responsible for overseeing all
of Linux's USB drivers, did not respond to our inquiries or return our
calls.  His only comment was "Applied, thanks."

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-08 16:23:04 -07:00
Clemens Ladisch
c88469704d [ALSA] usb-audio: throttle MIDI URB resubmits on USB errors
USB generic driver
When a USB error occurs that might indicate that the device has been
unplugged, don't resubmit the URB immediately to prevent flooding the
log with error messages before khubd has us disconnect()ed.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 13:14:13 +02:00
Clemens Ladisch
c347e9fca7 [ALSA] usb-audio: fix Emagic MIDI protocol handling
USB generic driver
Emagic devices pad their packets not with 0xff bytes but with a 0xff
byte followed by garbage, so we have to stop at the first such byte.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:47:34 +02:00
Clemens Ladisch
6207e51b79 [ALSA] usb-audio: use vmalloc for the PCM buffer
USB generic driver
With the double buffering, we no longer need contiguous memory for the
PCM buffer, so we can use vmalloc() instead of the preallocation
functions, and increase the maximum size to 256 KB.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:57 +02:00
Clemens Ladisch
55851f734d [ALSA] usb-audio: use usb_buffer_alloc/free
USB generic driver
Use the USB buffer allocation functions to avoid repeated DMA mappings
of our buffers, which are re-used quite a lot.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:53 +02:00
Clemens Ladisch
daa150ef7d [ALSA] usb-audio: properly lock hwptr_done accesses
USB generic driver
Take the substream lock when reading hwptr_done to avoid a race
condition with the updates in the URB callbacks.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:50 +02:00
Clemens Ladisch
9624ea812c [ALSA] usb-audio: actually schedule playback URBs at frame boundaries
USB generic driver
Change prepare_playback_urb() not to stop preparing packets before a
frame boundary has been reached.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:47 +02:00
Clemens Ladisch
7efd8bc800 [ALSA] usb-audio: double-buffer all playback data
USB generic driver
We always had to use double buffering when capturing, and when playback
data for one URB crosses a buffer boundary.  The latter would make hwptr
updates less precise because the double-buffered data is read from the
buffer much earlier than the other data is read by the host controller.

Double-buffering all data allows to update hwptr immediately after the
data was copied to the USB buffer(s), which has the additional benefit
of avoiding the latency imposed by the host controller's delay of up to
one frame when interrupting.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:43 +02:00
Clemens Ladisch
b263a9bdf9 [ALSA] usb-audio: optimize handling of capture URBs
USB generic driver
When preparing capture URBs, we don't need to stop when we cross a
period boundary because we now never handle more than one millisecond of
data per URB anyway.

When handling captured data, use an extra flag to call
snd_pcm_period_elapsed() no more than once.  This allows us to move the
period boundary checking code before the copying of the data which
avoids a second locking of the substream's lock.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:41 +02:00
Clemens Ladisch
a93bf99077 [ALSA] usb-audio: schedule high speed URBs with 1 ms alignment
USB generic driver
The EHCI driver doesn't interrupt more than once per millisecond, and
organizes all iso transfers with frame-sized ITDs, so we can (try to)
be more efficient by aligning all URBs on frame boundaries.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:16 +02:00
Clemens Ladisch
71d848ca00 [ALSA] usb-audio: make nrpacks parameter writeable
USB generic driver
The nrpacks module parameter is used only when initializing a playback
stream, so it doesn't hurt to make it writeable.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:14 +02:00
Clemens Ladisch
d6db392e92 [ALSA] usb-audio: fix packets per URB calculation for playback
USB generic driver
When determining how many packets are needed for one period, we cannot
assume that all packets have their maximum size -- we always use the
nominal sample rate when sending data, and could use an even lower rate
when the endpoint uses frequency feedback.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:08 +02:00
Clemens Ladisch
15a24c0778 [ALSA] usb-audio: use 1 ms URBs when capturing
USB generic driver
When capturing audio data, we do not know beforehand how many samples
the device sends per frame, so we have to use URBs that are as short as
possible to make sure that we can handle period boundaries without any
additional latencies.

Furthermore, the total count of URBs submitted doesn't matter when
capturing, so we can just use the maximum number.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-08-30 08:45:04 +02:00
Karsten Wiese
443feb8826 [ALSA] ALSA's struct _snd_pcm_substream: Obsolete open_flag
PCM Midlevel,ALSA<-OSS emulation,USB USX2Y
This patch removes open_flag from struct _snd_pcm_substream.
All of its uses are substituted by querying struct _snd_pcm_substream's
member ffile instead.

Signed-off-by: Karsten Wiese <annabellesgarden@yahoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-08-30 08:44:48 +02:00