]> git.sur5r.net Git - u-boot/commitdiff
usb: Clear CMD_RUN while issuing CMD_RESET in ehci_reset()
authorStefan Roese <sr@denx.de>
Fri, 26 Nov 2010 14:44:00 +0000 (15:44 +0100)
committerRemy Bohmer <linux@bohmer.net>
Fri, 26 Nov 2010 20:23:25 +0000 (21:23 +0100)
This patch fixes a problem noticed on lwmon5 (PPC440EPx) using the
common EHCI driver, when "usb reset" is issued multiple times.
Upon the 2nd (and further) "usb reset" command, the command fails
with the following messages:

=> usb reset
(Re)start USB...
USB:   Register 1111 NbrPorts 1
USB EHCI 1.00
scanning bus for devices... 5 USB Device(s) found
       scanning bus for storage devices... 2 Storage Device(s) found
=> usb reset
(Re)start USB...
USB:   EHCI fail to reset
Error, couldn't init Lowlevel part

This patch fixes this problem. Now "usb reset" can be called multiple
times.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
drivers/usb/host/ehci-hcd.c

index c7de6f0544a4005760a09a1715a7e9f7cb219b5e..6eb38a4131f0ed83c905f21af4237b3bfbb2b5a8 100644 (file)
@@ -230,7 +230,7 @@ static int ehci_reset(void)
        int ret = 0;
 
        cmd = ehci_readl(&hcor->or_usbcmd);
-       cmd |= CMD_RESET;
+       cmd = (cmd & ~CMD_RUN) | CMD_RESET;
        ehci_writel(&hcor->or_usbcmd, cmd);
        ret = handshake((uint32_t *)&hcor->or_usbcmd, CMD_RESET, 0, 250 * 1000);
        if (ret < 0) {