diff options
author | Jaroslav Kysela <perex@suse.cz> | 2005-01-03 13:14:41 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-01-03 13:14:41 +0100 |
commit | fc1cee5f86736d349041f4c92b56b3e391767ad1 (patch) | |
tree | 43197ffc493b4738c0466d5150d3d0e8233e6caf /sound | |
parent | 74e89507df5198f81b495de8f8d30db556e3e2a0 (diff) | |
download | history-fc1cee5f86736d349041f4c92b56b3e391767ad1.tar.gz |
[ALSA] Export snd_ctl_elem_read/write() functions
Control Midlevel,ALSA Core,IOCTL32 emulation
snd_ctl_elem_read() and snd_ctl_elem_write() functions are exported
to be accessible from other kernel modules. They can be used for
suspend/resume codes, for example.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/core/control.c | 7 | ||||
-rw-r--r-- | sound/core/ioctl32/ioctl32.c | 2 | ||||
-rw-r--r-- | sound/core/sound.c | 2 |
3 files changed, 4 insertions, 7 deletions
diff --git a/sound/core/control.c b/sound/core/control.c index aaff8b3a9e0898..2bb54ec8e9f8e3 100644 --- a/sound/core/control.c +++ b/sound/core/control.c @@ -685,9 +685,8 @@ static int snd_ctl_elem_read_user(snd_card_t *card, snd_ctl_elem_value_t __user return result; } -int snd_ctl_elem_write(snd_ctl_file_t *file, snd_ctl_elem_value_t *control) +int snd_ctl_elem_write(snd_card_t *card, snd_ctl_file_t *file, snd_ctl_elem_value_t *control) { - snd_card_t *card = file->card; snd_kcontrol_t *kctl; snd_kcontrol_volatile_t *vd; unsigned int index_offset; @@ -706,7 +705,7 @@ int snd_ctl_elem_write(snd_ctl_file_t *file, snd_ctl_elem_value_t *control) } else { if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) || kctl->put == NULL || - (vd->owner != NULL && vd->owner != file)) { + (file && vd->owner != NULL && vd->owner != file)) { result = -EPERM; } else { snd_ctl_build_ioff(&control->id, kctl, index_offset); @@ -735,7 +734,7 @@ static int snd_ctl_elem_write_user(snd_ctl_file_t *file, snd_ctl_elem_value_t __ kfree(control); return -EFAULT; } - result = snd_ctl_elem_write(file, control); + result = snd_ctl_elem_write(file->card, file, control); if (result >= 0) if (copy_to_user(_control, control, sizeof(*control))) result = -EFAULT; diff --git a/sound/core/ioctl32/ioctl32.c b/sound/core/ioctl32/ioctl32.c index 92920fc27862c8..46d31cb63a1442 100644 --- a/sound/core/ioctl32/ioctl32.c +++ b/sound/core/ioctl32/ioctl32.c @@ -357,7 +357,7 @@ static inline int _snd_ioctl32_ctl_elem_value(unsigned int fd, unsigned int cmd, if (native_ctl == SNDRV_CTL_IOCTL_ELEM_READ) err = snd_ctl_elem_read(ctl->card, data); else - err = snd_ctl_elem_write(ctl, data); + err = snd_ctl_elem_write(ctl->card, ctl, data); if (err < 0) goto __end; /* restore info to 32bit */ diff --git a/sound/core/sound.c b/sound/core/sound.c index 0ccf8fe259357d..e7afd376de4592 100644 --- a/sound/core/sound.c +++ b/sound/core/sound.c @@ -473,10 +473,8 @@ EXPORT_SYMBOL(snd_ctl_find_id); EXPORT_SYMBOL(snd_ctl_notify); EXPORT_SYMBOL(snd_ctl_register_ioctl); EXPORT_SYMBOL(snd_ctl_unregister_ioctl); -#ifdef CONFIG_COMPAT EXPORT_SYMBOL(snd_ctl_elem_read); EXPORT_SYMBOL(snd_ctl_elem_write); -#endif /* misc.c */ EXPORT_SYMBOL(snd_task_name); #ifdef CONFIG_SND_VERBOSE_PRINTK |