Commit cfb8282e authored by Amit Nischal's avatar Amit Nischal Committed by Stephen Boyd

clk: qcom: Enable clocks which needs to be always on for SDM845

There are certain clocks which needs to be always enabled for system
operation. Add support for the same by adding 'CLK_IS_CRITICAL' flag
for such clocks.
Signed-off-by: default avatarAmit Nischal <anischal@codeaurora.org>
Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
parent ce397d21
...@@ -1103,6 +1103,7 @@ static struct clk_branch gcc_camera_ahb_clk = { ...@@ -1103,6 +1103,7 @@ static struct clk_branch gcc_camera_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_camera_ahb_clk", .name = "gcc_camera_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1129,6 +1130,7 @@ static struct clk_branch gcc_camera_xo_clk = { ...@@ -1129,6 +1130,7 @@ static struct clk_branch gcc_camera_xo_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_camera_xo_clk", .name = "gcc_camera_xo_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1270,6 +1272,7 @@ static struct clk_branch gcc_disp_ahb_clk = { ...@@ -1270,6 +1272,7 @@ static struct clk_branch gcc_disp_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_disp_ahb_clk", .name = "gcc_disp_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1328,6 +1331,7 @@ static struct clk_branch gcc_disp_xo_clk = { ...@@ -1328,6 +1331,7 @@ static struct clk_branch gcc_disp_xo_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_disp_xo_clk", .name = "gcc_disp_xo_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -1397,6 +1401,7 @@ static struct clk_branch gcc_gpu_cfg_ahb_clk = { ...@@ -1397,6 +1401,7 @@ static struct clk_branch gcc_gpu_cfg_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_gpu_cfg_ahb_clk", .name = "gcc_gpu_cfg_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -2985,6 +2990,7 @@ static struct clk_branch gcc_video_ahb_clk = { ...@@ -2985,6 +2990,7 @@ static struct clk_branch gcc_video_ahb_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_video_ahb_clk", .name = "gcc_video_ahb_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -3011,6 +3017,7 @@ static struct clk_branch gcc_video_xo_clk = { ...@@ -3011,6 +3017,7 @@ static struct clk_branch gcc_video_xo_clk = {
.enable_mask = BIT(0), .enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "gcc_video_xo_clk", .name = "gcc_video_xo_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops, .ops = &clk_branch2_ops,
}, },
}, },
...@@ -3049,6 +3056,36 @@ static struct clk_branch gcc_vs_ctrl_clk = { ...@@ -3049,6 +3056,36 @@ static struct clk_branch gcc_vs_ctrl_clk = {
}, },
}; };
static struct clk_branch gcc_cpuss_dvm_bus_clk = {
.halt_reg = 0x48190,
.halt_check = BRANCH_HALT,
.clkr = {
.enable_reg = 0x48190,
.enable_mask = BIT(0),
.hw.init = &(struct clk_init_data){
.name = "gcc_cpuss_dvm_bus_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops,
},
},
};
static struct clk_branch gcc_cpuss_gnoc_clk = {
.halt_reg = 0x48004,
.halt_check = BRANCH_HALT_VOTED,
.hwcg_reg = 0x48004,
.hwcg_bit = 1,
.clkr = {
.enable_reg = 0x52004,
.enable_mask = BIT(22),
.hw.init = &(struct clk_init_data){
.name = "gcc_cpuss_gnoc_clk",
.flags = CLK_IS_CRITICAL,
.ops = &clk_branch2_ops,
},
},
};
static struct gdsc pcie_0_gdsc = { static struct gdsc pcie_0_gdsc = {
.gdscr = 0x6b004, .gdscr = 0x6b004,
.pd = { .pd = {
...@@ -3344,6 +3381,8 @@ static struct clk_regmap *gcc_sdm845_clocks[] = { ...@@ -3344,6 +3381,8 @@ static struct clk_regmap *gcc_sdm845_clocks[] = {
[GPLL0] = &gpll0.clkr, [GPLL0] = &gpll0.clkr,
[GPLL0_OUT_EVEN] = &gpll0_out_even.clkr, [GPLL0_OUT_EVEN] = &gpll0_out_even.clkr,
[GPLL4] = &gpll4.clkr, [GPLL4] = &gpll4.clkr,
[GCC_CPUSS_DVM_BUS_CLK] = &gcc_cpuss_dvm_bus_clk.clkr,
[GCC_CPUSS_GNOC_CLK] = &gcc_cpuss_gnoc_clk.clkr,
}; };
static const struct qcom_reset_map gcc_sdm845_resets[] = { static const struct qcom_reset_map gcc_sdm845_resets[] = {
...@@ -3433,10 +3472,6 @@ static int gcc_sdm845_probe(struct platform_device *pdev) ...@@ -3433,10 +3472,6 @@ static int gcc_sdm845_probe(struct platform_device *pdev)
regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3); regmap_update_bits(regmap, 0x09ffc, 0x3, 0x3);
regmap_update_bits(regmap, 0x71028, 0x3, 0x3); regmap_update_bits(regmap, 0x71028, 0x3, 0x3);
/* Enable CPUSS clocks */
regmap_update_bits(regmap, 0x48190, BIT(0), 0x1);
regmap_update_bits(regmap, 0x52004, BIT(22), 0x1);
return qcom_cc_really_probe(pdev, &gcc_sdm845_desc, regmap); return qcom_cc_really_probe(pdev, &gcc_sdm845_desc, regmap);
} }
......
...@@ -192,6 +192,8 @@ ...@@ -192,6 +192,8 @@
#define GCC_VS_CTRL_CLK_SRC 182 #define GCC_VS_CTRL_CLK_SRC 182
#define GCC_VSENSOR_CLK_SRC 183 #define GCC_VSENSOR_CLK_SRC 183
#define GPLL4 184 #define GPLL4 184
#define GCC_CPUSS_DVM_BUS_CLK 185
#define GCC_CPUSS_GNOC_CLK 186
/* GCC Resets */ /* GCC Resets */
#define GCC_MMSS_BCR 0 #define GCC_MMSS_BCR 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment