From: Jagadeesh Kona <quic_jkona@quicinc.com>
To: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Cc: Bjorn Andersson <andersson@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
"Vladimir Zapolskiy" <vladimir.zapolskiy@linaro.org>,
Dmitry Baryshkov <lumag@kernel.org>,
Ajit Pandey <quic_ajipan@quicinc.com>,
Imran Shaik <quic_imrashai@quicinc.com>,
Taniya Das <quic_tdas@quicinc.com>,
"Satya Priya Kakitapalli" <quic_skakitap@quicinc.com>,
<linux-arm-msm@vger.kernel.org>, <linux-clk@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: Re: [PATCH v3 04/18] clk: qcom: clk-alpha-pll: Add support for common PLL configuration function
Date: Fri, 11 Apr 2025 12:43:39 +0530 [thread overview]
Message-ID: <958877e3-3e14-4259-af7d-697c87b141ee@quicinc.com> (raw)
In-Reply-To: <zyfr7dd3dwfbcyztiaajr6tac7shn6ecrvy5277bfk2uwh3txp@gt4tbxh6xx54>
On 3/27/2025 11:50 PM, Dmitry Baryshkov wrote:
> On Thu, Mar 27, 2025 at 03:51:33PM +0000, Bryan O'Donoghue wrote:
>> On 27/03/2025 09:52, Jagadeesh Kona wrote:
>>> From: Taniya Das <quic_tdas@quicinc.com>
>>>
>>> To properly configure the PLLs on recent chipsets, it often requires more
>>> than one power domain to be kept ON. The support to enable multiple power
>>> domains is being added in qcom_cc_really_probe() and PLLs should be
>>> configured post all the required power domains are enabled.
>>>
>>> Hence integrate PLL configuration into clk_alpha_pll structure and add
>>> support for qcom_clk_alpha_pll_configure() function which can be called
>>> from qcom_cc_really_probe() to configure the clock controller PLLs after
>>> all required power domains are enabled.
>>>
>>> Signed-off-by: Taniya Das <quic_tdas@quicinc.com>
>>> Signed-off-by: Jagadeesh Kona <quic_jkona@quicinc.com>
>>> ---
>>> drivers/clk/qcom/clk-alpha-pll.c | 63 ++++++++++++++++++++++++++++++++++++++++
>>> drivers/clk/qcom/clk-alpha-pll.h | 3 ++
>>> 2 files changed, 66 insertions(+)
>>>
>>> diff --git a/drivers/clk/qcom/clk-alpha-pll.c b/drivers/clk/qcom/clk-alpha-pll.c
>>> index cec0afea8e446010f0d4140d4ef63121706dde47..8ee842254e6690e24469053cdbd99a9953987e40 100644
>>> --- a/drivers/clk/qcom/clk-alpha-pll.c
>>> +++ b/drivers/clk/qcom/clk-alpha-pll.c
>>> @@ -63,6 +63,8 @@
>>> #define PLL_OPMODE(p) ((p)->offset + (p)->regs[PLL_OFF_OPMODE])
>>> #define PLL_FRAC(p) ((p)->offset + (p)->regs[PLL_OFF_FRAC])
>>> +#define GET_PLL_TYPE(pll) (((pll)->regs - clk_alpha_pll_regs[0]) / PLL_OFF_MAX_REGS)
>>> +
>>> const u8 clk_alpha_pll_regs[][PLL_OFF_MAX_REGS] = {
>>> [CLK_ALPHA_PLL_TYPE_DEFAULT] = {
>>> [PLL_OFF_L_VAL] = 0x04,
>>> @@ -2960,3 +2962,64 @@ const struct clk_ops clk_alpha_pll_regera_ops = {
>>> .set_rate = clk_zonda_pll_set_rate,
>>> };
>>> EXPORT_SYMBOL_GPL(clk_alpha_pll_regera_ops);
>>> +
>>> +void qcom_clk_alpha_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap)
>>> +{
>>> + const struct clk_init_data *init = pll->clkr.hw.init;
>>> + const char *name = init->name;
>>> +
>>> + if (!pll->config || !pll->regs) {
>>> + pr_err("%s: missing pll config or regs\n", name);
>>> + return;
>>> + }
>>
>> Seems like a strange check - you are calling this function in a loop which
>> looks like
>>
>> for (i = 0; i < desc->num_alpha_plls; i++)
>> qcom_clk_alpha_pll_configure(desc->alpha_plls[i], regmap);
>>
>> Can num_alpha_plls be true but alpha_plls be NULL and why is regmap
>> considered valid ?
>>
>> I think you can drop this check.
>
The regmap check is already performed in qcom_cc_map() before we reach this
point.
It is not possible for num_alpha_plls to be true when alpha_plls is NULL, as
num_alpha_plls is derived using SIZE_OF(alpha_plls).
Including the above check is beneficial to catch any errors in case we missed
adding the necessary config/regs fields to the PLL structure in the CC code.
> I think pll->config should be moved to a calling code.
>
Yes, I can move above checks to calling code in next series.
Thanks,
Jagadeesh
>>
>>> +
>>> + switch (GET_PLL_TYPE(pll)) {
>>> + case CLK_ALPHA_PLL_TYPE_LUCID_OLE:
>>> + clk_lucid_ole_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_LUCID_EVO:
>>> + clk_lucid_evo_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_TAYCAN_ELU:
>>> + clk_taycan_elu_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_RIVIAN_EVO:
>>> + clk_rivian_evo_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_TRION:
>>> + clk_trion_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_HUAYRA_2290:
>>> + clk_huayra_2290_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_FABIA:
>>> + clk_fabia_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_AGERA:
>>> + clk_agera_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_PONGO_ELU:
>>> + clk_pongo_elu_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_ZONDA:
>>> + case CLK_ALPHA_PLL_TYPE_ZONDA_OLE:
>>> + clk_zonda_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_STROMER:
>>> + case CLK_ALPHA_PLL_TYPE_STROMER_PLUS:
>>> + clk_stromer_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + case CLK_ALPHA_PLL_TYPE_DEFAULT:
>>> + case CLK_ALPHA_PLL_TYPE_DEFAULT_EVO:
>>> + case CLK_ALPHA_PLL_TYPE_HUAYRA:
>>> + case CLK_ALPHA_PLL_TYPE_HUAYRA_APSS:
>>> + case CLK_ALPHA_PLL_TYPE_BRAMMO:
>>> + case CLK_ALPHA_PLL_TYPE_BRAMMO_EVO:
>>> + clk_alpha_pll_configure(pll, regmap, pll->config);
>>> + break;
>>> + default:
>>> + WARN(1, "%s: invalid pll type\n", name);
>>> + break;
>>> + }
>>> +}
>>> +EXPORT_SYMBOL_GPL(qcom_clk_alpha_pll_configure);
>>> diff --git a/drivers/clk/qcom/clk-alpha-pll.h b/drivers/clk/qcom/clk-alpha-pll.h
>>> index 79aca8525262211ae5295245427d4540abf1e09a..7f35aaa7a35d88411beb11fd2be5d5dd5bfbe066 100644
>>> --- a/drivers/clk/qcom/clk-alpha-pll.h
>>> +++ b/drivers/clk/qcom/clk-alpha-pll.h
>>> @@ -81,6 +81,7 @@ struct pll_vco {
>>> * struct clk_alpha_pll - phase locked loop (PLL)
>>> * @offset: base address of registers
>>> * @regs: alpha pll register map (see @clk_alpha_pll_regs)
>>> + * @config: array of pll settings
>>> * @vco_table: array of VCO settings
>>> * @num_vco: number of VCO settings in @vco_table
>>> * @flags: bitmask to indicate features supported by the hardware
>>> @@ -90,6 +91,7 @@ struct clk_alpha_pll {
>>> u32 offset;
>>> const u8 *regs;
>>> + const struct alpha_pll_config *config;
>>> const struct pll_vco *vco_table;
>>> size_t num_vco;
>>> #define SUPPORTS_OFFLINE_REQ BIT(0)
>>> @@ -237,5 +239,6 @@ void clk_stromer_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap,
>>> const struct alpha_pll_config *config);
>>> void clk_regera_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap,
>>> const struct alpha_pll_config *config);
>>> +void qcom_clk_alpha_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap);
>>> #endif
>>>
>
next prev parent reply other threads:[~2025-04-11 7:13 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-27 9:52 [PATCH v3 00/18] clk: qcom: Add support to attach multiple power domains in cc probe Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 01/18] dt-bindings: clock: qcom,sm8450-videocc: Add MXC power domain Jagadeesh Kona
2025-03-28 8:09 ` Krzysztof Kozlowski
2025-03-28 8:10 ` Krzysztof Kozlowski
2025-03-27 9:52 ` [PATCH v3 02/18] dt-bindings: clock: qcom: Update sc8280xp camcc bindings Jagadeesh Kona
2025-03-27 15:39 ` Bryan O'Donoghue
2025-03-28 8:07 ` Krzysztof Kozlowski
2025-03-28 10:39 ` Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 03/18] dt-bindings: clock: qcom: sm8450-camcc: Allow to specify two power domains Jagadeesh Kona
2025-03-27 15:28 ` Bryan O'Donoghue
2025-03-28 10:39 ` Jagadeesh Kona
2025-03-28 8:11 ` Krzysztof Kozlowski
2025-03-27 9:52 ` [PATCH v3 04/18] clk: qcom: clk-alpha-pll: Add support for common PLL configuration function Jagadeesh Kona
2025-03-27 15:51 ` Bryan O'Donoghue
2025-03-27 18:20 ` Dmitry Baryshkov
2025-04-11 7:13 ` Jagadeesh Kona [this message]
2025-03-27 9:52 ` [PATCH v3 05/18] clk: qcom: common: Handle runtime power management in qcom_cc_really_probe Jagadeesh Kona
2025-03-27 12:44 ` Dmitry Baryshkov
2025-03-27 15:58 ` Bryan O'Donoghue
2025-03-28 10:41 ` Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 06/18] clk: qcom: common: Add support to configure clk regs " Jagadeesh Kona
2025-03-27 12:50 ` Dmitry Baryshkov
2025-04-11 7:14 ` Jagadeesh Kona
2025-04-11 8:51 ` Dmitry Baryshkov
2025-04-14 10:09 ` Jagadeesh Kona
2025-04-14 10:13 ` Dmitry Baryshkov
2025-03-27 9:52 ` [PATCH v3 07/18] clk: qcom: videocc-sm8450: Move PLL & clk configuration to really probe Jagadeesh Kona
2025-03-27 12:51 ` Dmitry Baryshkov
2025-03-27 9:52 ` [PATCH v3 08/18] clk: qcom: videocc-sm8550: " Jagadeesh Kona
2025-03-27 13:58 ` Dmitry Baryshkov
2025-03-27 9:52 ` [PATCH v3 09/18] clk: qcom: camcc-sm8450: " Jagadeesh Kona
2025-03-27 13:58 ` Dmitry Baryshkov
2025-03-27 9:52 ` [PATCH v3 10/18] clk: qcom: camcc-sm8550: " Jagadeesh Kona
2025-03-27 15:06 ` Dmitry Baryshkov
2025-03-27 9:52 ` [PATCH v3 11/18] clk: qcom: camcc-sm8650: " Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 12/18] clk: qcom: camcc-x1e80100: " Jagadeesh Kona
2025-03-27 15:59 ` Bryan O'Donoghue
2025-03-27 9:52 ` [PATCH v3 13/18] arm64: dts: qcom: Add MXC power domain to videocc node on SM8450 Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 14/18] arm64: dts: qcom: Add MXC power domain to videocc node on SM8550 Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 15/18] arm64: dts: qcom: Add MXC power domain to videocc node on SM8650 Jagadeesh Kona
2025-04-01 15:27 ` Konrad Dybcio
2025-04-01 16:00 ` Konrad Dybcio
2025-04-11 7:27 ` Jagadeesh Kona
2025-04-11 7:16 ` Jagadeesh Kona
2025-04-11 9:15 ` Konrad Dybcio
2025-03-27 9:52 ` [PATCH v3 16/18] arm64: dts: qcom: Add MXC power domain to camcc node on SM8450 Jagadeesh Kona
2025-03-27 16:03 ` Bryan O'Donoghue
2025-03-28 10:40 ` Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 17/18] arm64: dts: qcom: sm8550: Additionally manage MXC power domain in camcc Jagadeesh Kona
2025-03-27 9:52 ` [PATCH v3 18/18] arm64: dts: qcom: Add MXC power domain to camcc node on SM8650 Jagadeesh Kona
2025-03-27 14:03 ` [PATCH v3 00/18] clk: qcom: Add support to attach multiple power domains in cc probe Rob Herring (Arm)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=958877e3-3e14-4259-af7d-697c87b141ee@quicinc.com \
--to=quic_jkona@quicinc.com \
--cc=andersson@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=mturquette@baylibre.com \
--cc=quic_ajipan@quicinc.com \
--cc=quic_imrashai@quicinc.com \
--cc=quic_skakitap@quicinc.com \
--cc=quic_tdas@quicinc.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=vladimir.zapolskiy@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.