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 core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
sound
/
oss
/
swarm_cs4297a.c
diff --git
a/sound/oss/swarm_cs4297a.c
b/sound/oss/swarm_cs4297a.c
index
a1de9dc
..
471c274
100644
(file)
--- a/
sound/oss/swarm_cs4297a.c
+++ b/
sound/oss/swarm_cs4297a.c
@@
-76,6
+76,7
@@
#include <linux/init.h>
#include <linux/poll.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/poll.h>
#include <linux/smp_lock.h>
+#include <linux/mutex.h>
#include <asm/byteorder.h>
#include <asm/dma.h>
#include <asm/byteorder.h>
#include <asm/dma.h>
@@
-153,8
+154,8
@@
static void start_adc(struct cs4297a_state *s);
#if CSDEBUG
static unsigned long cs_debuglevel = 4; // levels range from 1-9
static unsigned long cs_debugmask = CS_INIT /*| CS_IOCTL*/;
#if CSDEBUG
static unsigned long cs_debuglevel = 4; // levels range from 1-9
static unsigned long cs_debugmask = CS_INIT /*| CS_IOCTL*/;
-
MODULE_PARM(cs_debuglevel, "i"
);
-
MODULE_PARM(cs_debugmask, "i"
);
+
module_param(cs_debuglevel, int, 0
);
+
module_param(cs_debugmask, int, 0
);
#endif
#define CS_TRUE 1
#define CS_FALSE 0
#endif
#define CS_TRUE 1
#define CS_FALSE 0
@@
-291,9
+292,9
@@
struct cs4297a_state {
unsigned conversion:1; // conversion from 16 to 8 bit in progress
unsigned ena;
spinlock_t lock;
unsigned conversion:1; // conversion from 16 to 8 bit in progress
unsigned ena;
spinlock_t lock;
- struct
semaphore open_sem
;
- struct
semaphore
open_sem_adc;
- struct
semaphore
open_sem_dac;
+ struct
mutex open_mutex
;
+ struct
mutex
open_sem_adc;
+ struct
mutex
open_sem_dac;
mode_t open_mode;
wait_queue_head_t open_wait;
wait_queue_head_t open_wait_adc;
mode_t open_mode;
wait_queue_head_t open_wait;
wait_queue_head_t open_wait_adc;
@@
-2352,20
+2353,20
@@
static int cs4297a_release(struct inode *inode, struct file *file)
if (file->f_mode & FMODE_WRITE) {
drain_dac(s, file->f_flags & O_NONBLOCK);
if (file->f_mode & FMODE_WRITE) {
drain_dac(s, file->f_flags & O_NONBLOCK);
-
down
(&s->open_sem_dac);
+
mutex_lock
(&s->open_sem_dac);
stop_dac(s);
dealloc_dmabuf(s, &s->dma_dac);
s->open_mode &= ~FMODE_WRITE;
stop_dac(s);
dealloc_dmabuf(s, &s->dma_dac);
s->open_mode &= ~FMODE_WRITE;
-
up
(&s->open_sem_dac);
+
mutex_unlock
(&s->open_sem_dac);
wake_up(&s->open_wait_dac);
}
if (file->f_mode & FMODE_READ) {
drain_adc(s, file->f_flags & O_NONBLOCK);
wake_up(&s->open_wait_dac);
}
if (file->f_mode & FMODE_READ) {
drain_adc(s, file->f_flags & O_NONBLOCK);
-
down
(&s->open_sem_adc);
+
mutex_lock
(&s->open_sem_adc);
stop_adc(s);
dealloc_dmabuf(s, &s->dma_adc);
s->open_mode &= ~FMODE_READ;
stop_adc(s);
dealloc_dmabuf(s, &s->dma_adc);
s->open_mode &= ~FMODE_READ;
-
up
(&s->open_sem_adc);
+
mutex_unlock
(&s->open_sem_adc);
wake_up(&s->open_wait_adc);
}
return 0;
wake_up(&s->open_wait_adc);
}
return 0;
@@
-2413,37
+2414,37
@@
static int cs4297a_open(struct inode *inode, struct file *file)
;
}
;
}
-
down
(&s->open_sem_dac);
+
mutex_lock
(&s->open_sem_dac);
while (s->open_mode & FMODE_WRITE) {
if (file->f_flags & O_NONBLOCK) {
while (s->open_mode & FMODE_WRITE) {
if (file->f_flags & O_NONBLOCK) {
-
up
(&s->open_sem_dac);
+
mutex_unlock
(&s->open_sem_dac);
return -EBUSY;
}
return -EBUSY;
}
-
up
(&s->open_sem_dac);
+
mutex_unlock
(&s->open_sem_dac);
interruptible_sleep_on(&s->open_wait_dac);
if (signal_pending(current)) {
printk("open - sig pending\n");
return -ERESTARTSYS;
}
interruptible_sleep_on(&s->open_wait_dac);
if (signal_pending(current)) {
printk("open - sig pending\n");
return -ERESTARTSYS;
}
-
down
(&s->open_sem_dac);
+
mutex_lock
(&s->open_sem_dac);
}
}
if (file->f_mode & FMODE_READ) {
}
}
if (file->f_mode & FMODE_READ) {
-
down
(&s->open_sem_adc);
+
mutex_lock
(&s->open_sem_adc);
while (s->open_mode & FMODE_READ) {
if (file->f_flags & O_NONBLOCK) {
while (s->open_mode & FMODE_READ) {
if (file->f_flags & O_NONBLOCK) {
-
up
(&s->open_sem_adc);
+
mutex_unlock
(&s->open_sem_adc);
return -EBUSY;
}
return -EBUSY;
}
-
up
(&s->open_sem_adc);
+
mutex_unlock
(&s->open_sem_adc);
interruptible_sleep_on(&s->open_wait_adc);
if (signal_pending(current)) {
printk("open - sig pending\n");
return -ERESTARTSYS;
}
interruptible_sleep_on(&s->open_wait_adc);
if (signal_pending(current)) {
printk("open - sig pending\n");
return -ERESTARTSYS;
}
-
down
(&s->open_sem_adc);
+
mutex_lock
(&s->open_sem_adc);
}
}
s->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE);
}
}
s->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE);
@@
-2456,7
+2457,7
@@
static int cs4297a_open(struct inode *inode, struct file *file)
s->ena &= ~FMODE_READ;
s->dma_adc.ossfragshift = s->dma_adc.ossmaxfrags =
s->dma_adc.subdivision = 0;
s->ena &= ~FMODE_READ;
s->dma_adc.ossfragshift = s->dma_adc.ossmaxfrags =
s->dma_adc.subdivision = 0;
-
up
(&s->open_sem_adc);
+
mutex_unlock
(&s->open_sem_adc);
if (prog_dmabuf_adc(s)) {
CS_DBGOUT(CS_OPEN | CS_ERROR, 2, printk(KERN_ERR
if (prog_dmabuf_adc(s)) {
CS_DBGOUT(CS_OPEN | CS_ERROR, 2, printk(KERN_ERR
@@
-2474,7
+2475,7
@@
static int cs4297a_open(struct inode *inode, struct file *file)
s->ena &= ~FMODE_WRITE;
s->dma_dac.ossfragshift = s->dma_dac.ossmaxfrags =
s->dma_dac.subdivision = 0;
s->ena &= ~FMODE_WRITE;
s->dma_dac.ossfragshift = s->dma_dac.ossmaxfrags =
s->dma_dac.subdivision = 0;
-
up
(&s->open_sem_dac);
+
mutex_unlock
(&s->open_sem_dac);
if (prog_dmabuf_dac(s)) {
CS_DBGOUT(CS_OPEN | CS_ERROR, 2, printk(KERN_ERR
if (prog_dmabuf_dac(s)) {
CS_DBGOUT(CS_OPEN | CS_ERROR, 2, printk(KERN_ERR
@@
-2504,7
+2505,7
@@
static /*const */ struct file_operations cs4297a_audio_fops = {
.release = cs4297a_release,
};
.release = cs4297a_release,
};
-static void cs4297a_interrupt(int irq, void *dev_id
, struct pt_regs *regs
)
+static void cs4297a_interrupt(int irq, void *dev_id)
{
struct cs4297a_state *s = (struct cs4297a_state *) dev_id;
u32 status;
{
struct cs4297a_state *s = (struct cs4297a_state *) dev_id;
u32 status;
@@
-2631,8
+2632,8
@@
static int __init cs4297a_init(void)
init_waitqueue_head(&s->open_wait);
init_waitqueue_head(&s->open_wait_adc);
init_waitqueue_head(&s->open_wait_dac);
init_waitqueue_head(&s->open_wait);
init_waitqueue_head(&s->open_wait_adc);
init_waitqueue_head(&s->open_wait_dac);
-
init_MUTEX
(&s->open_sem_adc);
-
init_MUTEX
(&s->open_sem_dac);
+
mutex_init
(&s->open_sem_adc);
+
mutex_init
(&s->open_sem_dac);
spin_lock_init(&s->lock);
s->irq = K_INT_SER_1;
spin_lock_init(&s->lock);
s->irq = K_INT_SER_1;