ALSA: memalloc: Correctly name as WC
SNDRV_DMA_TYPE_DEV_UC and SNDRV_DMA_TYPE_DEV_UC_SG are incorrectly named as if they were for the uncached memory, while actually we set the pages as write-combined. Rename them to reflect the right attribute. Acked-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210802072815.13551-3-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Родитель
723c1252e0
Коммит
58a95dfa4f
|
@ -31,13 +31,13 @@ struct snd_dma_device {
|
|||
#define SNDRV_DMA_TYPE_UNKNOWN 0 /* not defined */
|
||||
#define SNDRV_DMA_TYPE_CONTINUOUS 1 /* continuous no-DMA memory */
|
||||
#define SNDRV_DMA_TYPE_DEV 2 /* generic device continuous */
|
||||
#define SNDRV_DMA_TYPE_DEV_UC 5 /* continuous non-cahced */
|
||||
#define SNDRV_DMA_TYPE_DEV_WC 5 /* continuous write-combined */
|
||||
#ifdef CONFIG_SND_DMA_SGBUF
|
||||
#define SNDRV_DMA_TYPE_DEV_SG 3 /* generic device SG-buffer */
|
||||
#define SNDRV_DMA_TYPE_DEV_UC_SG 6 /* SG non-cached */
|
||||
#define SNDRV_DMA_TYPE_DEV_WC_SG 6 /* SG write-combined */
|
||||
#else
|
||||
#define SNDRV_DMA_TYPE_DEV_SG SNDRV_DMA_TYPE_DEV /* no SG-buf support */
|
||||
#define SNDRV_DMA_TYPE_DEV_UC_SG SNDRV_DMA_TYPE_DEV_UC
|
||||
#define SNDRV_DMA_TYPE_DEV_WC_SG SNDRV_DMA_TYPE_DEV_WC
|
||||
#endif
|
||||
#ifdef CONFIG_GENERIC_ALLOCATOR
|
||||
#define SNDRV_DMA_TYPE_DEV_IRAM 4 /* generic device iram-buffer */
|
||||
|
|
|
@ -387,7 +387,7 @@ static void *snd_dma_dev_alloc(struct snd_dma_buffer *dmab, size_t size)
|
|||
| __GFP_NOWARN; /* no stack trace print - this call is non-critical */
|
||||
p = dma_alloc_coherent(dmab->dev.dev, size, &dmab->addr, gfp_flags);
|
||||
#ifdef CONFIG_X86
|
||||
if (p && dmab->dev.type == SNDRV_DMA_TYPE_DEV_UC)
|
||||
if (p && dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC)
|
||||
set_memory_wc((unsigned long)p, PAGE_ALIGN(size) >> PAGE_SHIFT);
|
||||
#endif
|
||||
return p;
|
||||
|
@ -396,7 +396,7 @@ static void *snd_dma_dev_alloc(struct snd_dma_buffer *dmab, size_t size)
|
|||
static void snd_dma_dev_free(struct snd_dma_buffer *dmab)
|
||||
{
|
||||
#ifdef CONFIG_X86
|
||||
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_UC)
|
||||
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC)
|
||||
set_memory_wb((unsigned long)dmab->area,
|
||||
PAGE_ALIGN(dmab->bytes) >> PAGE_SHIFT);
|
||||
#endif
|
||||
|
@ -425,14 +425,14 @@ static const struct snd_malloc_ops *dma_ops[] = {
|
|||
[SNDRV_DMA_TYPE_VMALLOC] = &snd_dma_vmalloc_ops,
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
[SNDRV_DMA_TYPE_DEV] = &snd_dma_dev_ops,
|
||||
[SNDRV_DMA_TYPE_DEV_UC] = &snd_dma_dev_ops,
|
||||
[SNDRV_DMA_TYPE_DEV_WC] = &snd_dma_dev_ops,
|
||||
#ifdef CONFIG_GENERIC_ALLOCATOR
|
||||
[SNDRV_DMA_TYPE_DEV_IRAM] = &snd_dma_iram_ops,
|
||||
#endif /* CONFIG_GENERIC_ALLOCATOR */
|
||||
#endif /* CONFIG_HAS_DMA */
|
||||
#ifdef CONFIG_SND_DMA_SGBUF
|
||||
[SNDRV_DMA_TYPE_DEV_SG] = &snd_dma_sg_ops,
|
||||
[SNDRV_DMA_TYPE_DEV_UC_SG] = &snd_dma_sg_ops,
|
||||
[SNDRV_DMA_TYPE_DEV_WC_SG] = &snd_dma_sg_ops,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -43,8 +43,8 @@ static void snd_dma_sg_free(struct snd_dma_buffer *dmab)
|
|||
dmab->area = NULL;
|
||||
|
||||
tmpb.dev.type = SNDRV_DMA_TYPE_DEV;
|
||||
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_UC_SG)
|
||||
tmpb.dev.type = SNDRV_DMA_TYPE_DEV_UC;
|
||||
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG)
|
||||
tmpb.dev.type = SNDRV_DMA_TYPE_DEV_WC;
|
||||
tmpb.dev.dev = sgbuf->dev;
|
||||
for (i = 0; i < sgbuf->pages; i++) {
|
||||
if (!(sgbuf->table[i].addr & ~PAGE_MASK))
|
||||
|
@ -77,8 +77,8 @@ static void *snd_dma_sg_alloc(struct snd_dma_buffer *dmab, size_t size)
|
|||
dmab->private_data = sgbuf = kzalloc(sizeof(*sgbuf), GFP_KERNEL);
|
||||
if (!sgbuf)
|
||||
return NULL;
|
||||
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_UC_SG) {
|
||||
type = SNDRV_DMA_TYPE_DEV_UC;
|
||||
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG) {
|
||||
type = SNDRV_DMA_TYPE_DEV_WC;
|
||||
#ifdef pgprot_noncached
|
||||
prot = pgprot_noncached(PAGE_KERNEL);
|
||||
#endif
|
||||
|
|
|
@ -753,7 +753,7 @@ int snd_hda_attach_pcm_stream(struct hda_bus *_bus, struct hda_codec *codec,
|
|||
if (size > MAX_PREALLOC_SIZE)
|
||||
size = MAX_PREALLOC_SIZE;
|
||||
if (chip->uc_buffer)
|
||||
type = SNDRV_DMA_TYPE_DEV_UC_SG;
|
||||
type = SNDRV_DMA_TYPE_DEV_WC_SG;
|
||||
snd_pcm_set_managed_buffer_all(pcm, type, chip->card->dev,
|
||||
size, MAX_PREALLOC_SIZE);
|
||||
return 0;
|
||||
|
|
|
@ -1807,7 +1807,7 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,
|
|||
|
||||
/* use the non-cached pages in non-snoop mode */
|
||||
if (!azx_snoop(chip))
|
||||
azx_bus(chip)->dma_type = SNDRV_DMA_TYPE_DEV_UC;
|
||||
azx_bus(chip)->dma_type = SNDRV_DMA_TYPE_DEV_WC;
|
||||
|
||||
if (chip->driver_type == AZX_DRIVER_NVIDIA) {
|
||||
dev_dbg(chip->card->dev, "Enable delay in RIRB handling\n");
|
||||
|
|
|
@ -1427,7 +1427,7 @@ struct ich_pcm_table {
|
|||
};
|
||||
|
||||
#define intel8x0_dma_type(chip) \
|
||||
((chip)->fix_nocache ? SNDRV_DMA_TYPE_DEV_UC : SNDRV_DMA_TYPE_DEV)
|
||||
((chip)->fix_nocache ? SNDRV_DMA_TYPE_DEV_WC : SNDRV_DMA_TYPE_DEV)
|
||||
|
||||
static int snd_intel8x0_pcm1(struct intel8x0 *chip, int device,
|
||||
const struct ich_pcm_table *rec)
|
||||
|
|
|
@ -1776,7 +1776,7 @@ static int hdmi_lpe_audio_probe(struct platform_device *pdev)
|
|||
/* allocate dma pages;
|
||||
* try to allocate 600k buffer as default which is large enough
|
||||
*/
|
||||
snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV_UC,
|
||||
snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV_WC,
|
||||
card->dev, HAD_DEFAULT_BUFFER,
|
||||
HAD_MAX_BUFFER);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче