diff options
Diffstat (limited to 'lib/swiotlb.c')
-rw-r--r-- | lib/swiotlb.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/lib/swiotlb.c b/lib/swiotlb.c index a012d93792b7..9e2fe3e1804c 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c | |||
@@ -114,21 +114,11 @@ setup_io_tlb_npages(char *str) | |||
114 | __setup("swiotlb=", setup_io_tlb_npages); | 114 | __setup("swiotlb=", setup_io_tlb_npages); |
115 | /* make io_tlb_overflow tunable too? */ | 115 | /* make io_tlb_overflow tunable too? */ |
116 | 116 | ||
117 | dma_addr_t __weak swiotlb_phys_to_bus(struct device *hwdev, phys_addr_t paddr) | ||
118 | { | ||
119 | return paddr; | ||
120 | } | ||
121 | |||
122 | phys_addr_t __weak swiotlb_bus_to_phys(struct device *hwdev, dma_addr_t baddr) | ||
123 | { | ||
124 | return baddr; | ||
125 | } | ||
126 | |||
127 | /* Note that this doesn't work with highmem page */ | 117 | /* Note that this doesn't work with highmem page */ |
128 | static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev, | 118 | static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev, |
129 | volatile void *address) | 119 | volatile void *address) |
130 | { | 120 | { |
131 | return swiotlb_phys_to_bus(hwdev, virt_to_phys(address)); | 121 | return phys_to_dma(hwdev, virt_to_phys(address)); |
132 | } | 122 | } |
133 | 123 | ||
134 | static void swiotlb_print_info(unsigned long bytes) | 124 | static void swiotlb_print_info(unsigned long bytes) |
@@ -567,7 +557,7 @@ void | |||
567 | swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, | 557 | swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr, |
568 | dma_addr_t dev_addr) | 558 | dma_addr_t dev_addr) |
569 | { | 559 | { |
570 | phys_addr_t paddr = swiotlb_bus_to_phys(hwdev, dev_addr); | 560 | phys_addr_t paddr = dma_to_phys(hwdev, dev_addr); |
571 | 561 | ||
572 | WARN_ON(irqs_disabled()); | 562 | WARN_ON(irqs_disabled()); |
573 | if (!is_swiotlb_buffer(paddr)) | 563 | if (!is_swiotlb_buffer(paddr)) |
@@ -612,7 +602,7 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page, | |||
612 | struct dma_attrs *attrs) | 602 | struct dma_attrs *attrs) |
613 | { | 603 | { |
614 | phys_addr_t phys = page_to_phys(page) + offset; | 604 | phys_addr_t phys = page_to_phys(page) + offset; |
615 | dma_addr_t dev_addr = swiotlb_phys_to_bus(dev, phys); | 605 | dma_addr_t dev_addr = phys_to_dma(dev, phys); |
616 | void *map; | 606 | void *map; |
617 | 607 | ||
618 | BUG_ON(dir == DMA_NONE); | 608 | BUG_ON(dir == DMA_NONE); |
@@ -656,7 +646,7 @@ EXPORT_SYMBOL_GPL(swiotlb_map_page); | |||
656 | static void unmap_single(struct device *hwdev, dma_addr_t dev_addr, | 646 | static void unmap_single(struct device *hwdev, dma_addr_t dev_addr, |
657 | size_t size, int dir) | 647 | size_t size, int dir) |
658 | { | 648 | { |
659 | phys_addr_t paddr = swiotlb_bus_to_phys(hwdev, dev_addr); | 649 | phys_addr_t paddr = dma_to_phys(hwdev, dev_addr); |
660 | 650 | ||
661 | BUG_ON(dir == DMA_NONE); | 651 | BUG_ON(dir == DMA_NONE); |
662 | 652 | ||
@@ -699,7 +689,7 @@ static void | |||
699 | swiotlb_sync_single(struct device *hwdev, dma_addr_t dev_addr, | 689 | swiotlb_sync_single(struct device *hwdev, dma_addr_t dev_addr, |
700 | size_t size, int dir, int target) | 690 | size_t size, int dir, int target) |
701 | { | 691 | { |
702 | phys_addr_t paddr = swiotlb_bus_to_phys(hwdev, dev_addr); | 692 | phys_addr_t paddr = dma_to_phys(hwdev, dev_addr); |
703 | 693 | ||
704 | BUG_ON(dir == DMA_NONE); | 694 | BUG_ON(dir == DMA_NONE); |
705 | 695 | ||
@@ -788,7 +778,7 @@ swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, | |||
788 | 778 | ||
789 | for_each_sg(sgl, sg, nelems, i) { | 779 | for_each_sg(sgl, sg, nelems, i) { |
790 | phys_addr_t paddr = sg_phys(sg); | 780 | phys_addr_t paddr = sg_phys(sg); |
791 | dma_addr_t dev_addr = swiotlb_phys_to_bus(hwdev, paddr); | 781 | dma_addr_t dev_addr = phys_to_dma(hwdev, paddr); |
792 | 782 | ||
793 | if (swiotlb_force || | 783 | if (swiotlb_force || |
794 | !dma_capable(hwdev, dev_addr, sg->length)) { | 784 | !dma_capable(hwdev, dev_addr, sg->length)) { |