forked from Minki/linux
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 void hub_release(struct kref *kref);
|
||||||
static int usb_reset_and_verify_device(struct usb_device *udev);
|
static int usb_reset_and_verify_device(struct usb_device *udev);
|
||||||
static void hub_usb3_port_prepare_disable(struct usb_hub *hub,
|
static int hub_port_disable(struct usb_hub *hub, int port1, int set_state);
|
||||||
struct usb_port *port_dev);
|
|
||||||
|
|
||||||
static inline char *portspeed(struct usb_hub *hub, int portstatus)
|
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_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
|
* 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
|
* 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 */
|
#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:
|
/* USB 2.0 spec, 7.1.7.3 / fig 7-29:
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user