mirror of https://gitee.com/openkylin/linux.git
usb: hub: Move hub_port_disable() to fix warning if PM is disabled
If CONFIG_PM=n:
drivers/usb/core/hub.c:107: warning: ‘hub_usb3_port_prepare_disable’ declared inline after being called
drivers/usb/core/hub.c:107: warning: previous declaration of ‘hub_usb3_port_prepare_disable’ was here
To fix this, move hub_port_disable() after
hub_usb3_port_prepare_disable(), and adjust forward declarations.
Fixes: 37be66767e
("usb: hub: Fix auto-remount of safely removed or ejected USB-3 devices")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5563bb5743
commit
3bc02bce90
|
@ -103,8 +103,7 @@ EXPORT_SYMBOL_GPL(ehci_cf_port_reset_rwsem);
|
|||
|
||||
static void hub_release(struct kref *kref);
|
||||
static int usb_reset_and_verify_device(struct usb_device *udev);
|
||||
static void hub_usb3_port_prepare_disable(struct usb_hub *hub,
|
||||
struct usb_port *port_dev);
|
||||
static int hub_port_disable(struct usb_hub *hub, int port1, int set_state);
|
||||
|
||||
static inline char *portspeed(struct usb_hub *hub, int portstatus)
|
||||
{
|
||||
|
@ -902,34 +901,6 @@ static int hub_set_port_link_state(struct usb_hub *hub, int port1,
|
|||
USB_PORT_FEAT_LINK_STATE);
|
||||
}
|
||||
|
||||
/*
|
||||
* USB-3 does not have a similar link state as USB-2 that will avoid negotiating
|
||||
* a connection with a plugged-in cable but will signal the host when the cable
|
||||
* is unplugged. Disable remote wake and set link state to U3 for USB-3 devices
|
||||
*/
|
||||
static int hub_port_disable(struct usb_hub *hub, int port1, int set_state)
|
||||
{
|
||||
struct usb_port *port_dev = hub->ports[port1 - 1];
|
||||
struct usb_device *hdev = hub->hdev;
|
||||
int ret = 0;
|
||||
|
||||
if (!hub->error) {
|
||||
if (hub_is_superspeed(hub->hdev)) {
|
||||
hub_usb3_port_prepare_disable(hub, port_dev);
|
||||
ret = hub_set_port_link_state(hub, port_dev->portnum,
|
||||
USB_SS_PORT_LS_U3);
|
||||
} else {
|
||||
ret = usb_clear_port_feature(hdev, port1,
|
||||
USB_PORT_FEAT_ENABLE);
|
||||
}
|
||||
}
|
||||
if (port_dev->child && set_state)
|
||||
usb_set_device_state(port_dev->child, USB_STATE_NOTATTACHED);
|
||||
if (ret && ret != -ENODEV)
|
||||
dev_err(&port_dev->dev, "cannot disable (err = %d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable a port and mark a logical connect-change event, so that some
|
||||
* time later hub_wq will disconnect() any existing usb_device on the port
|
||||
|
@ -4162,6 +4133,34 @@ static int hub_handle_remote_wakeup(struct usb_hub *hub, unsigned int port,
|
|||
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
/*
|
||||
* USB-3 does not have a similar link state as USB-2 that will avoid negotiating
|
||||
* a connection with a plugged-in cable but will signal the host when the cable
|
||||
* is unplugged. Disable remote wake and set link state to U3 for USB-3 devices
|
||||
*/
|
||||
static int hub_port_disable(struct usb_hub *hub, int port1, int set_state)
|
||||
{
|
||||
struct usb_port *port_dev = hub->ports[port1 - 1];
|
||||
struct usb_device *hdev = hub->hdev;
|
||||
int ret = 0;
|
||||
|
||||
if (!hub->error) {
|
||||
if (hub_is_superspeed(hub->hdev)) {
|
||||
hub_usb3_port_prepare_disable(hub, port_dev);
|
||||
ret = hub_set_port_link_state(hub, port_dev->portnum,
|
||||
USB_SS_PORT_LS_U3);
|
||||
} else {
|
||||
ret = usb_clear_port_feature(hdev, port1,
|
||||
USB_PORT_FEAT_ENABLE);
|
||||
}
|
||||
}
|
||||
if (port_dev->child && set_state)
|
||||
usb_set_device_state(port_dev->child, USB_STATE_NOTATTACHED);
|
||||
if (ret && ret != -ENODEV)
|
||||
dev_err(&port_dev->dev, "cannot disable (err = %d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* USB 2.0 spec, 7.1.7.3 / fig 7-29:
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue