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 */
 

Reply via email to