Mark Brown
13e575de5f
ASoC: SOF: Kconfig: Fix the dependency for client modules
...
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com >:
There is still a chance to end up with a client driver selected as built in
while the core SOF is as module.
Fix this by making the client drivers depend on SND_SOC_SOF.
2022-08-23 19:36:34 +01:00
Chunxu Li
2dec9e09e9
ASoC: SOF: mediatek: Add sof_mt8186_machs for mt8186
...
Add .of_machines field sof_mt8186_machs for mt8186
Signed-off-by: Chunxu Li <chunxu.li@mediatek.com >
Link: https://lore.kernel.org/r/20220805070449.6611-3-chunxu.li@mediatek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 18:22:43 +01:00
Chunxu Li
6ace85b983
ASoC: SOF: Introduce function sof_of_machine_select
...
From current design in sof_machine_check and snd_sof_new_platform_drv,
the SOF can only support ACPI type machine.
1. In sof_machine_check if there is no ACPI machine exist, the function
will return -ENODEV directly, that's we don't expected if we do not
base on ACPI machine.
2. In snd_sof_new_platform_drv the component driver need a driver name
to do ignore_machine, currently the driver name is obtained from
machine->drv_name, and the type of machine is snd_soc_acpi_mach.
So we add a new function named sof_of_machine_select that we can pass
sof_machine_check and obtain info required by snd_sof_new_platform_drv.
Signed-off-by: Chunxu Li <chunxu.li@mediatek.com >
Link: https://lore.kernel.org/r/20220805070449.6611-2-chunxu.li@mediatek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 18:22:29 +01:00
Bard Liao
4ee6fc271b
ASoC: SOF: ipc4-topology: fix alh_group_ida max value
...
group_id is from 0 ~ ALH_MULTI_GTW_COUNT - 1, not 0 ~
ALH_MULTI_GTW_COUNT.
Fixes: a150345aa7 ("ASoC: SOF: ipc4-topology: add SoundWire/ALH aggregation support")
Reported-by: kernel test robot <lkp@intel.com >
Reported-by: Dan Carpenter <dan.carpenter@oracle.com >
Reviewed-by: Rander Wang <rander.wang@intel.com >
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220822190211.170537-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 17:34:06 +01:00
Peter Ujfalusi
8613753a68
ASoC: SOF: Intel: hda: Drop no longer used ROM state definitions
...
All code have been switched to use the new FSR defines and macros for
ROM/FW state tracking.
The old definitions can be dropped now.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Rander Wang <rander.wang@intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Link: https://lore.kernel.org/r/20220712125734.30512-4-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 14:10:02 +01:00
Peter Ujfalusi
43a03d2470
ASoC: SOF: Intel: hda-loader: Use the FSR state definitions during bootup
...
Switch to use the newly added FSR (Firmware State Register) definitions
for DSP state handling and targeting.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Rander Wang <rander.wang@intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Link: https://lore.kernel.org/r/20220712125734.30512-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 14:10:01 +01:00
Peter Ujfalusi
2cf520ffbc
ASoC: SOF: Kconfig: Make IPC_MESSAGE_INJECTOR depend on SND_SOC_SOF
...
Make sure that the IPC_MESSAGE_INJECTOR client can not be built in when
SND_SOC_SOF is built as module.
Fixes: cac0b0887e ("ASoC: SOF: Convert the generic IPC message injector into SOF client")
Reported-by: kernel test robot <lkp@intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220823121554.4255-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 13:49:56 +01:00
Peter Ujfalusi
3942499fba
ASoC: SOF: Kconfig: Make IPC_FLOOD_TEST depend on SND_SOC_SOF
...
Make sure that the IPC_FLOOD client can not be built in when SND_SOC_SOF is
built as module.
Fixes: 6e9548cdb3 ("ASoC: SOF: Convert the generic IPC flood test into SOF client")
Reported-by: kernel test robot <lkp@intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220823121554.4255-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 13:49:55 +01:00
Daniel Baluta
d45f552a1e
ASoC: SOF: compress: Remove dai_posn variable
...
dai_posn is set but never used. Initial intention was
to use dai_posn to shorthen one code line but it looks fine
without it too.
Fixes: c1a731c713 ("ASoC: SOF: compress: Add support for computing timestamps")
Reported-by: kernel test robot <lkp@intel.com >
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Link: https://lore.kernel.org/r/20220822174937.254873-1-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-23 13:04:52 +01:00
Cezary Rojewski
1cda83e42b
ASoC: SOF: Fix compilation when HDA_AUDIO_CODEC config is disabled
...
hda_codec_device_init() expects three parameters, not two.
Fixes: 3fd63658ca ("ASoC: Intel: Drop hdac_ext usage for codec device creation")
Reported-by: kernel test robot <lkp@intel.com >
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com >
Acked-by: Mark Brown <broonie@kernel.org >
Link: https://lore.kernel.org/r/20220819124740.3564862-1-cezary.rojewski@intel.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-08-19 14:55:40 +02:00
Zhang Peng
fb5319af6a
ASoC: SOF: imx: Add i.MX8ULP HW support
...
This adds skeleton support for the audio DSP hardware found on
NXP i.MX8ULP platform.
On i.MX8ULP resources (clocks, power, etc) are managed by the
System Integration Module in LPAV domain and XRDC which is handled
by arm trusted firmware.
Signed-off-by: Zhang Peng <peng.zhang_8@nxp.com >
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com >
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com >
Link: https://lore.kernel.org/r/1660787634-28550-2-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-19 13:19:55 +01:00
Yang Yingliang
ecdb10df7e
ASoC: SOF: ipc4-topology: fix wrong use of sizeof in sof_ipc4_widget_setup_comp_src()
...
It should be size of the struct sof_ipc4_src, not data pointer pass to
sof_update_ipc_object().
Fixes: b85f4fc40d ("ASoC: SOF: add ipc4 SRC module support")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com >
Acked-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://lore.kernel.org/r/20220818081751.2407066-1-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-18 15:02:03 +01:00
Cezary Rojewski
3fd63658ca
ASoC: Intel: Drop hdac_ext usage for codec device creation
...
To make snd_hda_codec_device_init() the only constructor for struct
hda_codec instances remaining tasks are:
1) no struct may wrap struct hda_codec as its base type
2) bus drivers (skylake and sof) which are the current hdac_ext users
need to be adjusted to make use of newly added codec init and exit
routines instead
3) as bus drivers (skylake and sof) are to be responsible for creating
codec device and assigning it to hdac_hda_priv->codec,
hdac_hda_dev_probe() has to be freed of that job
To keep git bisect happy, all of these in made in one-go.
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com >
Acked-by: Mark Brown <broonie@kernel.org >
Link: https://lore.kernel.org/r/20220816111727.3218543-4-cezary.rojewski@intel.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-08-18 09:46:43 +02:00
Cezary Rojewski
829c673198
ASoC: SOF: Intel: Introduce HDA codec init and exit routines
...
Preliminary step in making snd_hda_codec_device_init() the only
constructor for struct hda_codec instances. To do that, existing usage
of hdac_ext equivalents has to be dropped.
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com >
Acked-by: Mark Brown <broonie@kernel.org >
Link: https://lore.kernel.org/r/20220816111727.3218543-3-cezary.rojewski@intel.com
Signed-off-by: Takashi Iwai <tiwai@suse.de >
2022-08-18 09:46:30 +02:00
Laurentiu Mihalcea
c1a731c713
ASoC: SOF: compress: Add support for computing timestamps
...
We compute the number of pcm_io_frames by dividing the
dai position to size of a frame (channels * sample size).
Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com >
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Link: https://lore.kernel.org/r/20220817080529.10864-5-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-17 13:00:24 +01:00
Laurentiu Mihalcea
3ccbe68877
ASoC: SOF: compress: Save channel count and sample bytes
...
The purpose of this change is to enable the saving of the
channel count and sample container bytes format parameters for later use
to compute the timestamps.
This is done when setting the compress stream parameters
(in sof_compr_set_params).
Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com >
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Link: https://lore.kernel.org/r/20220817080529.10864-4-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-17 13:00:23 +01:00
Daniel Baluta
e3091f0a3f
ASoC: SOF: compress: Introduce sof_compr_stream
...
This will keep SOF compress stream private data. So far
we used snd_compr_tstamp to hold the private data but this
is no longer enough as we need to hold other info like
number of channels or sample bytes.
Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Link: https://lore.kernel.org/r/20220817080529.10864-3-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-17 13:00:22 +01:00
Daniel Baluta
bab10ec9fd
ASoC: SOF: compress: Remove byte offset computation
...
Byte offset is the offset in the ring buffer to the DSP
while posn_offset is an offset inside the stream_box where
we keep position information.
Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Link: https://lore.kernel.org/r/20220817080529.10864-2-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-17 13:00:21 +01:00
Kai Vehmanen
63d375b9f2
ASoC: SOF: Intel: pci-tgl: use RPL specific firmware definitions
...
Split out firmware definitions for Intel Raptor Lake platforms.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Suggested-by: Gopal Vamshi Krishna <vamshi.krishna.gopal@intel.com >
Link: https://lore.kernel.org/r/20220816130510.190427-2-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-16 14:48:23 +01:00
Mark Brown
5549af7f42
ASoC: Fix theoretical buffer overflow by snprintf()
...
Merge series from Takashi Iwai <tiwai@suse.de >:
This is a patch series to paper over the theoretical buffer overflow
that might be caused by snprintf(). snprintf() is notorious for its
behavior and the usage of a safer version, scnprintf(), is
recommended.
2022-08-05 15:24:07 +01:00
Justin Stitt
b7bf23c086
ASoC: SOF: ipc3-topology: Fix clang -Wformat warning
...
When building with Clang we encounter these warnings:
| sound/soc/sof/ipc3-topology.c:2343:4: error: format specifies type
| 'unsigned char' but the argument has type 'int' [-Werror,-Wformat]
| SOF_ABI_MAJOR, SOF_ABI_MINOR, SOF_ABI_PATCH);
| ^~~~~~~~~~~~~~~^~~~~~~~~~~~~~~^~~~~~~~~~~~~
Use correct format specifier `%d` since args are of type int.
Link: https://github.com/ClangBuiltLinux/linux/issues/378
Reported-by: Nathan Chancellor <nathan@kernel.org >
Suggested-by: Nathan Chancellor <nathan@kernel.org >
Signed-off-by: Justin Stitt <justinstitt@google.com >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220803204442.2996580-1-justinstitt@google.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-05 12:57:27 +01:00
Takashi Iwai
94c1ceb043
ASoC: SOF: Intel: hda: Fix potential buffer overflow by snprintf()
...
snprintf() returns the would-be-filled size when the string overflows
the given buffer size, hence using this value may result in the buffer
overflow (although it's unrealistic).
This patch replaces with a safer version, scnprintf() for papering
over such a potential issue.
Fixes: 29c8e4398f ("ASoC: SOF: Intel: hda: add extended rom status dump to error log")
Signed-off-by: Takashi Iwai <tiwai@suse.de >
Link: https://lore.kernel.org/r/20220801165420.25978-4-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-05 12:57:24 +01:00
Takashi Iwai
1eb123ce98
ASoC: SOF: debug: Fix potential buffer overflow by snprintf()
...
snprintf() returns the would-be-filled size when the string overflows
the given buffer size, hence using this value may result in the buffer
overflow (although it's unrealistic).
This patch replaces with a safer version, scnprintf() for papering
over such a potential issue.
Fixes: 5b10b62989 ("ASoC: SOF: Add `memory_info` file to debugfs")
Signed-off-by: Takashi Iwai <tiwai@suse.de >
Link: https://lore.kernel.org/r/20220801165420.25978-3-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-08-05 12:57:23 +01:00
YC Hung
d95610a183
ASoC: SOF: Add cont_update_posn to platform parameters
...
Add cont_update_posn to platform parameters to support
continue update position for platform.
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Chao Song <chao.song@intel.com >
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com >
Signed-off-by: YC Hung <yc.hung@mediatek.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220725195343.145603-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-25 22:37:01 +01:00
Pierre-Louis Bossart
e516995050
ASoC: SOF: Intel: hda: add sanity check on SSP index reported by NHLT
...
We should have a limited trust in the BIOS and verify that the SSP
index reported in NHLT is valid for each platform.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Link: https://lore.kernel.org/r/20220725195343.145603-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-25 22:37:00 +01:00
Mark Brown
16824dffcf
ASoC: SOF: Intel: updates and cleanups
...
Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >:
Set of updates for IPC3, IPC4, MTL support and cleanups for the
topology filename override which was broken for HDaudio platforms.
2022-07-19 19:16:21 +01:00
Mark Brown
09f8528945
ASoC: SOF: mediatek: fix boot sequences
...
Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >:
Changes to DSP_RESET_SW need extra care.
2022-07-19 18:43:27 +01:00
Pierre-Louis Bossart
321add801b
ASoC: SOF: Intel: hda-stream: test DMA buffer first in hw_params
...
We should be consistent and always test that the DMA buffer is
allocated before continuing with the hw_params setup.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-12-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:40 +01:00
Pierre-Louis Bossart
bdcf7926fa
ASoC: SOF: probes: rename assign/free callbacks as startup/shutdown
...
assign/free are not well aligned to usual conventions and specifically
not to the compressed ops that make use of the probe callbacks.
Use the more common startup/shutdown. No functional change beyond
renaming.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-11-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:38 +01:00
Pierre-Louis Bossart
054d1fd138
ASoC: SOF: Intel: hda: only fixup topology name if not set already
...
We do all kinds of renaming tricks that get in the way of kernel
parameter and DMI quirk overrides at a higher level.
Tested on UpExtreme board with
options snd-sof-pci tplg_filename=sof-hda-generic.tplg
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-10-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:37 +01:00
Pierre-Louis Bossart
ef05eb575e
ASoC: SOF: Intel: hda: don't set fw_filename
...
The fw_filename is now set at a higher level and can be overridden by
kernel parameters or DMI quirks.
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-9-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:36 +01:00
Peter Ujfalusi
27b196c19c
ASoC: SOF: Intel: atom: don't keep a temporary string in fixup_tplg_name
...
fixup_tplg_name() doesn't need to keep the string, allocated for
filename - it's temporary.
Inspired by similar change for hda:
commit b9088535e1 ("ASoC: SOF: Intel: HDA: don't keep a temporary variable")
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-8-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:35 +01:00
Peter Ujfalusi
b9cb044f35
ASoC: SOF: ipc3-loader: Print out the non matching ext_man magic number
...
Print out the found extended manifest magic number in case it is not
matching with the expected one (0x6e614d58) in debug level.
It is fairly unlikely that the firmware does not have ext_man section and
the found value in place of the magic number can help rootcausing boot
related issues.
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-7-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:34 +01:00
Rander Wang
dc6137a56a
ASoC: SOF: ipc4-topology: set domain bit based on dp domain type
...
Currently the domain bit in ipc msg for module initialization is
set to lp (low power) mode for pipeline. This is not correct since
it is for module domain type: ll domain or dp domain which are for
scheduler in fw. If the domain bit is set to 1 fw will process the
module in dp domain or deal it with ll domain. So set domain bit
based on dp domain setting.
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Rander Wang <rander.wang@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-6-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:33 +01:00
Rander Wang
b85f4fc40d
ASoC: SOF: add ipc4 SRC module support
...
SRC module only needs two parameters : base module config
and sink rate. This patch adds prepare and setup for SRC
widgets.
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Rander Wang <rander.wang@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:32 +01:00
Rander Wang
bdb803c828
ASoC: SOF: ipc4-pcm: set pcm rate to dai setting
...
Dsp converts pcm rate to the one defined by dai. When SRC
is used, the pcm runtime rate is different with dai rate
and we need to fix it up for BE components.
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Rander Wang <rander.wang@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-4-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:31 +01:00
Bard Liao
711d0427c7
ASoC: SOF: ipc4-topology: move ida allocate/free to widget_setup/free
...
The existing code allocate/release instance_id in widget ipc_prepare/
ipc_unprepare callbacks and creating widget with the instance_id in
tplg widget_setup callback. In the case of multiple widgets connecting
to one widget, the ipc_unprepare will be invoked for all the widgets
in the path including the widget which is still in use.
As a result, the instance_id is released in the ipc_unprepare callback,
but the widget is still in use and the instance_id will be reused by
a new widget when we start the PCM again.
Moving the ida work from ipc_prepare/ipc_unprepare to widget_setup/free
can avoid such problem.
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-3-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:30 +01:00
Yong Zhi
740e5d8713
ASoC: SOF: Intel: MTL: remove redundant snd_sof_dsp_read() call
...
Drop redundant CPA bit check after polling the same condition.
Fixes: 064520e8ae ("ASoC: SOF: Intel: Add support for MeteorLake (MTL)")
Reviewed-by: Chao Song <chao.song@intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Signed-off-by: Yong Zhi <yong.zhi@intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220715145216.277003-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 20:11:29 +01:00
Pierre-Louis Bossart
ba4c6a1a8f
ASoC: SOF: Intel: enable dmic handling with 2 or fewer SoundWire links
...
When PCH-attached DMICs are used on a SoundWire-based platform, all
known devices pin-mux SoundWire link2 and link3 with DMIC, and only
use link0 and link1 for SoundWire.
The HP Omen16 is the first exception to the rule, with SoundWire using
link0 and link3. Rather than using a fixed mask, let's count the
number of SoundWire links used.
BugLink: https://github.com/thesofproject/sof/issues/5966
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Link: https://lore.kernel.org/r/20220715144144.274770-5-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-15 17:10:57 +01:00
Dan Carpenter
fa9b878ff8
ASoC: SOF: ipc-msg-injector: fix copy in sof_msg_inject_ipc4_dfs_write()
...
There are two bugs that have to do with when we copy the payload:
size = simple_write_to_buffer(ipc4_msg->data_ptr,
priv->max_msg_size, ppos, buffer,
count);
The value of "*ppos" was supposed to be zero but it is
sizeof(ipc4_msg->header_u64) so it will copy the data into the middle of
the "ipc4_msg->data_ptr" buffer instead of to the start. The second
problem is "buffer" should be "buffer + sizeof(ipc4_msg->header_u64)".
This function is used for fuzz testing so the data is normally random
and this bug likely does not affect anyone very much.
In this context, it's simpler and more appropriate to use copy_from_user()
instead of simple_write_to_buffer() so I have re-written the function.
Fixes: 066c67624d ("ASoC: SOF: ipc-msg-injector: Add support for IPC4 messages")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Link: https://lore.kernel.org/r/Ysg1tB2FKLnRMsel@kili
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-14 13:26:37 +01:00
Bard Liao
2a1be12c4d
ASoC: SOF: Intel: add trigger callback into sdw_callback
...
For IPC4, we need to set pipeline state in BE DAI trigger.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com >
Reviewed-by: Rander Wang <rander.wang@intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Link: https://lore.kernel.org/r/20220708061312.25878-3-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-13 14:26:14 +01:00
Mark Brown
4e90651e52
ASoC: SOF: Intel: hda: Correct Firmware State Register use
...
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com >:
The FSR (Firmware State Register) holds the ROM state information, it does not
contain error information.
The FSR itself is a bit more complicated as well as the state depends on the
module currently in use.
The error code from ROM or the status code from the firmware is located at the
next register.
Fix the handling of the FSR in order to provide usable and human readable (in
most cases) report on the status and error.
2022-07-12 19:21:45 +01:00
Mark Brown
4457fbd66b
Extend ipc stream parameters sent to DSP
...
Merge series from Daniel Baluta <daniel.baluta@oss.nxp.com >
Daniel Baluta <daniel.baluta@nxp.com >:
From: Daniel Baluta <daniel.baluta@nxp.com >
We need a way to send extra parameters to DSP firmware. In order to do
this, we introduce ext_data array at the end of ipc_stream_params.
With this new addition we can send compress parameters.
This requires SOF ABI bump.
2022-07-12 19:21:43 +01:00
Mark Brown
501935dae8
ASoC: SOF: Intel: Do not process IPC reply before firmware boot
...
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com >:
By mistake a developer managed to create a 'corrupted' IPC4 firmware image which
loaded fine to the DSP and after boot it sent an IPC reply before we would have
received the FW_READY message.
It turned out that the image was an IPC3 firmware and the IPC reply was the IPC3
FW_READY notification message which got understood as an IPC4 reply message due
to the difference between the two IPC mechanism.
This caused a NULL pointer dereference since the reply memory will be allocated
after the FW_READY message.
To make sure this will not bite again, skip any spurious reply messages before
the FW_READY.
2022-07-12 19:21:42 +01:00
Mark Brown
274a3e6f98
ASoC: SOF: Intel: hda-dai: No need to decouple host/link DMA twice
...
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com >:
There is no need to decouple a decoupled stream twice.
Keep the decoupling in hda_link_stream_assign() only as it is going to be
executed in all cases.
Drop the outdated comment from hda_link_dma_hw_params() as well since the code
has changed around it.
2022-07-12 19:21:41 +01:00
Peter Ujfalusi
d5bd47f3ca
ASoC: SOF: ipc3-topology: Prevent double freeing of ipc_control_data via load_bytes
...
We have sanity checks for byte controls and if any of the fail the locally
allocated scontrol->ipc_control_data is freed up, but not set to NULL.
On a rollback path of the error the higher level code will also try to free
the scontrol->ipc_control_data which will eventually going to lead to
memory corruption as double freeing memory is not a good thing.
Fixes: b5cee8feb1 ("ASoC: SOF: topology: Make control parsing IPC agnostic")
Reported-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com >
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Link: https://lore.kernel.org/r/20220712130103.31514-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-12 17:39:25 +01:00
Peter Ujfalusi
9b93eda355
ASoC: SOF: sof-client-probes: Only load the driver if IPC3 is used
...
The current implementation of probes only supports IPC3 and should not be
loaded for other IPC implementation.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Link: https://lore.kernel.org/r/20220712131022.1124-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-12 17:39:24 +01:00
Mark Brown
67e1b7700c
ASoC: SOF: Intel: hda: Use cold/purge boot after firmware crash
...
Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com >:
In case of a firmware crash we force the DSP to be powered down and rebooted.
To make sure that the next boot is going to be clean, force the boot process to
skip the IMR booting and re-download the firmware.
2022-07-12 16:10:05 +01:00
Daniel Baluta
246b135fcd
ASoC: SOF: compress: Prevent current kernel running with older FW
...
After introducing extended parameters we need to forbid older firmware
versions to run with the current and future kernel versions.
Although in theory the communication protocol will still work the
semantics at application level are undefined. So, prevent this by
disallowing older firmwares to run with newer kernels.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://lore.kernel.org/r/20220712141531.14599-4-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-12 15:22:08 +01:00
Daniel Baluta
3f70c360d4
ASoC: SOF: Copy compress parameters into extended data
...
Allocate memory at the end of sof_ipc_stream_params to store
snd_compr_params in order to be sent them to SOF firmware.
This will help firmware correctly configure codecs parameters.
Notice, that we use 2 bytes from the reserved pool in order to store
the extended data length. This is compatible with older FWs where
there was no extended data.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com >
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com >
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com >
Link: https://lore.kernel.org/r/20220712141531.14599-3-daniel.baluta@oss.nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2022-07-12 15:22:07 +01:00