Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux...
[firefly-linux-kernel-4.4.55.git] / drivers / clk / clk-s2mps11.c
index 9b13a303d3f81e432f6ddac4ffe85dd27d4c8f82..d266299dfdb1a26e22477f78a2c389d5dc858f4f 100644 (file)
@@ -58,21 +58,17 @@ static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
 static int s2mps11_clk_prepare(struct clk_hw *hw)
 {
        struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
-       int ret;
 
-       ret = regmap_update_bits(s2mps11->iodev->regmap_pmic,
+       return regmap_update_bits(s2mps11->iodev->regmap_pmic,
                                 s2mps11->reg,
                                 s2mps11->mask, s2mps11->mask);
-
-       return ret;
 }
 
 static void s2mps11_clk_unprepare(struct clk_hw *hw)
 {
        struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
-       int ret;
 
-       ret = regmap_update_bits(s2mps11->iodev->regmap_pmic, s2mps11->reg,
+       regmap_update_bits(s2mps11->iodev->regmap_pmic, s2mps11->reg,
                           s2mps11->mask, ~s2mps11->mask);
 }
 
@@ -186,15 +182,15 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
        struct clk_init_data *clks_init;
        int i, ret = 0;
 
-       s2mps11_clks = devm_kzalloc(&pdev->dev, sizeof(*s2mps11_clk) *
-                                       S2MPS11_CLKS_NUM, GFP_KERNEL);
+       s2mps11_clks = devm_kcalloc(&pdev->dev, S2MPS11_CLKS_NUM,
+                               sizeof(*s2mps11_clk), GFP_KERNEL);
        if (!s2mps11_clks)
                return -ENOMEM;
 
        s2mps11_clk = s2mps11_clks;
 
-       clk_table = devm_kzalloc(&pdev->dev, sizeof(struct clk *) *
-                                S2MPS11_CLKS_NUM, GFP_KERNEL);
+       clk_table = devm_kcalloc(&pdev->dev, S2MPS11_CLKS_NUM,
+                               sizeof(struct clk *), GFP_KERNEL);
        if (!clk_table)
                return -ENOMEM;
 
@@ -246,7 +242,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
                                        s2mps11_name(s2mps11_clk), NULL);
                if (!s2mps11_clk->lookup) {
                        ret = -ENOMEM;
-                       goto err_lup;
+                       goto err_reg;
                }
        }
 
@@ -265,16 +261,10 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, s2mps11_clks);
 
        return ret;
-err_lup:
-       devm_clk_unregister(&pdev->dev, s2mps11_clk->clk);
+
 err_reg:
-       while (s2mps11_clk > s2mps11_clks) {
-               if (s2mps11_clk->lookup) {
-                       clkdev_drop(s2mps11_clk->lookup);
-                       devm_clk_unregister(&pdev->dev, s2mps11_clk->clk);
-               }
-               s2mps11_clk--;
-       }
+       while (--i >= 0)
+               clkdev_drop(s2mps11_clks[i].lookup);
 
        return ret;
 }
@@ -322,7 +312,7 @@ static int __init s2mps11_clk_init(void)
 }
 subsys_initcall(s2mps11_clk_init);
 
-static void __init s2mps11_clk_cleanup(void)
+static void __exit s2mps11_clk_cleanup(void)
 {
        platform_driver_unregister(&s2mps11_clk_driver);
 }