diff --git a/sys/dev/usb/controller/ehci_pci.c b/sys/dev/usb/controller/ehci_pci.c index 7783c157046..dbc2def5b8d 100644 --- a/sys/dev/usb/controller/ehci_pci.c +++ b/sys/dev/usb/controller/ehci_pci.c @@ -117,6 +117,8 @@ ehci_pci_match(device_t self) return ("AMD CS5536 (Geode) USB 2.0 controller"); case 0x78081022: return ("AMD FCH USB 2.0 controller"); + case 0x79081022: + return ("AMD FCH USB 2.0 controller"); case 0x43451002: return "ATI SB200 USB 2.0 controller"; diff --git a/sys/dev/usb/controller/xhci_pci.c b/sys/dev/usb/controller/xhci_pci.c index 6dbe29b7c79..884200f547e 100644 --- a/sys/dev/usb/controller/xhci_pci.c +++ b/sys/dev/usb/controller/xhci_pci.c @@ -62,6 +62,9 @@ __FBSDID("$FreeBSD$"); #include #include "usb_if.h" +#define PCI_XHCI_VENDORID_AMD 0x1022 +#define PCI_XHCI_VENDORID_INTEL 0x8086 + static device_probe_t xhci_pci_probe; static device_detach_t xhci_pci_detach; static usb_take_controller_t xhci_pci_take_controller; @@ -106,6 +109,8 @@ xhci_pci_match(device_t self) return ("AMD 300 Series USB 3.0 controller"); case 0x78141022: return ("AMD FCH USB 3.0 controller"); + case 0x79141022: + return ("AMD FCH USB 3.0 controller"); case 0x145f1d94: return ("Hygon USB 3.0 controller"); @@ -367,7 +372,21 @@ xhci_pci_attach(device_t self) } device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); - sprintf(sc->sc_vendor, "0x%04x", pci_get_vendor(self)); + switch (pci_get_vendor(self)) { + case PCI_XHCI_VENDORID_AMD: + strlcpy(sc->sc_vendor, "AMD", sizeof(sc->sc_vendor)); + break; + case PCI_XHCI_VENDORID_INTEL: + strlcpy(sc->sc_vendor, "Intel", sizeof(sc->sc_vendor)); + break; + default: + if (bootverbose) + device_printf(self, "(New XHCI DeviceId=0x%08x)\n", + pci_get_devid(self)); + snprintf(sc->sc_vendor, sizeof(sc->sc_vendor), + "(0x%04x)", pci_get_vendor(self)); + break; + } if (sc->sc_irq_res != NULL) { err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,