-
Notifications
You must be signed in to change notification settings - Fork 7.3k
drivers: firmware: Add support for IRONside calls #88937
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
base: main
Are you sure you want to change the base?
Conversation
bd7466b
to
aaaf30f
Compare
soc/nordic/common/ironside/call.c
Outdated
alloc_buf_bit = LSB_GET(avail_buf_bits); | ||
} while (!k_event_clear(&alloc_evts, alloc_buf_bit)); |
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.
alloc_buf_bit = LSB_GET(avail_buf_bits); | |
} while (!k_event_clear(&alloc_evts, alloc_buf_bit)); | |
alloc_buf_bit = LSB_GET(avail_buf_bits); | |
bool event_was_taken_by_another_thread = 0 == k_event_clear(&alloc_evts, alloc_buf_bit); | |
} while (event_was_taken_by_another_thread); |
Maybe make it more clear what this while loop is for.
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.
Added a comment.
soc/nordic/common/ironside/Kconfig
Outdated
|
||
config NRF_IRONSIDE_CALL_INIT_PRIORITY | ||
int "IRONside calls' initialization priority" | ||
default 47 |
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.
Should we have a rationale here? Even if the rationale is that its a random value and we don't have a rationale.
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.
Added.
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 better suited for drivers/firmware
if it's communication with a pre-existing firmware image. See the scmi driver there for similarities.
IRONside calls are remote procedure calls which comprise the runtime interface of Nordic IRONside SE. They are realized using a simple IPC mechanism. A local domain (client) issues requests to the server by exchanging data in shared memory, which is divided into evenly sized buffers. The client selects a buffer, writes a request into it, and sends it to the server. The server processes that request and writes a response into the same buffer before returning it to the client. This patch adds the initial client-side implementation on top of MBOX. It features cache management and a blocking alloc/dispatch/release API for synchronous, zero-copy transfers. A new devicetree binding is added to support this implementation. It is patterned after the `zephyr,ipc-*` bindings, where each node associates a pair of mailboxes and a shared memory region. Signed-off-by: Grzegorz Swiderski <[email protected]>
Define `ipc_conf_iron.dtsi` and `memory_map_iron.dtsi`. In the future, they will be merged with the base `ipc_conf.dtsi` and `memory_map.dtsi` respectively. For now, they are used to replace a few devicetree nodes when building for `nrf54h20dk/nrf54h20/*/iron` board targets. Additional changes are included: * The IPC configuration includes new "nordic,ipc-ironside" nodes. * The memory map includes a new RAM20 layout. Its subregions are placed under the `/reserved-memory` node like before. * The MRAM partitions are moved to the common memory map, while the MCUboot-specific node labels are applied in `cpuapp.dts`. Signed-off-by: Grzegorz Swiderski <[email protected]>
aaaf30f
to
f7449de
Compare
Thanks for the tip! I think we should have all of our interfaces there. |
IRONside calls are remote procedure calls which comprise the runtime interface of Nordic IRONside SE. They are realized using a simple IPC mechanism.