Commit 867b3e77 authored by Jean-Paul Saman's avatar Jean-Paul Saman

davinci-audio: use mutex iso semaphore

parent 443bdfed
......@@ -24,6 +24,7 @@
#include <linux/sound.h>
#include <linux/soundcard.h>
#include <linux/clk.h>
#include <sound/davincisound.h>
#include <asm/gpio.h>
......@@ -256,7 +257,6 @@ static audio_state_t aic32_state = {
.hw_remove = __exit_p(davinci_aic32_remove),
.hw_suspend = davinci_aic32_suspend,
.hw_resume = davinci_aic32_resume,
.sem = __SEMAPHORE_INIT(aic32_state.sem, 1),
};
/* This will be defined in the audio.h */
......@@ -1308,7 +1308,7 @@ static int davinci_aic32_probe(void)
aic32_local.volume = DEFAULT_OUTPUT_VOLUME;
aic32_local.line = DEFAULT_INPUT_VOLUME;
/* either of SOUND_MASK_LINE/SOUND_MASK_MIC */
aic32_local.recsrc = SOUND_MASK_LINE;
aic32_local.recsrc = SOUND_MASK_LINE;
aic32_local.igain = DEFAULT_INPUT_IGAIN;
aic32_local.ogain = DEFAULT_INPUT_OGAIN;
aic32_local.nochan = STEREO;
......
......@@ -238,7 +238,6 @@ static audio_state_t aic33_state = {
.hw_remove = __exit_p(davinci_aic33_remove),
.hw_suspend = davinci_aic33_suspend,
.hw_resume = davinci_aic33_resume,
.sem = __SEMAPHORE_INIT(aic33_state.sem, 1),
};
/* This will be defined in the audio.h */
......
......@@ -47,11 +47,11 @@
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/completion.h>
#include <linux/mutex.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/hardware.h>
#include <asm/semaphore.h>
#include "davinci-audio-dma-intfc.h"
#include "davinci-audio.h"
......@@ -438,7 +438,7 @@ int audio_register_codec(audio_state_t * codec_state)
}
memcpy(&audio_state, codec_state, sizeof(audio_state_t));
sema_init(&audio_state.sem, 1);
mutex_init(&audio_state.mutex);
ret = platform_device_register(&davinci_audio_device);
if (ret != 0) {
......@@ -487,6 +487,7 @@ int audio_unregister_codec(audio_state_t * codec_state)
platform_driver_unregister(&davinci_audio_driver);
platform_device_unregister(&davinci_audio_device);
mutex_destroy(&audio_state.mutex);
memset(&audio_state, 0, sizeof(audio_state_t));
FN_OUT(0);
......@@ -1051,11 +1052,11 @@ static int audio_open(struct inode *inode, struct file *file)
}
if (file->f_flags & O_NONBLOCK) {
if(down_trylock(&state->sem))
if (mutex_trylock(&state->mutex) == 0)
return -EAGAIN;
}
else
down(&state->sem);
mutex_lock(&state->mutex);
/* access control */
err = -ENODEV;
......@@ -1126,7 +1127,7 @@ static int audio_open(struct inode *inode, struct file *file)
err = 0;
out:
up(&state->sem);
mutex_unlock(&state->mutex);
if (err) {
module_put(state->owner);
module_put(THIS_MODULE);
......@@ -1148,7 +1149,7 @@ static int audio_release(struct inode *inode, struct file *file)
FN_IN;
down(&state->sem);
mutex_lock(&state->mutex);
if (file->f_mode & FMODE_READ) {
audio_discard_buf(is);
......@@ -1174,7 +1175,7 @@ static int audio_release(struct inode *inode, struct file *file)
state->wr_ref = 0;
}
up(&state->sem);
mutex_unlock(&state->mutex);
module_put(state->owner);
module_put(THIS_MODULE);
......
......@@ -92,7 +92,7 @@ typedef struct {
int (*hw_suspend) (void);
int (*hw_resume) (void);
struct pm_dev *pm_dev;
struct semaphore sem; /* to protect against races in attach() */
struct mutex mutex; /* to protect against races in attach() */
} audio_state_t;
#ifdef AUDIO_PM
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment