From 0eb622365543a7635e93af55cfb2e1de25a51717 Mon Sep 17 00:00:00 2001 From: Abel Vesa Date: Thu, 24 Sep 2026 15:06:51 +0300 Subject: [PATCH] clk: qcom: gpucc-sm4450: Use common probe handling for always-on clocks Describe the always-on branches in a critical_cbcrs array and reference it through qcom_cc_driver_data. Let qcom_cc_really_probe() enable these branches instead of programming them directly in the driver's probe. Assisted-by: LLM Reviewed-by: Konrad Dybcio Signed-off-by: Abel Vesa Link: https://patch.msgid.link/20260924-clk-qcom-rework-legacy-always-on-clocks-v2-39-1479443ee016@oss.qualcomm.com Signed-off-by: Bjorn Andersson --- drivers/clk/qcom/gpucc-sm4450.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/clk/qcom/gpucc-sm4450.c b/drivers/clk/qcom/gpucc-sm4450.c index 808b1eaa59d1..bd0f3fc2b726 100644 --- a/drivers/clk/qcom/gpucc-sm4450.c +++ b/drivers/clk/qcom/gpucc-sm4450.c @@ -754,7 +754,19 @@ static const struct regmap_config gpu_cc_sm4450_regmap_config = { .fast_io = true, }; +static const u32 gpu_cc_sm4450_critical_cbcrs[] = { + 0x93a4, /* GPU_CC_CB_CLK */ + 0x9004, /* GPU_CC_CXO_AON_CLK */ + 0x900c, /* GPU_CC_DEMET_CLK */ +}; + +static const struct qcom_cc_driver_data gpu_cc_sm4450_driver_data = { + .clk_cbcrs = gpu_cc_sm4450_critical_cbcrs, + .num_clk_cbcrs = ARRAY_SIZE(gpu_cc_sm4450_critical_cbcrs), +}; + static const struct qcom_cc_desc gpu_cc_sm4450_desc = { + .driver_data = &gpu_cc_sm4450_driver_data, .config = &gpu_cc_sm4450_regmap_config, .clks = gpu_cc_sm4450_clocks, .num_clks = ARRAY_SIZE(gpu_cc_sm4450_clocks), @@ -781,11 +793,6 @@ static int gpu_cc_sm4450_probe(struct platform_device *pdev) clk_lucid_evo_pll_configure(&gpu_cc_pll0, regmap, &gpu_cc_pll0_config); clk_lucid_evo_pll_configure(&gpu_cc_pll1, regmap, &gpu_cc_pll1_config); - /* Keep some clocks always enabled */ - qcom_branch_set_clk_en(regmap, 0x93a4); /* GPU_CC_CB_CLK */ - qcom_branch_set_clk_en(regmap, 0x9004); /* GPU_CC_CXO_AON_CLK */ - qcom_branch_set_clk_en(regmap, 0x900c); /* GPU_CC_DEMET_CLK */ - return qcom_cc_really_probe(&pdev->dev, &gpu_cc_sm4450_desc, regmap); }