Commit eeb0426a authored by Alan Stern's avatar Alan Stern Committed by Linus Torvalds

[PATCH] USB: Rename static functions in hub.c and increase timeouts

As requested by David Brownell, this patch removes the usb_ prefix from
the static functions in hub.c.  It also multiplies the timeouts for
GET_STATUS and GET_DESCRIPTOR control transfers by USB_CTRL_GET_TIMEOUT.
parent abea87bc
...@@ -64,17 +64,17 @@ static inline struct device *hubdev (struct usb_device *dev) ...@@ -64,17 +64,17 @@ static inline struct device *hubdev (struct usb_device *dev)
} }
/* USB 2.0 spec Section 11.24.4.5 */ /* USB 2.0 spec Section 11.24.4.5 */
static int usb_get_hub_descriptor(struct usb_device *dev, void *data, int size) static int get_hub_descriptor(struct usb_device *dev, void *data, int size)
{ {
return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_RT_HUB, USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_RT_HUB,
USB_DT_HUB << 8, 0, data, size, HZ); USB_DT_HUB << 8, 0, data, size, HZ * USB_CTRL_GET_TIMEOUT);
} }
/* /*
* USB 2.0 spec Section 11.24.2.1 * USB 2.0 spec Section 11.24.2.1
*/ */
static int usb_clear_hub_feature(struct usb_device *dev, int feature) static int clear_hub_feature(struct usb_device *dev, int feature)
{ {
return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
USB_REQ_CLEAR_FEATURE, USB_RT_HUB, feature, 0, NULL, 0, HZ); USB_REQ_CLEAR_FEATURE, USB_RT_HUB, feature, 0, NULL, 0, HZ);
...@@ -84,7 +84,7 @@ static int usb_clear_hub_feature(struct usb_device *dev, int feature) ...@@ -84,7 +84,7 @@ static int usb_clear_hub_feature(struct usb_device *dev, int feature)
* USB 2.0 spec Section 11.24.2.2 * USB 2.0 spec Section 11.24.2.2
* BUG: doesn't handle port indicator selector in high byte of wIndex * BUG: doesn't handle port indicator selector in high byte of wIndex
*/ */
static int usb_clear_port_feature(struct usb_device *dev, int port, int feature) static int clear_port_feature(struct usb_device *dev, int port, int feature)
{ {
return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
USB_REQ_CLEAR_FEATURE, USB_RT_PORT, feature, port, NULL, 0, HZ); USB_REQ_CLEAR_FEATURE, USB_RT_PORT, feature, port, NULL, 0, HZ);
...@@ -94,7 +94,7 @@ static int usb_clear_port_feature(struct usb_device *dev, int port, int feature) ...@@ -94,7 +94,7 @@ static int usb_clear_port_feature(struct usb_device *dev, int port, int feature)
* USB 2.0 spec Section 11.24.2.13 * USB 2.0 spec Section 11.24.2.13
* BUG: doesn't handle port indicator selector in high byte of wIndex * BUG: doesn't handle port indicator selector in high byte of wIndex
*/ */
static int usb_set_port_feature(struct usb_device *dev, int port, int feature) static int set_port_feature(struct usb_device *dev, int port, int feature)
{ {
return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
USB_REQ_SET_FEATURE, USB_RT_PORT, feature, port, NULL, 0, HZ); USB_REQ_SET_FEATURE, USB_RT_PORT, feature, port, NULL, 0, HZ);
...@@ -103,23 +103,23 @@ static int usb_set_port_feature(struct usb_device *dev, int port, int feature) ...@@ -103,23 +103,23 @@ static int usb_set_port_feature(struct usb_device *dev, int port, int feature)
/* /*
* USB 2.0 spec Section 11.24.2.6 * USB 2.0 spec Section 11.24.2.6
*/ */
static int usb_get_hub_status(struct usb_device *dev, static int get_hub_status(struct usb_device *dev,
struct usb_hub_status *data) struct usb_hub_status *data)
{ {
return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_HUB, 0, 0, USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_HUB, 0, 0,
data, sizeof(*data), HZ); data, sizeof(*data), HZ * USB_CTRL_GET_TIMEOUT);
} }
/* /*
* USB 2.0 spec Section 11.24.2.7 * USB 2.0 spec Section 11.24.2.7
*/ */
static int usb_get_port_status(struct usb_device *dev, int port, static int get_port_status(struct usb_device *dev, int port,
struct usb_port_status *data) struct usb_port_status *data)
{ {
return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, port, USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, port,
data, sizeof(*data), HZ); data, sizeof(*data), HZ * USB_CTRL_GET_TIMEOUT);
} }
/* completion function, fires on port status changes and various faults */ /* completion function, fires on port status changes and various faults */
...@@ -258,7 +258,7 @@ void usb_hub_tt_clear_buffer (struct usb_device *dev, int pipe) ...@@ -258,7 +258,7 @@ void usb_hub_tt_clear_buffer (struct usb_device *dev, int pipe)
spin_unlock_irqrestore (&tt->lock, flags); spin_unlock_irqrestore (&tt->lock, flags);
} }
static void usb_hub_power_on(struct usb_hub *hub) static void hub_power_on(struct usb_hub *hub)
{ {
struct usb_device *dev; struct usb_device *dev;
int i; int i;
...@@ -268,19 +268,19 @@ static void usb_hub_power_on(struct usb_hub *hub) ...@@ -268,19 +268,19 @@ static void usb_hub_power_on(struct usb_hub *hub)
"enabling power on all ports\n"); "enabling power on all ports\n");
dev = interface_to_usbdev(hub->intf); dev = interface_to_usbdev(hub->intf);
for (i = 0; i < hub->descriptor->bNbrPorts; i++) for (i = 0; i < hub->descriptor->bNbrPorts; i++)
usb_set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER); set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER);
/* Wait for power to be enabled */ /* Wait for power to be enabled */
wait_ms(hub->descriptor->bPwrOn2PwrGood * 2); wait_ms(hub->descriptor->bPwrOn2PwrGood * 2);
} }
static int usb_hub_hub_status(struct usb_hub *hub, static int hub_hub_status(struct usb_hub *hub,
u16 *status, u16 *change) u16 *status, u16 *change)
{ {
struct usb_device *dev = interface_to_usbdev (hub->intf); struct usb_device *dev = interface_to_usbdev (hub->intf);
int ret; int ret;
ret = usb_get_hub_status(dev, &hub->status->hub); ret = get_hub_status(dev, &hub->status->hub);
if (ret < 0) if (ret < 0)
dev_err (hubdev (dev), dev_err (hubdev (dev),
"%s failed (err = %d)\n", __FUNCTION__, ret); "%s failed (err = %d)\n", __FUNCTION__, ret);
...@@ -292,7 +292,7 @@ static int usb_hub_hub_status(struct usb_hub *hub, ...@@ -292,7 +292,7 @@ static int usb_hub_hub_status(struct usb_hub *hub,
return ret; return ret;
} }
static int usb_hub_configure(struct usb_hub *hub, static int hub_configure(struct usb_hub *hub,
struct usb_endpoint_descriptor *endpoint) struct usb_endpoint_descriptor *endpoint)
{ {
struct usb_device *dev = interface_to_usbdev (hub->intf); struct usb_device *dev = interface_to_usbdev (hub->intf);
...@@ -327,7 +327,7 @@ static int usb_hub_configure(struct usb_hub *hub, ...@@ -327,7 +327,7 @@ static int usb_hub_configure(struct usb_hub *hub,
* hub->descriptor can handle USB_MAXCHILDREN ports, * hub->descriptor can handle USB_MAXCHILDREN ports,
* but the hub can/will return fewer bytes here. * but the hub can/will return fewer bytes here.
*/ */
ret = usb_get_hub_descriptor(dev, hub->descriptor, ret = get_hub_descriptor(dev, hub->descriptor,
sizeof(*hub->descriptor)); sizeof(*hub->descriptor));
if (ret < 0) { if (ret < 0) {
message = "can't read hub descriptor"; message = "can't read hub descriptor";
...@@ -430,7 +430,7 @@ static int usb_hub_configure(struct usb_hub *hub, ...@@ -430,7 +430,7 @@ static int usb_hub_configure(struct usb_hub *hub,
dev_dbg(hub_dev, "hub controller current requirement: %dmA\n", dev_dbg(hub_dev, "hub controller current requirement: %dmA\n",
hub->descriptor->bHubContrCurrent); hub->descriptor->bHubContrCurrent);
ret = usb_hub_hub_status(hub, &hubstatus, &hubchange); ret = hub_hub_status(hub, &hubstatus, &hubchange);
if (ret < 0) { if (ret < 0) {
message = "can't get hub status"; message = "can't get hub status";
goto fail; goto fail;
...@@ -468,7 +468,7 @@ static int usb_hub_configure(struct usb_hub *hub, ...@@ -468,7 +468,7 @@ static int usb_hub_configure(struct usb_hub *hub,
/* Wake up khubd */ /* Wake up khubd */
wake_up(&khubd_wait); wake_up(&khubd_wait);
usb_hub_power_on(hub); hub_power_on(hub);
return 0; return 0;
...@@ -592,7 +592,7 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id) ...@@ -592,7 +592,7 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
usb_set_intfdata (intf, hub); usb_set_intfdata (intf, hub);
if (usb_hub_configure(hub, endpoint) >= 0) { if (hub_configure(hub, endpoint) >= 0) {
strcpy (intf->dev.name, "Hub"); strcpy (intf->dev.name, "Hub");
return 0; return 0;
} }
...@@ -636,7 +636,7 @@ hub_ioctl(struct usb_interface *intf, unsigned int code, void *user_data) ...@@ -636,7 +636,7 @@ hub_ioctl(struct usb_interface *intf, unsigned int code, void *user_data)
} }
} }
static int usb_hub_reset(struct usb_hub *hub) static int hub_reset(struct usb_hub *hub)
{ {
struct usb_device *dev = interface_to_usbdev(hub->intf); struct usb_device *dev = interface_to_usbdev(hub->intf);
int i; int i;
...@@ -660,12 +660,12 @@ static int usb_hub_reset(struct usb_hub *hub) ...@@ -660,12 +660,12 @@ static int usb_hub_reset(struct usb_hub *hub)
if (usb_submit_urb(hub->urb, GFP_KERNEL)) if (usb_submit_urb(hub->urb, GFP_KERNEL))
return -1; return -1;
usb_hub_power_on(hub); hub_power_on(hub);
return 0; return 0;
} }
static void usb_hub_disconnect(struct usb_device *dev) static void hub_start_disconnect(struct usb_device *dev)
{ {
struct usb_device *parent = dev->parent; struct usb_device *parent = dev->parent;
int i; int i;
...@@ -683,13 +683,13 @@ static void usb_hub_disconnect(struct usb_device *dev) ...@@ -683,13 +683,13 @@ static void usb_hub_disconnect(struct usb_device *dev)
err("cannot disconnect hub %s", dev->devpath); err("cannot disconnect hub %s", dev->devpath);
} }
static int usb_hub_port_status(struct usb_device *dev, int port, static int hub_port_status(struct usb_device *dev, int port,
u16 *status, u16 *change) u16 *status, u16 *change)
{ {
struct usb_hub *hub = usb_get_intfdata (dev->actconfig->interface); struct usb_hub *hub = usb_get_intfdata (dev->actconfig->interface);
int ret; int ret;
ret = usb_get_port_status(dev, port + 1, &hub->status->port); ret = get_port_status(dev, port + 1, &hub->status->port);
if (ret < 0) if (ret < 0)
dev_err (hubdev (dev), dev_err (hubdev (dev),
"%s failed (err = %d)\n", __FUNCTION__, ret); "%s failed (err = %d)\n", __FUNCTION__, ret);
...@@ -708,7 +708,7 @@ static int usb_hub_port_status(struct usb_device *dev, int port, ...@@ -708,7 +708,7 @@ static int usb_hub_port_status(struct usb_device *dev, int port,
#define HUB_RESET_TIMEOUT 500 #define HUB_RESET_TIMEOUT 500
/* return: -1 on error, 0 on success, 1 on disconnect. */ /* return: -1 on error, 0 on success, 1 on disconnect. */
static int usb_hub_port_wait_reset(struct usb_device *hub, int port, static int hub_port_wait_reset(struct usb_device *hub, int port,
struct usb_device *dev, unsigned int delay) struct usb_device *dev, unsigned int delay)
{ {
int delay_time, ret; int delay_time, ret;
...@@ -722,7 +722,7 @@ static int usb_hub_port_wait_reset(struct usb_device *hub, int port, ...@@ -722,7 +722,7 @@ static int usb_hub_port_wait_reset(struct usb_device *hub, int port,
wait_ms(delay); wait_ms(delay);
/* read and decode port status */ /* read and decode port status */
ret = usb_hub_port_status(hub, port, &portstatus, &portchange); ret = hub_port_status(hub, port, &portstatus, &portchange);
if (ret < 0) { if (ret < 0) {
return -1; return -1;
} }
...@@ -760,19 +760,19 @@ static int usb_hub_port_wait_reset(struct usb_device *hub, int port, ...@@ -760,19 +760,19 @@ static int usb_hub_port_wait_reset(struct usb_device *hub, int port,
} }
/* return: -1 on error, 0 on success, 1 on disconnect. */ /* return: -1 on error, 0 on success, 1 on disconnect. */
static int usb_hub_port_reset(struct usb_device *hub, int port, static int hub_port_reset(struct usb_device *hub, int port,
struct usb_device *dev, unsigned int delay) struct usb_device *dev, unsigned int delay)
{ {
int i, status; int i, status;
/* Reset the port */ /* Reset the port */
for (i = 0; i < HUB_RESET_TRIES; i++) { for (i = 0; i < HUB_RESET_TRIES; i++) {
usb_set_port_feature(hub, port + 1, USB_PORT_FEAT_RESET); set_port_feature(hub, port + 1, USB_PORT_FEAT_RESET);
/* return on disconnect or reset */ /* return on disconnect or reset */
status = usb_hub_port_wait_reset(hub, port, dev, delay); status = hub_port_wait_reset(hub, port, dev, delay);
if (status != -1) { if (status != -1) {
usb_clear_port_feature(hub, clear_port_feature(hub,
port + 1, USB_PORT_FEAT_C_RESET); port + 1, USB_PORT_FEAT_C_RESET);
dev->state = status dev->state = status
? USB_STATE_NOTATTACHED ? USB_STATE_NOTATTACHED
...@@ -793,11 +793,11 @@ static int usb_hub_port_reset(struct usb_device *hub, int port, ...@@ -793,11 +793,11 @@ static int usb_hub_port_reset(struct usb_device *hub, int port,
return -1; return -1;
} }
int usb_hub_port_disable(struct usb_device *hub, int port) int hub_port_disable(struct usb_device *hub, int port)
{ {
int ret; int ret;
ret = usb_clear_port_feature(hub, port + 1, USB_PORT_FEAT_ENABLE); ret = clear_port_feature(hub, port + 1, USB_PORT_FEAT_ENABLE);
if (ret) if (ret)
dev_err(hubdev(hub), "cannot disable port %d (err = %d)\n", dev_err(hubdev(hub), "cannot disable port %d (err = %d)\n",
port + 1, ret); port + 1, ret);
...@@ -824,7 +824,7 @@ int usb_hub_port_disable(struct usb_device *hub, int port) ...@@ -824,7 +824,7 @@ int usb_hub_port_disable(struct usb_device *hub, int port)
#define HUB_DEBOUNCE_STABLE 4 #define HUB_DEBOUNCE_STABLE 4
/* return: -1 on error, 0 on success, 1 on disconnect. */ /* return: -1 on error, 0 on success, 1 on disconnect. */
static int usb_hub_port_debounce(struct usb_device *hub, int port) static int hub_port_debounce(struct usb_device *hub, int port)
{ {
int ret; int ret;
int delay_time, stable_count; int delay_time, stable_count;
...@@ -836,7 +836,7 @@ static int usb_hub_port_debounce(struct usb_device *hub, int port) ...@@ -836,7 +836,7 @@ static int usb_hub_port_debounce(struct usb_device *hub, int port)
for (delay_time = 0; delay_time < HUB_DEBOUNCE_TIMEOUT; delay_time += HUB_DEBOUNCE_STEP) { for (delay_time = 0; delay_time < HUB_DEBOUNCE_TIMEOUT; delay_time += HUB_DEBOUNCE_STEP) {
wait_ms(HUB_DEBOUNCE_STEP); wait_ms(HUB_DEBOUNCE_STEP);
ret = usb_hub_port_status(hub, port, &portstatus, &portchange); ret = hub_port_status(hub, port, &portstatus, &portchange);
if (ret < 0) if (ret < 0)
return -1; return -1;
...@@ -851,7 +851,7 @@ static int usb_hub_port_debounce(struct usb_device *hub, int port) ...@@ -851,7 +851,7 @@ static int usb_hub_port_debounce(struct usb_device *hub, int port)
connection = portstatus & USB_PORT_STAT_CONNECTION; connection = portstatus & USB_PORT_STAT_CONNECTION;
if ((portchange & USB_PORT_STAT_C_CONNECTION)) { if ((portchange & USB_PORT_STAT_C_CONNECTION)) {
usb_clear_port_feature(hub, port+1, USB_PORT_FEAT_C_CONNECTION); clear_port_feature(hub, port+1, USB_PORT_FEAT_C_CONNECTION);
} }
} }
...@@ -863,7 +863,7 @@ static int usb_hub_port_debounce(struct usb_device *hub, int port) ...@@ -863,7 +863,7 @@ static int usb_hub_port_debounce(struct usb_device *hub, int port)
return ((portstatus&USB_PORT_STAT_CONNECTION)) ? 0 : 1; return ((portstatus&USB_PORT_STAT_CONNECTION)) ? 0 : 1;
} }
static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port, static void hub_port_connect_change(struct usb_hub *hubstate, int port,
u16 portstatus, u16 portchange) u16 portstatus, u16 portchange)
{ {
struct usb_device *hub = interface_to_usbdev(hubstate->intf); struct usb_device *hub = interface_to_usbdev(hubstate->intf);
...@@ -876,7 +876,7 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port, ...@@ -876,7 +876,7 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port,
port + 1, portstatus, portchange, portspeed (portstatus)); port + 1, portstatus, portchange, portspeed (portstatus));
/* Clear the connection change status */ /* Clear the connection change status */
usb_clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION); clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION);
/* Disconnect any existing devices under this port */ /* Disconnect any existing devices under this port */
if (hub->children[port]) if (hub->children[port])
...@@ -885,16 +885,16 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port, ...@@ -885,16 +885,16 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port,
/* Return now if nothing is connected */ /* Return now if nothing is connected */
if (!(portstatus & USB_PORT_STAT_CONNECTION)) { if (!(portstatus & USB_PORT_STAT_CONNECTION)) {
if (portstatus & USB_PORT_STAT_ENABLE) if (portstatus & USB_PORT_STAT_ENABLE)
usb_hub_port_disable(hub, port); hub_port_disable(hub, port);
return; return;
} }
if (usb_hub_port_debounce(hub, port)) { if (hub_port_debounce(hub, port)) {
dev_err (&hubstate->intf->dev, dev_err (&hubstate->intf->dev,
"connect-debounce failed, port %d disabled\n", "connect-debounce failed, port %d disabled\n",
port+1); port+1);
usb_hub_port_disable(hub, port); hub_port_disable(hub, port);
return; return;
} }
...@@ -921,7 +921,7 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port, ...@@ -921,7 +921,7 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port,
dev->state = USB_STATE_POWERED; dev->state = USB_STATE_POWERED;
/* Reset the device, and detect its speed */ /* Reset the device, and detect its speed */
if (usb_hub_port_reset(hub, port, dev, delay)) { if (hub_port_reset(hub, port, dev, delay)) {
usb_put_dev(dev); usb_put_dev(dev);
break; break;
} }
...@@ -981,12 +981,12 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port, ...@@ -981,12 +981,12 @@ static void usb_hub_port_connect_change(struct usb_hub *hubstate, int port,
} }
hub->children[port] = NULL; hub->children[port] = NULL;
usb_hub_port_disable(hub, port); hub_port_disable(hub, port);
done: done:
up(&usb_address0_sem); up(&usb_address0_sem);
} }
static void usb_hub_events(void) static void hub_events(void)
{ {
unsigned long flags; unsigned long flags;
struct list_head *tmp; struct list_head *tmp;
...@@ -1027,11 +1027,11 @@ static void usb_hub_events(void) ...@@ -1027,11 +1027,11 @@ static void usb_hub_events(void)
dev_dbg (&hub->intf->dev, "resetting for error %d\n", dev_dbg (&hub->intf->dev, "resetting for error %d\n",
hub->error); hub->error);
if (usb_hub_reset(hub)) { if (hub_reset(hub)) {
dev_dbg (&hub->intf->dev, dev_dbg (&hub->intf->dev,
"can't reset; disconnecting\n"); "can't reset; disconnecting\n");
up(&hub->khubd_sem); up(&hub->khubd_sem);
usb_hub_disconnect(dev); hub_start_disconnect(dev);
continue; continue;
} }
...@@ -1040,18 +1040,18 @@ static void usb_hub_events(void) ...@@ -1040,18 +1040,18 @@ static void usb_hub_events(void)
} }
for (i = 0; i < hub->descriptor->bNbrPorts; i++) { for (i = 0; i < hub->descriptor->bNbrPorts; i++) {
ret = usb_hub_port_status(dev, i, &portstatus, &portchange); ret = hub_port_status(dev, i, &portstatus, &portchange);
if (ret < 0) { if (ret < 0) {
continue; continue;
} }
if (portchange & USB_PORT_STAT_C_CONNECTION) { if (portchange & USB_PORT_STAT_C_CONNECTION) {
usb_hub_port_connect_change(hub, i, portstatus, portchange); hub_port_connect_change(hub, i, portstatus, portchange);
} else if (portchange & USB_PORT_STAT_C_ENABLE) { } else if (portchange & USB_PORT_STAT_C_ENABLE) {
dev_dbg (hubdev (dev), dev_dbg (hubdev (dev),
"port %d enable change, status %x\n", "port %d enable change, status %x\n",
i + 1, portstatus); i + 1, portstatus);
usb_clear_port_feature(dev, clear_port_feature(dev,
i + 1, USB_PORT_FEAT_C_ENABLE); i + 1, USB_PORT_FEAT_C_ENABLE);
/* /*
...@@ -1068,7 +1068,7 @@ static void usb_hub_events(void) ...@@ -1068,7 +1068,7 @@ static void usb_hub_events(void)
"disabled by hub (EMI?), " "disabled by hub (EMI?), "
"re-enabling...", "re-enabling...",
i + 1); i + 1);
usb_hub_port_connect_change(hub, hub_port_connect_change(hub,
i, portstatus, portchange); i, portstatus, portchange);
} }
} }
...@@ -1077,7 +1077,7 @@ static void usb_hub_events(void) ...@@ -1077,7 +1077,7 @@ static void usb_hub_events(void)
dev_dbg (&hub->intf->dev, dev_dbg (&hub->intf->dev,
"suspend change on port %d\n", "suspend change on port %d\n",
i + 1); i + 1);
usb_clear_port_feature(dev, clear_port_feature(dev,
i + 1, USB_PORT_FEAT_C_SUSPEND); i + 1, USB_PORT_FEAT_C_SUSPEND);
} }
...@@ -1085,33 +1085,33 @@ static void usb_hub_events(void) ...@@ -1085,33 +1085,33 @@ static void usb_hub_events(void)
dev_err (&hub->intf->dev, dev_err (&hub->intf->dev,
"over-current change on port %d\n", "over-current change on port %d\n",
i + 1); i + 1);
usb_clear_port_feature(dev, clear_port_feature(dev,
i + 1, USB_PORT_FEAT_C_OVER_CURRENT); i + 1, USB_PORT_FEAT_C_OVER_CURRENT);
usb_hub_power_on(hub); hub_power_on(hub);
} }
if (portchange & USB_PORT_STAT_C_RESET) { if (portchange & USB_PORT_STAT_C_RESET) {
dev_dbg (&hub->intf->dev, dev_dbg (&hub->intf->dev,
"reset change on port %d\n", "reset change on port %d\n",
i + 1); i + 1);
usb_clear_port_feature(dev, clear_port_feature(dev,
i + 1, USB_PORT_FEAT_C_RESET); i + 1, USB_PORT_FEAT_C_RESET);
} }
} /* end for i */ } /* end for i */
/* deal with hub status changes */ /* deal with hub status changes */
if (usb_hub_hub_status(hub, &hubstatus, &hubchange) < 0) if (hub_hub_status(hub, &hubstatus, &hubchange) < 0)
dev_err (&hub->intf->dev, "get_hub_status failed\n"); dev_err (&hub->intf->dev, "get_hub_status failed\n");
else { else {
if (hubchange & HUB_CHANGE_LOCAL_POWER) { if (hubchange & HUB_CHANGE_LOCAL_POWER) {
dev_dbg (&hub->intf->dev, "power change\n"); dev_dbg (&hub->intf->dev, "power change\n");
usb_clear_hub_feature(dev, C_HUB_LOCAL_POWER); clear_hub_feature(dev, C_HUB_LOCAL_POWER);
} }
if (hubchange & HUB_CHANGE_OVERCURRENT) { if (hubchange & HUB_CHANGE_OVERCURRENT) {
dev_dbg (&hub->intf->dev, "overcurrent change\n"); dev_dbg (&hub->intf->dev, "overcurrent change\n");
wait_ms(500); /* Cool down */ wait_ms(500); /* Cool down */
usb_clear_hub_feature(dev, C_HUB_OVER_CURRENT); clear_hub_feature(dev, C_HUB_OVER_CURRENT);
usb_hub_power_on(hub); hub_power_on(hub);
} }
} }
up(&hub->khubd_sem); up(&hub->khubd_sem);
...@@ -1120,7 +1120,7 @@ static void usb_hub_events(void) ...@@ -1120,7 +1120,7 @@ static void usb_hub_events(void)
spin_unlock_irqrestore(&hub_event_lock, flags); spin_unlock_irqrestore(&hub_event_lock, flags);
} }
static int usb_hub_thread(void *__hub) static int hub_thread(void *__hub)
{ {
/* /*
* This thread doesn't need any user-level access, * This thread doesn't need any user-level access,
...@@ -1132,13 +1132,13 @@ static int usb_hub_thread(void *__hub) ...@@ -1132,13 +1132,13 @@ static int usb_hub_thread(void *__hub)
/* Send me a signal to get me die (for debugging) */ /* Send me a signal to get me die (for debugging) */
do { do {
usb_hub_events(); hub_events();
wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list)); wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list));
if (current->flags & PF_FREEZE) if (current->flags & PF_FREEZE)
refrigerator(PF_IOTHREAD); refrigerator(PF_IOTHREAD);
} while (!signal_pending(current)); } while (!signal_pending(current));
dbg("usb_hub_thread exiting"); dbg("hub_thread exiting");
complete_and_exit(&khubd_exited, 0); complete_and_exit(&khubd_exited, 0);
} }
...@@ -1173,7 +1173,7 @@ int usb_hub_init(void) ...@@ -1173,7 +1173,7 @@ int usb_hub_init(void)
return -1; return -1;
} }
pid = kernel_thread(usb_hub_thread, NULL, pid = kernel_thread(hub_thread, NULL,
CLONE_FS | CLONE_FILES | CLONE_SIGHAND); CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
if (pid >= 0) { if (pid >= 0) {
khubd_pid = pid; khubd_pid = pid;
...@@ -1183,7 +1183,7 @@ int usb_hub_init(void) ...@@ -1183,7 +1183,7 @@ int usb_hub_init(void)
/* Fall through if kernel_thread failed */ /* Fall through if kernel_thread failed */
usb_deregister(&hub_driver); usb_deregister(&hub_driver);
err("failed to start usb_hub_thread"); err("failed to start hub_thread");
return -1; return -1;
} }
...@@ -1246,8 +1246,8 @@ int usb_physical_reset_device(struct usb_device *dev) ...@@ -1246,8 +1246,8 @@ int usb_physical_reset_device(struct usb_device *dev)
down(&usb_address0_sem); down(&usb_address0_sem);
/* Send a reset to the device */ /* Send a reset to the device */
if (usb_hub_port_reset(parent, port, dev, HUB_SHORT_RESET_TIME)) { if (hub_port_reset(parent, port, dev, HUB_SHORT_RESET_TIME)) {
usb_hub_port_disable(parent, port); hub_port_disable(parent, port);
up(&usb_address0_sem); up(&usb_address0_sem);
kfree(descriptor); kfree(descriptor);
return(-ENODEV); return(-ENODEV);
...@@ -1257,7 +1257,7 @@ int usb_physical_reset_device(struct usb_device *dev) ...@@ -1257,7 +1257,7 @@ int usb_physical_reset_device(struct usb_device *dev)
ret = usb_set_address(dev); ret = usb_set_address(dev);
if (ret < 0) { if (ret < 0) {
err("USB device not accepting new address (error=%d)", ret); err("USB device not accepting new address (error=%d)", ret);
usb_hub_port_disable(parent, port); hub_port_disable(parent, port);
up(&usb_address0_sem); up(&usb_address0_sem);
kfree(descriptor); kfree(descriptor);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment