mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
[ALSA] semaphore -> mutex (driver part)
Semaphore to mutex conversion. The conversion was generated via scripts, and the result was validated automatically via a script as well. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
1a60d4c5a0
commit
ef9f0a42db
@ -113,7 +113,7 @@ struct snd_emux {
|
|||||||
struct snd_emux_voice *voices; /* Voices (EMU 'channel') */
|
struct snd_emux_voice *voices; /* Voices (EMU 'channel') */
|
||||||
int use_time; /* allocation counter */
|
int use_time; /* allocation counter */
|
||||||
spinlock_t voice_lock; /* Lock for voice access */
|
spinlock_t voice_lock; /* Lock for voice access */
|
||||||
struct semaphore register_mutex;
|
struct mutex register_mutex;
|
||||||
int client; /* For the sequencer client */
|
int client; /* For the sequencer client */
|
||||||
int ports[SNDRV_EMUX_MAX_PORTS]; /* The ports for this device */
|
int ports[SNDRV_EMUX_MAX_PORTS]; /* The ports for this device */
|
||||||
struct snd_emux_port *portptrs[SNDRV_EMUX_MAX_PORTS];
|
struct snd_emux_port *portptrs[SNDRV_EMUX_MAX_PORTS];
|
||||||
|
@ -55,7 +55,7 @@ struct snd_i2c_bus {
|
|||||||
struct snd_card *card; /* card which I2C belongs to */
|
struct snd_card *card; /* card which I2C belongs to */
|
||||||
char name[32]; /* some useful label */
|
char name[32]; /* some useful label */
|
||||||
|
|
||||||
struct semaphore lock_mutex;
|
struct mutex lock_mutex;
|
||||||
|
|
||||||
struct snd_i2c_bus *master; /* master bus when SCK/SCL is shared */
|
struct snd_i2c_bus *master; /* master bus when SCK/SCL is shared */
|
||||||
struct list_head buses; /* master: slave buses sharing SCK/SCL, slave: link list */
|
struct list_head buses; /* master: slave buses sharing SCK/SCL, slave: link list */
|
||||||
@ -84,17 +84,17 @@ int snd_i2c_device_free(struct snd_i2c_device *device);
|
|||||||
static inline void snd_i2c_lock(struct snd_i2c_bus *bus)
|
static inline void snd_i2c_lock(struct snd_i2c_bus *bus)
|
||||||
{
|
{
|
||||||
if (bus->master)
|
if (bus->master)
|
||||||
down(&bus->master->lock_mutex);
|
mutex_lock(&bus->master->lock_mutex);
|
||||||
else
|
else
|
||||||
down(&bus->lock_mutex);
|
mutex_lock(&bus->lock_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void snd_i2c_unlock(struct snd_i2c_bus *bus)
|
static inline void snd_i2c_unlock(struct snd_i2c_bus *bus)
|
||||||
{
|
{
|
||||||
if (bus->master)
|
if (bus->master)
|
||||||
up(&bus->master->lock_mutex);
|
mutex_unlock(&bus->master->lock_mutex);
|
||||||
else
|
else
|
||||||
up(&bus->lock_mutex);
|
mutex_unlock(&bus->lock_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
int snd_i2c_sendbytes(struct snd_i2c_device *device, unsigned char *bytes, int count);
|
int snd_i2c_sendbytes(struct snd_i2c_device *device, unsigned char *bytes, int count);
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
|
#include <linux/mutex.h>
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "hwdep.h"
|
#include "hwdep.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
@ -312,7 +313,7 @@ struct snd_opl3 {
|
|||||||
int sys_timer_status; /* system timer run status */
|
int sys_timer_status; /* system timer run status */
|
||||||
spinlock_t sys_timer_lock; /* Lock for system timer access */
|
spinlock_t sys_timer_lock; /* Lock for system timer access */
|
||||||
#endif
|
#endif
|
||||||
struct semaphore access_mutex; /* locking */
|
struct mutex access_mutex; /* locking */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* opl3.c */
|
/* opl3.c */
|
||||||
|
@ -93,7 +93,7 @@ struct snd_sf_list {
|
|||||||
int sample_locked; /* locked time for sample */
|
int sample_locked; /* locked time for sample */
|
||||||
struct snd_sf_callback callback; /* callback functions */
|
struct snd_sf_callback callback; /* callback functions */
|
||||||
int presets_locked;
|
int presets_locked;
|
||||||
struct semaphore presets_mutex;
|
struct mutex presets_mutex;
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
struct snd_util_memhdr *memhdr;
|
struct snd_util_memhdr *memhdr;
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#ifndef __SOUND_UTIL_MEM_H
|
#ifndef __SOUND_UTIL_MEM_H
|
||||||
#define __SOUND_UTIL_MEM_H
|
#define __SOUND_UTIL_MEM_H
|
||||||
|
|
||||||
|
#include <linux/mutex.h>
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2000 Takashi Iwai <tiwai@suse.de>
|
* Copyright (C) 2000 Takashi Iwai <tiwai@suse.de>
|
||||||
*
|
*
|
||||||
@ -40,7 +42,7 @@ struct snd_util_memhdr {
|
|||||||
int nblocks; /* # of allocated blocks */
|
int nblocks; /* # of allocated blocks */
|
||||||
unsigned int used; /* used memory size */
|
unsigned int used; /* used memory size */
|
||||||
int block_extra_size; /* extra data size of chunk */
|
int block_extra_size; /* extra data size of chunk */
|
||||||
struct semaphore block_mutex; /* lock */
|
struct mutex block_mutex; /* lock */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -206,7 +206,7 @@ struct vx_core {
|
|||||||
int audio_monitor[4]; /* playback hw-monitor level */
|
int audio_monitor[4]; /* playback hw-monitor level */
|
||||||
unsigned char audio_monitor_active[4]; /* playback hw-monitor mute/unmute */
|
unsigned char audio_monitor_active[4]; /* playback hw-monitor mute/unmute */
|
||||||
|
|
||||||
struct semaphore mixer_mutex;
|
struct mutex mixer_mutex;
|
||||||
|
|
||||||
const struct firmware *firmware[4]; /* loaded firmware data */
|
const struct firmware *firmware[4]; /* loaded firmware data */
|
||||||
};
|
};
|
||||||
|
@ -358,7 +358,7 @@ int snd_opl3_new(struct snd_card *card,
|
|||||||
opl3->hardware = hardware;
|
opl3->hardware = hardware;
|
||||||
spin_lock_init(&opl3->reg_lock);
|
spin_lock_init(&opl3->reg_lock);
|
||||||
spin_lock_init(&opl3->timer_lock);
|
spin_lock_init(&opl3->timer_lock);
|
||||||
init_MUTEX(&opl3->access_mutex);
|
mutex_init(&opl3->access_mutex);
|
||||||
|
|
||||||
if ((err = snd_device_new(card, SNDRV_DEV_CODEC, opl3, &ops)) < 0) {
|
if ((err = snd_device_new(card, SNDRV_DEV_CODEC, opl3, &ops)) < 0) {
|
||||||
snd_opl3_free(opl3);
|
snd_opl3_free(opl3);
|
||||||
|
@ -52,13 +52,13 @@ int snd_opl3_synth_setup(struct snd_opl3 * opl3)
|
|||||||
{
|
{
|
||||||
int idx;
|
int idx;
|
||||||
|
|
||||||
down(&opl3->access_mutex);
|
mutex_lock(&opl3->access_mutex);
|
||||||
if (opl3->used) {
|
if (opl3->used) {
|
||||||
up(&opl3->access_mutex);
|
mutex_unlock(&opl3->access_mutex);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
opl3->used++;
|
opl3->used++;
|
||||||
up(&opl3->access_mutex);
|
mutex_unlock(&opl3->access_mutex);
|
||||||
|
|
||||||
snd_opl3_reset(opl3);
|
snd_opl3_reset(opl3);
|
||||||
|
|
||||||
@ -91,9 +91,9 @@ void snd_opl3_synth_cleanup(struct snd_opl3 * opl3)
|
|||||||
spin_unlock_irqrestore(&opl3->sys_timer_lock, flags);
|
spin_unlock_irqrestore(&opl3->sys_timer_lock, flags);
|
||||||
|
|
||||||
snd_opl3_reset(opl3);
|
snd_opl3_reset(opl3);
|
||||||
down(&opl3->access_mutex);
|
mutex_lock(&opl3->access_mutex);
|
||||||
opl3->used--;
|
opl3->used--;
|
||||||
up(&opl3->access_mutex);
|
mutex_unlock(&opl3->access_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snd_opl3_synth_use(void *private_data, struct snd_seq_port_subscribe * info)
|
static int snd_opl3_synth_use(void *private_data, struct snd_seq_port_subscribe * info)
|
||||||
|
@ -76,13 +76,13 @@ int snd_opl3_open(struct snd_hwdep * hw, struct file *file)
|
|||||||
{
|
{
|
||||||
struct snd_opl3 *opl3 = hw->private_data;
|
struct snd_opl3 *opl3 = hw->private_data;
|
||||||
|
|
||||||
down(&opl3->access_mutex);
|
mutex_lock(&opl3->access_mutex);
|
||||||
if (opl3->used) {
|
if (opl3->used) {
|
||||||
up(&opl3->access_mutex);
|
mutex_unlock(&opl3->access_mutex);
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
}
|
}
|
||||||
opl3->used++;
|
opl3->used++;
|
||||||
up(&opl3->access_mutex);
|
mutex_unlock(&opl3->access_mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -179,9 +179,9 @@ int snd_opl3_release(struct snd_hwdep * hw, struct file *file)
|
|||||||
struct snd_opl3 *opl3 = hw->private_data;
|
struct snd_opl3 *opl3 = hw->private_data;
|
||||||
|
|
||||||
snd_opl3_reset(opl3);
|
snd_opl3_reset(opl3);
|
||||||
down(&opl3->access_mutex);
|
mutex_lock(&opl3->access_mutex);
|
||||||
opl3->used--;
|
opl3->used--;
|
||||||
up(&opl3->access_mutex);
|
mutex_unlock(&opl3->access_mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ int snd_opl4_create(struct snd_card *card,
|
|||||||
opl4->fm_port = fm_port;
|
opl4->fm_port = fm_port;
|
||||||
opl4->pcm_port = pcm_port;
|
opl4->pcm_port = pcm_port;
|
||||||
spin_lock_init(&opl4->reg_lock);
|
spin_lock_init(&opl4->reg_lock);
|
||||||
init_MUTEX(&opl4->access_mutex);
|
mutex_init(&opl4->access_mutex);
|
||||||
|
|
||||||
err = snd_opl4_detect(opl4);
|
err = snd_opl4_detect(opl4);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
@ -182,7 +182,7 @@ struct snd_opl4 {
|
|||||||
struct snd_info_entry *proc_entry;
|
struct snd_info_entry *proc_entry;
|
||||||
int memory_access;
|
int memory_access;
|
||||||
#endif
|
#endif
|
||||||
struct semaphore access_mutex;
|
struct mutex access_mutex;
|
||||||
|
|
||||||
#if defined(CONFIG_SND_SEQUENCER) || defined(CONFIG_SND_SEQUENCER_MODULE)
|
#if defined(CONFIG_SND_SEQUENCER) || defined(CONFIG_SND_SEQUENCER_MODULE)
|
||||||
int used;
|
int used;
|
||||||
|
@ -28,13 +28,13 @@ static int snd_opl4_mem_proc_open(struct snd_info_entry *entry,
|
|||||||
{
|
{
|
||||||
struct snd_opl4 *opl4 = entry->private_data;
|
struct snd_opl4 *opl4 = entry->private_data;
|
||||||
|
|
||||||
down(&opl4->access_mutex);
|
mutex_lock(&opl4->access_mutex);
|
||||||
if (opl4->memory_access) {
|
if (opl4->memory_access) {
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
opl4->memory_access++;
|
opl4->memory_access++;
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,9 +43,9 @@ static int snd_opl4_mem_proc_release(struct snd_info_entry *entry,
|
|||||||
{
|
{
|
||||||
struct snd_opl4 *opl4 = entry->private_data;
|
struct snd_opl4 *opl4 = entry->private_data;
|
||||||
|
|
||||||
down(&opl4->access_mutex);
|
mutex_lock(&opl4->access_mutex);
|
||||||
opl4->memory_access--;
|
opl4->memory_access--;
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,10 +62,10 @@ static int snd_opl4_seq_use(void *private_data, struct snd_seq_port_subscribe *i
|
|||||||
struct snd_opl4 *opl4 = private_data;
|
struct snd_opl4 *opl4 = private_data;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
down(&opl4->access_mutex);
|
mutex_lock(&opl4->access_mutex);
|
||||||
|
|
||||||
if (opl4->used) {
|
if (opl4->used) {
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
opl4->used++;
|
opl4->used++;
|
||||||
@ -73,12 +73,12 @@ static int snd_opl4_seq_use(void *private_data, struct snd_seq_port_subscribe *i
|
|||||||
if (info->sender.client != SNDRV_SEQ_CLIENT_SYSTEM) {
|
if (info->sender.client != SNDRV_SEQ_CLIENT_SYSTEM) {
|
||||||
err = snd_opl4_seq_use_inc(opl4);
|
err = snd_opl4_seq_use_inc(opl4);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
|
|
||||||
snd_opl4_synth_reset(opl4);
|
snd_opl4_synth_reset(opl4);
|
||||||
return 0;
|
return 0;
|
||||||
@ -90,9 +90,9 @@ static int snd_opl4_seq_unuse(void *private_data, struct snd_seq_port_subscribe
|
|||||||
|
|
||||||
snd_opl4_synth_shutdown(opl4);
|
snd_opl4_synth_shutdown(opl4);
|
||||||
|
|
||||||
down(&opl4->access_mutex);
|
mutex_lock(&opl4->access_mutex);
|
||||||
opl4->used--;
|
opl4->used--;
|
||||||
up(&opl4->access_mutex);
|
mutex_unlock(&opl4->access_mutex);
|
||||||
|
|
||||||
if (info->sender.client != SNDRV_SEQ_CLIENT_SYSTEM)
|
if (info->sender.client != SNDRV_SEQ_CLIENT_SYSTEM)
|
||||||
snd_opl4_seq_use_dec(opl4);
|
snd_opl4_seq_use_dec(opl4);
|
||||||
|
@ -778,7 +778,7 @@ struct vx_core *snd_vx_create(struct snd_card *card, struct snd_vx_hardware *hw,
|
|||||||
chip->type = hw->type;
|
chip->type = hw->type;
|
||||||
chip->ops = ops;
|
chip->ops = ops;
|
||||||
tasklet_init(&chip->tq, vx_interrupt, (unsigned long)chip);
|
tasklet_init(&chip->tq, vx_interrupt, (unsigned long)chip);
|
||||||
init_MUTEX(&chip->mixer_mutex);
|
mutex_init(&chip->mixer_mutex);
|
||||||
|
|
||||||
chip->card = card;
|
chip->card = card;
|
||||||
card->private_data = chip;
|
card->private_data = chip;
|
||||||
|
@ -427,10 +427,10 @@ static int vx_output_level_get(struct snd_kcontrol *kcontrol, struct snd_ctl_ele
|
|||||||
{
|
{
|
||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int codec = kcontrol->id.index;
|
int codec = kcontrol->id.index;
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
ucontrol->value.integer.value[0] = chip->output_level[codec][0];
|
ucontrol->value.integer.value[0] = chip->output_level[codec][0];
|
||||||
ucontrol->value.integer.value[1] = chip->output_level[codec][1];
|
ucontrol->value.integer.value[1] = chip->output_level[codec][1];
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,7 +438,7 @@ static int vx_output_level_put(struct snd_kcontrol *kcontrol, struct snd_ctl_ele
|
|||||||
{
|
{
|
||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int codec = kcontrol->id.index;
|
int codec = kcontrol->id.index;
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (ucontrol->value.integer.value[0] != chip->output_level[codec][0] ||
|
if (ucontrol->value.integer.value[0] != chip->output_level[codec][0] ||
|
||||||
ucontrol->value.integer.value[1] != chip->output_level[codec][1]) {
|
ucontrol->value.integer.value[1] != chip->output_level[codec][1]) {
|
||||||
vx_set_analog_output_level(chip, codec,
|
vx_set_analog_output_level(chip, codec,
|
||||||
@ -446,10 +446,10 @@ static int vx_output_level_put(struct snd_kcontrol *kcontrol, struct snd_ctl_ele
|
|||||||
ucontrol->value.integer.value[1]);
|
ucontrol->value.integer.value[1]);
|
||||||
chip->output_level[codec][0] = ucontrol->value.integer.value[0];
|
chip->output_level[codec][0] = ucontrol->value.integer.value[0];
|
||||||
chip->output_level[codec][1] = ucontrol->value.integer.value[1];
|
chip->output_level[codec][1] = ucontrol->value.integer.value[1];
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -502,14 +502,14 @@ static int vx_audio_src_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_v
|
|||||||
static int vx_audio_src_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
static int vx_audio_src_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (chip->audio_source_target != ucontrol->value.enumerated.item[0]) {
|
if (chip->audio_source_target != ucontrol->value.enumerated.item[0]) {
|
||||||
chip->audio_source_target = ucontrol->value.enumerated.item[0];
|
chip->audio_source_target = ucontrol->value.enumerated.item[0];
|
||||||
vx_sync_audio_source(chip);
|
vx_sync_audio_source(chip);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -550,14 +550,14 @@ static int vx_clock_mode_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
|
|||||||
static int vx_clock_mode_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
static int vx_clock_mode_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
||||||
{
|
{
|
||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (chip->clock_mode != ucontrol->value.enumerated.item[0]) {
|
if (chip->clock_mode != ucontrol->value.enumerated.item[0]) {
|
||||||
chip->clock_mode = ucontrol->value.enumerated.item[0];
|
chip->clock_mode = ucontrol->value.enumerated.item[0];
|
||||||
vx_set_clock(chip, chip->freq);
|
vx_set_clock(chip, chip->freq);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,10 +587,10 @@ static int vx_audio_gain_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
|
|||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
int capture = (kcontrol->private_value >> 8) & 1;
|
int capture = (kcontrol->private_value >> 8) & 1;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
ucontrol->value.integer.value[0] = chip->audio_gain[capture][audio];
|
ucontrol->value.integer.value[0] = chip->audio_gain[capture][audio];
|
||||||
ucontrol->value.integer.value[1] = chip->audio_gain[capture][audio+1];
|
ucontrol->value.integer.value[1] = chip->audio_gain[capture][audio+1];
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -600,15 +600,15 @@ static int vx_audio_gain_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
|
|||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
int capture = (kcontrol->private_value >> 8) & 1;
|
int capture = (kcontrol->private_value >> 8) & 1;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (ucontrol->value.integer.value[0] != chip->audio_gain[capture][audio] ||
|
if (ucontrol->value.integer.value[0] != chip->audio_gain[capture][audio] ||
|
||||||
ucontrol->value.integer.value[1] != chip->audio_gain[capture][audio+1]) {
|
ucontrol->value.integer.value[1] != chip->audio_gain[capture][audio+1]) {
|
||||||
vx_set_audio_gain(chip, audio, capture, ucontrol->value.integer.value[0]);
|
vx_set_audio_gain(chip, audio, capture, ucontrol->value.integer.value[0]);
|
||||||
vx_set_audio_gain(chip, audio+1, capture, ucontrol->value.integer.value[1]);
|
vx_set_audio_gain(chip, audio+1, capture, ucontrol->value.integer.value[1]);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -617,10 +617,10 @@ static int vx_audio_monitor_get(struct snd_kcontrol *kcontrol, struct snd_ctl_el
|
|||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
ucontrol->value.integer.value[0] = chip->audio_monitor[audio];
|
ucontrol->value.integer.value[0] = chip->audio_monitor[audio];
|
||||||
ucontrol->value.integer.value[1] = chip->audio_monitor[audio+1];
|
ucontrol->value.integer.value[1] = chip->audio_monitor[audio+1];
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -629,17 +629,17 @@ static int vx_audio_monitor_put(struct snd_kcontrol *kcontrol, struct snd_ctl_el
|
|||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (ucontrol->value.integer.value[0] != chip->audio_monitor[audio] ||
|
if (ucontrol->value.integer.value[0] != chip->audio_monitor[audio] ||
|
||||||
ucontrol->value.integer.value[1] != chip->audio_monitor[audio+1]) {
|
ucontrol->value.integer.value[1] != chip->audio_monitor[audio+1]) {
|
||||||
vx_set_monitor_level(chip, audio, ucontrol->value.integer.value[0],
|
vx_set_monitor_level(chip, audio, ucontrol->value.integer.value[0],
|
||||||
chip->audio_monitor_active[audio]);
|
chip->audio_monitor_active[audio]);
|
||||||
vx_set_monitor_level(chip, audio+1, ucontrol->value.integer.value[1],
|
vx_set_monitor_level(chip, audio+1, ucontrol->value.integer.value[1],
|
||||||
chip->audio_monitor_active[audio+1]);
|
chip->audio_monitor_active[audio+1]);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -657,10 +657,10 @@ static int vx_audio_sw_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_va
|
|||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
ucontrol->value.integer.value[0] = chip->audio_active[audio];
|
ucontrol->value.integer.value[0] = chip->audio_active[audio];
|
||||||
ucontrol->value.integer.value[1] = chip->audio_active[audio+1];
|
ucontrol->value.integer.value[1] = chip->audio_active[audio+1];
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -669,15 +669,15 @@ static int vx_audio_sw_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_va
|
|||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (ucontrol->value.integer.value[0] != chip->audio_active[audio] ||
|
if (ucontrol->value.integer.value[0] != chip->audio_active[audio] ||
|
||||||
ucontrol->value.integer.value[1] != chip->audio_active[audio+1]) {
|
ucontrol->value.integer.value[1] != chip->audio_active[audio+1]) {
|
||||||
vx_set_audio_switch(chip, audio, ucontrol->value.integer.value[0]);
|
vx_set_audio_switch(chip, audio, ucontrol->value.integer.value[0]);
|
||||||
vx_set_audio_switch(chip, audio+1, ucontrol->value.integer.value[1]);
|
vx_set_audio_switch(chip, audio+1, ucontrol->value.integer.value[1]);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -686,10 +686,10 @@ static int vx_monitor_sw_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
|
|||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
ucontrol->value.integer.value[0] = chip->audio_monitor_active[audio];
|
ucontrol->value.integer.value[0] = chip->audio_monitor_active[audio];
|
||||||
ucontrol->value.integer.value[1] = chip->audio_monitor_active[audio+1];
|
ucontrol->value.integer.value[1] = chip->audio_monitor_active[audio+1];
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -698,17 +698,17 @@ static int vx_monitor_sw_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_
|
|||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
int audio = kcontrol->private_value & 0xff;
|
int audio = kcontrol->private_value & 0xff;
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (ucontrol->value.integer.value[0] != chip->audio_monitor_active[audio] ||
|
if (ucontrol->value.integer.value[0] != chip->audio_monitor_active[audio] ||
|
||||||
ucontrol->value.integer.value[1] != chip->audio_monitor_active[audio+1]) {
|
ucontrol->value.integer.value[1] != chip->audio_monitor_active[audio+1]) {
|
||||||
vx_set_monitor_level(chip, audio, chip->audio_monitor[audio],
|
vx_set_monitor_level(chip, audio, chip->audio_monitor[audio],
|
||||||
ucontrol->value.integer.value[0]);
|
ucontrol->value.integer.value[0]);
|
||||||
vx_set_monitor_level(chip, audio+1, chip->audio_monitor[audio+1],
|
vx_set_monitor_level(chip, audio+1, chip->audio_monitor[audio+1],
|
||||||
ucontrol->value.integer.value[1]);
|
ucontrol->value.integer.value[1]);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -756,12 +756,12 @@ static int vx_iec958_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_valu
|
|||||||
{
|
{
|
||||||
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
struct vx_core *chip = snd_kcontrol_chip(kcontrol);
|
||||||
|
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
ucontrol->value.iec958.status[0] = (chip->uer_bits >> 0) & 0xff;
|
ucontrol->value.iec958.status[0] = (chip->uer_bits >> 0) & 0xff;
|
||||||
ucontrol->value.iec958.status[1] = (chip->uer_bits >> 8) & 0xff;
|
ucontrol->value.iec958.status[1] = (chip->uer_bits >> 8) & 0xff;
|
||||||
ucontrol->value.iec958.status[2] = (chip->uer_bits >> 16) & 0xff;
|
ucontrol->value.iec958.status[2] = (chip->uer_bits >> 16) & 0xff;
|
||||||
ucontrol->value.iec958.status[3] = (chip->uer_bits >> 24) & 0xff;
|
ucontrol->value.iec958.status[3] = (chip->uer_bits >> 24) & 0xff;
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -783,14 +783,14 @@ static int vx_iec958_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_valu
|
|||||||
(ucontrol->value.iec958.status[1] << 8) |
|
(ucontrol->value.iec958.status[1] << 8) |
|
||||||
(ucontrol->value.iec958.status[2] << 16) |
|
(ucontrol->value.iec958.status[2] << 16) |
|
||||||
(ucontrol->value.iec958.status[3] << 24);
|
(ucontrol->value.iec958.status[3] << 24);
|
||||||
down(&chip->mixer_mutex);
|
mutex_lock(&chip->mixer_mutex);
|
||||||
if (chip->uer_bits != val) {
|
if (chip->uer_bits != val) {
|
||||||
chip->uer_bits = val;
|
chip->uer_bits = val;
|
||||||
vx_set_iec958_status(chip, val);
|
vx_set_iec958_status(chip, val);
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
up(&chip->mixer_mutex);
|
mutex_unlock(&chip->mixer_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ int snd_i2c_bus_create(struct snd_card *card, const char *name,
|
|||||||
bus = kzalloc(sizeof(*bus), GFP_KERNEL);
|
bus = kzalloc(sizeof(*bus), GFP_KERNEL);
|
||||||
if (bus == NULL)
|
if (bus == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
init_MUTEX(&bus->lock_mutex);
|
mutex_init(&bus->lock_mutex);
|
||||||
INIT_LIST_HEAD(&bus->devices);
|
INIT_LIST_HEAD(&bus->devices);
|
||||||
INIT_LIST_HEAD(&bus->buses);
|
INIT_LIST_HEAD(&bus->buses);
|
||||||
bus->card = card;
|
bus->card = card;
|
||||||
|
@ -45,7 +45,7 @@ int snd_emux_new(struct snd_emux **remu)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
spin_lock_init(&emu->voice_lock);
|
spin_lock_init(&emu->voice_lock);
|
||||||
init_MUTEX(&emu->register_mutex);
|
mutex_init(&emu->register_mutex);
|
||||||
|
|
||||||
emu->client = -1;
|
emu->client = -1;
|
||||||
#ifdef CONFIG_SND_SEQUENCER_OSS
|
#ifdef CONFIG_SND_SEQUENCER_OSS
|
||||||
|
@ -117,10 +117,10 @@ snd_emux_open_seq_oss(struct snd_seq_oss_arg *arg, void *closure)
|
|||||||
emu = closure;
|
emu = closure;
|
||||||
snd_assert(arg != NULL && emu != NULL, return -ENXIO);
|
snd_assert(arg != NULL && emu != NULL, return -ENXIO);
|
||||||
|
|
||||||
down(&emu->register_mutex);
|
mutex_lock(&emu->register_mutex);
|
||||||
|
|
||||||
if (!snd_emux_inc_count(emu)) {
|
if (!snd_emux_inc_count(emu)) {
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ snd_emux_open_seq_oss(struct snd_seq_oss_arg *arg, void *closure)
|
|||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
snd_printk("can't create port\n");
|
snd_printk("can't create port\n");
|
||||||
snd_emux_dec_count(emu);
|
snd_emux_dec_count(emu);
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,7 +148,7 @@ snd_emux_open_seq_oss(struct snd_seq_oss_arg *arg, void *closure)
|
|||||||
|
|
||||||
snd_emux_reset_port(p);
|
snd_emux_reset_port(p);
|
||||||
|
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,13 +191,13 @@ snd_emux_close_seq_oss(struct snd_seq_oss_arg *arg)
|
|||||||
emu = p->emu;
|
emu = p->emu;
|
||||||
snd_assert(emu != NULL, return -ENXIO);
|
snd_assert(emu != NULL, return -ENXIO);
|
||||||
|
|
||||||
down(&emu->register_mutex);
|
mutex_lock(&emu->register_mutex);
|
||||||
snd_emux_sounds_off_all(p);
|
snd_emux_sounds_off_all(p);
|
||||||
snd_soundfont_close_check(emu->sflist, SF_CLIENT_NO(p->chset.port));
|
snd_soundfont_close_check(emu->sflist, SF_CLIENT_NO(p->chset.port));
|
||||||
snd_seq_event_port_detach(p->chset.client, p->chset.port);
|
snd_seq_event_port_detach(p->chset.client, p->chset.port);
|
||||||
snd_emux_dec_count(emu);
|
snd_emux_dec_count(emu);
|
||||||
|
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ snd_emux_proc_info_read(struct snd_info_entry *entry,
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
emu = entry->private_data;
|
emu = entry->private_data;
|
||||||
down(&emu->register_mutex);
|
mutex_lock(&emu->register_mutex);
|
||||||
if (emu->name)
|
if (emu->name)
|
||||||
snd_iprintf(buf, "Device: %s\n", emu->name);
|
snd_iprintf(buf, "Device: %s\n", emu->name);
|
||||||
snd_iprintf(buf, "Ports: %d\n", emu->num_ports);
|
snd_iprintf(buf, "Ports: %d\n", emu->num_ports);
|
||||||
@ -56,13 +56,13 @@ snd_emux_proc_info_read(struct snd_info_entry *entry,
|
|||||||
snd_iprintf(buf, "Memory Size: 0\n");
|
snd_iprintf(buf, "Memory Size: 0\n");
|
||||||
}
|
}
|
||||||
if (emu->sflist) {
|
if (emu->sflist) {
|
||||||
down(&emu->sflist->presets_mutex);
|
mutex_lock(&emu->sflist->presets_mutex);
|
||||||
snd_iprintf(buf, "SoundFonts: %d\n", emu->sflist->fonts_size);
|
snd_iprintf(buf, "SoundFonts: %d\n", emu->sflist->fonts_size);
|
||||||
snd_iprintf(buf, "Instruments: %d\n", emu->sflist->zone_counter);
|
snd_iprintf(buf, "Instruments: %d\n", emu->sflist->zone_counter);
|
||||||
snd_iprintf(buf, "Samples: %d\n", emu->sflist->sample_counter);
|
snd_iprintf(buf, "Samples: %d\n", emu->sflist->sample_counter);
|
||||||
snd_iprintf(buf, "Locked Instruments: %d\n", emu->sflist->zone_locked);
|
snd_iprintf(buf, "Locked Instruments: %d\n", emu->sflist->zone_locked);
|
||||||
snd_iprintf(buf, "Locked Samples: %d\n", emu->sflist->sample_locked);
|
snd_iprintf(buf, "Locked Samples: %d\n", emu->sflist->sample_locked);
|
||||||
up(&emu->sflist->presets_mutex);
|
mutex_unlock(&emu->sflist->presets_mutex);
|
||||||
}
|
}
|
||||||
#if 0 /* debug */
|
#if 0 /* debug */
|
||||||
if (emu->voices[0].state != SNDRV_EMUX_ST_OFF && emu->voices[0].ch >= 0) {
|
if (emu->voices[0].state != SNDRV_EMUX_ST_OFF && emu->voices[0].ch >= 0) {
|
||||||
@ -103,7 +103,7 @@ snd_emux_proc_info_read(struct snd_info_entry *entry,
|
|||||||
snd_iprintf(buf, "sample_mode=%x, rate=%x\n", vp->reg.sample_mode, vp->reg.rate_offset);
|
snd_iprintf(buf, "sample_mode=%x, rate=%x\n", vp->reg.sample_mode, vp->reg.rate_offset);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,12 +123,12 @@ snd_emux_detach_seq(struct snd_emux *emu)
|
|||||||
if (emu->voices)
|
if (emu->voices)
|
||||||
snd_emux_terminate_all(emu);
|
snd_emux_terminate_all(emu);
|
||||||
|
|
||||||
down(&emu->register_mutex);
|
mutex_lock(&emu->register_mutex);
|
||||||
if (emu->client >= 0) {
|
if (emu->client >= 0) {
|
||||||
snd_seq_delete_kernel_client(emu->client);
|
snd_seq_delete_kernel_client(emu->client);
|
||||||
emu->client = -1;
|
emu->client = -1;
|
||||||
}
|
}
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -311,10 +311,10 @@ snd_emux_use(void *private_data, struct snd_seq_port_subscribe *info)
|
|||||||
emu = p->emu;
|
emu = p->emu;
|
||||||
snd_assert(emu != NULL, return -EINVAL);
|
snd_assert(emu != NULL, return -EINVAL);
|
||||||
|
|
||||||
down(&emu->register_mutex);
|
mutex_lock(&emu->register_mutex);
|
||||||
snd_emux_init_port(p);
|
snd_emux_init_port(p);
|
||||||
snd_emux_inc_count(emu);
|
snd_emux_inc_count(emu);
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,10 +332,10 @@ snd_emux_unuse(void *private_data, struct snd_seq_port_subscribe *info)
|
|||||||
emu = p->emu;
|
emu = p->emu;
|
||||||
snd_assert(emu != NULL, return -EINVAL);
|
snd_assert(emu != NULL, return -EINVAL);
|
||||||
|
|
||||||
down(&emu->register_mutex);
|
mutex_lock(&emu->register_mutex);
|
||||||
snd_emux_sounds_off_all(p);
|
snd_emux_sounds_off_all(p);
|
||||||
snd_emux_dec_count(emu);
|
snd_emux_dec_count(emu);
|
||||||
up(&emu->register_mutex);
|
mutex_unlock(&emu->register_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ static void
|
|||||||
lock_preset(struct snd_sf_list *sflist)
|
lock_preset(struct snd_sf_list *sflist)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
down(&sflist->presets_mutex);
|
mutex_lock(&sflist->presets_mutex);
|
||||||
spin_lock_irqsave(&sflist->lock, flags);
|
spin_lock_irqsave(&sflist->lock, flags);
|
||||||
sflist->presets_locked = 1;
|
sflist->presets_locked = 1;
|
||||||
spin_unlock_irqrestore(&sflist->lock, flags);
|
spin_unlock_irqrestore(&sflist->lock, flags);
|
||||||
@ -96,7 +96,7 @@ unlock_preset(struct snd_sf_list *sflist)
|
|||||||
spin_lock_irqsave(&sflist->lock, flags);
|
spin_lock_irqsave(&sflist->lock, flags);
|
||||||
sflist->presets_locked = 0;
|
sflist->presets_locked = 0;
|
||||||
spin_unlock_irqrestore(&sflist->lock, flags);
|
spin_unlock_irqrestore(&sflist->lock, flags);
|
||||||
up(&sflist->presets_mutex);
|
mutex_unlock(&sflist->presets_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1390,7 +1390,7 @@ snd_sf_new(struct snd_sf_callback *callback, struct snd_util_memhdr *hdr)
|
|||||||
if ((sflist = kzalloc(sizeof(*sflist), GFP_KERNEL)) == NULL)
|
if ((sflist = kzalloc(sizeof(*sflist), GFP_KERNEL)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
init_MUTEX(&sflist->presets_mutex);
|
mutex_init(&sflist->presets_mutex);
|
||||||
spin_lock_init(&sflist->lock);
|
spin_lock_init(&sflist->lock);
|
||||||
sflist->memhdr = hdr;
|
sflist->memhdr = hdr;
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/mutex.h>
|
||||||
#include <sound/driver.h>
|
#include <sound/driver.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
@ -42,7 +43,7 @@ snd_util_memhdr_new(int memsize)
|
|||||||
if (hdr == NULL)
|
if (hdr == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
hdr->size = memsize;
|
hdr->size = memsize;
|
||||||
init_MUTEX(&hdr->block_mutex);
|
mutex_init(&hdr->block_mutex);
|
||||||
INIT_LIST_HEAD(&hdr->block);
|
INIT_LIST_HEAD(&hdr->block);
|
||||||
|
|
||||||
return hdr;
|
return hdr;
|
||||||
@ -136,9 +137,9 @@ struct snd_util_memblk *
|
|||||||
snd_util_mem_alloc(struct snd_util_memhdr *hdr, int size)
|
snd_util_mem_alloc(struct snd_util_memhdr *hdr, int size)
|
||||||
{
|
{
|
||||||
struct snd_util_memblk *blk;
|
struct snd_util_memblk *blk;
|
||||||
down(&hdr->block_mutex);
|
mutex_lock(&hdr->block_mutex);
|
||||||
blk = __snd_util_mem_alloc(hdr, size);
|
blk = __snd_util_mem_alloc(hdr, size);
|
||||||
up(&hdr->block_mutex);
|
mutex_unlock(&hdr->block_mutex);
|
||||||
return blk;
|
return blk;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,9 +164,9 @@ int snd_util_mem_free(struct snd_util_memhdr *hdr, struct snd_util_memblk *blk)
|
|||||||
{
|
{
|
||||||
snd_assert(hdr && blk, return -EINVAL);
|
snd_assert(hdr && blk, return -EINVAL);
|
||||||
|
|
||||||
down(&hdr->block_mutex);
|
mutex_lock(&hdr->block_mutex);
|
||||||
__snd_util_mem_free(hdr, blk);
|
__snd_util_mem_free(hdr, blk);
|
||||||
up(&hdr->block_mutex);
|
mutex_unlock(&hdr->block_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,9 +176,9 @@ int snd_util_mem_free(struct snd_util_memhdr *hdr, struct snd_util_memblk *blk)
|
|||||||
int snd_util_mem_avail(struct snd_util_memhdr *hdr)
|
int snd_util_mem_avail(struct snd_util_memhdr *hdr)
|
||||||
{
|
{
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
down(&hdr->block_mutex);
|
mutex_lock(&hdr->block_mutex);
|
||||||
size = hdr->size - hdr->used;
|
size = hdr->size - hdr->used;
|
||||||
up(&hdr->block_mutex);
|
mutex_unlock(&hdr->block_mutex);
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user