There are lots of controllers in the wild which we don't have a name for an attach as "xhci generic".
These were posted on https://reviews.freebsd.org/D51255, Linux doesn't have strings for them so I've taken the values from pciconf:
xhci0@pci0:10:0:0: class=0x0c0330 rev=0x01 hdr=0x00 vendor=0x1022 device=0x43f7 subvendor=0x1b21 subdevice=0x1142
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset USB 3.2 Controller'
class = serial bus
subclass = USB
class = encrypt/decrypt
xhci1@pci0:13:0:3: class=0x0c0330 rev=0x00 hdr=0x00 vendor=0x1022 device=0x15b6 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge USB 3.1 xHCI'
class = serial bus
subclass = USB
xhci2@pci0:13:0:4: class=0x0c0330 rev=0x00 hdr=0x00 vendor=0x1022 device=0x15b7 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge USB 3.1 xHCI'
class = serial bus
subclass = USB
xhci3@pci0:14:0:0: class=0x0c0330 rev=0x00 hdr=0x00 vendor=0x1022 device=0x15b8 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge USB 2.0 xHCI'
class = serial bus
subclass = USBI don't quite understand the "USB2.0 xHCI" in the final controller, I suspect that means it is a USB 2 bus with an xHCI interface. It does carry xecp and supports debug so I guess it makes sense. It's the only one in the file right now.
I'm not 100% on this, usually I mirror the linux id string in someway, I'm happy to hear the right way to do this.