|
@@ -145,6 +145,12 @@ static void *swiotlb_bus_to_virt(dma_addr_t address)
|
|
return phys_to_virt(swiotlb_bus_to_phys(address));
|
|
return phys_to_virt(swiotlb_bus_to_phys(address));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int __weak swiotlb_arch_address_needs_mapping(struct device *hwdev,
|
|
|
|
+ dma_addr_t addr, size_t size)
|
|
|
|
+{
|
|
|
|
+ return !is_buffer_dma_capable(dma_get_mask(hwdev), addr, size);
|
|
|
|
+}
|
|
|
|
+
|
|
int __weak swiotlb_arch_range_needs_mapping(phys_addr_t paddr, size_t size)
|
|
int __weak swiotlb_arch_range_needs_mapping(phys_addr_t paddr, size_t size)
|
|
{
|
|
{
|
|
return 0;
|
|
return 0;
|
|
@@ -309,10 +315,10 @@ cleanup1:
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
-static int
|
|
|
|
|
|
+static inline int
|
|
address_needs_mapping(struct device *hwdev, dma_addr_t addr, size_t size)
|
|
address_needs_mapping(struct device *hwdev, dma_addr_t addr, size_t size)
|
|
{
|
|
{
|
|
- return !is_buffer_dma_capable(dma_get_mask(hwdev), addr, size);
|
|
|
|
|
|
+ return swiotlb_arch_address_needs_mapping(hwdev, addr, size);
|
|
}
|
|
}
|
|
|
|
|
|
static inline int range_needs_mapping(phys_addr_t paddr, size_t size)
|
|
static inline int range_needs_mapping(phys_addr_t paddr, size_t size)
|