Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/usb Detect USB 3.1.
details: https://anonhg.NetBSD.org/src/rev/eb4254361270
branches: trunk
changeset: 991137:eb4254361270
user: msaitoh <msaitoh%NetBSD.org@localhost>
date: Fri Jun 29 17:48:24 2018 +0000
description:
Detect USB 3.1.
diffstat:
sys/arch/arm/nvidia/tegra_xusb.c | 27 +++++++++++++++++++++++++--
sys/dev/fdt/dwc3_fdt.c | 5 +++--
sys/dev/pci/xhci_pci.c | 28 +++++++++++++++++++++++++---
sys/dev/usb/usb.c | 8 ++++++--
sys/dev/usb/usbdivar.h | 5 +++--
sys/dev/usb/xhci.c | 5 ++---
sys/dev/usb/xhcireg.h | 3 ++-
7 files changed, 66 insertions(+), 15 deletions(-)
diffs (228 lines):
diff -r 6246b8bef221 -r eb4254361270 sys/arch/arm/nvidia/tegra_xusb.c
--- a/sys/arch/arm/nvidia/tegra_xusb.c Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/arch/arm/nvidia/tegra_xusb.c Fri Jun 29 17:48:24 2018 +0000
@@ -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 @@
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);
diff -r 6246b8bef221 -r eb4254361270 sys/dev/fdt/dwc3_fdt.c
--- a/sys/dev/fdt/dwc3_fdt.c Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/dev/fdt/dwc3_fdt.c Fri Jun 29 17:48:24 2018 +0000
@@ -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 <jmcneill%invisible.ca@localhost>
@@ -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 @@
}
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);
diff -r 6246b8bef221 -r eb4254361270 sys/dev/pci/xhci_pci.c
--- a/sys/dev/pci/xhci_pci.c Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/dev/pci/xhci_pci.c Fri Jun 29 17:48:24 2018 +0000
@@ -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 @@
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 @@
}
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:
diff -r 6246b8bef221 -r eb4254361270 sys/dev/usb/usb.c
--- a/sys/dev/usb/usb.c Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/dev/usb/usb.c Fri Jun 29 17:48:24 2018 +0000
@@ -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 @@
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 @@
case USBREV_3_0:
speed = USB_SPEED_SUPER;
break;
+ case USBREV_3_1:
+ speed = USB_SPEED_SUPER_PLUS;
+ break;
default:
panic("usb_doattach");
}
diff -r 6246b8bef221 -r eb4254361270 sys/dev/usb/usbdivar.h
--- a/sys/dev/usb/usbdivar.h Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/dev/usb/usbdivar.h Fri Jun 29 17:48:24 2018 +0000
@@ -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 @@
#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;
diff -r 6246b8bef221 -r eb4254361270 sys/dev/usb/xhci.c
--- a/sys/dev/usb/xhci.c Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/dev/usb/xhci.c Fri Jun 29 17:48:24 2018 +0000
@@ -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 @@
/* 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;
diff -r 6246b8bef221 -r eb4254361270 sys/dev/usb/xhcireg.h
--- a/sys/dev/usb/xhcireg.h Fri Jun 29 12:34:13 2018 +0000
+++ b/sys/dev/usb/xhcireg.h Fri Jun 29 17:48:24 2018 +0000
@@ -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 */
Home |
Main Index |
Thread Index |
Old Index