Hi,

Thanks for your reply. 

> Currently there is not so much to try, but you can start poking in 
> sys/dev/usb/controller/xhci*.[ch] . I have not made any USB-C specific 
> changes to the XHCI driver in FreeBSD, so yes, it might not work.
> 
> There are also some debug knobs: sysctl -a | grep xhci

USB-C here is a red herring, there is a i2c controlled mux involved
before it will work for USB data. 

I think we are missing a second usb instance (instances? I am not sure
of the terminology) on the xhci controller.

Looking at Linux and NetBSD, they both launch two USB from their
xhci_pci drivers.  

Linux creates the first here:
https://github.com/torvalds/linux/blob/master/drivers/usb/host/xhci-pci.c#L326
the second here
https://github.com/torvalds/linux/blob/master/drivers/usb/host/xhci-pci.c#L334

NetBSD manages two instances of bus in the softc, sc_bus and sc_bus2
sc_bus2 is configured here, the same as the first bus but with an
explicit usb revision set to USBREV_2_0. They share the same dmatag.

https://github.com/NetBSD/src/blob/trunk/sys/dev/usb/xhci.c#L929

Both instances are then registered with the usb subsystem here:
https://github.com/NetBSD/src/blob/trunk/sys/dev/pci/xhci_pci.c#L281

I seem a similar pattern in the tegra xhci drivers for NetBSD and Linux.

I am going to have a dive into the intel xHCI Interface docs to get more
background.

https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf

Could you tell me if this multiple usb instance interface is something
we are missing or something we implement in a different manner?

- Tom
_______________________________________________
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to