2021-05-10 10:13:08

by Srinivas Kandagatla

[permalink] [raw]
Subject: [PATCH 1/4] ASoC: dt-bindings: wcd934x: add bindings for Headset Button detection

Add bindings required for Multi Button Headset detection.
WCD934x support Headsets with upto 8 buttons including, impedance measurement
on both L/R Headset speakers and cross connection detection.

Signed-off-by: Srinivas Kandagatla <[email protected]>
---
.../bindings/sound/qcom,wcd934x.yaml | 65 +++++++++++++++++++
1 file changed, 65 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
index e8f716b5f875..b25c6ca4e97c 100644
--- a/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
@@ -77,6 +77,64 @@ properties:
minimum: 1800000
maximum: 2850000

+ qcom,hphl-jack-type-normally-closed:
+ description: Indicates that HPHL jack switch type is normally closed
+ type: boolean
+
+ qcom,ground-jack-type-normally-closed:
+ description: Indicates that Headset Ground switch type is normally closed
+ type: boolean
+
+ qcom,mbhc-headset-vthreshold-microvolt:
+ description: Voltage threshold value for headset detection
+ minimum: 0
+ maximum: 2850000
+
+ qcom,mbhc-headphone-vthreshold-microvolt:
+ description: Voltage threshold value for headphone detection
+ minimum: 0
+ maximum: 2850000
+
+ qcom,mbhc-button0-vthreshold-microvolt:
+ description: Voltage threshold value for headset button0
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button1-vthreshold-microvolt:
+ description: Voltage threshold value for headset button1
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button2-vthreshold-microvolt:
+ description: Voltage threshold value for headset button2
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button3-vthreshold-microvolt:
+ description: Voltage threshold value for headset button3
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button4-vthreshold-microvolt:
+ description: Voltage threshold value for headset button4
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button5-vthreshold-microvolt:
+ description: Voltage threshold value for headset button5
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button6-vthreshold-microvolt:
+ description: Voltage threshold value for headset button6
+ minimum: 0
+ maximum: 500000
+
+ qcom,mbhc-button7-vthreshold-microvolt:
+ description: Voltage threshold value headset button7
+ minimum: 0
+ maximum: 500000
+
clock-output-names:
const: mclk

@@ -159,6 +217,13 @@ examples:
qcom,micbias2-microvolt = <1800000>;
qcom,micbias3-microvolt = <1800000>;
qcom,micbias4-microvolt = <1800000>;
+ qcom,hphl-jack-type-normally-closed;
+ qcom,ground-jack-type-normally-closed;
+ qcom,mbhc-button0-vthreshold-microvolt = <75000>;
+ qcom,mbhc-button1-vthreshold-microvolt = <150000>;
+ qcom,mbhc-button2-vthreshold-microvolt = <237000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
clock-names = "extclk";
clocks = <&rpmhcc 2>;

--
2.21.0


2021-05-10 16:48:53

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH 1/4] ASoC: dt-bindings: wcd934x: add bindings for Headset Button detection

On Mon, May 10, 2021 at 11:11:58AM +0100, Srinivas Kandagatla wrote:
> Add bindings required for Multi Button Headset detection.
> WCD934x support Headsets with upto 8 buttons including, impedance measurement
> on both L/R Headset speakers and cross connection detection.
>
> Signed-off-by: Srinivas Kandagatla <[email protected]>
> ---
> .../bindings/sound/qcom,wcd934x.yaml | 65 +++++++++++++++++++
> 1 file changed, 65 insertions(+)

A search tells me this is not v1...

>
> diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
> index e8f716b5f875..b25c6ca4e97c 100644
> --- a/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
> +++ b/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
> @@ -77,6 +77,64 @@ properties:
> minimum: 1800000
> maximum: 2850000
>
> + qcom,hphl-jack-type-normally-closed:
> + description: Indicates that HPHL jack switch type is normally closed
> + type: boolean
> +
> + qcom,ground-jack-type-normally-closed:
> + description: Indicates that Headset Ground switch type is normally closed
> + type: boolean

I asked before if 'normally closed' was the more common case and you
said yes. So I'd expect 'open' here, but now you've changed the
polarity of the property. And now not present is not described at all.

> +
> + qcom,mbhc-headset-vthreshold-microvolt:
> + description: Voltage threshold value for headset detection
> + minimum: 0
> + maximum: 2850000
> +
> + qcom,mbhc-headphone-vthreshold-microvolt:
> + description: Voltage threshold value for headphone detection
> + minimum: 0
> + maximum: 2850000
> +
> + qcom,mbhc-button0-vthreshold-microvolt:
> + description: Voltage threshold value for headset button0
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button1-vthreshold-microvolt:
> + description: Voltage threshold value for headset button1
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button2-vthreshold-microvolt:
> + description: Voltage threshold value for headset button2
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button3-vthreshold-microvolt:
> + description: Voltage threshold value for headset button3
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button4-vthreshold-microvolt:
> + description: Voltage threshold value for headset button4
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button5-vthreshold-microvolt:
> + description: Voltage threshold value for headset button5
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button6-vthreshold-microvolt:
> + description: Voltage threshold value for headset button6
> + minimum: 0
> + maximum: 500000
> +
> + qcom,mbhc-button7-vthreshold-microvolt:
> + description: Voltage threshold value headset button7
> + minimum: 0
> + maximum: 500000

These can all be a single pattern property:
'^qcom,mbhc-button[0-7]-vthreshold-microvolt$'

Are there inter-dependencies between these properties? Are 0-7
meaningful or just an index? For the latter case, why not just make this
an array?

> +
> clock-output-names:
> const: mclk
>
> @@ -159,6 +217,13 @@ examples:
> qcom,micbias2-microvolt = <1800000>;
> qcom,micbias3-microvolt = <1800000>;
> qcom,micbias4-microvolt = <1800000>;
> + qcom,hphl-jack-type-normally-closed;
> + qcom,ground-jack-type-normally-closed;
> + qcom,mbhc-button0-vthreshold-microvolt = <75000>;
> + qcom,mbhc-button1-vthreshold-microvolt = <150000>;
> + qcom,mbhc-button2-vthreshold-microvolt = <237000>;
> + qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
> + qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
> clock-names = "extclk";
> clocks = <&rpmhcc 2>;
>
> --
> 2.21.0
>

2021-05-11 09:03:40

by Srinivas Kandagatla

[permalink] [raw]
Subject: Re: [PATCH 1/4] ASoC: dt-bindings: wcd934x: add bindings for Headset Button detection



On 10/05/2021 17:45, Rob Herring wrote:
> On Mon, May 10, 2021 at 11:11:58AM +0100, Srinivas Kandagatla wrote:
>> Add bindings required for Multi Button Headset detection.
>> WCD934x support Headsets with upto 8 buttons including, impedance measurement
>> on both L/R Headset speakers and cross connection detection.
>>
>> Signed-off-by: Srinivas Kandagatla <[email protected]>
>> ---
>> .../bindings/sound/qcom,wcd934x.yaml | 65 +++++++++++++++++++
>> 1 file changed, 65 insertions(+)
>
> A search tells me this is not v1...
>

I did submit something for wcd9335 in the past but not for wcd934x which
is still v1.

Most of these codecs have same MBHC block so the mbhc bindings look same
across them.


>>
>> diff --git a/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml b/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
>> index e8f716b5f875..b25c6ca4e97c 100644
>> --- a/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
>> +++ b/Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
>> @@ -77,6 +77,64 @@ properties:
>> minimum: 1800000
>> maximum: 2850000
>>
>> + qcom,hphl-jack-type-normally-closed:
>> + description: Indicates that HPHL jack switch type is normally closed
>> + type: boolean
>> +
>> + qcom,ground-jack-type-normally-closed:
>> + description: Indicates that Headset Ground switch type is normally closed
>> + type: boolean
>
> I asked before if 'normally closed' was the more common case and you
> said yes. So I'd expect 'open' here, but now you've changed the
> polarity of the property. And now not present is not described at all.

Yes "normally closed" is the normal use case however Banajit commented
on these binding with normally-open at https://lkml.org/lkml/2018/9/26/410

Ground pin may not be present on most of the headset jacks.
So we can not consider the headset jacks as Normally closed when this
property is not specified in the device tree.

So having binding with normally-closed makes it much safer to use.

>
>> +
>> + qcom,mbhc-headset-vthreshold-microvolt:
>> + description: Voltage threshold value for headset detection
>> + minimum: 0
>> + maximum: 2850000
>> +
>> + qcom,mbhc-headphone-vthreshold-microvolt:
>> + description: Voltage threshold value for headphone detection
>> + minimum: 0
>> + maximum: 2850000
>> +
>> + qcom,mbhc-button0-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button0
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button1-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button1
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button2-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button2
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button3-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button3
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button4-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button4
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button5-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button5
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button6-vthreshold-microvolt:
>> + description: Voltage threshold value for headset button6
>> + minimum: 0
>> + maximum: 500000
>> +
>> + qcom,mbhc-button7-vthreshold-microvolt:
>> + description: Voltage threshold value headset button7
>> + minimum: 0
>> + maximum: 500000
>
> These can all be a single pattern property:
> '^qcom,mbhc-button[0-7]-vthreshold-microvolt$'

Thanks for the hint, this works, will change it in next version.

--srini