Skip to content

Conversation

@bkokoszx
Copy link
Collaborator

This commit contains three converged sound open firmware module examples
such as: aca_module, amplifier_module and downmixer_module and whole building
infrastructure (i.e. makefiles, source files and API headers) required to
build module examples and loadable libraries

Signed-off-by: Bartosz Kokoszko bartoszx.kokoszko@linux.intel.com

@bkokoszx
Copy link
Collaborator Author

@lgirdwood @mwasko
FYI

@bkokoszx bkokoszx requested a review from mwasko May 19, 2021 12:57
Copy link
Member

@lgirdwood lgirdwood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bkokoszx can you split this into a series of smaller per feature PRs. This way it will be far easier to review. We will also need to put the files in the correct places.
Btw, do you have any build able file today that can be used by CI as a build check.

@lgirdwood lgirdwood added this to the v1.9 milestone May 19, 2021
@mwasko
Copy link
Contributor

mwasko commented May 19, 2021

@bkokoszx can you split this into a series of smaller per feature PRs. This way it will be far easier to review. We will also need to put the files in the correct places.
Btw, do you have any build able file today that can be used by CI as a build check.

+1 from me, maybe split the content into three PRs, one per example module?

Any suggestion on place Liam? My understanding after internal discussion was that we agree to keep the converged modules in converged folder until we align SOF FW Module API as they are not yet build along with any SOF base FW target.

Copy link
Collaborator

@dbaluta dbaluta May 19, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bkokoszx this is very interesting. Can you add more information inthe commit message.

What is a module? A separate binary with some functionality?

How is this used by sof:

  • statically compiled
  • dynamically loaded at runtime
    etc?

There are some headers with 'INTEL confidential' is that OK?

Copy link
Contributor

@mwasko mwasko May 20, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a module? A separate binary with some functionality?

How is this used by sof:

  • statically compiled
  • dynamically loaded at runtime
    etc?

The module here is an equivalent of SOF processing component. The difference is that these modules will not be statically compiled with SOF base FW but dynamically loaded as a separate binary. That will allow to have one base SOF FW for platform generation and depending on specific audio topology configuration choose which 3rd party processing modules to load.

The modules will be usable with SOF once we implement dynamic library load feature and align processing modules API. This will be the next step.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dbaluta
The Intel Confidential headers were my fault. I've just updated it.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mwasko This is a great feature. We also have this project for Google Summer of Code.

https://wiki.linuxfoundation.org/gsoc/2021-gsoc-sound-open-firmware

@bkokoszx bkokoszx force-pushed the converged-sound-open-fw-modules-development branch from 2b779ea to aa9cc2c Compare May 20, 2021 08:21
@bkokoszx
Copy link
Collaborator Author

@lgirdwood I will try to split it into several PR's

@bkokoszx bkokoszx force-pushed the converged-sound-open-fw-modules-development branch from aa9cc2c to 792c63b Compare May 20, 2021 08:36
This commit contains three converged sound open firmware module examples
such as: aca_module, amplifier_module and downmixer_module and whole building
infrastructure (i.e. makefiles, source files and API headers) required to
build module examples and loadable libraries

Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
@bkokoszx bkokoszx force-pushed the converged-sound-open-fw-modules-development branch from 792c63b to ebe9fb2 Compare May 20, 2021 08:44
@dbaluta
Copy link
Collaborator

dbaluta commented May 20, 2021

@bkokoszx I think the usual practice is to have a single PR with multiple commits.

@lgirdwood
Copy link
Member

@bkokoszx I think the usual practice is to have a single PR with multiple commits.

@dbaluta I've asked for this to be many PRs to lower the burden on reviewers as many topics are covered which may be confusing to discuss on a single PR.

Copy link
Collaborator

@marc-hb marc-hb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makefile comment transferred to #4222 (review)

Copy link
Member

@plbossart plbossart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to pinch myself when I looked at GnuMake files. This is unmaintainable. Most projects only describe 'what' you want and autogenerate makefiles, this is several bridges and a long tunnel too far.

Copy link
Collaborator

@kv2019i kv2019i left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README.Md is very good but hidden inside the very large PR. Main concerns I have relate to split between Intel specific and generic (in terms of headers and common makefiles) and the huge chunk of plain make rules.

Some nitpicks I couldn't comment inline:

  • one binary file include (.chm)

* and ADSP FW Builder tool.
*/

#define MASTER_CORE_AFFINITY 1
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some documentation would be helpful here.


/*! \brief bits field map which helps to describe each channel location a the data stream buffer */
typedef uint32_t ChannelMap;
#if 0 //WIP
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something to remove.

*
* A module is required to provide some PinEndpoint arrays to allow the ADSP System to drive streams into the module.
*/
PinEndpoint* sources;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is "sources_count" defined? I couldn't find it anywhere in the patchset?

infrastructure (i.e. makefiles, source files and API headers) required to
build module examples and loadable libraries. Loadable library is composed by
a set of N precompiled loadable modules.
## Modules
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @bkokoszx , this is a very informational file and should get more attention. Now it's piled under the 119 files changed.

@@ -0,0 +1,33 @@
// SPDX-License-Identifier: BSD-3-Clause
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The module interface should be common for all platforms, so FW/SRC/intel_adsp seems like the wrong path for the interface headers.

<Name value="ADSP" help_text="Name to use in the output binary's directory. Maximum length is 4 characters. " />
<Length value="0x0" help_text="Length of output binary, extra space will be filled with 0xFF's. If length is smaller than required, an error will be reported. If set to 0, the length will be computed as needed by the tool." />
<Usage value="audioImage0Manifest" value_list="CseBupManifest,,CseMainManifest,,PmcManifest,,UsbTypeCIOMManifest,,UsbTypeCNphyManifest,,UsbTypeCTBTManifest,,WcodManifest,,LoclManifest,,IntelUtokManifest,,SPHYManifest,,PchcManifest,,SamfManifest,,PphyManifest,,GbstManifest,,BootPolicyManifest,,iUnitBootLoaderManifest,,iUnitMainFwManifest,,audioImage0Manifest,,audioImage1Manifest,,IfwiManifest,,OsBootLoaderManifest,,OsKernelManifest,,OemSmipManifest,,IshManifest,,OemDebugManifest,,OemKeyManifest,,SilentLakeVmmManifest,,OemDnxIfwiManifest" help_text="Indicates the type of data contained in this binary. This value is used during signature verification to validate the public key." />
<VendorId value="0x8086" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The value_list should probably be omitted here. We just need to specify the value. @mwasko please check

@@ -0,0 +1,30 @@
# SPDX-License-Identifier: BSD-3-Clause
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is one huge body of plain makefile rules. We'd need some common make rules how to build modules. Maybe the common rules are done in Cmake and these remain as intel_adsp specific reference?

@sys-pt1s
Copy link

Can one of the admins verify this patch?

@kv2019i
Copy link
Collaborator

kv2019i commented Apr 20, 2022

Almost a year without activity, closing.

@kv2019i kv2019i closed this Apr 20, 2022
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.

8 participants