From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Thu, 28 Mar 2013 15:35:20 +0100 Subject: [U-Boot] [PATCH 6/7] USB: SS: Add support for Super Speed USB interface In-Reply-To: <1364376543-7526-7-git-send-email-gautam.vivek@samsung.com> References: <1364376543-7526-1-git-send-email-gautam.vivek@samsung.com> <1364376543-7526-7-git-send-email-gautam.vivek@samsung.com> Message-ID: <201303281535.20404.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > Signed-off-by: Vivek Gautam [...] > --- 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