These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / clk / clk-s2mps11.c
index bfa1e64..d266299 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;
 
@@ -242,14 +238,12 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
                        goto err_reg;
                }
 
-               s2mps11_clk->lookup = clkdev_alloc(s2mps11_clk->clk,
+               s2mps11_clk->lookup = clkdev_create(s2mps11_clk->clk,
                                        s2mps11_name(s2mps11_clk), NULL);
                if (!s2mps11_clk->lookup) {
                        ret = -ENOMEM;
-                       goto err_lup;
+                       goto err_reg;
                }
-
-               clkdev_add(s2mps11_clk->lookup);
        }
 
        for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
@@ -267,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;
 }
@@ -324,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);
 }