mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
668 lines
19 KiB
Diff
668 lines
19 KiB
Diff
From 714e6b9ab711846cd09b94f83436e23932dd2814 Mon Sep 17 00:00:00 2001
|
|
From: anusha <anusharao@codeaurora.org>
|
|
Date: Wed, 19 Aug 2020 17:59:22 +0530
|
|
Subject: [PATCH] clk: ipq6018: Add missing clocks
|
|
|
|
Signed-off-by: anusha <anusharao@codeaurora.org>
|
|
Change-Id: I85bb1c127a4794ae9347d5babbbfd6490f6abcc7
|
|
---
|
|
drivers/clk/qcom/gcc-ipq6018.c | 633 ++++++++++++++++++++++++++++++++-
|
|
1 file changed, 616 insertions(+), 17 deletions(-)
|
|
|
|
--- a/drivers/clk/qcom/gcc-ipq6018.c
|
|
+++ b/drivers/clk/qcom/gcc-ipq6018.c
|
|
@@ -213,6 +213,19 @@ static struct clk_rcg2 pcnoc_bfdcd_clk_s
|
|
},
|
|
};
|
|
|
|
+static struct clk_fixed_factor pcnoc_clk_src = {
|
|
+ .mult = 1,
|
|
+ .div = 1,
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "pcnoc_clk_src",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &pcnoc_bfdcd_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
+ .flags = CLK_SET_RATE_PARENT,
|
|
+ },
|
|
+};
|
|
+
|
|
static struct clk_alpha_pll gpll2_main = {
|
|
.offset = 0x4a000,
|
|
.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
|
|
@@ -491,6 +504,19 @@ static struct clk_rcg2 snoc_nssnoc_bfdcd
|
|
},
|
|
};
|
|
|
|
+static struct clk_fixed_factor snoc_nssnoc_clk_src = {
|
|
+ .mult = 1,
|
|
+ .div = 1,
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "snoc_nssnoc_clk_src",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &snoc_nssnoc_bfdcd_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
+ .flags = CLK_SET_RATE_PARENT,
|
|
+ },
|
|
+};
|
|
+
|
|
static const struct freq_tbl ftbl_apss_ahb_clk_src[] = {
|
|
F(24000000, P_XO, 1, 0, 0),
|
|
F(25000000, P_GPLL0_DIV2, 16, 0, 0),
|
|
@@ -1893,6 +1919,19 @@ static struct clk_rcg2 system_noc_bfdcd_
|
|
},
|
|
};
|
|
|
|
+static struct clk_fixed_factor system_noc_clk_src = {
|
|
+ .mult = 1,
|
|
+ .div = 1,
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "system_noc_clk_src",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &system_noc_bfdcd_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
+ .flags = CLK_SET_RATE_PARENT,
|
|
+ },
|
|
+};
|
|
+
|
|
static const struct freq_tbl ftbl_ubi32_mem_noc_bfdcd_clk_src[] = {
|
|
F(24000000, P_XO, 1, 0, 0),
|
|
F(307670000, P_BIAS_PLL_NSS_NOC, 1.5, 0, 0),
|
|
@@ -1928,6 +1967,19 @@ static struct clk_rcg2 ubi32_mem_noc_bfd
|
|
},
|
|
};
|
|
|
|
+static struct clk_fixed_factor ubi32_mem_noc_clk_src = {
|
|
+ .mult = 1,
|
|
+ .div = 1,
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "ubi32_mem_noc_clk_src",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &ubi32_mem_noc_bfdcd_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
+ .flags = CLK_SET_RATE_PARENT,
|
|
+ },
|
|
+};
|
|
+
|
|
static struct clk_branch gcc_apss_axi_clk = {
|
|
.halt_reg = 0x46020,
|
|
.halt_check = BRANCH_HALT_VOTED,
|
|
@@ -2685,6 +2737,454 @@ static struct clk_rcg2 lpass_q6_axim_clk
|
|
},
|
|
};
|
|
|
|
+static struct clk_branch gcc_wcss_axi_m_clk = {
|
|
+ .halt_reg = 0x5903C,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x5903C,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_axi_m_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &system_noc_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_sys_noc_wcss_ahb_clk = {
|
|
+ .halt_reg = 0x26034,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x26034,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_sys_noc_wcss_ahb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &wcss_ahb_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6_axim_clk = {
|
|
+ .halt_reg = 0x5913C,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x5913C,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6_axim_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &q6_axi_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6ss_atbm_clk = {
|
|
+ .halt_reg = 0x59144,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59144,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6ss_atbm_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_at_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6ss_pclkdbg_clk = {
|
|
+ .halt_reg = 0x59140,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59140,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6ss_pclkdbg_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_dap_sync_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6_tsctr_1to2_clk = {
|
|
+ .halt_reg = 0x59148,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59148,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6_tsctr_1to2_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_tsctr_div2_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_core_tbu_clk = {
|
|
+ .halt_reg = 0x12028,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0xb00c,
|
|
+ .enable_mask = BIT(7),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_core_tbu_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &system_noc_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_q6_tbu_clk = {
|
|
+ .halt_reg = 0x1202C,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0xb00c,
|
|
+ .enable_mask = BIT(8),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_q6_tbu_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &q6_axi_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6_axim2_clk = {
|
|
+ .halt_reg = 0x59150,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59150,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6_axim2_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &q6_axi_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6_ahb_clk = {
|
|
+ .halt_reg = 0x59138,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59138,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6_ahb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &wcss_ahb_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_q6_ahb_s_clk = {
|
|
+ .halt_reg = 0x5914C,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x5914C,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_q6_ahb_s_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &wcss_ahb_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_apb_clk = {
|
|
+ .halt_reg = 0x59040,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59040,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_apb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_dap_sync_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_atb_clk = {
|
|
+ .halt_reg = 0x59044,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59044,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_atb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_at_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_nts_clk = {
|
|
+ .halt_reg = 0x59048,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59048,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_nts_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_tsctr_div2_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_dapbus_clk = {
|
|
+ .halt_reg = 0x5905C,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x5905C,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_dapbus_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_dap_sync_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_apb_bdg_clk = {
|
|
+ .halt_reg = 0x59050,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59050,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_apb_bdg_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_dap_sync_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_atb_bdg_clk = {
|
|
+ .halt_reg = 0x59054,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59054,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_atb_bdg_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_at_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_nts_bdg_clk = {
|
|
+ .halt_reg = 0x59058,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59058,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_nts_bdg_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_tsctr_div2_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_dbg_ifc_dapbus_bdg_clk = {
|
|
+ .halt_reg = 0x59060,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59060,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_dbg_ifc_dapbus_bdg_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_dap_sync_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_nssnoc_atb_clk = {
|
|
+ .halt_reg = 0x6818C,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x6818C,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_nssnoc_atb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_at_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_ecahb_clk = {
|
|
+ .halt_reg = 0x59038,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59038,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_ecahb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &wcss_ahb_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_acmt_clk = {
|
|
+ .halt_reg = 0x59064,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59064,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_acmt_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &wcss_ahb_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_wcss_ahb_s_clk = {
|
|
+ .halt_reg = 0x59034,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x59034,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_wcss_ahb_s_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &wcss_ahb_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+struct clk_branch gcc_rbcpr_wcss_ahb_clk = {
|
|
+ .halt_reg = 0x3A008,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x3A008,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_rbcpr_wcss_ahb_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &pcnoc_clk_src.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+struct clk_branch gcc_mem_noc_q6_axi_clk = {
|
|
+ .halt_reg = 0x1D038,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x1D038,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_mem_noc_q6_axi_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &q6_axi_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_sys_noc_qdss_stm_axi_clk = {
|
|
+ .halt_reg = 0x26024,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x26024,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_sys_noc_qdss_stm_axi_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_stm_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_qdss_stm_clk = {
|
|
+ .halt_reg = 0x29044,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x29044,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_qdss_stm_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_stm_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
+static struct clk_branch gcc_qdss_traceclkin_clk = {
|
|
+ .halt_reg = 0x29060,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x29060,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_qdss_traceclkin_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_traceclkin_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
static struct freq_tbl ftbl_rbcpr_wcss_clk_src[] = {
|
|
F(24000000, P_XO, 1, 0, 0),
|
|
F(50000000, P_GPLL0, 16, 0, 0),
|
|
@@ -2704,6 +3204,22 @@ static struct clk_rcg2 rbcpr_wcss_clk_sr
|
|
},
|
|
};
|
|
|
|
+struct clk_branch gcc_rbcpr_wcss_clk = {
|
|
+ .halt_reg = 0x3A004,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x3A004,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_rbcpr_wcss_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &rbcpr_wcss_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
static struct clk_branch gcc_lpass_core_axim_clk = {
|
|
.halt_reg = 0x1F028,
|
|
.clkr = {
|
|
@@ -3525,6 +4041,22 @@ static struct clk_branch gcc_prng_ahb_cl
|
|
},
|
|
};
|
|
|
|
+static struct clk_branch gcc_qdss_at_clk = {
|
|
+ .halt_reg = 0x29024,
|
|
+ .clkr = {
|
|
+ .enable_reg = 0x29024,
|
|
+ .enable_mask = BIT(0),
|
|
+ .hw.init = &(struct clk_init_data){
|
|
+ .name = "gcc_qdss_at_clk",
|
|
+ .parent_hws = (const struct clk_hw *[]){
|
|
+ &qdss_at_clk_src.clkr.hw },
|
|
+ .num_parents = 1,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
|
+ .ops = &clk_branch2_ops,
|
|
+ },
|
|
+ },
|
|
+};
|
|
+
|
|
static struct clk_branch gcc_qdss_dap_clk = {
|
|
.halt_reg = 0x29084,
|
|
.clkr = {
|
|
@@ -3535,7 +4067,7 @@ static struct clk_branch gcc_qdss_dap_cl
|
|
.parent_hws = (const struct clk_hw *[]){
|
|
&qdss_dap_sync_clk_src.hw },
|
|
.num_parents = 1,
|
|
- .flags = CLK_SET_RATE_PARENT,
|
|
+ .flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
|
|
.ops = &clk_branch2_ops,
|
|
},
|
|
},
|
|
@@ -4201,6 +4733,9 @@ static struct clk_hw *gcc_ipq6018_hws[]
|
|
&gpll6_out_main_div2.hw,
|
|
&qdss_dap_sync_clk_src.hw,
|
|
&qdss_tsctr_div2_clk_src.hw,
|
|
+ &pcnoc_clk_src.hw,
|
|
+ &snoc_nssnoc_clk_src.hw,
|
|
+ &ubi32_mem_noc_clk_src.hw,
|
|
};
|
|
|
|
static struct clk_regmap *gcc_ipq6018_clks[] = {
|
|
@@ -4364,6 +4899,7 @@ static struct clk_regmap *gcc_ipq6018_cl
|
|
[GCC_SYS_NOC_PCIE0_AXI_CLK] = &gcc_sys_noc_pcie0_axi_clk.clkr,
|
|
[GCC_PCIE0_PIPE_CLK] = &gcc_pcie0_pipe_clk.clkr,
|
|
[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
|
|
+ [GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
|
|
[GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
|
|
[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
|
|
[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
|
|
@@ -4405,9 +4941,35 @@ static struct clk_regmap *gcc_ipq6018_cl
|
|
[PCIE0_RCHNG_CLK_SRC] = &pcie0_rchng_clk_src.clkr,
|
|
[GCC_PCIE0_AXI_S_BRIDGE_CLK] = &gcc_pcie0_axi_s_bridge_clk.clkr,
|
|
[PCIE0_RCHNG_CLK] = &gcc_pcie0_rchng_clk.clkr,
|
|
+ [GCC_WCSS_AXI_M_CLK] = &gcc_wcss_axi_m_clk.clkr,
|
|
+ [GCC_SYS_NOC_WCSS_AHB_CLK] = &gcc_sys_noc_wcss_ahb_clk.clkr,
|
|
[WCSS_AHB_CLK_SRC] = &wcss_ahb_clk_src.clkr,
|
|
+ [GCC_Q6_AXIM_CLK] = &gcc_q6_axim_clk.clkr,
|
|
[Q6_AXI_CLK_SRC] = &q6_axi_clk_src.clkr,
|
|
+ [GCC_Q6SS_ATBM_CLK] = &gcc_q6ss_atbm_clk.clkr,
|
|
+ [GCC_Q6SS_PCLKDBG_CLK] = &gcc_q6ss_pclkdbg_clk.clkr,
|
|
+ [GCC_Q6_TSCTR_1TO2_CLK] = &gcc_q6_tsctr_1to2_clk.clkr,
|
|
+ [GCC_WCSS_CORE_TBU_CLK] = &gcc_wcss_core_tbu_clk.clkr,
|
|
+ [GCC_WCSS_Q6_TBU_CLK] = &gcc_wcss_q6_tbu_clk.clkr,
|
|
+ [GCC_Q6_AXIM2_CLK] = &gcc_q6_axim2_clk.clkr,
|
|
+ [GCC_Q6_AHB_CLK] = &gcc_q6_ahb_clk.clkr,
|
|
+ [GCC_Q6_AHB_S_CLK] = &gcc_q6_ahb_s_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_APB_CLK] = &gcc_wcss_dbg_ifc_apb_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_ATB_CLK] = &gcc_wcss_dbg_ifc_atb_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_NTS_CLK] = &gcc_wcss_dbg_ifc_nts_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_DAPBUS_CLK] = &gcc_wcss_dbg_ifc_dapbus_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_APB_BDG_CLK] = &gcc_wcss_dbg_ifc_apb_bdg_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_ATB_BDG_CLK] = &gcc_wcss_dbg_ifc_atb_bdg_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_NTS_BDG_CLK] = &gcc_wcss_dbg_ifc_nts_bdg_clk.clkr,
|
|
+ [GCC_WCSS_DBG_IFC_DAPBUS_BDG_CLK] = &gcc_wcss_dbg_ifc_dapbus_bdg_clk.clkr,
|
|
+ [GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr,
|
|
+ [GCC_WCSS_ECAHB_CLK] = &gcc_wcss_ecahb_clk.clkr,
|
|
+ [GCC_WCSS_ACMT_CLK] = &gcc_wcss_acmt_clk.clkr,
|
|
+ [GCC_WCSS_AHB_S_CLK] = &gcc_wcss_ahb_s_clk.clkr,
|
|
+ [GCC_RBCPR_WCSS_CLK] = &gcc_rbcpr_wcss_clk.clkr,
|
|
[RBCPR_WCSS_CLK_SRC] = &rbcpr_wcss_clk_src.clkr,
|
|
+ [GCC_RBCPR_WCSS_AHB_CLK] = &gcc_rbcpr_wcss_ahb_clk.clkr,
|
|
+ [GCC_MEM_NOC_Q6_AXI_CLK] = &gcc_mem_noc_q6_axi_clk.clkr,
|
|
[GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
|
|
[LPASS_CORE_AXIM_CLK_SRC] = &lpass_core_axim_clk_src.clkr,
|
|
[GCC_LPASS_SNOC_CFG_CLK] = &gcc_lpass_snoc_cfg_clk.clkr,
|
|
@@ -4423,6 +4985,9 @@ static struct clk_regmap *gcc_ipq6018_cl
|
|
[GCC_MEM_NOC_UBI32_CLK] = &gcc_mem_noc_ubi32_clk.clkr,
|
|
[GCC_MEM_NOC_LPASS_CLK] = &gcc_mem_noc_lpass_clk.clkr,
|
|
[GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
|
|
+ [GCC_SYS_NOC_QDSS_STM_AXI_CLK] = &gcc_sys_noc_qdss_stm_axi_clk.clkr,
|
|
+ [GCC_QDSS_STM_CLK] = &gcc_qdss_stm_clk.clkr,
|
|
+ [GCC_QDSS_TRACECLKIN_CLK] = &gcc_qdss_traceclkin_clk.clkr,
|
|
[QDSS_STM_CLK_SRC] = &qdss_stm_clk_src.clkr,
|
|
[QDSS_TRACECLKIN_CLK_SRC] = &qdss_traceclkin_clk_src.clkr,
|
|
};
|