[PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec

Alexey Klimov posted 3 patches 3 months, 2 weeks ago
There is a newer version of this series
[PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Alexey Klimov 3 months, 2 weeks ago
The audio codec IC is found on Qualcomm PM4125/PM2250 PMIC.
It has TX and RX soundwire slave devices hence two files
are added.

Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
 .../bindings/sound/qcom,pm4125-codec.yaml          | 147 +++++++++++++++++++++
 .../devicetree/bindings/sound/qcom,pm4125-sdw.yaml |  86 ++++++++++++
 2 files changed, 233 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1b6ce8d4397b4c1c048899bd2cc4d02318cc46c9
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
@@ -0,0 +1,147 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/qcom,pm4125-codec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm PM4125 Audio Codec
+
+maintainers:
+  - Alexey Klimov <alexey.klimov@linaro.org>
+
+description:
+  The audio codec IC found on Qualcomm PM4125/PM2250 PMIC.
+  It has RX and TX Soundwire slave devices.
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: qcom,pm4125-codec
+
+  reg:
+    description:
+      Specifies the SPMI base address for the audio codec peripherals. The
+      address space contains reset register needed to power-on the codec.
+    maxItems: 1
+
+  reg-names:
+    maxItems: 1
+
+  vdd-io-supply:
+    description: A reference to the 1.8V I/O supply
+
+  vdd-cp-supply:
+    description: A reference to the charge pump I/O supply
+
+  vdd-mic-bias-supply:
+    description: A reference to the 3.3V mic bias supply
+
+  vdd-pa-vpos-supply:
+    description: A reference to the PA VPOS supply
+
+  qcom,tx-device:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: A reference to Soundwire tx device phandle
+
+  qcom,rx-device:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: A reference to Soundwire rx device phandle
+
+  qcom,micbias1-microvolt:
+    description: micbias1 voltage
+    minimum: 1800000
+    maximum: 2850000
+
+  qcom,micbias2-microvolt:
+    description: micbias2 voltage
+    minimum: 1800000
+    maximum: 2850000
+
+  qcom,micbias3-microvolt:
+    description: micbias3 voltage
+    minimum: 1800000
+    maximum: 2850000
+
+  qcom,mbhc-buttons-vthreshold-microvolt:
+    description:
+      Array of 8 Voltage threshold values corresponding to headset
+      button0 - button7
+    minItems: 8
+    maxItems: 8
+
+  '#sound-dai-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - vdd-io-supply
+  - vdd-cp-supply
+  - vdd-mic-bias-supply
+  - vdd-pa-vpos-supply
+  - qcom,tx-device
+  - qcom,rx-device
+  - qcom,micbias1-microvolt
+  - qcom,micbias2-microvolt
+  - qcom,micbias3-microvolt
+  - "#sound-dai-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/spmi/spmi.h>
+
+    spmi {
+        #address-cells = <2>;
+        #size-cells = <0>;
+
+        pmic@0 {
+            compatible = "qcom,pm8916", "qcom,spmi-pmic";
+            reg = <0x0 SPMI_USID>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            audio-codec@f000 {
+                compatible = "qcom,pm4125-codec";
+                reg = <0xf000>;
+                vdd-io-supply = <&pm4125_l15>;
+                vdd-cp-supply = <&pm4125_s4>;
+                vdd-pa-vpos-supply = <&pm4125_s4>;
+                vdd-mic-bias-supply = <&pm4125_l22>;
+                qcom,micbias1-microvolt = <1800000>;
+                qcom,micbias2-microvolt = <1800000>;
+                qcom,micbias3-microvolt = <1800000>;
+                qcom,rx-device = <&pm4125_rx>;
+                qcom,tx-device = <&pm4125_tx>;
+                #sound-dai-cells = <1>;
+            };
+        };
+    };
+
+    /* ... */
+
+    soundwire@a610000 {
+        reg = <0x0a610000 0x2000>;
+        #address-cells = <2>;
+        #size-cells = <0>;
+        pm4125_rx: audio-codec@0,4 {
+            compatible = "sdw20217010c00";
+            reg = <0 4>;
+            qcom,rx-port-mapping = <1 3>;
+        };
+    };
+
+    soundwire@a740000 {
+        reg = <0x0a740000 0x2000>;
+        #address-cells = <2>;
+        #size-cells = <0>;
+        pm4125_tx: audio-codec@0,3 {
+            compatible = "sdw20217010c00";
+            reg = <0 3>;
+            qcom,tx-port-mapping = <1 1>;
+        };
+    };
+...
diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7241d2ab5dcf4a0d5f25a75acb33a335f93d3b5e
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml
@@ -0,0 +1,86 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/qcom,pm4125-sdw.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SoundWire Slave devices on PM4125/PM2250 PMIC audio codec.
+
+maintainers:
+  - Alexey Klimov <alexey.klimov@linaro.org>
+
+description: |
+  The audio codec IC found on Qualcomm PM4125/PM2250 PMICs.
+  It has RX and TX Soundwire slave devices. This bindings is for the
+  slave devices.
+
+properties:
+  compatible:
+    const: sdw20217010c00
+
+  reg:
+    maxItems: 1
+
+  qcom,tx-port-mapping:
+    description: |
+      Specifies static port mapping between device and host tx ports.
+      In the order of the device port index which are adc1_port, adc23_port,
+      dmic03_mbhc_port, dmic46_port.
+      Supports maximum 2 tx soundwire ports.
+
+      PM4125 TX Port 1 (ADC1,2 & DMIC0 & MBHC)    <=> SWR0 Port 1
+      PM4125 TX Port 2 (ADC1 & DMIC0,1,2 & MBHC)  <=> SWR0 Port 2
+
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 2
+    maxItems: 2
+    items:
+      enum: [1, 2, 3, 4]
+
+  qcom,rx-port-mapping:
+    description: |
+      Specifies static port mapping between device and host rx ports.
+      In the order of device port index which are hph_port, clsh_port,
+      comp_port, lo_port, dsd port.
+      Supports maximum 2 rx soundwire ports.
+
+      PM4125 RX Port 1 (HPH_L/R)       <==>    SWR1 Port 1 (HPH_L/R)
+      PM4125 RX Port 2 (COMP_L/R)      <==>    SWR1 Port 3 (COMP_L/R)
+
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 2
+    maxItems: 2
+    items:
+      enum: [1, 2, 3, 4, 5]
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    soundwire@a610000 {
+        reg = <0x0a610000 0x2000>;
+        #address-cells = <2>;
+        #size-cells = <0>;
+        pm4125_rx: codec@0,1 {
+            compatible = "sdw20217010c00";
+            reg = <0 1>;
+            qcom,rx-port-mapping = <1 3>;
+        };
+    };
+
+    soundwire@a740000 {
+        reg = <0x0a740000 0x2000>;
+        #address-cells = <2>;
+        #size-cells = <0>;
+        pm4125_tx: codec@0,1 {
+            compatible = "sdw20217010c00";
+            reg = <0 1>;
+            qcom,tx-port-mapping = <1 1>;
+        };
+    };
+
+...

-- 
2.47.2
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Krzysztof Kozlowski 3 months, 2 weeks ago
On Thu, Jun 26, 2025 at 12:50:29AM +0100, Alexey Klimov wrote:
> The audio codec IC is found on Qualcomm PM4125/PM2250 PMIC.
> It has TX and RX soundwire slave devices hence two files
> are added.
> 
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
>  .../bindings/sound/qcom,pm4125-codec.yaml          | 147 +++++++++++++++++++++
>  .../devicetree/bindings/sound/qcom,pm4125-sdw.yaml |  86 ++++++++++++
>  2 files changed, 233 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..1b6ce8d4397b4c1c048899bd2cc4d02318cc46c9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
> @@ -0,0 +1,147 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/qcom,pm4125-codec.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm PM4125 Audio Codec
> +
> +maintainers:
> +  - Alexey Klimov <alexey.klimov@linaro.org>
> +
> +description:
> +  The audio codec IC found on Qualcomm PM4125/PM2250 PMIC.
> +  It has RX and TX Soundwire slave devices.
> +
> +allOf:
> +  - $ref: dai-common.yaml#
> +
> +properties:
> +  compatible:
> +    const: qcom,pm4125-codec
> +
> +  reg:
> +    description:
> +      Specifies the SPMI base address for the audio codec peripherals. The
> +      address space contains reset register needed to power-on the codec.
> +    maxItems: 1
> +
> +  reg-names:
> +    maxItems: 1
> +
> +  vdd-io-supply:
> +    description: A reference to the 1.8V I/O supply
> +
> +  vdd-cp-supply:
> +    description: A reference to the charge pump I/O supply
> +
> +  vdd-mic-bias-supply:
> +    description: A reference to the 3.3V mic bias supply
> +
> +  vdd-pa-vpos-supply:
> +    description: A reference to the PA VPOS supply
> +
> +  qcom,tx-device:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> +    description: A reference to Soundwire tx device phandle
> +
> +  qcom,rx-device:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> +    description: A reference to Soundwire rx device phandle
> +
> +  qcom,micbias1-microvolt:
> +    description: micbias1 voltage
> +    minimum: 1800000
> +    maximum: 2850000
> +
> +  qcom,micbias2-microvolt:
> +    description: micbias2 voltage
> +    minimum: 1800000
> +    maximum: 2850000
> +
> +  qcom,micbias3-microvolt:
> +    description: micbias3 voltage
> +    minimum: 1800000
> +    maximum: 2850000
> +
> +  qcom,mbhc-buttons-vthreshold-microvolt:
> +    description:
> +      Array of 8 Voltage threshold values corresponding to headset
> +      button0 - button7
> +    minItems: 8
> +    maxItems: 8
> +
> +  '#sound-dai-cells':
> +    const: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - vdd-io-supply
> +  - vdd-cp-supply
> +  - vdd-mic-bias-supply
> +  - vdd-pa-vpos-supply
> +  - qcom,tx-device
> +  - qcom,rx-device
> +  - qcom,micbias1-microvolt
> +  - qcom,micbias2-microvolt
> +  - qcom,micbias3-microvolt
> +  - "#sound-dai-cells"

Keep consistent quotes, either ' or "

> +
> +additionalProperties: false

This has to unevaluatedProperties

> +
> +examples:
> +  - |
> +    #include <dt-bindings/spmi/spmi.h>
> +
> +    spmi {
> +        #address-cells = <2>;
> +        #size-cells = <0>;
> +
> +        pmic@0 {

pmic {

> +            compatible = "qcom,pm8916", "qcom,spmi-pmic";

Drop, you have warnings here.

> +            reg = <0x0 SPMI_USID>;

Drop

> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            audio-codec@f000 {
> +                compatible = "qcom,pm4125-codec";
> +                reg = <0xf000>;
> +                vdd-io-supply = <&pm4125_l15>;
> +                vdd-cp-supply = <&pm4125_s4>;
> +                vdd-pa-vpos-supply = <&pm4125_s4>;
> +                vdd-mic-bias-supply = <&pm4125_l22>;
> +                qcom,micbias1-microvolt = <1800000>;
> +                qcom,micbias2-microvolt = <1800000>;
> +                qcom,micbias3-microvolt = <1800000>;
> +                qcom,rx-device = <&pm4125_rx>;
> +                qcom,tx-device = <&pm4125_tx>;
> +                #sound-dai-cells = <1>;
> +            };
> +        };
> +    };
> +
> +    /* ... */
> +
> +    soundwire@a610000 {

Drop this and next one.

> +        reg = <0x0a610000 0x2000>;
> +        #address-cells = <2>;
> +        #size-cells = <0>;
> +        pm4125_rx: audio-codec@0,4 {
> +            compatible = "sdw20217010c00";
> +            reg = <0 4>;
> +            qcom,rx-port-mapping = <1 3>;
> +        };
> +    };
> +
> +    soundwire@a740000 {
> +        reg = <0x0a740000 0x2000>;
> +        #address-cells = <2>;
> +        #size-cells = <0>;
> +        pm4125_tx: audio-codec@0,3 {
> +            compatible = "sdw20217010c00";
> +            reg = <0 3>;
> +            qcom,tx-port-mapping = <1 1>;
> +        };
> +    };
> +...
> diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..7241d2ab5dcf4a0d5f25a75acb33a335f93d3b5e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml
> @@ -0,0 +1,86 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/qcom,pm4125-sdw.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm SoundWire Slave devices on PM4125/PM2250 PMIC audio codec.
> +
> +maintainers:
> +  - Alexey Klimov <alexey.klimov@linaro.org>
> +
> +description: |

Drop |

> +  The audio codec IC found on Qualcomm PM4125/PM2250 PMICs.
> +  It has RX and TX Soundwire slave devices. This bindings is for the
> +  slave devices.

Last sentence is redundant and makes no sense. Codec has only slave
devices, so how this can be anything else than for slave devices?


> +
> +properties:
> +  compatible:
> +    const: sdw20217010c00
> +
> +  reg:
> +    maxItems: 1
> +
> +  qcom,tx-port-mapping:
> +    description: |
> +      Specifies static port mapping between device and host tx ports.
> +      In the order of the device port index which are adc1_port, adc23_port,
> +      dmic03_mbhc_port, dmic46_port.
> +      Supports maximum 2 tx soundwire ports.
> +
> +      PM4125 TX Port 1 (ADC1,2 & DMIC0 & MBHC)    <=> SWR0 Port 1
> +      PM4125 TX Port 2 (ADC1 & DMIC0,1,2 & MBHC)  <=> SWR0 Port 2
> +
> +    $ref: /schemas/types.yaml#/definitions/uint32-array
> +    minItems: 2
> +    maxItems: 2
> +    items:
> +      enum: [1, 2, 3, 4]
> +
> +  qcom,rx-port-mapping:
> +    description: |
> +      Specifies static port mapping between device and host rx ports.
> +      In the order of device port index which are hph_port, clsh_port,
> +      comp_port, lo_port, dsd port.
> +      Supports maximum 2 rx soundwire ports.
> +
> +      PM4125 RX Port 1 (HPH_L/R)       <==>    SWR1 Port 1 (HPH_L/R)
> +      PM4125 RX Port 2 (COMP_L/R)      <==>    SWR1 Port 3 (COMP_L/R)
> +
> +    $ref: /schemas/types.yaml#/definitions/uint32-array
> +    minItems: 2
> +    maxItems: 2
> +    items:
> +      enum: [1, 2, 3, 4, 5]
> +
> +required:
> +  - compatible
> +  - reg

rx and tx are excluding, so this should be here encoded.

> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    soundwire@a610000 {
> +        reg = <0x0a610000 0x2000>;
> +        #address-cells = <2>;
> +        #size-cells = <0>;
> +        pm4125_rx: codec@0,1 {
> +            compatible = "sdw20217010c00";
> +            reg = <0 1>;
> +            qcom,rx-port-mapping = <1 3>;
> +        };
> +    };
> +
> +    soundwire@a740000 {
> +        reg = <0x0a740000 0x2000>;

One example is enough, they are the same.

> +        #address-cells = <2>;
> +        #size-cells = <0>;
> +        pm4125_tx: codec@0,1 {
> +            compatible = "sdw20217010c00";
> +            reg = <0 1>;
> +            qcom,tx-port-mapping = <1 1>;
> +        };
> +    };
> +
> +...
> 
> -- 
> 2.47.2
>
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Alexey Klimov 3 months, 1 week ago
On Thu Jun 26, 2025 at 7:13 AM BST, Krzysztof Kozlowski wrote:
> On Thu, Jun 26, 2025 at 12:50:29AM +0100, Alexey Klimov wrote:
>> The audio codec IC is found on Qualcomm PM4125/PM2250 PMIC.
>> It has TX and RX soundwire slave devices hence two files
>> are added.
>> 
>> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
>> ---
>>  .../bindings/sound/qcom,pm4125-codec.yaml          | 147 +++++++++++++++++++++
>>  .../devicetree/bindings/sound/qcom,pm4125-sdw.yaml |  86 ++++++++++++
>>  2 files changed, 233 insertions(+)
>> 
>> diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..1b6ce8d4397b4c1c048899bd2cc4d02318cc46c9
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml

[..]

>> +  '#sound-dai-cells':
>> +    const: 1
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - vdd-io-supply
>> +  - vdd-cp-supply
>> +  - vdd-mic-bias-supply
>> +  - vdd-pa-vpos-supply
>> +  - qcom,tx-device
>> +  - qcom,rx-device
>> +  - qcom,micbias1-microvolt
>> +  - qcom,micbias2-microvolt
>> +  - qcom,micbias3-microvolt
>> +  - "#sound-dai-cells"
>
> Keep consistent quotes, either ' or "
>
>> +
>> +additionalProperties: false
>
> This has to unevaluatedProperties

Ok for both points, I'll change it.

>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/spmi/spmi.h>
>> +
>> +    spmi {
>> +        #address-cells = <2>;
>> +        #size-cells = <0>;
>> +
>> +        pmic@0 {
>
> pmic {
>
>> +            compatible = "qcom,pm8916", "qcom,spmi-pmic";
>
> Drop, you have warnings here.
>
>> +            reg = <0x0 SPMI_USID>;
>
> Drop

Ok to points above, I'll remove it.

>> +            #address-cells = <1>;
>> +            #size-cells = <0>;
>> +
>> +            audio-codec@f000 {
>> +                compatible = "qcom,pm4125-codec";
>> +                reg = <0xf000>;
>> +                vdd-io-supply = <&pm4125_l15>;
>> +                vdd-cp-supply = <&pm4125_s4>;
>> +                vdd-pa-vpos-supply = <&pm4125_s4>;
>> +                vdd-mic-bias-supply = <&pm4125_l22>;
>> +                qcom,micbias1-microvolt = <1800000>;
>> +                qcom,micbias2-microvolt = <1800000>;
>> +                qcom,micbias3-microvolt = <1800000>;
>> +                qcom,rx-device = <&pm4125_rx>;
>> +                qcom,tx-device = <&pm4125_tx>;
>> +                #sound-dai-cells = <1>;
>> +            };
>> +        };
>> +    };
>> +
>> +    /* ... */
>> +
>> +    soundwire@a610000 {
>
> Drop this and next one.

The audio-codec node supposed to have qcom,{rx,tx}-device properties.
If I'll drop it then the example doesn't compile well unless I am missing
something?

For example when I removed soundwire tx node completely and dropped
qcom,tx-device then:

Documentation/devicetree/bindings/sound/qcom,pm4125-codec.example.dtb: audio-codec@f000 (qcom,pm4125-codec): 'qcom,tx-device' is a required property
	from schema $id: http://devicetree.org/schemas/sound/qcom,pm4125-codec.yaml#

Or should it be qcom,tx-device = <&null_placeholder_something> ?
I can't find any examples.

I guess I can drop example from the other file.

>> +        reg = <0x0a610000 0x2000>;
>> +        #address-cells = <2>;
>> +        #size-cells = <0>;
>> +        pm4125_rx: audio-codec@0,4 {
>> +            compatible = "sdw20217010c00";
>> +            reg = <0 4>;
>> +            qcom,rx-port-mapping = <1 3>;
>> +        };
>> +    };
>> +
>> +    soundwire@a740000 {
>> +        reg = <0x0a740000 0x2000>;
>> +        #address-cells = <2>;
>> +        #size-cells = <0>;
>> +        pm4125_tx: audio-codec@0,3 {
>> +            compatible = "sdw20217010c00";
>> +            reg = <0 3>;
>> +            qcom,tx-port-mapping = <1 1>;
>> +        };
>> +    };
>> +...
>> diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..7241d2ab5dcf4a0d5f25a75acb33a335f93d3b5e
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml
>> @@ -0,0 +1,86 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/sound/qcom,pm4125-sdw.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm SoundWire Slave devices on PM4125/PM2250 PMIC audio codec.
>> +
>> +maintainers:
>> +  - Alexey Klimov <alexey.klimov@linaro.org>
>> +
>> +description: |
>
> Drop |

Ack.

>> +  The audio codec IC found on Qualcomm PM4125/PM2250 PMICs.
>> +  It has RX and TX Soundwire slave devices. This bindings is for the
>> +  slave devices.
>
> Last sentence is redundant and makes no sense. Codec has only slave
> devices, so how this can be anything else than for slave devices?

This came from other similar files that describe bindings for child codec nodes
of soundwire nodes. For example from qcom,wcd937x-sdw.yaml.
Should this be rephrased to "This bindings is for the soundwire slave devices." ?

>> +
>> +properties:
>> +  compatible:
>> +    const: sdw20217010c00
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  qcom,tx-port-mapping:
>> +    description: |
>> +      Specifies static port mapping between device and host tx ports.
>> +      In the order of the device port index which are adc1_port, adc23_port,
>> +      dmic03_mbhc_port, dmic46_port.
>> +      Supports maximum 2 tx soundwire ports.
>> +
>> +      PM4125 TX Port 1 (ADC1,2 & DMIC0 & MBHC)    <=> SWR0 Port 1
>> +      PM4125 TX Port 2 (ADC1 & DMIC0,1,2 & MBHC)  <=> SWR0 Port 2
>> +
>> +    $ref: /schemas/types.yaml#/definitions/uint32-array
>> +    minItems: 2
>> +    maxItems: 2
>> +    items:
>> +      enum: [1, 2, 3, 4]
>> +
>> +  qcom,rx-port-mapping:
>> +    description: |
>> +      Specifies static port mapping between device and host rx ports.
>> +      In the order of device port index which are hph_port, clsh_port,
>> +      comp_port, lo_port, dsd port.
>> +      Supports maximum 2 rx soundwire ports.
>> +
>> +      PM4125 RX Port 1 (HPH_L/R)       <==>    SWR1 Port 1 (HPH_L/R)
>> +      PM4125 RX Port 2 (COMP_L/R)      <==>    SWR1 Port 3 (COMP_L/R)
>> +
>> +    $ref: /schemas/types.yaml#/definitions/uint32-array
>> +    minItems: 2
>> +    maxItems: 2
>> +    items:
>> +      enum: [1, 2, 3, 4, 5]
>> +
>> +required:
>> +  - compatible
>> +  - reg
>
> rx and tx are excluding, so this should be here encoded.

Ok, I think I found a way to change it.

>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    soundwire@a610000 {
>> +        reg = <0x0a610000 0x2000>;
>> +        #address-cells = <2>;
>> +        #size-cells = <0>;
>> +        pm4125_rx: codec@0,1 {
>> +            compatible = "sdw20217010c00";
>> +            reg = <0 1>;
>> +            qcom,rx-port-mapping = <1 3>;
>> +        };
>> +    };
>> +
>> +    soundwire@a740000 {
>> +        reg = <0x0a740000 0x2000>;
>
> One example is enough, they are the same.

Ok, I'll drop it (see my comment above as well).

Thanks,
Alexey
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Krzysztof Kozlowski 3 months, 1 week ago
On 28/06/2025 18:41, Alexey Klimov wrote:
> 
>>> +            #address-cells = <1>;
>>> +            #size-cells = <0>;
>>> +
>>> +            audio-codec@f000 {
>>> +                compatible = "qcom,pm4125-codec";
>>> +                reg = <0xf000>;
>>> +                vdd-io-supply = <&pm4125_l15>;
>>> +                vdd-cp-supply = <&pm4125_s4>;
>>> +                vdd-pa-vpos-supply = <&pm4125_s4>;
>>> +                vdd-mic-bias-supply = <&pm4125_l22>;
>>> +                qcom,micbias1-microvolt = <1800000>;
>>> +                qcom,micbias2-microvolt = <1800000>;
>>> +                qcom,micbias3-microvolt = <1800000>;
>>> +                qcom,rx-device = <&pm4125_rx>;
>>> +                qcom,tx-device = <&pm4125_tx>;
>>> +                #sound-dai-cells = <1>;
>>> +            };
>>> +        };
>>> +    };
>>> +
>>> +    /* ... */
>>> +
>>> +    soundwire@a610000 {
>>
>> Drop this and next one.
> 
> The audio-codec node supposed to have qcom,{rx,tx}-device properties.
> If I'll drop it then the example doesn't compile well unless I am missing
> something?

What did you drop and what did I ask to drop?

> 
> For example when I removed soundwire tx node completely and dropped
> qcom,tx-device then:

I did not ask to drop qcom,tx-device.

...

> 
>>> +  The audio codec IC found on Qualcomm PM4125/PM2250 PMICs.
>>> +  It has RX and TX Soundwire slave devices. This bindings is for the
>>> +  slave devices.
>>
>> Last sentence is redundant and makes no sense. Codec has only slave
>> devices, so how this can be anything else than for slave devices?
> 
> This came from other similar files that describe bindings for child codec nodes
> of soundwire nodes. For example from qcom,wcd937x-sdw.yaml.
> Should this be rephrased to "This bindings is for the soundwire slave devices." ?

You just pasted the same, so I don't get how you want to rephrase into
the same sentence.

> 
Best regards,
Krzysztof
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Alexey Klimov 3 months, 1 week ago
On Mon Jun 30, 2025 at 9:21 AM BST, Krzysztof Kozlowski wrote:
> On 28/06/2025 18:41, Alexey Klimov wrote:
>> 
>>>> +            #address-cells = <1>;
>>>> +            #size-cells = <0>;
>>>> +
>>>> +            audio-codec@f000 {
>>>> +                compatible = "qcom,pm4125-codec";
>>>> +                reg = <0xf000>;
>>>> +                vdd-io-supply = <&pm4125_l15>;
>>>> +                vdd-cp-supply = <&pm4125_s4>;
>>>> +                vdd-pa-vpos-supply = <&pm4125_s4>;
>>>> +                vdd-mic-bias-supply = <&pm4125_l22>;
>>>> +                qcom,micbias1-microvolt = <1800000>;
>>>> +                qcom,micbias2-microvolt = <1800000>;
>>>> +                qcom,micbias3-microvolt = <1800000>;
>>>> +                qcom,rx-device = <&pm4125_rx>;
>>>> +                qcom,tx-device = <&pm4125_tx>;
>>>> +                #sound-dai-cells = <1>;
>>>> +            };
>>>> +        };
>>>> +    };
>>>> +
>>>> +    /* ... */
>>>> +
>>>> +    soundwire@a610000 {
>>>
>>> Drop this and next one.
>> 
>> The audio-codec node supposed to have qcom,{rx,tx}-device properties.
>> If I'll drop it then the example doesn't compile well unless I am missing
>> something?
>
> What did you drop and what did I ask to drop?
>
>> 
>> For example when I removed soundwire tx node completely and dropped
>> qcom,tx-device then:
>
> I did not ask to drop qcom,tx-device.

Dmitry already explained. Ok.

> ...
>
>> 
>>>> +  The audio codec IC found on Qualcomm PM4125/PM2250 PMICs.
>>>> +  It has RX and TX Soundwire slave devices. This bindings is for the
>>>> +  slave devices.
>>>
>>> Last sentence is redundant and makes no sense. Codec has only slave
>>> devices, so how this can be anything else than for slave devices?
>> 
>> This came from other similar files that describe bindings for child codec nodes
>> of soundwire nodes. For example from qcom,wcd937x-sdw.yaml.
>> Should this be rephrased to "This bindings is for the soundwire slave devices." ?
>
> You just pasted the same, so I don't get how you want to rephrase into
> the same sentence.

Not really.
Original sentence: "This bindings is for the slave devices."
Sentence from my email: "This bindings is for the soundwire slave devices."

The difference is 1 word.
If it doesn't work, then maybe any suggestions?

Maybe "This bindings is for audio codec node that must be a child node of the
associated soundwire master node."?

Best regards,
Alexey
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Krzysztof Kozlowski 3 months, 1 week ago
On 02/07/2025 01:30, Alexey Klimov wrote:
>>>>> +  It has RX and TX Soundwire slave devices. This bindings is for the
>>>>> +  slave devices.
>>>>
>>>> Last sentence is redundant and makes no sense. Codec has only slave
>>>> devices, so how this can be anything else than for slave devices?
>>>
>>> This came from other similar files that describe bindings for child codec nodes
>>> of soundwire nodes. For example from qcom,wcd937x-sdw.yaml.
>>> Should this be rephrased to "This bindings is for the soundwire slave devices." ?
>>
>> You just pasted the same, so I don't get how you want to rephrase into
>> the same sentence.
> 
> Not really.
> Original sentence: "This bindings is for the slave devices."
> Sentence from my email: "This bindings is for the soundwire slave devices."
> 
> The difference is 1 word.
> If it doesn't work, then maybe any suggestions?
> 
> Maybe "This bindings is for audio codec node that must be a child node of the
> associated soundwire master node."?
No, drop, it's not the pattern in the bindings. We don't explain that
I2C device should be in I2C bus, because that's obvious. Saying this is
a Soundwire device should be enough.

Best regards,
Krzysztof
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Dmitry Baryshkov 3 months, 1 week ago
On Sat, Jun 28, 2025 at 05:41:31PM +0100, Alexey Klimov wrote:
> On Thu Jun 26, 2025 at 7:13 AM BST, Krzysztof Kozlowski wrote:
> > On Thu, Jun 26, 2025 at 12:50:29AM +0100, Alexey Klimov wrote:
> >> The audio codec IC is found on Qualcomm PM4125/PM2250 PMIC.
> >> It has TX and RX soundwire slave devices hence two files
> >> are added.
> >> 
> >> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> >> ---
> >>  .../bindings/sound/qcom,pm4125-codec.yaml          | 147 +++++++++++++++++++++
> >>  .../devicetree/bindings/sound/qcom,pm4125-sdw.yaml |  86 ++++++++++++
> >>  2 files changed, 233 insertions(+)
> >> 
> >> diff --git a/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
> >> new file mode 100644
> >> index 0000000000000000000000000000000000000000..1b6ce8d4397b4c1c048899bd2cc4d02318cc46c9
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.yaml
> >> +
> >> +    /* ... */
> >> +
> >> +    soundwire@a610000 {
> >
> > Drop this and next one.
> 
> The audio-codec node supposed to have qcom,{rx,tx}-device properties.
> If I'll drop it then the example doesn't compile well unless I am missing
> something?

Examples are compiled as plugins, so you can reference non-existing
handles. Keep the property in the codec and drop the soundwire devices.


-- 
With best wishes
Dmitry
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Rob Herring (Arm) 3 months, 2 weeks ago
On Thu, 26 Jun 2025 00:50:29 +0100, Alexey Klimov wrote:
> The audio codec IC is found on Qualcomm PM4125/PM2250 PMIC.
> It has TX and RX soundwire slave devices hence two files
> are added.
> 
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
>  .../bindings/sound/qcom,pm4125-codec.yaml          | 147 +++++++++++++++++++++
>  .../devicetree/bindings/sound/qcom,pm4125-sdw.yaml |  86 ++++++++++++
>  2 files changed, 233 insertions(+)
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.example.dtb: pmic@0 (qcom,pm8916): audio-codec@f000: 'qcom,micbias1-microvolt', 'qcom,micbias2-microvolt', 'qcom,micbias3-microvolt', 'qcom,rx-device', 'qcom,tx-device', 'vdd-cp-supply', 'vdd-io-supply', 'vdd-mic-bias-supply', 'vdd-pa-vpos-supply' do not match any of the regexes: '^pinctrl-[0-9]+$'
	from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.example.dtb: pmic@0 (qcom,pm8916): audio-codec@f000:compatible:0: 'qcom,pm8916-wcd-analog-codec' was expected
	from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250626-pm4125_audio_codec_v1-v1-1-e52933c429a0@linaro.org

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
Re: [PATCH 1/3] dt-bindings: sound: add bindings for pm4125 audio codec
Posted by Alexey Klimov 3 months, 2 weeks ago
On Thu Jun 26, 2025 at 2:30 AM BST, Rob Herring (Arm) wrote:
>
> On Thu, 26 Jun 2025 00:50:29 +0100, Alexey Klimov wrote:
>> The audio codec IC is found on Qualcomm PM4125/PM2250 PMIC.
>> It has TX and RX soundwire slave devices hence two files
>> are added.
>> 
>> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
>> ---
>>  .../bindings/sound/qcom,pm4125-codec.yaml          | 147 +++++++++++++++++++++
>>  .../devicetree/bindings/sound/qcom,pm4125-sdw.yaml |  86 ++++++++++++
>>  2 files changed, 233 insertions(+)
>> 
>
> My bot found errors running 'make dt_binding_check' on your patch:
>
> yamllint warnings/errors:
>
> dtschema/dtc warnings/errors:
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.example.dtb: pmic@0 (qcom,pm8916): audio-codec@f000: 'qcom,micbias1-microvolt', 'qcom,micbias2-microvolt', 'qcom,micbias3-microvolt', 'qcom,rx-device', 'qcom,tx-device', 'vdd-cp-supply', 'vdd-io-supply', 'vdd-mic-bias-supply', 'vdd-pa-vpos-supply' do not match any of the regexes: '^pinctrl-[0-9]+$'
> 	from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,pm4125-codec.example.dtb: pmic@0 (qcom,pm8916): audio-codec@f000:compatible:0: 'qcom,pm8916-wcd-analog-codec' was expected
> 	from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
>
> doc reference errors (make refcheckdocs):
>
> See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250626-pm4125_audio_codec_v1-v1-1-e52933c429a0@linaro.org

The second patch in the series deals with that. Reordering these two patches
doesn't seem to make a lot of sense so I guess squashing it in here is
a way to go.

Thanks,
Alexey