From 662394fb30fdbcc89ec387918714aebee6868a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 4 Sep 2019 19:01:23 +0200 Subject: brcm2708: update to latest patches from RPi foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- ...bcm2835-audio-Use-coherent-device-buffers.patch | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.19/950-0458-staging-bcm2835-audio-Use-coherent-device-buffers.patch (limited to 'target/linux/brcm2708/patches-4.19/950-0458-staging-bcm2835-audio-Use-coherent-device-buffers.patch') diff --git a/target/linux/brcm2708/patches-4.19/950-0458-staging-bcm2835-audio-Use-coherent-device-buffers.patch b/target/linux/brcm2708/patches-4.19/950-0458-staging-bcm2835-audio-Use-coherent-device-buffers.patch new file mode 100644 index 0000000000..253964119e --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0458-staging-bcm2835-audio-Use-coherent-device-buffers.patch @@ -0,0 +1,61 @@ +From 09aa60ecdc595f60d42cf464ed11301ff03e8c95 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 4 Sep 2018 17:58:54 +0200 +Subject: [PATCH 458/782] staging: bcm2835-audio: Use coherent device buffers + +commit ad29c6e6cbf6f2af7362b043adad51a3be3d39c7 upstream. + +The memory access to the pages allocated with +SNDRV_DMA_TYPE_CONTINUOUS are basically non-coherent, and it becomes a +problem when a process accesses via mmap. + +For the more consistent access, use the device coherent memory, just +by replacing the call pattern in the allocator helpers. + +The only point we need to be careful for is the device object passed +there; since bcm2835-audio driver creates fake devices and each card +is created on top of that, we need to pass its parent device as the +real device object. + +Signed-off-by: Takashi Iwai +Tested-by: Stefan Wahren +Signed-off-by: Greg Kroah-Hartman +--- + .../vc04_services/bcm2835-audio/bcm2835-pcm.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c ++++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c +@@ -345,8 +345,8 @@ int snd_bcm2835_new_pcm(struct bcm2835_c + + /* pre-allocation of buffers */ + /* NOTE: this may fail */ +- snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, +- snd_dma_continuous_data(GFP_KERNEL), ++ snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, ++ chip->card->dev->parent, + snd_bcm2835_playback_hw.buffer_bytes_max, + snd_bcm2835_playback_hw.buffer_bytes_max); + +@@ -371,8 +371,8 @@ int snd_bcm2835_new_spdif_pcm(struct bcm + + /* pre-allocation of buffers */ + /* NOTE: this may fail */ +- snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, +- snd_dma_continuous_data(GFP_KERNEL), ++ snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, ++ chip->card->dev->parent, + snd_bcm2835_playback_spdif_hw.buffer_bytes_max, snd_bcm2835_playback_spdif_hw.buffer_bytes_max); + + return 0; +@@ -404,8 +404,8 @@ int snd_bcm2835_new_simple_pcm(struct bc + + snd_pcm_lib_preallocate_pages_for_all( + pcm, +- SNDRV_DMA_TYPE_CONTINUOUS, +- snd_dma_continuous_data(GFP_KERNEL), ++ SNDRV_DMA_TYPE_DEV, ++ chip->card->dev->parent, + snd_bcm2835_playback_hw.buffer_bytes_max, + snd_bcm2835_playback_hw.buffer_bytes_max); + -- cgit v1.2.3