2 * dwc3-of-simple.c - OF glue layer for simple integrations
4 * Copyright (c) 2015 Texas Instruments Incorporated - http://www.ti.com
6 * Author: Felipe Balbi <balbi@ti.com>
8 * Copyright (C) 2018 BayLibre, SAS
9 * Author: Neil Armstrong <narmstron@baylibre.com>
11 * SPDX-License-Identifier: GPL-2.0+
20 DECLARE_GLOBAL_DATA_PTR;
22 struct dwc3_of_simple {
24 struct reset_ctl_bulk resets;
27 static int dwc3_of_simple_reset_init(struct udevice *dev,
28 struct dwc3_of_simple *simple)
32 ret = reset_get_bulk(dev, &simple->resets);
38 ret = reset_deassert_bulk(&simple->resets);
40 reset_release_bulk(&simple->resets);
47 static int dwc3_of_simple_clk_init(struct udevice *dev,
48 struct dwc3_of_simple *simple)
52 ret = clk_get_bulk(dev, &simple->clks);
58 #if CONFIG_IS_ENABLED(CLK)
59 ret = clk_enable_bulk(&simple->clks);
61 clk_release_bulk(&simple->clks);
69 static int dwc3_of_simple_probe(struct udevice *dev)
71 struct dwc3_of_simple *simple = dev_get_platdata(dev);
74 ret = dwc3_of_simple_clk_init(dev, simple);
78 ret = dwc3_of_simple_reset_init(dev, simple);
85 static int dwc3_of_simple_remove(struct udevice *dev)
87 struct dwc3_of_simple *simple = dev_get_platdata(dev);
89 reset_release_bulk(&simple->resets);
91 clk_release_bulk(&simple->clks);
93 return dm_scan_fdt_dev(dev);
96 static const struct udevice_id dwc3_of_simple_ids[] = {
97 { .compatible = "amlogic,meson-gxl-dwc3" },
98 { .compatible = "ti,dwc3" },
102 U_BOOT_DRIVER(dwc3_of_simple) = {
103 .name = "dwc3-of-simple",
104 .id = UCLASS_SIMPLE_BUS,
105 .of_match = dwc3_of_simple_ids,
106 .probe = dwc3_of_simple_probe,
107 .remove = dwc3_of_simple_remove,
108 .platdata_auto_alloc_size = sizeof(struct dwc3_of_simple),
109 .flags = DM_FLAG_ALLOC_PRIV_DMA,