static void snd_bcm2835_pcm_transfer(struct snd_pcm_substream *substream, struct snd_pcm_indirect *rec, size_t bytes) { struct snd_pcm_runtime *runtime = substream->runtime; struct bcm2835_alsa_stream *alsa_stream = runtime->private_data; void *src = (void *) (substream->runtime->dma_area + rec->sw_data); int err; err = bcm2835_audio_write(alsa_stream, bytes, src); if (err) audio_error(" Failed to transfer to alsa device (%d)\n", err); }
static int snd_bcm2835_pcm_copy(struct snd_pcm_substream *substream, int channel, snd_pcm_uframes_t pos, void *src, snd_pcm_uframes_t count) { int ret; struct snd_pcm_runtime *runtime = substream->runtime; bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; audio_info(" .. IN\n"); audio_debug("copy.......... (%d) hwptr=%d appl=%d pos=%d\n", frames_to_bytes(runtime, count), frames_to_bytes(runtime, runtime-> status-> hw_ptr), frames_to_bytes(runtime, runtime->control->appl_ptr), alsa_stream->pos); ret = bcm2835_audio_write(alsa_stream, frames_to_bytes(runtime, count), src); audio_info(" .. OUT\n"); return ret; }