mbox series

[v2,00/14] ASoC: Intel: avs: Topology and path management

Message ID 20220331135246.993089-1-cezary.rojewski@intel.com
Headers show
Series ASoC: Intel: avs: Topology and path management | expand

Message

Cezary Rojewski March 31, 2022, 1:52 p.m. UTC
A continuation of avs-driver initial series [1]. This chapter covers
path management and topology parsing part which was ealier path of the
main series. The two patches that represented these two subjects in the
initial series, have been split into many to allow for easier review and
discussion.

AVS topology is split into two major parts: dictionaries - found within
ASoC topology manifest - and path templates.

Dictionaries job is to reduce the total amount of memory
occupied by topology elements. Rather than having every pipeline and
module carry its own information, each refers to specific entry in
specific dictionary by provided (from topology file) indexes. In
consequence, most struct avs_tplg_xxx are made out of pointers.

Path templates are similar to path descriptions found in skylake-driver
and they describe how given path shall look like in runtime - number of
modules and pipelines that shape it and how they are laid out. A single
path template is tied either to FE or BE and thus at most to a single,
user-visible endpoint when speaking of FE.

Path is a software representation of its ADSP firmware equivalent. It's
a logical container for pipelines which are themselves containers - this
time for modules i.e. processing units.
Depending on the number of audio formats supported, each path template
may carry one or more descriptions of given path. During runtime, when
audio format is known, description matching said format is selected and
used when instantiating path on ADSP firmware side through IPCs.


Changes v1 -> v2:
- fixed 'set but not used' warning in patch 10/14 as mentioned by ikp
  builder


Changes RFC -> v1:
- Plenty of rewordings and spelling fixes as requested by Pierre
- any sysfs-functionality-related left in RFC dropped, will be part of
  separate subject in the future
- separated parsing of formatted strings into: "Support link_mask
  formatted string" patch, increasing series size to 14 patches


[1]: https://lore.kernel.org/alsa-devel/20220207122108.3780926-1-cezary.rojewski@intel.com/T/#t


Cezary Rojewski (14):
  ASoC: Intel: avs: Declare vendor tokens
  ASoC: Intel: avs: Add topology parsing infrastructure
  ASoC: Intel: avs: Parse module-extension tuples
  ASoC: Intel: avs: Parse pplcfg and binding tuples
  ASoC: Intel: avs: Parse pipeline and module tuples
  ASoC: Intel: avs: Parse path and path templates tuples
  ASoC: Intel: avs: Add topology loading operations
  ASoC: Intel: avs: Support link_mask formatted string
  ASoC: Intel: avs: Declare path and its components
  ASoC: Intel: avs: Path creation and freeing
  ASoC: Intel: avs: Path state management
  ASoC: Intel: avs: Arm paths after creating them
  ASoC: Intel: avs: Prepare modules before bindings them
  ASoC: Intel: avs: Configure modules according to their type

 include/uapi/sound/intel/avs/tokens.h |  126 ++
 sound/soc/intel/Kconfig               |    2 +
 sound/soc/intel/avs/Makefile          |    3 +-
 sound/soc/intel/avs/avs.h             |   23 +
 sound/soc/intel/avs/path.c            | 1005 ++++++++++++++++
 sound/soc/intel/avs/path.h            |   72 ++
 sound/soc/intel/avs/topology.c        | 1600 +++++++++++++++++++++++++
 sound/soc/intel/avs/topology.h        |  194 +++
 8 files changed, 3024 insertions(+), 1 deletion(-)
 create mode 100644 include/uapi/sound/intel/avs/tokens.h
 create mode 100644 sound/soc/intel/avs/path.c
 create mode 100644 sound/soc/intel/avs/path.h
 create mode 100644 sound/soc/intel/avs/topology.c
 create mode 100644 sound/soc/intel/avs/topology.h


base-commit: bc55cfd5718c7c23e5524582e9fa70b4d10f2433

Comments

Cezary Rojewski April 8, 2022, 10:54 a.m. UTC | #1
On 2022-03-31 3:52 PM, Cezary Rojewski wrote:
> A continuation of avs-driver initial series [1]. This chapter covers
> path management and topology parsing part which was ealier path of the
> main series. The two patches that represented these two subjects in the
> initial series, have been split into many to allow for easier review and
> discussion.
> 
> AVS topology is split into two major parts: dictionaries - found within
> ASoC topology manifest - and path templates.
> 
> Dictionaries job is to reduce the total amount of memory
> occupied by topology elements. Rather than having every pipeline and
> module carry its own information, each refers to specific entry in
> specific dictionary by provided (from topology file) indexes. In
> consequence, most struct avs_tplg_xxx are made out of pointers.
> 
> Path templates are similar to path descriptions found in skylake-driver
> and they describe how given path shall look like in runtime - number of
> modules and pipelines that shape it and how they are laid out. A single
> path template is tied either to FE or BE and thus at most to a single,
> user-visible endpoint when speaking of FE.
> 
> Path is a software representation of its ADSP firmware equivalent. It's
> a logical container for pipelines which are themselves containers - this
> time for modules i.e. processing units.
> Depending on the number of audio formats supported, each path template
> may carry one or more descriptions of given path. During runtime, when
> audio format is known, description matching said format is selected and
> used when instantiating path on ADSP firmware side through IPCs.
> 
> 
> Changes v1 -> v2:
> - fixed 'set but not used' warning in patch 10/14 as mentioned by ikp
>    builder
> 
> 
> Changes RFC -> v1:
> - Plenty of rewordings and spelling fixes as requested by Pierre
> - any sysfs-functionality-related left in RFC dropped, will be part of
>    separate subject in the future
> - separated parsing of formatted strings into: "Support link_mask
>    formatted string" patch, increasing series size to 14 patches
> 
> 
> [1]: https://lore.kernel.org/alsa-devel/20220207122108.3780926-1-cezary.rojewski@intel.com/T/#t


Should I resend this one? Would like to move forward with the follow up 
series so the skylake-driver can be finally replaced :)


Regards,
Czarek
Mark Brown April 8, 2022, 11:16 a.m. UTC | #2
On Fri, Apr 08, 2022 at 12:54:11PM +0200, Cezary Rojewski wrote:

> Should I resend this one? Would like to move forward with the follow up
> series so the skylake-driver can be finally replaced :)

No need to resend but let's wait a bit more in case there's some review
comments from people.
Mark Brown April 20, 2022, 9:40 p.m. UTC | #3
On Thu, 31 Mar 2022 15:52:32 +0200, Cezary Rojewski wrote:
> A continuation of avs-driver initial series [1]. This chapter covers
> path management and topology parsing part which was ealier path of the
> main series. The two patches that represented these two subjects in the
> initial series, have been split into many to allow for easier review and
> discussion.
> 
> AVS topology is split into two major parts: dictionaries - found within
> ASoC topology manifest - and path templates.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[01/14] ASoC: Intel: avs: Declare vendor tokens
        commit: 99a15348d5842b3c1f95220dc9b119ee0fe0d81b
[02/14] ASoC: Intel: avs: Add topology parsing infrastructure
        commit: 34ae2cd536738affaa2c2f32be23aea229b3c309
[03/14] ASoC: Intel: avs: Parse module-extension tuples
        commit: 9e85ec401d038b43d9d6ad8e3f488f865404bab5
[04/14] ASoC: Intel: avs: Parse pplcfg and binding tuples
        commit: 1fba20364318819ecedab2d0f6a68a038f4f47c3
[05/14] ASoC: Intel: avs: Parse pipeline and module tuples
        commit: 276b83c807a2bc2a8d9874a92b7fb7811c2df8b2
[06/14] ASoC: Intel: avs: Parse path and path templates tuples
        commit: eee475bb1ca71e963a51c20cc0f3e7c7b1cd2ba0
[07/14] ASoC: Intel: avs: Add topology loading operations
        commit: d73d1b67ff71e39bb3a04596744fc83047e68a94
[08/14] ASoC: Intel: avs: Support link_mask formatted string
        commit: d48c1ada577588e769b26c3dea0a45e8856bc343
[09/14] ASoC: Intel: avs: Declare path and its components
        commit: f61ad1e9568c854ea49a2f58cf2a0b2877cfad33
[10/14] ASoC: Intel: avs: Path creation and freeing
        commit: 0ef882074eb1fee25083387ea6bc6669d0e24a85
[11/14] ASoC: Intel: avs: Path state management
        commit: c96059993f939fe04427164fb99a32ace8d97f4e
[12/14] ASoC: Intel: avs: Arm paths after creating them
        commit: 84a99908fc7b988067e927834575df42707ec024
[13/14] ASoC: Intel: avs: Prepare modules before bindings them
        commit: 435e25730fe7b3a4e4a8e66028e39597b2524f0c
[14/14] ASoC: Intel: avs: Configure modules according to their type
        commit: 274d79e5187558078fcf107445fe56ab2fbe4c97

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark