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 --- |