forked from Minki/linux
usb: dwc2: gadget: Fix DMA memory freeing
Remove DMA memory free from EP disable flow by replacing dma_alloc_coherent with dmam_alloc_coherent. Tested-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Vardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
990758c53e
commit
9383e084a8
@ -3749,8 +3749,8 @@ static int dwc2_hsotg_ep_enable(struct usb_ep *ep,
|
||||
__func__, epctrl, epctrl_reg);
|
||||
|
||||
/* Allocate DMA descriptor chain for non-ctrl endpoints */
|
||||
if (using_desc_dma(hsotg)) {
|
||||
hs_ep->desc_list = dma_alloc_coherent(hsotg->dev,
|
||||
if (using_desc_dma(hsotg) && !hs_ep->desc_list) {
|
||||
hs_ep->desc_list = dmam_alloc_coherent(hsotg->dev,
|
||||
MAX_DMA_DESC_NUM_GENERIC *
|
||||
sizeof(struct dwc2_dma_desc),
|
||||
&hs_ep->desc_list_dma, GFP_ATOMIC);
|
||||
@ -3872,7 +3872,7 @@ error1:
|
||||
|
||||
error2:
|
||||
if (ret && using_desc_dma(hsotg) && hs_ep->desc_list) {
|
||||
dma_free_coherent(hsotg->dev, MAX_DMA_DESC_NUM_GENERIC *
|
||||
dmam_free_coherent(hsotg->dev, MAX_DMA_DESC_NUM_GENERIC *
|
||||
sizeof(struct dwc2_dma_desc),
|
||||
hs_ep->desc_list, hs_ep->desc_list_dma);
|
||||
hs_ep->desc_list = NULL;
|
||||
@ -3902,14 +3902,6 @@ static int dwc2_hsotg_ep_disable(struct usb_ep *ep)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Remove DMA memory allocated for non-control Endpoints */
|
||||
if (using_desc_dma(hsotg)) {
|
||||
dma_free_coherent(hsotg->dev, MAX_DMA_DESC_NUM_GENERIC *
|
||||
sizeof(struct dwc2_dma_desc),
|
||||
hs_ep->desc_list, hs_ep->desc_list_dma);
|
||||
hs_ep->desc_list = NULL;
|
||||
}
|
||||
|
||||
epctrl_reg = dir_in ? DIEPCTL(index) : DOEPCTL(index);
|
||||
|
||||
spin_lock_irqsave(&hsotg->lock, flags);
|
||||
|
Loading…
Reference in New Issue
Block a user