mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
wusb: return -ENOTCONN when resetting a port with no connected device
If reading the device descriptor fails during hub_port_init() fails, then the port is disabled, disconnecting the device. The port is then reset at the start of the next init attempt but there is no device to reset. Signed-off-by: David Vrabel <david.vrabel@csr.com>
This commit is contained in:
parent
2226b1c219
commit
9a9b1d17ba
2 changed files with 4 additions and 0 deletions
|
@ -386,6 +386,7 @@ static void __wusbhc_dev_disconnect(struct wusbhc *wusbhc,
|
|||
| USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED);
|
||||
port->change |= USB_PORT_STAT_C_CONNECTION | USB_PORT_STAT_C_ENABLE;
|
||||
if (wusb_dev) {
|
||||
dev_dbg(wusbhc->dev, "disconnecting device from port %d\n", wusb_dev->port_idx);
|
||||
if (!list_empty(&wusb_dev->cack_node))
|
||||
list_del_init(&wusb_dev->cack_node);
|
||||
/* For the one in cack_add() */
|
||||
|
|
|
@ -100,6 +100,9 @@ static int wusbhc_rh_port_reset(struct wusbhc *wusbhc, u8 port_idx)
|
|||
struct wusb_port *port = wusb_port_by_idx(wusbhc, port_idx);
|
||||
struct wusb_dev *wusb_dev = port->wusb_dev;
|
||||
|
||||
if (wusb_dev == NULL)
|
||||
return -ENOTCONN;
|
||||
|
||||
port->status |= USB_PORT_STAT_RESET;
|
||||
port->change |= USB_PORT_STAT_C_RESET;
|
||||
|
||||
|
|
Loading…
Reference in a new issue