Lines Matching full:dwc3
3 * Apple Silicon DWC3 Glue driver
7 * - dwc3-qcom.c Copyright (c) 2018, The Linux Foundation. All rights reserved.
8 * - dwc3-of-simple.c Copyright (c) 2015 Texas Instruments Incorporated - https://www.ti.com
20 * This platform requires a very specific sequence of operations to bring up dwc3 and its USB3 PHY:
24 * 2) DWC3 has to be brought up but we must not touch the gadget area or start xhci yet.
25 * 3) The PHY bring-up has to be finalized and dwc3's PIPE interface has to be switched to the
33 * 1) DWC3 has to exit host or gadget mode and must no longer touch those registers
34 * 2) The PHY has to switch dwc3's PIPE interface back to the dummy backend
37 * We also can't transition the PHY from one mode to another while dwc3 is up and running (this is
41 * After both the PHY and dwc3 are initialized we will only ever see a single "new device connected"
52 * broken until a phy+dwc3 reset, or it's broken until a full SoC reset (likely because we can't
57 * Hence there's really no good way to keep dwc3 fully up and running after we disconnect a cable
65 * the PHY properly and thus also can't fully bring up dwc3. Instead, we just keep everything off
66 * and defer the first dwc3 probe until we get the first cable connected event. Until then we stay
73 DWC3_APPLE_NO_CABLE, /* No cable connected, dwc3 suspended after dwc3_core_exit */
74 DWC3_APPLE_HOST, /* Cable connected, dwc3 in host mode */
75 DWC3_APPLE_DEVICE, /* Cable connected, dwc3 in device mode */
79 * struct dwc3_apple - Apple-specific DWC3 USB controller
80 * @dwc: Core DWC3 structure
83 * @apple_regs: Apple-specific DWC3 registers
90 struct dwc3 dwc;
107 * Apple Silicon dwc3 vendor-specific registers
204 dev_err(appledwc->dev, "Failed to probe DWC3 Core, err=%d\n", ret); in dwc3_apple_core_init()
209 dev_err(appledwc->dev, "Failed to initialize DWC3 Core, err=%d\n", ret); in dwc3_apple_core_init()
227 * the PHY and switch dwc3's PIPE interface to USB3 PHY. in dwc3_apple_phy_set_mode()
319 * and switch dwc3's PIPE interface back to a dummy PHY (i.e. no USB3 support and USB2 via in dwc3_apple_exit()
343 * We need to tear all of dwc3 down and re-initialize it every time a cable is in dwc3_usb_role_switch_set()
425 appledwc->mmio_resource = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dwc3-core"); in dwc3_apple_probe()
427 dev_err(dev, "Failed to get DWC3 MMIO\n"); in dwc3_apple_probe()
431 appledwc->apple_regs = devm_platform_ioremap_resource_byname(pdev, "dwc3-apple"); in dwc3_apple_probe()
437 * On this platform, DWC3 can only be brought up after parts of the PHY have been in dwc3_apple_probe()
439 * Since this has not happened here we cannot setup DWC3 yet and instead defer this until in dwc3_apple_probe()
453 struct dwc3 *dwc = platform_get_drvdata(pdev); in dwc3_apple_remove()
471 { .compatible = "apple,t8103-dwc3" },
480 .name = "dwc3-apple",
489 MODULE_DESCRIPTION("DesignWare DWC3 Apple Silicon Glue Driver");