lkml.org 
[lkml]   [2023]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH v4 0/5] ASoC: codecs: add support for WCD939x Codec
Date
Add the main WCD9390/WCD9395 Audio Codec driver to support:
- 4 ADC inputs for up to 5 Analog Microphones
- 4 DMIC inputs for up to 8 Digital Microphones
- 4 Microphone BIAS
- Stereo Headphone output
- Mono EAR output
- MBHC engine for Headset Detection

This adds:
- bindings
- MBHC changes to support Type-C muc
- Soundwire Slave driver
- Code driver

The USB Mux subsystem support will be submitted separalety
since it's a functionally separate subsystem connected over
I2C with it's own reset signal.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
---
Changes in v4:
- Soundwire driver
- Removed volatile/read-only registers from defaults list
- Added a wcd939x_readable_register() with read-only + read-write registers, so cache does it's job
- Added wcd939x_volatile_register() with only volatile registers
- Fixed a probable but by not using devm_ from probe() otherwise it would be freed in component unbind
- Fixed lifetime of the soundwire device, by setting it un forced suspend until component it bound
- Used the component bind/unbind to control the runtime pm, avoiding soundwire callbacks when not bound
- Added a wcd939x_swr_get_regmap() callback, because dev_get_regmap() would not work anymore without using devm in probe
- Removed useless pm_runtime_mark_last_busy in resume
- Codec driver
- Fixed hph_mode setup, returning 0 is already set, checking against all possible values
- Used CLS_H_NORMAL instead CLS_H_INVALID as it should be in the hph_mode_mux_text list
- Used wcd939x_swr_get_regmap() to get TX SoundWire device device
- Fixed a probable uninitialized usage of version variable in probe
- Link to v3: https://lore.kernel.org/r/20231207-topic-sm8650-upstream-wcd939x-codec-v3-0-6df9585ec7c8@linaro.org

Changes in v3:
- Fixed W=1 and smatch warnings reported by lkp & Dan Carpenter
- Fixed dependency on CONFIG_TYPEC and added guards to not build type-c related code when disabled
- Collected review on second bindings patch
- Link to v2: https://lore.kernel.org/r/20231201-topic-sm8650-upstream-wcd939x-codec-v2-0-94ed814b25aa@linaro.org

Changes in v2:
- Bindings:
- Dropped all references to "Slave" or "Host" terminology when possible
- Collected review for first patch
- Added wcd9395 as fallback of wcd9390
- Fixes typos errors
- MBHC:
- Dropped all references to "Slave" or "Host" terminology when possible
- Fixed EXPORT_SYMBOL into EXPORT_SYMBOL_GPL
- Fixed typo in commit message
- Soundwire Devices driver
- Dropped all references to "Slave" or "Host" terminology when possible
- Dropped comments and unused code
- Reworked wcd939x_swr_get_current_bank()
- Added comments to wcd9390_interrupt_callback()
- Reworked regmap's wcd939x_readonly/volatile_register checks
- Added comments explaining while bind/unbind are empty
- Added comment on SDW_SLAVE_ENTRY meaning
- Added more register fields defines
- Style fixes
- Codec driver
- Dropped all references to "Slave" or "Host" terminology when possible
- Added MICB_BIAS_ values enum and used them in the code
- Moved zdet_param to the top
- Added TLV data for ear_pa_gain and used it
- Defined as much as possible every bit field used on/from register
- Replaced 1/0 to true/false when writing to single bit fields
- Replaced for loop on all bits with ffs(), simplified code
- Simplified MICB fields handling code
- Reworked and simplified wcd939x_get/set_compander and other kcontrol get/setters
- Reworked and simplified MHGC impedance/zdet/qval code, dropped dead code
- Added comments on wcd939x_wd_handle_irq() utility
- Added comment on the interrupt handling architecture
- I've not moved common code yet, I'll probably do later since it would alter wcd939x code
- Link to v1: https://lore.kernel.org/r/20231123-topic-sm8650-upstream-wcd939x-codec-v1-0-21d4ad9276de@linaro.org

---
Neil Armstrong (5):
ASoC: dt-bindings: qcom,wcd938x: move out common properties
ASoC: dt-bindings: document WCD939x Audio Codec
ASoC: codec: wcd-mbhc-v2: add support when connected behind an USB-C audio mux
ASoC: codecs: Add WCD939x Soundwire devices driver
ASoC: codecs: Add WCD939x Codec driver

.../devicetree/bindings/sound/qcom,wcd938x.yaml | 81 +-
.../bindings/sound/qcom,wcd939x-sdw.yaml | 69 +
.../devicetree/bindings/sound/qcom,wcd939x.yaml | 96 +
.../bindings/sound/qcom,wcd93xx-common.yaml | 95 +
sound/soc/codecs/Kconfig | 19 +
sound/soc/codecs/Makefile | 7 +
sound/soc/codecs/wcd-clsh-v2.h | 1 +
sound/soc/codecs/wcd-mbhc-v2.c | 95 +-
sound/soc/codecs/wcd-mbhc-v2.h | 3 +
sound/soc/codecs/wcd939x-sdw.c | 1551 ++++++++
sound/soc/codecs/wcd939x.c | 3686 ++++++++++++++++++++
sound/soc/codecs/wcd939x.h | 989 ++++++
12 files changed, 6597 insertions(+), 95 deletions(-)
---
base-commit: 07b677953b9dca02928be323e2db853511305fa9
change-id: 20231123-topic-sm8650-upstream-wcd939x-codec-c46f621b55d4

Best regards,
--
Neil Armstrong <neil.armstrong@linaro.org>


\
 
 \ /
  Last update: 2023-12-19 13:46    [W:0.049 / U:0.776 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site