There are some files inside alsa-driver Version 0.9.5, which do not compile for an SMP Kernel because of some mistypings with spinlock Variables.
1. i2c/other/ak4117.c doesn't compile because of incompatible types
This is due to a incorrect definition of the lock variable in ak4117
2. pcmcia/pdaudiocf/pdaudiocf_core.c doesn't compile due to the use of undefined spinlock variables. I changed that, but I'm not quite if I did the right thing
3. pcmcia/pdaudiocf/pdaudiocf_pcm.c doesn't compile because of a typo with spinlock Variables.
I append my patch against this.
Sincerely, Klaus Steinberger
-- Klaus Steinberger Maier-Leibnitz Labor Phone: (+49 89)289 14287 Am Coulombwall 6, D-85748 Garching, Germany FAX: (+49 89)289 14280 EMail: [EMAIL PROTECTED] URL: http://www.physik.uni-muenchen.de/~k2/
In a world without Walls and Fences, who needs Windows and Gates
--- alsa-driver-0.9.5/include/ak4117.h.spinlock_t 2003-07-15 13:05:22.000000000
+0200
+++ alsa-driver-0.9.5/include/ak4117.h 2003-07-15 13:05:37.000000000 +0200
@@ -163,7 +163,7 @@
ak4117_read_t * read;
void * private_data;
unsigned int init: 1;
- spinlock_t * lock;
+ spinlock_t lock;
unsigned char regmap[5];
snd_kcontrol_t *kctls[AK4117_CONTROLS];
snd_pcm_substream_t *substream;
--- alsa-driver-0.9.5/pcmcia/pdaudiocf/pdaudiocf_core.c.spinlock_t 2003-07-15
13:42:27.000000000 +0200
+++ alsa-driver-0.9.5/pcmcia/pdaudiocf/pdaudiocf_core.c 2003-07-15 13:42:39.000000000
+0200
@@ -133,8 +133,7 @@
if (chip == NULL)
return NULL;
chip->card = card;
- spin_lock_init(&chip->lock);
- spin_lock_init(&chip->irq_lock);
+ spin_lock_init(&chip->reg_lock);
spin_lock_init(&chip->ak4117_lock);
tasklet_init(&chip->tq, pdacf_tasklet, (unsigned long)chip);
card->private_data = chip;
--- alsa-driver-0.9.5/pcmcia/pdaudiocf/pdaudiocf_pcm.c.spinlock_t 2003-07-15
13:43:56.000000000 +0200
+++ alsa-driver-0.9.5/pcmcia/pdaudiocf/pdaudiocf_pcm.c 2003-07-15 13:44:13.000000000
+0200
@@ -126,7 +126,7 @@
tmp |= val;
pdacf_reg_write(chip, PDAUDIOCF_REG_SCR, tmp);
__end:
- spin_unlock(&chip_reg_lock);
+ spin_unlock(&chip->reg_lock);
if (cmd == SNDRV_PCM_TRIGGER_STOP)
pdacf_reinit(chip, 0);
snd_ak4117_check_rate_and_errors(chip->ak4117, AK4117_CHECK_NO_RATE);
