clk: make devm_clk_get() available to other drivers
Currently, devm_clk_get() is implemented for only one driver.
Because some other drivers will use it, move it to device
core driver.
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 05dadf9..83b00f8 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -883,3 +883,23 @@
return lists_bind_fdt(parent, node, NULL, false);
}
#endif
+
+struct clk *devm_clk_get(struct udevice *dev, const char *id)
+{
+ struct clk *clk;
+ int ret;
+
+ clk = devm_kzalloc(dev, sizeof(*clk), GFP_KERNEL);
+ if (!clk) {
+ debug("%s: can't allocate clock\n", __func__);
+ return ERR_PTR(-ENOMEM);
+ }
+
+ ret = clk_get_by_name(dev, id, clk);
+ if (ret < 0) {
+ debug("%s: can't get clock (ret = %d)!\n", __func__, ret);
+ return ERR_PTR(ret);
+ }
+
+ return clk;
+}
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.c b/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.c
index 96b27e6..ec9df10 100644
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.c
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.c
@@ -3,26 +3,6 @@
#include <common.h>
#include "brcmnand_compat.h"
-struct clk *devm_clk_get(struct udevice *dev, const char *id)
-{
- struct clk *clk;
- int ret;
-
- clk = devm_kzalloc(dev, sizeof(*clk), GFP_KERNEL);
- if (!clk) {
- debug("%s: can't allocate clock\n", __func__);
- return ERR_PTR(-ENOMEM);
- }
-
- ret = clk_get_by_name(dev, id, clk);
- if (ret < 0) {
- debug("%s: can't get clock (ret = %d)!\n", __func__, ret);
- return ERR_PTR(ret);
- }
-
- return clk;
-}
-
int clk_prepare_enable(struct clk *clk)
{
return clk_enable(clk);
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.h b/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.h
index 02cab0f..c33d542 100644
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.h
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand_compat.h
@@ -5,8 +5,7 @@
#include <clk.h>
#include <dm.h>
-
-struct clk *devm_clk_get(struct udevice *dev, const char *id);
+#include <dm/device.h>
int clk_prepare_enable(struct clk *clk);
void clk_disable_unprepare(struct clk *clk);
diff --git a/include/dm/device.h b/include/dm/device.h
index 27a6d7b..25da9b2 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -948,6 +948,8 @@
kfree(ptr);
}
+struct clk *devm_clk_get(struct udevice *dev, const char *id);
+
#endif /* ! CONFIG_DEVRES */
/*