diff options
Diffstat (limited to 'drivers/clk/clk_stm32mp1.c')
-rw-r--r-- | drivers/clk/clk_stm32mp1.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/clk/clk_stm32mp1.c b/drivers/clk/clk_stm32mp1.c index 50df8425bf..6c5eddbd9a 100644 --- a/drivers/clk/clk_stm32mp1.c +++ b/drivers/clk/clk_stm32mp1.c @@ -7,11 +7,14 @@ #include <clk-uclass.h> #include <div64.h> #include <dm.h> +#include <init.h> +#include <log.h> #include <regmap.h> #include <spl.h> #include <syscon.h> #include <time.h> #include <vsprintf.h> +#include <linux/bitops.h> #include <linux/io.h> #include <linux/iopoll.h> #include <dt-bindings/clock/stm32mp1-clks.h> @@ -954,10 +957,11 @@ static ulong stm32mp1_clk_get(struct stm32mp1_clk_priv *priv, int p) case RCC_MPCKSELR_PLL: case RCC_MPCKSELR_PLL_MPUDIV: clock = stm32mp1_read_pll_freq(priv, _PLL1, _DIV_P); - if (p == RCC_MPCKSELR_PLL_MPUDIV) { + if ((reg & RCC_SELR_SRC_MASK) == + RCC_MPCKSELR_PLL_MPUDIV) { reg = readl(priv->base + RCC_MPCKDIVR); - clock /= stm32mp1_mpu_div[reg & - RCC_MPUDIV_MASK]; + clock >>= stm32mp1_mpu_div[reg & + RCC_MPUDIV_MASK]; } break; } |