]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
usb: core: move root hub's device node assignment after it is added to bus
authorPeter Chen <peter.chen@nxp.com>
Mon, 25 Apr 2016 01:57:18 +0000 (09:57 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Apr 2016 19:57:49 +0000 (12:57 -0700)
commitdc5878abf49c06b9c1d3d161760957a98ab970bf
tree73d9c453a198e9f8f03d776ada79044f133588e8
parent49e8eccf370d9fd916f6fc21b44ae8d3361e2c9f
usb: core: move root hub's device node assignment after it is added to bus

When the root hub device is added to the bus, it tries to get pins
information from pinctrl (see pinctrl_bind_pins, at really_probe), if
the pin information is described at DT, it will show below error since
the root hub's device node is the same with controller's, but controller's
pin has already been requested when it is added to platform bus.

imx6q-pinctrl 20e0000.iomuxc: pin MX6Q_PAD_GPIO_1 already
        requested by 2184000.usb; cannot claim for usb1
imx6q-pinctrl 20e0000.iomuxc: pin-137 (usb1) status -22
imx6q-pinctrl 20e0000.iomuxc: could not request pin 137
        (MX6Q_PAD_GPIO_1) from group usbotggrp-3 on device 20e0000.iomuxc
usb usb1: Error applying setting, reverse things back

To fix this issue, we move the root hub's device node assignment (equals
to contrller's) after device is added to bus, we only need to know root
hub's device node information after the device under root hub is created,
so this movement will not affect current function.

Signed-off-by: Peter Chen <peter.chen@nxp.com>
Reported-by: Lars Steubesand <lars.steubesand@philips.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/hcd.c
drivers/usb/core/usb.c