[PATCH 00/13] ASoC: Intel: Catpt - Lynx and Wildcat point
Cezary Rojewski
cezary.rojewski at intel.com
Fri Aug 7 13:06:36 CEST 2020
Implement support for Lynxpoint and Wildcat Point AudioDSP. Catpt
solution deprecates existing sound/soc/intel/haswell which is removed in
the following series. This cover-letter is followed by 'Developer's deep
dive' message schedding light on catpt's key concepts and areas
addressed.
Due to high range of errors and desynchronization from recommendations
set by Windows solution, re-write came as a lower-cost solution compared
to refactoring /haswell/ with several series of patches.
Special thanks go to Marcin Barlik and Piotr Papierkowski for sharing
their LPT/WPT AudioDSP architecture expertise as well as helping
backtrack its historical background.
My thanks go to Amadeusz Slawinski for reviews and improvements proposed
on and off the internal list. Most of diff below is his contribution.
Krzysztof Hejmowski helped me setup my own Xtensa environment and
recompile LPT/WPT FW binary sources what sped up the development greatly.
This would not have been possible without help from these champions,
especially considering how quickly the catpt was written: 2 weeks
features, 3 weeks optimizations. Thank you.
Diff against last drop on internal list:
- replaced spinlock with mutex for mregion allocation and release to
address sleeping in atomic context warnings
- fixed coredump fw_hash dumping
- kcontrol values are now always stored regardless of stream of interest
is running or not
- kcontrol values are now applied after stream is prepared instead of
ignoring what has been set by user initially
- catpt_pdata instances have been renamed from hsw_ and bdw_ to lpt_ and
wpt_ respectively
- reordered Makefile .o(s) (cosmetic)
Userspace-exposed members are compatible with what is exposed by
deprecated solution as well as FW binary being re-used thus no harm is
done. The only visible differences are: the newly added 'Loopback Mute'
kcontrol and volume support extending to quad from stereo.
On top of fixing erros and design flows, catpt also adds module reload,
dynamic SRAM memory allocation during PCM runtime and exposes missing
userspace API: 'Loopback Mute' kcontrol, quad volume controls and sysfs
fw-version entries. Event tracing is provided to easy solution
debugging.
Following are not included in this update and are scheduled as later
addition:
- fw logging
- module (library) support
Note: LPT power up/down sequences might get aligned with WPT once enough
testing is done as capabilities are shared for both DSPs.
Note #2: Both LPT and WPT power up/down sequences may get optimized in
future updates as thanks to help from the Windows team, most of nuances
behind why/what/when in regard to hw registers have been backtracked and
reviewed again.
Cezary Rojewski (13):
ASoC: Intel: Add catpt device
ASoC: Intel: catpt: Define DSP operations
ASoC: Intel: catpt: Firmware loading and context restore
ASoC: Intel: catpt: Implement IPC protocol
ASoC: Intel: catpt: Add IPC messages
ASoC: Intel: catpt: PCM operations
ASoC: Intel: catpt: Event tracing
ASoC: Intel: catpt: Simple sysfs attributes
ASoC: Intel: Select catpt and deprecate haswell
ASoC: Intel: haswell: Remove haswell-solution specific code
ASoC: Intel: broadwell: Remove haswell-solution specific code
ASoC: Intel: bdw-5650: Remove haswell-solution specific code
ASoC: Intel: bdw-5677: Remove haswell-solution specific code
sound/soc/intel/Kconfig | 22 +-
sound/soc/intel/Makefile | 2 +-
sound/soc/intel/boards/Kconfig | 8 +-
sound/soc/intel/boards/bdw-rt5650.c | 36 -
sound/soc/intel/boards/bdw-rt5677.c | 33 -
sound/soc/intel/boards/broadwell.c | 33 -
sound/soc/intel/boards/haswell.c | 28 +-
sound/soc/intel/catpt/Makefile | 6 +
sound/soc/intel/catpt/core.h | 224 +++++
sound/soc/intel/catpt/device.c | 389 +++++++++
sound/soc/intel/catpt/dsp.c | 590 +++++++++++++
sound/soc/intel/catpt/fs.c | 79 ++
sound/soc/intel/catpt/ipc.c | 298 +++++++
sound/soc/intel/catpt/loader.c | 837 +++++++++++++++++++
sound/soc/intel/catpt/messages.c | 312 +++++++
sound/soc/intel/catpt/messages.h | 402 +++++++++
sound/soc/intel/catpt/pcm.c | 1194 +++++++++++++++++++++++++++
sound/soc/intel/catpt/registers.h | 191 +++++
sound/soc/intel/catpt/trace.h | 169 ++++
19 files changed, 4711 insertions(+), 142 deletions(-)
create mode 100644 sound/soc/intel/catpt/Makefile
create mode 100644 sound/soc/intel/catpt/core.h
create mode 100644 sound/soc/intel/catpt/device.c
create mode 100644 sound/soc/intel/catpt/dsp.c
create mode 100644 sound/soc/intel/catpt/fs.c
create mode 100644 sound/soc/intel/catpt/ipc.c
create mode 100644 sound/soc/intel/catpt/loader.c
create mode 100644 sound/soc/intel/catpt/messages.c
create mode 100644 sound/soc/intel/catpt/messages.h
create mode 100644 sound/soc/intel/catpt/pcm.c
create mode 100644 sound/soc/intel/catpt/registers.h
create mode 100644 sound/soc/intel/catpt/trace.h
--
2.17.1
More information about the Alsa-devel
mailing list