Hi! The glue code currently lives in arch/mips/cavium-octeon/octeon-usb.c and loops for each "cavium,octeon-7130-usb-uctl" compatible. However there is no bond with dwc3 core code, so if anything goes wrong in glue code, the loop breaks, leaving dwc3 in reset. Later on when dwc3 core tries to read any device register, bus error is emited, leading to kernel panic. Therefore move it to drivers/usb/dwc3 while making it glue driver. This is a fourth attempt splitted between more patches, see changelog appended to them. Ladislav Michl (6): usb: dwc3: dwc3-octeon: Convert to glue driver usb: dwc3: dwc3-octeon: Pass dwc3_octeon to setup functions usb: dwc3: dwc3-octeon: Avoid half-initialized controller state usb: dwc3: dwc3-octeon: Move node parsing into driver probe usb: dwc3: dwc3-octeon: Dump control register on clock init failure usb: dwc3: dwc3-octeon: Add SPDX header and copyright arch/mips/cavium-octeon/Makefile | 1 - arch/mips/cavium-octeon/octeon-platform.c | 1 - drivers/usb/dwc3/Kconfig | 10 + drivers/usb/dwc3/Makefile | 1 + .../usb/dwc3/dwc3-octeon.c | 351 +++++++++--------- drivers/usb/dwc3/dwc3-of-simple.c | 1 - 6 files changed, 181 insertions(+), 184 deletions(-) rename arch/mips/cavium-octeon/octeon-usb.c => drivers/usb/dwc3/dwc3-octeon.c (72%) -- 2.39.2