aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/sunxi
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2016-02-02 09:47:10 +0100
committerMaxime Ripard <maxime.ripard@free-electrons.com>2016-02-11 18:17:03 +0100
commit96f185ac9a90264463254366f45d7b46482eec96 (patch)
tree2c8d66c4a73d259d46e31c7c1e72ef67054a5429 /drivers/clk/sunxi
parentclk: sunxi: improve error reporting for the mux clock (diff)
downloadlinux-dev-96f185ac9a90264463254366f45d7b46482eec96.tar.xz
linux-dev-96f185ac9a90264463254366f45d7b46482eec96.zip
clk: sunxi: Make clocks setup functions return their clock
The clocks registration code in clk-sunxi was most of the time not returning the struct clk (or struct clk array) that was registered, preventing the users of such functions to manipulate it, for example to protect it. Make them return it so that we can start using it. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Diffstat (limited to 'drivers/clk/sunxi')
-rw-r--r--drivers/clk/sunxi/clk-sunxi.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
index 2524d6f41b3b..f777b4f8294a 100644
--- a/drivers/clk/sunxi/clk-sunxi.c
+++ b/drivers/clk/sunxi/clk-sunxi.c
@@ -615,8 +615,8 @@ static const struct mux_data sun8i_h3_ahb2_mux_data __initconst = {
.shift = 0,
};
-static void __init sunxi_mux_clk_setup(struct device_node *node,
- struct mux_data *data)
+static struct clk * __init sunxi_mux_clk_setup(struct device_node *node,
+ struct mux_data *data)
{
struct clk *clk;
const char *clk_name = node->name;
@@ -646,10 +646,12 @@ static void __init sunxi_mux_clk_setup(struct device_node *node,
of_clk_add_provider(node, of_clk_src_simple_get, clk);
clk_register_clkdev(clk, clk_name, NULL);
- return;
+
+ return clk;
out_unmap:
iounmap(reg);
+ return NULL;
}
@@ -820,8 +822,8 @@ static const struct divs_data sun6i_a31_pll6_divs_data __initconst = {
* |________________________|
*/
-static void __init sunxi_divs_clk_setup(struct device_node *node,
- struct divs_data *data)
+static struct clk ** __init sunxi_divs_clk_setup(struct device_node *node,
+ struct divs_data *data)
{
struct clk_onecell_data *clk_data;
const char *parent;
@@ -848,7 +850,7 @@ static void __init sunxi_divs_clk_setup(struct device_node *node,
clk_data = kmalloc(sizeof(struct clk_onecell_data), GFP_KERNEL);
if (!clk_data)
- return;
+ return NULL;
clks = kcalloc(ndivs, sizeof(*clks), GFP_KERNEL);
if (!clks)
@@ -934,7 +936,7 @@ static void __init sunxi_divs_clk_setup(struct device_node *node,
of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
- return;
+ return clks;
free_gate:
kfree(gate);
@@ -942,6 +944,7 @@ free_clks:
kfree(clks);
free_clkdata:
kfree(clk_data);
+ return NULL;
}