Commit Graph

78 Commits

Author SHA1 Message Date
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
Clemens Ladisch
854af9578c [ALSA] usb-audio - change quirk type handling
USB generic driver
Make the quirk type an enum instead of a #defined integer, and use a
table for the quirk constructor functions instead of a big switch
statement.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:22:41 +02:00
Clemens Ladisch
f38275fe99 [ALSA] usb-audio - add support for Miditech USB MIDI keyboards
USB generic driver
Add support for Miditech Midistart and MidiStudio keyboards (another
case of devices using the standard protocol but having no descriptors).

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:22:37 +02:00
Nishanth Aravamudan
b27c187f95 [ALSA] Fix-up sleeping in sound/usb
USB generic driver,USB USX2Y
Description: Fix-up sleeping in sound/usb. Replace big_mdelay() with
msleep() to guarantee the task delays as expected. This also involved
replacing/removing custom sleep functions.

Patch is compile-tested.

Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
2005-07-28 12:22:22 +02:00
Clemens Ladisch
bbd4615cdb [ALSA] usb-audio - use bDeviceSubClass to detect MOTU FastLane
USB generic driver
MOTU builds other USB MIDI interfaces with the same product ID as the
FastLane, so we have to check the bDeviceSubClass field to differentiate
between them.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:21:44 +02:00
Clemens Ladisch
6155aff84b [ALSA] usb-audio - rename QUIRK_MIDI_MOTU to QUIRK_MIDI_RAW
USB generic driver
Rename the protocol used by the MOTU FastLane to 'raw' because it might
be useful with other devices, and there are other MOTU interfaces that
do not use this protocol.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:21:41 +02:00
Clemens Ladisch
b1c6ef52e2 [ALSA] usb-audio - enable high speed transfers with Audiy 2 NX
USB generic driver
This patch enables the boot commands to activate high speed mode (and
associated sample formats like 8 channels with 24 bits at 96 kHz) on the
SB Audigy 2 NX.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:21:34 +02:00
Clemens Ladisch
0ac2ac0ad7 [ALSA] usb-audio: add support for an unknown Yamaha USB MIDI device
USB generic driver
Add a quirk for the Yamaha USB MIDI device with USB ID 0x103d.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:21:23 +02:00
Clemens Ladisch
b4d3f9d452 [ALSA] usb-audio - fix capture of non-48k sample rates on Audigy 2 NX
USB generic driver
On the SB Audigy 2 NX, capturing with sample rates that are not a
multiple of 48 kHz does not seem to work, so disable it.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:09:26 +02:00
Clemens Ladisch
573567e07b [ALSA] usb-audio - high speed audio support
USB generic driver
Add support for endpoints with bInterval > 1, and decoding of the
wMaxPacketSize field of high-speed endpoints.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-07-28 12:09:25 +02:00
Jesper Juhl
77933d7276 [PATCH] clean up inline static vs static inline
`gcc -W' likes to complain if the static keyword is not at the beginning of
the declaration.  This patch fixes all remaining occurrences of "inline
static" up with "static inline" in the entire kernel tree (140 occurrences in
47 files).

While making this change I came across a few lines with trailing whitespace
that I also fixed up, I have also added or removed a blank line or two here
and there, but there are no functional changes in the patch.

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 16:26:20 -07:00
Jesper Juhl
4d572776d4 [ALSA] Remove redundant NULL checks before kfree
Timer Midlevel,ALSA sequencer,ALSA<-OSS sequencer,Digigram VX core
I2C tea6330t,GUS Library,VIA82xx driver,VIA82xx-modem driver
CA0106 driver,CS46xx driver,EMU10K1/EMU10K2 driver,YMFPCI driver
Digigram VX Pocket driver,Common EMU synth,USB generic driver,USB USX2Y
Checking a pointer for NULL before calling kfree() on it is redundant,
kfree() deals with NULL pointers just fine.
This patch removes such checks from sound/

This patch also makes another, but closely related, change.
It avoids casting pointers about to be kfree()'ed.

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-06-22 12:27:43 +02:00
Clemens Ladisch
604cf49925 [ALSA] usb-audio - fix synchronization packet interval with Audigy 2 NX
USB generic driver
When a device does not provide the bRefresh field in its audio endpoint
descriptors, use the bInterval field instead.

Furthermore, increase the number of sync URBs for better queueing.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-05-29 10:11:03 +02:00
Clemens Ladisch
d3ff42fd2b [ALSA] usb-audio - claim all interfaces for Roland USB MIDI devices
USB generic driver
Many Roland USB MIDI devices have two interfaces that are currently not
used by the driver; claim them anyway.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2005-05-29 10:11:00 +02:00