* [PATCH v3 1/4] dt-bindings: clock: Add LPASS AUDIOCC reset controller for Glymur
2026-10-02 19:44 [PATCH v3 0/4] clk: qcom: Add LPASS clock controllers for Glymur Srinivas Kandagatla
@ 2026-10-02 19:44 ` Srinivas Kandagatla
2026-10-07 21:10 ` Rob Herring (Arm)
2026-10-02 19:44 ` [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Srinivas Kandagatla @ 2026-10-02 19:44 UTC (permalink / raw)
To: andersson, sboyd, bmasney+clk, jbrunet+clk, robh, krzk+dt, conor+dt
Cc: abel.vesa, abelvesa, taniya.das, konrad.dybcio, linux-arm-msm,
linux-clk, devicetree, linux-kernel, Srinivas Kandagatla
The LPASS (Low Power Audio Subsystem) Audio clock controller on Glymur
provides reset support for the SoundWire RX and WSA1..4 masters when
LPASS is under the control of Q6DSP.
The programming model is a near-exact match for the existing SC8280XP
LPASS AUDIOCC, so add the qcom,glymur-lpassaudiocc compatible to the
existing qcom,sc8280xp-lpasscc.yaml rather than creating a new file,
and add a Glymur reset-ID header for the clients.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
---
.../bindings/clock/qcom,sc8280xp-lpasscc.yaml | 6 ++++--
include/dt-bindings/clock/qcom,glymur-lpasscc.h | 16 ++++++++++++++++
2 files changed, 20 insertions(+), 2 deletions(-)
create mode 100644 include/dt-bindings/clock/qcom,glymur-lpasscc.h
diff --git a/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml b/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml
index f235b4e24cc7..a25e043ab894 100644
--- a/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml
@@ -4,22 +4,24 @@
$id: http://devicetree.org/schemas/clock/qcom,sc8280xp-lpasscc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Qualcomm LPASS Core & Audio Clock Controller on SC8280XP
+title: Qualcomm LPASS Core & Audio Clock Controller on SC8280XP and Glymur
maintainers:
- Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
description: |
Qualcomm LPASS core and audio clock control module provides the clocks,
- and reset on SC8280XP.
+ and reset on SC8280XP and Glymur.
See also:
include/dt-bindings/clock/qcom,lpasscc-sc8280xp.h
+ include/dt-bindings/clock/qcom,glymur-lpasscc.h
properties:
compatible:
oneOf:
- enum:
+ - qcom,glymur-lpassaudiocc
- qcom,sc8280xp-lpassaudiocc
- qcom,sc8280xp-lpasscc
- items:
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] 8+ messages in thread* Re: [PATCH v3 1/4] dt-bindings: clock: Add LPASS AUDIOCC reset controller for Glymur
2026-10-02 19:44 ` [PATCH v3 1/4] dt-bindings: clock: Add LPASS AUDIOCC reset controller " Srinivas Kandagatla
@ 2026-10-07 21:10 ` Rob Herring (Arm)
0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring (Arm) @ 2026-10-07 21:10 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: krzk+dt, devicetree, taniya.das, abel.vesa, linux-arm-msm,
jbrunet+clk, andersson, sboyd, conor+dt, linux-clk, abelvesa,
linux-kernel, bmasney+clk, konrad.dybcio
On Fri, 02 Oct 2026 20:44:32 +0100, Srinivas Kandagatla wrote:
> The LPASS (Low Power Audio Subsystem) Audio clock controller on Glymur
> provides reset support for the SoundWire RX and WSA1..4 masters when
> LPASS is under the control of Q6DSP.
>
> The programming model is a near-exact match for the existing SC8280XP
> LPASS AUDIOCC, so add the qcom,glymur-lpassaudiocc compatible to the
> existing qcom,sc8280xp-lpasscc.yaml rather than creating a new file,
> and add a Glymur reset-ID header for the clients.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> ---
> .../bindings/clock/qcom,sc8280xp-lpasscc.yaml | 6 ++++--
> include/dt-bindings/clock/qcom,glymur-lpasscc.h | 16 ++++++++++++++++
> 2 files changed, 20 insertions(+), 2 deletions(-)
> create mode 100644 include/dt-bindings/clock/qcom,glymur-lpasscc.h
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC reset controller for Glymur
2026-10-02 19:44 [PATCH v3 0/4] clk: qcom: Add LPASS clock controllers for Glymur Srinivas Kandagatla
2026-10-02 19:44 ` [PATCH v3 1/4] dt-bindings: clock: Add LPASS AUDIOCC reset controller " Srinivas Kandagatla
@ 2026-10-02 19:44 ` Srinivas Kandagatla
2026-10-07 21:11 ` Rob Herring
2026-10-07 21:11 ` Rob Herring (Arm)
2026-10-02 19:44 ` [PATCH v3 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
2026-10-02 19:44 ` [PATCH v3 4/4] clk: qcom: Add lpass " Srinivas Kandagatla
3 siblings, 2 replies; 8+ messages in thread
From: Srinivas Kandagatla @ 2026-10-02 19:44 UTC (permalink / raw)
To: andersson, sboyd, bmasney+clk, jbrunet+clk, robh, krzk+dt, conor+dt
Cc: abel.vesa, abelvesa, taniya.das, konrad.dybcio, linux-arm-msm,
linux-clk, devicetree, linux-kernel, Srinivas Kandagatla
The LPASS (Low Power Audio Subsystem) clock controller on Glymur
provides reset support for the SoundWire TX master when LPASS is under
the control of Q6DSP.
Add the qcom,glymur-lpasscc compatible to the existing
qcom,sc8280xp-lpasscc.yaml and add the TX reset ID to the Glymur
reset-ID header.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
---
.../devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml | 1 +
include/dt-bindings/clock/qcom,glymur-lpasscc.h | 3 +++
2 files changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml b/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml
index a25e043ab894..b611f1a8b42b 100644
--- a/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml
@@ -22,6 +22,7 @@ properties:
oneOf:
- enum:
- qcom,glymur-lpassaudiocc
+ - qcom,glymur-lpasscc
- qcom,sc8280xp-lpassaudiocc
- qcom,sc8280xp-lpasscc
- items:
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] 8+ messages in thread* Re: [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC reset controller for Glymur
2026-10-02 19:44 ` [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
@ 2026-10-07 21:11 ` Rob Herring
2026-10-07 21:11 ` Rob Herring (Arm)
1 sibling, 0 replies; 8+ messages in thread
From: Rob Herring @ 2026-10-07 21:11 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: andersson, sboyd, bmasney+clk, jbrunet+clk, krzk+dt, conor+dt,
abel.vesa, abelvesa, taniya.das, konrad.dybcio, linux-arm-msm,
linux-clk, devicetree, linux-kernel
On Fri, Oct 02, 2026 at 08:44:33PM +0100, Srinivas Kandagatla wrote:
> The LPASS (Low Power Audio Subsystem) clock controller on Glymur
> provides reset support for the SoundWire TX master when LPASS is under
> the control of Q6DSP.
The subject on these should probably have "QCom" in it somewhere...
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC reset controller for Glymur
2026-10-02 19:44 ` [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
2026-10-07 21:11 ` Rob Herring
@ 2026-10-07 21:11 ` Rob Herring (Arm)
1 sibling, 0 replies; 8+ messages in thread
From: Rob Herring (Arm) @ 2026-10-07 21:11 UTC (permalink / raw)
To: Srinivas Kandagatla
Cc: andersson, jbrunet+clk, abel.vesa, devicetree, krzk+dt,
bmasney+clk, conor+dt, abelvesa, sboyd, linux-kernel, linux-clk,
taniya.das, linux-arm-msm, konrad.dybcio
On Fri, 02 Oct 2026 20:44:33 +0100, Srinivas Kandagatla wrote:
> The LPASS (Low Power Audio Subsystem) clock controller on Glymur
> provides reset support for the SoundWire TX master when LPASS is under
> the control of Q6DSP.
>
> Add the qcom,glymur-lpasscc compatible to the existing
> qcom,sc8280xp-lpasscc.yaml and add the TX reset ID to the Glymur
> reset-ID header.
>
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
> ---
> .../devicetree/bindings/clock/qcom,sc8280xp-lpasscc.yaml | 1 +
> include/dt-bindings/clock/qcom,glymur-lpasscc.h | 3 +++
> 2 files changed, 4 insertions(+)
>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 3/4] clk: qcom: Add lpass audio clock controller driver for Glymur
2026-10-02 19:44 [PATCH v3 0/4] clk: qcom: Add LPASS clock controllers for Glymur Srinivas Kandagatla
2026-10-02 19:44 ` [PATCH v3 1/4] dt-bindings: clock: Add LPASS AUDIOCC reset controller " Srinivas Kandagatla
2026-10-02 19:44 ` [PATCH v3 2/4] dt-bindings: clock: Add LPASSCC " Srinivas Kandagatla
@ 2026-10-02 19:44 ` Srinivas Kandagatla
2026-10-02 19:44 ` [PATCH v3 4/4] clk: qcom: Add lpass " Srinivas Kandagatla
3 siblings, 0 replies; 8+ messages in thread
From: Srinivas Kandagatla @ 2026-10-02 19:44 UTC (permalink / raw)
To: andersson, sboyd, bmasney+clk, jbrunet+clk, robh, krzk+dt, conor+dt
Cc: abel.vesa, abelvesa, taniya.das, konrad.dybcio, 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>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Taniya Das <taniya.das@oss.qualcomm.com>
---
drivers/clk/qcom/Kconfig | 11 +++++
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/lpasscc-glymur.c | 68 +++++++++++++++++++++++++++++++
3 files changed, 80 insertions(+)
create mode 100644 drivers/clk/qcom/lpasscc-glymur.c
diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
index 27d0ab24d50a..89e6a636e497 100644
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -1274,6 +1274,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 6affb5073f26..0c7a67b9cee3 100644
--- a/drivers/clk/qcom/Makefile
+++ b/drivers/clk/qcom/Makefile
@@ -151,6 +151,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..b7fdd76df2f5
--- /dev/null
+++ b/drivers/clk/qcom/lpasscc-glymur.c
@@ -0,0 +1,68 @@
+// 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/module.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 = 0x3020,
+};
+
+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 = 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] 8+ messages in thread* [PATCH v3 4/4] clk: qcom: Add lpass clock controller driver for Glymur
2026-10-02 19:44 [PATCH v3 0/4] clk: qcom: Add LPASS clock controllers for Glymur Srinivas Kandagatla
` (2 preceding siblings ...)
2026-10-02 19:44 ` [PATCH v3 3/4] clk: qcom: Add lpass audio clock controller driver " Srinivas Kandagatla
@ 2026-10-02 19:44 ` Srinivas Kandagatla
3 siblings, 0 replies; 8+ messages in thread
From: Srinivas Kandagatla @ 2026-10-02 19:44 UTC (permalink / raw)
To: andersson, sboyd, bmasney+clk, jbrunet+clk, robh, krzk+dt, conor+dt
Cc: abel.vesa, abelvesa, taniya.das, konrad.dybcio, 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>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Reviewed-by: Taniya Das <taniya.das@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 b7fdd76df2f5..742a88ed318a 100644
--- a/drivers/clk/qcom/lpasscc-glymur.c
+++ b/drivers/clk/qcom/lpasscc-glymur.c
@@ -37,10 +37,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] 8+ messages in thread