Lines Matching full:simple
3 * dwc3-of-simple.c - OF glue layer for simple integrations
35 struct dwc3_of_simple *simple; in dwc3_of_simple_probe() local
41 simple = devm_kzalloc(dev, sizeof(*simple), GFP_KERNEL); in dwc3_of_simple_probe()
42 if (!simple) in dwc3_of_simple_probe()
45 platform_set_drvdata(pdev, simple); in dwc3_of_simple_probe()
46 simple->dev = dev; in dwc3_of_simple_probe()
53 simple->need_reset = true; in dwc3_of_simple_probe()
55 simple->resets = of_reset_control_array_get_optional_exclusive(np); in dwc3_of_simple_probe()
56 if (IS_ERR(simple->resets)) { in dwc3_of_simple_probe()
57 ret = PTR_ERR(simple->resets); in dwc3_of_simple_probe()
62 ret = reset_control_deassert(simple->resets); in dwc3_of_simple_probe()
66 ret = clk_bulk_get_all(simple->dev, &simple->clks); in dwc3_of_simple_probe()
70 simple->num_clocks = ret; in dwc3_of_simple_probe()
71 ret = clk_bulk_prepare_enable(simple->num_clocks, simple->clks); in dwc3_of_simple_probe()
86 clk_bulk_disable_unprepare(simple->num_clocks, simple->clks); in dwc3_of_simple_probe()
87 clk_bulk_put_all(simple->num_clocks, simple->clks); in dwc3_of_simple_probe()
90 reset_control_assert(simple->resets); in dwc3_of_simple_probe()
93 reset_control_put(simple->resets); in dwc3_of_simple_probe()
97 static void __dwc3_of_simple_teardown(struct dwc3_of_simple *simple) in __dwc3_of_simple_teardown() argument
99 of_platform_depopulate(simple->dev); in __dwc3_of_simple_teardown()
101 clk_bulk_disable_unprepare(simple->num_clocks, simple->clks); in __dwc3_of_simple_teardown()
102 clk_bulk_put_all(simple->num_clocks, simple->clks); in __dwc3_of_simple_teardown()
103 simple->num_clocks = 0; in __dwc3_of_simple_teardown()
105 reset_control_assert(simple->resets); in __dwc3_of_simple_teardown()
107 reset_control_put(simple->resets); in __dwc3_of_simple_teardown()
109 pm_runtime_disable(simple->dev); in __dwc3_of_simple_teardown()
110 pm_runtime_put_noidle(simple->dev); in __dwc3_of_simple_teardown()
111 pm_runtime_set_suspended(simple->dev); in __dwc3_of_simple_teardown()
116 struct dwc3_of_simple *simple = platform_get_drvdata(pdev); in dwc3_of_simple_remove() local
118 __dwc3_of_simple_teardown(simple); in dwc3_of_simple_remove()
123 struct dwc3_of_simple *simple = platform_get_drvdata(pdev); in dwc3_of_simple_shutdown() local
125 __dwc3_of_simple_teardown(simple); in dwc3_of_simple_shutdown()
130 struct dwc3_of_simple *simple = dev_get_drvdata(dev); in dwc3_of_simple_runtime_suspend() local
132 clk_bulk_disable(simple->num_clocks, simple->clks); in dwc3_of_simple_runtime_suspend()
139 struct dwc3_of_simple *simple = dev_get_drvdata(dev); in dwc3_of_simple_runtime_resume() local
141 return clk_bulk_enable(simple->num_clocks, simple->clks); in dwc3_of_simple_runtime_resume()
146 struct dwc3_of_simple *simple = dev_get_drvdata(dev); in dwc3_of_simple_suspend() local
148 if (simple->need_reset) in dwc3_of_simple_suspend()
149 reset_control_assert(simple->resets); in dwc3_of_simple_suspend()
156 struct dwc3_of_simple *simple = dev_get_drvdata(dev); in dwc3_of_simple_resume() local
158 if (simple->need_reset) in dwc3_of_simple_resume()
159 reset_control_deassert(simple->resets); in dwc3_of_simple_resume()
186 .name = "dwc3-of-simple",
194 MODULE_DESCRIPTION("DesignWare USB3 OF Simple Glue Layer");