usb: add a hcd_uses_dma helper
The USB buffer allocation code is the only place in the usb core (and in fact the whole kernel) that uses is_device_dma_capable, while the URB mapping code uses the uses_dma flag in struct usb_bus. Switch the buffer allocation to use the uses_dma flag used by the rest of the USB code, and create a helper in hcd.h that checks this flag as well as the CONFIG_HAS_DMA to simplify the caller a bit. Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20190811080520.21712-3-hch@lst.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
dd3ecf17ba
commit
edfbcb321f
@@ -66,9 +66,7 @@ int hcd_buffer_create(struct usb_hcd *hcd)
|
||||
char name[16];
|
||||
int i, size;
|
||||
|
||||
if (hcd->localmem_pool ||
|
||||
!IS_ENABLED(CONFIG_HAS_DMA) ||
|
||||
!is_device_dma_capable(hcd->self.sysdev))
|
||||
if (hcd->localmem_pool || !hcd_uses_dma(hcd))
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < HCD_BUFFER_POOLS; i++) {
|
||||
@@ -129,8 +127,7 @@ void *hcd_buffer_alloc(
|
||||
return gen_pool_dma_alloc(hcd->localmem_pool, size, dma);
|
||||
|
||||
/* some USB hosts just use PIO */
|
||||
if (!IS_ENABLED(CONFIG_HAS_DMA) ||
|
||||
!is_device_dma_capable(bus->sysdev)) {
|
||||
if (!hcd_uses_dma(hcd)) {
|
||||
*dma = ~(dma_addr_t) 0;
|
||||
return kmalloc(size, mem_flags);
|
||||
}
|
||||
@@ -160,8 +157,7 @@ void hcd_buffer_free(
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IS_ENABLED(CONFIG_HAS_DMA) ||
|
||||
!is_device_dma_capable(bus->sysdev)) {
|
||||
if (!hcd_uses_dma(hcd)) {
|
||||
kfree(addr);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user