On Wed, Apr 14, 2021 at 04:48:37PM +0100, Srinivas Kandagatla wrote: > Qualcomm WCD9380/WCD9385 Codec is a standalone Hi-Fi audio codec IC > connected over SoundWire. This device has two SoundWire device RX and > TX respectively, supporting 4 x ADCs, ClassH, Ear, Aux PA, 2xHPH, > 7 x TX diff inputs, 8 DMICs, MBHC. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > --- > .../bindings/sound/qcom,wcd938x.yaml | 176 ++++++++++++++++++ > 1 file changed, 176 insertions(+) > create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml > > diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml > new file mode 100644 > index 000000000000..4c8fa8290af0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml > @@ -0,0 +1,176 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/sound/qcom,wcd938x.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Bindings for Qualcomm WCD9380/WCD9385 Audio Codec > + > +maintainers: > + - Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > + > +description: | > + Qualcomm WCD9380/WCD9385 Codec is a standalone Hi-Fi audio codec IC. > + It has RX and TX Soundwire slave devices. > + > +properties: > + compatible: > + enum: > + - qcom,wcd9380-codec > + - qcom,wcd9385-codec > + > + reset-gpios: > + description: GPIO spec for reset line to use > + maxItems: 1 > + > + vdd-buck-supply: > + description: A reference to the 1.8V buck supply > + > + vdd-rxtx-supply: > + description: A reference to the 1.8V rx supply > + > + vdd-io-supply: > + description: A reference to the 1.8V I/O supply > + > + qcom,tx-device: > + $ref: /schemas/types.yaml#/definitions/phandle-array > + maxItems: 1 > + description: A reference to Soundwire tx device phandle > + > + qcom,rx-device: > + $ref: /schemas/types.yaml#/definitions/phandle-array > + maxItems: 1 > + 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,micbias4-microvolt: > + description: micbias4 voltage > + minimum: 1800000 > + maximum: 2850000 > + > + qcom,mbhc-hphl-switch: > + description: Indicates that HPHL switch type is normally closed > + type: boolean > + > + qcom,mbhc-ground-switch: > + description: Indicates that Headset Ground switch type is normally closed > + type: boolean > + > + qcom,mbhc-button0-vthreshold-microvolt: > + description: Voltage threshold value headset button0 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button1-vthreshold-microvolt: > + description: Voltage threshold value headset button1 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button2-vthreshold-microvolt: > + description: Voltage threshold value headset button2 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button3-vthreshold-microvolt: > + description: Voltage threshold value headset button3 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button4-vthreshold-microvolt: > + description: Voltage threshold value headset button4 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button5-vthreshold-microvolt: > + description: Voltage threshold value headset button5 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button6-vthreshold-microvolt: > + description: Voltage threshold value headset button6 > + minimum: 0 > + maximum: 500000 > + > + qcom,mbhc-button7-vthreshold-microvolt: > + description: Voltage threshold value headset button7 > + minimum: 0 > + maximum: 500000 > + > + '#sound-dai-cells': > + const: 1 > + > +required: > + - compatible > + - reset-gpios > + - qcom,tx-device > + - qcom,rx-device > + - qcom,micbias1-microvolt > + - qcom,micbias2-microvolt > + - qcom,micbias3-microvolt > + - qcom,micbias4-microvolt > + - qcom,mbhc-hphl-switch > + - qcom,mbhc-ground-switch > + - "#sound-dai-cells" > + > +additionalProperties: false > + > +examples: > + - | > + codec { > + compatible = "qcom,wcd9380-codec"; > + reset-gpios = <&tlmm 32 0>; > + #sound-dai-cells = <1>; > + qcom,tx-device = <&wcd938x_tx>; > + qcom,rx-device = <&wcd938x_rx>; > + qcom,micbias1-microvolt = <1800000>; > + qcom,micbias2-microvolt = <1800000>; > + qcom,micbias3-microvolt = <1800000>; > + qcom,micbias4-microvolt = <1800000>; > + qcom,mbhc-hphl-switch; > + qcom,mbhc-ground-switch; > + qcom,mbhc-button0-vthreshold-microvolt = <75000>; > + qcom,mbhc-button1-vthreshold-microvolt = <150000>; > + qcom,mbhc-button2-vthreshold-microvolt = <237000>; > + qcom,mbhc-button3-vthreshold-microvolt = <500000>; > + qcom,mbhc-button5-vthreshold-microvolt = <500000>; > + qcom,mbhc-button6-vthreshold-microvolt = <500000>; > + qcom,mbhc-button7-vthreshold-microvolt = <500000>; > + }; > + > + /* ... */ > + > + soundwire@3230000 { > + #address-cells = <2>; > + #size-cells = <0>; > + reg = <0x03230000 0x2000>; > + wcd938x_tx: codec@0,3 { > + compatible = "sdw20217010d00"; > + reg = <0 3>; > + qcom,direction = "tx"; > + qcom,port-mapping = <2 3 4 5>; > + }; > + > + wcd938x_rx: codec@0,4 { > + compatible = "sdw20217010d00"; > + reg = <0 4>; > + qcom,direction = "rx"; > + qcom,port-mapping = <1 2 3 4 5>; > + }; This is a single device, right? We shouldn't need 3 nodes to describe it. I think this should all be a single node like this: codec@0,3 { reg = <0 3>, <0 4>; compatible = "sdw20217010d00"; reset-gpios = <&tlmm 32 0>; #sound-dai-cells = <1>; qcom,micbias1-microvolt = <1800000>; qcom,micbias2-microvolt = <1800000>; qcom,micbias3-microvolt = <1800000>; qcom,micbias4-microvolt = <1800000>; qcom,mbhc-hphl-switch; qcom,mbhc-ground-switch; qcom,mbhc-button0-vthreshold-microvolt = <75000>; qcom,mbhc-button1-vthreshold-microvolt = <150000>; qcom,mbhc-button2-vthreshold-microvolt = <237000>; qcom,mbhc-button3-vthreshold-microvolt = <500000>; qcom,mbhc-button5-vthreshold-microvolt = <500000>; qcom,mbhc-button6-vthreshold-microvolt = <500000>; qcom,mbhc-button7-vthreshold-microvolt = <500000>; }; You'll have to figure out the qcom,direction and qcom,port-mapping parts though. Rob