Page MenuHomeFreeBSD

D52861.id163353.diff
No OneTemporary

D52861.id163353.diff

diff --git a/sys/dev/pci/pcireg.h b/sys/dev/pci/pcireg.h
--- a/sys/dev/pci/pcireg.h
+++ b/sys/dev/pci/pcireg.h
@@ -464,6 +464,7 @@
#define PCIP_SERIALBUS_USB_OHCI 0x10
#define PCIP_SERIALBUS_USB_EHCI 0x20
#define PCIP_SERIALBUS_USB_XHCI 0x30
+#define PCIP_SERIALBUS_USB_USB4 0x40
#define PCIP_SERIALBUS_USB_DEVICE 0xfe
#define PCIS_SERIALBUS_FC 0x04
#define PCIS_SERIALBUS_SMBUS 0x05
diff --git a/sys/dev/thunderbolt/nhi_pci.c b/sys/dev/thunderbolt/nhi_pci.c
--- a/sys/dev/thunderbolt/nhi_pci.c
+++ b/sys/dev/thunderbolt/nhi_pci.c
@@ -109,17 +109,11 @@
"Thunderbolt 3 NHI Port 0 (IceLake)" },
{ VENDOR_INTEL, DEVICE_ICL_NHI_1, 0xffff, 0xffff, NHI_TYPE_ICL,
"Thunderbolt 3 NHI Port 1 (IceLake)" },
- { VENDOR_AMD, DEVICE_PINK_SARDINE_0, 0xffff, 0xffff, NHI_TYPE_USB4,
- "USB4 NHI Port 0 (Pink Sardine)" },
- { VENDOR_AMD, DEVICE_PINK_SARDINE_1, 0xffff, 0xffff, NHI_TYPE_USB4,
- "USB4 NHI Port 1 (Pink Sardine)" },
{ 0, 0, 0, 0, 0, NULL }
};
DRIVER_MODULE_ORDERED(nhi, pci, nhi_pci_driver, NULL, NULL,
SI_ORDER_ANY);
-MODULE_PNP_INFO("U16:vendor;U16:device;V16:subvendor;V16:subdevice;U32:#;D:#",
- pci, nhi, nhi_identifiers, nitems(nhi_identifiers) - 1);
static struct nhi_ident *
nhi_find_ident(device_t dev)
@@ -143,6 +137,18 @@
return (NULL);
}
+/* Assumes device is a USB4 device. */
+static uint32_t
+nhi_get_flags(device_t dev)
+{
+ struct nhi_ident *ident = nhi_find_ident(dev);
+
+ if (ident != NULL)
+ return (ident->flags);
+ /* Flags for generic USB4 device. */
+ return (NHI_TYPE_USB4);
+}
+
static int
nhi_pci_probe(device_t dev)
{
@@ -154,6 +160,12 @@
device_set_desc(dev, n->desc);
return (BUS_PROBE_DEFAULT);
}
+ if ((pci_get_class(dev) == PCIC_SERIALBUS)
+ && (pci_get_subclass(dev) == PCIS_SERIALBUS_USB)
+ && (pci_get_progif(dev) == PCIP_SERIALBUS_USB_USB4)) {
+ device_set_desc(dev, "Generic USB4 NHI");
+ return (BUS_PROBE_DEFAULT);
+ }
return (ENXIO);
}
@@ -163,14 +175,12 @@
devclass_t dc;
bus_dma_template_t t;
struct nhi_softc *sc;
- struct nhi_ident *n;
int error = 0;
sc = device_get_softc(dev);
bzero(sc, sizeof(*sc));
sc->dev = dev;
- n = nhi_find_ident(dev);
- sc->hwflags = n->flags;
+ sc->hwflags = nhi_get_flags(dev);
nhi_get_tunables(sc);
tb_debug(sc, DBG_INIT|DBG_FULL, "busmaster status was %s\n",

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 28, 10:53 AM (14 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30468934
Default Alt Text
D52861.id163353.diff (2 KB)

Event Timeline