Commit 5a53763c authored by Jaroslav Kysela's avatar Jaroslav Kysela

ALSA CVS update - Takashi Iwai <tiwai@suse.de>

I2C lib core
- fixed sleep in lock.  use mutex for the locking.
parent cd5cd92f
......@@ -58,7 +58,7 @@ struct _snd_i2c_bus {
snd_card_t *card; /* card which I2C belongs to */
char name[32]; /* some useful label */
spinlock_t lock;
struct semaphore lock_mutex;
snd_i2c_bus_t *master; /* master bus when SCK/SCL is shared */
struct list_head buses; /* master: slave buses sharing SCK/SCL, slave: link list */
......@@ -84,15 +84,15 @@ int snd_i2c_device_free(snd_i2c_device_t *device);
static inline void snd_i2c_lock(snd_i2c_bus_t *bus) {
if (bus->master)
spin_lock(&bus->master->lock);
down(&bus->master->lock_mutex);
else
spin_lock(&bus->lock);
down(&bus->lock_mutex);
}
static inline void snd_i2c_unlock(snd_i2c_bus_t *bus) {
if (bus->master)
spin_unlock(&bus->master->lock);
up(&bus->master->lock_mutex);
else
spin_unlock(&bus->lock);
up(&bus->lock_mutex);
}
int snd_i2c_sendbytes(snd_i2c_device_t *device, unsigned char *bytes, int count);
......
......@@ -84,7 +84,7 @@ int snd_i2c_bus_create(snd_card_t *card, const char *name, snd_i2c_bus_t *master
bus = (snd_i2c_bus_t *)snd_magic_kcalloc(snd_i2c_bus_t, 0, GFP_KERNEL);
if (bus == NULL)
return -ENOMEM;
spin_lock_init(&bus->lock);
init_MUTEX(&bus->lock_mutex);
INIT_LIST_HEAD(&bus->devices);
INIT_LIST_HEAD(&bus->buses);
bus->card = card;
......
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