aboutsummaryrefslogtreecommitdiffstats
path: root/sound/mips/au1x00.c
diff options
context:
space:
mode:
authorKonstantin Baydarov <kbaidarov@ru.mvista.com>2005-10-27 11:25:02 -0400
committerJaroslav Kysela <perex@suse.cz>2005-11-04 07:20:26 -0500
commit708f997169d5674177450f25ef3ac6b4f2562690 (patch)
tree1c1fe8dded6390d9d5336ecea7928509bf33ce8f /sound/mips/au1x00.c
parent6d6f9156209892bc0cdc3354394ac947db5e32f1 (diff)
[ALSA] AMD Au1x00 driver: buggy spinlocks
Modules: MIPS AU1x00 driver AMD Au1x00 ALSA driver fails compilation with the alternate spinlock implementation because it doesn't do locking/unlocking correctly in some places (passes spinlock by value). Signed-off-by: Konstantin Baydarov <kbaidarov@ru.mvista.com> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/mips/au1x00.c')
-rw-r--r--sound/mips/au1x00.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sound/mips/au1x00.c b/sound/mips/au1x00.c
index 2df78a64c7f2..d08a42b24b1f 100644
--- a/sound/mips/au1x00.c
+++ b/sound/mips/au1x00.c
@@ -472,7 +472,7 @@ snd_au1000_ac97_read(ac97_t *ac97, unsigned short reg)
472 u32 volatile cmd; 472 u32 volatile cmd;
473 u16 volatile data; 473 u16 volatile data;
474 int i; 474 int i;
475 spin_lock(au1000->ac97_lock); 475 spin_lock(&au1000->ac97_lock);
476/* would rather use the interupt than this polling but it works and I can't 476/* would rather use the interupt than this polling but it works and I can't
477get the interupt driven case to work efficiently */ 477get the interupt driven case to work efficiently */
478 for (i = 0; i < 0x5000; i++) 478 for (i = 0; i < 0x5000; i++)
@@ -495,7 +495,7 @@ get the interupt driven case to work efficiently */
495 } 495 }
496 496
497 data = au1000->ac97_ioport->cmd & 0xffff; 497 data = au1000->ac97_ioport->cmd & 0xffff;
498 spin_unlock(au1000->ac97_lock); 498 spin_unlock(&au1000->ac97_lock);
499 499
500 return data; 500 return data;
501 501
@@ -507,7 +507,7 @@ snd_au1000_ac97_write(ac97_t *ac97, unsigned short reg, unsigned short val)
507{ 507{
508 u32 cmd; 508 u32 cmd;
509 int i; 509 int i;
510 spin_lock(au1000->ac97_lock); 510 spin_lock(&au1000->ac97_lock);
511/* would rather use the interupt than this polling but it works and I can't 511/* would rather use the interupt than this polling but it works and I can't
512get the interupt driven case to work efficiently */ 512get the interupt driven case to work efficiently */
513 for (i = 0; i < 0x5000; i++) 513 for (i = 0; i < 0x5000; i++)
@@ -520,7 +520,7 @@ get the interupt driven case to work efficiently */
520 cmd &= ~AC97C_READ; 520 cmd &= ~AC97C_READ;
521 cmd |= ((u32) val << AC97C_WD_BIT); 521 cmd |= ((u32) val << AC97C_WD_BIT);
522 au1000->ac97_ioport->cmd = cmd; 522 au1000->ac97_ioport->cmd = cmd;
523 spin_unlock(au1000->ac97_lock); 523 spin_unlock(&au1000->ac97_lock);
524} 524}
525static void 525static void
526snd_au1000_ac97_free(ac97_t *ac97) 526snd_au1000_ac97_free(ac97_t *ac97)