Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F163446351
D57198.id178455.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D57198.id178455.diff
View Options
diff --git a/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c b/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c
--- a/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c
+++ b/sys/dev/rtwn/rtl8812a/usb/r12au_attach.c
@@ -78,7 +78,7 @@
struct rtwn_usb_softc *uc = RTWN_USB_SOFTC(sc);
struct r12a_softc *rs = sc->sc_priv;
- if (usbd_get_speed(uc->uc_udev) == USB_SPEED_SUPER) {
+ if (usbd_get_speed(uc->uc_udev) >= USB_SPEED_SUPER) {
rs->ac_usb_dma_size = 0x07;
rs->ac_usb_dma_time = 0x1a;
} else {
diff --git a/sys/dev/usb/controller/usb_controller.c b/sys/dev/usb/controller/usb_controller.c
--- a/sys/dev/usb/controller/usb_controller.c
+++ b/sys/dev/usb/controller/usb_controller.c
@@ -736,6 +736,18 @@
device_printf(bus->bdev, "5.0Gbps Super Speed USB v3.0\n");
break;
+ case USB_REV_3_1:
+ speed = USB_SPEED_SUPER_PLUS;
+ device_printf(bus->bdev,
+ "10Gbps Super Speed Plus USB v3.1\n");
+ break;
+
+ case USB_REV_3_2:
+ speed = USB_SPEED_SUPER_PLUS_GEN2_X2;
+ device_printf(bus->bdev,
+ "20Gbps Super Speed Plus USB v3.2\n");
+ break;
+
default:
device_printf(bus->bdev, "Unsupported USB revision\n");
#if USB_HAVE_ROOT_MOUNT_HOLD
diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -4465,9 +4465,9 @@
case USB_EP_MODE_DEFAULT:
return (0);
case USB_EP_MODE_STREAMS:
- if (xhcistreams == 0 ||
+ if (xhcistreams == 0 ||
(ep->edesc->bmAttributes & UE_XFERTYPE) != UE_BULK ||
- udev->speed != USB_SPEED_SUPER)
+ udev->speed < USB_SPEED_SUPER)
return (USB_ERR_INVAL);
return (0);
default:
diff --git a/sys/dev/usb/net/if_muge.c b/sys/dev/usb/net/if_muge.c
--- a/sys/dev/usb/net/if_muge.c
+++ b/sys/dev/usb/net/if_muge.c
@@ -817,6 +817,9 @@
/* XXX Flow control settings obtained from Microchip's driver. */
switch(usbd_get_speed(sc->sc_ue.ue_udev)) {
case USB_SPEED_SUPER:
+ case USB_SPEED_SUPER_PLUS:
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
fct_flow = 0x817;
break;
case USB_SPEED_HIGH:
@@ -1023,6 +1026,9 @@
/* Configuring the burst cap. */
switch (usbd_get_speed(sc->sc_ue.ue_udev)) {
case USB_SPEED_SUPER:
+ case USB_SPEED_SUPER_PLUS:
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
burst_cap = MUGE_DEFAULT_BURST_CAP_SIZE/MUGE_SS_USB_PKT_SIZE;
break;
case USB_SPEED_HIGH:
diff --git a/sys/dev/usb/net/if_ure.c b/sys/dev/usb/net/if_ure.c
--- a/sys/dev/usb/net/if_ure.c
+++ b/sys/dev/usb/net/if_ure.c
@@ -1151,6 +1151,9 @@
/* Set RX EARLY timeout and size */
if (sc->sc_flags & URE_FLAG_8153) {
switch (usbd_get_speed(sc->sc_ue.ue_udev)) {
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS:
case USB_SPEED_SUPER:
reg = URE_COALESCE_SUPER / 8;
break;
@@ -1700,7 +1703,7 @@
URE_CLRBIT_2(sc, URE_PLA_LED_FEATURE, URE_MCU_TYPE_PLA, URE_LED_MODE_MASK);
if ((sc->sc_chip & URE_CHIP_VER_5C10) &&
- usbd_get_speed(sc->sc_ue.ue_udev) != USB_SPEED_SUPER)
+ usbd_get_speed(sc->sc_ue.ue_udev) < USB_SPEED_SUPER)
val = URE_LPM_TIMER_500MS;
else
val = URE_LPM_TIMER_500US;
diff --git a/sys/dev/usb/storage/umass.c b/sys/dev/usb/storage/umass.c
--- a/sys/dev/usb/storage/umass.c
+++ b/sys/dev/usb/storage/umass.c
@@ -2409,6 +2409,13 @@
UMASS_FLOPPY_TRANSFER_SPEED;
} else {
switch (usbd_get_speed(sc->sc_udev)) {
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS:
+ cpi->base_transfer_speed =
+ 1000000;
+ cpi->maxio = maxphys;
+ break;
case USB_SPEED_SUPER:
cpi->base_transfer_speed =
UMASS_SUPER_TRANSFER_SPEED;
diff --git a/sys/dev/usb/template/usb_template.c b/sys/dev/usb/template/usb_template.c
--- a/sys/dev/usb/template/usb_template.c
+++ b/sys/dev/usb/template/usb_template.c
@@ -593,6 +593,15 @@
USETW(utd->udd.bcdUSB, 0x0300);
utd->udd.bMaxPacketSize = 9; /* 2**9 = 512 bytes */
break;
+ case USB_SPEED_SUPER_PLUS:
+ USETW(utd->udd.bcdUSB, 0x0310);
+ utd->udd.bMaxPacketSize = 9; /* 2**9 = 512 bytes */
+ break;
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
+ USETW(utd->udd.bcdUSB, 0x0320);
+ utd->udd.bMaxPacketSize = 9; /* 2**9 = 512 bytes */
+ break;
default:
temp->err = USB_ERR_INVAL;
break;
diff --git a/sys/dev/usb/usb_device.c b/sys/dev/usb/usb_device.c
--- a/sys/dev/usb/usb_device.c
+++ b/sys/dev/usb/usb_device.c
@@ -524,7 +524,7 @@
return;
/* check for SUPER-speed streams mode endpoint */
- if (udev->speed == USB_SPEED_SUPER && ecomp != NULL &&
+ if (udev->speed >= USB_SPEED_SUPER && ecomp != NULL &&
(edesc->bmAttributes & UE_XFERTYPE) == UE_BULK &&
(UE_GET_BULK_STREAMS(ecomp->bmAttributes) != 0)) {
usbd_set_endpoint_mode(udev, ep, USB_EP_MODE_STREAMS);
@@ -1856,15 +1856,17 @@
adev = udev;
hub = udev->parent_hub;
- while (hub) {
- if (hub->speed == USB_SPEED_HIGH) {
- udev->hs_hub_addr = hub->address;
- udev->parent_hs_hub = hub;
- udev->hs_port_no = adev->port_no;
- break;
+ if (udev->speed != USB_SPEED_HIGH) {
+ while (hub) {
+ if (hub->speed > udev->speed) {
+ udev->hs_hub_addr = hub->address;
+ udev->parent_hs_hub = hub;
+ udev->hs_port_no = adev->port_no;
+ break;
+ }
+ adev = hub;
+ hub = hub->parent_hub;
}
- adev = hub;
- hub = hub->parent_hub;
}
/* init the default endpoint */
diff --git a/sys/dev/usb/usb_request.c b/sys/dev/usb/usb_request.c
--- a/sys/dev/usb/usb_request.c
+++ b/sys/dev/usb/usb_request.c
@@ -2081,8 +2081,7 @@
* Try to reset the High Speed parent HUB of a LOW- or FULL-
* speed device, if any.
*/
- if (udev->parent_hs_hub != NULL &&
- udev->speed != USB_SPEED_HIGH) {
+ if (udev->parent_hs_hub != NULL && udev->speed < USB_SPEED_HIGH) {
DPRINTF("Trying to reset parent High Speed TT.\n");
if (udev->parent_hs_hub == parent_hub &&
(uhub_count_active_host_ports(parent_hub, USB_SPEED_LOW) +
@@ -2103,7 +2102,7 @@
}
#endif
/* Try to warm reset first */
- if (parent_hub->speed == USB_SPEED_SUPER)
+ if (parent_hub->speed >= USB_SPEED_SUPER)
usbd_req_warm_reset_port(parent_hub, mtx, udev->port_no);
/* Try to reset the parent HUB port. */
diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c
--- a/sys/dev/usb/usb_transfer.c
+++ b/sys/dev/usb/usb_transfer.c
@@ -407,6 +407,9 @@
max_packet_size &= 0x7FF;
break;
case USB_SPEED_SUPER:
+ case USB_SPEED_SUPER_PLUS:
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
max_packet_count += (max_packet_size >> 11) & 3;
if (ecomp != NULL)
@@ -517,6 +520,9 @@
xfer->max_packet_size &= 0x7FF;
break;
case USB_SPEED_SUPER:
+ case USB_SPEED_SUPER_PLUS:
+ case USB_SPEED_SUPER_PLUS_X2:
+ case USB_SPEED_SUPER_PLUS_GEN2_X2:
xfer->max_packet_count += (xfer->max_packet_size >> 11) & 3;
if (ecomp != NULL)
@@ -3532,14 +3538,20 @@
[USB_SPEED_HIGH] = 1024,
[USB_SPEED_VARIABLE] = 1024,
[USB_SPEED_SUPER] = 1024,
+ [USB_SPEED_SUPER_PLUS] = 1024,
+ [USB_SPEED_SUPER_PLUS_X2] = 1024,
+ [USB_SPEED_SUPER_PLUS_GEN2_X2] = 1024,
};
static const uint16_t isoc_range_max[USB_SPEED_MAX] = {
- [USB_SPEED_LOW] = 0, /* invalid */
+ [USB_SPEED_LOW] = 0, /* invalid */
[USB_SPEED_FULL] = 1023,
[USB_SPEED_HIGH] = 1024,
[USB_SPEED_VARIABLE] = 3584,
[USB_SPEED_SUPER] = 1024,
+ [USB_SPEED_SUPER_PLUS] = 1024,
+ [USB_SPEED_SUPER_PLUS_X2] = 1024,
+ [USB_SPEED_SUPER_PLUS_GEN2_X2] = 1024,
};
static const uint16_t control_min[USB_SPEED_MAX] = {
@@ -3548,6 +3560,9 @@
[USB_SPEED_HIGH] = 64,
[USB_SPEED_VARIABLE] = 512,
[USB_SPEED_SUPER] = 512,
+ [USB_SPEED_SUPER_PLUS] = 512,
+ [USB_SPEED_SUPER_PLUS_X2] = 512,
+ [USB_SPEED_SUPER_PLUS_GEN2_X2] = 512,
};
static const uint16_t bulk_min[USB_SPEED_MAX] = {
@@ -3556,6 +3571,9 @@
[USB_SPEED_HIGH] = 512,
[USB_SPEED_VARIABLE] = 512,
[USB_SPEED_SUPER] = 1024,
+ [USB_SPEED_SUPER_PLUS] = 1024,
+ [USB_SPEED_SUPER_PLUS_X2] = 1024,
+ [USB_SPEED_SUPER_PLUS_GEN2_X2] = 1024,
};
uint16_t temp;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 24, 6:53 AM (16 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35434827
Default Alt Text
D57198.id178455.diff (7 KB)
Attached To
Mode
D57198: usb: support SSP/SSPx2 devices in all-speed consumers
Attached
Detach File
Event Timeline
Log In to Comment