# USB controller software drivers The USB controller relies on the DWC3 MSM, DWC3 core, gadget, and xHCI platform drivers. Use the following table to locate each USB controller driver and confirm its function before you modify the USB stack. The following table lists the main USB controller drivers, their source location, and their function. | Driver | Location | Description | | --- | --- | --- | | `dwc3-qcom.c` | `kernel_platform/msm-kernel/drivers/usb/dwc3/` | DWC3 MSM driver for controller-specific sequences, such as suspending
and resuming the hardware and interrupt management. | | `dwc3-msm-ops.c` | `kernel_platform/msm-kernel/drivers/usb/dwc3/` | DWC3 MSM-specific operations that require special sequences, implemented
in the source file. | | `gadget.c` | `kernel_platform/common/drivers/usb/dwc3/` | DWC3 UDC driver that handles Device mode operation and interacts with
the ConfigFS framework. | | `core.c` | `kernel_platform/common/drivers/usb/dwc3/` | DWC3 core driver that initializes host and device mode parameters as
defined by the upstream kernel. | | `xhci-plat.c` | `kernel_platform/common/drivers/usb/host/` | Platform HCD driver that binds to the Linux XHCI stack. | ## Related - [USB controller clocks](https://docs.qualcomm.com/doc/80-A0399-8/topic/usb-controller-clocks.html) - [USB controller interrupts](https://docs.qualcomm.com/doc/80-A0399-8/topic/usb-controller-interrupts.html) - [USB controller reset control](https://docs.qualcomm.com/doc/80-A0399-8/topic/usb-controller-reset-control.html) Last Published: Sep 17, 2026 [Previous Topic USB kernel configurations](https://docs.qualcomm.com/bundle/publicresource/80-A0399-8/topics/usb-kernel-configurations.md) [Next Topic USB controller clocks](https://docs.qualcomm.com/bundle/publicresource/80-A0399-8/topics/usb-controller-clocks.md)