* [PATCH v2 1/4] dt-bindings: mailbox: qcom: correct the list of platforms using clocks
2023-01-13 9:07 [PATCH v2 0/4] clk: qcom: msm8996: add APCS clock driver Dmitry Baryshkov
@ 2023-01-13 9:07 ` Dmitry Baryshkov
2023-01-17 11:34 ` Krzysztof Kozlowski
2023-01-13 9:07 ` [PATCH v2 2/4] dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example Dmitry Baryshkov
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Dmitry Baryshkov @ 2023-01-13 9:07 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Stephen Boyd,
Michael Turquette, Rob Herring, Krzysztof Kozlowski, Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
Only three platforms require `pll' and `aux' clocks: msm8916, msm8939
and qcs404. Correct the list of platforms in the corresponding clause.
Fixes: 0d17014e9189 ("dt-bindings: mailbox: Add binding for SDX55 APCS")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
.../bindings/mailbox/qcom,apcs-kpss-global.yaml | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
index 943f9472ae10..b8a44ef0540f 100644
--- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
+++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
@@ -71,15 +71,8 @@ allOf:
compatible:
enum:
- qcom,msm8916-apcs-kpss-global
- - qcom,msm8994-apcs-kpss-global
- - qcom,msm8996-apcs-hmss-global
- - qcom,msm8998-apcs-hmss-global
+ - qcom,msm8939-apcs-kpss-global
- qcom,qcs404-apcs-apps-global
- - qcom,sc7180-apss-shared
- - qcom,sdm660-apcs-hmss-global
- - qcom,sdm845-apss-shared
- - qcom,sm6125-apcs-hmss-global
- - qcom,sm8150-apss-shared
then:
properties:
clocks:
--
2.39.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v2 1/4] dt-bindings: mailbox: qcom: correct the list of platforms using clocks
2023-01-13 9:07 ` [PATCH v2 1/4] dt-bindings: mailbox: qcom: correct the list of platforms using clocks Dmitry Baryshkov
@ 2023-01-17 11:34 ` Krzysztof Kozlowski
2023-01-17 21:58 ` Dmitry Baryshkov
0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2023-01-17 11:34 UTC (permalink / raw)
To: Dmitry Baryshkov, Andy Gross, Bjorn Andersson, Konrad Dybcio,
Stephen Boyd, Michael Turquette, Rob Herring, Krzysztof Kozlowski,
Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
On 13/01/2023 10:07, Dmitry Baryshkov wrote:
> Only three platforms require `pll' and `aux' clocks: msm8916, msm8939
> and qcs404. Correct the list of platforms in the corresponding clause.
>
> Fixes: 0d17014e9189 ("dt-bindings: mailbox: Add binding for SDX55 APCS")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
> .../bindings/mailbox/qcom,apcs-kpss-global.yaml | 9 +--------
> 1 file changed, 1 insertion(+), 8 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
> index 943f9472ae10..b8a44ef0540f 100644
> --- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
> +++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
> @@ -71,15 +71,8 @@ allOf:
> compatible:
> enum:
> - qcom,msm8916-apcs-kpss-global
> - - qcom,msm8994-apcs-kpss-global
> - - qcom,msm8996-apcs-hmss-global
> - - qcom,msm8998-apcs-hmss-global
> + - qcom,msm8939-apcs-kpss-global
> - qcom,qcs404-apcs-apps-global
> - - qcom,sc7180-apss-shared
> - - qcom,sdm660-apcs-hmss-global
> - - qcom,sdm845-apss-shared
> - - qcom,sm6125-apcs-hmss-global
> - - qcom,sm8150-apss-shared
And what in other case? Any clocks? They should be moved to their own if
forbidding the clocks and clock-names.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v2 1/4] dt-bindings: mailbox: qcom: correct the list of platforms using clocks
2023-01-17 11:34 ` Krzysztof Kozlowski
@ 2023-01-17 21:58 ` Dmitry Baryshkov
0 siblings, 0 replies; 8+ messages in thread
From: Dmitry Baryshkov @ 2023-01-17 21:58 UTC (permalink / raw)
To: Krzysztof Kozlowski, Andy Gross, Bjorn Andersson, Konrad Dybcio,
Stephen Boyd, Michael Turquette, Rob Herring, Krzysztof Kozlowski,
Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
On 17/01/2023 13:34, Krzysztof Kozlowski wrote:
> On 13/01/2023 10:07, Dmitry Baryshkov wrote:
>> Only three platforms require `pll' and `aux' clocks: msm8916, msm8939
>> and qcs404. Correct the list of platforms in the corresponding clause.
>>
>> Fixes: 0d17014e9189 ("dt-bindings: mailbox: Add binding for SDX55 APCS")
>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> ---
>> .../bindings/mailbox/qcom,apcs-kpss-global.yaml | 9 +--------
>> 1 file changed, 1 insertion(+), 8 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
>> index 943f9472ae10..b8a44ef0540f 100644
>> --- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
>> +++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
>> @@ -71,15 +71,8 @@ allOf:
>> compatible:
>> enum:
>> - qcom,msm8916-apcs-kpss-global
>> - - qcom,msm8994-apcs-kpss-global
>> - - qcom,msm8996-apcs-hmss-global
>> - - qcom,msm8998-apcs-hmss-global
>> + - qcom,msm8939-apcs-kpss-global
>> - qcom,qcs404-apcs-apps-global
>> - - qcom,sc7180-apss-shared
>> - - qcom,sdm660-apcs-hmss-global
>> - - qcom,sdm845-apss-shared
>> - - qcom,sm6125-apcs-hmss-global
>> - - qcom,sm8150-apss-shared
>
> And what in other case? Any clocks? They should be moved to their own if
> forbidding the clocks and clock-names.
Ack
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/4] dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example
2023-01-13 9:07 [PATCH v2 0/4] clk: qcom: msm8996: add APCS clock driver Dmitry Baryshkov
2023-01-13 9:07 ` [PATCH v2 1/4] dt-bindings: mailbox: qcom: correct the list of platforms using clocks Dmitry Baryshkov
@ 2023-01-13 9:07 ` Dmitry Baryshkov
2023-01-17 11:34 ` Krzysztof Kozlowski
2023-01-13 9:07 ` [PATCH v2 3/4] mailbox: qcom-apcs-ipc: enable APCS clock device for MSM8996 Dmitry Baryshkov
2023-01-13 9:07 ` [PATCH v2 4/4] clk: qcom: add the driver for the MSM8996 APCS clocks Dmitry Baryshkov
3 siblings, 1 reply; 8+ messages in thread
From: Dmitry Baryshkov @ 2023-01-13 9:07 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Stephen Boyd,
Michael Turquette, Rob Herring, Krzysztof Kozlowski, Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
Add the #clock-cells property to the MSM8996 example, as the APCS block
is going to provide the `sys_apcs_aux' clock to the consumers.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
.../devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
index b8a44ef0540f..5e7c83345774 100644
--- a/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
+++ b/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
@@ -141,6 +141,7 @@ examples:
reg = <0x9820000 0x1000>;
#mbox-cells = <1>;
+ #clock-cells = <0>;
};
rpm-glink {
--
2.39.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v2 2/4] dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example
2023-01-13 9:07 ` [PATCH v2 2/4] dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example Dmitry Baryshkov
@ 2023-01-17 11:34 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2023-01-17 11:34 UTC (permalink / raw)
To: Dmitry Baryshkov, Andy Gross, Bjorn Andersson, Konrad Dybcio,
Stephen Boyd, Michael Turquette, Rob Herring, Krzysztof Kozlowski,
Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
On 13/01/2023 10:07, Dmitry Baryshkov wrote:
> Add the #clock-cells property to the MSM8996 example, as the APCS block
> is going to provide the `sys_apcs_aux' clock to the consumers.
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
> .../devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml | 1 +
> 1 file changed, 1 insertion(+)
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/4] mailbox: qcom-apcs-ipc: enable APCS clock device for MSM8996
2023-01-13 9:07 [PATCH v2 0/4] clk: qcom: msm8996: add APCS clock driver Dmitry Baryshkov
2023-01-13 9:07 ` [PATCH v2 1/4] dt-bindings: mailbox: qcom: correct the list of platforms using clocks Dmitry Baryshkov
2023-01-13 9:07 ` [PATCH v2 2/4] dt-bindings: mailbox: qcom: add #clock-cells to msm8996 example Dmitry Baryshkov
@ 2023-01-13 9:07 ` Dmitry Baryshkov
2023-01-13 9:07 ` [PATCH v2 4/4] clk: qcom: add the driver for the MSM8996 APCS clocks Dmitry Baryshkov
3 siblings, 0 replies; 8+ messages in thread
From: Dmitry Baryshkov @ 2023-01-13 9:07 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Stephen Boyd,
Michael Turquette, Rob Herring, Krzysztof Kozlowski, Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
MSM8996 also has the clock-related part of the APCS mailbox device.
Follow the usual pattern and create a child device to handle these
clocks.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
drivers/mailbox/qcom-apcs-ipc-mailbox.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mailbox/qcom-apcs-ipc-mailbox.c b/drivers/mailbox/qcom-apcs-ipc-mailbox.c
index 0e9f9cba8668..bd61dacb44ba 100644
--- a/drivers/mailbox/qcom-apcs-ipc-mailbox.c
+++ b/drivers/mailbox/qcom-apcs-ipc-mailbox.c
@@ -42,7 +42,7 @@ static const struct qcom_apcs_ipc_data msm8994_apcs_data = {
};
static const struct qcom_apcs_ipc_data msm8996_apcs_data = {
- .offset = 16, .clk_name = NULL
+ .offset = 16, .clk_name = "qcom-apcs-msm8996-clk"
};
static const struct qcom_apcs_ipc_data apps_shared_apcs_data = {
--
2.39.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 4/4] clk: qcom: add the driver for the MSM8996 APCS clocks
2023-01-13 9:07 [PATCH v2 0/4] clk: qcom: msm8996: add APCS clock driver Dmitry Baryshkov
` (2 preceding siblings ...)
2023-01-13 9:07 ` [PATCH v2 3/4] mailbox: qcom-apcs-ipc: enable APCS clock device for MSM8996 Dmitry Baryshkov
@ 2023-01-13 9:07 ` Dmitry Baryshkov
3 siblings, 0 replies; 8+ messages in thread
From: Dmitry Baryshkov @ 2023-01-13 9:07 UTC (permalink / raw)
To: Andy Gross, Bjorn Andersson, Konrad Dybcio, Stephen Boyd,
Michael Turquette, Rob Herring, Krzysztof Kozlowski, Taniya Das
Cc: linux-arm-msm, linux-clk, devicetree
Add a simple driver handling the APCS clocks on MSM8996. For now it
supports just a single aux clock, linking GPLL0 to CPU and CBF clocks.
Note, there is little sense in registering sys_apcs_aux as a child of
gpll0. The PLL is always-on. And listing the gpll0 as a property of the
apcs would delay its probing until the GCC has been probed (while we
would like for the apcs to be probed as early as possible).
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
drivers/clk/qcom/Makefile | 2 +-
drivers/clk/qcom/apcs-msm8996.c | 76 +++++++++++++++++++++++++++++++++
2 files changed, 77 insertions(+), 1 deletion(-)
create mode 100644 drivers/clk/qcom/apcs-msm8996.c
diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
index f18c446a97ea..ca2f586edb3e 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -52,7 +52,7 @@ obj-$(CONFIG_MSM_MMCC_8998) += mmcc-msm8998.o
obj-$(CONFIG_QCOM_A53PLL) += a53-pll.o
obj-$(CONFIG_QCOM_A7PLL) += a7-pll.o
obj-$(CONFIG_QCOM_CLK_APCS_MSM8916) += apcs-msm8916.o
-obj-$(CONFIG_QCOM_CLK_APCC_MSM8996) += clk-cpu-8996.o
+obj-$(CONFIG_QCOM_CLK_APCC_MSM8996) += apcs-msm8996.o clk-cpu-8996.o
obj-$(CONFIG_QCOM_CLK_APCS_SDX55) += apcs-sdx55.o
obj-$(CONFIG_QCOM_CLK_RPM) += clk-rpm.o
obj-$(CONFIG_QCOM_CLK_RPMH) += clk-rpmh.o
diff --git a/drivers/clk/qcom/apcs-msm8996.c b/drivers/clk/qcom/apcs-msm8996.c
new file mode 100644
index 000000000000..7e46ea8ed444
--- /dev/null
+++ b/drivers/clk/qcom/apcs-msm8996.c
@@ -0,0 +1,76 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Qualcomm APCS clock controller driver
+ *
+ * Copyright (c) 2022, Linaro Limited
+ * Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+ */
+
+#include <linux/bits.h>
+#include <linux/clk-provider.h>
+#include <linux/delay.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+#define APCS_AUX_OFFSET 0x50
+
+#define APCS_AUX_DIV_MASK GENMASK(17, 16)
+#define APCS_AUX_DIV_2 0x1
+
+static int qcom_apcs_msm8996_clk_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct device *parent = dev->parent;
+ struct regmap *regmap;
+ struct clk_hw *hw;
+ unsigned int val;
+ int ret = -ENODEV;
+
+ regmap = dev_get_regmap(parent, NULL);
+ if (!regmap) {
+ dev_err(dev, "failed to get regmap: %d\n", ret);
+ return ret;
+ }
+
+ regmap_read(regmap, APCS_AUX_OFFSET, &val);
+ regmap_update_bits(regmap, APCS_AUX_OFFSET, APCS_AUX_DIV_MASK,
+ FIELD_PREP(APCS_AUX_DIV_MASK, APCS_AUX_DIV_2));
+
+ /* Hardware mandated delay */
+ udelay(5);
+
+ /*
+ * Register the clock as fixed rate instead of being a child of gpll0
+ * to let the driver register probe as early as possible.
+ */
+ hw = devm_clk_hw_register_fixed_rate(dev, "sys_apcs_aux", NULL, 0, 300000000);
+ if (IS_ERR(hw))
+ return PTR_ERR(hw);
+
+ return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, hw);
+}
+
+static struct platform_driver qcom_apcs_msm8996_clk_driver = {
+ .probe = qcom_apcs_msm8996_clk_probe,
+ .driver = {
+ .name = "qcom-apcs-msm8996-clk",
+ },
+};
+
+/* Register early enough to fix the clock to be used for other cores */
+static int __init qcom_apcs_msm8996_clk_init(void)
+{
+ return platform_driver_register(&qcom_apcs_msm8996_clk_driver);
+}
+postcore_initcall(qcom_apcs_msm8996_clk_init);
+
+static void __exit qcom_apcs_msm8996_clk_exit(void)
+{
+ platform_driver_unregister(&qcom_apcs_msm8996_clk_driver);
+}
+module_exit(qcom_apcs_msm8996_clk_exit);
+
+MODULE_AUTHOR("Dmitry Baryshkov <dmitry.baryshkov@linaro.org>");
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Qualcomm MSM8996 APCS clock driver");
--
2.39.0
^ permalink raw reply related [flat|nested] 8+ messages in thread