Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

topology2: add ALC5650 codec support #16

Open
wants to merge 546 commits into
base: master
Choose a base branch
from
Open

topology2: add ALC5650 codec support #16

wants to merge 546 commits into from

Conversation

macchian
Copy link
Owner

@macchian macchian commented Oct 16, 2023

ALC5650 codec is I2S codec integrated Headphone and Speaker.
The HW board connects SoC_I to ALC5650 as below:

I2S0: rt5650 aif1 for speaker.
I2S2: rt5650 aif2 for headphone.

Clocks controls configuration depends on codec requirement.
for example:
RT5682/NAU8825: requires BCLK_ES earlier.
RT5650: requires MCLK_ALWAYS_ON from input source clock.

softwarecki and others added 30 commits March 8, 2023 14:46
Added error handling where it was missing. According to the documentation,
the fseek function returns a non-zero value on error. The conditions for
checking this value have been corrected.

Signed-off-by: Adrian Warecki <[email protected]>
The fseek function returns -1 to signal an error. Return value was assigned
to a variable without a sign, so the error could not be detected.

Signed-off-by: Adrian Warecki <[email protected]>
Now that rimage can distinguish between Zephyr and XTOS builds, we
can use memory alias specifiers with both.

This reverts commit 1e0a85b.

Signed-off-by: Guennadi Liakhovetski <[email protected]>
cAVS 1.5, 1.8 and 2.0 are supported by Zephyr, their configurations
need alias definitions.

Signed-off-by: Guennadi Liakhovetski <[email protected]>
Update the list of modules to match that of "tgl-cavs".

Signed-off-by: Kai Vehmanen <[email protected]>
Add base LNL config derived from MTL.

Signed-off-by: Jaroslaw Stelter <[email protected]>
Change of uuid
regarding Windows compatibility

Signed-off-by: Kwasowiec, Fabiola <[email protected]>
Added header guard in elf.h file to allow safe include this header by
multiple units.

Signed-off-by: Adrian Warecki <[email protected]>
The man_create_modules function may return an error that was ignored. Added
check of a return value.

Signed-off-by: Adrian Warecki <[email protected]>
There was no dram_offset value in any configuration file. It also wasn't
used anywhere in the code. So the code reading it from the tolm file has
been removed.

Signed-off-by: Adrian Warecki <[email protected]>
Added name_val structure representing name/value tuple. Added function
print_enum which displays the name of the enum corresponding to a given
value. Added print_flags function which display names of flags constituting
a given value.

Signed-off-by: Adrian Warecki <[email protected]>
Moved mem_zone field from adsp structure to the new memory_config structure

Signed-off-by: Adrian Warecki <[email protected]>
A new memory_alias structure containing memory address alias configurations
has been created. It was placed in the memory_config structure.

Signed-off-by: Adrian Warecki <[email protected]>
Changing the name of the structure type is a prelude to separating
information about the elf file from the information used during creation
of a manifest.

Signed-off-by: Adrian Warecki <[email protected]>
Changed the name of the fw_size variable to a more clear one and added
a description.

Signed-off-by: Adrian Warecki <[email protected]>
A is_bootloader field has been added to determine whether a module is
a bootloader. This is clearer than checking the module index and the number
of modules in different places in the program.

Signed-off-by: Adrian Warecki <[email protected]>
A new -l parameter has been added to the program's command line. It
instructs the program to not treat the first module as a bootloader
and not to skip the bss section for it.

Signed-off-by: Adrian Warecki <[email protected]>
Currently, sof incorrectly includes a private manifest.h header belonging
to the manifest.c module. Moved the MAN_MAX_SIZE_V1_8 definition used by
sof, to the public manifest header to allow sof to switch to using the
correct file.

Signed-off-by: Adrian Warecki <[email protected]>
The manifest for elf modules is read from their .module section.
The modules configuration parsed from a toml file was completely ignored.
After this change, the parsed configuration is treated as a template for
the module manifest.

Signed-off-by: Adrian Warecki <[email protected]>
Some platforms (eg. tgl) dont have modules configuration in a toml files.
An attempt to use the configuration template ended with a reference to
a null pointer. This commit fixes this issue.

Signed-off-by: Adrian Warecki <[email protected]>
The deleted "install" target copied only the rimage executable and
left the config files behind. This gave the wrong impression that the
executable is useful without config files.

"Installing" also gave the wrong impression that rimage versions are
somewhat stable and relatively independent of SOF versions: they're
not. In fact there is no such thing as an rimage "version": everyone
should always use the exact rimage _git commit_ from the west manifest
or git submodule. There are no rimage "releases" and no semantic
versioning or anything like it, rimage is effectively part of the SOF
source and build and run directly from its build directory by
practically every SOF developer and SOF CI thanks to

  sof/src/arch/xtensa/CMakeLists.txt#ExternalProject_Add(rimage_ep ...
  sof/scripts/xtensa-build-zephyr.py#def build_rimage()
  sof/zephyr/CMakeLists.txt#set(RIMAGE_CONFIG_PATH ...

etc.

Providing an "install" target greatly increases the chances of
different people and CIs using different rimage versions which is the
last thing we want considering the many significant rimage changes
happening right now, examples:

- zephyrproject-rtos/zephyr#56099
- zephyrproject-rtos/zephyr#54700
- thesofproject#7270
- thesofproject#7304
- thesofproject#7320
- thesofproject/rimage#155

While it's useful for multiple files (e.g.: config files), a CMake
target was always overkill to copy a single file. Someone or some
script who really wants to copy the rimage binary to some other place
that the build directory for some (discouraged) reason _can still do
so_ with a much more basic, simpler and more transparent file copy
command.

Finally, the default "bin" DESTINATION required root access which
is otherwise totally unncessary to build SOF.

Signed-off-by: Marc Herbert <[email protected]>
The SRC should be a normal LL component, it can process 1 ms blocks
of audio in real-time. The domain_types = "1" is for DP scheduling
that is not enabled currently in Zephyr configuration. It causes a
pipeline prepare fail when a topology contains SRC.

Signed-off-by: Seppo Ingalsuo <[email protected]>
This patch removes one unnecessary tab from section for SRCINTC.

Signed-off-by: Seppo Ingalsuo <[email protected]>
Fixes commit 77d4a2a ("cmake: remove "install" target")

Signed-off-by: Marc Herbert <[email protected]>
The original size given to the "calloc" call did not account for the
necessity to pad section sizes to a multiple of 4 bytes. As such, every
time we wrote a section that did not have a size multiple of 4 we would
overflow the allocated buffer.

Fix the calloc call to account for that padding requirement.

Signed-off-by: Paul Olaru <[email protected]>
Change of uuid
regarding Windows compatibility

Signed-off-by: Jaroslaw Stelter <[email protected]>
This patch adds Aria module for TGL and TGL-H platforms. The
used configuration data is copy from mtl.toml. This change
allows to use Aria component in topologies.

Signed-off-by: Seppo Ingalsuo <[email protected]>
Add vangogh toml file to support sof-vangogh.ri binary build

Signed-off-by: SaiSurya, Ch <[email protected]>
Fixes commit 6e3abe6 ("rimage: Add suport for loadable modules")

It looks like that commit mistook the `:` sign as a separator. This
accidentally added the requirement to give `-p` a parameter which is
then ignored. Remove the spurious `:`.

Signed-off-by: Marc Herbert <[email protected]>
This patch allows to load the DRC component.

Signed-off-by: Seppo Ingalsuo <[email protected]>
marc-hb and others added 23 commits October 9, 2023 13:06
Add it both as a git submodule and west submodule to minimize
disruption. The current focus is on rimage and that's a dramatic enough
change; one problem at at time.

Signed-off-by: Marc Herbert <[email protected]>
Switch away from the independent rimage submodule. Long story in
thesofproject#8178 and others.

Signed-off-by: Marc Herbert <[email protected]>
Switch away from the independent rimage submodule. Long story in
thesofproject#8178 and others.

Signed-off-by: Marc Herbert <[email protected]>
Switch away from the independent rimage submodule. Long story in
thesofproject#8178 and others.

Signed-off-by: Marc Herbert <[email protected]>
This commit bumps up the Zephyr revision to contain
the fix for the i.MX93 CI build failure.

Signed-off-by: Laurentiu Mihalcea <[email protected]>
This patch adds struct sof_ipc4_notify_module_data that matches
the Linux kernel handler for notifications from firmware to ALSA
user space. The SOF_IPC4_NOTIFY_MODULE_EVENTID_ALSA_MAGIC_VAL
event_id is used to identify the notifications for ALSA controls
like switch and enum.

Signed-off-by: Peter Ujfalusi <[email protected]>
Signed-off-by: Seppo Ingalsuo <[email protected]>
This patch updates the Time domain fixed beamformer (TDFB)
module prepare() to set in tdfb_params() IPC4 sink and source
parameters from initialization IPC. The notifications send to
user space for sound direction of arrival is updated to work
with IPC4 ALSA notifications.

Signed-off-by: Seppo Ingalsuo <[email protected]>
create ipc3 and ipc4 specific source file, these files will
only be used to store specific code accordingly.

Signed-off-by: Baofeng Tian <[email protected]>
previously, linear ramp is only applicable for ipc3, however,
linear is also applicable for chrome/linux with ipc4, so remove
this ipc3 restriction.

Signed-off-by: Baofeng Tian <[email protected]>
volume related config are missed to move during volume move out
from module adapter, move volume kconfig from module adapter folder
to volume folder with a specific volume kconfig file.

Signed-off-by: Baofeng Tian <[email protected]>
as DP uses LL as a tick source, it starts an empty LL task
to ensure that an instance of LL is running
This applies to mostly to secondary cores, but is may happen
that there's no LL instance started on primary

This commit fixes 2 problems
 - LL tick source was stated once for every DP module
 - LL tick source wasn't stopped when there were no DP
   modules running anymore

Signed-off-by: Marcin Szkudlinski <[email protected]>
A stray } is at the end of RIMAGE_CONFIG_PATH causing issues when
signing images.

Signed-off-by: Anas Nashif <[email protected]>
With input_audio_format/output_audio_format objects in preparation to
deprecate the audio_format class.

Signed-off-by: Ranjani Sridharan <[email protected]>
…nvalid"

This reverts 'commit e847c8b ("module_adapter: avoid module
init crash in case of ipc data invalid")'.

No data is not an invalid case for mixer, for example.

Fixes: thesofproject#8265
Signed-off-by: Iuliana Prodan <[email protected]>
This patch adds the widget class dcblock and a sample
bytes configuration blobs.

Signed-off-by: Seppo Ingalsuo <[email protected]>
This patch uses cavs-benchmark-hda.conf to build topologies to
test components in a simple playback and capture configuration.

host copier --> component --> DAI copier
host copier <-- component <-- DAI copier

The built topologies are
sof-hda-benchmark-dcblock16/24/32-tgl.tplg

The shell script bench_comp_generate.sh is added to conveniently
generate include files needed to build new test topologies for
component with s16/s24/s32 format.

Signed-off-by: Seppo Ingalsuo <[email protected]>
This patch adds DRC test topologies build.

Signed-off-by: Seppo Ingalsuo <[email protected]>
This patch adds IIR EQ topologies build.

Signed-off-by: Seppo Ingalsuo <[email protected]>
This patch adds FIR EQ topologies build.

Signed-off-by: Seppo Ingalsuo <[email protected]>
name

rt713 and rt1713 are in different SoundWire links. So, no DAI type will
be appended to DAI link name. We should use default stream name in
the topology.

Signed-off-by: Bard Liao <[email protected]>
This is fixup for 689e8e9

Incorrect list pointer has been used

Signed-off-by: Marcin Szkudlinski <[email protected]>
@macchian macchian force-pushed the mac-rt5650 branch 3 times, most recently from e445e5a to beb0dfd Compare October 25, 2023 07:00
Define ssp clock control attributes {0, 64, 128, 256}
corresponding to SSP_CLKCTRL bits:
SOF_DAI_INTEL_SSP_CLKCTRL_MCLK_ES	BIT(6)
SOF_DAI_INTEL_SSP_CLKCTRL_BCLK_ES	BIT(7)
SOF_DAI_INTEL_SSP_CLKCTRL_MCLK_AON	BIT(8)

Signed-off-by: Mac Chiang <[email protected]>
RT5650 codec integrated Headphone and Speaker.

The HW board connects SoC I2S to RT5650 as below:

I2S0: rt5650 aif1 for speaker.
I2S2: rt5650 aif2 for headphone.

RT5650 enables MCLK_ALWAYS_ON.

Signed-off-by: Mac Chiang <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.