usb: core: return -ENOTSUPP for all targeted hosts
authorPeter Chen <peter.chen@freescale.com>
Mon, 29 Sep 2014 02:09:31 +0000 (10:09 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Sep 2014 15:50:39 +0000 (11:50 -0400)
The current code only returns -ENOTSUPP for OTG host, but in fact,
embedded host also needs to returns -ENOTSUPP if the peripheral
is not at TPL.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hub.c

index 374b3f9..1d21b2c 100644 (file)
@@ -2319,11 +2319,12 @@ static int usb_enumerate_device(struct usb_device *udev)
                return err;
 
        if (IS_ENABLED(CONFIG_USB_OTG_WHITELIST) && hcd->tpl_support &&
-               !is_targeted(udev) && IS_ENABLED(CONFIG_USB_OTG)) {
+               !is_targeted(udev)) {
                /* Maybe it can talk to us, though we can't talk to it.
                 * (Includes HNP test device.)
                 */
-               if (udev->bus->b_hnp_enable || udev->bus->is_b_host) {
+               if (IS_ENABLED(CONFIG_USB_OTG) && (udev->bus->b_hnp_enable
+                       || udev->bus->is_b_host)) {
                        err = usb_port_suspend(udev, PMSG_AUTO_SUSPEND);
                        if (err < 0)
                                dev_dbg(&udev->dev, "HNP fail, %d\n", err);