topology2: add pin binding classes for multiple I/O queue

An IPC4 widget may support multiple I/O queue. Queue ID is
required during widget binding in route setup.

This patch adds sink_pin_binging and src_pin_binding classes
for multiple I/O queue support.

For widget requires special pin(queue) binding, sink_pin_binding
or src_pin_binding should be defined in the widget object. So
that the kernel knows which pin to use during widget binding
by parsing topology.

Note that pin binding should be defined for all sink/source pins
or for none. Even if there is only one sink pin requires special
pin binding, pin binding should be defined for all sink pins, and
for pins that are not used, give the value "NotConnected". This rule
applies to source pins, too.

Example: smart_amp widget has two sink pins and one source pin,
and its feedback sink pin requires special pin binding, so we have to
define sink_pin_binding objects within smart_amp object like this:

Object.Base.sink_pin_binding.1 {
    # the main sink pin is connected to host for playback data
    sink_pin_binding_wname	"copier.host.1.1"
}
Object.Base.src_pin_binding.2 {
    # the feedback sink pin is connected to capture dai for codec feedback.
    sink_pin_binding_wname	"copier.SSP.2.1"
}

In this example, smart_amp is connected to host and DAI directly,
it is also possible to be connected to host and DAI indirectly (with
gain or other widget in the middle).

Signed-off-by: Chao Song <chao.song@linux.intel.com>
3 files changed
tree: e29df715fac114a5435745ad6dcaeed3895e962e
  1. .github/
  2. app/
  3. doc/
  4. installer/
  5. keys/
  6. scripts/
  7. smex/
  8. src/
  9. submanifests/
  10. test/
  11. third_party/
  12. tools/
  13. zephyr/
  14. .gitignore
  15. .gitmodules
  16. .travis.yml
  17. CMakeLists.txt
  18. CODEOWNERS
  19. Kconfig
  20. Kconfig.sof
  21. Kconfig.xtos-build
  22. Kconfig.xtos-dbg
  23. Kconfig.zephyr-log
  24. LICENCE
  25. README.md
  26. west.yml
README.md

Sound Open Firmware

Status

GitHub Actions Build Status Gitter 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