From bf847edd7382bc237374cec230ecf825b938ed63 Mon Sep 17 00:00:00 2001 From: Andrea Bondavalli Date: Sun, 31 Jan 2021 18:19:33 +0100 Subject: [PATCH] Added patch to Ravenna driver to solve a possible corruption issue at the beginning of a playback or recording caused by not initialized buffers. --- ...a-alsa-lkm-init-play-capture-buffers.patch | 22 +++++++++++++++++++ build.sh | 3 +++ 2 files changed, 25 insertions(+) create mode 100644 3rdparty/patches/ravenna-alsa-lkm-init-play-capture-buffers.patch diff --git a/3rdparty/patches/ravenna-alsa-lkm-init-play-capture-buffers.patch b/3rdparty/patches/ravenna-alsa-lkm-init-play-capture-buffers.patch new file mode 100644 index 0000000..c06e5f0 --- /dev/null +++ b/3rdparty/patches/ravenna-alsa-lkm-init-play-capture-buffers.patch @@ -0,0 +1,22 @@ +diff --git a/driver/audio_driver.c b/driver/audio_driver.c +index 3d9debd..339327b 100644 +--- a/driver/audio_driver.c ++++ b/driver/audio_driver.c +@@ -2441,7 +2142,7 @@ static int mr_alsa_audio_preallocate_memory(struct mr_alsa_audio_chip *chip) + printk(KERN_ERR "mr_alsa_audio_preallocate_memory: could not allocate playback buffer (%zd bytes vmalloc requested...\n", wanted); + goto _failed; + } +- ++ memset(chip->playback_buffer, 0, wanted); + + wanted = mr_alsa_audio_pcm_hardware_capture.buffer_bytes_max; // MR_ALSA_RINGBUFFER_NB_FRAMES * MR_ALSA_NB_CHANNELS_MAX * 4; + +@@ -2452,6 +2153,7 @@ static int mr_alsa_audio_preallocate_memory(struct mr_alsa_audio_chip *chip) + printk(KERN_ERR "mr_alsa_audio_preallocate_memory: could not allocate capture buffer (%zd bytes vmalloc requested...\n", wanted); + goto _failed; + } ++ memset(chip->capture_buffer, 0, wanted); + for (i = 0; i < MR_ALSA_NB_CHANNELS_MAX; i++) + { + chip->capture_buffer_channels_map[i] = (void*)chip->capture_buffer + MR_ALSA_RINGBUFFER_NB_FRAMES * i * 4; + diff --git a/build.sh b/build.sh index a4b3c85..8f4bf78 100755 --- a/build.sh +++ b/build.sh @@ -24,12 +24,15 @@ if [ ! -d ravenna-alsa-lkm.git ]; then git apply ../patches/ravenna-alsa-lkm-independent-playback-capture.patch git apply ../patches/ravenna-alsa-lkm-direct-pcm-transfer.patch git apply ../patches/ravenna-alsa-lkm-enable-mono-channels.patch + git apply ../patches/ravenna-alsa-lkm-init-play-capture-buffers.patch echo "Building ravenna-alsa-lkm kernel module ..." cd driver make cd ../.. fi +exit 1 + if [ ! -d cpp-httplib.git ]; then git clone https://github.com/yhirose/cpp-httplib.git cd cpp-httplib