git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
sound
/
oss
/
via82cxxx_audio.c
diff --git
a/sound/oss/via82cxxx_audio.c
b/sound/oss/via82cxxx_audio.c
index
b387e1e
..
1a921ee
100644
(file)
--- a/
sound/oss/via82cxxx_audio.c
+++ b/
sound/oss/via82cxxx_audio.c
@@
-35,9
+35,11
@@
#include <linux/smp_lock.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/smp_lock.h>
#include <linux/ioport.h>
#include <linux/delay.h>
+#include <linux/dma-mapping.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/uaccess.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
+
#include "sound_config.h"
#include "dev_table.h"
#include "mpu401.h"
#include "sound_config.h"
#include "dev_table.h"
#include "mpu401.h"
@@
-310,8
+312,8
@@
struct via_info {
int mixer_vol; /* 8233/35 volume - not yet implemented */
int mixer_vol; /* 8233/35 volume - not yet implemented */
- struct
semaphore syscall_sem
;
- struct
semaphore open_sem
;
+ struct
mutex syscall_mutex
;
+ struct
mutex open_mutex
;
/* The 8233/8235 have 4 DX audio channels, two record and
one six channel out. We bind ch_in to DX 1, ch_out to multichannel
/* The 8233/8235 have 4 DX audio channels, two record and
one six channel out. We bind ch_in to DX 1, ch_out to multichannel
@@
-504,10
+506,10
@@
static inline int via_syscall_down (struct via_info *card, int nonblock)
nonblock = 0;
if (nonblock) {
nonblock = 0;
if (nonblock) {
- if (
down_trylock (&card->syscall_sem
))
+ if (
!mutex_trylock(&card->syscall_mutex
))
return -EAGAIN;
} else {
return -EAGAIN;
} else {
- if (
down_interruptible (&card->syscall_sem
))
+ if (
mutex_lock_interruptible(&card->syscall_mutex
))
return -ERESTARTSYS;
}
return -ERESTARTSYS;
}
@@
-1608,7
+1610,7
@@
static int via_mixer_ioctl (struct inode *inode, struct file *file, unsigned int
#endif
rc = codec->mixer_ioctl(codec, cmd, arg);
#endif
rc = codec->mixer_ioctl(codec, cmd, arg);
-
up (&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
out:
DPRINTK ("EXIT, returning %d\n", rc);
out:
DPRINTK ("EXIT, returning %d\n", rc);
@@
-2227,7
+2229,7
@@
static int via_dsp_mmap(struct file *file, struct vm_area_struct *vma)
if (wr)
card->ch_out.is_mapped = 1;
if (wr)
card->ch_out.is_mapped = 1;
-
up (&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
rc = 0;
out:
rc = 0;
out:
@@
-2255,7
+2257,7
@@
handle_one_block:
/* Thomas Sailer:
* But also to ourselves, release semaphore if we do so */
if (need_resched()) {
/* Thomas Sailer:
* But also to ourselves, release semaphore if we do so */
if (need_resched()) {
-
up(&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
schedule ();
ret = via_syscall_down (card, nonblock);
if (ret)
schedule ();
ret = via_syscall_down (card, nonblock);
if (ret)
@@
-2285,7
+2287,7
@@
handle_one_block:
break;
}
break;
}
-
up(&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
DPRINTK ("Sleeping on block %d\n", n);
schedule();
DPRINTK ("Sleeping on block %d\n", n);
schedule();
@@
-2401,7
+2403,7
@@
static ssize_t via_dsp_read(struct file *file, char __user *buffer, size_t count
rc = via_dsp_do_read (card, buffer, count, nonblock);
out_up:
rc = via_dsp_do_read (card, buffer, count, nonblock);
out_up:
-
up (&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
out:
DPRINTK ("EXIT, returning %ld\n",(long) rc);
return rc;
out:
DPRINTK ("EXIT, returning %ld\n",(long) rc);
return rc;
@@
-2425,7
+2427,7
@@
handle_one_block:
/* Thomas Sailer:
* But also to ourselves, release semaphore if we do so */
if (need_resched()) {
/* Thomas Sailer:
* But also to ourselves, release semaphore if we do so */
if (need_resched()) {
-
up(&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
schedule ();
ret = via_syscall_down (card, nonblock);
if (ret)
schedule ();
ret = via_syscall_down (card, nonblock);
if (ret)
@@
-2455,7
+2457,7
@@
handle_one_block:
break;
}
break;
}
-
up(&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
DPRINTK ("Sleeping on page %d, tmp==%d, ir==%d\n", n, tmp, chan->is_record);
schedule();
DPRINTK ("Sleeping on page %d, tmp==%d, ir==%d\n", n, tmp, chan->is_record);
schedule();
@@
-2584,7
+2586,7
@@
static ssize_t via_dsp_write(struct file *file, const char __user *buffer, size_
rc = via_dsp_do_write (card, buffer, count, nonblock);
out_up:
rc = via_dsp_do_write (card, buffer, count, nonblock);
out_up:
-
up (&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
out:
DPRINTK ("EXIT, returning %ld\n",(long) rc);
return rc;
out:
DPRINTK ("EXIT, returning %ld\n",(long) rc);
return rc;
@@
-2633,7
+2635,7
@@
static unsigned int via_dsp_poll(struct file *file, struct poll_table_struct *wa
* Sleeps until all playback has been flushed to the audio
* hardware.
*
* Sleeps until all playback has been flushed to the audio
* hardware.
*
- * Locking: inside card->syscall_
sem
+ * Locking: inside card->syscall_
mutex
*/
static int via_dsp_drain_playback (struct via_info *card,
*/
static int via_dsp_drain_playback (struct via_info *card,
@@
-2691,7
+2693,7
@@
static int via_dsp_drain_playback (struct via_info *card,
printk (KERN_ERR "sleeping but not active\n");
#endif
printk (KERN_ERR "sleeping but not active\n");
#endif
-
up(&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
DPRINTK ("sleeping, nbufs=%d\n", atomic_read (&chan->n_frags));
schedule();
DPRINTK ("sleeping, nbufs=%d\n", atomic_read (&chan->n_frags));
schedule();
@@
-2747,7
+2749,7
@@
out:
*
* Handles SNDCTL_DSP_GETISPACE and SNDCTL_DSP_GETOSPACE.
*
*
* Handles SNDCTL_DSP_GETISPACE and SNDCTL_DSP_GETOSPACE.
*
- * Locking: inside card->syscall_
sem
+ * Locking: inside card->syscall_
mutex
*/
static int via_dsp_ioctl_space (struct via_info *card,
*/
static int via_dsp_ioctl_space (struct via_info *card,
@@
-2792,7
+2794,7
@@
static int via_dsp_ioctl_space (struct via_info *card,
*
* Handles SNDCTL_DSP_GETIPTR and SNDCTL_DSP_GETOPTR.
*
*
* Handles SNDCTL_DSP_GETIPTR and SNDCTL_DSP_GETOPTR.
*
- * Locking: inside card->syscall_
sem
+ * Locking: inside card->syscall_
mutex
*/
static int via_dsp_ioctl_ptr (struct via_info *card,
*/
static int via_dsp_ioctl_ptr (struct via_info *card,
@@
-3220,7
+3222,7
@@
static int via_dsp_ioctl (struct inode *inode, struct file *file,
break;
}
break;
}
-
up (&card->syscall_sem
);
+
mutex_unlock(&card->syscall_mutex
);
DPRINTK ("EXIT, returning %d\n", rc);
return rc;
}
DPRINTK ("EXIT, returning %d\n", rc);
return rc;
}
@@
-3263,12
+3265,12
@@
static int via_dsp_open (struct inode *inode, struct file *file)
match:
if (nonblock) {
match:
if (nonblock) {
- if (
down_trylock (&card->open_sem
)) {
+ if (
!mutex_trylock(&card->open_mutex
)) {
DPRINTK ("EXIT, returning -EAGAIN\n");
return -EAGAIN;
}
} else {
DPRINTK ("EXIT, returning -EAGAIN\n");
return -EAGAIN;
}
} else {
- if (
down_interruptible (&card->open_sem
)) {
+ if (
mutex_lock_interruptible(&card->open_mutex
)) {
DPRINTK ("EXIT, returning -ERESTARTSYS\n");
return -ERESTARTSYS;
}
DPRINTK ("EXIT, returning -ERESTARTSYS\n");
return -ERESTARTSYS;
}
@@
-3354,8
+3356,8
@@
static int via_dsp_release(struct inode *inode, struct file *file)
via_chan_buffer_free (card, &card->ch_in);
}
via_chan_buffer_free (card, &card->ch_in);
}
-
up (&card->syscall_sem
);
-
up (&card->open_sem
);
+
mutex_unlock(&card->syscall_mutex
);
+
mutex_unlock(&card->open_mutex
);
DPRINTK ("EXIT, returning 0\n");
return 0;
DPRINTK ("EXIT, returning 0\n");
return 0;
@@
-3391,10
+3393,10
@@
static int __devinit via_init_one (struct pci_dev *pdev, const struct pci_device
if (rc)
goto err_out_disable;
if (rc)
goto err_out_disable;
- rc = pci_set_dma_mask(pdev,
0xffffffffULL
);
+ rc = pci_set_dma_mask(pdev,
DMA_32BIT_MASK
);
if (rc)
goto err_out_res;
if (rc)
goto err_out_res;
- rc = pci_set_consistent_dma_mask(pdev,
0xffffffffULL
);
+ rc = pci_set_consistent_dma_mask(pdev,
DMA_32BIT_MASK
);
if (rc)
goto err_out_res;
if (rc)
goto err_out_res;
@@
-3413,8
+3415,8
@@
static int __devinit via_init_one (struct pci_dev *pdev, const struct pci_device
card->card_num = via_num_cards++;
spin_lock_init (&card->lock);
spin_lock_init (&card->ac97_lock);
card->card_num = via_num_cards++;
spin_lock_init (&card->lock);
spin_lock_init (&card->ac97_lock);
-
init_MUTEX (&card->syscall_sem
);
-
init_MUTEX (&card->open_sem
);
+
mutex_init(&card->syscall_mutex
);
+
mutex_init(&card->open_mutex
);
/* we must init these now, in case the intr handler needs them */
via_chan_init_defaults (card, &card->ch_out);
/* we must init these now, in case the intr handler needs them */
via_chan_init_defaults (card, &card->ch_out);