jazzdma.c (2a267e7c41aa88215de2b542de797d03d16ecdfd) jazzdma.c (2e96e04d25caaca8039ba9561e7e02ee8a192553)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Mips Jazz DMA controller support
4 * Copyright (C) 1995, 1996 by Andreas Busse
5 *
6 * NOTE: Some of the argument checking could be removed when
7 * things have settled down. Also, instead of returning 0xffffffff
8 * on failure of vdma_alloc() one could leave page #0 unused

--- 561 unchanged lines hidden (view full) ---

570 return NULL;
571
572 *dma_handle = vdma_alloc(virt_to_phys(ret), size);
573 if (*dma_handle == DMA_MAPPING_ERROR) {
574 dma_direct_free_pages(dev, size, ret, *dma_handle, attrs);
575 return NULL;
576 }
577
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Mips Jazz DMA controller support
4 * Copyright (C) 1995, 1996 by Andreas Busse
5 *
6 * NOTE: Some of the argument checking could be removed when
7 * things have settled down. Also, instead of returning 0xffffffff
8 * on failure of vdma_alloc() one could leave page #0 unused

--- 561 unchanged lines hidden (view full) ---

570 return NULL;
571
572 *dma_handle = vdma_alloc(virt_to_phys(ret), size);
573 if (*dma_handle == DMA_MAPPING_ERROR) {
574 dma_direct_free_pages(dev, size, ret, *dma_handle, attrs);
575 return NULL;
576 }
577
578 if (!(attrs & DMA_ATTR_NON_CONSISTENT)) {
579 dma_cache_wback_inv((unsigned long)ret, size);
580 ret = (void *)UNCAC_ADDR(ret);
581 }
582 return ret;
583}
584
585static void jazz_dma_free(struct device *dev, size_t size, void *vaddr,
586 dma_addr_t dma_handle, unsigned long attrs)
587{
588 vdma_free(dma_handle);
578 return ret;
579}
580
581static void jazz_dma_free(struct device *dev, size_t size, void *vaddr,
582 dma_addr_t dma_handle, unsigned long attrs)
583{
584 vdma_free(dma_handle);
589 if (!(attrs & DMA_ATTR_NON_CONSISTENT))
590 vaddr = (void *)CAC_ADDR((unsigned long)vaddr);
591 dma_direct_free_pages(dev, size, vaddr, dma_handle, attrs);
592}
593
594static dma_addr_t jazz_dma_map_page(struct device *dev, struct page *page,
595 unsigned long offset, size_t size, enum dma_data_direction dir,
596 unsigned long attrs)
597{
598 phys_addr_t phys = page_to_phys(page) + offset;

--- 94 unchanged lines hidden ---
585 dma_direct_free_pages(dev, size, vaddr, dma_handle, attrs);
586}
587
588static dma_addr_t jazz_dma_map_page(struct device *dev, struct page *page,
589 unsigned long offset, size_t size, enum dma_data_direction dir,
590 unsigned long attrs)
591{
592 phys_addr_t phys = page_to_phys(page) + offset;

--- 94 unchanged lines hidden ---