mbox series

[v3,0/7] ASoC: codecs: wcd937x: add wcd937x audio codec support

Message ID 20240425091857.2161088-1-quic_mohs@quicinc.com
Headers show
Series ASoC: codecs: wcd937x: add wcd937x audio codec support | expand

Message

Mohammad Rafi Shaik April 25, 2024, 9:18 a.m. UTC
This patchset adds support for Qualcomm WCD9370/WCD9375 codec.

Qualcomm WCD9370/WCD9375 Codec is a standalone Hi-Fi audio codec IC
connected over SoundWire. This device has two SoundWire devices, RX and
TX respectively supporting 3 x ADCs, ClassH, Ear, Aux PA, 2xHPH,
6 DMICs and MBHC.

For codec driver to be functional it would need both tx and rx Soundwire devices
to be up and this is taken care by using device component framework and device-links
are used to ensure proper pm dependencies. Ex tx does not enter suspend
before rx or codec is suspended.

This patchset along with other SoundWire patches on the list
have been tested on QCM6490 IDP device.

Changes since v2:
 - Used common qcom,wcd93xx-common.yaml. removed duplicate properties.
 - Merged bindings patches "v2-0001" and "v2-0003" in single patch for easy review.
 - Fixed dt binding check errors.
 - Added missing "qcom,wcd9375-codec" in v3-0001 dt binding patch.
 - Added constraints on values in v3-0001 binding patch as suggested by Krzysztof
 - Fix the typo mistake in v2 cover letter
 
Changes since v1:
 - Split the patch per driver for easier review as suggested by Krzysztof
 - Used devm_gpiod_get api to get reset gpio as suggested by Krzysztof

Prasad Kumpatla (7):
  ASoC: dt-bindings: document wcd937x Audio Codec
  ASoC: codecs: wcd937x: add wcd937x codec driver
  ASoC: codecs: wcd937x-sdw: add SoundWire driver
  ASoC: codecs: wcd937x: add basic controls
  ASoC: codecs: wcd937x: add playback dapm widgets
  ASoC: codecs: wcd937x: add capture dapm widgets
  ASoC: codecs: wcd937x: add audio routing and Kconfig

 .../bindings/sound/qcom,wcd937x-sdw.yaml      |   78 +
 .../bindings/sound/qcom,wcd937x.yaml          |   58 +
 sound/soc/codecs/Kconfig                      |   20 +
 sound/soc/codecs/Makefile                     |    7 +
 sound/soc/codecs/wcd937x-sdw.c                | 1147 +++++++
 sound/soc/codecs/wcd937x.c                    | 3036 +++++++++++++++++
 sound/soc/codecs/wcd937x.h                    |  653 ++++
 7 files changed, 4999 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml
 create mode 100644 sound/soc/codecs/wcd937x-sdw.c
 create mode 100644 sound/soc/codecs/wcd937x.c
 create mode 100644 sound/soc/codecs/wcd937x.h


base-commit: 5e4f84f18c4ee9b0ccdc19e39b7de41df21699dd

Comments

Rob Herring April 25, 2024, 10:38 a.m. UTC | #1
On Thu, 25 Apr 2024 14:48:51 +0530, Mohammad Rafi Shaik wrote:
> From: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
> 
> Document the Qualcomm WCD9370/WCD9375 Audio Codec and the soundwire
> devices can be found on Qualcomm QCM6490 based platforms.
> 
> The Qualcomm WCD9370/WCD9375 Audio Codec communicates
> with the host SoC over 2 Soundwire links to provide:
> - 3 TX ADC paths with 4 differential AMIC inputs
> - 6 DMIC inputs that are shared with AMIC input
> - 4 Microphone BIAS
> - RX paths with 4 PAs – HPHL/R, EAR and AUX
> - Stereo Headphone output
> - MBHC engine for Headset Detection
> 
> Co-developed-by: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
> Signed-off-by: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
> Signed-off-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
> ---
>  .../bindings/sound/qcom,wcd937x-sdw.yaml      | 78 +++++++++++++++++++
>  .../bindings/sound/qcom,wcd937x.yaml          | 58 ++++++++++++++
>  2 files changed, 136 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml
>  create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml
> 

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

yamllint warnings/errors:
./Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml:30:11: [warning] wrong indentation: expected 4 but found 10 (indentation)
./Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml:34:13: [warning] wrong indentation: expected 6 but found 12 (indentation)
./Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml:34:17: [warning] too many spaces before colon (colons)
./Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml:46:13: [warning] wrong indentation: expected 6 but found 12 (indentation)
./Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.yaml:46:17: [warning] too many spaces before colon (colons)

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,wcd937x.example.dtb: codec: compatible:0: 'sdw20217010a00' was expected
	from schema $id: http://devicetree.org/schemas/sound/qcom,wcd937x.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,wcd937x.example.dtb: codec: 'reg' is a required property
	from schema $id: http://devicetree.org/schemas/sound/qcom,wcd937x.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,wcd937x.example.dtb: codec: '#sound-dai-cells', 'qcom,micbias1-microvolt', 'qcom,micbias2-microvolt', 'qcom,micbias3-microvolt', 'qcom,micbias4-microvolt', 'qcom,rx-device', 'qcom,tx-device', 'reset-gpios', 'vdd-buck-supply', 'vdd-mic-bias-supply', 'vdd-px-supply', 'vdd-rxtx-supply' do not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/sound/qcom,wcd937x.yaml#

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240425091857.2161088-2-quic_mohs@quicinc.com

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.
Mohammad Rafi Shaik April 25, 2024, 11:47 a.m. UTC | #2
On 4/25/2024 4:31 PM, Krzysztof Kozlowski wrote:
> On 25/04/2024 11:18, Mohammad Rafi Shaik wrote:
>> From: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
>>
>> Document the Qualcomm WCD9370/WCD9375 Audio Codec and the soundwire
>> devices can be found on Qualcomm QCM6490 based platforms.
>>
>> The Qualcomm WCD9370/WCD9375 Audio Codec communicates
>> with the host SoC over 2 Soundwire links to provide:
>> - 3 TX ADC paths with 4 differential AMIC inputs
>> - 6 DMIC inputs that are shared with AMIC input
>> - 4 Microphone BIAS
>> - RX paths with 4 PAs – HPHL/R, EAR and AUX
>> - Stereo Headphone output
>> - MBHC engine for Headset Detection
>>
>> Co-developed-by: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
>> Signed-off-by: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
>> Signed-off-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
> 
> 1. That's odd order of tags. Who created the first patch?

    First patch is created by : Prasad Kumpatla <quic_pkumpatl@quicinc.com>
> 
> 2. Last time you received report that this was not tested. Now there is
> again report.
> Are you sure you test patches before sending?
> 
   Yes i have tested patches multiple times before sending.

   In my setup the "make dt_binding_check"  became success, there is no 
errors.

   log:

   DTC     Documentation/devicetree/bindings/sound/zl38060.example.dtb
   DTEX 
Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.example.dts
   DTC 
Documentation/devicetree/bindings/sound/qcom,wcd937x-sdw.example.dtb
   DTEX    Documentation/devicetree/bindings/sound/qcom,wcd937x.example.dts
   DTC     Documentation/devicetree/bindings/sound/qcom,wcd937x.example.dtb
   DTEX 
Documentation/devicetree/bindings/soundwire/qcom,soundwire.example.dts
   DTC 
Documentation/devicetree/bindings/soundwire/qcom,soundwire.example.dtb

   Not sure why errors not coming in my setup,
   Will check in different Machine.

> Best regards,
> Krzysztof

Thanks and regards,
Rafi
>
Krzysztof Kozlowski April 25, 2024, 11:53 a.m. UTC | #3
On 25/04/2024 13:47, Mohammad Rafi Shaik wrote:
> On 4/25/2024 4:31 PM, Krzysztof Kozlowski wrote:
>> On 25/04/2024 11:18, Mohammad Rafi Shaik wrote:
>>> From: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
>>>
>>> Document the Qualcomm WCD9370/WCD9375 Audio Codec and the soundwire
>>> devices can be found on Qualcomm QCM6490 based platforms.
>>>
>>> The Qualcomm WCD9370/WCD9375 Audio Codec communicates
>>> with the host SoC over 2 Soundwire links to provide:
>>> - 3 TX ADC paths with 4 differential AMIC inputs
>>> - 6 DMIC inputs that are shared with AMIC input
>>> - 4 Microphone BIAS
>>> - RX paths with 4 PAs – HPHL/R, EAR and AUX
>>> - Stereo Headphone output
>>> - MBHC engine for Headset Detection
>>>
>>> Co-developed-by: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
>>> Signed-off-by: Mohammad Rafi Shaik <quic_mohs@quicinc.com>
>>> Signed-off-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
>>
>> 1. That's odd order of tags. Who created the first patch?
> 
>     First patch is created by : Prasad Kumpatla <quic_pkumpatl@quicinc.com>

So look at submitting patches explaining the order.


>>
>> 2. Last time you received report that this was not tested. Now there is
>> again report.
>> Are you sure you test patches before sending?
>>
>    Yes i have tested patches multiple times before sending.
> 
>    In my setup the "make dt_binding_check"  became success, there is no 
> errors.
> 

I can easily reproduce the errors, so you probably don't have yamllint
and use old dtschema and/or old kernel.



Best regards,
Krzysztof