Add Kai Vehmanen, Guennadi Liakhovetski, Iulia Prodan and Daniel
Baluta as owners for the 'zephyr/' subfolder.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Includes patches to dai-zephyr.c to adapt to DMA interface
change for DW/HDDMA drivers.
Total of 1168 commits, including following related to
intel_adsp/sparse/dmic/xtensa:
8f5bcb2e76c3 intel_adsp: ace: fix linker script for xcc-clang compiler
18ce85c20130 tests: intel_adsp: ssp: fix dma data sizes
60a20471b561 intel_adsp: ace: enable interrupts for secondary core
6045eed2f361 intel_adsp: ace: enable core power gating
e1dbc2efef50 intel_adsp: ace: add core power off step
a99b073392fc intel_adsp: ace: d3 exit update
156c7cd21759 intel_adsp: bbzero/bmemcpy with picolibc fix
60196ca1126a cmake: sparse: deprecate old sparse support
91902c5fd4db cmake: add sparse support to the new SCA infrastructure
a684714d5c82 soc: intel_adsp: Correct HDA parameter docstrings
db495a5ebee3 xtensa: stop execution under simulator for double exception
8ff88346955b xtensa: sparse: fix address space mismatch
7965fd2b4a8a samples/boards/intel_adsp: Make sample work with twister
422250d3b183 mm: intel_adsp_mtl_tlb: suppress sparse address space warnings
618a478ded70 xtensa: fix sparse warning when converting to uncache pointer
8b391dc43841 drivers: audio: dmic_nrfx_pdm: Fix a race condition in the driver
8794de2934f7 intel_adsp: soc: ace: Add communication widget driver
a9b3d935500c intel_adsp: dai: Add support for ALH up to 16 nodes
837432506269 drivers: dai: intel: dmic: don't use assert for error handling
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Currently, the check to prevent too large filters from being loaded on
GCC builds of SOF does not work correctly. This commit changes where the
lengths that are being checked are read from, so that the check works
correctly.
Fixes: c0b9b4057e ("EQ FIR: Add support for runtime reconfiguration")
Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
The 32-bit exponential library function has an accuracy
of 1e-4 and a unit in last place error of 4.5878 for
inputs from -5 to +5 (Q4.28) and outputs from 0.0067379470
to 148.4131591026 (Q9.23).
Signed-off-by: ShriramShastry <malladi.sastry@intel.com>
The original code only set sink format in copier but forget to set format
of sink buffer. This will result to error when sink components use it.
Signed-off-by: Rander Wang <rander.wang@intel.com>
New Xtensa xt-clang driver issues new warnings that were not
present before when using xt-xcc driver.
Fixed warnings related to enum cast to other enum by removing
"frame_fmt" local variable assignment in the selector.c file.
Assignment was not needed in the build_config function body, as the
variable "frame_fmt" is passed in the next line to
audio_stream_fmt_conversion function, that writes to this variable as
output.
Silenced warnings related to C/C++ interoperability.
Signed-off-by: Andrey Borisovich <andrey.borisovich@intel.com>
Where there more than 1 object of the same type defined at the same node
level, use arrays to define the object. For example, we can define 2
routes as follows:
Object.Base.route [
{
source "smart_amp.2.1"
sink "copier.SSP.2.1"
}
{
source "mixin.1.1"
sink "mixout.2.1"
}
]
This allows us to merge 2 arrays from different conf files without
needing to make their instance ID's unique.
Assume we add another route in a separate conf file like below:
Object.Base.route [
{
source "gain.5.1"
sink "copier.5.1"
}
]
The alsatplg compiler will merge them as follows resulting in 3 route
objects.
Object.Base.route [
{
source "smart_amp.2.1"
sink "copier.SSP.2.1"
}
{
source "mixin.1.1"
sink "mixout.2.1"
}
{
source "gain.5.1"
sink "copier.5.1"
}
]
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
using incorrect names for compiler, missing ISA header for HiFi check,
also should add inlines if we don't have the HiFi implementations
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
We need this as part of a generic compiler_info so we can handle HiFi
flags in a generic arch include
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
This patch adds to development topologies a topology
sof-hda-src-generic.tplg. It is similar to sof-hda-generic but adds
to first playback PCM pipeline a SRC component after gain. The
pipeline supports playback of S32_LE with 8 - 192 kHz rates.
The cavs/src.conf is merged to src.conf, and the SRC format
include files are brought up from cavs directory. The topology
cavs-sdw-src-gain-mixin.tplg related .conf files are updated
for common location. The missing rate_out attribute is added.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Remove all support for Broadwell and Haswell platforms, they
aren't supported any more.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
During the component create (module init) we are not receiving the blob
containing the sof_detect_test_config, only the base_cfg is received.
The sof_detect_test_config content will be sent via large_config_set at a
later time.
The blob received via large_config_set must be the same format as the blob
with IPC3 but in runtime the sample_width from the blob is ignored and the
audio_fmt.depth is used from the base_cfg.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
As the copier can do format conversions, and many pipeline components
can do conversions as well, it is important for the topology to define a
single format to use in the "dai_out" copier. This ensures deterministic
behaviour with the driver.
Implement this behaviour by switching topologies to use the
passthrough-capture-be pipeline as template for the backend capture
pipelines.
The previously used passthrough-be template is problematic as
the base class already defines multiple audio formats, with multiple
different sample formats. The new passthrough-capture-be only defines
one sample format by default and is a better starting point as a base
class.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Add a separate template for capture backend pipelines. The
passthrough-be pipeline has been used as template for both playback and
capture, but we want to provide different defaults especially for the
audio formats in capture case.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Use mixout-gain-smart-amp-dai-copier-playback pipeline
for SSP0 DAI playback.
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds the widget class for smart_amp module
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The micsel will need to use the base config extension and the init
config type will need to be set in the manifest.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
It's not enough to look at the first component in the module's buffer
list. Check all of them to make sure that they belong to different
pipelines.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The avail_frames should not be used for other than the feedback buffer.
Source/sink should be using the avail_passthrough_frames when calculating
for the processing.
If we have feedback buffer then the avail_frames can be different than
avail_passthrough_frames which will cause underrun reports.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
No more need for hard-coded blob header, sof-ctl provides
an up-to-date header so better to use it.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
For MTL chromebook, SSP 1 is used for BT offload with
cavs-rt5682 configuration
Co-developed-by: Jaska Uimonen <jaska.uimonen@intel.com>
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
Co-developed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Uday M Bhat <uday.m.bhat@intel.com>
Add pipelines for iir and fir eq as EFX (endpoint effect) component in
hda. Add HDA_CONFIG "efx" to compile efx versions of hda_generic
pipelines.
Add define EFX_IIR_PARAMS and EFX_FIR_PARAMS to define different iir and
fir parameters from separate conf files during compile time (default
"passthrough").
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
There are two pops caused by SOF Firmware.
Pop occurs when switch from headphone to speaker:
When switch to headphone, audio playback data still remains in
DSM internal processing buffer and not consumed by DMA.
So when switch back to speaker, the DSM processing buffer is not clean,
then pop noise occurs. We can clean and reset the point for
DSM internal processing buffer by called this function 'smart_amp_init'
in function 'smart_amp_prepare'.
Pop occurs when switch from speaker to headphone:
The feedback and feed-forward buffer processing should be independent.
But the number of frames processed by DSM feedforward is corrupted by
feedback buffer calculation. When capture pipeline exists,
the number of frames for feedforward is always same as feedback.
And the number of frames for feedback is zero at the first time
when the capture pipeline setup. Then the number of frames processed
by DSM feed forward is also zero though there are many frames in
playback buffer. So the available frames will become larger.
It is easy to exceed the limit size of DSM input.
Then it will cause the buffer overflow and we could hear obvious pop
noise from speaker. We fix it by calculating the number of frames
for feedforward and feedback respectively.
Signed-off-by: Long Wang <long.wang@analog.com>
Adds new topology build based on sof-adl-max98360a-rt5682-2way
with appending arg `-DDMIC_DAI_LINK_16k_PDM=STEREO_PDM1` for existing
ADL-P projects.
Signed-off-by: Pin-chih Lin <johnylin@google.com>
Pull in following rimage changes:
3863e94fa5 Don't convert ROM addresses to cached aliases
1e0a85b44a config:tgl/tglh: Do not set cached/uncached address aliases
9b507ecc82 config: set cached and uncached aliases for affected platforms
def9d51d7d Fix regression - make default return code an error
d48ae7aada config: mtl: Set init_config for smart amp
b5d762290f config: tgl-cavs: set init_config for smart test
15ea48177a src: adsp_config: Use reserved bits for module init config
ec649f37d6 Convert all ELF addresses to cached for calculations
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
As WoV may be used on HDA platforms, SDW platforms, as well as
nocodec platforms. Let's use a more safe pipeline ID for WoV.
Signed-off-by: Libin Yang <libin.yang@intel.com>
Now the abi header is changed and the config data is send through
large_config ipc message instead of init_instance ipc message.
Update the config data accordingly.
Signed-off-by: Libin Yang <libin.yang@intel.com>
The following problem is observed when testing pause functionality:
in a case of a playback stream host -> mixin -> mixout -> DAI where
host and mixin belong to the pipeline A and mixout and DAI belong to
pipeline B, pipeline B is scheduled before A. So at start we get:
scheduler start
B: no data
A: read 1 period of data
scheduler sleep
(1 period of data pending in pipeline A)
scheduler start
B: send 1 period of data out
A: read 1 period of data
scheduler sleep
(1 period of data pending in pipeline A)
PAUSE
RELEASE
scheduler start
B: old data before sleep isn't sent because A is PAUSED
A: read 1 period of data
scheduler sleep
(2 periods of data pending in pipeline A)
...
With repeated pause-release cycles this leads to buffer overrun. To
fix this allow sending out data by pipeline B when A is still paused.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Memory banks enablement flow is adjusted to recommended approach.
Power status should be read twice to ensure ebb readiness
Signed-off-by: Michal Bukowski <michal.bukowski@intel.com>
There is a rballoc() call during module_init() lacking the
correspondent rfree() on module_free(). Replace it with
module_allocate_memory() to ensure the memory to be freed
by module_adapter.
Signed-off-by: Pin-chih Lin <johnylin@google.com>
Changes all routes of form:
Object.Base {
route.1 {
source copier.host..1
sink gain..1
}
route.2 {
source gain..1
sink mixin..1
}
}
to
Object.Base {
route.1 {
source copier.host.$index.1
sink gain.$index.1
}
route.2 {
source gain.$index.1
sink mixin.$index.1
}
}
E.g. change ".." notation where the route index is expanded in between
the dots to explicit reference to the route index.
Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
Remove the unliaged operations since we use the frame aligned API
in mixer process function while get the available frames. Simplify
the code and get better performance for 16/24 bit process(save about
18% cycles) for HiFi version.
Signed-off-by: Andrula Song <andrula.song@intel.com>