diff options
Diffstat (limited to 'libre/linux-libre/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch')
-rw-r--r-- | libre/linux-libre/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/libre/linux-libre/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch b/libre/linux-libre/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch deleted file mode 100644 index 0305e7062..000000000 --- a/libre/linux-libre/0006-ALSA-pci-cs46xx-Fix-set-up-buffer-type-properly.patch +++ /dev/null @@ -1,95 +0,0 @@ -From b5ed7b38f5551c5dfca87ab29d679f3d6d327557 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai <tiwai@suse.de> -Date: Mon, 9 Aug 2021 09:18:29 +0200 -Subject: [PATCH 6/6] ALSA: pci: cs46xx: Fix set up buffer type properly - -CS46xx driver switches the buffer depending on the number of periods, -and in some cases it switches to the own buffer without updating the -buffer type properly. This may cause a problem with the mmap on -exotic architectures that require the own mmap call for the coherent -DMA buffer. - -This patch addresses the potential breakage by replacing the buffer -setup with the proper macro. It also simplifies the source code, -too. - -Signed-off-by: Takashi Iwai <tiwai@suse.de> -Fixes: https://bugs.archlinux.org/task/72059 ---- - sound/pci/cs46xx/cs46xx_lib.c | 30 ++++++++---------------------- - 1 file changed, 8 insertions(+), 22 deletions(-) - -diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c -index 1e1eb17f8e07..d43927dcd61e 100644 ---- a/sound/pci/cs46xx/cs46xx_lib.c -+++ b/sound/pci/cs46xx/cs46xx_lib.c -@@ -1121,9 +1121,7 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream, - if (params_periods(hw_params) == CS46XX_FRAGS) { - if (runtime->dma_area != cpcm->hw_buf.area) - snd_pcm_lib_free_pages(substream); -- runtime->dma_area = cpcm->hw_buf.area; -- runtime->dma_addr = cpcm->hw_buf.addr; -- runtime->dma_bytes = cpcm->hw_buf.bytes; -+ snd_pcm_set_runtime_buffer(substream, &cpcm->hw_buf); - - - #ifdef CONFIG_SND_CS46XX_NEW_DSP -@@ -1143,11 +1141,8 @@ static int snd_cs46xx_playback_hw_params(struct snd_pcm_substream *substream, - #endif - - } else { -- if (runtime->dma_area == cpcm->hw_buf.area) { -- runtime->dma_area = NULL; -- runtime->dma_addr = 0; -- runtime->dma_bytes = 0; -- } -+ if (runtime->dma_area == cpcm->hw_buf.area) -+ snd_pcm_set_runtime_buffer(substream, NULL); - err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); - if (err < 0) { - #ifdef CONFIG_SND_CS46XX_NEW_DSP -@@ -1196,9 +1191,7 @@ static int snd_cs46xx_playback_hw_free(struct snd_pcm_substream *substream) - if (runtime->dma_area != cpcm->hw_buf.area) - snd_pcm_lib_free_pages(substream); - -- runtime->dma_area = NULL; -- runtime->dma_addr = 0; -- runtime->dma_bytes = 0; -+ snd_pcm_set_runtime_buffer(substream, NULL); - - return 0; - } -@@ -1287,16 +1280,11 @@ static int snd_cs46xx_capture_hw_params(struct snd_pcm_substream *substream, - if (runtime->periods == CS46XX_FRAGS) { - if (runtime->dma_area != chip->capt.hw_buf.area) - snd_pcm_lib_free_pages(substream); -- runtime->dma_area = chip->capt.hw_buf.area; -- runtime->dma_addr = chip->capt.hw_buf.addr; -- runtime->dma_bytes = chip->capt.hw_buf.bytes; -+ snd_pcm_set_runtime_buffer(substream, &chip->capt.hw_buf); - substream->ops = &snd_cs46xx_capture_ops; - } else { -- if (runtime->dma_area == chip->capt.hw_buf.area) { -- runtime->dma_area = NULL; -- runtime->dma_addr = 0; -- runtime->dma_bytes = 0; -- } -+ if (runtime->dma_area == chip->capt.hw_buf.area) -+ snd_pcm_set_runtime_buffer(substream, NULL); - err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); - if (err < 0) - return err; -@@ -1313,9 +1301,7 @@ static int snd_cs46xx_capture_hw_free(struct snd_pcm_substream *substream) - - if (runtime->dma_area != chip->capt.hw_buf.area) - snd_pcm_lib_free_pages(substream); -- runtime->dma_area = NULL; -- runtime->dma_addr = 0; -- runtime->dma_bytes = 0; -+ snd_pcm_set_runtime_buffer(substream, NULL); - - return 0; - } --- -2.33.0 - |