* [PATCH v8 1/4] dt-bindings: clock: Add SM8550 TCSR CC clocks
2023-01-04 9:34 [PATCH v8 0/4] clk: qcom: Add support for SM8550 Abel Vesa
@ 2023-01-04 9:34 ` Abel Vesa
2023-01-04 9:34 ` [PATCH v8 2/4] dt-bindings: clock: Add RPMHCC for SM8550 Abel Vesa
` (3 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Abel Vesa @ 2023-01-04 9:34 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski
Cc: Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk,
Krzysztof Kozlowski
Add bindings documentation for clock TCSR driver on SM8550.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
.../bindings/clock/qcom,sm8550-tcsr.yaml | 55 +++++++++++++++++++
include/dt-bindings/clock/qcom,sm8550-tcsr.h | 18 ++++++
2 files changed, 73 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml
create mode 100644 include/dt-bindings/clock/qcom,sm8550-tcsr.h
diff --git a/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml b/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml
new file mode 100644
index 000000000000..1bf1a41fd89c
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/qcom,sm8550-tcsr.yaml
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,sm8550-tcsr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm TCSR Clock Controller on SM8550
+
+maintainers:
+ - Bjorn Andersson <andersson@kernel.org>
+
+description: |
+ Qualcomm TCSR clock control module provides the clocks, resets and
+ power domains on SM8550
+
+ See also:: include/dt-bindings/clock/qcom,sm8550-tcsr.h
+
+properties:
+ compatible:
+ items:
+ - const: qcom,sm8550-tcsr
+ - const: syscon
+
+ clocks:
+ items:
+ - description: TCXO pad clock
+
+ reg:
+ maxItems: 1
+
+ '#clock-cells':
+ const: 1
+
+ '#reset-cells':
+ const: 1
+
+required:
+ - compatible
+ - clocks
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,rpmh.h>
+
+ clock-controller@1fc0000 {
+ compatible = "qcom,sm8550-tcsr", "syscon";
+ reg = <0x1fc0000 0x30000>;
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
+
+...
diff --git a/include/dt-bindings/clock/qcom,sm8550-tcsr.h b/include/dt-bindings/clock/qcom,sm8550-tcsr.h
new file mode 100644
index 000000000000..091cb76f953a
--- /dev/null
+++ b/include/dt-bindings/clock/qcom,sm8550-tcsr.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2022, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_TCSR_CC_SM8550_H
+#define _DT_BINDINGS_CLK_QCOM_TCSR_CC_SM8550_H
+
+/* TCSR CC clocks */
+#define TCSR_PCIE_0_CLKREF_EN 0
+#define TCSR_PCIE_1_CLKREF_EN 1
+#define TCSR_UFS_CLKREF_EN 2
+#define TCSR_UFS_PAD_CLKREF_EN 3
+#define TCSR_USB2_CLKREF_EN 4
+#define TCSR_USB3_CLKREF_EN 5
+
+#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v8 2/4] dt-bindings: clock: Add RPMHCC for SM8550
2023-01-04 9:34 [PATCH v8 0/4] clk: qcom: Add support for SM8550 Abel Vesa
2023-01-04 9:34 ` [PATCH v8 1/4] dt-bindings: clock: Add SM8550 TCSR CC clocks Abel Vesa
@ 2023-01-04 9:34 ` Abel Vesa
2023-01-04 9:34 ` [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks Abel Vesa
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Abel Vesa @ 2023-01-04 9:34 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski
Cc: Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk,
Krzysztof Kozlowski
Add bindings and update documentation for clock rpmh driver on SM8550.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml b/Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml
index cf25ba0419e2..6d7d699aaff9 100644
--- a/Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml
@@ -31,6 +31,7 @@ properties:
- qcom,sm8250-rpmh-clk
- qcom,sm8350-rpmh-clk
- qcom,sm8450-rpmh-clk
+ - qcom,sm8550-rpmh-clk
clocks:
maxItems: 1
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks
2023-01-04 9:34 [PATCH v8 0/4] clk: qcom: Add support for SM8550 Abel Vesa
2023-01-04 9:34 ` [PATCH v8 1/4] dt-bindings: clock: Add SM8550 TCSR CC clocks Abel Vesa
2023-01-04 9:34 ` [PATCH v8 2/4] dt-bindings: clock: Add RPMHCC for SM8550 Abel Vesa
@ 2023-01-04 9:34 ` Abel Vesa
2023-01-04 10:46 ` Dmitry Baryshkov
2023-01-04 9:34 ` [PATCH v8 4/4] clk: qcom: Add TCSR clock driver for SM8550 Abel Vesa
2023-01-06 17:12 ` [PATCH v8 0/4] clk: qcom: Add support " Bjorn Andersson
4 siblings, 1 reply; 10+ messages in thread
From: Abel Vesa @ 2023-01-04 9:34 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski
Cc: Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk
Adds the RPMH clocks present in SM8550 SoC.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
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
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks
2023-01-04 9:34 ` [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks Abel Vesa
@ 2023-01-04 10:46 ` Dmitry Baryshkov
2023-01-04 12:45 ` Abel Vesa
0 siblings, 1 reply; 10+ messages in thread
From: Dmitry Baryshkov @ 2023-01-04 10:46 UTC (permalink / raw)
To: Abel Vesa, Andy Gross, Bjorn Andersson, Konrad Dybcio,
Mike Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski
Cc: Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk
On 04/01/2023 11:34, Abel Vesa wrote:
> Adds the RPMH clocks present in SM8550 SoC.
>
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
> 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
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks
2023-01-04 10:46 ` Dmitry Baryshkov
@ 2023-01-04 12:45 ` Abel Vesa
2023-01-04 14:40 ` Dmitry Baryshkov
2023-01-06 16:56 ` Bjorn Andersson
0 siblings, 2 replies; 10+ messages in thread
From: Abel Vesa @ 2023-01-04 12:45 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Andy Gross, Bjorn Andersson, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk
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 <abel.vesa@linaro.org>
> > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> > ---
> > 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
>
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks
2023-01-04 12:45 ` Abel Vesa
@ 2023-01-04 14:40 ` Dmitry Baryshkov
2023-01-06 16:56 ` Bjorn Andersson
1 sibling, 0 replies; 10+ messages in thread
From: Dmitry Baryshkov @ 2023-01-04 14:40 UTC (permalink / raw)
To: Abel Vesa
Cc: Andy Gross, Bjorn Andersson, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk
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 <abel.vesa@linaro.org>
>>> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
>>> ---
>>> 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
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks
2023-01-04 12:45 ` Abel Vesa
2023-01-04 14:40 ` Dmitry Baryshkov
@ 2023-01-06 16:56 ` Bjorn Andersson
1 sibling, 0 replies; 10+ messages in thread
From: Bjorn Andersson @ 2023-01-06 16:56 UTC (permalink / raw)
To: Abel Vesa
Cc: Dmitry Baryshkov, Andy Gross, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Rob Herring, Krzysztof Kozlowski,
Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk
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 <abel.vesa@linaro.org>
> > > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> > > ---
> > > 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
> >
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v8 4/4] clk: qcom: Add TCSR clock driver for SM8550
2023-01-04 9:34 [PATCH v8 0/4] clk: qcom: Add support for SM8550 Abel Vesa
` (2 preceding siblings ...)
2023-01-04 9:34 ` [PATCH v8 3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks Abel Vesa
@ 2023-01-04 9:34 ` Abel Vesa
2023-01-06 17:12 ` [PATCH v8 0/4] clk: qcom: Add support " Bjorn Andersson
4 siblings, 0 replies; 10+ messages in thread
From: Abel Vesa @ 2023-01-04 9:34 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Mike Turquette,
Stephen Boyd, Dmitry Baryshkov, Rob Herring, Krzysztof Kozlowski
Cc: Linux Kernel Mailing List, devicetree, linux-arm-msm, linux-clk
The TCSR clock controller found on SM8550 provides refclks
for PCIE, USB and UFS. Add clock driver for it.
This patch is based on initial code downstream.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
drivers/clk/qcom/Kconfig | 7 ++
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/tcsrcc-sm8550.c | 192 +++++++++++++++++++++++++++++++
3 files changed, 200 insertions(+)
create mode 100644 drivers/clk/qcom/tcsrcc-sm8550.c
diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
index 70d43f0a8919..b9f5505d68f0 100644
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -797,6 +797,13 @@ config SM_GPUCC_8350
Say Y if you want to support graphics controller devices and
functionality such as 3D graphics.
+config SM_TCSRCC_8550
+ tristate "SM8550 TCSR Clock Controller"
+ select QCOM_GDSC
+ help
+ Support for the TCSR clock controller on SM8550 devices.
+ Say Y if you want to use peripheral devices such as SD/UFS.
+
config SM_VIDEOCC_8150
tristate "SM8150 Video Clock Controller"
select SM_GCC_8150
diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
index f18c446a97ea..f5ce429c724c 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -112,6 +112,7 @@ obj-$(CONFIG_SM_GPUCC_6350) += gpucc-sm6350.o
obj-$(CONFIG_SM_GPUCC_8150) += gpucc-sm8150.o
obj-$(CONFIG_SM_GPUCC_8250) += gpucc-sm8250.o
obj-$(CONFIG_SM_GPUCC_8350) += gpucc-sm8350.o
+obj-$(CONFIG_SM_TCSRCC_8550) += tcsrcc-sm8550.o
obj-$(CONFIG_SM_VIDEOCC_8150) += videocc-sm8150.o
obj-$(CONFIG_SM_VIDEOCC_8250) += videocc-sm8250.o
obj-$(CONFIG_SPMI_PMIC_CLKDIV) += clk-spmi-pmic-div.o
diff --git a/drivers/clk/qcom/tcsrcc-sm8550.c b/drivers/clk/qcom/tcsrcc-sm8550.c
new file mode 100644
index 000000000000..2c67ee71c196
--- /dev/null
+++ b/drivers/clk/qcom/tcsrcc-sm8550.c
@@ -0,0 +1,192 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#include <linux/clk-provider.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/regmap.h>
+
+#include <dt-bindings/clock/qcom,sm8550-tcsr.h>
+
+#include "clk-alpha-pll.h"
+#include "clk-branch.h"
+#include "clk-pll.h"
+#include "clk-rcg.h"
+#include "clk-regmap.h"
+#include "clk-regmap-divider.h"
+#include "clk-regmap-mux.h"
+#include "common.h"
+#include "reset.h"
+
+enum {
+ DT_BI_TCXO_PAD,
+};
+
+static struct clk_branch tcsr_pcie_0_clkref_en = {
+ .halt_reg = 0x15100,
+ .halt_check = BRANCH_HALT_SKIP,
+ .clkr = {
+ .enable_reg = 0x15100,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "tcsr_pcie_0_clkref_en",
+ .parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO_PAD,
+ },
+ .num_parents = 1,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch tcsr_pcie_1_clkref_en = {
+ .halt_reg = 0x15114,
+ .halt_check = BRANCH_HALT_SKIP,
+ .clkr = {
+ .enable_reg = 0x15114,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "tcsr_pcie_1_clkref_en",
+ .parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO_PAD,
+ },
+ .num_parents = 1,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch tcsr_ufs_clkref_en = {
+ .halt_reg = 0x15110,
+ .halt_check = BRANCH_HALT_SKIP,
+ .clkr = {
+ .enable_reg = 0x15110,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "tcsr_ufs_clkref_en",
+ .parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO_PAD,
+ },
+ .num_parents = 1,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch tcsr_ufs_pad_clkref_en = {
+ .halt_reg = 0x15104,
+ .halt_check = BRANCH_HALT_SKIP,
+ .clkr = {
+ .enable_reg = 0x15104,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "tcsr_ufs_pad_clkref_en",
+ .parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO_PAD,
+ },
+ .num_parents = 1,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch tcsr_usb2_clkref_en = {
+ .halt_reg = 0x15118,
+ .halt_check = BRANCH_HALT_SKIP,
+ .clkr = {
+ .enable_reg = 0x15118,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "tcsr_usb2_clkref_en",
+ .parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO_PAD,
+ },
+ .num_parents = 1,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_branch tcsr_usb3_clkref_en = {
+ .halt_reg = 0x15108,
+ .halt_check = BRANCH_HALT_SKIP,
+ .clkr = {
+ .enable_reg = 0x15108,
+ .enable_mask = BIT(0),
+ .hw.init = &(struct clk_init_data){
+ .name = "tcsr_usb3_clkref_en",
+ .parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO_PAD,
+ },
+ .num_parents = 1,
+ .ops = &clk_branch2_ops,
+ },
+ },
+};
+
+static struct clk_regmap *tcsr_cc_sm8550_clocks[] = {
+ [TCSR_PCIE_0_CLKREF_EN] = &tcsr_pcie_0_clkref_en.clkr,
+ [TCSR_PCIE_1_CLKREF_EN] = &tcsr_pcie_1_clkref_en.clkr,
+ [TCSR_UFS_CLKREF_EN] = &tcsr_ufs_clkref_en.clkr,
+ [TCSR_UFS_PAD_CLKREF_EN] = &tcsr_ufs_pad_clkref_en.clkr,
+ [TCSR_USB2_CLKREF_EN] = &tcsr_usb2_clkref_en.clkr,
+ [TCSR_USB3_CLKREF_EN] = &tcsr_usb3_clkref_en.clkr,
+};
+
+static const struct regmap_config tcsr_cc_sm8550_regmap_config = {
+ .reg_bits = 32,
+ .reg_stride = 4,
+ .val_bits = 32,
+ .max_register = 0x2f000,
+ .fast_io = true,
+};
+
+static const struct qcom_cc_desc tcsr_cc_sm8550_desc = {
+ .config = &tcsr_cc_sm8550_regmap_config,
+ .clks = tcsr_cc_sm8550_clocks,
+ .num_clks = ARRAY_SIZE(tcsr_cc_sm8550_clocks),
+};
+
+static const struct of_device_id tcsr_cc_sm8550_match_table[] = {
+ { .compatible = "qcom,sm8550-tcsr" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, tcsr_cc_sm8550_match_table);
+
+static int tcsr_cc_sm8550_probe(struct platform_device *pdev)
+{
+ struct regmap *regmap;
+
+ regmap = qcom_cc_map(pdev, &tcsr_cc_sm8550_desc);
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ return qcom_cc_really_probe(pdev, &tcsr_cc_sm8550_desc, regmap);
+}
+
+static struct platform_driver tcsr_cc_sm8550_driver = {
+ .probe = tcsr_cc_sm8550_probe,
+ .driver = {
+ .name = "tcsr_cc-sm8550",
+ .of_match_table = tcsr_cc_sm8550_match_table,
+ },
+};
+
+static int __init tcsr_cc_sm8550_init(void)
+{
+ return platform_driver_register(&tcsr_cc_sm8550_driver);
+}
+subsys_initcall(tcsr_cc_sm8550_init);
+
+static void __exit tcsr_cc_sm8550_exit(void)
+{
+ platform_driver_unregister(&tcsr_cc_sm8550_driver);
+}
+module_exit(tcsr_cc_sm8550_exit);
+
+MODULE_DESCRIPTION("QTI TCSRCC SM8550 Driver");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v8 0/4] clk: qcom: Add support for SM8550
2023-01-04 9:34 [PATCH v8 0/4] clk: qcom: Add support for SM8550 Abel Vesa
` (3 preceding siblings ...)
2023-01-04 9:34 ` [PATCH v8 4/4] clk: qcom: Add TCSR clock driver for SM8550 Abel Vesa
@ 2023-01-06 17:12 ` Bjorn Andersson
4 siblings, 0 replies; 10+ messages in thread
From: Bjorn Andersson @ 2023-01-06 17:12 UTC (permalink / raw)
To: robh+dt, sboyd, mturquette, krzysztof.kozlowski+dt, abel.vesa,
konrad.dybcio, agross, dmitry.baryshkov
Cc: linux-kernel, linux-arm-msm, devicetree, linux-clk
On Wed, 4 Jan 2023 11:34:46 +0200, Abel Vesa wrote:
> This patchset adds more clocks support for the Qualcomm SM8550 SoC,
> It adds the TCSR clock controller driver and the rpmh clocks.
>
> Changes since v7:
> * Replaced RPMH_CXO_PAD_CLK with RPMH_CXO_CLK in the TCSR CC binding
> schema example
>
> [...]
Applied, thanks!
[1/4] dt-bindings: clock: Add SM8550 TCSR CC clocks
commit: d8aa375bd70681b76c6bd5fe93bab6011e16a0fb
[2/4] dt-bindings: clock: Add RPMHCC for SM8550
commit: ffcdd6907e9a1fdccd9350147d0f59cafb87e768
[3/4] clk: qcom: rpmh: Add support for SM8550 rpmh clocks
commit: 478a573be730dd704ab6acee43f40d91fe8c808a
[4/4] clk: qcom: Add TCSR clock driver for SM8550
commit: e9a7b78b20889d2325bef4a1eb39c1088858ab81
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 10+ messages in thread