mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-01 08:33:31 +08:00
clk: exynos: Move pll code into clk-exynos7420
PLL utilities code is only used by clk-exynos7420 driver at the moment. Move it into clk-exynos7420 to make clk-pll.c file available for CCF PLL clocks implementation, which is coming in the next patches. Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Chanho Park <chanho61.park@samsung.com> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
parent
8fd06aeb8a
commit
0caae9fdc2
@ -3,5 +3,4 @@
|
|||||||
# Copyright (C) 2016 Samsung Electronics
|
# Copyright (C) 2016 Samsung Electronics
|
||||||
# Thomas Abraham <thomas.ab@samsung.com>
|
# Thomas Abraham <thomas.ab@samsung.com>
|
||||||
|
|
||||||
obj-y += clk-pll.o
|
|
||||||
obj-$(CONFIG_CLK_EXYNOS7420) += clk-exynos7420.o
|
obj-$(CONFIG_CLK_EXYNOS7420) += clk-exynos7420.o
|
||||||
|
@ -10,8 +10,15 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <clk-uclass.h>
|
#include <clk-uclass.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <div64.h>
|
||||||
#include <dt-bindings/clock/exynos7420-clk.h>
|
#include <dt-bindings/clock/exynos7420-clk.h>
|
||||||
#include "clk-pll.h"
|
|
||||||
|
#define PLL145X_MDIV_SHIFT 16
|
||||||
|
#define PLL145X_MDIV_MASK 0x3ff
|
||||||
|
#define PLL145X_PDIV_SHIFT 8
|
||||||
|
#define PLL145X_PDIV_MASK 0x3f
|
||||||
|
#define PLL145X_SDIV_SHIFT 0
|
||||||
|
#define PLL145X_SDIV_MASK 0x7
|
||||||
|
|
||||||
#define DIVIDER(reg, shift, mask) \
|
#define DIVIDER(reg, shift, mask) \
|
||||||
(((readl(reg) >> shift) & mask) + 1)
|
(((readl(reg) >> shift) & mask) + 1)
|
||||||
@ -64,6 +71,22 @@ struct exynos7420_clk_top0_priv {
|
|||||||
unsigned long sclk_uart2;
|
unsigned long sclk_uart2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static unsigned long pll145x_get_rate(unsigned int *con1,
|
||||||
|
unsigned long fin_freq)
|
||||||
|
{
|
||||||
|
unsigned long pll_con1 = readl(con1);
|
||||||
|
unsigned long mdiv, sdiv, pdiv;
|
||||||
|
u64 fvco = fin_freq;
|
||||||
|
|
||||||
|
mdiv = (pll_con1 >> PLL145X_MDIV_SHIFT) & PLL145X_MDIV_MASK;
|
||||||
|
pdiv = (pll_con1 >> PLL145X_PDIV_SHIFT) & PLL145X_PDIV_MASK;
|
||||||
|
sdiv = (pll_con1 >> PLL145X_SDIV_SHIFT) & PLL145X_SDIV_MASK;
|
||||||
|
|
||||||
|
fvco *= mdiv;
|
||||||
|
do_div(fvco, (pdiv << sdiv));
|
||||||
|
return (unsigned long)fvco;
|
||||||
|
}
|
||||||
|
|
||||||
static ulong exynos7420_topc_get_rate(struct clk *clk)
|
static ulong exynos7420_topc_get_rate(struct clk *clk)
|
||||||
{
|
{
|
||||||
struct exynos7420_clk_topc_priv *priv = dev_get_priv(clk->dev);
|
struct exynos7420_clk_topc_priv *priv = dev_get_priv(clk->dev);
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+
|
|
||||||
/*
|
|
||||||
* Exynos PLL helper functions for clock drivers.
|
|
||||||
* Copyright (C) 2016 Samsung Electronics
|
|
||||||
* Thomas Abraham <thomas.ab@samsung.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <common.h>
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <div64.h>
|
|
||||||
|
|
||||||
#define PLL145X_MDIV_SHIFT 16
|
|
||||||
#define PLL145X_MDIV_MASK 0x3ff
|
|
||||||
#define PLL145X_PDIV_SHIFT 8
|
|
||||||
#define PLL145X_PDIV_MASK 0x3f
|
|
||||||
#define PLL145X_SDIV_SHIFT 0
|
|
||||||
#define PLL145X_SDIV_MASK 0x7
|
|
||||||
|
|
||||||
unsigned long pll145x_get_rate(unsigned int *con1, unsigned long fin_freq)
|
|
||||||
{
|
|
||||||
unsigned long pll_con1 = readl(con1);
|
|
||||||
unsigned long mdiv, sdiv, pdiv;
|
|
||||||
uint64_t fvco = fin_freq;
|
|
||||||
|
|
||||||
mdiv = (pll_con1 >> PLL145X_MDIV_SHIFT) & PLL145X_MDIV_MASK;
|
|
||||||
pdiv = (pll_con1 >> PLL145X_PDIV_SHIFT) & PLL145X_PDIV_MASK;
|
|
||||||
sdiv = (pll_con1 >> PLL145X_SDIV_SHIFT) & PLL145X_SDIV_MASK;
|
|
||||||
|
|
||||||
fvco *= mdiv;
|
|
||||||
do_div(fvco, (pdiv << sdiv));
|
|
||||||
return (unsigned long)fvco;
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
||||||
/*
|
|
||||||
* Exynos PLL helper functions for clock drivers.
|
|
||||||
* Copyright (C) 2016 Samsung Electronics
|
|
||||||
* Thomas Abraham <thomas.ab@samsung.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __EXYNOS_CLK_PLL_H
|
|
||||||
#define __EXYNOS_CLK_PLL_H
|
|
||||||
|
|
||||||
unsigned long pll145x_get_rate(unsigned int *con1, unsigned long fin_freq);
|
|
||||||
|
|
||||||
#endif /* __EXYNOS_CLK_PLL_H */
|
|
Loading…
Reference in New Issue
Block a user