mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
ALSA: rme96: Convert to the new PCM ops
Replace the copy and the silence ops with the new PCM ops. The conversion is straightforward with standard helper functions, and now we can drop the bytes <-> frames conversions in callbacks. Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
032db751ef
commit
53945f5b8a
@ -327,13 +327,10 @@ snd_rme96_capture_ptr(struct rme96 *rme96)
|
||||
|
||||
static int
|
||||
snd_rme96_playback_silence(struct snd_pcm_substream *substream,
|
||||
int channel, /* not used (interleaved data) */
|
||||
snd_pcm_uframes_t pos,
|
||||
snd_pcm_uframes_t count)
|
||||
int channel, unsigned long pos, unsigned long count)
|
||||
{
|
||||
struct rme96 *rme96 = snd_pcm_substream_chip(substream);
|
||||
count <<= rme96->playback_frlog;
|
||||
pos <<= rme96->playback_frlog;
|
||||
|
||||
memset_io(rme96->iobase + RME96_IO_PLAY_BUFFER + pos,
|
||||
0, count);
|
||||
return 0;
|
||||
@ -341,32 +338,49 @@ snd_rme96_playback_silence(struct snd_pcm_substream *substream,
|
||||
|
||||
static int
|
||||
snd_rme96_playback_copy(struct snd_pcm_substream *substream,
|
||||
int channel, /* not used (interleaved data) */
|
||||
snd_pcm_uframes_t pos,
|
||||
void __user *src,
|
||||
snd_pcm_uframes_t count)
|
||||
int channel, unsigned long pos,
|
||||
void __user *src, unsigned long count)
|
||||
{
|
||||
struct rme96 *rme96 = snd_pcm_substream_chip(substream);
|
||||
count <<= rme96->playback_frlog;
|
||||
pos <<= rme96->playback_frlog;
|
||||
return copy_from_user_toio(rme96->iobase + RME96_IO_PLAY_BUFFER + pos, src,
|
||||
count);
|
||||
|
||||
return copy_from_user_toio(rme96->iobase + RME96_IO_PLAY_BUFFER + pos,
|
||||
src, count);
|
||||
}
|
||||
|
||||
static int
|
||||
snd_rme96_playback_copy_kernel(struct snd_pcm_substream *substream,
|
||||
int channel, unsigned long pos,
|
||||
void *src, unsigned long count)
|
||||
{
|
||||
struct rme96 *rme96 = snd_pcm_substream_chip(substream);
|
||||
|
||||
memcpy_toio(rme96->iobase + RME96_IO_PLAY_BUFFER + pos, src, count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
snd_rme96_capture_copy(struct snd_pcm_substream *substream,
|
||||
int channel, /* not used (interleaved data) */
|
||||
snd_pcm_uframes_t pos,
|
||||
void __user *dst,
|
||||
snd_pcm_uframes_t count)
|
||||
int channel, unsigned long pos,
|
||||
void __user *dst, unsigned long count)
|
||||
{
|
||||
struct rme96 *rme96 = snd_pcm_substream_chip(substream);
|
||||
count <<= rme96->capture_frlog;
|
||||
pos <<= rme96->capture_frlog;
|
||||
return copy_to_user_fromio(dst, rme96->iobase + RME96_IO_REC_BUFFER + pos,
|
||||
|
||||
return copy_to_user_fromio(dst,
|
||||
rme96->iobase + RME96_IO_REC_BUFFER + pos,
|
||||
count);
|
||||
}
|
||||
|
||||
static int
|
||||
snd_rme96_capture_copy_kernel(struct snd_pcm_substream *substream,
|
||||
int channel, unsigned long pos,
|
||||
void *dst, unsigned long count)
|
||||
{
|
||||
struct rme96 *rme96 = snd_pcm_substream_chip(substream);
|
||||
|
||||
memcpy_fromio(dst, rme96->iobase + RME96_IO_REC_BUFFER + pos, count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Digital output capabilities (S/PDIF)
|
||||
*/
|
||||
@ -1513,8 +1527,9 @@ static const struct snd_pcm_ops snd_rme96_playback_spdif_ops = {
|
||||
.prepare = snd_rme96_playback_prepare,
|
||||
.trigger = snd_rme96_playback_trigger,
|
||||
.pointer = snd_rme96_playback_pointer,
|
||||
.copy = snd_rme96_playback_copy,
|
||||
.silence = snd_rme96_playback_silence,
|
||||
.copy_user = snd_rme96_playback_copy,
|
||||
.copy_kernel = snd_rme96_playback_copy_kernel,
|
||||
.fill_silence = snd_rme96_playback_silence,
|
||||
.mmap = snd_pcm_lib_mmap_iomem,
|
||||
};
|
||||
|
||||
@ -1526,7 +1541,8 @@ static const struct snd_pcm_ops snd_rme96_capture_spdif_ops = {
|
||||
.prepare = snd_rme96_capture_prepare,
|
||||
.trigger = snd_rme96_capture_trigger,
|
||||
.pointer = snd_rme96_capture_pointer,
|
||||
.copy = snd_rme96_capture_copy,
|
||||
.copy_user = snd_rme96_capture_copy,
|
||||
.copy_kernel = snd_rme96_capture_copy_kernel,
|
||||
.mmap = snd_pcm_lib_mmap_iomem,
|
||||
};
|
||||
|
||||
@ -1538,8 +1554,9 @@ static const struct snd_pcm_ops snd_rme96_playback_adat_ops = {
|
||||
.prepare = snd_rme96_playback_prepare,
|
||||
.trigger = snd_rme96_playback_trigger,
|
||||
.pointer = snd_rme96_playback_pointer,
|
||||
.copy = snd_rme96_playback_copy,
|
||||
.silence = snd_rme96_playback_silence,
|
||||
.copy_user = snd_rme96_playback_copy,
|
||||
.copy_kernel = snd_rme96_playback_copy_kernel,
|
||||
.fill_silence = snd_rme96_playback_silence,
|
||||
.mmap = snd_pcm_lib_mmap_iomem,
|
||||
};
|
||||
|
||||
@ -1551,7 +1568,8 @@ static const struct snd_pcm_ops snd_rme96_capture_adat_ops = {
|
||||
.prepare = snd_rme96_capture_prepare,
|
||||
.trigger = snd_rme96_capture_trigger,
|
||||
.pointer = snd_rme96_capture_pointer,
|
||||
.copy = snd_rme96_capture_copy,
|
||||
.copy_user = snd_rme96_capture_copy,
|
||||
.copy_kernel = snd_rme96_capture_copy_kernel,
|
||||
.mmap = snd_pcm_lib_mmap_iomem,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user