[U-Boot] [PATCH 05/16] usb: hub: Add a new API to test if a hub device is root hub

Marek Vasut marex at denx.de
Fri Jun 23 17:55:43 UTC 2017


On 06/23/2017 11:54 AM, Bin Meng wrote:
> Sometimes we need know if a given hub device is root hub or not.
> Add a new API to test this.
> 
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> ---
> 
>  common/usb_hub.c | 10 ++++++++++
>  include/usb.h    |  8 ++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/common/usb_hub.c b/common/usb_hub.c
> index 18bd827..d780251 100644
> --- a/common/usb_hub.c
> +++ b/common/usb_hub.c
> @@ -74,6 +74,16 @@ static inline bool usb_hub_is_superspeed(struct usb_device *hdev)
>  	return hdev->descriptor.bDeviceProtocol == 3;
>  }
>  
> +#ifdef CONFIG_DM_USB
> +bool usb_hub_is_root_hub(struct udevice *hub)
> +{
> +	if (device_get_uclass_id(hub->parent) != UCLASS_USB_HUB)

Can this call fail ?

> +		return true;
> +
> +	return false;
> +}
> +#endif
> +
>  static int usb_get_hub_descriptor(struct usb_device *dev, void *data, int size)
>  {
>  	unsigned short dtype = USB_DT_HUB;
> diff --git a/include/usb.h b/include/usb.h
> index eb82cc2..c504d71 100644
> --- a/include/usb.h
> +++ b/include/usb.h
> @@ -776,6 +776,14 @@ int usb_setup_device(struct usb_device *dev, bool do_read,
>  		     struct usb_device *parent);
>  
>  /**
> + * usb_hub_is_root_hub() - Test whether a hub device is root hub or not
> + *
> + * @hub:	USB hub device to test
> + * @return:	true if the hub device is root hub, false otherwise.
> + */
> +bool usb_hub_is_root_hub(struct udevice *hub);
> +
> +/**
>   * usb_hub_scan() - Scan a hub and find its devices
>   *
>   * @hub:	Hub device to scan
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list