Commit 2f432f47 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: sh: Convert to generic PCM copy ops

This patch converts the sh_dac_audio driver code to use the new
unified PCM copy callback.  It's a straightforward conversion from
*_user() to *_iter() variants.

Link: https://lore.kernel.org/r/20230815190136.8987-15-tiwai@suse.de


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 2098765e
Loading
Loading
Loading
Loading
+3 −22
Original line number Diff line number Diff line
@@ -158,12 +158,12 @@ static int snd_sh_dac_pcm_trigger(struct snd_pcm_substream *substream, int cmd)

static int snd_sh_dac_pcm_copy(struct snd_pcm_substream *substream,
			       int channel, unsigned long pos,
			       void __user *src, unsigned long count)
			       struct iov_iter *src, unsigned long count)
{
	/* channel is not used (interleaved data) */
	struct snd_sh_dac *chip = snd_pcm_substream_chip(substream);

	if (copy_from_user_toio(chip->data_buffer + pos, src, count))
	if (copy_from_iter_toio(chip->data_buffer + pos, src, count))
		return -EFAULT;
	chip->buffer_end = chip->data_buffer + pos + count;

@@ -175,24 +175,6 @@ static int snd_sh_dac_pcm_copy(struct snd_pcm_substream *substream,
	return 0;
}

static int snd_sh_dac_pcm_copy_kernel(struct snd_pcm_substream *substream,
				      int channel, unsigned long pos,
				      void *src, unsigned long count)
{
	/* channel is not used (interleaved data) */
	struct snd_sh_dac *chip = snd_pcm_substream_chip(substream);

	memcpy_toio(chip->data_buffer + pos, src, count);
	chip->buffer_end = chip->data_buffer + pos + count;

	if (chip->empty) {
		chip->empty = 0;
		dac_audio_start_timer(chip);
	}

	return 0;
}

static int snd_sh_dac_pcm_silence(struct snd_pcm_substream *substream,
				  int channel, unsigned long pos,
				  unsigned long count)
@@ -227,8 +209,7 @@ static const struct snd_pcm_ops snd_sh_dac_pcm_ops = {
	.prepare	= snd_sh_dac_pcm_prepare,
	.trigger	= snd_sh_dac_pcm_trigger,
	.pointer	= snd_sh_dac_pcm_pointer,
	.copy_user	= snd_sh_dac_pcm_copy,
	.copy_kernel	= snd_sh_dac_pcm_copy_kernel,
	.copy		= snd_sh_dac_pcm_copy,
	.fill_silence	= snd_sh_dac_pcm_silence,
	.mmap		= snd_pcm_lib_mmap_iomem,
};