[U-Boot] [PATCH 6/7] USB: SS: Add support for Super Speed USB interface
Marek Vasut
marex at denx.de
Thu Mar 28 15:35:20 CET 2013
Dear Vivek Gautam,
> This adds usb framework support for super-speed usb, which will
> further facilitate to add stack support for xHCI.
>
> Signed-off-by: Vikas C Sajjan <vikas.sajjan at samsung.com>
> Signed-off-by: Vivek Gautam <gautam.vivek at samsung.com>
[...]
> --- a/include/usb.h
> +++ b/include/usb.h
> @@ -67,6 +67,16 @@ struct devrequest {
> unsigned short length;
> } __attribute__ ((packed));
>
> +struct usb_ep_desc {
> + struct usb_endpoint_descriptor ep_desc;
> + /*
> + * Super Speed Device will have Super Speed Endpoint
> + * Companion Descriptor (section 9.6.7 of usb 3.0 spec)
> + * Revision 1.0 June 6th 2011
> + */
> + struct usb_ss_ep_comp_descriptor ss_ep_comp;
> +};
> +
> /* Interface */
> struct usb_interface {
> struct usb_interface_descriptor desc;
> @@ -75,7 +85,7 @@ struct usb_interface {
> unsigned char num_altsetting;
> unsigned char act_altsetting;
>
> - struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS];
> + struct usb_ep_desc ep_desc[USB_MAXENDPOINTS];
Do we really need this struct usb_ep_desc? Can we not just store the
usb_ss_ep_comp_descriptor here as well?
> } __attribute__ ((packed));
>
> /* Configuration information.. */
> diff --git a/include/usb_defs.h b/include/usb_defs.h
> index 0c78d9d..e2aaef3 100644
> --- a/include/usb_defs.h
> +++ b/include/usb_defs.h
> @@ -203,6 +203,8 @@
> #define USB_PORT_FEAT_POWER 8
> #define USB_PORT_FEAT_LOWSPEED 9
> #define USB_PORT_FEAT_HIGHSPEED 10
> +#define USB_PORT_FEAT_FULLSPEED 11
> +#define USB_PORT_FEAT_SUPERSPEED 12
> #define USB_PORT_FEAT_C_CONNECTION 16
> #define USB_PORT_FEAT_C_ENABLE 17
> #define USB_PORT_FEAT_C_SUSPEND 18
> @@ -218,8 +220,20 @@
> #define USB_PORT_STAT_POWER 0x0100
> #define USB_PORT_STAT_LOW_SPEED 0x0200
> #define USB_PORT_STAT_HIGH_SPEED 0x0400 /* support for EHCI */
> +#define USB_PORT_STAT_FULL_SPEED 0x0800
> +#define USB_PORT_STAT_SUPER_SPEED 0x1000 /* support for XHCI */
> #define USB_PORT_STAT_SPEED \
> - (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED)
> + (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED | \
> + USB_PORT_STAT_FULL_SPEED | USB_PORT_STAT_SUPER_SPEED)
> +
> +/*
> + * Additions to wPortStatus bit field from USB 3.0
> + * See USB 3.0 spec Table 10-10
> + */
> +#define USB_PORT_STAT_LINK_STATE 0x01e0
> +#define USB_SS_PORT_STAT_POWER 0x0200
> +#define USB_SS_PORT_STAT_SPEED 0x1c00
> +#define USB_PORT_STAT_SPEED_5GBPS 0x0000
>
> /* wPortChange bits */
> #define USB_PORT_STAT_C_CONNECTION 0x0001
> @@ -228,6 +242,14 @@
> #define USB_PORT_STAT_C_OVERCURRENT 0x0008
> #define USB_PORT_STAT_C_RESET 0x0010
>
> +/*
> + * Addition to wPortChange bit fields form USB 3.0
> + * See USB 3.0 spec Table 10-11
> + */
> +#define USB_PORT_STAT_C_BH_RESET 0x0020
> +#define USB_PORT_STAT_C_LINK_STATE 0x0040
> +#define USB_PORT_STAT_C_CONFIG_ERROR 0x0080
> +
> /* wHubCharacteristics (masks) */
> #define HUB_CHAR_LPSM 0x0003
> #define HUB_CHAR_COMPOUND 0x0004
More information about the U-Boot
mailing list