Linux-Devicetree Archive on lore.kernel.org
 help / color / Atom feed
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
To: Rob Herring <robh@kernel.org>
Cc: broonie@kernel.org, devicetree@vger.kernel.org, perex@perex.cz,
	alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
	lgirdwood@gmail.com
Subject: Re: [PATCH v4 1/9] ASoC: dt-bindings: wcd938x: add bindings for wcd938x
Date: Thu, 15 Apr 2021 17:53:24 +0100
Message-ID: <96e7c752-a962-cb5b-c936-8151fd4c32ea@linaro.org> (raw)
In-Reply-To: <20210415162947.GA1511094@robh.at.kernel.org>

Thanks Rob for quick review,

On 15/04/2021 17:29, Rob Herring wrote:
> 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@linaro.org>
>> ---
>>   .../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 @@

...

>> +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:
> 
No, WCD938x is a Audio Codec which has two SoundWire Slave device (TX 
and RX). WCD938X reset lines and supplies are common for both TX and RX 
SoundWire devices.

However TX SoundWire device only has register access to codec 
CSR(Control Status registers).

So there are two SoundWire devices and a WCD938X common parts. Now 
making the common Codec part as a separate device made more sense here.
So we ended with total 3 devices.

1 . WCD938x Codec which deals with all the codec side including Common 
parts.
2. TX SoundWire device to configure TX SoundWire ports/interface and 
provide CSR access.
3. RX SoundWire device to configure RX Soundwire ports/interface


> codec@0,3 {
>          reg = <0 3>, <0 4>;

We can't have this, as these two SoundWire devices hang on different 
SoundWire bus instances.

> 	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.

That is the reason why we ended up with 3 devices here.

--srini
> 
> Rob
> 

  reply index

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-14 15:48 [PATCH v4 0/9] ASoC: codecs: add wcd938x support Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 1/9] ASoC: dt-bindings: wcd938x: add bindings for wcd938x Srinivas Kandagatla
2021-04-15 16:29   ` Rob Herring
2021-04-15 16:53     ` Srinivas Kandagatla [this message]
2021-04-30  8:20       ` Srinivas Kandagatla
2021-04-15 17:06     ` Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 2/9] ASoC: codecs: wcd-clsh: add new version support Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 3/9] ASoC: codecs: wcd938x: add basic driver Srinivas Kandagatla
2021-04-15  1:15   ` kernel test robot
2021-04-15  2:54   ` kernel test robot
2021-04-14 15:48 ` [PATCH v4 4/9] ASoC: dt-bindings: wcd938x-sdw: add bindings for wcd938x-sdw Srinivas Kandagatla
2021-04-15 16:39   ` Rob Herring
2021-04-15 16:57     ` Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 5/9] ASoC: codecs: wcd938x-sdw: add SoundWire driver Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 6/9] ASoC: codecs: wcd938x: add basic controls Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 7/9] ASoC: codecs: wcd938x: add playback dapm widgets Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 8/9] ASoC: codecs: wcd938x: add capture " Srinivas Kandagatla
2021-04-14 15:48 ` [PATCH v4 9/9] ASoC: codecs: wcd938x: add audio routing Srinivas Kandagatla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=96e7c752-a962-cb5b-c936-8151fd4c32ea@linaro.org \
    --to=srinivas.kandagatla@linaro.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-Devicetree Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-devicetree/0 linux-devicetree/git/0.git
	git clone --mirror https://lore.kernel.org/linux-devicetree/1 linux-devicetree/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-devicetree linux-devicetree/ https://lore.kernel.org/linux-devicetree \
		devicetree@vger.kernel.org
	public-inbox-index linux-devicetree

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-devicetree


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git