mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-26 15:28:50 +00:00
USB: SS: Add support for Super Speed USB interface
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@samsung.com> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
This commit is contained in:
parent
289f3cb28a
commit
6497c66704
5 changed files with 58 additions and 9 deletions
|
@ -287,12 +287,24 @@ static struct usb_device *usb_find_device(int devnum)
|
||||||
|
|
||||||
static inline char *portspeed(int speed)
|
static inline char *portspeed(int speed)
|
||||||
{
|
{
|
||||||
if (speed == USB_SPEED_HIGH)
|
char *speed_str;
|
||||||
return "480 Mb/s";
|
|
||||||
else if (speed == USB_SPEED_LOW)
|
switch (speed) {
|
||||||
return "1.5 Mb/s";
|
case USB_SPEED_SUPER:
|
||||||
else
|
speed_str = "5 Gb/s";
|
||||||
return "12 Mb/s";
|
break;
|
||||||
|
case USB_SPEED_HIGH:
|
||||||
|
speed_str = "480 Mb/s";
|
||||||
|
break;
|
||||||
|
case USB_SPEED_LOW:
|
||||||
|
speed_str = "1.5 Mb/s";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
speed_str = "12 Mb/s";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return speed_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shows the device tree recursively */
|
/* shows the device tree recursively */
|
||||||
|
|
|
@ -409,6 +409,11 @@ static int usb_parse_config(struct usb_device *dev,
|
||||||
wMaxPacketSize);
|
wMaxPacketSize);
|
||||||
debug("if %d, ep %d\n", ifno, epno);
|
debug("if %d, ep %d\n", ifno, epno);
|
||||||
break;
|
break;
|
||||||
|
case USB_DT_SS_ENDPOINT_COMP:
|
||||||
|
if_desc = &dev->config.if_desc[ifno];
|
||||||
|
memcpy(&if_desc->ss_ep_comp_desc[epno],
|
||||||
|
&buffer[index], buffer[index]);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (head->bLength == 0)
|
if (head->bLength == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -165,7 +165,9 @@ static struct usb_hub_device *usb_hub_allocate(void)
|
||||||
|
|
||||||
static inline char *portspeed(int portstatus)
|
static inline char *portspeed(int portstatus)
|
||||||
{
|
{
|
||||||
if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED))
|
if (portstatus & (1 << USB_PORT_FEAT_SUPERSPEED))
|
||||||
|
return "5 Gb/s";
|
||||||
|
else if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED))
|
||||||
return "480 Mb/s";
|
return "480 Mb/s";
|
||||||
else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED))
|
else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED))
|
||||||
return "1.5 Mb/s";
|
return "1.5 Mb/s";
|
||||||
|
@ -268,7 +270,9 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)
|
||||||
/* Allocate a new device struct for it */
|
/* Allocate a new device struct for it */
|
||||||
usb = usb_alloc_new_device(dev->controller);
|
usb = usb_alloc_new_device(dev->controller);
|
||||||
|
|
||||||
if (portstatus & USB_PORT_STAT_HIGH_SPEED)
|
if (portstatus & USB_PORT_STAT_SUPER_SPEED)
|
||||||
|
usb->speed = USB_SPEED_SUPER;
|
||||||
|
else if (portstatus & USB_PORT_STAT_HIGH_SPEED)
|
||||||
usb->speed = USB_SPEED_HIGH;
|
usb->speed = USB_SPEED_HIGH;
|
||||||
else if (portstatus & USB_PORT_STAT_LOW_SPEED)
|
else if (portstatus & USB_PORT_STAT_LOW_SPEED)
|
||||||
usb->speed = USB_SPEED_LOW;
|
usb->speed = USB_SPEED_LOW;
|
||||||
|
|
|
@ -76,6 +76,12 @@ struct usb_interface {
|
||||||
unsigned char act_altsetting;
|
unsigned char act_altsetting;
|
||||||
|
|
||||||
struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS];
|
struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS];
|
||||||
|
/*
|
||||||
|
* 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_desc[USB_MAXENDPOINTS];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
/* Configuration information.. */
|
/* Configuration information.. */
|
||||||
|
|
|
@ -215,6 +215,8 @@
|
||||||
#define USB_PORT_FEAT_POWER 8
|
#define USB_PORT_FEAT_POWER 8
|
||||||
#define USB_PORT_FEAT_LOWSPEED 9
|
#define USB_PORT_FEAT_LOWSPEED 9
|
||||||
#define USB_PORT_FEAT_HIGHSPEED 10
|
#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_CONNECTION 16
|
||||||
#define USB_PORT_FEAT_C_ENABLE 17
|
#define USB_PORT_FEAT_C_ENABLE 17
|
||||||
#define USB_PORT_FEAT_C_SUSPEND 18
|
#define USB_PORT_FEAT_C_SUSPEND 18
|
||||||
|
@ -231,8 +233,20 @@
|
||||||
#define USB_PORT_STAT_POWER 0x0100
|
#define USB_PORT_STAT_POWER 0x0100
|
||||||
#define USB_PORT_STAT_LOW_SPEED 0x0200
|
#define USB_PORT_STAT_LOW_SPEED 0x0200
|
||||||
#define USB_PORT_STAT_HIGH_SPEED 0x0400 /* support for EHCI */
|
#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 \
|
#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 */
|
/* wPortChange bits */
|
||||||
#define USB_PORT_STAT_C_CONNECTION 0x0001
|
#define USB_PORT_STAT_C_CONNECTION 0x0001
|
||||||
|
@ -241,6 +255,14 @@
|
||||||
#define USB_PORT_STAT_C_OVERCURRENT 0x0008
|
#define USB_PORT_STAT_C_OVERCURRENT 0x0008
|
||||||
#define USB_PORT_STAT_C_RESET 0x0010
|
#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) */
|
/* wHubCharacteristics (masks) */
|
||||||
#define HUB_CHAR_LPSM 0x0003
|
#define HUB_CHAR_LPSM 0x0003
|
||||||
#define HUB_CHAR_COMPOUND 0x0004
|
#define HUB_CHAR_COMPOUND 0x0004
|
||||||
|
|
Loading…
Add table
Reference in a new issue