Commit Graph

5574 Commits

Author SHA1 Message Date
Keyon Jie 3e64d47620 topology: asrc: add uuid token support
Add the uuid token to asrc widget for the future use.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 6f0b68f3fd topology: kpbm: add uuid token support
Add the uuid token to kpb widget for the future use.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 55a93348b5 topology: ch_sel: add uuid token support
Add the uuid token to ch_sel widget for the future use.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 2da0638db4 topology: detect: add uuid token support
Add the uuid token to detect widget for the future use.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 9f5173ce6e topology: muxdemux: add uuid token support
Add the uuid token to muxdemux widgets for the future use.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie ec6b210d8c topology: smart_amp: add uuid token to the widget
Add the uuid token to smart_amp widget for the future use.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 4572a5a59d test: topology: includes utils.m4 first
Move the including of utils.m4 to first as it is needed by other
component m4 files.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 98f5de8d56 topology: utils: add DECLARE_SOF_RT_UUID() helper
Add a helper DECLARE_SOF_RT_UUID() to generate the 16 Bytes UUID string.

The input string in this format (copied from the FW source directly):
DECLARE_SOF_RT_UUID(name, uuid_macro, a, b, c,
		 d0, d1, d2, d3, d4, d5, d6, d7);

The output string should be in this format:
a6a7:a4a5:a2a3:a0a1:b2b3:b0b1:c2c3:c0c1:d00d01:d10d11:d20d21:d30d31:
d40d41:d50d51:d60d61:d70d71

e.g. for demux component, the macro usage is:
DECLARE_SOF_RT_UUID("demux", demux_uuid, 0xc4b26868, 0x1430, 0x470e,
		 0xa0, 0x89, 0x15, 0xd1, 0xc7, 0x7f, 0x85, 0x1a);

while the output will be:
68:68:b2:c4:30:14:0e:47:a0:89:15:d1:c7:7f:85:1a

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Keyon Jie 7811c963f5 topology: tokens: add token for component UUID
Add the definition SOF_TKN_COMP_UUID for the component UUID token, this
could be used for process components as subtype/flavor soon.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-13 20:58:38 +08:00
Liam Girdwood 978957f0c0 zephyr: ipc: handler: dont use SOF APIs for D3 entry
Dont use the SOF API's, use Zephyr APIs when ready.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2020-08-13 09:26:45 +01:00
Seppo Ingalsuo ae12907dd7 Topology: Create 1ch and 3ch microphones sof-hda-generic topologies
This patch adds to CMakeLists.txt build of duplicate one and three
channels dmic capture topologies. They are needed to match the driver
that loads a topology that matches the number of microphones based on
configured microphones count in device BIOS.

This is an intermediate solution to enable microphones on such
devices. The mono audio will appear as double mono for user space. A
true mono topology and firmware will be created later.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2020-08-12 14:58:26 +01:00
Guennadi Liakhovetski 5d99a4fb0a topology: apl-pcm512x: fix scheduler domain
The conditional definition in sof-apl-pcm512x.m4 is supposed to
select the DMA scheduler if the codec is the bclk source and the
timer scheduler otherwise, but the conditional definition is
broken which leads to the DMA scheduler being selected always.
Fix the definition.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-08-12 14:36:25 +01:00
Liam Girdwood b25922023e zephyr: lib: memcpy should use zephyr version.
Also applies to host library.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2020-08-12 13:53:58 +01:00
Guennadi Liakhovetski d2076ce45c zephyr: dw-dma: fix a copy-paste error
Usually this error has no run-time effect, so this fix is mostly
theoretical.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2020-08-12 13:53:34 +01:00
Slawomir Blauciak caab1952f6 config: disable sa panic by default
System agent as a debug feature has very strict timing verification,
if the timing is not met it will result in a panic.
Such drastic measures are not suitable for release builds,
as a single scheduling delay has the potential to render the DSP FW
completely dead until reboot, due to lack of a FW recovery mechanism.

Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
2020-08-12 13:53:10 +01:00
Karol Trzcinski 5b4b553283 ext_manifest: Add sof_ipc_user_abi_version content
This information known at build time does not need to be
provided in a mailbox.

Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
2020-08-10 14:01:23 +01:00
Seppo Ingalsuo 56c29b45e4 Audio: ASRC: Reformat header file comments with longer lines
The 80 characters split lines were hard to read. This change
improves readability error codes enums.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2020-08-10 13:58:28 +01:00
Seppo Ingalsuo ecbb8c41e4 Audio: Fix pointer arithmetic mistake in ASRC initialize
This patch fixes the issue where impulse response update can
randomly corrupt stack in testbench environment. The error seen
in freeing cd->asrc_obj was free(): invalid next size (normal).
The violation was also confirmed with valgrind with error
Invalid write of size 4.

The order of impulse response storage and channel buffers are swapped
to simplify the pointer initialize calculations. The default
sizes for them are added as macro definitions into asrc_farrow.h.
Checks for used sizes are added to buffer and filter initialize
functions. The clear of buffer is done with memset instead of for loop.

Fixes: 4c995d0375
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2020-08-10 13:58:28 +01:00
Iulian Olaru 4c4dc2c532 platform: imx: Implement panic routine
This patch adds logic for the platform_panic() function, called in case
of a DSP oops.

This is important because it add a panic code in the debug box so the
application processor can understand why the oops happened. Also in
notifies the application processor about the oops generating an interrupt.

Signed-off-by: Iulian Olaru <iulianolaru249@yahoo.com>
2020-08-10 13:54:35 +01:00
Liam Girdwood b521bb1256 docker: alsa: allow alsa development in container
Build ALSA locally under /home/sof/work and don't delete it. This will
allow ALSA development within the container.
Change the folder owner to sof to avoid permission issue.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
2020-08-10 13:51:40 +01:00
Liam Girdwood f52350ef3a docker: update toolchains to GCC 9.3 and GDB 8.3
Use the later toolchains for docker.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2020-08-10 13:51:40 +01:00
Mohana Datta Yelugoti 108912bba8 tools: testbench:add null pointer variable check before accessing it
When the realloc() function fails, a NULL pointer is returned. But,
if the size argument is zero, then also NULL is returned. So, to
differentiate that, we also check if size is non zero. Only if
pointer is NULL and size is non-zero, we come to the conclusion that
realloc() failed and the allocated memory till now is freed and
appropriate error is returned.

If realloc is called on a pointer and fails, the memory pointed by
the pointer isn't freed. When realloc() fails, even this memory
is freed.

Signed-off-by: Mohana Datta Yelugoti <ymdatta.work@gmail.com>
2020-08-10 11:10:20 +01:00
Diana Cretu 3b3d0ae2eb fuzzer: Add initial support for i.MX8 platform
Implement the fuzzer API for the i.MX8 platform. The difference
between other platforms and i.MX8 is the Messaging Unit(MU). We have
emulated the hardware functionality of MU by using SHMs to represent
Side A and Side B of the MU and the registers they each have. Both
qemu(VM) and fuzzer's write functions write to both sides of the MU to
successfully emulate it's functionality.

Signed-off-by: Diana Cretu <diana.cretu@nxp.com>
Signed-off-by: Shreeya Patel <shreeya.patel23498@gmail.com>
2020-08-10 10:44:30 +01:00
Liam Girdwood 9f2a1abdda zephyr: panic: use zephyr panic APIs when Zephyr is enabled.
Use the zephyr issue/panic reporting APIs when Zephyr RTOS is used.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2020-08-07 14:26:52 +01:00
Bartosz Kokoszko 0a62f2bf56 mn: get mn struct pointer using platform_shared_get() function
In order to get SHARED_DATA we should not use cache_to_uncache
macro directly, but platform_shared_get() function. Otherwise,
it can lead to situation, in which in one section there will
be cached and uncached variables not aligned to cache line
(as a result cache invalidation and writebacks could lead to
unexpected memory overwrite).

Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
2020-08-07 14:17:24 +01:00
Bartosz Kokoszko 2f5bf3cc92 pipeline: change pipe reset propagation condition
This commit allows propagating pipeline reset to adjacent pipelines
assuming that they have the same schedule component.

Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
2020-08-07 13:20:48 +01:00
Seppo Ingalsuo 3db29f0eb7 Audio: ASRC: Fix pull mode copy frames consume limit
This patch fixes the regression that happened in a previous fix
for stress test gitches issue. Since the passed 7th argument
(write_index) was set to output frames limit the ASRC copy()
terminated too early when converting from higher to lower sample
rate. It has caused issues at least in sof-diagnostic-driver based
validation for capture direction.

Fixes: f63adb42d9
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2020-08-07 13:19:05 +01:00
Pin-chih Lin b63c3a3723 tools: testbench: Support channels specification
Support channel specification by argument "-c" on testbench

Signed-off-by: Pin-chih Lin <johnylin@google.com>
2020-08-06 12:25:14 +01:00
Pin-chih Lin d38d5892f6 tools: testbench: Support multiple output files
In order to run multi-output component playback by testbench, this patch
supports multiple output file mode on running testbench. Argument "-o" is
modified to accept specifying up to 4 filenames delimited by comma,
e.g. "-o output1,output2,..."

Moreover, debug messages in tplg_parser/tplg_parser.c is refined for
demonstrating multiple pipelines better.

Signed-off-by: Pin-chih Lin <johnylin@google.com>
2020-08-06 12:25:14 +01:00
Pin-chih Lin 3b5447b379 tools: topology: Support multi-output playback topology
Support up to 4 output pipelines for test/topology/test-playback.m4, where
argument TEST_PIPE_AMOUNT is added for identifying the number of pipelines
while generating test topologies.

Multi-output component should be added in ALG_MULTI_MODE_TESTS and
ALG_MULTI_SIMPLE_TESTS to generate test topologies with multiple output
pipelines in the future.

Signed-off-by: Pin-chih Lin <johnylin@google.com>
2020-08-06 12:25:14 +01:00
Pan Xiuli 6c11a94055 trace: fix error trace missing issue
For trace message with LOG_LEVEL_CRITICAL, we should always show
them into mailbox.

Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
2020-08-06 11:39:38 +01:00
Liam Girdwood ab9dc9da76 smart amp: fix alignment warning of data passed in
Fix GGc warning on aligned packed data.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2020-08-06 10:59:01 +01:00
Marc Herbert cf74566a33 ipc: update documentation to include extended data
Update the IPC protocol documentation to include the extended data.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-05 14:53:31 +01:00
Keyon Jie a7bd453ed4 component: switch to use UUID for component creation
Switch to use UUID for component creation, if it is provided from the
host, otherwise, use component type for the component driver matching.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2020-08-05 14:53:31 +01:00
Keyon Jie c9af1b6966 lib: add memcmp for memory comparing
Add function memcmp for comparing two length-limited memory.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-05 14:53:31 +01:00
Keyon Jie 3cded9d7cb ipc: topology: use the sof_ipc_comp reserved bytes for extended data
Use the 32bit reserved member of the struct sof_ipc_comp as the extended
data length, this will help to minimize the ABI change for adding new
extended data to the struct sof_ipc_comp, usually only minor ABI version
bump needed for every update with this new solution.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-05 14:53:31 +01:00
Keyon Jie 81b3e87924 ipc: topology: add definition of the extended data
Initial the definition of struct sof_ipc_comp_new_ext, which will be
used to align the extended data between FW and the SW, add UUID array to
it.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2020-08-05 14:53:31 +01:00
Keyon Jie 639154e35b testbench: topology: initial the sof_ipc_comp_file with 0s
Initial the struct sof_ipc_comp_file to make sure all no updated flags
are 0s.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2020-08-05 14:53:31 +01:00
Mohana Datta Yelugoti bc1d785b4d tools: tplg_parser: check if parameter is valid before using it
Before accessing the contents of the parameter pointer of the
function, check if the pointer is NULL. Else, it may lead to
segmentation fault.

Signed-off-by: Mohana Datta Yelugoti <ymdatta.work@gmail.com>
2020-08-04 21:41:05 +01:00
Janusz Jankowski 0bf3ca6a8b ll: set initial value for num_clients
Value for 'num_clients' has to be set, otherwise it may
have undefined value in later ifs.

Signed-off-by: Janusz Jankowski <janusz.jankowski@linux.intel.com>
2020-08-04 23:10:44 +03:00
Pierre-Louis Bossart 4a6eea6c9a topology: bytcht: reduce deep-buffer to 5ms
Somehow a 10ms buffer for the deep-buffer pipe generates write errors
on the kernel side with S24 and S32_LE.

Reducing the memory footprint seems to fix the problem.

This may hide a more fundamental problem with either scheduling or
memory allocation, but for now let's solve CI and daily tests.

BugLink: https://github.com/thesofproject/sof/issues/3171
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2020-08-04 11:39:55 +01:00
Karol Trzcinski d07035d981 logger: Align g flag description in help message
Help message, near -g flags looks like:

sof-logger:      -f precision           Set timestamp precision
sof-logger:      -g             Hide timestamp
sof-logger:      -d *.ldc_file          Dump ldc_file information

before changes, and after apply this patch, descriptions are aligned.

Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
2020-08-04 11:26:19 +01:00
Seppo Ingalsuo fa4a7bda4e Testbench: Check num_elems in tokens parsing
This patch adds check for sane num_elems value. If the calculated
array size exceeds the value size an error is returned and topology
parsing is aborted.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2020-08-04 11:25:35 +01:00
Mohana Datta Yelugoti d9fea08a24 tools: testbench: check if pointer is null before accessing it
Check if a pointer is NULL before accessing it, else, it leads
to segmentation fault.

Signed-off-by: Mohana Datta Yelugoti <ymdatta.work@gmail.com>
2020-08-04 11:10:24 +01:00
Mohana Datta Yelugoti 8737e0b726 tools: tplg_parser: free allocated memory to avoid memory leaks
When an error is occurred when loading the widget, the memory
allocated is not freed properly. This results in memory leaks.
Avoid these memory leaks by freeing the allocated memory before
exiting the function by returning error value.

Signed-off-by: Mohana Datta Yelugoti <ymdatta.work@gmail.com>
2020-08-04 11:10:24 +01:00
Mohana Datta Yelugoti b1dec44124 tools: testbench: initialize pointer before freeing it
When we try to free a pointer which is not initialized, we are
using a value in the program which is undefined. So, initialize
the pointer variable, so that in future, when we free the pointer
it won't cause a problem.

Signed-off-by: Mohana Datta Yelugoti <ymdatta.work@gmail.com>
2020-08-04 11:10:24 +01:00
Karol Trzcinski 369e9e3b5a ssp: Debug ssp_empty_tx_fifo()
This function should wait to transmission last element from FIFO,
what is indicated in SSSR and SSCR3 registers.

Signed-off-by: Karol Trzcinski <karolx.trzcinski@linux.intel.com>
2020-08-04 11:07:52 +01:00
Marcin Rajwa ae7b911956 topology: fix playback & capture pipelines to be timer driven
This patch fixes several pipelines which are DMA driven by default
but should be driven in timer domain.

Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com>
2020-08-03 21:57:27 +01:00
Artur Kloniecki 238cd1457d treewide: Remove references to .free and .avail members of audio_stream.
All audio_stream clients should use provided audio_stream_get_avail*/free*
API, instead of directly accessing .avail and .free member fields.

Signed-off-by: Artur Kloniecki <arturx.kloniecki@linux.intel.com>
2020-08-03 21:53:14 +01:00
Bard Liao 7b8eec9f4f topology: add tgl-rt711-rt1316-rt714 support
tgl-rt711-rt1316-rt714 is almost the same as tgl-rt711-rt1308-rt715 and
can use the same topology file.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2020-08-03 21:11:51 +01:00