# 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)