]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/usb/core/buffer.c
usb: separate out sysdev pointer from usb_bus
[karo-tx-linux.git] / drivers / usb / core / buffer.c
index b9bf6e2eb6feabc49daebff549b361d06622d8e9..b64568cf572c9eade1bb5121c4118760bd845ef5 100644 (file)
@@ -66,7 +66,7 @@ int hcd_buffer_create(struct usb_hcd *hcd)
        int             i, size;
 
        if (!IS_ENABLED(CONFIG_HAS_DMA) ||
-           (!hcd->self.controller->dma_mask &&
+           (!is_device_dma_capable(hcd->self.sysdev) &&
             !(hcd->driver->flags & HCD_LOCAL_MEM)))
                return 0;
 
@@ -75,7 +75,7 @@ int hcd_buffer_create(struct usb_hcd *hcd)
                if (!size)
                        continue;
                snprintf(name, sizeof(name), "buffer-%d", size);
-               hcd->pool[i] = dma_pool_create(name, hcd->self.controller,
+               hcd->pool[i] = dma_pool_create(name, hcd->self.sysdev,
                                size, size, 0);
                if (!hcd->pool[i]) {
                        hcd_buffer_destroy(hcd);
@@ -130,7 +130,7 @@ void *hcd_buffer_alloc(
 
        /* some USB hosts just use PIO */
        if (!IS_ENABLED(CONFIG_HAS_DMA) ||
-           (!bus->controller->dma_mask &&
+           (!is_device_dma_capable(bus->sysdev) &&
             !(hcd->driver->flags & HCD_LOCAL_MEM))) {
                *dma = ~(dma_addr_t) 0;
                return kmalloc(size, mem_flags);
@@ -140,7 +140,7 @@ void *hcd_buffer_alloc(
                if (size <= pool_max[i])
                        return dma_pool_alloc(hcd->pool[i], mem_flags, dma);
        }
-       return dma_alloc_coherent(hcd->self.controller, size, dma, mem_flags);
+       return dma_alloc_coherent(hcd->self.sysdev, size, dma, mem_flags);
 }
 
 void hcd_buffer_free(
@@ -157,7 +157,7 @@ void hcd_buffer_free(
                return;
 
        if (!IS_ENABLED(CONFIG_HAS_DMA) ||
-           (!bus->controller->dma_mask &&
+           (!is_device_dma_capable(bus->sysdev) &&
             !(hcd->driver->flags & HCD_LOCAL_MEM))) {
                kfree(addr);
                return;
@@ -169,5 +169,5 @@ void hcd_buffer_free(
                        return;
                }
        }
-       dma_free_coherent(hcd->self.controller, size, addr, dma);
+       dma_free_coherent(hcd->self.sysdev, size, addr, dma);
 }