|
@@ -1721,36 +1721,27 @@ static int scratchpad_alloc(struct xhci_hcd *xhci, gfp_t flags)
|
|
|
if (!xhci->scratchpad->sp_buffers)
|
|
|
goto fail_sp3;
|
|
|
|
|
|
- xhci->scratchpad->sp_dma_buffers =
|
|
|
- kzalloc(sizeof(dma_addr_t) * num_sp, flags);
|
|
|
-
|
|
|
- if (!xhci->scratchpad->sp_dma_buffers)
|
|
|
- goto fail_sp4;
|
|
|
-
|
|
|
xhci->dcbaa->dev_context_ptrs[0] = cpu_to_le64(xhci->scratchpad->sp_dma);
|
|
|
for (i = 0; i < num_sp; i++) {
|
|
|
dma_addr_t dma;
|
|
|
void *buf = dma_alloc_coherent(dev, xhci->page_size, &dma,
|
|
|
flags);
|
|
|
if (!buf)
|
|
|
- goto fail_sp5;
|
|
|
+ goto fail_sp4;
|
|
|
|
|
|
xhci->scratchpad->sp_array[i] = dma;
|
|
|
xhci->scratchpad->sp_buffers[i] = buf;
|
|
|
- xhci->scratchpad->sp_dma_buffers[i] = dma;
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
- fail_sp5:
|
|
|
+ fail_sp4:
|
|
|
for (i = i - 1; i >= 0; i--) {
|
|
|
dma_free_coherent(dev, xhci->page_size,
|
|
|
xhci->scratchpad->sp_buffers[i],
|
|
|
- xhci->scratchpad->sp_dma_buffers[i]);
|
|
|
+ xhci->scratchpad->sp_array[i]);
|
|
|
}
|
|
|
- kfree(xhci->scratchpad->sp_dma_buffers);
|
|
|
|
|
|
- fail_sp4:
|
|
|
kfree(xhci->scratchpad->sp_buffers);
|
|
|
|
|
|
fail_sp3:
|
|
@@ -1780,9 +1771,8 @@ static void scratchpad_free(struct xhci_hcd *xhci)
|
|
|
for (i = 0; i < num_sp; i++) {
|
|
|
dma_free_coherent(dev, xhci->page_size,
|
|
|
xhci->scratchpad->sp_buffers[i],
|
|
|
- xhci->scratchpad->sp_dma_buffers[i]);
|
|
|
+ xhci->scratchpad->sp_array[i]);
|
|
|
}
|
|
|
- kfree(xhci->scratchpad->sp_dma_buffers);
|
|
|
kfree(xhci->scratchpad->sp_buffers);
|
|
|
dma_free_coherent(dev, num_sp * sizeof(u64),
|
|
|
xhci->scratchpad->sp_array,
|