From b4a80dac3fe01613d5fc24733a96cc93ee7fbb54 Mon Sep 17 00:00:00 2001 From: Wei Ni Date: Tue, 11 Nov 2003 16:05:41 -0800 Subject: [PATCH] [PATCH] Legacy ALi5455 Audio Driver update We've resolved some bugs in legacy ALi5455 audio driver. --- sound/oss/ali5455.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/oss/ali5455.c b/sound/oss/ali5455.c index 804c1c35770e3..8a905b3a78fd3 100644 --- a/sound/oss/ali5455.c +++ b/sound/oss/ali5455.c @@ -1253,17 +1253,16 @@ static inline int ali_get_free_write_space(struct { struct dmabuf *dmabuf = &state->dmabuf; int free; - ali_update_ptr(state); - // catch underruns during playback + if (dmabuf->count < 0) { dmabuf->count = 0; dmabuf->swptr = dmabuf->hwptr; } - free = dmabuf->dmasize - dmabuf->count; - free -= (dmabuf->hwptr % dmabuf->fragsize); - if (free < 0) - return (0); - return (free); + free = dmabuf->dmasize - dmabuf->swptr; + if ((dmabuf->count + free) > dmabuf->dmasize){ + free = dmabuf->dmasize - dmabuf->count; + } + return free; } static inline int ali_get_available_read_data(struct @@ -1860,6 +1859,7 @@ static ssize_t ali_write(struct file *file, NOTHING we can do to prevent it. */ /* FIXME - do timeout handling here !! */ + schedule_timeout(tmo >= 2 ? tmo : 2); if (signal_pending(current)) { if (!ret) -- 2.53.0