Lines Matching full:hcd
3 * DMA memory management for framework level HCD code (hc_driver)
21 #include <linux/usb/hcd.h>
53 * @hcd: the bus whose buffer pools are to be initialized
65 int hcd_buffer_create(struct usb_hcd *hcd) in hcd_buffer_create() argument
70 if (hcd->localmem_pool || !hcd_uses_dma(hcd)) in hcd_buffer_create()
78 hcd->pool[i] = dma_pool_create(name, hcd->self.sysdev, in hcd_buffer_create()
80 if (!hcd->pool[i]) { in hcd_buffer_create()
81 hcd_buffer_destroy(hcd); in hcd_buffer_create()
91 * @hcd: the bus whose buffer pools are to be destroyed
97 void hcd_buffer_destroy(struct usb_hcd *hcd) in hcd_buffer_destroy() argument
105 dma_pool_destroy(hcd->pool[i]); in hcd_buffer_destroy()
106 hcd->pool[i] = NULL; in hcd_buffer_destroy()
122 struct usb_hcd *hcd = bus_to_hcd(bus); in hcd_buffer_alloc() local
128 if (hcd->localmem_pool) in hcd_buffer_alloc()
129 return gen_pool_dma_alloc(hcd->localmem_pool, size, dma); in hcd_buffer_alloc()
132 if (!hcd_uses_dma(hcd)) { in hcd_buffer_alloc()
139 return dma_pool_alloc(hcd->pool[i], mem_flags, dma); in hcd_buffer_alloc()
141 return dma_alloc_coherent(hcd->self.sysdev, size, dma, mem_flags); in hcd_buffer_alloc()
151 struct usb_hcd *hcd = bus_to_hcd(bus); in hcd_buffer_free() local
157 if (hcd->localmem_pool) { in hcd_buffer_free()
158 gen_pool_free(hcd->localmem_pool, (unsigned long)addr, size); in hcd_buffer_free()
162 if (!hcd_uses_dma(hcd)) { in hcd_buffer_free()
169 dma_pool_free(hcd->pool[i], addr, dma); in hcd_buffer_free()
173 dma_free_coherent(hcd->self.sysdev, size, addr, dma); in hcd_buffer_free()
176 void *hcd_buffer_alloc_pages(struct usb_hcd *hcd, in hcd_buffer_alloc_pages() argument
182 if (hcd->localmem_pool) in hcd_buffer_alloc_pages()
183 return gen_pool_dma_alloc_align(hcd->localmem_pool, in hcd_buffer_alloc_pages()
187 if (!hcd_uses_dma(hcd)) { in hcd_buffer_alloc_pages()
193 return dma_alloc_coherent(hcd->self.sysdev, in hcd_buffer_alloc_pages()
197 void hcd_buffer_free_pages(struct usb_hcd *hcd, in hcd_buffer_free_pages() argument
203 if (hcd->localmem_pool) { in hcd_buffer_free_pages()
204 gen_pool_free(hcd->localmem_pool, in hcd_buffer_free_pages()
209 if (!hcd_uses_dma(hcd)) { in hcd_buffer_free_pages()
214 dma_free_coherent(hcd->self.sysdev, size, addr, dma); in hcd_buffer_free_pages()