Commit bf1bbb5a authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] Tiny clean up of PCM codes

- Make snd_pcm_prepare() static
- Clean up snd_pcm_kernel_*_ioctl() functions, reduce exports
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 82756b27
...@@ -460,7 +460,6 @@ int snd_pcm_info_user(struct snd_pcm_substream *substream, ...@@ -460,7 +460,6 @@ int snd_pcm_info_user(struct snd_pcm_substream *substream,
struct snd_pcm_info __user *info); struct snd_pcm_info __user *info);
int snd_pcm_status(struct snd_pcm_substream *substream, int snd_pcm_status(struct snd_pcm_substream *substream,
struct snd_pcm_status *status); struct snd_pcm_status *status);
int snd_pcm_prepare(struct snd_pcm_substream *substream);
int snd_pcm_start(struct snd_pcm_substream *substream); int snd_pcm_start(struct snd_pcm_substream *substream);
int snd_pcm_stop(struct snd_pcm_substream *substream, int status); int snd_pcm_stop(struct snd_pcm_substream *substream, int status);
int snd_pcm_drain_done(struct snd_pcm_substream *substream); int snd_pcm_drain_done(struct snd_pcm_substream *substream);
...@@ -468,8 +467,6 @@ int snd_pcm_drain_done(struct snd_pcm_substream *substream); ...@@ -468,8 +467,6 @@ int snd_pcm_drain_done(struct snd_pcm_substream *substream);
int snd_pcm_suspend(struct snd_pcm_substream *substream); int snd_pcm_suspend(struct snd_pcm_substream *substream);
int snd_pcm_suspend_all(struct snd_pcm *pcm); int snd_pcm_suspend_all(struct snd_pcm *pcm);
#endif #endif
int snd_pcm_kernel_playback_ioctl(struct snd_pcm_substream *substream, unsigned int cmd, void *arg);
int snd_pcm_kernel_capture_ioctl(struct snd_pcm_substream *substream, unsigned int cmd, void *arg);
int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream, unsigned int cmd, void *arg); int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream, unsigned int cmd, void *arg);
int snd_pcm_open_substream(struct snd_pcm *pcm, int stream, struct snd_pcm_substream **rsubstream); int snd_pcm_open_substream(struct snd_pcm *pcm, int stream, struct snd_pcm_substream **rsubstream);
void snd_pcm_release_substream(struct snd_pcm_substream *substream); void snd_pcm_release_substream(struct snd_pcm_substream *substream);
......
...@@ -959,12 +959,12 @@ static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file) ...@@ -959,12 +959,12 @@ static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file)
substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_PLAYBACK]; substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_PLAYBACK];
if (substream != NULL) { if (substream != NULL) {
snd_pcm_kernel_playback_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL); snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL);
substream->runtime->oss.prepare = 1; substream->runtime->oss.prepare = 1;
} }
substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE]; substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE];
if (substream != NULL) { if (substream != NULL) {
snd_pcm_kernel_capture_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL); snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL);
substream->runtime->oss.prepare = 1; substream->runtime->oss.prepare = 1;
} }
return 0; return 0;
...@@ -979,7 +979,7 @@ static int snd_pcm_oss_post(struct snd_pcm_oss_file *pcm_oss_file) ...@@ -979,7 +979,7 @@ static int snd_pcm_oss_post(struct snd_pcm_oss_file *pcm_oss_file)
if (substream != NULL) { if (substream != NULL) {
if ((err = snd_pcm_oss_make_ready(substream)) < 0) if ((err = snd_pcm_oss_make_ready(substream)) < 0)
return err; return err;
snd_pcm_kernel_playback_ioctl(substream, SNDRV_PCM_IOCTL_START, NULL); snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_START, NULL);
} }
/* note: all errors from the start action are ignored */ /* note: all errors from the start action are ignored */
/* OSS apps do not know, how to handle them */ /* OSS apps do not know, how to handle them */
...@@ -1108,7 +1108,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) ...@@ -1108,7 +1108,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file)
__direct: __direct:
saved_f_flags = substream->ffile->f_flags; saved_f_flags = substream->ffile->f_flags;
substream->ffile->f_flags &= ~O_NONBLOCK; substream->ffile->f_flags &= ~O_NONBLOCK;
err = snd_pcm_kernel_playback_ioctl(substream, SNDRV_PCM_IOCTL_DRAIN, NULL); err = snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DRAIN, NULL);
substream->ffile->f_flags = saved_f_flags; substream->ffile->f_flags = saved_f_flags;
if (err < 0) if (err < 0)
return err; return err;
...@@ -1120,7 +1120,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) ...@@ -1120,7 +1120,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file)
if ((err = snd_pcm_oss_make_ready(substream)) < 0) if ((err = snd_pcm_oss_make_ready(substream)) < 0)
return err; return err;
runtime = substream->runtime; runtime = substream->runtime;
err = snd_pcm_kernel_capture_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL); err = snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL);
if (err < 0) if (err < 0)
return err; return err;
runtime->oss.buffer_used = 0; runtime->oss.buffer_used = 0;
...@@ -1437,7 +1437,7 @@ static int snd_pcm_oss_set_trigger(struct snd_pcm_oss_file *pcm_oss_file, int tr ...@@ -1437,7 +1437,7 @@ static int snd_pcm_oss_set_trigger(struct snd_pcm_oss_file *pcm_oss_file, int tr
cmd = SNDRV_PCM_IOCTL_DROP; cmd = SNDRV_PCM_IOCTL_DROP;
runtime->oss.prepare = 1; runtime->oss.prepare = 1;
} }
err = snd_pcm_kernel_playback_ioctl(psubstream, cmd, NULL); err = snd_pcm_kernel_ioctl(psubstream, cmd, NULL);
if (err < 0) if (err < 0)
return err; return err;
} }
...@@ -1458,7 +1458,7 @@ static int snd_pcm_oss_set_trigger(struct snd_pcm_oss_file *pcm_oss_file, int tr ...@@ -1458,7 +1458,7 @@ static int snd_pcm_oss_set_trigger(struct snd_pcm_oss_file *pcm_oss_file, int tr
cmd = SNDRV_PCM_IOCTL_DROP; cmd = SNDRV_PCM_IOCTL_DROP;
runtime->oss.prepare = 1; runtime->oss.prepare = 1;
} }
err = snd_pcm_kernel_capture_ioctl(csubstream, cmd, NULL); err = snd_pcm_kernel_ioctl(csubstream, cmd, NULL);
if (err < 0) if (err < 0)
return err; return err;
} }
...@@ -1495,7 +1495,7 @@ static int snd_pcm_oss_get_odelay(struct snd_pcm_oss_file *pcm_oss_file) ...@@ -1495,7 +1495,7 @@ static int snd_pcm_oss_get_odelay(struct snd_pcm_oss_file *pcm_oss_file)
runtime = substream->runtime; runtime = substream->runtime;
if (runtime->oss.params || runtime->oss.prepare) if (runtime->oss.params || runtime->oss.prepare)
return 0; return 0;
err = snd_pcm_kernel_playback_ioctl(substream, SNDRV_PCM_IOCTL_DELAY, &delay); err = snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DELAY, &delay);
if (err == -EPIPE) if (err == -EPIPE)
delay = 0; /* hack for broken OSS applications */ delay = 0; /* hack for broken OSS applications */
else if (err < 0) else if (err < 0)
......
...@@ -1111,8 +1111,6 @@ EXPORT_SYMBOL(snd_pcm_link_rwlock); ...@@ -1111,8 +1111,6 @@ EXPORT_SYMBOL(snd_pcm_link_rwlock);
EXPORT_SYMBOL(snd_pcm_suspend); EXPORT_SYMBOL(snd_pcm_suspend);
EXPORT_SYMBOL(snd_pcm_suspend_all); EXPORT_SYMBOL(snd_pcm_suspend_all);
#endif #endif
EXPORT_SYMBOL(snd_pcm_kernel_playback_ioctl);
EXPORT_SYMBOL(snd_pcm_kernel_capture_ioctl);
EXPORT_SYMBOL(snd_pcm_kernel_ioctl); EXPORT_SYMBOL(snd_pcm_kernel_ioctl);
EXPORT_SYMBOL(snd_pcm_mmap_data); EXPORT_SYMBOL(snd_pcm_mmap_data);
#if SNDRV_PCM_INFO_MMAP_IOMEM #if SNDRV_PCM_INFO_MMAP_IOMEM
......
...@@ -1313,7 +1313,7 @@ static struct action_ops snd_pcm_action_prepare = { ...@@ -1313,7 +1313,7 @@ static struct action_ops snd_pcm_action_prepare = {
* *
* Prepare the PCM substream to be triggerable. * Prepare the PCM substream to be triggerable.
*/ */
int snd_pcm_prepare(struct snd_pcm_substream *substream) static int snd_pcm_prepare(struct snd_pcm_substream *substream)
{ {
int res; int res;
struct snd_card *card = substream->pcm->card; struct snd_card *card = substream->pcm->card;
...@@ -2736,41 +2736,28 @@ static long snd_pcm_capture_ioctl(struct file *file, unsigned int cmd, ...@@ -2736,41 +2736,28 @@ static long snd_pcm_capture_ioctl(struct file *file, unsigned int cmd,
return snd_pcm_capture_ioctl1(pcm_file->substream, cmd, (void __user *)arg); return snd_pcm_capture_ioctl1(pcm_file->substream, cmd, (void __user *)arg);
} }
int snd_pcm_kernel_playback_ioctl(struct snd_pcm_substream *substream, int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
unsigned int cmd, void *arg)
{
mm_segment_t fs;
int result;
fs = snd_enter_user();
result = snd_pcm_playback_ioctl1(substream, cmd, (void __user *)arg);
snd_leave_user(fs);
return result;
}
int snd_pcm_kernel_capture_ioctl(struct snd_pcm_substream *substream,
unsigned int cmd, void *arg) unsigned int cmd, void *arg)
{ {
mm_segment_t fs; mm_segment_t fs;
int result; int result;
fs = snd_enter_user(); fs = snd_enter_user();
result = snd_pcm_capture_ioctl1(substream, cmd, (void __user *)arg);
snd_leave_user(fs);
return result;
}
int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
unsigned int cmd, void *arg)
{
switch (substream->stream) { switch (substream->stream) {
case SNDRV_PCM_STREAM_PLAYBACK: case SNDRV_PCM_STREAM_PLAYBACK:
return snd_pcm_kernel_playback_ioctl(substream, cmd, arg); result = snd_pcm_playback_ioctl1(substream,
cmd, (void __user *)arg);
break;
case SNDRV_PCM_STREAM_CAPTURE: case SNDRV_PCM_STREAM_CAPTURE:
return snd_pcm_kernel_capture_ioctl(substream, cmd, arg); result = snd_pcm_capture_ioctl1(substream,
cmd, (void __user *)arg);
break;
default: default:
return -EINVAL; result = -EINVAL;
break;
} }
snd_leave_user(fs);
return result;
} }
static ssize_t snd_pcm_read(struct file *file, char __user *buf, size_t count, static ssize_t snd_pcm_read(struct file *file, char __user *buf, size_t count,
......
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