-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge series "ASoC: codecs: add wcd938x support" from Srinivas Kandag…
…atla <srinivas.kandagatla@linaro.org>: This patchset adds support for Qualcomm WCD938X codec. Qualcomm WCD9380/WCD9385 Codec is a standalone Hi-Fi audio codec IC connected over SoundWire. This device has two SoundWire devices, RX and TX respectively supporting 4 x ADCs, ClassH, Ear, Aux PA, 2xHPH, 7 x TX diff inputs, 8 DMICs and MBHC. Eventhough this device has two SoundWire devices, only tx device has access to main codec Control/Status Registers! 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 SM8250 MTP device. Thanks, srini Changes since v8: - moved Kconfig and Makefile changes to last patch as suggested by Mark - removed array of enums and used static entries instead. Suggested by Mark - return true if put succeeds, Suggested by Mark - removed some unneeded semi-colons in switch Srinivas Kandagatla (9): ASoC: dt-bindings: wcd938x: add bindings for wcd938x ASoC: codecs: wcd-clsh: add new version support ASoC: codecs: wcd938x: add basic driver ASoC: dt-bindings: wcd938x-sdw: add bindings for wcd938x-sdw ASoC: codecs: wcd938x-sdw: add SoundWire driver ASoC: codecs: wcd938x: add basic controls ASoC: codecs: wcd938x: add playback dapm widgets ASoC: codecs: wcd938x: add capture dapm widgets ASoC: codecs: wcd938x: add audio routing and Kconfig .../bindings/sound/qcom,wcd938x-sdw.yaml | 70 + .../bindings/sound/qcom,wcd938x.yaml | 146 + sound/soc/codecs/Kconfig | 14 + sound/soc/codecs/Makefile | 4 + sound/soc/codecs/wcd-clsh-v2.c | 348 +- sound/soc/codecs/wcd-clsh-v2.h | 16 + sound/soc/codecs/wcd938x-sdw.c | 315 ++ sound/soc/codecs/wcd938x.c | 3753 +++++++++++++++++ sound/soc/codecs/wcd938x.h | 720 ++++ 9 files changed, 5376 insertions(+), 10 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd938x-sdw.yaml create mode 100644 Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml create mode 100644 sound/soc/codecs/wcd938x-sdw.c create mode 100644 sound/soc/codecs/wcd938x.c create mode 100644 sound/soc/codecs/wcd938x.h -- 2.21.0
- Loading branch information
Showing
9 changed files
with
5,376 additions
and
10 deletions.
There are no files selected for viewing
70 changes: 70 additions & 0 deletions
70
Documentation/devicetree/bindings/sound/qcom,wcd938x-sdw.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/sound/qcom,wcd938x-sdw.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: Bindings for Qualcomm SoundWire Slave devices on WCD9380/WCD9385 | ||
|
||
maintainers: | ||
- Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | ||
|
||
description: | | ||
Qualcomm WCD9380/WCD9385 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: sdw20217010d00 | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
qcom,tx-port-mapping: | ||
description: | | ||
Specifies static port mapping between slave and master tx ports. | ||
In the order of slave port index. | ||
$ref: /schemas/types.yaml#/definitions/uint32-array | ||
minItems: 4 | ||
maxItems: 4 | ||
|
||
qcom,rx-port-mapping: | ||
description: | | ||
Specifies static port mapping between slave and master rx ports. | ||
In the order of slave port index. | ||
$ref: /schemas/types.yaml#/definitions/uint32-array | ||
minItems: 5 | ||
maxItems: 5 | ||
|
||
required: | ||
- compatible | ||
- reg | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
soundwire@3210000 { | ||
#address-cells = <2>; | ||
#size-cells = <0>; | ||
reg = <0x03210000 0x2000>; | ||
wcd938x_rx: codec@0,4 { | ||
compatible = "sdw20217010d00"; | ||
reg = <0 4>; | ||
qcom,rx-port-mapping = <1 2 3 4 5>; | ||
}; | ||
}; | ||
soundwire@3230000 { | ||
#address-cells = <2>; | ||
#size-cells = <0>; | ||
reg = <0x03230000 0x2000>; | ||
wcd938x_tx: codec@0,3 { | ||
compatible = "sdw20217010d00"; | ||
reg = <0 3>; | ||
qcom,tx-port-mapping = <2 3 4 5>; | ||
}; | ||
}; | ||
... |
146 changes: 146 additions & 0 deletions
146
Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
# 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@linaro.org> | ||
|
||
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 | ||
description: A reference to Soundwire tx device phandle | ||
|
||
qcom,rx-device: | ||
$ref: /schemas/types.yaml#/definitions/phandle-array | ||
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,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-buttons-vthreshold-microvolt: | ||
description: | ||
Array of 8 Voltage threshold values corresponding to headset | ||
button0 - button7 | ||
minItems: 8 | ||
maxItems: 8 | ||
|
||
'#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 | ||
- "#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,hphl-jack-type-normally-closed; | ||
qcom,ground-jack-type-normally-closed; | ||
qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>; | ||
qcom,mbhc-headphone-vthreshold-microvolt = <50000>; | ||
}; | ||
/* ... */ | ||
soundwire@3210000 { | ||
#address-cells = <2>; | ||
#size-cells = <0>; | ||
reg = <0x03210000 0x2000>; | ||
wcd938x_rx: codec@0,4 { | ||
compatible = "sdw20217010d00"; | ||
reg = <0 4>; | ||
qcom,rx-port-mapping = <1 2 3 4 5>; | ||
}; | ||
}; | ||
soundwire@3230000 { | ||
#address-cells = <2>; | ||
#size-cells = <0>; | ||
reg = <0x03230000 0x2000>; | ||
wcd938x_tx: codec@0,3 { | ||
compatible = "sdw20217010d00"; | ||
reg = <0 3>; | ||
qcom,tx-port-mapping = <2 3 4 5>; | ||
}; | ||
}; | ||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.