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 3/6] USB: fsl_qe_udc: Fix QE USB controller initialization
    qe_udc_reg_init() leaves the USB controller enabled before muram memory
    initialized. Sometimes the uninitialized muram memory confuses the
    controller, and it start sending the busy interrupts.

    Fix this by disabling the controller, it will be enabled later by
    the gadget driver, at bind time.

    Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
    ---
    drivers/usb/gadget/fsl_qe_udc.c | 6 +++++-
    1 files changed, 5 insertions(+), 1 deletions(-)

    diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
    index 2677c9e..b460c6d 100644
    --- a/drivers/usb/gadget/fsl_qe_udc.c
    +++ b/drivers/usb/gadget/fsl_qe_udc.c
    @@ -2452,8 +2452,12 @@ static int __devinit qe_udc_reg_init(struct qe_udc *udc)
    struct usb_ctlr __iomem *qe_usbregs;
    qe_usbregs = udc->usb_regs;

    - /* Init the usb register */
    + /* Spec says that we must enable the USB controller to change mode. */
    out_8(&qe_usbregs->usb_usmod, 0x01);
    + /* Mode changed, now disable it, since muram isn't initialized yet. */
    + out_8(&qe_usbregs->usb_usmod, 0x00);
    +
    + /* Initialize the rest. */
    out_be16(&qe_usbregs->usb_usbmr, 0);
    out_8(&qe_usbregs->usb_uscom, 0);
    out_be16(&qe_usbregs->usb_usber, USBER_ALL_CLEAR);
    --
    1.5.6.5


    \
     
     \ /
      Last update: 2008-12-25 15:19    [W:0.030 / U:0.208 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site