Module Name: src
Committed By: msaitoh
Date: Fri Jun 29 17:48:24 UTC 2018
Modified Files:
src/sys/arch/arm/nvidia: tegra_xusb.c
src/sys/dev/fdt: dwc3_fdt.c
src/sys/dev/pci: xhci_pci.c
src/sys/dev/usb: usb.c usbdivar.h xhci.c xhcireg.h
Log Message:
Detect USB 3.1.
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/nvidia/tegra_xusb.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/fdt/dwc3_fdt.c
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/pci/xhci_pci.c
cvs rdiff -u -r1.168 -r1.169 src/sys/dev/usb/usb.c
cvs rdiff -u -r1.115 -r1.116 src/sys/dev/usb/usbdivar.h
cvs rdiff -u -r1.92 -r1.93 src/sys/dev/usb/xhci.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/usb/xhcireg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/arm/nvidia/tegra_xusb.c
diff -u src/sys/arch/arm/nvidia/tegra_xusb.c:1.12 src/sys/arch/arm/nvidia/tegra_xusb.c:1.13
--- src/sys/arch/arm/nvidia/tegra_xusb.c:1.12 Tue Sep 26 16:12:45 2017
+++ src/sys/arch/arm/nvidia/tegra_xusb.c Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra_xusb.c,v 1.12 2017/09/26 16:12:45 jmcneill Exp $ */
+/* $NetBSD: tegra_xusb.c,v 1.13 2018/06/29 17:48:24 msaitoh Exp $ */
/*
* Copyright (c) 2016 Jonathan A. Kollasch
@@ -30,7 +30,7 @@
#include "opt_tegra.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.12 2017/09/26 16:12:45 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra_xusb.c,v 1.13 2018/06/29 17:48:24 msaitoh Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -417,6 +417,29 @@ tegra_xusb_mountroot(device_t self)
val = csb_read_4(psc, XUSB_CSB_FALCON_CPUCTL_REG);
DPRINTF(sc->sc_dev, "XUSB_FALC_CPUCTL 0x%x\n", val);
+ val = bus_space_read_4(bst, psc->sc_bsh_fpci, PCI_USBREV)
+ & PCI_USBREV_MASK;
+ switch (val) {
+ case PCI_USBREV_3_0:
+ sc->sc_bus.ub_revision = USBREV_3_0;
+ break;
+ case PCI_USBREV_3_1:
+ sc->sc_bus.ub_revision = USBREV_3_1;
+ break;
+ default:
+ if (val < PCI_USBREV_3_0) {
+ aprint_error_dev(self, "Unknown revision (%02x)\n",
+ usbrev);
+ sc->sc_bus.ub_revision = USBREV_UNKNOWN;
+ } else {
+ /* Default to the latest revision */
+ aprint_normal_dev(self,
+ "Unknown revision (%02x). Set to 3.1.\n", usbrev);
+ sc->sc_bus.ub_revision = USBREV_3_1;
+ }
+ break;
+ }
+
error = xhci_init(sc);
if (error) {
aprint_error_dev(self, "init failed, error=%d\n", error);
Index: src/sys/dev/fdt/dwc3_fdt.c
diff -u src/sys/dev/fdt/dwc3_fdt.c:1.2 src/sys/dev/fdt/dwc3_fdt.c:1.3
--- src/sys/dev/fdt/dwc3_fdt.c:1.2 Thu Jun 21 10:45:25 2018
+++ src/sys/dev/fdt/dwc3_fdt.c Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc3_fdt.c,v 1.2 2018/06/21 10:45:25 jmcneill Exp $ */
+/* $NetBSD: dwc3_fdt.c,v 1.3 2018/06/29 17:48:24 msaitoh Exp $ */
/*-
* Copyright (c) 2018 Jared McNeill <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dwc3_fdt.c,v 1.2 2018/06/21 10:45:25 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwc3_fdt.c,v 1.3 2018/06/29 17:48:24 msaitoh Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -268,6 +268,7 @@ dwc3_fdt_attach(device_t parent, device_
}
aprint_normal_dev(self, "interrupting on %s\n", intrstr);
+ sc->sc_bus.ub_revision = USBREV_3_0;
error = xhci_init(sc);
if (error) {
aprint_error_dev(self, "init failed, error = %d\n", error);
Index: src/sys/dev/pci/xhci_pci.c
diff -u src/sys/dev/pci/xhci_pci.c:1.12 src/sys/dev/pci/xhci_pci.c:1.13
--- src/sys/dev/pci/xhci_pci.c:1.12 Mon Apr 9 16:21:10 2018
+++ src/sys/dev/pci/xhci_pci.c Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: xhci_pci.c,v 1.12 2018/04/09 16:21:10 jakllsch Exp $ */
+/* $NetBSD: xhci_pci.c,v 1.13 2018/06/29 17:48:24 msaitoh Exp $ */
/* OpenBSD: xhci_pci.c,v 1.4 2014/07/12 17:38:51 yuo Exp */
/*
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xhci_pci.c,v 1.12 2018/04/09 16:21:10 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xhci_pci.c,v 1.13 2018/06/29 17:48:24 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_xhci_pci.h"
@@ -125,7 +125,7 @@ xhci_pci_attach(device_t parent, device_
const pcitag_t tag = pa->pa_tag;
pci_intr_type_t intr_type;
char const *intrstr;
- pcireg_t csr, memtype;
+ pcireg_t csr, memtype, usbrev;
int err;
uint32_t hccparams;
char intrbuf[PCI_INTRSTR_LEN];
@@ -217,6 +217,28 @@ alloc_retry:
}
aprint_normal_dev(self, "interrupting at %s\n", intrstr);
+ usbrev = pci_conf_read(pc, tag, PCI_USBREV) & PCI_USBREV_MASK;
+ switch (usbrev) {
+ case PCI_USBREV_3_0:
+ sc->sc_bus.ub_revision = USBREV_3_0;
+ break;
+ case PCI_USBREV_3_1:
+ sc->sc_bus.ub_revision = USBREV_3_1;
+ break;
+ default:
+ if (usbrev < PCI_USBREV_3_0) {
+ aprint_error_dev(self, "Unknown revision (%02x)\n",
+ usbrev);
+ sc->sc_bus.ub_revision = USBREV_UNKNOWN;
+ } else {
+ /* Default to the latest revision */
+ aprint_normal_dev(self,
+ "Unknown revision (%02x). Set to 3.1.\n", usbrev);
+ sc->sc_bus.ub_revision = USBREV_3_1;
+ }
+ break;
+ }
+
/* Intel chipset requires SuperSpeed enable and USB2 port routing */
switch (PCI_VENDOR(pa->pa_id)) {
case PCI_VENDOR_INTEL:
Index: src/sys/dev/usb/usb.c
diff -u src/sys/dev/usb/usb.c:1.168 src/sys/dev/usb/usb.c:1.169
--- src/sys/dev/usb/usb.c:1.168 Sat Oct 28 00:37:12 2017
+++ src/sys/dev/usb/usb.c Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: usb.c,v 1.168 2017/10/28 00:37:12 pgoyette Exp $ */
+/* $NetBSD: usb.c,v 1.169 2018/06/29 17:48:24 msaitoh Exp $ */
/*
* Copyright (c) 1998, 2002, 2008, 2012 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.168 2017/10/28 00:37:12 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.169 2018/06/29 17:48:24 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_usb.h"
@@ -245,6 +245,7 @@ usb_attach(device_t parent, device_t sel
case USBREV_1_1:
case USBREV_2_0:
case USBREV_3_0:
+ case USBREV_3_1:
break;
default:
aprint_error(", not supported\n");
@@ -332,6 +333,9 @@ usb_doattach(device_t self)
case USBREV_3_0:
speed = USB_SPEED_SUPER;
break;
+ case USBREV_3_1:
+ speed = USB_SPEED_SUPER_PLUS;
+ break;
default:
panic("usb_doattach");
}
Index: src/sys/dev/usb/usbdivar.h
diff -u src/sys/dev/usb/usbdivar.h:1.115 src/sys/dev/usb/usbdivar.h:1.116
--- src/sys/dev/usb/usbdivar.h:1.115 Thu Apr 19 21:50:09 2018
+++ src/sys/dev/usb/usbdivar.h Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: usbdivar.h,v 1.115 2018/04/19 21:50:09 christos Exp $ */
+/* $NetBSD: usbdivar.h,v 1.116 2018/06/29 17:48:24 msaitoh Exp $ */
/*
* Copyright (c) 1998, 2012 The NetBSD Foundation, Inc.
@@ -153,7 +153,8 @@ struct usbd_bus {
#define USBREV_1_1 3
#define USBREV_2_0 4
#define USBREV_3_0 5
-#define USBREV_STR { "unknown", "pre 1.0", "1.0", "1.1", "2.0", "3.0" }
+#define USBREV_3_1 6
+#define USBREV_STR { "unknown", "pre 1.0", "1.0", "1.1", "2.0", "3.0", "3.1" }
const struct usbd_bus_methods
*ub_methods;
Index: src/sys/dev/usb/xhci.c
diff -u src/sys/dev/usb/xhci.c:1.92 src/sys/dev/usb/xhci.c:1.93
--- src/sys/dev/usb/xhci.c:1.92 Mon May 14 00:26:02 2018
+++ src/sys/dev/usb/xhci.c Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: xhci.c,v 1.92 2018/05/14 00:26:02 jakllsch Exp $ */
+/* $NetBSD: xhci.c,v 1.93 2018/06/29 17:48:24 msaitoh Exp $ */
/*
* Copyright (c) 2013 Jonathan A. Kollasch
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.92 2018/05/14 00:26:02 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.93 2018/06/29 17:48:24 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_usb.h"
@@ -911,7 +911,6 @@ xhci_init(struct xhci_softc *sc)
/* Set up the bus struct for the usb 3 and usb 2 buses */
sc->sc_bus.ub_methods = &xhci_bus_methods;
sc->sc_bus.ub_pipesize = sizeof(struct xhci_pipe);
- sc->sc_bus.ub_revision = USBREV_3_0;
sc->sc_bus.ub_usedma = true;
sc->sc_bus.ub_hcpriv = sc;
Index: src/sys/dev/usb/xhcireg.h
diff -u src/sys/dev/usb/xhcireg.h:1.10 src/sys/dev/usb/xhcireg.h:1.11
--- src/sys/dev/usb/xhcireg.h:1.10 Mon Apr 23 19:55:00 2018
+++ src/sys/dev/usb/xhcireg.h Fri Jun 29 17:48:24 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: xhcireg.h,v 1.10 2018/04/23 19:55:00 jdolecek Exp $ */
+/* $NetBSD: xhcireg.h,v 1.11 2018/06/29 17:48:24 msaitoh Exp $ */
/*-
* Copyright (c) 2010 Hans Petter Selasky. All rights reserved.
@@ -35,6 +35,7 @@
#define PCI_USBREV 0x60 /* RO USB protocol revision */
#define PCI_USBREV_MASK 0xFF
#define PCI_USBREV_3_0 0x30 /* USB 3.0 */
+#define PCI_USBREV_3_1 0x31 /* USB 3.1 */
#define PCI_XHCI_FLADJ 0x61 /* RW frame length adjust */