-
Notifications
You must be signed in to change notification settings - Fork 349
converged: initial commit for converged modules development #4214
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
converged: initial commit for converged modules development #4214
Conversation
|
@lgirdwood @mwasko |
lgirdwood
left a comment
There was a problem hiding this 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.
+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. |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
2b779ea to
aa9cc2c
Compare
|
@lgirdwood I will try to split it into several PR's |
aa9cc2c to
792c63b
Compare
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>
792c63b to
ebe9fb2
Compare
|
@bkokoszx I think the usual practice is to have a single PR with multiple commits. |
There was a problem hiding this 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)
plbossart
left a comment
There was a problem hiding this 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.
kv2019i
left a comment
There was a problem hiding this 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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 | |||
There was a problem hiding this comment.
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" /> |
There was a problem hiding this comment.
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 | |||
There was a problem hiding this comment.
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?
|
Can one of the admins verify this patch? |
|
Almost a year without activity, closing. |
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