aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@suse.cz>2005-01-03 13:14:41 +0100
committerJaroslav Kysela <perex@suse.cz>2005-01-03 13:14:41 +0100
commitfc1cee5f86736d349041f4c92b56b3e391767ad1 (patch)
tree43197ffc493b4738c0466d5150d3d0e8233e6caf /sound
parent74e89507df5198f81b495de8f8d30db556e3e2a0 (diff)
downloadhistory-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.c7
-rw-r--r--sound/core/ioctl32/ioctl32.c2
-rw-r--r--sound/core/sound.c2
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