Lines Matching +full:device +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0
3 #include <linux/device.h>
12 static void devm_clk_release(struct device *dev, void *res) in devm_clk_release()
16 if (state->exit) in devm_clk_release()
17 state->exit(state->clk); in devm_clk_release()
19 clk_put(state->clk); in devm_clk_release()
22 static struct clk *__devm_clk_get(struct device *dev, const char *id, in __devm_clk_get() argument
23 struct clk *(*get)(struct device *dev, const char *id), in __devm_clk_get() argument
33 return ERR_PTR(-ENOMEM); in __devm_clk_get()
35 clk = get(dev, id); in __devm_clk_get()
47 state->clk = clk; in __devm_clk_get()
48 state->exit = exit; in __devm_clk_get()
63 struct clk *devm_clk_get(struct device *dev, const char *id) in devm_clk_get() argument
65 return __devm_clk_get(dev, id, clk_get, NULL, NULL); in devm_clk_get()
69 struct clk *devm_clk_get_prepared(struct device *dev, const char *id) in devm_clk_get_prepared() argument
71 return __devm_clk_get(dev, id, clk_get, clk_prepare, clk_unprepare); in devm_clk_get_prepared()
75 struct clk *devm_clk_get_enabled(struct device *dev, const char *id) in devm_clk_get_enabled() argument
77 return __devm_clk_get(dev, id, clk_get, in devm_clk_get_enabled()
82 struct clk *devm_clk_get_optional(struct device *dev, const char *id) in devm_clk_get_optional() argument
84 return __devm_clk_get(dev, id, clk_get_optional, NULL, NULL); in devm_clk_get_optional()
88 struct clk *devm_clk_get_optional_prepared(struct device *dev, const char *id) in devm_clk_get_optional_prepared() argument
90 return __devm_clk_get(dev, id, clk_get_optional, in devm_clk_get_optional_prepared()
95 struct clk *devm_clk_get_optional_enabled(struct device *dev, const char *id) in devm_clk_get_optional_enabled() argument
97 return __devm_clk_get(dev, id, clk_get_optional, in devm_clk_get_optional_enabled()
102 struct clk *devm_clk_get_optional_enabled_with_rate(struct device *dev, in devm_clk_get_optional_enabled_with_rate()
103 const char *id, in devm_clk_get_optional_enabled_with_rate() argument
109 clk = __devm_clk_get(dev, id, clk_get_optional, NULL, in devm_clk_get_optional_enabled_with_rate()
135 static void devm_clk_bulk_release(struct device *dev, void *res) in devm_clk_bulk_release()
139 clk_bulk_put(devres->num_clks, devres->clks); in devm_clk_bulk_release()
142 static int __devm_clk_bulk_get(struct device *dev, int num_clks, in __devm_clk_bulk_get()
151 return -ENOMEM; in __devm_clk_bulk_get()
158 devres->clks = clks; in __devm_clk_bulk_get()
159 devres->num_clks = num_clks; in __devm_clk_bulk_get()
168 int __must_check devm_clk_bulk_get(struct device *dev, int num_clks, in devm_clk_bulk_get()
175 int __must_check devm_clk_bulk_get_optional(struct device *dev, int num_clks, in devm_clk_bulk_get_optional()
182 static void devm_clk_bulk_release_all(struct device *dev, void *res) in devm_clk_bulk_release_all()
186 clk_bulk_put_all(devres->num_clks, devres->clks); in devm_clk_bulk_release_all()
189 int __must_check devm_clk_bulk_get_all(struct device *dev, in devm_clk_bulk_get_all()
198 return -ENOMEM; in devm_clk_bulk_get_all()
200 ret = clk_bulk_get_all(dev, &devres->clks); in devm_clk_bulk_get_all()
202 *clks = devres->clks; in devm_clk_bulk_get_all()
203 devres->num_clks = ret; in devm_clk_bulk_get_all()
213 static void devm_clk_bulk_release_all_enable(struct device *dev, void *res) in devm_clk_bulk_release_all_enable()
217 clk_bulk_disable_unprepare(devres->num_clks, devres->clks); in devm_clk_bulk_release_all_enable()
218 clk_bulk_put_all(devres->num_clks, devres->clks); in devm_clk_bulk_release_all_enable()
221 int __must_check devm_clk_bulk_get_all_enabled(struct device *dev, in devm_clk_bulk_get_all_enabled()
230 return -ENOMEM; in devm_clk_bulk_get_all_enabled()
232 ret = clk_bulk_get_all(dev, &devres->clks); in devm_clk_bulk_get_all_enabled()
234 *clks = devres->clks; in devm_clk_bulk_get_all_enabled()
235 devres->num_clks = ret; in devm_clk_bulk_get_all_enabled()
241 ret = clk_bulk_prepare_enable(devres->num_clks, *clks); in devm_clk_bulk_get_all_enabled()
245 clk_bulk_put_all(devres->num_clks, devres->clks); in devm_clk_bulk_get_all_enabled()
250 return devres->num_clks; in devm_clk_bulk_get_all_enabled()
254 static int devm_clk_match(struct device *dev, void *res, void *data) in devm_clk_match()
264 void devm_clk_put(struct device *dev, struct clk *clk) in devm_clk_put()
274 struct clk *devm_get_clk_from_child(struct device *dev, in devm_get_clk_from_child()
282 return ERR_PTR(-ENOMEM); in devm_get_clk_from_child()
286 state->clk = clk; in devm_get_clk_from_child()