* [PATCH 0/3] Add support for GXCLK for Milos
@ 2026-03-06 13:48 Luca Weiss
2026-03-06 13:48 ` [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller Luca Weiss
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Luca Weiss @ 2026-03-06 13:48 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Luca Weiss
Similar to other new SoCs, Milos also contains the GXCLKCTL block that
we need to control for GPU. Add support for it.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
Luca Weiss (3):
dt-bindings: clock: qcom: document the Milos GX clock controller
clk: qcom: Add support for GXCLK for Milos
arm64: dts: qcom: milos: Add GX clock controller
.../bindings/clock/qcom,milos-gxclkctl.yaml | 61 ++++++++++++++++++++++
arch/arm64/boot/dts/qcom/milos.dtsi | 10 ++++
drivers/clk/qcom/Makefile | 2 +-
drivers/clk/qcom/gxclkctl-kaanapali.c | 1 +
4 files changed, 73 insertions(+), 1 deletion(-)
---
base-commit: 755bfcf32666f86ca2a9a2ea2c9dc7eca4c330a1
change-id: 20260306-milos-gxclkctl-8a8372d6a1e0
Best regards,
--
Luca Weiss <luca.weiss@fairphone.com>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller
2026-03-06 13:48 [PATCH 0/3] Add support for GXCLK for Milos Luca Weiss
@ 2026-03-06 13:48 ` Luca Weiss
2026-03-07 15:30 ` Krzysztof Kozlowski
2026-03-06 13:48 ` [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos Luca Weiss
2026-03-06 13:48 ` [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller Luca Weiss
2 siblings, 1 reply; 14+ messages in thread
From: Luca Weiss @ 2026-03-06 13:48 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Luca Weiss
Qualcomm GX(graphics) is a clock controller which has PLLs, clocks and
Power domains (GDSC), but the requirement from the SW driver is to use
the GDSC power domain from the clock controller to recover the GPU
firmware in case of any failure/hangs. The rest of the resources of the
clock controller are being used by the firmware of GPU. This module
exposes the GDSC power domains which helps the recovery of Graphics
subsystem.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
.../bindings/clock/qcom,milos-gxclkctl.yaml | 61 ++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/qcom,milos-gxclkctl.yaml b/Documentation/devicetree/bindings/clock/qcom,milos-gxclkctl.yaml
new file mode 100644
index 000000000000..47dc6bb66120
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/qcom,milos-gxclkctl.yaml
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,milos-gxclkctl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Graphics power domain Controller on Milos
+
+maintainers:
+ - Luca Weiss <luca.weiss@fairphone.com>
+
+description: |
+ Qualcomm GX(graphics) is a clock controller which has PLLs, clocks and
+ Power domains (GDSC). This module provides the power domains control
+ of gxclkctl on Qualcomm SoCs which helps the recovery of Graphics subsystem.
+
+ See also:
+ include/dt-bindings/clock/qcom,kaanapali-gxclkctl.h
+
+properties:
+ compatible:
+ enum:
+ - qcom,milos-gxclkctl
+
+ power-domains:
+ description:
+ Power domains required for the clock controller to operate
+ items:
+ - description: GFX power domain
+ - description: GPUCC(CX) power domain
+
+ '#power-domain-cells':
+ const: 1
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - power-domains
+ - '#power-domain-cells'
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/power/qcom,rpmhpd.h>
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ clock-controller@3d64000 {
+ compatible = "qcom,milos-gxclkctl";
+ reg = <0x0 0x03d64000 0x0 0x6000>;
+ power-domains = <&rpmhpd RPMHPD_GFX>,
+ <&gpucc 0>;
+ #power-domain-cells = <1>;
+ };
+ };
+...
--
2.53.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos
2026-03-06 13:48 [PATCH 0/3] Add support for GXCLK for Milos Luca Weiss
2026-03-06 13:48 ` [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller Luca Weiss
@ 2026-03-06 13:48 ` Luca Weiss
2026-03-16 11:03 ` Jagadeesh Kona
` (2 more replies)
2026-03-06 13:48 ` [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller Luca Weiss
2 siblings, 3 replies; 14+ messages in thread
From: Luca Weiss @ 2026-03-06 13:48 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Luca Weiss
GXCLKCTL (Graphics GX Clock Controller) is a block dedicated to managing
clocks for the GPU subsystem on GX power domain. The GX clock controller
driver manages only the GX GDSC and the rest of the resources of the
controller are managed by the firmware.
We can use the existing kaanapali driver for Milos as well since the
GX_CLKCTL_GX_GDSC supported by the Linux driver requires the same
configuration.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
drivers/clk/qcom/Makefile | 2 +-
drivers/clk/qcom/gxclkctl-kaanapali.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
index 90ea21c3b7cf..155830140d26 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -182,7 +182,7 @@ obj-$(CONFIG_SM_GPUCC_8350) += gpucc-sm8350.o
obj-$(CONFIG_SM_GPUCC_8450) += gpucc-sm8450.o
obj-$(CONFIG_SM_GPUCC_8550) += gpucc-sm8550.o
obj-$(CONFIG_SM_GPUCC_8650) += gpucc-sm8650.o
-obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o
+obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o gxclkctl-kaanapali.o
obj-$(CONFIG_SM_LPASSCC_6115) += lpasscc-sm6115.o
obj-$(CONFIG_SM_TCSRCC_8550) += tcsrcc-sm8550.o
obj-$(CONFIG_SM_TCSRCC_8650) += tcsrcc-sm8650.o
diff --git a/drivers/clk/qcom/gxclkctl-kaanapali.c b/drivers/clk/qcom/gxclkctl-kaanapali.c
index 3ee512f34967..d3899420d6f2 100644
--- a/drivers/clk/qcom/gxclkctl-kaanapali.c
+++ b/drivers/clk/qcom/gxclkctl-kaanapali.c
@@ -54,6 +54,7 @@ static const struct qcom_cc_desc gx_clkctl_kaanapali_desc = {
static const struct of_device_id gx_clkctl_kaanapali_match_table[] = {
{ .compatible = "qcom,glymur-gxclkctl" },
{ .compatible = "qcom,kaanapali-gxclkctl" },
+ { .compatible = "qcom,milos-gxclkctl" },
{ }
};
MODULE_DEVICE_TABLE(of, gx_clkctl_kaanapali_match_table);
--
2.53.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller
2026-03-06 13:48 [PATCH 0/3] Add support for GXCLK for Milos Luca Weiss
2026-03-06 13:48 ` [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller Luca Weiss
2026-03-06 13:48 ` [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos Luca Weiss
@ 2026-03-06 13:48 ` Luca Weiss
2026-03-16 11:04 ` Jagadeesh Kona
2026-03-16 11:36 ` Konrad Dybcio
2 siblings, 2 replies; 14+ messages in thread
From: Luca Weiss @ 2026-03-06 13:48 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Luca Weiss
Add a node for the GX clock controller, which provides a power domain to
consumers.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
arch/arm64/boot/dts/qcom/milos.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/milos.dtsi b/arch/arm64/boot/dts/qcom/milos.dtsi
index e1a51d43943f..621f05820826 100644
--- a/arch/arm64/boot/dts/qcom/milos.dtsi
+++ b/arch/arm64/boot/dts/qcom/milos.dtsi
@@ -1224,6 +1224,16 @@ lpass_ag_noc: interconnect@3c40000 {
qcom,bcm-voters = <&apps_bcm_voter>;
};
+ gxclkctl: clock-controller@3d64000 {
+ compatible = "qcom,milos-gxclkctl";
+ reg = <0x0 0x03d64000 0x0 0x6000>;
+
+ power-domains = <&rpmhpd RPMHPD_GFX>,
+ <&gpucc GPU_CC_CX_GDSC>;
+
+ #power-domain-cells = <1>;
+ };
+
gpucc: clock-controller@3d90000 {
compatible = "qcom,milos-gpucc";
reg = <0x0 0x03d90000 0x0 0x9800>;
--
2.53.0
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller
2026-03-06 13:48 ` [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller Luca Weiss
@ 2026-03-07 15:30 ` Krzysztof Kozlowski
2026-04-02 8:23 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2026-03-07 15:30 UTC (permalink / raw)
To: Luca Weiss
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On Fri, Mar 06, 2026 at 02:48:37PM +0100, Luca Weiss wrote:
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/qcom,milos-gxclkctl.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Graphics power domain Controller on Milos
Power Domain
> +
> +maintainers:
> + - Luca Weiss <luca.weiss@fairphone.com>
> +
> +description: |
> + Qualcomm GX(graphics) is a clock controller which has PLLs, clocks and
> + Power domains (GDSC). This module provides the power domains control
> + of gxclkctl on Qualcomm SoCs which helps the recovery of Graphics subsystem.
> +
> + See also:
> + include/dt-bindings/clock/qcom,kaanapali-gxclkctl.h
Milos
> +
> +properties:
> + compatible:
> + enum:
> + - qcom,milos-gxclkctl
> +
> + power-domains:
> + description:
> + Power domains required for the clock controller to operate
> + items:
> + - description: GFX power domain
> + - description: GPUCC(CX) power domain
> +
> + '#power-domain-cells':
> + const: 1
> +
> + reg:
> + maxItems: 1
reg should be the second property, like you have it in "required" part.
I guess you copied it from kaanapali-gxclkctl.yaml, so lesson - qcom
bindings have acceptable quality, but not good enough to take as correct
starting point.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos
2026-03-06 13:48 ` [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos Luca Weiss
@ 2026-03-16 11:03 ` Jagadeesh Kona
2026-03-31 2:37 ` Alexander Koskovich
2026-03-31 9:23 ` Taniya Das
2 siblings, 0 replies; 14+ messages in thread
From: Jagadeesh Kona @ 2026-03-16 11:03 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 3/6/2026 7:18 PM, Luca Weiss wrote:
> GXCLKCTL (Graphics GX Clock Controller) is a block dedicated to managing
> clocks for the GPU subsystem on GX power domain. The GX clock controller
> driver manages only the GX GDSC and the rest of the resources of the
> controller are managed by the firmware.
>
> We can use the existing kaanapali driver for Milos as well since the
> GX_CLKCTL_GX_GDSC supported by the Linux driver requires the same
> configuration.
>
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> drivers/clk/qcom/Makefile | 2 +-
> drivers/clk/qcom/gxclkctl-kaanapali.c | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
> index 90ea21c3b7cf..155830140d26 100644
> --- a/drivers/clk/qcom/Makefile
> +++ b/drivers/clk/qcom/Makefile
> @@ -182,7 +182,7 @@ obj-$(CONFIG_SM_GPUCC_8350) += gpucc-sm8350.o
> obj-$(CONFIG_SM_GPUCC_8450) += gpucc-sm8450.o
> obj-$(CONFIG_SM_GPUCC_8550) += gpucc-sm8550.o
> obj-$(CONFIG_SM_GPUCC_8650) += gpucc-sm8650.o
> -obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o
> +obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o gxclkctl-kaanapali.o
> obj-$(CONFIG_SM_LPASSCC_6115) += lpasscc-sm6115.o
> obj-$(CONFIG_SM_TCSRCC_8550) += tcsrcc-sm8550.o
> obj-$(CONFIG_SM_TCSRCC_8650) += tcsrcc-sm8650.o
> diff --git a/drivers/clk/qcom/gxclkctl-kaanapali.c b/drivers/clk/qcom/gxclkctl-kaanapali.c
> index 3ee512f34967..d3899420d6f2 100644
> --- a/drivers/clk/qcom/gxclkctl-kaanapali.c
> +++ b/drivers/clk/qcom/gxclkctl-kaanapali.c
> @@ -54,6 +54,7 @@ static const struct qcom_cc_desc gx_clkctl_kaanapali_desc = {
> static const struct of_device_id gx_clkctl_kaanapali_match_table[] = {
> { .compatible = "qcom,glymur-gxclkctl" },
> { .compatible = "qcom,kaanapali-gxclkctl" },
> + { .compatible = "qcom,milos-gxclkctl" },
> { }
> };
> MODULE_DEVICE_TABLE(of, gx_clkctl_kaanapali_match_table);
>
Reviewed-By: Jagadeesh Kona <jagadeesh.kona@oss.qualcomm.com>
Thanks,
Jagadeesh
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller
2026-03-06 13:48 ` [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller Luca Weiss
@ 2026-03-16 11:04 ` Jagadeesh Kona
2026-03-16 11:36 ` Konrad Dybcio
1 sibling, 0 replies; 14+ messages in thread
From: Jagadeesh Kona @ 2026-03-16 11:04 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 3/6/2026 7:18 PM, Luca Weiss wrote:
> Add a node for the GX clock controller, which provides a power domain to
> consumers.
>
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> arch/arm64/boot/dts/qcom/milos.dtsi | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/milos.dtsi b/arch/arm64/boot/dts/qcom/milos.dtsi
> index e1a51d43943f..621f05820826 100644
> --- a/arch/arm64/boot/dts/qcom/milos.dtsi
> +++ b/arch/arm64/boot/dts/qcom/milos.dtsi
> @@ -1224,6 +1224,16 @@ lpass_ag_noc: interconnect@3c40000 {
> qcom,bcm-voters = <&apps_bcm_voter>;
> };
>
> + gxclkctl: clock-controller@3d64000 {
> + compatible = "qcom,milos-gxclkctl";
> + reg = <0x0 0x03d64000 0x0 0x6000>;
> +
> + power-domains = <&rpmhpd RPMHPD_GFX>,
> + <&gpucc GPU_CC_CX_GDSC>;
> +
> + #power-domain-cells = <1>;
> + };
> +
Reviewed-By: Jagadeesh Kona <jagadeesh.kona@oss.qualcomm.com>
Thanks,
Jagadeesh
> gpucc: clock-controller@3d90000 {
> compatible = "qcom,milos-gpucc";
> reg = <0x0 0x03d90000 0x0 0x9800>;
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller
2026-03-06 13:48 ` [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller Luca Weiss
2026-03-16 11:04 ` Jagadeesh Kona
@ 2026-03-16 11:36 ` Konrad Dybcio
1 sibling, 0 replies; 14+ messages in thread
From: Konrad Dybcio @ 2026-03-16 11:36 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 3/6/26 2:48 PM, Luca Weiss wrote:
> Add a node for the GX clock controller, which provides a power domain to
> consumers.
>
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos
2026-03-06 13:48 ` [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos Luca Weiss
2026-03-16 11:03 ` Jagadeesh Kona
@ 2026-03-31 2:37 ` Alexander Koskovich
2026-03-31 10:57 ` Jagadeesh Kona
2026-03-31 9:23 ` Taniya Das
2 siblings, 1 reply; 14+ messages in thread
From: Alexander Koskovich @ 2026-03-31 2:37 UTC (permalink / raw)
To: Luca Weiss
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On Friday, March 6th, 2026 at 8:56 AM, Luca Weiss <luca.weiss@fairphone.com> wrote:
> GXCLKCTL (Graphics GX Clock Controller) is a block dedicated to managing
> clocks for the GPU subsystem on GX power domain. The GX clock controller
> driver manages only the GX GDSC and the rest of the resources of the
> controller are managed by the firmware.
>
> We can use the existing kaanapali driver for Milos as well since the
> GX_CLKCTL_GX_GDSC supported by the Linux driver requires the same
> configuration.
>
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> drivers/clk/qcom/Makefile | 2 +-
> drivers/clk/qcom/gxclkctl-kaanapali.c | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
> index 90ea21c3b7cf..155830140d26 100644
> --- a/drivers/clk/qcom/Makefile
> +++ b/drivers/clk/qcom/Makefile
> @@ -182,7 +182,7 @@ obj-$(CONFIG_SM_GPUCC_8350) += gpucc-sm8350.o
> obj-$(CONFIG_SM_GPUCC_8450) += gpucc-sm8450.o
> obj-$(CONFIG_SM_GPUCC_8550) += gpucc-sm8550.o
> obj-$(CONFIG_SM_GPUCC_8650) += gpucc-sm8650.o
> -obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o
> +obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o gxclkctl-kaanapali.o
> obj-$(CONFIG_SM_LPASSCC_6115) += lpasscc-sm6115.o
> obj-$(CONFIG_SM_TCSRCC_8550) += tcsrcc-sm8550.o
> obj-$(CONFIG_SM_TCSRCC_8650) += tcsrcc-sm8650.o
> diff --git a/drivers/clk/qcom/gxclkctl-kaanapali.c b/drivers/clk/qcom/gxclkctl-kaanapali.c
> index 3ee512f34967..d3899420d6f2 100644
> --- a/drivers/clk/qcom/gxclkctl-kaanapali.c
> +++ b/drivers/clk/qcom/gxclkctl-kaanapali.c
> @@ -54,6 +54,7 @@ static const struct qcom_cc_desc gx_clkctl_kaanapali_desc = {
> static const struct of_device_id gx_clkctl_kaanapali_match_table[] = {
> { .compatible = "qcom,glymur-gxclkctl" },
> { .compatible = "qcom,kaanapali-gxclkctl" },
> + { .compatible = "qcom,milos-gxclkctl" },
> { }
> };
> MODULE_DEVICE_TABLE(of, gx_clkctl_kaanapali_match_table);
>
> --
> 2.53.0
>
Was running into gx_clkctl_gx_gdsc being stuck on when GPU was doing runtime pm
and it seems like this GDSC requires GPU_CC_GX_AHB_FF_CLK to be enabled. Though
it is already in gpu_cc_milos_critical_cbcrs, the GMU firmware appears to be
disabling it.
Relevant downstream change:
https://git.codelinaro.org/clo/la/kernel/qcom/-/commit/3c1f31518edb7b094b9b9285287ba49a5c9196d8
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos
2026-03-06 13:48 ` [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos Luca Weiss
2026-03-16 11:03 ` Jagadeesh Kona
2026-03-31 2:37 ` Alexander Koskovich
@ 2026-03-31 9:23 ` Taniya Das
2 siblings, 0 replies; 14+ messages in thread
From: Taniya Das @ 2026-03-31 9:23 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 3/6/2026 7:18 PM, Luca Weiss wrote:
> GXCLKCTL (Graphics GX Clock Controller) is a block dedicated to managing
> clocks for the GPU subsystem on GX power domain. The GX clock controller
> driver manages only the GX GDSC and the rest of the resources of the
> controller are managed by the firmware.
>
> We can use the existing kaanapali driver for Milos as well since the
> GX_CLKCTL_GX_GDSC supported by the Linux driver requires the same
> configuration.
>
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Reviewed-by: Taniya Das <taniya.das@oss.qualcomm.com>
--
Thanks,
Taniya Das
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos
2026-03-31 2:37 ` Alexander Koskovich
@ 2026-03-31 10:57 ` Jagadeesh Kona
0 siblings, 0 replies; 14+ messages in thread
From: Jagadeesh Kona @ 2026-03-31 10:57 UTC (permalink / raw)
To: Alexander Koskovich, Luca Weiss
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 3/31/2026 8:07 AM, Alexander Koskovich wrote:
> On Friday, March 6th, 2026 at 8:56 AM, Luca Weiss <luca.weiss@fairphone.com> wrote:
>
>> GXCLKCTL (Graphics GX Clock Controller) is a block dedicated to managing
>> clocks for the GPU subsystem on GX power domain. The GX clock controller
>> driver manages only the GX GDSC and the rest of the resources of the
>> controller are managed by the firmware.
>>
>> We can use the existing kaanapali driver for Milos as well since the
>> GX_CLKCTL_GX_GDSC supported by the Linux driver requires the same
>> configuration.
>>
>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
>> ---
>> drivers/clk/qcom/Makefile | 2 +-
>> drivers/clk/qcom/gxclkctl-kaanapali.c | 1 +
>> 2 files changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
>> index 90ea21c3b7cf..155830140d26 100644
>> --- a/drivers/clk/qcom/Makefile
>> +++ b/drivers/clk/qcom/Makefile
>> @@ -182,7 +182,7 @@ obj-$(CONFIG_SM_GPUCC_8350) += gpucc-sm8350.o
>> obj-$(CONFIG_SM_GPUCC_8450) += gpucc-sm8450.o
>> obj-$(CONFIG_SM_GPUCC_8550) += gpucc-sm8550.o
>> obj-$(CONFIG_SM_GPUCC_8650) += gpucc-sm8650.o
>> -obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o
>> +obj-$(CONFIG_SM_GPUCC_MILOS) += gpucc-milos.o gxclkctl-kaanapali.o
>> obj-$(CONFIG_SM_LPASSCC_6115) += lpasscc-sm6115.o
>> obj-$(CONFIG_SM_TCSRCC_8550) += tcsrcc-sm8550.o
>> obj-$(CONFIG_SM_TCSRCC_8650) += tcsrcc-sm8650.o
>> diff --git a/drivers/clk/qcom/gxclkctl-kaanapali.c b/drivers/clk/qcom/gxclkctl-kaanapali.c
>> index 3ee512f34967..d3899420d6f2 100644
>> --- a/drivers/clk/qcom/gxclkctl-kaanapali.c
>> +++ b/drivers/clk/qcom/gxclkctl-kaanapali.c
>> @@ -54,6 +54,7 @@ static const struct qcom_cc_desc gx_clkctl_kaanapali_desc = {
>> static const struct of_device_id gx_clkctl_kaanapali_match_table[] = {
>> { .compatible = "qcom,glymur-gxclkctl" },
>> { .compatible = "qcom,kaanapali-gxclkctl" },
>> + { .compatible = "qcom,milos-gxclkctl" },
>> { }
>> };
>> MODULE_DEVICE_TABLE(of, gx_clkctl_kaanapali_match_table);
>>
>> --
>> 2.53.0
>>
>
> Was running into gx_clkctl_gx_gdsc being stuck on when GPU was doing runtime pm
> and it seems like this GDSC requires GPU_CC_GX_AHB_FF_CLK to be enabled. Though
> it is already in gpu_cc_milos_critical_cbcrs, the GMU firmware appears to be
> disabling it.
>
> Relevant downstream change:
> https://git.codelinaro.org/clo/la/kernel/qcom/-/commit/3c1f31518edb7b094b9b9285287ba49a5c9196d8
>
Hi Alexander,
This change was introduced as a temporary placeholder specific to downstream GPU SW & GPUCC code,
to unblock the gx gdsc warnings observed during system resume. But it is not the final
implementation and change was reverted later in below commit:
https://git.codelinaro.org/clo/la/kernel/qcom/-/commit/11bd8d8d6f654cf156bb4fbbfe6587e0c41adc2b
But you are right, gpu_cc_gx_ahb_ff_clk is indeed required for GX GDSC register access. And the
actual requirement is linux GMU driver should disable the GX GDSC only in GMU recovery use case
at which point the necessary clock will already be enabled by firmware. In all other cases, the
GX GDSC should never be enabled/disabled from linux.
In the upstream implementation of GMU driver, the GX GDSC is being enabled/disabled in every runtime
resume/suspend of GMU driver which is leading to these GX GDSC warnings. Milos GPU architecture is
similar to that of Pakala and similar GX GDSC warnings were reported on Pakala already[1].
Discussions are in progress with internal GPU SW team to see if GX GDSC can be handled gracefully
only during GMU recovery use case and not control it in other scenarios, to avoid this issue and
without impacting any other GPU use cases.
[1]: https://lore.kernel.org/all/CAH2e8h4R-nF+eV+OnkSySKSY5_H-V8Ndyfhac3=VNQ-bMaBeFg@mail.gmail.com/
Thanks,
Jagadeesh
>>
>>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller
2026-03-07 15:30 ` Krzysztof Kozlowski
@ 2026-04-02 8:23 ` Krzysztof Kozlowski
2026-04-02 12:24 ` Luca Weiss
0 siblings, 1 reply; 14+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-02 8:23 UTC (permalink / raw)
To: Luca Weiss
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 07/03/2026 16:30, Krzysztof Kozlowski wrote:
>> +
>> +properties:
>> + compatible:
>> + enum:
>> + - qcom,milos-gxclkctl
>> +
>> + power-domains:
>> + description:
>> + Power domains required for the clock controller to operate
>> + items:
>> + - description: GFX power domain
>> + - description: GPUCC(CX) power domain
>> +
>> + '#power-domain-cells':
>> + const: 1
>> +
>> + reg:
>> + maxItems: 1
>
> reg should be the second property, like you have it in "required" part.
> I guess you copied it from kaanapali-gxclkctl.yaml, so lesson - qcom
> bindings have acceptable quality, but not good enough to take as correct
> starting point.
>
OTOH, why this entire binding cannot be squashed in Kaanapali one?
What's the difference?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller
2026-04-02 8:23 ` Krzysztof Kozlowski
@ 2026-04-02 12:24 ` Luca Weiss
2026-04-02 13:19 ` Krzysztof Kozlowski
0 siblings, 1 reply; 14+ messages in thread
From: Luca Weiss @ 2026-04-02 12:24 UTC (permalink / raw)
To: Krzysztof Kozlowski, Luca Weiss
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On Thu Apr 2, 2026 at 10:23 AM CEST, Krzysztof Kozlowski wrote:
> On 07/03/2026 16:30, Krzysztof Kozlowski wrote:
>>> +
>>> +properties:
>>> + compatible:
>>> + enum:
>>> + - qcom,milos-gxclkctl
>>> +
>>> + power-domains:
>>> + description:
>>> + Power domains required for the clock controller to operate
>>> + items:
>>> + - description: GFX power domain
>>> + - description: GPUCC(CX) power domain
>>> +
>>> + '#power-domain-cells':
>>> + const: 1
>>> +
>>> + reg:
>>> + maxItems: 1
>>
>> reg should be the second property, like you have it in "required" part.
>> I guess you copied it from kaanapali-gxclkctl.yaml, so lesson - qcom
>> bindings have acceptable quality, but not good enough to take as correct
>> starting point.
>>
>
> OTOH, why this entire binding cannot be squashed in Kaanapali one?
> What's the difference?
There's no GMXC power domain on Milos. Apart from that they're
compatible from a bindings perspective.
However it can re-use include/dt-bindings/clock/qcom,kaanapali-gxclkctl.h
because the GX_CLKCTL_GX_GDSC definition would be identical.
And also the driver (which can be used as-is) would be identical. In
that driver qcom,kaanapali-gxclkctl.h is used so it makes sense to keep
with the kaanapali header, or not? Making a qcom,milos-gxclkctl.h with
the same definition is not wanted?
Regards
Luca
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller
2026-04-02 12:24 ` Luca Weiss
@ 2026-04-02 13:19 ` Krzysztof Kozlowski
0 siblings, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-02 13:19 UTC (permalink / raw)
To: Luca Weiss
Cc: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 02/04/2026 14:24, Luca Weiss wrote:
>>>> + '#power-domain-cells':
>>>> + const: 1
>>>> +
>>>> + reg:
>>>> + maxItems: 1
>>>
>>> reg should be the second property, like you have it in "required" part.
>>> I guess you copied it from kaanapali-gxclkctl.yaml, so lesson - qcom
>>> bindings have acceptable quality, but not good enough to take as correct
>>> starting point.
>>>
>>
>> OTOH, why this entire binding cannot be squashed in Kaanapali one?
>> What's the difference?
>
> There's no GMXC power domain on Milos. Apart from that they're
> compatible from a bindings perspective.
Ah, right, I missed only two items here.
>
> However it can re-use include/dt-bindings/clock/qcom,kaanapali-gxclkctl.h
> because the GX_CLKCTL_GX_GDSC definition would be identical.
Indeed and you use the same driver, so the header can be re-used. This
should be explained in the commit msg.
>
> And also the driver (which can be used as-is) would be identical. In
> that driver qcom,kaanapali-gxclkctl.h is used so it makes sense to keep
> with the kaanapali header, or not? Making a qcom,milos-gxclkctl.h with
> the same definition is not wanted?
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-04-02 13:20 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-06 13:48 [PATCH 0/3] Add support for GXCLK for Milos Luca Weiss
2026-03-06 13:48 ` [PATCH 1/3] dt-bindings: clock: qcom: document the Milos GX clock controller Luca Weiss
2026-03-07 15:30 ` Krzysztof Kozlowski
2026-04-02 8:23 ` Krzysztof Kozlowski
2026-04-02 12:24 ` Luca Weiss
2026-04-02 13:19 ` Krzysztof Kozlowski
2026-03-06 13:48 ` [PATCH 2/3] clk: qcom: Add support for GXCLK for Milos Luca Weiss
2026-03-16 11:03 ` Jagadeesh Kona
2026-03-31 2:37 ` Alexander Koskovich
2026-03-31 10:57 ` Jagadeesh Kona
2026-03-31 9:23 ` Taniya Das
2026-03-06 13:48 ` [PATCH 3/3] arm64: dts: qcom: milos: Add GX clock controller Luca Weiss
2026-03-16 11:04 ` Jagadeesh Kona
2026-03-16 11:36 ` Konrad Dybcio
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox