clk: samsung: Migrate exynos5420 to use common samsung_clk_register_pll()
This patch migrates exynos5420 pll registeration to use common samsung_clk_register_pll() by intialising table of PLLs and adding PLLs to unique id list of clocks. Signed-off-by: Yadwinder Singh Brar <yadi.brar@samsung.com> Signed-off-by: Vikas Sajjan <vikas.sajjan@linaro.org> Signed-off-by: Mike Turquette <mturquette@linaro.org>
This commit is contained in:
parent
160641e718
commit
c898c6b7cb
|
@ -17,13 +17,30 @@
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
|
|
||||||
#include "clk.h"
|
#include "clk.h"
|
||||||
#include "clk-pll.h"
|
|
||||||
|
|
||||||
|
#define APLL_LOCK 0x0
|
||||||
|
#define APLL_CON0 0x100
|
||||||
#define SRC_CPU 0x200
|
#define SRC_CPU 0x200
|
||||||
#define DIV_CPU0 0x500
|
#define DIV_CPU0 0x500
|
||||||
#define DIV_CPU1 0x504
|
#define DIV_CPU1 0x504
|
||||||
#define GATE_BUS_CPU 0x700
|
#define GATE_BUS_CPU 0x700
|
||||||
#define GATE_SCLK_CPU 0x800
|
#define GATE_SCLK_CPU 0x800
|
||||||
|
#define CPLL_LOCK 0x10020
|
||||||
|
#define DPLL_LOCK 0x10030
|
||||||
|
#define EPLL_LOCK 0x10040
|
||||||
|
#define RPLL_LOCK 0x10050
|
||||||
|
#define IPLL_LOCK 0x10060
|
||||||
|
#define SPLL_LOCK 0x10070
|
||||||
|
#define VPLL_LOCK 0x10070
|
||||||
|
#define MPLL_LOCK 0x10090
|
||||||
|
#define CPLL_CON0 0x10120
|
||||||
|
#define DPLL_CON0 0x10128
|
||||||
|
#define EPLL_CON0 0x10130
|
||||||
|
#define RPLL_CON0 0x10140
|
||||||
|
#define IPLL_CON0 0x10150
|
||||||
|
#define SPLL_CON0 0x10160
|
||||||
|
#define VPLL_CON0 0x10170
|
||||||
|
#define MPLL_CON0 0x10180
|
||||||
#define SRC_TOP0 0x10200
|
#define SRC_TOP0 0x10200
|
||||||
#define SRC_TOP1 0x10204
|
#define SRC_TOP1 0x10204
|
||||||
#define SRC_TOP2 0x10208
|
#define SRC_TOP2 0x10208
|
||||||
|
@ -75,15 +92,27 @@
|
||||||
#define GATE_TOP_SCLK_MAU 0x1083c
|
#define GATE_TOP_SCLK_MAU 0x1083c
|
||||||
#define GATE_TOP_SCLK_FSYS 0x10840
|
#define GATE_TOP_SCLK_FSYS 0x10840
|
||||||
#define GATE_TOP_SCLK_PERIC 0x10850
|
#define GATE_TOP_SCLK_PERIC 0x10850
|
||||||
|
#define BPLL_LOCK 0x20010
|
||||||
|
#define BPLL_CON0 0x20110
|
||||||
#define SRC_CDREX 0x20200
|
#define SRC_CDREX 0x20200
|
||||||
|
#define KPLL_LOCK 0x28000
|
||||||
|
#define KPLL_CON0 0x28100
|
||||||
#define SRC_KFC 0x28200
|
#define SRC_KFC 0x28200
|
||||||
#define DIV_KFC0 0x28500
|
#define DIV_KFC0 0x28500
|
||||||
|
|
||||||
|
/* list of PLLs */
|
||||||
|
enum exynos5420_plls {
|
||||||
|
apll, cpll, dpll, epll, rpll, ipll, spll, vpll, mpll,
|
||||||
|
bpll, kpll,
|
||||||
|
nr_plls /* number of PLLs */
|
||||||
|
};
|
||||||
|
|
||||||
enum exynos5420_clks {
|
enum exynos5420_clks {
|
||||||
none,
|
none,
|
||||||
|
|
||||||
/* core clocks */
|
/* core clocks */
|
||||||
fin_pll,
|
fin_pll, fout_apll, fout_cpll, fout_dpll, fout_epll, fout_rpll,
|
||||||
|
fout_ipll, fout_spll, fout_vpll, fout_mpll, fout_bpll, fout_kpll,
|
||||||
|
|
||||||
/* gate for special clocks (sclk) */
|
/* gate for special clocks (sclk) */
|
||||||
sclk_uart0 = 128, sclk_uart1, sclk_uart2, sclk_uart3, sclk_mmc0,
|
sclk_uart0 = 128, sclk_uart1, sclk_uart2, sclk_uart3, sclk_mmc0,
|
||||||
|
@ -698,6 +727,31 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
|
||||||
GATE(smmu_mscl2, "smmu_mscl2", "aclk400_mscl", GATE_IP_MSCL, 10, 0, 0),
|
GATE(smmu_mscl2, "smmu_mscl2", "aclk400_mscl", GATE_IP_MSCL, 10, 0, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct __initdata samsung_pll_clock exynos5420_plls[nr_plls] = {
|
||||||
|
[apll] = PLL(pll_2550, fout_apll, "fout_apll", "fin_pll", APLL_LOCK,
|
||||||
|
APLL_CON0),
|
||||||
|
[cpll] = PLL(pll_2550, fout_mpll, "fout_mpll", "fin_pll", MPLL_LOCK,
|
||||||
|
MPLL_CON0),
|
||||||
|
[dpll] = PLL(pll_2550, fout_dpll, "fout_dpll", "fin_pll", DPLL_LOCK,
|
||||||
|
DPLL_CON0),
|
||||||
|
[epll] = PLL(pll_2650, fout_epll, "fout_epll", "fin_pll", EPLL_LOCK,
|
||||||
|
EPLL_CON0),
|
||||||
|
[rpll] = PLL(pll_2650, fout_rpll, "fout_rpll", "fin_pll", RPLL_LOCK,
|
||||||
|
RPLL_CON0),
|
||||||
|
[ipll] = PLL(pll_2550, fout_ipll, "fout_ipll", "fin_pll", IPLL_LOCK,
|
||||||
|
IPLL_CON0),
|
||||||
|
[spll] = PLL(pll_2550, fout_spll, "fout_spll", "fin_pll", SPLL_LOCK,
|
||||||
|
SPLL_CON0),
|
||||||
|
[vpll] = PLL(pll_2550, fout_vpll, "fout_vpll", "fin_pll", VPLL_LOCK,
|
||||||
|
VPLL_CON0),
|
||||||
|
[mpll] = PLL(pll_2550, fout_mpll, "fout_mpll", "fin_pll", MPLL_LOCK,
|
||||||
|
MPLL_CON0),
|
||||||
|
[bpll] = PLL(pll_2550, fout_bpll, "fout_bpll", "fin_pll", BPLL_LOCK,
|
||||||
|
BPLL_CON0),
|
||||||
|
[kpll] = PLL(pll_2550, fout_kpll, "fout_kpll", "fin_pll", KPLL_LOCK,
|
||||||
|
KPLL_CON0),
|
||||||
|
};
|
||||||
|
|
||||||
static __initdata struct of_device_id ext_clk_match[] = {
|
static __initdata struct of_device_id ext_clk_match[] = {
|
||||||
{ .compatible = "samsung,exynos5420-oscclk", .data = (void *)0, },
|
{ .compatible = "samsung,exynos5420-oscclk", .data = (void *)0, },
|
||||||
{ },
|
{ },
|
||||||
|
@ -707,8 +761,6 @@ static __initdata struct of_device_id ext_clk_match[] = {
|
||||||
static void __init exynos5420_clk_init(struct device_node *np)
|
static void __init exynos5420_clk_init(struct device_node *np)
|
||||||
{
|
{
|
||||||
void __iomem *reg_base;
|
void __iomem *reg_base;
|
||||||
struct clk *apll, *bpll, *cpll, *dpll, *epll, *ipll, *kpll, *mpll;
|
|
||||||
struct clk *rpll, *spll, *vpll;
|
|
||||||
|
|
||||||
if (np) {
|
if (np) {
|
||||||
reg_base = of_iomap(np, 0);
|
reg_base = of_iomap(np, 0);
|
||||||
|
@ -724,30 +776,8 @@ static void __init exynos5420_clk_init(struct device_node *np)
|
||||||
samsung_clk_of_register_fixed_ext(exynos5420_fixed_rate_ext_clks,
|
samsung_clk_of_register_fixed_ext(exynos5420_fixed_rate_ext_clks,
|
||||||
ARRAY_SIZE(exynos5420_fixed_rate_ext_clks),
|
ARRAY_SIZE(exynos5420_fixed_rate_ext_clks),
|
||||||
ext_clk_match);
|
ext_clk_match);
|
||||||
|
samsung_clk_register_pll(exynos5420_plls, ARRAY_SIZE(exynos5420_plls),
|
||||||
apll = samsung_clk_register_pll35xx("fout_apll", "fin_pll",
|
reg_base);
|
||||||
reg_base + 0x100);
|
|
||||||
bpll = samsung_clk_register_pll35xx("fout_bpll", "fin_pll",
|
|
||||||
reg_base + 0x20110);
|
|
||||||
cpll = samsung_clk_register_pll35xx("fout_cpll", "fin_pll",
|
|
||||||
reg_base + 0x10120);
|
|
||||||
dpll = samsung_clk_register_pll35xx("fout_dpll", "fin_pll",
|
|
||||||
reg_base + 0x10128);
|
|
||||||
epll = samsung_clk_register_pll36xx("fout_epll", "fin_pll",
|
|
||||||
reg_base + 0x10130);
|
|
||||||
ipll = samsung_clk_register_pll35xx("fout_ipll", "fin_pll",
|
|
||||||
reg_base + 0x10150);
|
|
||||||
kpll = samsung_clk_register_pll35xx("fout_kpll", "fin_pll",
|
|
||||||
reg_base + 0x28100);
|
|
||||||
mpll = samsung_clk_register_pll35xx("fout_mpll", "fin_pll",
|
|
||||||
reg_base + 0x10180);
|
|
||||||
rpll = samsung_clk_register_pll36xx("fout_rpll", "fin_pll",
|
|
||||||
reg_base + 0x10140);
|
|
||||||
spll = samsung_clk_register_pll35xx("fout_spll", "fin_pll",
|
|
||||||
reg_base + 0x10160);
|
|
||||||
vpll = samsung_clk_register_pll35xx("fout_vpll", "fin_pll",
|
|
||||||
reg_base + 0x10170);
|
|
||||||
|
|
||||||
samsung_clk_register_fixed_rate(exynos5420_fixed_rate_clks,
|
samsung_clk_register_fixed_rate(exynos5420_fixed_rate_clks,
|
||||||
ARRAY_SIZE(exynos5420_fixed_rate_clks));
|
ARRAY_SIZE(exynos5420_fixed_rate_clks));
|
||||||
samsung_clk_register_fixed_factor(exynos5420_fixed_factor_clks,
|
samsung_clk_register_fixed_factor(exynos5420_fixed_factor_clks,
|
||||||
|
|
Loading…
Reference in New Issue