Message ID | 20240516044801.1061838-2-quic_mohs@quicinc.com |
---|---|
State | Changes Requested |
Headers | show |
Series | ASoC: codecs: wcd937x: add wcd937x audio codec support | expand |
Context | Check | Description |
---|---|---|
robh/checkpatch | success | |
robh/patch-applied | success | |
robh/dtbs-check | warning | build log |
robh/dt-meta-schema | success |
On 16/05/2024 06:47, Mohammad Rafi Shaik wrote: > From: Prasad Kumpatla <quic_pkumpatl@quicinc.com> > > Document the Qualcomm WCD9370/WCD9375 Audio Codec and the > Soundwire devices than can be found on Qualcomm QCM6490 based platforms. > > The Qualcomm WCD9370/WCD9375 Audio Codec communicates Thank you for your patch. There is something to discuss/improve. > + > + 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 4 tx soundwire ports. > + > + WCD9370 TX Port 1 (ADC1) <=> SWR2 Port 2 > + WCD9370 TX Port 2 (ADC2, 3) <=> SWR2 Port 2 > + WCD9370 TX Port 3 (DMIC0,1,2,3 & MBHC) <=> SWR2 Port 3 > + WCD9370 TX Port 4 (DMIC4,5,6,7) <=> SWR2 Port 4 > + > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 4 > + maxItems: 4 > + items: > + oneOf: oneOf here is not needed. Previously used enum should be fine. > + - minimum: 1 > + maximum: 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 5 rx soundwire ports. > + > + WCD9370 RX Port 1 (HPH_L/R) <==> SWR1 Port 1 (HPH_L/R) > + WCD9370 RX Port 2 (CLSH) <==> SWR1 Port 2 (CLSH) > + WCD9370 RX Port 3 (COMP_L/R) <==> SWR1 Port 3 (COMP_L/R) > + WCD9370 RX Port 4 (LO) <==> SWR1 Port 4 (LO) > + WCD9370 RX Port 5 (DSD_L/R) <==> SWR1 Port 5 (DSD) > + > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 5 > + maxItems: 5 > + items: > + oneOf: Again, no need for oneof. > + - minimum: 1 > + maximum: 5 > + > +required: > + - compatible > + - reg > + > +additionalProperties: false > + > +examples: > + - | > + soundwire@3210000 { > + reg = <0x03210000 0x2000>; > + #address-cells = <2>; > + #size-cells = <0>; > + wcd937x_rx: codec@0,4 { > + compatible = "sdw20217010a00"; > + reg = <0 4>; > + qcom,rx-port-mapping = <1 2 3 4 5>; > + }; > + }; > + > + soundwire@3230000 { > + reg = <0x03230000 0x2000>; > + #address-cells = <2>; > + #size-cells = <0>; > + wcd937x_tx: codec@0,3 { > + compatible = "sdw20217010a00"; > + reg = <0 3>; > + qcom,tx-port-mapping = <2 2 3 4>; > + }; > + }; > + > +... > diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml > new file mode 100644 > index 000000000000..5c76083691ea > --- /dev/null > +++ b/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml > @@ -0,0 +1,80 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/sound/qcom,wcd937x.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Qualcomm WCD9370/WCD9375 Audio Codec > + > +maintainers: > + - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > + > +description: > + Qualcomm WCD9370/WCD9375 Codec is a standalone Hi-Fi audio codec IC. > + It has RX and TX Soundwire slave devices. > + > +allOf: > + - $ref: dai-common.yaml# > + - $ref: qcom,wcd93xx-common.yaml# > + > +properties: > + compatible: > + oneOf: > + - const: qcom,wcd9370-codec > + - items: > + - const: qcom,wcd9375-codec > + - const: qcom,wcd9370-codec > + > + vdd-px-supply: > + description: A reference to the 1.8V I/O supply > + > +required: > + - compatible I guess VDDPX is not really optional in the hardware is it? > + > +unevaluatedProperties: false > + > +examples: > + - | > + codec { > + compatible = "qcom,wcd9370-codec"; > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&wcd_reset_n>; > + pinctrl-1 = <&wcd_reset_n_sleep>; > + reset-gpios = <&tlmm 83 0>; Use defines for common/known flags, like GPIO flags. > + vdd-buck-supply = <&vreg_l17b_1p8>; > + vdd-rxtx-supply = <&vreg_l18b_1p8>; > + vdd-px-supply = <&vreg_l18b_1p8>; > + vdd-mic-bias-supply = <&vreg_bob>; > + qcom,micbias1-microvolt = <1800000>; > + qcom,micbias2-microvolt = <1800000>; > + qcom,micbias3-microvolt = <1800000>; > + qcom,micbias4-microvolt = <1800000>; > + qcom,rx-device = <&wcd937x_rx>; > + qcom,tx-device = <&wcd937x_tx>; > + #sound-dai-cells = <1>; > + }; > + > + /* ... */ > + > + soundwire@3210000 { > + reg = <0x03210000 0x2000>; > + #address-cells = <2>; > + #size-cells = <0>; > + wcd937x_rx: codec@0,4 { > + compatible = "sdw20217010a00"; > + reg = <0 4>; Just one space goes before = This applies to all places. > + qcom,rx-port-mapping = <1 2 3 4 5>; > + }; > + }; > + > + soundwire@3230000 { > + reg = <0x03230000 0x2000>; > + #address-cells = <2>; > + #size-cells = <0>; > + wcd937x_tx: codec@0,3 { > + compatible = "sdw20217010a00"; > + reg = <0 3>; Best regards, Krzysztof
On 5/19/2024 11:30 PM, Krzysztof Kozlowski wrote: > On 16/05/2024 06:47, Mohammad Rafi Shaik wrote: >> From: Prasad Kumpatla <quic_pkumpatl@quicinc.com> >> >> Document the Qualcomm WCD9370/WCD9375 Audio Codec and the >> Soundwire devices than can be found on Qualcomm QCM6490 based platforms. >> >> The Qualcomm WCD9370/WCD9375 Audio Codec communicates > > Thank you for your patch. There is something to discuss/improve. > Thanks for the review. >> + >> + 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 4 tx soundwire ports. >> + >> + WCD9370 TX Port 1 (ADC1) <=> SWR2 Port 2 >> + WCD9370 TX Port 2 (ADC2, 3) <=> SWR2 Port 2 >> + WCD9370 TX Port 3 (DMIC0,1,2,3 & MBHC) <=> SWR2 Port 3 >> + WCD9370 TX Port 4 (DMIC4,5,6,7) <=> SWR2 Port 4 >> + >> + $ref: /schemas/types.yaml#/definitions/uint32-array >> + minItems: 4 >> + maxItems: 4 >> + items: >> + oneOf: > > oneOf here is not needed. Previously used enum should be fine. > okay, will add enum instead oneOf. > >> + - minimum: 1 >> + maximum: 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 5 rx soundwire ports. >> + >> + WCD9370 RX Port 1 (HPH_L/R) <==> SWR1 Port 1 (HPH_L/R) >> + WCD9370 RX Port 2 (CLSH) <==> SWR1 Port 2 (CLSH) >> + WCD9370 RX Port 3 (COMP_L/R) <==> SWR1 Port 3 (COMP_L/R) >> + WCD9370 RX Port 4 (LO) <==> SWR1 Port 4 (LO) >> + WCD9370 RX Port 5 (DSD_L/R) <==> SWR1 Port 5 (DSD) >> + >> + $ref: /schemas/types.yaml#/definitions/uint32-array >> + minItems: 5 >> + maxItems: 5 >> + items: >> + oneOf: > > Again, no need for oneof. ACK > >> + - minimum: 1 >> + maximum: 5 >> + >> +required: >> + - compatible >> + - reg >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + soundwire@3210000 { >> + reg = <0x03210000 0x2000>; >> + #address-cells = <2>; >> + #size-cells = <0>; >> + wcd937x_rx: codec@0,4 { >> + compatible = "sdw20217010a00"; >> + reg = <0 4>; >> + qcom,rx-port-mapping = <1 2 3 4 5>; >> + }; >> + }; >> + >> + soundwire@3230000 { >> + reg = <0x03230000 0x2000>; >> + #address-cells = <2>; >> + #size-cells = <0>; >> + wcd937x_tx: codec@0,3 { >> + compatible = "sdw20217010a00"; >> + reg = <0 3>; >> + qcom,tx-port-mapping = <2 2 3 4>; >> + }; >> + }; >> + >> +... >> diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml >> new file mode 100644 >> index 000000000000..5c76083691ea >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml >> @@ -0,0 +1,80 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/sound/qcom,wcd937x.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Qualcomm WCD9370/WCD9375 Audio Codec >> + >> +maintainers: >> + - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> >> + >> +description: >> + Qualcomm WCD9370/WCD9375 Codec is a standalone Hi-Fi audio codec IC. >> + It has RX and TX Soundwire slave devices. >> + >> +allOf: >> + - $ref: dai-common.yaml# >> + - $ref: qcom,wcd93xx-common.yaml# >> + >> +properties: >> + compatible: >> + oneOf: >> + - const: qcom,wcd9370-codec >> + - items: >> + - const: qcom,wcd9375-codec >> + - const: qcom,wcd9370-codec >> + >> + vdd-px-supply: >> + description: A reference to the 1.8V I/O supply >> + >> +required: >> + - compatible > > I guess VDDPX is not really optional in the hardware is it? > yes right, The VDDPX is mandatory supply for all usecases. will add it as required property. >> + >> +unevaluatedProperties: false >> + >> +examples: >> + - | >> + codec { >> + compatible = "qcom,wcd9370-codec"; >> + pinctrl-names = "default", "sleep"; >> + pinctrl-0 = <&wcd_reset_n>; >> + pinctrl-1 = <&wcd_reset_n_sleep>; >> + reset-gpios = <&tlmm 83 0>; > > Use defines for common/known flags, like GPIO flags. > Yes, will use the GPIO flags. >> + vdd-buck-supply = <&vreg_l17b_1p8>; >> + vdd-rxtx-supply = <&vreg_l18b_1p8>; >> + vdd-px-supply = <&vreg_l18b_1p8>; >> + vdd-mic-bias-supply = <&vreg_bob>; >> + qcom,micbias1-microvolt = <1800000>; >> + qcom,micbias2-microvolt = <1800000>; >> + qcom,micbias3-microvolt = <1800000>; >> + qcom,micbias4-microvolt = <1800000>; >> + qcom,rx-device = <&wcd937x_rx>; >> + qcom,tx-device = <&wcd937x_tx>; >> + #sound-dai-cells = <1>; >> + }; >> + >> + /* ... */ >> + >> + soundwire@3210000 { >> + reg = <0x03210000 0x2000>; >> + #address-cells = <2>; >> + #size-cells = <0>; >> + wcd937x_rx: codec@0,4 { >> + compatible = "sdw20217010a00"; >> + reg = <0 4>; > > Just one space goes before = > This applies to all places. > ACK >> + qcom,rx-port-mapping = <1 2 3 4 5>; >> + }; >> + }; >> + >> + soundwire@3230000 { >> + reg = <0x03230000 0x2000>; >> + #address-cells = <2>; >> + #size-cells = <0>; >> + wcd937x_tx: codec@0,3 { >> + compatible = "sdw20217010a00"; >> + reg = <0 3>; > > Best regards, > Krzysztof > Thanks & Regards, Rafi.
diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml new file mode 100644 index 000000000000..e11768340913 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml @@ -0,0 +1,95 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sound/qcom,wcd937x-sdw.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm SoundWire Slave devices on WCD9370/WCD9375 + +maintainers: + - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> + +description: | + Qualcomm WCD9370/WCD9375 Codec is a standalone Hi-Fi audio codec IC. + It has RX and TX Soundwire slave devices. This bindings is for the + slave devices. + +properties: + compatible: + const: sdw20217010a00 + + 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 4 tx soundwire ports. + + WCD9370 TX Port 1 (ADC1) <=> SWR2 Port 2 + WCD9370 TX Port 2 (ADC2, 3) <=> SWR2 Port 2 + WCD9370 TX Port 3 (DMIC0,1,2,3 & MBHC) <=> SWR2 Port 3 + WCD9370 TX Port 4 (DMIC4,5,6,7) <=> SWR2 Port 4 + + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 4 + maxItems: 4 + items: + oneOf: + - minimum: 1 + maximum: 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 5 rx soundwire ports. + + WCD9370 RX Port 1 (HPH_L/R) <==> SWR1 Port 1 (HPH_L/R) + WCD9370 RX Port 2 (CLSH) <==> SWR1 Port 2 (CLSH) + WCD9370 RX Port 3 (COMP_L/R) <==> SWR1 Port 3 (COMP_L/R) + WCD9370 RX Port 4 (LO) <==> SWR1 Port 4 (LO) + WCD9370 RX Port 5 (DSD_L/R) <==> SWR1 Port 5 (DSD) + + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 5 + maxItems: 5 + items: + oneOf: + - minimum: 1 + maximum: 5 + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + soundwire@3210000 { + reg = <0x03210000 0x2000>; + #address-cells = <2>; + #size-cells = <0>; + wcd937x_rx: codec@0,4 { + compatible = "sdw20217010a00"; + reg = <0 4>; + qcom,rx-port-mapping = <1 2 3 4 5>; + }; + }; + + soundwire@3230000 { + reg = <0x03230000 0x2000>; + #address-cells = <2>; + #size-cells = <0>; + wcd937x_tx: codec@0,3 { + compatible = "sdw20217010a00"; + reg = <0 3>; + qcom,tx-port-mapping = <2 2 3 4>; + }; + }; + +... diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml new file mode 100644 index 000000000000..5c76083691ea --- /dev/null +++ b/Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml @@ -0,0 +1,80 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sound/qcom,wcd937x.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm WCD9370/WCD9375 Audio Codec + +maintainers: + - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> + +description: + Qualcomm WCD9370/WCD9375 Codec is a standalone Hi-Fi audio codec IC. + It has RX and TX Soundwire slave devices. + +allOf: + - $ref: dai-common.yaml# + - $ref: qcom,wcd93xx-common.yaml# + +properties: + compatible: + oneOf: + - const: qcom,wcd9370-codec + - items: + - const: qcom,wcd9375-codec + - const: qcom,wcd9370-codec + + vdd-px-supply: + description: A reference to the 1.8V I/O supply + +required: + - compatible + +unevaluatedProperties: false + +examples: + - | + codec { + compatible = "qcom,wcd9370-codec"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&wcd_reset_n>; + pinctrl-1 = <&wcd_reset_n_sleep>; + reset-gpios = <&tlmm 83 0>; + vdd-buck-supply = <&vreg_l17b_1p8>; + vdd-rxtx-supply = <&vreg_l18b_1p8>; + vdd-px-supply = <&vreg_l18b_1p8>; + vdd-mic-bias-supply = <&vreg_bob>; + qcom,micbias1-microvolt = <1800000>; + qcom,micbias2-microvolt = <1800000>; + qcom,micbias3-microvolt = <1800000>; + qcom,micbias4-microvolt = <1800000>; + qcom,rx-device = <&wcd937x_rx>; + qcom,tx-device = <&wcd937x_tx>; + #sound-dai-cells = <1>; + }; + + /* ... */ + + soundwire@3210000 { + reg = <0x03210000 0x2000>; + #address-cells = <2>; + #size-cells = <0>; + wcd937x_rx: codec@0,4 { + compatible = "sdw20217010a00"; + reg = <0 4>; + qcom,rx-port-mapping = <1 2 3 4 5>; + }; + }; + + soundwire@3230000 { + reg = <0x03230000 0x2000>; + #address-cells = <2>; + #size-cells = <0>; + wcd937x_tx: codec@0,3 { + compatible = "sdw20217010a00"; + reg = <0 3>; + qcom,tx-port-mapping = <1 2 3 4>; + }; + }; +...