diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-05 10:26:01 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-05 10:26:01 -0700 | 
| commit | 1a3b85ea36d38d5732fdd86b321b10bcaeb53512 (patch) | |
| tree | f3a7abeb6acaa47019e3d53b7ae75f7ae4361803 /drivers/usb/core/hub.c | |
| parent | 04759194dc447ff0b9ef35bc641ce3bb076c2930 (diff) | |
| parent | 46f5489f781ae3e4d23a4e8e29e0ea3626739d2d (diff) | |
Merge tag 'usb-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB/PHY driver updates from Greg KH:
 "Here is the large USB and PHY driver update for 4.14-rc1.
  Not all that exciting, a few new PHY drivers, the usual mess of gadget
  driver updates and fixes, and of course, xhci updates to try to tame
  that beast.
  A number of usb-serial updates and other small fixes all over the USB
  driver tree are in here as well. Full details are in the shortlog.
  All of these have been in linux-next for a while with no reported
  issues"
* tag 'usb-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (171 commits)
  usbip: vhci-hcd: make vhci_hc_driver const
  usb: phy: Avoid unchecked dereference warning
  usb: imx21-hcd: make imx21_hc_driver const
  usb: host: make ehci_fsl_overrides const and __initconst
  dt-bindings: mt8173-mtu3: add generic compatible and rename file
  dt-bindings: mt8173-xhci: add generic compatible and rename file
  usb: xhci-mtk: add generic compatible string
  usbip: auto retry for concurrent attach
  USB: serial: option: simplify 3 D-Link device entries
  USB: serial: option: add support for D-Link DWM-157 C1
  usb: core: usbport: fix "BUG: key not in .data" when lockdep is enabled
  usb: chipidea: usb2: check memory allocation failure
  usb: Add device quirk for Logitech HD Pro Webcam C920-C
  usb: misc: lvstest: add entry to place port in compliance mode
  usb: xhci: Support enabling of compliance mode for xhci 1.1
  usb:xhci:Fix regression when ATI chipsets detected
  usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard
  usb: gadget: make snd_pcm_hardware const
  usb: common: use of_property_read_bool()
  USB: core: constify vm_operations_struct
  ...
Diffstat (limited to 'drivers/usb/core/hub.c')
| -rw-r--r-- | drivers/usb/core/hub.c | 19 | 
1 files changed, 16 insertions, 3 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 822f8c50e423..41eaf0b52518 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -2614,7 +2614,7 @@ static unsigned hub_is_wusb(struct usb_hub *hub)  #define SET_CONFIG_TRIES	(2 * (use_both_schemes + 1))  #define USE_NEW_SCHEME(i)	((i) / 2 == (int)old_scheme_first) -#define HUB_ROOT_RESET_TIME	50	/* times are in msec */ +#define HUB_ROOT_RESET_TIME	60	/* times are in msec */  #define HUB_SHORT_RESET_TIME	10  #define HUB_BH_RESET_TIME	50  #define HUB_LONG_RESET_TIME	200 @@ -4342,6 +4342,7 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,  	enum usb_device_speed	oldspeed = udev->speed;  	const char		*speed;  	int			devnum = udev->devnum; +	const char		*driver_name;  	/* root hub ports have a slightly longer reset period  	 * (from USB 2.0 spec, section 7.1.7.5) @@ -4409,11 +4410,23 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,  	else  		speed = usb_speed_string(udev->speed); +	/* +	 * The controller driver may be NULL if the controller device +	 * is the middle device between platform device and roothub. +	 * This middle device may not need a device driver due to +	 * all hardware control can be at platform device driver, this +	 * platform device is usually a dual-role USB controller device. +	 */ +	if (udev->bus->controller->driver) +		driver_name = udev->bus->controller->driver->name; +	else +		driver_name = udev->bus->sysdev->driver->name; +  	if (udev->speed < USB_SPEED_SUPER)  		dev_info(&udev->dev,  				"%s %s USB device number %d using %s\n",  				(udev->config) ? "reset" : "new", speed, -				devnum, udev->bus->controller->driver->name); +				devnum, driver_name);  	/* Set up TT records, if needed  */  	if (hdev->tt) { @@ -4545,7 +4558,7 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,  						"%s SuperSpeed%s USB device number %d using %s\n",  						(udev->config) ? "reset" : "new",  					 (udev->speed == USB_SPEED_SUPER_PLUS) ? "Plus" : "", -						devnum, udev->bus->controller->driver->name); +					 devnum, driver_name);  			}  			/* cope with hardware quirkiness:  | 
