• P
    usb: gadget: fsl_udc_core: dTD's next dtd pointer need to be updated once written · 4d0947de
    Peter Chen 提交于
    dTD's next dtd pointer need to be updated once CPU writes it, or this
    request may not be handled by controller, then host will get NAK from
    device forever.
    
    This problem occurs when there is a request is handling, we need to add
    a new request to dTD list, if this new request is added before the current
    one is finished, the new request is intended to added as next dtd pointer
    at current dTD, but without wmb(), the dTD's next dtd pointer may not be
    updated when the controller reads it. In that case, the controller will
    still get Terminate Bit is 1 at dTD's next dtd pointer, that means there is
    no next request, then this new request is missed by controller.
    
    CC: <stable@vger.kernel.org>
    Signed-off-by: NPeter Chen <peter.chen@freescale.com>
    Acked-by: NLi Yang <leoli@freescale.com>
    Signed-off-by: NFelipe Balbi <balbi@ti.com>
    4d0947de
fsl_udc_core.c 73.1 KB