[U-Boot] [PATCH 4/4] usb: add support for multiple usb controllers

Marek Vasut marex at denx.de
Thu Aug 30 23:12:57 CEST 2012


Dear Lucas Stach,

> Allows to initialize more than one USB controller at once.
> 
> Signed-off-by: Lucas Stach <dev at lynxeye.de>
[...]

>  int usb_stop(void)
>  {
> -	int res = 0;
> +	int i;
> 
>  	if (usb_started) {
>  		asynch_allowed = 1;
>  		usb_started = 0;
>  		usb_hub_reset();
> -		res = usb_lowlevel_stop(0);
> +
> +		for (i = 0; i < CONFIG_USB_MAX_CONTROLLER_COUNT; i++)
> +			usb_lowlevel_stop(i);

You might want to track if any failed and return it or emit warning.

Otherwise:

Reviewed-by: Marek Vasut <marex at denx.de>

>  	}
> -	return res;
> +
> +	return 0;
>  }
> 
>  /*
> @@ -751,7 +781,6 @@ struct usb_device *usb_get_dev_index(int index)
>  		return &usb_dev[index];
>  }
> 
> -
>  /* returns a pointer of a new device structure or NULL, if
>   * no device struct is available
>   */
> @@ -947,29 +976,4 @@ int usb_new_device(struct usb_device *dev)
>  	return 0;
>  }
> 
> -/* build device Tree  */
> -static void usb_scan_devices(void)
> -{
> -	int i;
> -	struct usb_device *dev;
> -
> -	/* first make all devices unknown */
> -	for (i = 0; i < USB_MAX_DEVICE; i++) {
> -		memset(&usb_dev[i], 0, sizeof(struct usb_device));
> -		usb_dev[i].devnum = -1;
> -	}
> -	dev_index = 0;
> -	/* device 0 is always present (root hub, so let it analyze) */
> -	dev = usb_alloc_new_device(ctrl);
> -	if (usb_new_device(dev))
> -		printf("No USB Device found\n");
> -	else
> -		printf("%d USB Device(s) found\n", dev_index);
> -	/* insert "driver" if possible */
> -#ifdef CONFIG_USB_KEYBOARD
> -	drv_usb_kbd_init();
> -#endif
> -	USB_PRINTF("scan end\n");
> -}
> -
>  /* EOF */
> diff --git a/common/usb_storage.c b/common/usb_storage.c
> index 4aeed82..950451e 100644
> --- a/common/usb_storage.c
> +++ b/common/usb_storage.c
> @@ -244,7 +244,7 @@ int usb_stor_scan(int mode)
>  	struct usb_device *dev;
> 
>  	if (mode == 1)
> -		printf("       scanning bus for storage devices... ");
> +		printf("       scanning usb for storage devices... ");
> 
>  	usb_disable_asynch(1); /* asynch transfer not allowed */
> 
> diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c
> index 6cad6c8..f361e8b 100644
> --- a/drivers/usb/eth/usb_ether.c
> +++ b/drivers/usb/eth/usb_ether.c
> @@ -123,7 +123,7 @@ int usb_host_eth_scan(int mode)
> 
> 
>  	if (mode == 1)
> -		printf("       scanning bus for ethernet devices... ");
> +		printf("       scanning usb for ethernet devices... ");
> 
>  	old_async = usb_disable_asynch(1); /* asynch transfer not allowed */


More information about the U-Boot mailing list