forked from Minki/linux
usb: gadget: bdc: fix a driver crash on disconnect
ep_dequeue() in bdc_ep.c was capturing the hw dequeue pointer incorrectly by reading the wrong register for the upper 32 bits. Signed-off-by: Al Cooper <alcooperx@gmail.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
cbfe8fa6cd
commit
02c3b4c759
@ -779,7 +779,7 @@ static int ep_dequeue(struct bdc_ep *ep, struct bdc_req *req)
|
|||||||
/* The current hw dequeue pointer */
|
/* The current hw dequeue pointer */
|
||||||
tmp_32 = bdc_readl(bdc->regs, BDC_EPSTS0(0));
|
tmp_32 = bdc_readl(bdc->regs, BDC_EPSTS0(0));
|
||||||
deq_ptr_64 = tmp_32;
|
deq_ptr_64 = tmp_32;
|
||||||
tmp_32 = bdc_readl(bdc->regs, BDC_EPSTS0(1));
|
tmp_32 = bdc_readl(bdc->regs, BDC_EPSTS1(0));
|
||||||
deq_ptr_64 |= ((u64)tmp_32 << 32);
|
deq_ptr_64 |= ((u64)tmp_32 << 32);
|
||||||
|
|
||||||
/* we have the dma addr of next bd that will be fetched by hardware */
|
/* we have the dma addr of next bd that will be fetched by hardware */
|
||||||
|
Loading…
Reference in New Issue
Block a user