From: Jie Luo <jie.luo@oss.qualcomm.com>
To: Abel Vesa <abel.vesa@oss.qualcomm.com>
Cc: Bjorn Andersson <andersson@kernel.org>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Brian Masney <bmasney@redhat.com>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
quic_kkumarcs@quicinc.com, quic_linchen@quicinc.com,
quic_leiwei@quicinc.com, quic_suruchia@quicinc.com
Subject: Re: [PATCH v3 04/12] clk: qcom: ipq-cmn-pll: Register CMN PLL /2 clock
Date: Thu, 3 Sep 2026 23:06:53 +0800 [thread overview]
Message-ID: <d93ad481-b574-449e-97aa-f5d1828f583b@oss.qualcomm.com> (raw)
In-Reply-To: <j6m4b2psvvg65qksij63wxo3aqoc5ldlfehqnywa3i33v4pm5j@lr4i5o2g6tdt>
On 9/3/2026 9:18 PM, Abel Vesa wrote:
> On 26-08-14 05:48:14, Luo Jie wrote:
>> Most CMN PLL output clocks are derived from the 12 GHz PLL output
>> through a shared, physical /2 stage, ahead of any further per-clock
>> processing: a gated fixed rate (PCS/ETH0/ETH1/ETH2/EPHY/ETH), a
>> configurable divider (NSS/PPE/PON), or a rate-select bit (EPHY-RAW).
>> This /2 stage is present in the CMN PLL block on every SoC supported
>> by this driver, not just IPQ5210.
>>
>> Register this /2 stage once as a fixed-factor clock, "cmn_pll_div2",
>> and store it on struct clk_cmn_pll so the output clock types added by
>> later patches can parent on it. The two plain fixed-rate outputs,
>> xo-24mhz and sleep-32khz, are the exception on IPQ5210 SoC: they stay
>> parented directly on the main PLL clock.
>>
>> On SoCs other than IPQ5210, every output clock is a plain fixed-rate
>> clock (CMN_PLL_CLK_FIXED_RATE) whose rate is a hardcoded absolute
>> value rather than one computed from the parent rate, so this /2 clock
>> is registered there but currently has no consumers; IPQ5210 is simply
>> the first SoC in this driver whose output clocks are modeled as
>> depending on parent_rate, which is what makes the /2 stage significant.
>>
>> This patch only registers the clock; later patches wire it in as the
>> effective parent for the output clock types that sit downstream of it.
>
> Do not mention future patches here. Each patch has to stand by itself.
>
I will remove the reference to later patches and ensure that this patch
is self-contained.
>>
>> Signed-off-by: Luo Jie <jie.luo@oss.qualcomm.com>
>> ---
>> drivers/clk/qcom/ipq-cmn-pll.c | 22 ++++++++++++++++++++++
>> 1 file changed, 22 insertions(+)
>>
>> diff --git a/drivers/clk/qcom/ipq-cmn-pll.c b/drivers/clk/qcom/ipq-cmn-pll.c
>> index 4fdf78f6829e..bcb51a5f559a 100644
>> --- a/drivers/clk/qcom/ipq-cmn-pll.c
>> +++ b/drivers/clk/qcom/ipq-cmn-pll.c
>> @@ -96,10 +96,17 @@ struct cmn_pll_fixed_output_clk {
>> * struct clk_cmn_pll - CMN PLL hardware specific data
>> * @regmap: hardware regmap.
>> * @hw: handle between common and hardware-specific interfaces
>> + * @div2_hw: fixed /2 clock derived from the CMN PLL output; present on
>> + * every supported SoC, but only IPQ5210 currently parents
>> + * any output clock on it (every output clock except the
>> + * plain fixed-rate xo/sleep clocks, which stay on the main
>> + * PLL); other SoCs' output clocks use hardcoded rates that
>> + * never depend on a parent
>> */
>> struct clk_cmn_pll {
>> struct regmap *regmap;
>> struct clk_hw hw;
>> + struct clk_hw *div2_hw;
>> };
>>
>> #define CLK_PLL_OUTPUT(_id, _name, _rate) { \
>> @@ -362,6 +369,7 @@ static int ipq_cmn_pll_register_clks(struct platform_device *pdev)
>> const struct cmn_pll_fixed_output_clk *p, *fixed_clk;
>> struct clk_hw_onecell_data *hw_data;
>> struct device *dev = &pdev->dev;
>> + struct clk_cmn_pll *cmn_pll;
>> struct clk_hw *cmn_pll_hw;
>> unsigned int num_clks;
>> struct clk_hw *hw;
>> @@ -388,6 +396,20 @@ static int ipq_cmn_pll_register_clks(struct platform_device *pdev)
>> if (IS_ERR(cmn_pll_hw))
>> return PTR_ERR(cmn_pll_hw);
>>
>> + cmn_pll = to_clk_cmn_pll(cmn_pll_hw);
>> +
>> + /*
>> + * The CMN PLL output feeds a shared, physical /2 stage ahead of
>> + * any further per-clock processing (a gated fixed rate, a
>> + * configurable divider, or a rate-select bit). Register it once
>> + * as a fixed-factor clock so the output clock types added by
>> + * later patches can parent on it.
>
> The comment here should only say why this is needed. Do not mention
> future patches.
>
Understood, thanks.
>> + */
>> + cmn_pll->div2_hw = devm_clk_hw_register_fixed_factor_parent_hw(dev, "cmn_pll_div2",
>> + cmn_pll_hw, 0, 1, 2);
>> + if (IS_ERR(cmn_pll->div2_hw))
>> + return PTR_ERR(cmn_pll->div2_hw);
>
> In fact, I think this clock registering is self explanatory as is, so you
> should drop the comment above it.
>
Agreed. I will drop the comment above the clock registration.
>> +
>> /* Register the fixed rate output clocks. */
>> for (i = 0; i < num_clks; i++) {
>> struct clk_parent_data pdata = { .hw = cmn_pll_hw };
>>
>> --
>> 2.43.0
>>
next prev parent reply other threads:[~2026-09-03 15:07 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-14 12:48 [PATCH v3 00/12] clk: qcom: ipq-cmn-pll: Add IPQ5210 CMN PLL support Luo Jie
2026-08-14 12:48 ` [PATCH v3 01/12] clk: qcom: ipq-cmn-pll: Use devm_clk_hw_register_fixed_rate_parent_data Luo Jie
2026-09-03 13:02 ` Abel Vesa
2026-08-14 12:48 ` [PATCH v3 02/12] dt-bindings: clock: qcom: Add CMN PLL support for IPQ5210 SoC Luo Jie
2026-08-14 12:48 ` [PATCH v3 03/12] clk: qcom: clk-regmap-divider: Support CLK_DIVIDER_* flags Luo Jie
2026-08-14 12:59 ` sashiko-bot
2026-09-03 13:10 ` Abel Vesa
2026-08-14 12:48 ` [PATCH v3 04/12] clk: qcom: ipq-cmn-pll: Register CMN PLL /2 clock Luo Jie
2026-09-03 11:55 ` Konrad Dybcio
2026-09-03 15:02 ` Jie Luo
2026-09-03 13:18 ` Abel Vesa
2026-09-03 15:06 ` Jie Luo [this message]
2026-08-14 12:48 ` [PATCH v3 05/12] clk: qcom: ipq-cmn-pll: Add NSS clock support Luo Jie
2026-09-03 11:56 ` Konrad Dybcio
2026-09-03 15:14 ` Jie Luo
2026-09-03 13:23 ` Abel Vesa
2026-08-14 12:48 ` [PATCH v3 06/12] clk: qcom: ipq-cmn-pll: Add PPE " Luo Jie
2026-09-03 13:03 ` Abel Vesa
2026-08-14 12:48 ` [PATCH v3 07/12] clk: qcom: ipq-cmn-pll: Add PON reference " Luo Jie
2026-09-03 11:57 ` Konrad Dybcio
2026-09-03 15:21 ` Jie Luo
2026-09-03 13:27 ` Abel Vesa
2026-08-14 12:48 ` [PATCH v3 08/12] clk: qcom: ipq-cmn-pll: Add EPHY-RAW " Luo Jie
2026-09-03 13:08 ` Abel Vesa
2026-09-03 15:31 ` Jie Luo
2026-08-14 12:48 ` [PATCH v3 09/12] clk: qcom: ipq-cmn-pll: Add clock gate support for fixed clocks Luo Jie
2026-09-03 11:59 ` Konrad Dybcio
2026-09-03 15:36 ` Jie Luo
2026-08-14 12:48 ` [PATCH v3 10/12] clk: qcom: ipq-cmn-pll: Add all output clocks for IPQ5210 Luo Jie
2026-08-14 12:48 ` [PATCH v3 11/12] arm64: dts: qcom: ipq5210: Add CMN PLL device node Luo Jie
2026-08-14 13:01 ` sashiko-bot
2026-08-14 12:48 ` [PATCH v3 12/12] arm64: dts: qcom: Update IPQ5210 xo_board to use fixed factor clock Luo Jie
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=d93ad481-b574-449e-97aa-f5d1828f583b@oss.qualcomm.com \
--to=jie.luo@oss.qualcomm.com \
--cc=abel.vesa@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=bmasney@redhat.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=quic_kkumarcs@quicinc.com \
--cc=quic_leiwei@quicinc.com \
--cc=quic_linchen@quicinc.com \
--cc=quic_suruchia@quicinc.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox