]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
rtc: sun6i: Fix bit_idx value for clk_register_gate
authorMichael Trimarchi <michael@amarulasolutions.com>
Wed, 30 May 2018 18:27:44 +0000 (23:57 +0530)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Mon, 14 Jan 2019 09:28:55 +0000 (09:28 +0000)
BugLink: http://bugs.launchpad.net/bugs/1807469
commit 09018d4bd7994c2c9f775029bc24589bc85f76fa upstream.

clk-gate core will take bit_idx through clk_register_gate
and then do clk_gate_ops by using BIT(bit_idx), but rtc-sun6i
is passing bit_idx as BIT(bit_idx) it becomes BIT(BIT(bit_idx)
which is wrong and eventually external gate clock is not enabling.

This patch fixed by passing bit index and the original change
introduced from below commit.
"rtc: sun6i: Add support for the external oscillator gate"
(sha1:  17ecd246414b3a0fe0cb248c86977a8bda465b7b)

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Fixes: 17ecd246414b ("rtc: sun6i: Add support for the external oscillator gate")
Cc: stable@vger.kernel.org
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/rtc/rtc-sun6i.c

index 3d2216ccd860c6fef173882e3e24a92e2309eca2..8eb2b6dd36fea45cde68e10b93188ef05c08307d 100644 (file)
@@ -74,7 +74,7 @@
 #define SUN6I_ALARM_CONFIG_WAKEUP              BIT(0)
 
 #define SUN6I_LOSC_OUT_GATING                  0x0060
-#define SUN6I_LOSC_OUT_GATING_EN               BIT(0)
+#define SUN6I_LOSC_OUT_GATING_EN_OFFSET                0
 
 /*
  * Get date values
@@ -253,7 +253,7 @@ static void __init sun6i_rtc_clk_init(struct device_node *node)
                                      &clkout_name);
        rtc->ext_losc = clk_register_gate(NULL, clkout_name, rtc->hw.init->name,
                                          0, rtc->base + SUN6I_LOSC_OUT_GATING,
-                                         SUN6I_LOSC_OUT_GATING_EN, 0,
+                                         SUN6I_LOSC_OUT_GATING_EN_OFFSET, 0,
                                          &rtc->lock);
        if (IS_ERR(rtc->ext_losc)) {
                pr_crit("Couldn't register the LOSC external gate\n");