On Thu, Jul 06, 2023 at 04:59:09PM -0500, richard.yu@xxxxxxx wrote: > From: Richard Yu <richard.yu@xxxxxxx> > > The HPE GXP vEHCI controller presents a four port EHCI compatible PCI > function to host software. Each vEHCI port is logically connected to a > corresponding set of virtual device registers. > > Signed-off-by: Richard Yu <richard.yu@xxxxxxx> > --- > drivers/usb/gadget/udc/Kconfig | 6 + > drivers/usb/gadget/udc/Makefile | 1 + > drivers/usb/gadget/udc/gxp-udc.c | 1401 ++++++++++++++++++++++++++++++ > 3 files changed, 1408 insertions(+) > create mode 100644 drivers/usb/gadget/udc/gxp-udc.c > > diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig > index 83cae6bb12eb..c01eb2a2c7db 100644 > --- a/drivers/usb/gadget/udc/Kconfig > +++ b/drivers/usb/gadget/udc/Kconfig > @@ -461,6 +461,12 @@ config USB_ASPEED_UDC > dynamically linked module called "aspeed_udc" and force all > gadget drivers to also be dynamically linked. > > +config USB_GXP_UDC > + bool "GXP UDC Driver" > + depends on ARCH_HPE_GXP || COMPILE_TEST > + help > + Say "y" to add support for GXP UDC driver > + > source "drivers/usb/gadget/udc/aspeed-vhub/Kconfig" > > # > diff --git a/drivers/usb/gadget/udc/Makefile b/drivers/usb/gadget/udc/Makefile > index ee569f63c74a..63fa262f31c5 100644 > --- a/drivers/usb/gadget/udc/Makefile > +++ b/drivers/usb/gadget/udc/Makefile > @@ -42,3 +42,4 @@ obj-$(CONFIG_USB_ASPEED_VHUB) += aspeed-vhub/ > obj-$(CONFIG_USB_ASPEED_UDC) += aspeed_udc.o > obj-$(CONFIG_USB_BDC_UDC) += bdc/ > obj-$(CONFIG_USB_MAX3420_UDC) += max3420_udc.o > +obj-$(CONFIG_USB_GXP_UDC) += gxp-udc.o > diff --git a/drivers/usb/gadget/udc/gxp-udc.c b/drivers/usb/gadget/udc/gxp-udc.c > new file mode 100644 > index 000000000000..97d198128c06 > --- /dev/null > +++ b/drivers/usb/gadget/udc/gxp-udc.c > @@ -0,0 +1,1401 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* Copyright (C) 2023 Hewlett-Packard Enterprise Development Company, L.P. */ > + > +#include <linux/kernel.h> > +#include <linux/module.h> > +#include <linux/spinlock.h> > +#include <linux/interrupt.h> > +#include <linux/platform_device.h> > +#include <linux/of_platform.h> > +#include <linux/dma-mapping.h> > +#include <linux/delay.h> > +#include <linux/io.h> > +#include <linux/slab.h> > +#include <linux/clk.h> > +#include <linux/err.h> > +#include <linux/usb/ch9.h> > +#include <linux/usb/gadget.h> > +#include <linux/usb/otg.h> > +#include <linux/prefetch.h> > +#include <linux/regmap.h> > +#include <linux/mfd/syscon.h> Are you sure you need all of these? I don't see any syscon_* calls in this file. Please audit the list of includes here and remove all unneeded ones. thanks, greg k-h