clk: rockchip: rv1103b: add grf clk
add grf clk for crypto and rng. clk_core_crypto_src_en = soc_test_mode ? 1 : (cru_gate_con5[2] | (grf_clk_core_crypto_src_extgate & sgrf_clk_core_crypto_src_extgate)) clk_pka_crypto_src_en = soc_test_mode ? 1 : (cru_gate_con5[3] | (grf_clk_pka_crypto_src_extgate & sgrf_clk_pka_crypto_src_extgate)) Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com> Change-Id: I8068eb4084f21f44a8484d80ffa85e82abc14359
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include "clk.h"
|
||||
|
||||
#define RV1103B_GRF_SOC_STATUS0 0x10
|
||||
#define RV1103B_GRF_SYS_PERI_CON2 0x50008
|
||||
|
||||
#define RV1103B_FRAC_MAX_PRATE 1200000000
|
||||
|
||||
@@ -158,10 +159,10 @@ static struct rockchip_clk_branch rv1103b_clk_branches[] __initdata = {
|
||||
COMPOSITE_NOMUX(CLK_GPLL_DIV12, "clk_gpll_div12", "gpll", 0,
|
||||
RV1103B_CLKSEL_CON(0), 5, 5, DFLAGS,
|
||||
RV1103B_CLKGATE_CON(0), 1, GFLAGS),
|
||||
COMPOSITE_NOMUX(CLK_GPLL_DIV6, "clk_gpll_div6", "gpll", 0,
|
||||
COMPOSITE_NOMUX(CLK_GPLL_DIV6, "clk_gpll_div6", "gpll", CLK_IS_CRITICAL,
|
||||
RV1103B_CLKSEL_CON(1), 0, 5, DFLAGS,
|
||||
RV1103B_CLKGATE_CON(0), 3, GFLAGS),
|
||||
COMPOSITE_NOMUX(CLK_GPLL_DIV4, "clk_gpll_div4", "gpll", 0,
|
||||
COMPOSITE_NOMUX(CLK_GPLL_DIV4, "clk_gpll_div4", "gpll", CLK_IS_CRITICAL,
|
||||
RV1103B_CLKSEL_CON(1), 10, 5, DFLAGS,
|
||||
RV1103B_CLKGATE_CON(0), 5, GFLAGS),
|
||||
COMPOSITE_NOMUX(CLK_GPLL_DIV3, "clk_gpll_div3", "gpll", 0,
|
||||
@@ -275,12 +276,10 @@ static struct rockchip_clk_branch rv1103b_clk_branches[] __initdata = {
|
||||
COMPOSITE(CCLK_SDMMC1, "cclk_sdmmc1", mux_gpll_24m_p, 0,
|
||||
RV1103B_CLKSEL_CON(36), 15, 1, MFLAGS, 0, 8, DFLAGS,
|
||||
RV1103B_CLKGATE_CON(5), 1, GFLAGS),
|
||||
COMPOSITE_NODIV(CLK_CORE_CRYPTO, "clk_core_crypto", mux_300m_200m_100m_p, 0,
|
||||
RV1103B_CLKSEL_CON(35), 2, 2, MFLAGS,
|
||||
RV1103B_CLKGATE_CON(5), 2, GFLAGS),
|
||||
COMPOSITE_NODIV(CLK_PKA_CRYPTO, "clk_pka_crypto", mux_300m_200m_100m_p, 0,
|
||||
RV1103B_CLKSEL_CON(35), 4, 2, MFLAGS,
|
||||
RV1103B_CLKGATE_CON(5), 3, GFLAGS),
|
||||
MUX(0, "clk_core_crypto_src", mux_300m_200m_100m_p, 0,
|
||||
RV1103B_CLKSEL_CON(35), 2, 2, MFLAGS),
|
||||
MUX(0, "clk_pka_crypto_src", mux_300m_200m_100m_p, 0,
|
||||
RV1103B_CLKSEL_CON(35), 4, 2, MFLAGS),
|
||||
COMPOSITE_NODIV(CLK_CORE_RGA, "clk_core_rga", mux_400m_300m_p, 0,
|
||||
RV1103B_CLKSEL_CON(35), 8, 1, MFLAGS,
|
||||
RV1103B_CLKGATE_CON(5), 4, GFLAGS),
|
||||
@@ -533,14 +532,8 @@ static struct rockchip_clk_branch rv1103b_clk_branches[] __initdata = {
|
||||
RV1103B_PERICLKGATE_CON(7), 0, GFLAGS),
|
||||
GATE(HCLK_SAI, "hclk_sai", "lsclk_peri_src", 0,
|
||||
RV1103B_PERICLKGATE_CON(7), 1, GFLAGS),
|
||||
GATE(ACLK_CRYPTO, "aclk_crypto", "lsclk_peri_src", 0,
|
||||
RV1103B_PERICLKGATE_CON(8), 2, GFLAGS),
|
||||
GATE(HCLK_CRYPTO, "hclk_crypto", "lsclk_peri_src", 0,
|
||||
GATE(HCLK_CRYPTO, "hclk_crypto", "lsclk_peri_src", CLK_IS_CRITICAL,
|
||||
RV1103B_PERICLKGATE_CON(8), 3, GFLAGS),
|
||||
GATE(HCLK_RK_RNG_S, "hclk_rk_rng_s", "lsclk_peri_src", 0,
|
||||
RV1103B_PERICLKGATE_CON(8), 5, GFLAGS),
|
||||
GATE(HCLK_RK_RNG_NS, "hclk_rk_rng_ns", "hclk_rk_rng_s", 0,
|
||||
RV1103B_PERICLKGATE_CON(8), 4, GFLAGS),
|
||||
GATE(PCLK_OTPC_NS, "pclk_otpc_ns", "pclk_peri_root", 0,
|
||||
RV1103B_PERICLKGATE_CON(8), 6, GFLAGS),
|
||||
GATE(CLK_OTPC_ROOT_NS, "clk_otpc_root_ns", "xin24m", 0,
|
||||
@@ -626,6 +619,17 @@ static struct rockchip_clk_branch rv1103b_armclk __initdata =
|
||||
MUX(ARMCLK, "armclk", mux_armclk_p, CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
|
||||
RV1103B_CORECLKSEL_CON(0), 1, 1, MFLAGS);
|
||||
|
||||
static struct rockchip_clk_branch rv1103b_grf_clk_branches[] __initdata = {
|
||||
GATE(CLK_CORE_CRYPTO, "clk_core_crypto", "clk_core_crypto_src", 0,
|
||||
RV1103B_GRF_SYS_PERI_CON2, 6, GFLAGS),
|
||||
GATE(CLK_PKA_CRYPTO, "clk_pka_crypto", "clk_pka_crypto_src", 0,
|
||||
RV1103B_GRF_SYS_PERI_CON2, 7, GFLAGS),
|
||||
GATE(ACLK_CRYPTO, "aclk_crypto", "lsclk_peri_src", 0,
|
||||
RV1103B_GRF_SYS_PERI_CON2, 4, GFLAGS),
|
||||
GATE(HCLK_RK_RNG_NS, "hclk_rk_rng_ns", "lsclk_peri_src", 0,
|
||||
RV1103B_GRF_SYS_PERI_CON2, 5, GFLAGS),
|
||||
};
|
||||
|
||||
static void __iomem *rv1103b_cru_base;
|
||||
static struct rockchip_clk_provider *cru_ctx;
|
||||
|
||||
@@ -704,6 +708,30 @@ static void __init rv1103b_clk_init(struct device_node *np)
|
||||
|
||||
CLK_OF_DECLARE(rv1103b_cru, "rockchip,rv1103b-cru", rv1103b_clk_init);
|
||||
|
||||
static void __init rv1103b_grf_clk_init(struct device_node *np)
|
||||
{
|
||||
struct rockchip_clk_provider *ctx;
|
||||
void __iomem *reg_base;
|
||||
|
||||
reg_base = of_iomap(of_get_parent(np), 0);
|
||||
if (!reg_base) {
|
||||
pr_err("%s: could not map cru grf region\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
ctx = rockchip_clk_init(np, reg_base, CLK_NR_GRF_CLKS);
|
||||
if (IS_ERR(ctx)) {
|
||||
pr_err("%s: rockchip grf clk init failed\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
rockchip_clk_register_branches(ctx, rv1103b_grf_clk_branches,
|
||||
ARRAY_SIZE(rv1103b_grf_clk_branches));
|
||||
|
||||
rockchip_clk_of_add_provider(np, ctx);
|
||||
}
|
||||
CLK_OF_DECLARE(rv1103b_grf_cru, "rockchip,rv1103b-grf-cru", rv1103b_grf_clk_init);
|
||||
|
||||
#ifdef MODULE
|
||||
struct clk_rv1103b_inits {
|
||||
void (*inits)(struct device_node *np);
|
||||
@@ -713,10 +741,17 @@ static const struct clk_rv1103b_inits clk_rv1103b_init = {
|
||||
.inits = rv1103b_clk_init,
|
||||
};
|
||||
|
||||
static const struct clk_rv1103b_inits clk_rv1103b_grf_init = {
|
||||
.inits = rv1103b_grf_clk_init,
|
||||
};
|
||||
|
||||
static const struct of_device_id clk_rv1103b_match_table[] = {
|
||||
{
|
||||
.compatible = "rockchip,rv1103b-cru",
|
||||
.data = &clk_rv1103b_init,
|
||||
}, {
|
||||
.compatible = "rockchip,rv1103b-grf-cru",
|
||||
.data = &clk_rv1103b_grf_init,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -53,8 +53,6 @@
|
||||
#define CLK_PWM2 42
|
||||
#define DCLK_DECOM_SRC 43
|
||||
#define CCLK_SDMMC1 44
|
||||
#define CLK_CORE_CRYPTO 45
|
||||
#define CLK_PKA_CRYPTO 46
|
||||
#define CLK_CORE_RGA 47
|
||||
#define MCLK_SAI_SRC 48
|
||||
#define CLK_FREQ_PWM0_SRC 49
|
||||
@@ -179,9 +177,7 @@
|
||||
#define HCLK_SDMMC1 168
|
||||
#define HCLK_SAI 169
|
||||
#define MCLK_SAI 170
|
||||
#define ACLK_CRYPTO 171
|
||||
#define HCLK_CRYPTO 172
|
||||
#define HCLK_RK_RNG_NS 173
|
||||
#define HCLK_RK_RNG_S 174
|
||||
#define PCLK_OTPC_NS 175
|
||||
#define CLK_OTPC_ROOT_NS 176
|
||||
@@ -222,6 +218,13 @@
|
||||
|
||||
#define CLK_NR_CLKS (CLK_REF_USBPHY + 1)
|
||||
|
||||
#define CLK_CORE_CRYPTO 1
|
||||
#define CLK_PKA_CRYPTO 2
|
||||
#define ACLK_CRYPTO 3
|
||||
#define HCLK_RK_RNG_NS 4
|
||||
|
||||
#define CLK_NR_GRF_CLKS (HCLK_RK_RNG_NS + 1)
|
||||
|
||||
// PERICRU_SOFTRST_CON00(Offset:0xA00)
|
||||
#define SRST_ARESETN_PERI_BIU 0x00000002
|
||||
#define SRST_HRESETN_HPMCU_BIU 0x00000003
|
||||
|
||||
Reference in New Issue
Block a user