From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
"Theodore Ts'o" <tytso@mit.edu>,
Randy Dunlap <rdunlap@xenotime.net>,
Dave Jones <davej@redhat.com>,
Chuck Wolber <chuckw@quantumlinux.com>,
torvalds@osdl.org, akpm@osdl.org, alan@lxorguk.ukuu.org.uk,
clemens@ladisch.de, tiwai@suse.de,
alsa-devel@lists.sourceforge.net
Subject: [patch 01/12] usb-audio: don't use empty packets at start of playback
Date: Fri, 27 Jan 2006 18:20:36 -0800 [thread overview]
Message-ID: <20060128022036.GB17001@kroah.com> (raw)
In-Reply-To: <20060128022023.GA17001@kroah.com>
[-- Attachment #1: usb-audio-dont-use-empty-packets-at-start-of-playback.patch --]
[-- Type: text/plain, Size: 2247 bytes --]
2.6.15.2 -stable review patch. If anyone has any objections, please let
us know.
------------------
From: Clemens Ladisch <clemens@ladisch.de>
Some widespread USB interface chips with adaptive iso endpoints hang
after receiving a series of empty packets when they expect data. This
completely disables audio playback on those devices. To avoid this, we
have to send packets containing silence (zero samples) instead.
ALSA bug: http://bugtrack.alsa-project.org/alsa-bug/view.php?id=1585
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
sound/usb/usbaudio.c | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
--- linux-2.6.15.1.orig/sound/usb/usbaudio.c
+++ linux-2.6.15.1/sound/usb/usbaudio.c
@@ -480,22 +480,38 @@ static int retire_playback_sync_urb_hs(s
/*
* Prepare urb for streaming before playback starts.
*
- * We don't care about (or have) any data, so we just send a transfer delimiter.
+ * We don't yet have data, so we send a frame of silence.
*/
static int prepare_startup_playback_urb(snd_usb_substream_t *subs,
snd_pcm_runtime_t *runtime,
struct urb *urb)
{
- unsigned int i;
+ unsigned int i, offs, counts;
snd_urb_ctx_t *ctx = urb->context;
+ int stride = runtime->frame_bits >> 3;
+ offs = 0;
urb->dev = ctx->subs->dev;
urb->number_of_packets = subs->packs_per_ms;
for (i = 0; i < subs->packs_per_ms; ++i) {
- urb->iso_frame_desc[i].offset = 0;
- urb->iso_frame_desc[i].length = 0;
+ /* calculate the size of a packet */
+ if (subs->fill_max)
+ counts = subs->maxframesize; /* fixed */
+ else {
+ subs->phase = (subs->phase & 0xffff)
+ + (subs->freqm << subs->datainterval);
+ counts = subs->phase >> 16;
+ if (counts > subs->maxframesize)
+ counts = subs->maxframesize;
+ }
+ urb->iso_frame_desc[i].offset = offs * stride;
+ urb->iso_frame_desc[i].length = counts * stride;
+ offs += counts;
}
- urb->transfer_buffer_length = 0;
+ urb->transfer_buffer_length = offs * stride;
+ memset(urb->transfer_buffer,
+ subs->cur_audiofmt->format == SNDRV_PCM_FORMAT_U8 ? 0x80 : 0,
+ offs * stride);
return 0;
}
--
next prev parent reply other threads:[~2006-01-28 2:26 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20060128020629.908825000@press.kroah.org>
2006-01-28 2:20 ` [patch 00/12] 2.6.15.2 -stable review Greg KH
2006-01-28 2:20 ` Greg KH [this message]
2006-01-28 2:20 ` [patch 02/12] [BLOCK] Kill blk_attempt_remerge() Greg KH
2006-01-28 2:20 ` [patch 03/12] Input: HID - fix an oops in PID initialization code Greg KH
2006-01-28 2:20 ` [patch 04/12] Fix double decrement of mqueue_mnt->mnt_count in sys_mq_open (CVE-2005-3356) Greg KH
2006-01-28 2:20 ` [patch 05/12] Fix oops in ufs_fill_super at mount time Greg KH
2006-01-28 2:21 ` [patch 06/12] elevator=as back-compatibility Greg KH
2006-01-28 19:19 ` Jens Axboe
2006-01-31 7:09 ` [stable] " Greg KH
2006-01-28 2:21 ` [patch 07/12] Fix timekeeping on sparc64 ultra-IIe machines Greg KH
2006-01-28 2:21 ` [patch 08/12] [NET]: Make second arg to skb_reserved() signed Greg KH
2006-01-28 2:21 ` [patch 09/12] Mask off GFP flags before swiotlb_alloc_coherent Greg KH
2006-01-28 2:33 ` Andi Kleen
2006-01-28 3:49 ` Andrew Morton
2006-01-28 6:04 ` Andi Kleen
2006-01-28 2:21 ` [patch 10/12] Someone broke reiserfs v3 mount options and this fixes it Greg KH
2006-01-28 2:21 ` [patch 11/12] Fix i2o_scsi oops on abort Greg KH
2006-01-28 2:21 ` [patch 12/12] Fix mkiss locking bug Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060128022036.GB17001@kroah.com \
--to=gregkh@suse.de \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=alsa-devel@lists.sourceforge.net \
--cc=chuckw@quantumlinux.com \
--cc=clemens@ladisch.de \
--cc=davej@redhat.com \
--cc=jmforbes@linuxtx.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rdunlap@xenotime.net \
--cc=stable@kernel.org \
--cc=tiwai@suse.de \
--cc=torvalds@osdl.org \
--cc=tytso@mit.edu \
--cc=zwane@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®