Go to file
Ranjani Sridharan 9ef233de48 topology2: Introduction to Topology2.0
About
    -----

    This is a high level keyword extension on top of the existing ALSA
    conf topology format designed to:

    1) Simplify the ALSA conf topology definitions by providing high level
       "classes" so topology designers need to write less config for common
       object definitions.

    2) Allow simple reuse of objects. Define once and reuse (like M4) with
       the ability to alter objects configuration attributes from defaults.

    3) Allow data type and value verification. This is not done today and
       frequently crops up in FW bug reports.

    Common Topology Classes
    -----------------------

    Topology today has some common classes that are often reused throughout
    with slightly altered configurations. i.e. widgets (components),
    pipelines, dais and controls.

    This PR introduces the high level concept of reusable "class" like
    definition for a AIF_IN/AIF_OUT type object that can be used to create
    topology objects.

    Common Topology Attributes
    --------------------------
    Topology defines a lot of attributes per object with different types
    and constraints. Today there is no easy way to validate type or
    constraints and this can lead to many hard to find problems in FW at
    runtime.

    A new keyword "DefineAttribute" has been added to define attribute
    type, size, min value, max value, enum_values. This then allows
    alsatplg to validate each topology object attribute.

    Topology Classes define the list of attributes that they use and
    whether the attribute is mandatory, can be overridden by parent users
    or is immutable. This also helps alsatplg emit the appropriate errors
    for attribute misuse.

    Common Topology Arguments
    -------------------------

    Arguments are used to pass essential data needed for instantiating an
    object particularly needed for the object name. A new keyword
    "DefineArgument" has been added to define the arguments. The order in
    which the arguments are defined determines the name for the widget.
    For example, in the case of the host widget, the name would be
    constructed as "host.1.playback" where "1" is the pipeline_id argument
    value and "playback" is the direction argument value.

    Attribute Inheritance:
    ----------------------
    One of the key features of Topology2.0 is howthe attribute values are
    propagated from a parent object to a child object. This is accomplished
    by adding attributes/arguments with the same name for a parent and an
    object. By doing so, when creating a child object, the value for the
    common attribute is populated from the parent. If the value is provided
    in the child object instance, then it overrides the value coming from
    the parent.

    ALSA Conf Parser
    ----------------

    All the changes being proposed and discussed here must be 100%
    compliant with the ALSA conf parser. i.e. no syntax changes or
    changes to semantics for any existing keyword.

    It's intended that there will be NO changes to the ALSA conf parser
    (unless new keywords require this ?) and all topology building
    changes will be in the alsatplg compiler.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2021-06-14 18:51:12 +01:00
.github .github: add build-tools.sh (all) back, lost with Travis 2021-05-24 15:27:18 -07:00
doc doxygen: codecs: exclude 3rd party codec headers from Doxygen 2021-04-10 21:53:32 +01:00
installer installer: automate the creation of symlinks inside intel-signed/ 2021-06-04 12:05:44 +01:00
keys
rimage@5aeb95b19b update klocwork submodule 2021-05-31 11:42:19 +01:00
scripts xtensa-build-zephyr.sh: remove west --pristine option 2021-06-10 12:29:03 +01:00
smex smex: don't corrupt the build with a bogus .ldc output 2021-05-18 16:46:44 +01:00
src zephyr: ll-schedule: remove work queue left-over 2021-06-11 17:32:36 +01:00
test trace: rename trace_flush() to trace_flush_dma_to_mbox() 2021-06-10 15:50:21 +01:00
tools topology2: Introduction to Topology2.0 2021-06-14 18:51:12 +01:00
zephyr ipc: split IPC major code into IPC specific directories 2021-05-31 13:08:20 +01:00
.gitignore gitignore: Add checkpatch temporary file to gitignore 2020-10-22 13:05:23 +01:00
.gitmodules .gitmodules: use a relative path 2021-04-01 13:03:01 +01:00
.travis.yml .github: replace HAVE_CONFIG KConfig hack with an override 2021-03-23 12:17:22 +00:00
CMakeLists.txt cmake: Link TGL Google hotword library 2021-06-11 13:53:12 +01:00
CODEOWNERS CODEOWNERS: add johnylin as owner 2021-06-11 13:53:12 +01:00
Kconfig Kconfig: add link to Zephyr modules "magic" 2021-06-10 12:29:03 +01:00
Kconfig.xtos-build kconfig: move BUILD_VM_ROM Kconfig.xtos-build 2021-05-25 15:53:39 +01:00
Kconfig.xtos-dbg kconfig: move XTOS build specific debug options to a separate file 2021-05-25 15:53:39 +01:00
LICENCE LICENSE: Add Cadence license 2021-04-12 10:22:15 +01:00
README.md .github: rename workflow from "Github Action CI" to "Github Actions" 2021-01-28 13:20:22 +00:00

README.md

Sound Open Firmware

Status

GitHub Actions Build Status Gitter chat IRC chat

Documentation

See docs

Running the tests

See unit testing documentation

Deployment

TODO: Add additional notes about how to deploy this on a live system

Contributing

See Contributing to the Project

License

This project is licensed under the BSD Clause 3 - see the LICENCE file for details