hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/include/sound/memalloc.h
....@@ -1,24 +1,9 @@
1
+/* SPDX-License-Identifier: GPL-2.0-or-later */
12 /*
23 * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
34 * Takashi Iwai <tiwai@suse.de>
45 *
56 * Generic memory allocators
6
- *
7
- *
8
- * This program is free software; you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation; either version 2 of the License, or
11
- * (at your option) any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License
19
- * along with this program; if not, write to the Free Software
20
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
- *
227 */
238
249 #ifndef __SOUND_MEMALLOC_H
....@@ -36,8 +21,6 @@
3621 struct device *dev; /* generic device */
3722 };
3823
39
-#define snd_dma_pci_data(pci) (&(pci)->dev)
40
-#define snd_dma_isa_data() NULL
4124 #define snd_dma_continuous_data(x) ((struct device *)(__force unsigned long)(x))
4225
4326
....@@ -47,16 +30,20 @@
4730 #define SNDRV_DMA_TYPE_UNKNOWN 0 /* not defined */
4831 #define SNDRV_DMA_TYPE_CONTINUOUS 1 /* continuous no-DMA memory */
4932 #define SNDRV_DMA_TYPE_DEV 2 /* generic device continuous */
33
+#define SNDRV_DMA_TYPE_DEV_UC 5 /* continuous non-cahced */
5034 #ifdef CONFIG_SND_DMA_SGBUF
5135 #define SNDRV_DMA_TYPE_DEV_SG 3 /* generic device SG-buffer */
36
+#define SNDRV_DMA_TYPE_DEV_UC_SG 6 /* SG non-cached */
5237 #else
5338 #define SNDRV_DMA_TYPE_DEV_SG SNDRV_DMA_TYPE_DEV /* no SG-buf support */
39
+#define SNDRV_DMA_TYPE_DEV_UC_SG SNDRV_DMA_TYPE_DEV_UC
5440 #endif
5541 #ifdef CONFIG_GENERIC_ALLOCATOR
5642 #define SNDRV_DMA_TYPE_DEV_IRAM 4 /* generic device iram-buffer */
5743 #else
5844 #define SNDRV_DMA_TYPE_DEV_IRAM SNDRV_DMA_TYPE_DEV
5945 #endif
46
+#define SNDRV_DMA_TYPE_VMALLOC 7 /* vmalloc'ed buffer */
6047
6148 /*
6249 * info for buffer allocation
....@@ -107,7 +94,11 @@
10794 size_t offset)
10895 {
10996 struct snd_sg_buf *sgbuf = dmab->private_data;
110
- dma_addr_t addr = sgbuf->table[offset >> PAGE_SHIFT].addr;
97
+ dma_addr_t addr;
98
+
99
+ if (!sgbuf)
100
+ return dmab->addr + offset;
101
+ addr = sgbuf->table[offset >> PAGE_SHIFT].addr;
111102 addr &= ~((dma_addr_t)PAGE_SIZE - 1);
112103 return addr + offset % PAGE_SIZE;
113104 }
....@@ -119,6 +110,9 @@
119110 size_t offset)
120111 {
121112 struct snd_sg_buf *sgbuf = dmab->private_data;
113
+
114
+ if (!sgbuf)
115
+ return dmab->area + offset;
122116 return sgbuf->table[offset >> PAGE_SHIFT].buf + offset % PAGE_SIZE;
123117 }
124118
....@@ -148,10 +142,6 @@
148142 int snd_dma_alloc_pages_fallback(int type, struct device *dev, size_t size,
149143 struct snd_dma_buffer *dmab);
150144 void snd_dma_free_pages(struct snd_dma_buffer *dmab);
151
-
152
-/* basic memory allocation functions */
153
-void *snd_malloc_pages(size_t size, gfp_t gfp_flags);
154
-void snd_free_pages(void *ptr, size_t size);
155145
156146 #endif /* __SOUND_MEMALLOC_H */
157147