Merge tag 'io_uring-5.11-2020-12-23' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / drivers / rtc / rtc-sun6i.c
index e2b8b15..adec1b1 100644 (file)
@@ -272,7 +272,7 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,
                                                                300000000);
        if (IS_ERR(rtc->int_osc)) {
                pr_crit("Couldn't register the internal oscillator\n");
-               return;
+               goto err;
        }
 
        parents[0] = clk_hw_get_name(rtc->int_osc);
@@ -290,7 +290,7 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,
        rtc->losc = clk_register(NULL, &rtc->hw);
        if (IS_ERR(rtc->losc)) {
                pr_crit("Couldn't register the LOSC clock\n");
-               return;
+               goto err_register;
        }
 
        of_property_read_string_index(node, "clock-output-names", 1,
@@ -301,7 +301,7 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,
                                          &rtc->lock);
        if (IS_ERR(rtc->ext_losc)) {
                pr_crit("Couldn't register the LOSC external gate\n");
-               return;
+               goto err_register;
        }
 
        clk_data->num = 2;
@@ -314,6 +314,8 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,
        of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
        return;
 
+err_register:
+       clk_hw_unregister_fixed_rate(rtc->int_osc);
 err:
        kfree(clk_data);
 }
@@ -724,7 +726,7 @@ static int sun6i_rtc_probe(struct platform_device *pdev)
        chip->rtc->ops = &sun6i_rtc_ops;
        chip->rtc->range_max = 2019686399LL; /* 2033-12-31 23:59:59 */
 
-       ret = rtc_register_device(chip->rtc);
+       ret = devm_rtc_register_device(chip->rtc);
        if (ret)
                return ret;