[U-Boot] [PATCH 6/7] USB: SS: Add support for Super Speed USB interface
Vivek Gautam
gautamvivek1987 at gmail.com
Tue Apr 2 11:52:12 CEST 2013
Hi Marek,
On Thu, Mar 28, 2013 at 8:05 PM, Marek Vasut <marex at denx.de> wrote:
> 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?
Yea, possibly we can add "usb_ss_ep_comp_descriptor" in
'usb_interface' itself only.
Also quoting USB 3.0 specs:
"SuperSpeed devices shall return Endpoint Companion descriptors
for each of the endpoints in that interface to return additional
information about its endpoint
capabilities. The Endpoint Companion descriptor shall immediately
follow the endpoint descriptor
it is associated with in the configuration information."
Will update this accordingly.
>
>> } __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
--
Thanks & Regards
Vivek
More information about the U-Boot
mailing list