* [PATCH 0/4] clk: qcom: Add LPASS clock/reset controllers for Glymur
@ 2026-09-22 18:44 Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller " Srinivas Kandagatla
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Srinivas Kandagatla @ 2026-09-22 18:44 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley
Cc: Abel Vesa, Brian Masney, Jerome Brunet, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Srinivas Kandagatla
Add DT bindings and clock-controller drivers for the two LPASS reset
providers on the Glymur SoC:
- qcom,glymur-lpassaudiocc (LPASS Audio CC CSR): RX + WSA1..WSA4
SoundWire CGCR resets
- qcom,glymur-lpasscc (LPASS CC CSR): TX SoundWire CGCR
reset
Only resets are exposed for now; the Q6DSP owns LPASS clocks via the
Q6PRM service on the GPR rpmsg channel, matching the existing SC8280XP
pattern (commits a5c9c3ba243a, c2ef1ec97c1f).
The reset providers are required by the LPASS audio macros and the
SoundWire controller to come out of reset on Glymur.
Srinivas Kandagatla (4):
dt-bindings: clock: Add LPASS AUDIOCC and reset controller for Glymur
dt-bindings: clock: Add LPASSCC and reset controller for Glymur
clk: qcom: Add lpass audio clock controller driver for Glymur
clk: qcom: Add lpass clock controller driver for Glymur
.../bindings/clock/qcom,glymur-lpasscc.yaml | 60 ++++++++++++
drivers/clk/qcom/Kconfig | 11 +++
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/lpasscc-glymur.c | 91 +++++++++++++++++++
.../dt-bindings/clock/qcom,glymur-lpasscc.h | 19 ++++
5 files changed, 182 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
create mode 100644 drivers/clk/qcom/lpasscc-glymur.c
create mode 100644 include/dt-bindings/clock/qcom,glymur-lpasscc.h
--
2.53.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller for Glymur
2026-09-22 18:44 [PATCH 0/4] clk: qcom: Add LPASS clock/reset controllers for Glymur Srinivas Kandagatla
@ 2026-09-22 18:44 ` Srinivas Kandagatla
2026-09-28 9:59 ` Krzysztof Kozlowski
2026-09-22 18:44 ` [PATCH 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
` (2 subsequent siblings)
3 siblings, 1 reply; 12+ messages in thread
From: Srinivas Kandagatla @ 2026-09-22 18:44 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley
Cc: Abel Vesa, Brian Masney, Jerome Brunet, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Srinivas Kandagatla
The LPASS (Low Power Audio Subsystem) Audio clock controller provides reset
support when it is under the control of Q6DSP.
Add support for those resets and adds IDs for clients to request the reset.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
---
.../bindings/clock/qcom,glymur-lpasscc.yaml | 50 +++++++++++++++++++
.../dt-bindings/clock/qcom,glymur-lpasscc.h | 16 ++++++
2 files changed, 66 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
create mode 100644 include/dt-bindings/clock/qcom,glymur-lpasscc.h
diff --git a/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml b/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
new file mode 100644
index 000000000000..c047c0174a93
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/qcom,glymur-lpasscc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm LPASS Core & Audio Clock Controller on Glymur
+
+maintainers:
+ - Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
+
+description: |
+ Qualcomm LPASS core and audio clock control module provides the clocks,
+ and reset on Glymur.
+
+ See also:
+ include/dt-bindings/clock/qcom,glymur-lpasscc.h
+
+properties:
+ compatible:
+ enum:
+ - qcom,glymur-lpassaudiocc
+
+ reg:
+ maxItems: 1
+
+ '#clock-cells':
+ const: 1
+
+ '#reset-cells':
+ const: 1
+
+required:
+ - compatible
+ - reg
+ - '#clock-cells'
+ - '#reset-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,glymur-lpasscc.h>
+ lpass_audiocc: clock-controller@32a9000 {
+ compatible = "qcom,glymur-lpassaudiocc";
+ reg = <0x032a9000 0x1000>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
+...
diff --git a/include/dt-bindings/clock/qcom,glymur-lpasscc.h b/include/dt-bindings/clock/qcom,glymur-lpasscc.h
new file mode 100644
index 000000000000..3006b12e385e
--- /dev/null
+++ b/include/dt-bindings/clock/qcom,glymur-lpasscc.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_LPASSCC_GLYMUR_H
+#define _DT_BINDINGS_CLK_QCOM_LPASSCC_GLYMUR_H
+
+/* LPASS AUDIO CC CSR */
+#define LPASS_AUDIO_SWR_RX_CGCR 0
+#define LPASS_AUDIO_SWR_WSA1_CGCR 1
+#define LPASS_AUDIO_SWR_WSA2_CGCR 2
+#define LPASS_AUDIO_SWR_WSA3_CGCR 3
+#define LPASS_AUDIO_SWR_WSA4_CGCR 4
+
+#endif
--
2.53.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/4] dt-bindings: clock: Add LPASSCC and reset controller for Glymur
2026-09-22 18:44 [PATCH 0/4] clk: qcom: Add LPASS clock/reset controllers for Glymur Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller " Srinivas Kandagatla
@ 2026-09-22 18:44 ` Srinivas Kandagatla
2026-09-28 9:59 ` Krzysztof Kozlowski
2026-09-22 18:44 ` [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 4/4] clk: qcom: Add lpass " Srinivas Kandagatla
3 siblings, 1 reply; 12+ messages in thread
From: Srinivas Kandagatla @ 2026-09-22 18:44 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley
Cc: Abel Vesa, Brian Masney, Jerome Brunet, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Srinivas Kandagatla
The LPASS (Low Power Audio Subsystem) clock controller provides reset
support when it is under the control of Q6DSP.
Add support for those resets and adds IDs for clients to request the reset.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
---
.../devicetree/bindings/clock/qcom,glymur-lpasscc.yaml | 10 ++++++++++
include/dt-bindings/clock/qcom,glymur-lpasscc.h | 3 +++
2 files changed, 13 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml b/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
index c047c0174a93..916ab1b3dbee 100644
--- a/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
@@ -20,6 +20,7 @@ properties:
compatible:
enum:
- qcom,glymur-lpassaudiocc
+ - qcom,glymur-lpasscc
reg:
maxItems: 1
@@ -47,4 +48,13 @@ examples:
#clock-cells = <1>;
#reset-cells = <1>;
};
+
+ - |
+ #include <dt-bindings/clock/qcom,glymur-lpasscc.h>
+ lpasscc: clock-controller@33e0000 {
+ compatible = "qcom,glymur-lpasscc";
+ reg = <0x033e0000 0x12000>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
...
diff --git a/include/dt-bindings/clock/qcom,glymur-lpasscc.h b/include/dt-bindings/clock/qcom,glymur-lpasscc.h
index 3006b12e385e..3fc8e7313cab 100644
--- a/include/dt-bindings/clock/qcom,glymur-lpasscc.h
+++ b/include/dt-bindings/clock/qcom,glymur-lpasscc.h
@@ -13,4 +13,7 @@
#define LPASS_AUDIO_SWR_WSA3_CGCR 3
#define LPASS_AUDIO_SWR_WSA4_CGCR 4
+/* LPASS CC CSR */
+#define LPASS_AUDIO_SWR_TX_CGCR 0
+
#endif
--
2.53.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver for Glymur
2026-09-22 18:44 [PATCH 0/4] clk: qcom: Add LPASS clock/reset controllers for Glymur Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller " Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
@ 2026-09-22 18:44 ` Srinivas Kandagatla
2026-09-22 20:40 ` Abel Vesa
` (2 more replies)
2026-09-22 18:44 ` [PATCH 4/4] clk: qcom: Add lpass " Srinivas Kandagatla
3 siblings, 3 replies; 12+ messages in thread
From: Srinivas Kandagatla @ 2026-09-22 18:44 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley
Cc: Abel Vesa, Brian Masney, Jerome Brunet, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Srinivas Kandagatla
Add support for the lpass audio clock controller found on Glymur based
devices. This would allow lpass peripheral loader drivers to control the
clocks and bring the subsystems out of reset.
Currently this patch only supports resets as the Q6DSP is in control of
LPASS IP which manages most of the clocks via Q6PRM service on GPR rpmsg
channel.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
---
drivers/clk/qcom/Kconfig | 11 +++++
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/lpasscc-glymur.c | 70 +++++++++++++++++++++++++++++++
3 files changed, 82 insertions(+)
create mode 100644 drivers/clk/qcom/lpasscc-glymur.c
diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
index b3ffe1dced01..1e571c237fc1 100644
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -1253,6 +1253,17 @@ config SC_LPASSCC_8280XP
Say Y if you want to use the LPASS branch clocks of the LPASS clock
controller to reset the LPASS subsystem.
+config SC_LPASSCC_GLYMUR
+ tristate "GLYMUR Low Power Audio Subsystem (LPASS) Clock Controller"
+ depends on ARM64 || COMPILE_TEST
+ default m if ARCH_QCOM
+ help
+ Support for the LPASS clock controller on Glymur devices.
+ Say Y if you want to use the LPASS branch clocks of the LPASS clock
+ controller to reset the LPASS subsystem. Required for the LPASS
+ audio macros and the SoundWire compute-mode controller to leave
+ reset on Glymur.
+
config SC_LPASS_CORECC_7180
tristate "SC7180 LPASS Core Clock Controller"
depends on ARM64 || COMPILE_TEST
diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
index a6c676f68b79..c8348218b6b8 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -149,6 +149,7 @@ obj-$(CONFIG_SC_LPASSCC_7280) += lpasscc-sc7280.o
obj-$(CONFIG_SC_LPASSCC_8280XP) += lpasscc-sc8280xp.o
obj-$(CONFIG_SC_LPASS_CORECC_7180) += lpasscorecc-sc7180.o
obj-$(CONFIG_SC_LPASS_CORECC_7280) += lpasscorecc-sc7280.o lpassaudiocc-sc7280.o
+obj-$(CONFIG_SC_LPASSCC_GLYMUR) += lpasscc-glymur.o
obj-$(CONFIG_SC_VIDEOCC_7180) += videocc-sc7180.o
obj-$(CONFIG_SC_VIDEOCC_7280) += videocc-sc7280.o
obj-$(CONFIG_SDM_CAMCC_845) += camcc-sdm845.o
diff --git a/drivers/clk/qcom/lpasscc-glymur.c b/drivers/clk/qcom/lpasscc-glymur.c
new file mode 100644
index 000000000000..97fc099983b6
--- /dev/null
+++ b/drivers/clk/qcom/lpasscc-glymur.c
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <linux/clk-provider.h>
+#include <linux/err.h>
+#include <linux/kernel.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+#include <dt-bindings/clock/qcom,glymur-lpasscc.h>
+
+#include "common.h"
+#include "reset.h"
+
+static const struct qcom_reset_map lpass_audiocc_glymur_resets[] = {
+ [LPASS_AUDIO_SWR_RX_CGCR] = { 0xA0, 1 },
+ [LPASS_AUDIO_SWR_WSA1_CGCR] = { 0xB0, 1 },
+ [LPASS_AUDIO_SWR_WSA2_CGCR] = { 0xD8, 1 },
+ [LPASS_AUDIO_SWR_WSA3_CGCR] = { 0x300C, 1 },
+ [LPASS_AUDIO_SWR_WSA4_CGCR] = { 0x301C, 1 },
+};
+
+static const struct regmap_config lpass_audiocc_glymur_regmap_config = {
+ .reg_bits = 32,
+ .reg_stride = 4,
+ .val_bits = 32,
+ .name = "lpass-audio-csr",
+ .max_register = 0x1000,
+};
+
+static const struct qcom_cc_desc lpass_audiocc_glymur_reset_desc = {
+ .config = &lpass_audiocc_glymur_regmap_config,
+ .resets = lpass_audiocc_glymur_resets,
+ .num_resets = ARRAY_SIZE(lpass_audiocc_glymur_resets),
+};
+
+static const struct of_device_id lpasscc_glymur_match_table[] = {
+ {
+ .compatible = "qcom,glymur-lpassaudiocc",
+ .data = &lpass_audiocc_glymur_reset_desc,
+ },
+ { }
+};
+MODULE_DEVICE_TABLE(of, lpasscc_glymur_match_table);
+
+static int lpasscc_glymur_probe(struct platform_device *pdev)
+{
+ const struct qcom_cc_desc *desc = of_device_get_match_data(&pdev->dev);
+
+ return qcom_cc_probe_by_index(pdev, 0, desc);
+}
+
+static struct platform_driver lpasscc_glymur_driver = {
+ .probe = lpasscc_glymur_probe,
+ .driver = {
+ .name = "lpasscc-glymur",
+ .of_match_table = lpasscc_glymur_match_table,
+ },
+};
+
+module_platform_driver(lpasscc_glymur_driver);
+
+MODULE_AUTHOR("Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>");
+MODULE_DESCRIPTION("QTI LPASSCC Glymur Driver");
+MODULE_LICENSE("GPL");
--
2.53.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 4/4] clk: qcom: Add lpass clock controller driver for Glymur
2026-09-22 18:44 [PATCH 0/4] clk: qcom: Add LPASS clock/reset controllers for Glymur Srinivas Kandagatla
` (2 preceding siblings ...)
2026-09-22 18:44 ` [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
@ 2026-09-22 18:44 ` Srinivas Kandagatla
2026-09-22 20:41 ` Abel Vesa
3 siblings, 1 reply; 12+ messages in thread
From: Srinivas Kandagatla @ 2026-09-22 18:44 UTC (permalink / raw)
To: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley
Cc: Abel Vesa, Brian Masney, Jerome Brunet, linux-arm-msm, linux-clk,
devicetree, linux-kernel, Srinivas Kandagatla
Add support for the lpass clock controller found on Glymur based devices.
This would allow lpass peripheral loader drivers to control the clocks and
bring the subsystems out of reset.
Currently this patch only supports resets as the Q6DSP is in control of
LPASS IP which manages most of the clocks via Q6PRM service on GPR rpmsg
channel.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
---
drivers/clk/qcom/lpasscc-glymur.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/drivers/clk/qcom/lpasscc-glymur.c b/drivers/clk/qcom/lpasscc-glymur.c
index 97fc099983b6..782183012d97 100644
--- a/drivers/clk/qcom/lpasscc-glymur.c
+++ b/drivers/clk/qcom/lpasscc-glymur.c
@@ -39,10 +39,31 @@ static const struct qcom_cc_desc lpass_audiocc_glymur_reset_desc = {
.num_resets = ARRAY_SIZE(lpass_audiocc_glymur_resets),
};
+static const struct qcom_reset_map lpasscc_glymur_resets[] = {
+ [LPASS_AUDIO_SWR_TX_CGCR] = { 0xa028, 1 },
+};
+
+static const struct regmap_config lpasscc_glymur_regmap_config = {
+ .reg_bits = 32,
+ .reg_stride = 4,
+ .val_bits = 32,
+ .name = "lpass-tcsr",
+ .max_register = 0x12000,
+};
+
+static const struct qcom_cc_desc lpasscc_glymur_reset_desc = {
+ .config = &lpasscc_glymur_regmap_config,
+ .resets = lpasscc_glymur_resets,
+ .num_resets = ARRAY_SIZE(lpasscc_glymur_resets),
+};
+
static const struct of_device_id lpasscc_glymur_match_table[] = {
{
.compatible = "qcom,glymur-lpassaudiocc",
.data = &lpass_audiocc_glymur_reset_desc,
+ }, {
+ .compatible = "qcom,glymur-lpasscc",
+ .data = &lpasscc_glymur_reset_desc,
},
{ }
};
--
2.53.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver for Glymur
2026-09-22 18:44 ` [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
@ 2026-09-22 20:40 ` Abel Vesa
2026-09-24 9:02 ` Taniya Das
2026-09-29 15:37 ` Uwe Kleine-König
2 siblings, 0 replies; 12+ messages in thread
From: Abel Vesa @ 2026-09-22 20:40 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley, Abel Vesa, Brian Masney, Jerome Brunet,
linux-arm-msm, linux-clk, devicetree, linux-kernel
On 26-09-22 19:44:24, Srinivas Kandagatla wrote:
> Add support for the lpass audio clock controller found on Glymur based
> devices. This would allow lpass peripheral loader drivers to control the
> clocks and bring the subsystems out of reset.
>
> Currently this patch only supports resets as the Q6DSP is in control of
> LPASS IP which manages most of the clocks via Q6PRM service on GPR rpmsg
> channel.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 4/4] clk: qcom: Add lpass clock controller driver for Glymur
2026-09-22 18:44 ` [PATCH 4/4] clk: qcom: Add lpass " Srinivas Kandagatla
@ 2026-09-22 20:41 ` Abel Vesa
0 siblings, 0 replies; 12+ messages in thread
From: Abel Vesa @ 2026-09-22 20:41 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley, Abel Vesa, Brian Masney, Jerome Brunet,
linux-arm-msm, linux-clk, devicetree, linux-kernel
On 26-09-22 19:44:25, Srinivas Kandagatla wrote:
> Add support for the lpass clock controller found on Glymur based devices.
> This would allow lpass peripheral loader drivers to control the clocks and
> bring the subsystems out of reset.
>
> Currently this patch only supports resets as the Q6DSP is in control of
> LPASS IP which manages most of the clocks via Q6PRM service on GPR rpmsg
> channel.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver for Glymur
2026-09-22 18:44 ` [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
2026-09-22 20:40 ` Abel Vesa
@ 2026-09-24 9:02 ` Taniya Das
2026-09-29 15:37 ` Uwe Kleine-König
2 siblings, 0 replies; 12+ messages in thread
From: Taniya Das @ 2026-09-24 9:02 UTC (permalink / raw)
To: Srinivas Kandagatla, Bjorn Andersson, Stephen Boyd,
Krzysztof Kozlowski, Rob Herring, Conor Dooley
Cc: Abel Vesa, Brian Masney, Jerome Brunet, linux-arm-msm, linux-clk,
devicetree, linux-kernel
On 9/23/2026 12:14 AM, Srinivas Kandagatla wrote:
> Add support for the lpass audio clock controller found on Glymur based
> devices. This would allow lpass peripheral loader drivers to control the
> clocks and bring the subsystems out of reset.
>
> Currently this patch only supports resets as the Q6DSP is in control of
> LPASS IP which manages most of the clocks via Q6PRM service on GPR rpmsg
> channel.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> ---
> drivers/clk/qcom/Kconfig | 11 +++++
> drivers/clk/qcom/Makefile | 1 +
> drivers/clk/qcom/lpasscc-glymur.c | 70 +++++++++++++++++++++++++++++++
> 3 files changed, 82 insertions(+)
> create mode 100644 drivers/clk/qcom/lpasscc-glymur.c
>
> diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
> index b3ffe1dced01..1e571c237fc1 100644
> --- a/drivers/clk/qcom/Kconfig
> +++ b/drivers/clk/qcom/Kconfig
> @@ -1253,6 +1253,17 @@ config SC_LPASSCC_8280XP
> Say Y if you want to use the LPASS branch clocks of the LPASS clock
> controller to reset the LPASS subsystem.
>
> +config SC_LPASSCC_GLYMUR
> + tristate "GLYMUR Low Power Audio Subsystem (LPASS) Clock Controller"
> + depends on ARM64 || COMPILE_TEST
> + default m if ARCH_QCOM
> + help
> + Support for the LPASS clock controller on Glymur devices.
> + Say Y if you want to use the LPASS branch clocks of the LPASS clock
> + controller to reset the LPASS subsystem. Required for the LPASS
> + audio macros and the SoundWire compute-mode controller to leave
> + reset on Glymur.
> +
> config SC_LPASS_CORECC_7180
> tristate "SC7180 LPASS Core Clock Controller"
> depends on ARM64 || COMPILE_TEST
> diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile
> index a6c676f68b79..c8348218b6b8 100644
> --- a/drivers/clk/qcom/Makefile
> +++ b/drivers/clk/qcom/Makefile
> @@ -149,6 +149,7 @@ obj-$(CONFIG_SC_LPASSCC_7280) += lpasscc-sc7280.o
> obj-$(CONFIG_SC_LPASSCC_8280XP) += lpasscc-sc8280xp.o
> obj-$(CONFIG_SC_LPASS_CORECC_7180) += lpasscorecc-sc7180.o
> obj-$(CONFIG_SC_LPASS_CORECC_7280) += lpasscorecc-sc7280.o lpassaudiocc-sc7280.o
> +obj-$(CONFIG_SC_LPASSCC_GLYMUR) += lpasscc-glymur.o
> obj-$(CONFIG_SC_VIDEOCC_7180) += videocc-sc7180.o
> obj-$(CONFIG_SC_VIDEOCC_7280) += videocc-sc7280.o
> obj-$(CONFIG_SDM_CAMCC_845) += camcc-sdm845.o
> diff --git a/drivers/clk/qcom/lpasscc-glymur.c b/drivers/clk/qcom/lpasscc-glymur.c
> new file mode 100644
> index 000000000000..97fc099983b6
> --- /dev/null
> +++ b/drivers/clk/qcom/lpasscc-glymur.c
> @@ -0,0 +1,70 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +#include <linux/clk-provider.h>
> +#include <linux/err.h>
> +#include <linux/kernel.h>
> +#include <linux/mod_devicetable.h>
Please remove.
> +#include <linux/module.h>
> +#include <linux/of.h>
please remove.
> +#include <linux/platform_device.h>
> +#include <linux/regmap.h>
> +
> +#include <dt-bindings/clock/qcom,glymur-lpasscc.h>
> +
> +#include "common.h"
> +#include "reset.h"
> +
> +static const struct qcom_reset_map lpass_audiocc_glymur_resets[] = {
> + [LPASS_AUDIO_SWR_RX_CGCR] = { 0xA0, 1 },
> + [LPASS_AUDIO_SWR_WSA1_CGCR] = { 0xB0, 1 },
> + [LPASS_AUDIO_SWR_WSA2_CGCR] = { 0xD8, 1 },
> + [LPASS_AUDIO_SWR_WSA3_CGCR] = { 0x300C, 1 },
> + [LPASS_AUDIO_SWR_WSA4_CGCR] = { 0x301C, 1 },
lower case please.
> +};
> +
> +static const struct regmap_config lpass_audiocc_glymur_regmap_config = {
> + .reg_bits = 32,
> + .reg_stride = 4,
> + .val_bits = 32,
> + .name = "lpass-audio-csr",
> + .max_register = 0x1000,
> +};
> +
> +static const struct qcom_cc_desc lpass_audiocc_glymur_reset_desc = {
> + .config = &lpass_audiocc_glymur_regmap_config,
> + .resets = lpass_audiocc_glymur_resets,
> + .num_resets = ARRAY_SIZE(lpass_audiocc_glymur_resets),
> +};
> +
> +static const struct of_device_id lpasscc_glymur_match_table[] = {
> + {
> + .compatible = "qcom,glymur-lpassaudiocc",
> + .data = &lpass_audiocc_glymur_reset_desc,
> + },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, lpasscc_glymur_match_table);
> +
> +static int lpasscc_glymur_probe(struct platform_device *pdev)
> +{
> + const struct qcom_cc_desc *desc = of_device_get_match_data(&pdev->dev);
> +
> + return qcom_cc_probe_by_index(pdev, 0, desc);
> +}
> +
> +static struct platform_driver lpasscc_glymur_driver = {
> + .probe = lpasscc_glymur_probe,
> + .driver = {
> + .name = "lpasscc-glymur",
> + .of_match_table = lpasscc_glymur_match_table,
> + },
> +};
> +
> +module_platform_driver(lpasscc_glymur_driver);
> +
> +MODULE_AUTHOR("Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>");
> +MODULE_DESCRIPTION("QTI LPASSCC Glymur Driver");
> +MODULE_LICENSE("GPL");
--
Thanks,
Taniya Das
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller for Glymur
2026-09-22 18:44 ` [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller " Srinivas Kandagatla
@ 2026-09-28 9:59 ` Krzysztof Kozlowski
2026-09-28 10:00 ` Srinivas Kandagatla
0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-09-28 9:59 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley, Abel Vesa, Brian Masney, Jerome Brunet,
linux-arm-msm, linux-clk, devicetree, linux-kernel
On Tue, Sep 22, 2026 at 07:44:22PM +0100, Srinivas Kandagatla wrote:
> +maintainers:
> + - Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> +
> +description: |
> + Qualcomm LPASS core and audio clock control module provides the clocks,
> + and reset on Glymur.
> +
> + See also:
> + include/dt-bindings/clock/qcom,glymur-lpasscc.h
> +
> +properties:
> + compatible:
> + enum:
> + - qcom,glymur-lpassaudiocc
Binding looks exactly the same as qcom,sc8280xp-lpasscc.yaml. Just add
the compatible to the enum there, no need for a new file. Less code to
maintain, less possible mistakes.
Separate header file for clock IDs is fine, though.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/4] dt-bindings: clock: Add LPASSCC and reset controller for Glymur
2026-09-22 18:44 ` [PATCH 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
@ 2026-09-28 9:59 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-09-28 9:59 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley, Abel Vesa, Brian Masney, Jerome Brunet,
linux-arm-msm, linux-clk, devicetree, linux-kernel
On Tue, Sep 22, 2026 at 07:44:23PM +0100, Srinivas Kandagatla wrote:
> The LPASS (Low Power Audio Subsystem) clock controller provides reset
> support when it is under the control of Q6DSP.
>
> Add support for those resets and adds IDs for clients to request the reset.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> ---
> .../devicetree/bindings/clock/qcom,glymur-lpasscc.yaml | 10 ++++++++++
> include/dt-bindings/clock/qcom,glymur-lpasscc.h | 3 +++
> 2 files changed, 13 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml b/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
> index c047c0174a93..916ab1b3dbee 100644
> --- a/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
> +++ b/Documentation/devicetree/bindings/clock/qcom,glymur-lpasscc.yaml
> @@ -20,6 +20,7 @@ properties:
> compatible:
> enum:
> - qcom,glymur-lpassaudiocc
> + - qcom,glymur-lpasscc
>
> reg:
> maxItems: 1
> @@ -47,4 +48,13 @@ examples:
> #clock-cells = <1>;
> #reset-cells = <1>;
> };
> +
> + - |
> + #include <dt-bindings/clock/qcom,glymur-lpasscc.h>
No need for a new example. Just add both compatibles to the existing
file for other compute platforms.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller for Glymur
2026-09-28 9:59 ` Krzysztof Kozlowski
@ 2026-09-28 10:00 ` Srinivas Kandagatla
0 siblings, 0 replies; 12+ messages in thread
From: Srinivas Kandagatla @ 2026-09-28 10:00 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley, Abel Vesa, Brian Masney, Jerome Brunet,
linux-arm-msm, linux-clk, devicetree, linux-kernel
On 9/28/26 10:59 AM, Krzysztof Kozlowski wrote:
> On Tue, Sep 22, 2026 at 07:44:22PM +0100, Srinivas Kandagatla wrote:
>> +maintainers:
>> + - Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
>> +
>> +description: |
>> + Qualcomm LPASS core and audio clock control module provides the clocks,
>> + and reset on Glymur.
>> +
>> + See also:
>> + include/dt-bindings/clock/qcom,glymur-lpasscc.h
>> +
>> +properties:
>> + compatible:
>> + enum:
>> + - qcom,glymur-lpassaudiocc
>
> Binding looks exactly the same as qcom,sc8280xp-lpasscc.yaml. Just add
> the compatible to the enum there, no need for a new file. Less code to
> maintain, less possible mistakes.
>
Yes, I was thinking of doing the same.
> Separate header file for clock IDs is fine, though.
>
Ack, Will do that in v2.
--srini
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver for Glymur
2026-09-22 18:44 ` [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
2026-09-22 20:40 ` Abel Vesa
2026-09-24 9:02 ` Taniya Das
@ 2026-09-29 15:37 ` Uwe Kleine-König
2 siblings, 0 replies; 12+ messages in thread
From: Uwe Kleine-König @ 2026-09-29 15:37 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: Bjorn Andersson, Stephen Boyd, Krzysztof Kozlowski, Rob Herring,
Conor Dooley, Abel Vesa, Brian Masney, Jerome Brunet,
linux-arm-msm, linux-clk, devicetree, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 608 bytes --]
Hello,
On Tue, Sep 22, 2026 at 07:44:24PM +0100, Srinivas Kandagatla wrote:
> +#include <linux/clk-provider.h>
> +#include <linux/err.h>
> +#include <linux/kernel.h>
> +#include <linux/mod_devicetable.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +#include <linux/regmap.h>
Please don't use <linux/mod_devicetable.h>. That pulls in many unneeded
dependencies and I'm working on getting rid of it.
Just rely on <linux/platform_device.h> to provide of_device_id
(preferred), or include <linux/device-id/of.h> if you want to go full
iwyu.
Best regards
Uwe
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 484 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-09-29 15:37 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-22 18:44 [PATCH 0/4] clk: qcom: Add LPASS clock/reset controllers for Glymur Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 1/4] dt-bindings: clock: Add LPASS AUDIOCC and reset controller " Srinivas Kandagatla
2026-09-28 9:59 ` Krzysztof Kozlowski
2026-09-28 10:00 ` Srinivas Kandagatla
2026-09-22 18:44 ` [PATCH 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
2026-09-28 9:59 ` Krzysztof Kozlowski
2026-09-22 18:44 ` [PATCH 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
2026-09-22 20:40 ` Abel Vesa
2026-09-24 9:02 ` Taniya Das
2026-09-29 15:37 ` Uwe Kleine-König
2026-09-22 18:44 ` [PATCH 4/4] clk: qcom: Add lpass " Srinivas Kandagatla
2026-09-22 20:41 ` Abel Vesa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®