From patchwork Fri Jan 13 12:05:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 642204 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 44DF9C678D9 for ; Fri, 13 Jan 2023 12:13:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240868AbjAMMNw (ORCPT ); Fri, 13 Jan 2023 07:13:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240865AbjAMMMt (ORCPT ); Fri, 13 Jan 2023 07:12:49 -0500 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C42980639 for ; Fri, 13 Jan 2023 04:07:16 -0800 (PST) Received: by mail-lf1-x131.google.com with SMTP id f34so32810158lfv.10 for ; Fri, 13 Jan 2023 04:07:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OWtr3DFJJQf72yrPQBzeCk1JOA6Sdo54gcc/AJ5i2xI=; b=wNCH57Vpt+VmsKwMJVSCoVfxPB2PDmHFoSocF7TPJXm+IZIKsAvlF1Z+9UYhaFSH3W zYC2wcAiWzU09RCNZHVVLepcwjOO1c6a3tJkaUIWBiaic/YlShJOc3daO8G4yEYh4Qcu 2YKfNw5gHest9GRIqMGI+00BchO0o07jQ5BNStQESSXARRqsCWgntMEPloahpMnyWMrq bSNG87qZHtNjXuY8tiVFs8T7cUA8kjq8NXQxaxcyCnfV945ogU5vXGlM2Av3mbHkHCCk kmFP4Lqp1fL/9vU21gk52+jbofSx5cGqrXl6p+u/9EBBafnOnVX8kp1MzRlNMn9ccBWM FSCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OWtr3DFJJQf72yrPQBzeCk1JOA6Sdo54gcc/AJ5i2xI=; b=tJdr4OHJJo8Rf9sp1EpDkuOMP6ThMFe8uUiM0xzTl0BzEIvcvUOgr8jpinExbGeE3u kM7JwesUeHMl07FBLbIg3+P6gqH275Wg61IXNQNs50r/Gn08uw5YcstlOy++4DH7r2GO IX+JEfPnB+5UHEwD0P1MXt7xVJYjqHRLlfzWkd79gy/nOHyqPwMihR1jo7KFP3FyP6Zn NT0rDiYjSh1B5eL7afC58beEPAsbRzpCzVTB2g5Fr6GEJ1wni4ZCk7xGHC8dKDkYT0Kf UludylCz7cwxyyviofnVVk/OikcxkSuhTfIWAA1WxbrrHm6KcxCTIa9A3wm7jFRdb6je vVcQ== X-Gm-Message-State: AFqh2kpWlVXfueCtEcWbtljo1WAxPJsxT32QKZ9fHEHTNeURWX3djSRA sclMDiHJIhxxeoHubsMbOVe9Yg== X-Google-Smtp-Source: AMrXdXtScgOx3kkDaM3ITnGgRWVDsxCcYVL+GeOnvCsPpYeyVcnoUraqid+4g3meWGSAx4Zq7dY9vQ== X-Received: by 2002:a05:6512:3c97:b0:4a5:42ba:d827 with SMTP id h23-20020a0565123c9700b004a542bad827mr24756052lfv.14.1673611634707; Fri, 13 Jan 2023 04:07:14 -0800 (PST) Received: from eriador.lumag.spb.ru ([188.170.82.205]) by smtp.gmail.com with ESMTPSA id i7-20020ac25227000000b004ac6a444b26sm3806290lfl.141.2023.01.13.04.07.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jan 2023 04:07:14 -0800 (PST) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Stephen Boyd , Michael Turquette , Rob Herring , Krzysztof Kozlowski , Taniya Das Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v3 09/14] clk: qcom: cpu-8996: move qcom_cpu_clk_msm8996_acd_init call Date: Fri, 13 Jan 2023 14:05:39 +0200 Message-Id: <20230113120544.59320-10-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230113120544.59320-1-dmitry.baryshkov@linaro.org> References: <20230113120544.59320-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Initialize ACD configuration from qcom_cpu_clk_msm8996_register_clks(), before registering all clocks. This way we can be sure that the clock is fully configured before letting CCF touch it. Reviewed-by: Konrad Dybcio Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/clk-cpu-8996.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/clk/qcom/clk-cpu-8996.c b/drivers/clk/qcom/clk-cpu-8996.c index e390f4aadff1..571ed52b3026 100644 --- a/drivers/clk/qcom/clk-cpu-8996.c +++ b/drivers/clk/qcom/clk-cpu-8996.c @@ -425,6 +425,8 @@ static struct clk_regmap *cpu_msm8996_clks[] = { &perfcl_pmux.clkr, }; +static void qcom_cpu_clk_msm8996_acd_init(struct regmap *regmap); + static int qcom_cpu_clk_msm8996_register_clks(struct device *dev, struct regmap *regmap) { @@ -435,6 +437,8 @@ static int qcom_cpu_clk_msm8996_register_clks(struct device *dev, clk_alpha_pll_configure(&pwrcl_alt_pll, regmap, &altpll_config); clk_alpha_pll_configure(&perfcl_alt_pll, regmap, &altpll_config); + qcom_cpu_clk_msm8996_acd_init(regmap); + for (i = 0; i < ARRAY_SIZE(cpu_msm8996_hw_clks); i++) { ret = devm_clk_hw_register(dev, cpu_msm8996_hw_clks[i]); if (ret) @@ -467,9 +471,8 @@ static int qcom_cpu_clk_msm8996_register_clks(struct device *dev, #define L2ACDSSCR_REG 0x589ULL static DEFINE_SPINLOCK(qcom_clk_acd_lock); -static void __iomem *base; -static void qcom_cpu_clk_msm8996_acd_init(void __iomem *base) +static void qcom_cpu_clk_msm8996_acd_init(struct regmap *regmap) { u64 hwid; u32 val; @@ -488,13 +491,13 @@ static void qcom_cpu_clk_msm8996_acd_init(void __iomem *base) kryo_l2_set_indirect_reg(L2ACDSSCR_REG, 0x00000601); if (PWRCL_CPU_REG_MASK == (hwid | PWRCL_CPU_REG_MASK)) { - writel(0xf, base + PWRCL_REG_OFFSET + SSSCTL_OFFSET); + regmap_write(regmap, PWRCL_REG_OFFSET + SSSCTL_OFFSET, 0xf); kryo_l2_set_indirect_reg(L2ACDCR_REG, 0x002c5ffd); } if (PERFCL_CPU_REG_MASK == (hwid | PERFCL_CPU_REG_MASK)) { kryo_l2_set_indirect_reg(L2ACDCR_REG, 0x002c5ffd); - writel(0xf, base + PERFCL_REG_OFFSET + SSSCTL_OFFSET); + regmap_write(regmap, PERFCL_REG_OFFSET + SSSCTL_OFFSET, 0xf); } out: @@ -509,7 +512,7 @@ static int cpu_clk_notifier_cb(struct notifier_block *nb, unsigned long event, switch (event) { case PRE_RATE_CHANGE: - qcom_cpu_clk_msm8996_acd_init(base); + qcom_cpu_clk_msm8996_acd_init(cpuclk->clkr.regmap); /* * Avoid overvolting. clk_core_set_rate_nolock() walks from top @@ -538,6 +541,7 @@ static int cpu_clk_notifier_cb(struct notifier_block *nb, unsigned long event, static int qcom_cpu_clk_msm8996_driver_probe(struct platform_device *pdev) { + static void __iomem *base; struct regmap *regmap; struct clk_hw_onecell_data *data; struct device *dev = &pdev->dev; @@ -559,8 +563,6 @@ static int qcom_cpu_clk_msm8996_driver_probe(struct platform_device *pdev) if (ret) return ret; - qcom_cpu_clk_msm8996_acd_init(base); - data->hws[0] = &pwrcl_pmux.clkr.hw; data->hws[1] = &perfcl_pmux.clkr.hw; data->num = 2;