Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[linux-block.git] / drivers / clk / imx / clk-fixup-div.c
index bab46c6fd3db53a9f8e73c1547371a57da7131a4..4b17b91504edd591f1f2c2355d177c26e4cc83ce 100644 (file)
@@ -85,13 +85,14 @@ static const struct clk_ops clk_fixup_div_ops = {
        .set_rate = clk_fixup_div_set_rate,
 };
 
-struct clk *imx_clk_fixup_divider(const char *name, const char *parent,
+struct clk_hw *imx_clk_hw_fixup_divider(const char *name, const char *parent,
                                  void __iomem *reg, u8 shift, u8 width,
                                  void (*fixup)(u32 *val))
 {
        struct clk_fixup_div *fixup_div;
-       struct clk *clk;
+       struct clk_hw *hw;
        struct clk_init_data init;
+       int ret;
 
        if (!fixup)
                return ERR_PTR(-EINVAL);
@@ -114,9 +115,13 @@ struct clk *imx_clk_fixup_divider(const char *name, const char *parent,
        fixup_div->ops = &clk_divider_ops;
        fixup_div->fixup = fixup;
 
-       clk = clk_register(NULL, &fixup_div->divider.hw);
-       if (IS_ERR(clk))
+       hw = &fixup_div->divider.hw;
+
+       ret = clk_hw_register(NULL, hw);
+       if (ret) {
                kfree(fixup_div);
+               return ERR_PTR(ret);
+       }
 
-       return clk;
+       return hw;
 }