1 // SPDX-License-Identifier: GPL-2.0+
3 * dwc3-of-simple.c - OF glue layer for simple integrations
5 * Copyright (c) 2015 Texas Instruments Incorporated - http://www.ti.com
7 * Author: Felipe Balbi <balbi@ti.com>
9 * Copyright (C) 2018 BayLibre, SAS
10 * Author: Neil Armstrong <narmstron@baylibre.com>
19 struct dwc3_of_simple {
21 struct reset_ctl_bulk resets;
24 static int dwc3_of_simple_reset_init(struct udevice *dev,
25 struct dwc3_of_simple *simple)
29 ret = reset_get_bulk(dev, &simple->resets);
35 ret = reset_deassert_bulk(&simple->resets);
37 reset_release_bulk(&simple->resets);
44 static int dwc3_of_simple_clk_init(struct udevice *dev,
45 struct dwc3_of_simple *simple)
49 ret = clk_get_bulk(dev, &simple->clks);
55 #if CONFIG_IS_ENABLED(CLK)
56 ret = clk_enable_bulk(&simple->clks);
58 clk_release_bulk(&simple->clks);
66 static int dwc3_of_simple_probe(struct udevice *dev)
68 struct dwc3_of_simple *simple = dev_get_platdata(dev);
71 ret = dwc3_of_simple_clk_init(dev, simple);
75 ret = dwc3_of_simple_reset_init(dev, simple);
82 static int dwc3_of_simple_remove(struct udevice *dev)
84 struct dwc3_of_simple *simple = dev_get_platdata(dev);
86 reset_release_bulk(&simple->resets);
88 clk_release_bulk(&simple->clks);
90 return dm_scan_fdt_dev(dev);
93 static const struct udevice_id dwc3_of_simple_ids[] = {
94 { .compatible = "amlogic,meson-gxl-dwc3" },
95 { .compatible = "ti,dwc3" },
99 U_BOOT_DRIVER(dwc3_of_simple) = {
100 .name = "dwc3-of-simple",
101 .id = UCLASS_SIMPLE_BUS,
102 .of_match = dwc3_of_simple_ids,
103 .probe = dwc3_of_simple_probe,
104 .remove = dwc3_of_simple_remove,
105 .platdata_auto_alloc_size = sizeof(struct dwc3_of_simple),
106 .flags = DM_FLAG_ALLOC_PRIV_DMA,