lkml.org 
[lkml]   [2008]   [Dec]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 5/6] USB: fsl_qe_udc: Fix muram corruption by disabled endpoints
    Before freeing an endpoint's muram memory, we should stop all activity
    of the endpoint, otherwise the QE UDC controller might do nasty things
    with the muram memory that isn't belong to that endpoint anymore.

    The qe_ep_reset() effectively flushes the hardware fifos, finishes all
    late transaction and thus prevents the corruption.

    Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
    Acked-by: David Brownell <dbrownell@users.sourceforge.net>
    ---
    drivers/usb/gadget/fsl_qe_udc.c | 1 +
    1 files changed, 1 insertions(+), 0 deletions(-)

    diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
    index 4726582..ea42088 100644
    --- a/drivers/usb/gadget/fsl_qe_udc.c
    +++ b/drivers/usb/gadget/fsl_qe_udc.c
    @@ -1622,6 +1622,7 @@ static int qe_ep_disable(struct usb_ep *_ep)
    nuke(ep, -ESHUTDOWN);
    ep->desc = NULL;
    ep->stopped = 1;
    + qe_ep_reset(udc, ep->epnum);
    spin_unlock_irqrestore(&udc->lock, flags);

    cpm_muram_free(cpm_muram_offset(ep->rxbase));
    --
    1.5.6.5


    \
     
     \ /
      Last update: 2008-12-25 15:19    [W:2.232 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site