diff --git a/driver/audio_driver.c b/driver/audio_driver.c index 3d9debd..cc6240e 100644 --- a/driver/audio_driver.c +++ b/driver/audio_driver.c @@ -936,6 +936,8 @@ chip->dma_playback_offset = 0; chip->dma_playback_buffer = runtime->dma_area; chip->pcm_playback_buffer_size = snd_pcm_lib_buffer_bytes(chip->playback_substream); + // early startup to fix problem with read-write interleaved mode pre-buffering + chip->mr_alsa_audio_ops->start_interrupts(chip->ravenna_peer, 1); } else if(substream->stream == SNDRV_PCM_STREAM_CAPTURE) { index 5a90eca..8023708 100644 --- a/driver/manager.c +++ b/driver/manager.c @@ -271,6 +271,10 @@ return false; MTAL_DP("MergingRAVENNAAudioDriver::startIO\n"); + if (is_playback && self->m_bIsPlaybackIO) + return true; + if (!is_playback && self->m_bIsRecordingIO) + return true; if (!is_playback) { printk(KERN_DEBUG "starting capture I/O\n");