Pull sound fixes from Takashi Iwai:
"A collection of small fixes gathered in the last two weeks.
The major changes here are fixes for the recent DPCM regressions found
on i.MX and Qualcomm platforms and fixes for resource leaks in ASoC
DAI registrations.
Other than those are mostly device-specific fixes including the usual
USB- and HD-audio quirks, and a fix for syzkaller case and ID updates
for new Intel platforms"
* tag 'sound-5.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (32 commits)
ALSA: usb-audio: Fix OOB access of mixer element list
ALSA: usb-audio: add quirk for Samsung USBC Headset (AKG)
ALSA: usb-audio: Add registration quirk for Kingston HyperX Cloud Flight S
ASoC: rockchip: Fix a reference count leak.
ASoC: amd: closing specific instance.
ALSA: hda: Intel: add missing PCI IDs for ICL-H, TGL-H and EKL
ASoC: hdac_hda: fix memleak with regmap not freed on remove
ASoC: SOF: Intel: add PCI IDs for ICL-H and TGL-H
ASoC: SOF: Intel: add PCI ID for CometLake-S
ASoC: Intel: SOF: merge COMETLAKE_LP and COMETLAKE_H
ALSA: hda/realtek: Add mute LED and micmute LED support for HP systems
ALSA: usb-audio: Fix potential use-after-free of streams
ALSA: hda/realtek - Add quirk for MSI GE63 laptop
ASoC: fsl_ssi: Fix bclk calculation for mono channel
ASoC: SOF: Intel: hda: Clear RIRB status before reading WP
ASoC: rt1015: Update rt1015 default register value according to spec modification.
ASoC: qcom: common: set correct directions for dailinks
ASoc: q6afe: add support to get port direction
ASoC: soc-pcm: fix checks for multi-cpu FE dailinks
ASoC: rt5682: Let dai clks be registered whether mclk exists or not
...
There is a regular need in the kernel to provide a way to declare having a
dynamically sized set of trailing elements in a structure. Kernel code should
always use “flexible array members”[1] for these cases. The older style of
one-element or zero-length arrays should no longer be used[2].
[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://github.com/KSPP/linux/issues/21
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
This patch invokes the DSP power down notifier to inform
DSP that driver is going to be removed.
The module removal entails DSP power down, disabling of
IRQs and more. Therefore it is highly recommended to inform
the DSP about this upcoming event.
Due to hardware limitations on some Intel platforms it is necessary
to power gate all LPSRAM banks that were enabled prior to controller
reset. Otherwise, an attempt to write LPSRAM control registers may
have no effect.
Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20200515135958.17511-4-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This series includes updates in the topology parser for DAIs
and their config.
The first three patches address the problem of sending the DAI
config to the DSP when there are multiple DAIs associated with
a DAI link.
The last patch deals with setting the default trigger order
for all links. Exceptions needed for HDA links are moved to
the DAI link fixup() callback.
Bard Liao (3):
ASoC: SOF: topology: send ipc for all found DAIs in sof_set_dai_config
ASoC: topology: set component dai_index to ipc dai config dai_index
ASoC: SOF: topology: replace sof_link_hda_process by
sof_set_dai_config
randerwang (1):
ASoC: SOF: Intel: change trigger sequence to fix pop noise when
stopping playback on sdw platforms
sound/soc/sof/pcm.c | 12 ++-
sound/soc/sof/topology.c | 167 ++++++++++-----------------------------
2 files changed, 51 insertions(+), 128 deletions(-)
--
2.17.1
The imx8 config keeps causing issues:
WARNING: unmet direct dependencies detected for SND_SOC_SOF_IMX8M
Depends on [n]: SOUND [=y] && !UML && SND [=y] && SND_SOC [=m] && SND_SOC_SOF_TOPLEVEL [=y] && SND_SOC_SOF_IMX_TOPLEVEL [=y] && IMX_DSP [=n]
Selected by [m]:
- SND_SOC_SOF_IMX_OF [=m] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=m] && SND_SOC_SOF_TOPLEVEL [=y] && SND_SOC_SOF_IMX_TOPLEVEL [=y] && SND_SOC_SOF_IMX8M_SUPPORT [=y]
This is complicated by two drivers having dependencies on both
platform specific drivers and the SND_SOC_SOF_OF framework code,
and using an somewhat obscure method to build them the same way
as the SOC_SOF_OF symbol (built-in or modular).
My solution now ensures that the two drivers can only be enabled
when the dependencies are met:
- When the platform specific drivers are built-in, everything is
fine, as SOC_SOF_OF is either =y or =m
- When both are loadable modules, it also works, both for Kconfig
and at runtime
- When the hardware drivers are loadable modules or disabled, and
SOC_SOF_OF=y, prevent the IMX_SOF_OF drivers from being turned on,
as this would be broken.
It seems that this is just an elaborate way to describe two tristate
symbols that have straight dependencies, but maybe I'm missing some
subtle point. It seems to always build for me now.
Fixes: fe57a92c88 ("ASoC: SOF: Add missing dependency on IMX_SCU")
Fixes: afb93d7165 ("ASoC: SOF: imx: Add i.MX8M HW support")
Fixes: cb0312f61c ("ASoC: SOF: imx: fix undefined reference issue")
Fixes: afb93d7165 ("ASoC: SOF: imx: Add i.MX8M HW support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Daniel Baluta <daniel.baluta@nxp.com>
Link: https://lore.kernel.org/r/20200428212752.2901778-1-arnd@arndb.de
Signed-off-by: Mark Brown <broonie@kernel.org>
The recent batch of SOF changes failed to build on some x86
configurations including an allmodconfig, revert the commits:
e150ef4169 ASoC: SOF: Introduce extended manifest
3710914178 ASoC: SOF: ext_manifest: parse firmware version
7c024b948c ASoC: SOF: ext_manifest: parse compiler version
9e72f13ee5 ASoC: SOF: ext_manifest: parse windows
to fix this.
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Mark Brown <broonie@kernel.org>
Major regressions were detected by SOF CI on CherryTrail and Broadwell:
[ 25.705750] SSP2-Codec: ASoC: no backend playback stream
[ 27.923378] SSP2-Codec: ASoC: no users playback at close - state
This is root-caused to the introduction of the DAI capability checks
with snd_soc_dai_stream_valid(). Its use in soc-pcm.c makes it a
requirement for all DAIs to report at least a non-zero min_channels
field.
For some reason the SSP structures used for SKL+ did provide this
information but legacy platforms didn't.
Fixes: 9b5db05936 ("ASoC: soc-pcm: dpcm: Only allow playback/capture if supported")
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20200417172014.11760-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Long series made of a relatively small changes from multiple SOF
contributors. I didn't find a good way to split this series since it
tracks SOF minor ABI changes (backwards-compatible with older firmware
files) and needs to be kept in-order. Future series should be much
shorter.
The main addition is support for an extended firmware manifest, which
helps retrieve capabilities directly from the firmware file instead of
the current IPC mechanism (still supported but will be deprecated).
The IPC is realigned with the firmware, along with type cleanups, and
the DMIC interface is simplified.
The topology changes are mainly about a multi-cpu DAI fix, a new DC
blocking component, better parsing of tuples and new parameters for
ALH (SoundWire) and HDaudio DAIs. New tokens are also added to clarify
the firmware behavior in the case of dependent pipelines, e.g. for
echo reference generation.
Artur Kloniecki (1):
ASoC: SOF: Add XRUN flags field to struct sof_ipc_buffer.
Bard Liao (5):
ASoC: SOF: topology: fix: handle DAI widget connections properly with
multiple CPU DAI's
ASoC: SOF: align sof_ipc_dai_alh_params with FW
ASoC: SOF: topology: Get ALH rate amd channels from topology
ASoC: SOF: topology: fix: parse hda_tokens to &config->hda
ASoC: SOF: topology: Get HDA rate and channels from topology
Jaska Uimonen (2):
ASoC: SOF: topology: stop parsing when all tokens have been found
ASoC: SOF: topology: handle multiple sets of tuple arrays
Karol Trzcinski (6):
ASoC: SOF: Mark get_ext* function ext_hdr arguments as const
ASoC: SOF: Introduce offset in firmware data
ASoC: SOF: Introduce extended manifest
ASoC: SOF: ext_manifest: parse firmware version
ASoC: SOF: ext_manifest: parse windows
ASoC: SOF: ext_manifest: parse compiler version
Pan Xiuli (6):
ASoC: SOF: add probe support extend data
ASoC: SOF: add debug ABI version
ASoC: SOF: change type char to uint8_t in info.h
ASoC: SOF: change type char to uint8_t in trace.h
ASoC: SOF: change type char to uint8_t in topology.h
ASoC: SOF: make sof_ipc_cc_version to fixed length
Sebastiano Carlucci (1):
ASoC: SOF: topology: Add support for DC Blocker
Seppo Ingalsuo (3):
ASoC: SOF: Intel: Fix typo in header file comment text
ASoC: SOF: Intel: Change DMIC load IPC to fixed length
ASoC: SOF: Intel: Rename deprecated DMIC IPC struct field
include/sound/sof.h | 3 +
include/sound/sof/dai-intel.h | 20 +-
include/sound/sof/info.h | 26 ++-
include/sound/sof/topology.h | 16 +-
include/sound/sof/trace.h | 2 +-
include/uapi/sound/sof/abi.h | 2 +-
include/uapi/sound/sof/ext_manifest.h | 91 ++++++++
include/uapi/sound/sof/tokens.h | 8 +
sound/soc/sof/intel/hda-loader.c | 9 +-
sound/soc/sof/loader.c | 226 ++++++++++++++++--
sound/soc/sof/topology.c | 323 ++++++++++++++++----------
11 files changed, 568 insertions(+), 158 deletions(-)
create mode 100644 include/uapi/sound/sof/ext_manifest.h
base-commit: 83b35f4586
--
2.20.1
Daniel Baluta <daniel.baluta@nxp.com>:
From: Daniel Baluta <daniel.baluta@nxp.com>
This patch series adds support for SOF on i.MX8M family. First board
from this family that has a DSP is i.MX8MP.
First 2 patches are trying to fix some compilation issues, the next two
are adding the imx8m support and the last one adds the devicetree
binding.
Changes since v2:
- add reviewed by from Rob to DT patch
- fix ownership for patch 2
Daniel Baluta (3):
ASoC: SOF: imx: Add i.MX8M HW support
ASoC: SOF: Add i.MX8MP device descriptor
dt-bindings: dsp: fsl: Add fsl,imx8mp-dsp entry
Pierre-Louis Bossart (1):
ASoC: SOF: imx: fix undefined reference issue
YueHaibing (1):
ASoC: SOF: imx8: Fix randbuild error
.../devicetree/bindings/dsp/fsl,dsp.yaml | 2 +
sound/soc/sof/imx/Kconfig | 32 +-
sound/soc/sof/imx/Makefile | 2 +
sound/soc/sof/imx/imx8m.c | 279 ++++++++++++++++++
sound/soc/sof/sof-of-dev.c | 14 +
5 files changed, 325 insertions(+), 4 deletions(-)
create mode 100644 sound/soc/sof/imx/imx8m.c
--
2.17.1
Widget's parameters are set in topology and they usually consist of
several different types of tuple arrays like strings, words and bytes.
Here this kind of combination is called a "set".
Lately we've seen more complex widget definitions with multiple
identical sets of tuple arrays. One example is the dmic pdm
configuration, which is currently handled as a special case in token
parsing. This is not scalable for other components with multiple sets.
So add a new function sof_parse_token_sets, which can be used to parse
multiple sets. This function defines the number of sets and an offset to
copy the tokens to correct positions in the destination ipc struct. Old
sof_parse_token function will be a special case of calling
sof_parse_token_sets to parse 1 set with offset 0.
Finally modify the dmic dai link loading to use the new
sof_parse_array_sets to load multiple pdm configs.
Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20200415202816.934-25-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>