[PATCH 1/2] ASoC: dt-bindings: cs35l45: Adds LDPM settings
From: Ricardo Rivera-Matos
Date: Thu Oct 01 2026 - 11:24:15 EST
Introduce devicetree properties for configuring level
dependent power management (LDPM) functionality.
Signed-off-by: Ricardo Rivera-Matos <rriveram@xxxxxxxxxxxxxxxxxxxxx>
---
.../devicetree/bindings/sound/cirrus,cs35l45.yaml | 86 ++++++++++++++++++++++
include/dt-bindings/sound/cs35l45.h | 27 +++++++
2 files changed, 113 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
index 1ba809888a88..e674811b22b2 100644
--- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
+++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
@@ -71,6 +71,58 @@ properties:
maximum: 7
default: 0
+ cirrus,ldpm-group1-boost-select:
+ type: boolean
+ description:
+ When in a valid group 1 level dependent power management (LDPM) state
+ the integrated boost converter will enter the configured low power mode.
+
+ cirrus,boost-low-power-mode:
+ description:
+ Configures the integrated boost converter reaction to a low power mode
+ request.
+ 0 = No reaction
+ 1 = Force boost DCM low power mode
+ 2 = Force boost static bypass
+ $ref: /schemas/types.yaml#/definitions/uint32
+ default: 2
+ enum:
+ - 0
+ - 1
+ - 2
+
+ cirrus,ldpm-group1-amp-select:
+ type: boolean
+ description:
+ When in a valid group 1 level dependent power management (LDPM) state
+ the amplifier will enter the configured low power mode.
+
+ cirrus,amplifier-low-power-mode:
+ description:
+ Configures the amplifier output stage reaction to a low power mode
+ request.
+ 0 = Stop output switching (noise gate mode)
+ 1 = Noise floor reduction mode
+ $ref: /schemas/types.yaml#/definitions/uint32
+ default: 1
+ enum:
+ - 0
+ - 1
+
+ cirrus,ldpm-group2-vmon-select:
+ type: boolean
+ description:
+ When in a valid group 2 level dependent power management (LDPM) state
+ the voltage monitor (VMON) circuit is put into a low power operational
+ state.
+
+ cirrus,ldpm-group2-imon-select:
+ type: boolean
+ description:
+ When in a valid group 2 level dependent power management (LDPM) state
+ the current monitor (IMON) circuit is put into a low power operational
+ state.
+
patternProperties:
"^cirrus,gpio-ctrl[1-3]$":
description:
@@ -139,6 +191,30 @@ patternProperties:
minimum: 0
maximum: 7
default: 0
+
+ "^cirrus,ldpm-group[1-2]-pcm-threshold-db$":
+ description:
+ Amplifier level dependent power management (LDPM) threshold. Input
+ referred threshold of the PCM audio signal in which the level is low
+ enough for the LDPM group to engage after entry delay. A value of dB
+ -2147483648 is assumed to mean true zero data with an LSB dither.
+ $ref: /schemas/types.yaml#/definitions/int32-array
+ minItems: 1
+ maxItems: 1
+ items:
+ enum: [-2147483648, -102, -96, -90, -84, -78, -72, -66]
+
+ "^cirrus,ldpm-group[1-2]-delay-ms$":
+ description:
+ Amplifier level dependent power management (LDPM) state entry delay.
+ Time that the incoming audio signal must be below the PCM threshold
+ before the LDPM group engages.
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 1
+ maxItems: 1
+ items:
+ enum: [5, 10, 25, 50, 100, 250, 500, 1000]
+
required:
- compatible
- reg
@@ -165,6 +241,16 @@ examples:
CS35L45_ASP_TX_HIZ_DISABLED)>;
cirrus,sync-lsw-txid = <0x1>;
cirrus,sync-sw-txid = <0x1>;
+ cirrus,ldpm-group1-pcm-threshold-db = <(-66)>;
+ cirrus,ldpm-group1-delay-ms = <500>;
+ cirrus,ldpm-group1-boost-select;
+ cirrus,boost-low-power-mode = <CS35L45_BST_LPMODE_DCM_MODE>;
+ cirrus,ldpm-group1-amp-select;
+ cirrus,amplifier-low-power-mode = <CS35L45_AMP_LPMODE_NFR_MODE>;
+ cirrus,ldpm-group2-pcm-threshold-db = <(-102)>;
+ cirrus,ldpm-group2-delay-ms = <1000>;
+ cirrus,ldpm-group2-vmon-select;
+ cirrus,ldpm-group2-imon-select;
cirrus,gpio-ctrl1 {
gpio-ctrl = <0x2>;
};
diff --git a/include/dt-bindings/sound/cs35l45.h b/include/dt-bindings/sound/cs35l45.h
index 25386af18445..5cb77d48b0b8 100644
--- a/include/dt-bindings/sound/cs35l45.h
+++ b/include/dt-bindings/sound/cs35l45.h
@@ -17,6 +17,33 @@
#define CS35L45_ASP_TX_HIZ_UNUSED 0x1
#define CS35L45_ASP_TX_HIZ_DISABLED 0x2
+/*
+ * cirrus,boost-low-power-mode
+ *
+ * BST_LPMODE_NO_REACTION: No reaction
+ * BST_LPMODE_DCM_MODE: Force boost DCM low power mode
+ * BST_LPMODE_STATIC_BYPASS: Force boost static bypass
+ */
+#define CS35L45_BST_LPMODE_NO_REACTION 0x0
+#define CS35L45_BST_LPMODE_DCM_MODE 0x1
+#define CS35L45_BST_LPMODE_STATIC_BYPASS 0x2
+
+/*
+ * cirrus,amplifier-low-power-mode
+ *
+ * AMP_LPMODE_NG_MODE: Noise gate mode
+ * AMP_LPMODE_NFR_MODE: Noise floor reduction mode
+ */
+ #define CS35L45_AMP_LPMODE_NG_MODE 0x0
+ #define CS35L45_AMP_LPMODE_NFR_MODE 0x1
+
+/*
+ * cirrus,ldpm-groupX-pcm-threshold-db
+ *
+ * LDPM_PCM_THLD_TRUE_ZERO:
+ */
+#define CS35L45_LDPM_PCM_THLD_TRUE_ZERO -2147483648
+
/*
* Optional GPIOX Sub-nodes:
* The cs35l45 node can have up to three "cirrus,gpio-ctrlX" ('X' = [1,2,3])
--
2.43.0