Commit Graph

5943 Commits

Author SHA1 Message Date
Guennadi Liakhovetski c8ae78ab0e zephyr: fix a path to a header, build LPS conditionally
Use a correct path to the cAVS memory.h header, build cAVS LPS
only when the respective Kconfig option is selected.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-27 16:32:32 +00:00
Artur Kloniecki 4d4a9d7299 trace: Allow bursts of messages pass through flood filter.
Introduce TRACE_BURST_COUNT Kconfig setting, which allows to define amount
of messages that are allowed to pass through the filter before suppression
kicks in.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-11-27 15:10:46 +00:00
Artur Kloniecki 5d9ae0de93 logger: Decode %pQ format specifiers as log entries.
To allow proper display of suppressed message info traces, %pQ specifier
was chosen to decode pointers to log entries.
Helper function asprintf_entry_text() is used to handle the log entry
text for display.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-11-27 15:10:46 +00:00
Artur Kloniecki 524cf111f6 trace: Disable adaptive filtering, when user modifies filters settings
When user manually overrides trace filtering settings, adaptive trace
rate-limiting is disabled. This assures, that when user deliberately
changes filters, all trace messages are being delivered.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-11-27 15:10:46 +00:00
Artur Kloniecki fee7d9c660 trace: Introduce adaptive rate-limiting/suppression of repeated messages
Few recent messages are remembered by the filter, and repetitive messages
reported in short period of time are suppressed. Solution is compile-time
configurable via many Kconfig options, as documented in Kconfig.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-11-27 15:10:46 +00:00
Artur Kloniecki b07f2674cc trace: Rename trace_log() function to trace_log_filtered()
Also create trace_log_unfiltered() function, to be used internally
by tracing subsystem to emit information about suppressed trace messages.

The *unfiltered function could be also used as replacement
in _log_message() macro, to disable log filtering for debugging purposes.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-11-27 15:10:46 +00:00
Artur Kloniecki 9976fb2502 trace: Create vatrace_log() function taking variable argument list.
This separates trace filtering from actual sending of the message
and allows usage of sending function without filtering, when necessary.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-11-27 15:10:46 +00:00
Curtis Malainey 0ca92feb6d codec_adapter: add missing ifdefs for cadence
If you enable the adapter but disable the cadence codec this will break

Reported-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
2020-11-26 15:42:16 +00:00
Curtis Malainey 7058c85fac codeowners: add codeowners for dcblock/drc/crossover
Add google code owners for google contributed processing code

Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
2020-11-24 22:14:35 +00:00
Daniel Baluta 3c5c7b848d drivers: imx: sai: Use rate from topology
So far we only used topologies with rate set
to 48KHz. This is no longer true now when
we enabled KWD pipelines.

So, use rate from parameters passed from kernel.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2020-11-24 13:11:02 +02:00
Daniel Baluta f5441a1cf7 ipc: dai: Align sof_ipc_dai_sai_params with kernel
We add fsync_rate, bclk_rate because now we
actually need them.

Also, notice that mclk_rate was moved near the other rates
fields.

I think this was broken from the beginning but didn't
show up as a bug because SAI is used in consumer mode
and the clock is provided by the codec.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2020-11-24 13:11:02 +02:00
Daniel Baluta d2ecb572e3 drivers: imx: sai: Add SAI private data
We allocate SAI private data to save config and
parameters and use them later.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2020-11-24 13:11:02 +02:00
Guennadi Liakhovetski 90955de93e hal: remove unused files
Prevent unused Xtensa XTOS files from building but keep them in the tree
until migration to Zephyr completes.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-23 10:54:33 +00:00
Guennadi Liakhovetski 1d39806f4e zephyr: extend the wrapper for generic architecture support
When building SOF with Zephyr for unsupported architectures
the following additional adjustments to the wrapper are required:
1. define HEAP_RUNTIME_SIZE
2. implement stubs for interrupt handlich code
3. remove arch_timer_get_system() as it's provided by a header
4. hardcode "return 0;" for platform_timer_get()
5. disable sys_module_init() which anyway isn't yet functional
   under Zephyr
6. add dummy platform_init() and platform_boot_complete()
7. add log_const_sof

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski 02222f41a5 dma: add missing symbols for Zephyr builds
When building with Zephyr for unsupported architectures several DMA
symbols are missing. Add them to the respective platform header.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski a652aad6e1 trace: provide a dummy trace_point() implementation for CONFIG_LIBRARY
trace_point() is only used in platform code and in init/init.c. None of
those are build for ordinary CONFIG_LIBRARY builds. However, when built
under Zephyr, init.c is included in the build. therefore a dummy
implementation of trace_point() is needed.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski 28210fa6f1 schedule: the cAVS timer requirement is only valid for Xtensa
The timer-domain driver requires the use of the cAVS timer driver,
but it only makes sense on Xtensa architectures.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski f4b6a54a77 init: make secondary_core_init() available to all single-core configurations
If MULTICORE is disabled secondary_core_init() should be a dummy on
all architectures, not only on Xtensa. This change also makes
arch/init.h redundant, remove it.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski fe66007d4d testbench: file.c calls free(), it must include stdlib.h
Add the missing stdlib.h include to file.c.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski 2c4d8e981e debug: explicitly include ipc/trace.h where panic() is called
ipc/trace.h contains definitions for all the SOF_IPC_PANIC_* macros,
it should be included explicitly everywhere, where those macros are
used.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski 7b1d54087c xtensa: move register_exceptions() to init.c
register_exceptions() and exception() are only used in init.c, move
them there.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski baf061d5d8 debug: move arch_get_stack_*() functions to a separate header
arch_get_stack_*() functions are only used in panic.c. Move them to
a separate header to reduce dependencies.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski a219b97086 debug: move dump_stack() to panic.c
dump_stack() is only used in panic.c, move it there.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski ddbf5255d2 zephyr: set ARCH to "host" when not building for Xtensa
When building for unsupported architectures under Zephyr set ARCH
to "host" to use generic headers.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski 4df89f5ff7 host: fix timer API
Add a required .id field to struct timer and update
arch_timer_get_system() prototype to return uint64_t.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Guennadi Liakhovetski ff1edf2b6f compile: make inclusion of $(ARCH)/Kconfig optional
SOF can be built with Zephyr for arbitrary unsupported architectures.
In such cases ARCH can be equal to x86_64 or arm or something else, so
respective $(ARCH)/Kconfig files don't exist. Make inclusion of those
files optional.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-21 16:22:54 +00:00
Daniel Baluta 8a8e8736a8 topology: imx8: Add memory caps for i.MX8 platforms
This adds memory capabilities macros for different buffer
types on i.MX8.

Once we started to enable more complex pipelines
on i.MX8 we found out that we need these caps defined.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2020-11-21 13:50:56 +00:00
Seppo Ingalsuo da9e0d3c41 Tools: Tune: Add tool for DMIC FIR filters setup
This patch adds the the Matlab script dmic_init() that simulates
initialization of the Intel PDM digital microphones decimation
block. The tool computes the needed FIR filters and exports
them as C header files. The script dmic_batch computes all the
currently used decimation settings.

The generated header files from subdirectory include need to be
manually copied to src/include/sof/audio/coefficients/pdm_decim/
and the header file pdm_decim_table.h edited manually if the
header file names were changed due to different filter characteristic
(band frequencies, stop-band attenuation).

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2020-11-20 11:42:24 +00:00
Marcin Rajwa cfe75333b4 codec_adepter: fix for memory list initialization
This patch moves memory list initialization from .prepare() to .init()
as we need that memory list be already initialized on codec
initialization otherwise we will lose track of memory allocated
prior to .prepare()

Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
2020-11-19 21:29:36 +00:00
Curtis Malainey c35b8875c2 kpb: fix logic bug
Storing the address of a know existing address space will always result
to be true. Therefore this variable is actually doing nothing. Remove
reference to fix this.

Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
2020-11-18 12:07:56 +00:00
Jaska Uimonen 6f0829b2a6 scripts: remove restriction for tgl rimage signing
Currently xtensa-build-all.sh has restriction to use rimage for tgl
signing, because rimage didn't support tgl. As rimage now has support
for tgl signing let's remove this limitation.

Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
2020-11-18 12:07:23 +00:00
Guennadi Liakhovetski 926fe34d95 compile: fix 64-bit compilation warnings
The compiler issues warnings when converting 64-bit pointers to 32-bit
integers. Use uintptr_t instead.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-18 11:37:37 +00:00
Guennadi Liakhovetski a91219eb79 zephyr: remove infinite recursion on Broadwell
Broadwell support with Zephyr had only been dry-coded, it has never
been tested, and it contains an infinite recursion bug: functions
platform_timer_get() and arch_timer_get_system() call each other
infinitely. Break the recursion formally, until a proper fix is
available.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-18 11:37:37 +00:00
Guennadi Liakhovetski 375a46d176 zephyr: only build trace support if enabled in the configuration
Files under src/trace should only be built if CONFIG_TRACE is selected
in configuration.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-18 11:37:37 +00:00
Guennadi Liakhovetski 5204a29e2f dai: add a missing header
dai.h defines types with fields of type struct list_item so it must
include list.h.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-18 11:37:37 +00:00
Guennadi Liakhovetski 143af6d832 compile: add missing headers
using irq_local_enable() and irq_local_disable() requires including
interrupt.h

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-18 11:37:37 +00:00
Guennadi Liakhovetski 7659186571 xtensa: make multi-core configuration options available globally
Number of processing cores is a global parameter, it doesn't have to
reside in an xtensa-specific configuration menu.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-11-18 11:37:37 +00:00
Fred Oh 2dcb2ebe1d topology: cnl-nocodec: update data format in comment
Updated s24le data format in comment to match with actual value.

Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
2020-11-18 11:10:04 +00:00
Fred Oh ceabe95d6b topology: icl-nocodec: enable more SSP and DMIC pipelines
Previously sof-icl-nocodec topology only enabled SSP0. To effectively test
more test cases, this enables more playback and capture pipelines with
SSP1, SSP2 and DMIC3.

Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
2020-11-18 11:10:04 +00:00
Ranjani Sridharan f0d491a4ab ssp/dai: Dont treat dai_config during active audio as an error
When a DAI_CONFIG IPC is sent from the driver for a particular
DAI type and index, all DAI components that match the type and index
are configured. When all components are set up during topology
loading, this isn't really much of a problem as all DAI_CONFIG
IPCs will be sent at that time as well ie there is no active
playback/capture. But with dynamic pipeline loading, the playback
and capture DAIs will be individually configured whenever the
respective pipeline is started. This will end up with errors both
when configuring the SSP and when configuring the DAI comp itself.

So, ignore the request to configure the SSP and the DAI comp
that is already active so that the other DAI comp can be
configured successfully when its pipeline is set up.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2020-11-18 11:08:59 +00:00
Ryan Lee e7a339bd4c smart amp: memory reset after allocation
Added memset by zero after memory allocation.

Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
2020-11-17 16:05:29 +00:00
Ryan Lee 1b89167f51 smart amp: added forced parameter function
Read whole DSM parameters including non-volatile parameters
from DSM component instead of reading cache.
The function is added for the diagnostic purpose.

Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
2020-11-17 16:05:29 +00:00
Ryan Lee f0b2017fc7 smart amp: parameter restoration after DSM re-init
DSM is re-initialized when the format is changed.
DSM parameters loaded from the blob before re-init
is not safe for the re-init process
Parameter re-configuration is necessary after re-init.
'maxim_dsm_restore_param' was added for this purpose.

Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
2020-11-17 16:05:29 +00:00
Ryan Lee 4a27e4628d smart amp: support dynamic bit-depth conversion
Support dynamic bit deptch conversion on runtime.
Re-initialize DSM if the frame_fmt is changed.

Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
2020-11-17 16:05:29 +00:00
Ryan Lee ce9db8ef60 smart amp: Changed buffer size for 32bit processing
Changed buffer size from 16bit to 32bit
Removed 32bit <-> 16bit conversion code.

Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
2020-11-17 16:05:29 +00:00
Ryan Lee 5fe1a6a51f smart amp: replaced variable x and y by idx and channel respectively
Changed variable x to idx and variable y to ch because x and y are
not good name for an iterator.

Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
2020-11-17 16:05:29 +00:00
Curtis Malainey 0aa92d8963 mixer: delete unused function
This function isn't called anywhere, time to do some cleaning

Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
2020-11-16 08:10:55 -08:00
Daniel Baluta 8354454b4d platform: imx: Fix PLATFORM_DCACHE_ALIGN
At this point PLATFORM_DCACHE_ALIGN is equal with DCACHE_LINE_SIZE
which on i.MX boards is 128.

Functions like rmalloc and rzalloc are allocating memory aligned at
PLATFORM_DCACHE_ALIGN bytes. This means that blocks under 128 bytes
are not really used and blocks sized > 128 are preffered for small
allocations.

This seems to be an unnecessary overhead which results in SOF not
being abel to allocate memory for simple pipelines (e.g simple
pipeline with a mixer).

For this reason, we set PLATFORM_DCACHE_ALIGN to a smaller value
(sizeof(void*)) but keep HEAP_BUF_ALIGNMENT unchanged.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2020-11-16 11:59:11 +00:00
Andy Ross 23d1dc005a schedule/timer_domain: Correct Zephyr driver check
The comment implies that it's looking for what Zephyr knows as the
"cavs_timer" driver, but the test was specifying an old (and AFAICT
SOF-specific?) kconfig.  Use the one that corresponds to the actual
driver selection.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-11-16 11:23:50 +00:00
Andy Ross 2664fc30fb zephyr/wrapper: Disable check for CONFIG_SYS_HEAP_ALIGNED_ALLOC
This kconfig variable no longer exists in upstream Zephyr (the feature
it used to control is now zero-overhead and always enabled).

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-11-16 11:23:50 +00:00