On Thu, 3 Apr 2014, vichy wrote:
> I add more description.
> in Below #1, since connect status is zero, handshake will fail with
> return -ETIMEDOUT.
> Then go to #2 error label.
> and finally hub_port_status get -32, -EPIPE.
>
> 1. Platform-ehci Platform-ehci.0: port 1 reset error -110
> the -110 is due to below handshake timeout.
> retval = handshake(ehci, status_reg,
> PORT_RESET, 0, 1000);
> if (retval != 0) {
> ehci_err (ehci, "port %d reset error %d\n",
> wIndex + 1, retval);
> goto error;
> }
Right -- although the handshake shouldn't time out. That's a bug in
the hardware.
> 2. hub 4-0:1.0: hub_port_status failed (err = -32)
> the -32 is due to below error label we set retval = -EPIPE
> error:
> /* "stall" on error */
> retval = -EPIPE;
But... This will happen only the first time we get the port status.
After that, ehci->reset_done[wIndex] will be 0 and so handshake() won't
get called.
hub_port_status() calls get_port_status(), which performs the operation
up to 3 times. The first time it will fail with -EPIPE, but what about
the second time?
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html