[alsa-devel] [PATCH] wss_lib: remove open_mutex

Krzysztof Helt krzysztof.h1 at poczta.fm
Sat Aug 2 07:48:46 CEST 2008


From: Krzysztof Helt <krzysztof.h1 at wp.pl>

Open and close operations are mutexed in higher layer
so remove open_mutex inside the driver.

Signed-off-by: Krzysztof Helt <krzysztof.h1 at wp.pl>
---

diff -urp linux-alsa/include/sound/wss.h linux-mm/include/sound/wss.h
--- linux-alsa/include/sound/wss.h	2008-07-31 20:39:54.000000000 +0200
+++ linux-mm/include/sound/wss.h	2008-08-02 07:42:41.256261329 +0200
@@ -110,7 +110,6 @@ struct snd_wss {
 
 	spinlock_t reg_lock;
 	struct mutex mce_mutex;
-	struct mutex open_mutex;
 
 	int (*rate_constraint) (struct snd_pcm_runtime *runtime);
 	void (*set_playback_format) (struct snd_wss *chip,
diff -urp linux-alsa/sound/isa/wss/wss_lib.c linux-mm/sound/isa/wss/wss_lib.c
--- linux-alsa/sound/isa/wss/wss_lib.c	2008-07-31 20:39:59.000000000 +0200
+++ linux-mm/sound/isa/wss/wss_lib.c	2008-08-02 07:42:41.352275508 +0200
@@ -837,15 +837,11 @@ static int snd_wss_open(struct snd_wss *
 {
 	unsigned long flags;
 
-	mutex_lock(&chip->open_mutex);
 	if ((chip->mode & mode) ||
-	    ((chip->mode & WSS_MODE_OPEN) && chip->single_dma)) {
-		mutex_unlock(&chip->open_mutex);
+	    ((chip->mode & WSS_MODE_OPEN) && chip->single_dma))
 		return -EAGAIN;
-	}
 	if (chip->mode & WSS_MODE_OPEN) {
 		chip->mode |= mode;
-		mutex_unlock(&chip->open_mutex);
 		return 0;
 	}
 	/* ok. now enable and ack CODEC IRQ */
@@ -871,7 +867,6 @@ static int snd_wss_open(struct snd_wss *
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 
 	chip->mode = mode;
-	mutex_unlock(&chip->open_mutex);
 	return 0;
 }
 
@@ -879,10 +874,8 @@ static void snd_wss_close(struct snd_wss
 {
 	unsigned long flags;
 
-	mutex_lock(&chip->open_mutex);
 	chip->mode &= ~mode;
 	if (chip->mode & WSS_MODE_OPEN) {
-		mutex_unlock(&chip->open_mutex);
 		return;
 	}
 	snd_wss_calibrate_mute(chip, 1);
@@ -922,7 +915,6 @@ static void snd_wss_close(struct snd_wss
 	snd_wss_calibrate_mute(chip, 0);
 
 	chip->mode = 0;
-	mutex_unlock(&chip->open_mutex);
 }
 
 /*
@@ -1712,7 +1704,6 @@ static int snd_wss_new(struct snd_card *
 
 	spin_lock_init(&chip->reg_lock);
 	mutex_init(&chip->mce_mutex);
-	mutex_init(&chip->open_mutex);
 	chip->card = card;
 	chip->rate_constraint = snd_wss_xrate;
 	chip->set_playback_format = snd_wss_playback_format;
@@ -1868,7 +1859,6 @@ int snd_wss_pcm(struct snd_wss *chip, in
 
 	spin_lock_init(&chip->reg_lock);
 	mutex_init(&chip->mce_mutex);
-	mutex_init(&chip->open_mutex);
 
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_wss_playback_ops);
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_wss_capture_ops);

----------------------------------------------------------------------
Najciekawsze miejsca w Polsce i na swiecie!
Zobacz >>> http://link.interia.pl/f1e60



More information about the Alsa-devel mailing list