2023-01-04 09:46:37

by Abel Vesa

[permalink] [raw]
Subject: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks

Adds the RPMH clocks present in SM8550 SoC.

Signed-off-by: Abel Vesa <[email protected]>
Reviewed-by: Konrad Dybcio <[email protected]>
---
drivers/clk/qcom/clk-rpmh.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)

diff --git a/drivers/clk/qcom/clk-rpmh.c b/drivers/clk/qcom/clk-rpmh.c
index 586a810c682c..7db5a53d73f0 100644
--- a/drivers/clk/qcom/clk-rpmh.c
+++ b/drivers/clk/qcom/clk-rpmh.c
@@ -366,6 +366,16 @@ DEFINE_CLK_RPMH_VRM(rf_clk2, _d, "rfclkd2", 1);
DEFINE_CLK_RPMH_VRM(rf_clk3, _d, "rfclkd3", 1);
DEFINE_CLK_RPMH_VRM(rf_clk4, _d, "rfclkd4", 1);

+DEFINE_CLK_RPMH_VRM(clk1, _a1, "clka1", 1);
+DEFINE_CLK_RPMH_VRM(clk2, _a1, "clka2", 1);
+DEFINE_CLK_RPMH_VRM(clk3, _a1, "clka3", 1);
+DEFINE_CLK_RPMH_VRM(clk4, _a1, "clka4", 1);
+DEFINE_CLK_RPMH_VRM(clk5, _a1, "clka5", 1);
+
+DEFINE_CLK_RPMH_VRM(clk6, _a2, "clka6", 2);
+DEFINE_CLK_RPMH_VRM(clk7, _a2, "clka7", 2);
+DEFINE_CLK_RPMH_VRM(clk8, _a2, "clka8", 2);
+
DEFINE_CLK_RPMH_VRM(div_clk1, _div2, "divclka1", 2);

DEFINE_CLK_RPMH_BCM(ce, "CE0");
@@ -576,6 +586,31 @@ static const struct clk_rpmh_desc clk_rpmh_sm8450 = {
.num_clks = ARRAY_SIZE(sm8450_rpmh_clocks),
};

+static struct clk_hw *sm8550_rpmh_clocks[] = {
+ [RPMH_CXO_CLK] = &clk_rpmh_bi_tcxo_div2.hw,
+ [RPMH_CXO_CLK_A] = &clk_rpmh_bi_tcxo_div2_ao.hw,
+ [RPMH_LN_BB_CLK1] = &clk_rpmh_clk6_a2.hw,
+ [RPMH_LN_BB_CLK1_A] = &clk_rpmh_clk6_a2_ao.hw,
+ [RPMH_LN_BB_CLK2] = &clk_rpmh_clk7_a2.hw,
+ [RPMH_LN_BB_CLK2_A] = &clk_rpmh_clk7_a2_ao.hw,
+ [RPMH_LN_BB_CLK3] = &clk_rpmh_clk8_a2.hw,
+ [RPMH_LN_BB_CLK3_A] = &clk_rpmh_clk8_a2_ao.hw,
+ [RPMH_RF_CLK1] = &clk_rpmh_clk1_a1.hw,
+ [RPMH_RF_CLK1_A] = &clk_rpmh_clk1_a1_ao.hw,
+ [RPMH_RF_CLK2] = &clk_rpmh_clk2_a1.hw,
+ [RPMH_RF_CLK2_A] = &clk_rpmh_clk2_a1_ao.hw,
+ [RPMH_RF_CLK3] = &clk_rpmh_clk3_a1.hw,
+ [RPMH_RF_CLK3_A] = &clk_rpmh_clk3_a1_ao.hw,
+ [RPMH_RF_CLK4] = &clk_rpmh_clk4_a1.hw,
+ [RPMH_RF_CLK4_A] = &clk_rpmh_clk4_a1_ao.hw,
+ [RPMH_IPA_CLK] = &clk_rpmh_ipa.hw,
+};
+
+static const struct clk_rpmh_desc clk_rpmh_sm8550 = {
+ .clks = sm8550_rpmh_clocks,
+ .num_clks = ARRAY_SIZE(sm8550_rpmh_clocks),
+};
+
static struct clk_hw *sc7280_rpmh_clocks[] = {
[RPMH_CXO_CLK] = &clk_rpmh_bi_tcxo_div4.hw,
[RPMH_CXO_CLK_A] = &clk_rpmh_bi_tcxo_div4_ao.hw,
@@ -742,6 +777,7 @@ static const struct of_device_id clk_rpmh_match_table[] = {
{ .compatible = "qcom,sm8250-rpmh-clk", .data = &clk_rpmh_sm8250},
{ .compatible = "qcom,sm8350-rpmh-clk", .data = &clk_rpmh_sm8350},
{ .compatible = "qcom,sm8450-rpmh-clk", .data = &clk_rpmh_sm8450},
+ { .compatible = "qcom,sm8550-rpmh-clk", .data = &clk_rpmh_sm8550},
{ .compatible = "qcom,sc7280-rpmh-clk", .data = &clk_rpmh_sc7280},
{ }
};
--
2.34.1


2023-01-04 11:22:41

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks

On 04/01/2023 11:34, Abel Vesa wrote:
> Adds the RPMH clocks present in SM8550 SoC.
>
> Signed-off-by: Abel Vesa <[email protected]>
> Reviewed-by: Konrad Dybcio <[email protected]>
> ---
> drivers/clk/qcom/clk-rpmh.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)

I think the plan was to have the _PAD clock as a child node of the
rpmcc. Is it still the planned implementation?

--
With best wishes
Dmitry

2023-01-04 13:01:33

by Abel Vesa

[permalink] [raw]
Subject: Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks

On 23-01-04 12:46:55, Dmitry Baryshkov wrote:
> On 04/01/2023 11:34, Abel Vesa wrote:
> > Adds the RPMH clocks present in SM8550 SoC.
> >
> > Signed-off-by: Abel Vesa <[email protected]>
> > Reviewed-by: Konrad Dybcio <[email protected]>
> > ---
> > drivers/clk/qcom/clk-rpmh.c | 36 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 36 insertions(+)
>
> I think the plan was to have the _PAD clock as a child node of the rpmcc. Is
> it still the planned implementation?

Yes. Here is how the dts rpmhcc node will look like:

rpmhcc: clock-controller {
compatible = "qcom,sm8550-rpmh-clk";
#clock-cells = <1>;
clock-names = "xo";
clocks = <&xo_board>;

bi_tcxo_div2: bi-tcxo-div2-clk {
#clock-cells = <0>;
compatible = "fixed-factor-clock";
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-mult = <1>;
clock-div = <2>;
};

bi_tcxo_ao_div2: bi-tcxo-div2-ao-clk {
#clock-cells = <0>;
compatible = "fixed-factor-clock";
clocks = <&rpmhcc RPMH_CXO_CLK_A>;
clock-mult = <1>;
clock-div = <2>;
};
};

The clock nodes will be probed on of_clk_init.

>
> --
> With best wishes
> Dmitry
>

2023-01-04 15:01:40

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks

On 04/01/2023 14:45, Abel Vesa wrote:
> On 23-01-04 12:46:55, Dmitry Baryshkov wrote:
>> On 04/01/2023 11:34, Abel Vesa wrote:
>>> Adds the RPMH clocks present in SM8550 SoC.
>>>
>>> Signed-off-by: Abel Vesa <[email protected]>
>>> Reviewed-by: Konrad Dybcio <[email protected]>
>>> ---
>>> drivers/clk/qcom/clk-rpmh.c | 36 ++++++++++++++++++++++++++++++++++++
>>> 1 file changed, 36 insertions(+)
>>
>> I think the plan was to have the _PAD clock as a child node of the rpmcc. Is
>> it still the planned implementation?
>
> Yes. Here is how the dts rpmhcc node will look like:
>
> rpmhcc: clock-controller {
> compatible = "qcom,sm8550-rpmh-clk";
> #clock-cells = <1>;
> clock-names = "xo";
> clocks = <&xo_board>;
>
> bi_tcxo_div2: bi-tcxo-div2-clk {
> #clock-cells = <0>;
> compatible = "fixed-factor-clock";
> clocks = <&rpmhcc RPMH_CXO_CLK>;
> clock-mult = <1>;
> clock-div = <2>;
> };
>
> bi_tcxo_ao_div2: bi-tcxo-div2-ao-clk {
> #clock-cells = <0>;
> compatible = "fixed-factor-clock";
> clocks = <&rpmhcc RPMH_CXO_CLK_A>;
> clock-mult = <1>;
> clock-div = <2>;
> };
> };

Does this snippet pass bindings validation?

>
> The clock nodes will be probed on of_clk_init.

Ah, I see. of_clk_init() will initialize clocks even if the parent
device is not fully probed. Thank you for the explanation!


--
With best wishes
Dmitry

2023-01-06 17:17:12

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks

On Wed, Jan 04, 2023 at 02:45:04PM +0200, Abel Vesa wrote:
> On 23-01-04 12:46:55, Dmitry Baryshkov wrote:
> > On 04/01/2023 11:34, Abel Vesa wrote:
> > > Adds the RPMH clocks present in SM8550 SoC.
> > >
> > > Signed-off-by: Abel Vesa <[email protected]>
> > > Reviewed-by: Konrad Dybcio <[email protected]>
> > > ---
> > > drivers/clk/qcom/clk-rpmh.c | 36 ++++++++++++++++++++++++++++++++++++
> > > 1 file changed, 36 insertions(+)
> >
> > I think the plan was to have the _PAD clock as a child node of the rpmcc. Is
> > it still the planned implementation?
>
> Yes. Here is how the dts rpmhcc node will look like:
>
> rpmhcc: clock-controller {
> compatible = "qcom,sm8550-rpmh-clk";
> #clock-cells = <1>;
> clock-names = "xo";
> clocks = <&xo_board>;
>
> bi_tcxo_div2: bi-tcxo-div2-clk {

Considering that the remainder of the clock exposed (except ipa clock)
by the rpmhcc provider represent clock signals coming out of the pmic;
and that this divider is not located in the aoss (rsc), I don't think
these nodes should live here.

/clocks seems perfectly fine to me.

Regards,
Bjorn

> #clock-cells = <0>;
> compatible = "fixed-factor-clock";
> clocks = <&rpmhcc RPMH_CXO_CLK>;
> clock-mult = <1>;
> clock-div = <2>;
> };
>
> bi_tcxo_ao_div2: bi-tcxo-div2-ao-clk {
> #clock-cells = <0>;
> compatible = "fixed-factor-clock";
> clocks = <&rpmhcc RPMH_CXO_CLK_A>;
> clock-mult = <1>;
> clock-div = <2>;
> };
> };
>
> The clock nodes will be probed on of_clk_init.
>
> >
> > --
> > With best wishes
> > Dmitry
> >