Lines Matching +full:keystone +full:- +full:dwc3
1 // SPDX-License-Identifier: GPL-2.0
3 * Generic DWC3 Glue layer
5 * Copyright (C) 2016 - 2018 Xilinx, Inc.
7 * Based on dwc3-omap.c.
11 #include <asm-generic/io.h>
13 #include <dm/device-internal.h>
15 #include <dwc3-uboot.h>
27 struct dwc3 dwc3; member
36 struct dwc3 *dwc3 = &priv->dwc3; in dm_usb_gadget_handle_interrupts() local
38 dwc3_gadget_uboot_handle_interrupt(dwc3); in dm_usb_gadget_handle_interrupts()
47 struct dwc3 *dwc3 = &priv->dwc3; in dwc3_generic_peripheral_probe() local
49 rc = dwc3_setup_phy(dev, &priv->phys, &priv->num_phys); in dwc3_generic_peripheral_probe()
53 dwc3->regs = map_physmem(priv->base, DWC3_OTG_REGS_END, MAP_NOCACHE); in dwc3_generic_peripheral_probe()
54 dwc3->regs += DWC3_GLOBALS_REGS_START; in dwc3_generic_peripheral_probe()
55 dwc3->dev = dev; in dwc3_generic_peripheral_probe()
57 rc = dwc3_init(dwc3); in dwc3_generic_peripheral_probe()
59 unmap_physmem(dwc3->regs, MAP_NOCACHE); in dwc3_generic_peripheral_probe()
69 struct dwc3 *dwc3 = &priv->dwc3; in dwc3_generic_peripheral_remove() local
71 dwc3_remove(dwc3); in dwc3_generic_peripheral_remove()
72 dwc3_shutdown_phy(dev, priv->phys, priv->num_phys); in dwc3_generic_peripheral_remove()
73 unmap_physmem(dwc3->regs, MAP_NOCACHE); in dwc3_generic_peripheral_remove()
81 struct dwc3 *dwc3 = &priv->dwc3; in dwc3_generic_peripheral_ofdata_to_platdata() local
84 priv->base = devfdt_get_addr(dev); in dwc3_generic_peripheral_ofdata_to_platdata()
86 dwc3->maximum_speed = usb_get_maximum_speed(node); in dwc3_generic_peripheral_ofdata_to_platdata()
87 if (dwc3->maximum_speed == USB_SPEED_UNKNOWN) { in dwc3_generic_peripheral_ofdata_to_platdata()
89 return -ENODEV; in dwc3_generic_peripheral_ofdata_to_platdata()
92 dwc3->dr_mode = usb_get_dr_mode(node); in dwc3_generic_peripheral_ofdata_to_platdata()
93 if (dwc3->dr_mode == USB_DR_MODE_UNKNOWN) { in dwc3_generic_peripheral_ofdata_to_platdata()
95 return -ENODEV; in dwc3_generic_peripheral_ofdata_to_platdata()
102 .name = "dwc3-generic-peripheral",
149 void *base = map_physmem(glue->regs, 0x10000, MAP_NOCACHE); in dwc3_ti_select_dr_mode()
151 if (device_is_compatible(dev, "ti,am437x-dwc3")) in dwc3_ti_select_dr_mode()
154 utmi_mode = dev_read_u32_default(dev, "utmi-mode", in dwc3_ti_select_dr_mode()
158 dev->name); in dwc3_ti_select_dr_mode()
208 const void *fdt = gd->fdt_blob; in dwc3_glue_bind()
228 driver = "dwc3-generic-peripheral"; in dwc3_glue_bind()
233 driver = "xhci-dwc3"; in dwc3_glue_bind()
237 return -ENODEV; in dwc3_glue_bind()
260 ret = reset_get_bulk(dev, &glue->resets); in dwc3_glue_reset_init()
261 if (ret == -ENOTSUPP) in dwc3_glue_reset_init()
266 ret = reset_deassert_bulk(&glue->resets); in dwc3_glue_reset_init()
268 reset_release_bulk(&glue->resets); in dwc3_glue_reset_init()
280 ret = clk_get_bulk(dev, &glue->clks); in dwc3_glue_clk_init()
281 if (ret == -ENOSYS) in dwc3_glue_clk_init()
287 ret = clk_enable_bulk(&glue->clks); in dwc3_glue_clk_init()
289 clk_release_bulk(&glue->clks); in dwc3_glue_clk_init()
305 glue->regs = dev_read_addr(dev); in dwc3_glue_probe()
324 if (ops && ops->select_dr_mode) in dwc3_glue_probe()
325 ops->select_dr_mode(dev, index, dr_mode); in dwc3_glue_probe()
336 reset_release_bulk(&glue->resets); in dwc3_glue_remove()
338 clk_release_bulk(&glue->clks); in dwc3_glue_remove()
344 { .compatible = "xlnx,zynqmp-dwc3" },
345 { .compatible = "ti,keystone-dwc3"},
346 { .compatible = "ti,dwc3", .data = (ulong)&ti_ops },
347 { .compatible = "ti,am437x-dwc3", .data = (ulong)&ti_ops },
352 .name = "dwc3-generic-wrapper",