Commit Graph

72 Commits

Author SHA1 Message Date
Benjamin Cabé
18abef2dbf drivers: mbox: remove duplicate macro definition
Remove duplicate MAILBOX_MBOX_SIZE

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-06-17 16:24:45 -05:00
Mike J. Chen
27975075a5 drivers: mbox_nxp_imx_mu: return negative errno value on error
Change nxp_imx_mu_send() to return a negative errno value
on error.

The fsl_mu function MU_TriggerInterrupts() returns either
kStatus_Success or kStatus_Fail, which have the value 0
or 1, respectively. kStatus_Fail should not be returned
to the upper levels, which expect negative values for
errors, so add a check for the return value of
MU_TriggerInterrupts() and return an errno value on error.

Signed-off-by: Mike J. Chen <mjchen@google.com>
2025-06-10 22:06:40 +02:00
Dave Joseph
963fda5e4a drivers: mbox: TI Secure Proxy mbox drivers
Added secure proxy mailbox driver for supported devices using
the binding ti,secure-proxy. This is used to communicate with
a device manager running on a separate core via a secure proxy
mailbox for TI K3 devices. Required for enabling TISCI layer
communication.
Refer: https://software-dl.ti.com/tisci/esd/latest/1_intro/TISCI.html

Tested on MAIN_CORTEX_R5_0 on AM243x EVM.
Refer:https://www.ti.com/lit/pdf/spruim2

Co-developed-by: Vaishnav Achath <vaishnav.a@ti.com>
Signed-off-by: Dave Joseph <d-joseph@ti.com>
2025-06-06 11:52:07 +02:00
Maciej Meijer
982abadd34 mbox: workaround for missing ic-msg
When a LD sends an ic-msg to SCFW - it happens that sometimes that SCFW
does not handle the request.
For the moment the problem is solved by sending a second vevif event
shortly after the initial request.

Signed-off-by: Maciej Meijer <maciej.meijer@nordicsemi.no>
2025-05-21 17:34:56 +02:00
Anas Nashif
2aacbcaab5 style: add missing curly braces in if/while/for statements.
Add missing curly braces in if/while/for statements.

This is a style guideline we have that was not enforced in CI. All
issues fixed here were detected by sonarqube SCA.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2025-05-17 14:10:33 +02:00
Ziad Elhanafy
a7ba802dbe drivers: mbox: Add Arm MHUv3 Mailbox driver
This adds new Arm MHUv3 mailbox driver.

The Arm MHUv3 (Message Handling Unit version 3) is a hardware
block designed for inter-processor communication in SoCs.

The ARM MHUv3 can optionally support various extensions to
enable different kinds of transport to be used for communication.

At the moment only the doorbell extension is supported in the
driver.

For more information refer to Arm Message Handling Unit
Architecture
https://documentation-service.arm.com/static/65f01fbab5e3c10fe1335edf

Signed-off-by: Ziad Elhanafy <ziad.elhanafy@arm.com>
2025-03-31 11:29:40 +02:00
Krzysztof Chruściński
841e852513 drivers: mbox: nrf_vevif_event_tx: Fix errata 16 workaround
Pend until requested event is set before clearing it. Without that
check event could be cleared too early and APP core is not waken up.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2025-03-11 11:34:44 +01:00
Phuc Pham
857fa96cf4 drivers: mbox: Initial support for RZ/G3S
Add MBOX driver support for Renesas RZ/G3S

Signed-off-by: Phuc Pham <phuc.pham.xr@bp.renesas.com>
Signed-off-by: Binh Nguyen <binh.nguyen.xw@renesas.com>
2025-03-07 19:45:30 +01:00
Tomas Galbicka
cfd3985bda drivers: nxp mbox imx mu driver fix Flags
This commit fixes flag handling in mbox driver.
There are two MU drivers mu/ and mu1/ in nxp sdk with
same API but different bit masks and register layouts.

To be compatible with both add mapping table for channel index.
This will use enum from relavant driver heder to select correct
flag mask.

Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
2025-02-14 17:11:50 +01:00
Pieter De Gendt
4670e16ab2 drivers: mbox: Wrap driver instances in device API macro
Use the device API macro to place the driver API instance into an iterable
section.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2025-02-12 16:06:25 +01:00
Iuliana Prodan
47839f8e34 drivers: mbox: imx: allow sending empty message
Allow sending empty messages - with size 0 or
msg data NULL.
In some cases these kind of messages are just an ack
(for example, in openamp_rsc_table sample).

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
2025-02-05 01:12:17 +01:00
Jamie McCrae
560db8509a drivers: kconfig: Fix bleeding options
Fixes a multitude of Kconfigs that wrongly appear on devices
where support is literally impossible

Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
2025-01-31 11:50:12 +01:00
Vaishnav Achath
fca38adb7f drivers: mbox: Add support for TI OMAP mailbox
TI OMAP mailbox is the inter-processor mailbox IP found in TI
K3 devices (AM62X, AM64X, J721E .etc). The mailbox hardware uses
a queued mailbox interrupt mechanism that provides a communication
channel between processors through a set of registers and their
associated interrupt signals by sending and receiving messages.
The interrupt/bank associated with each processor entity is found
through the  usr_id property from device tree.

Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
2025-01-23 16:34:39 +01:00
Tomas Galbicka
d4d180c216 dts: drivers: Add DTS MBOX entry for NXP MCXN947
This commit adds MBOX device tree entry for MCXN947.
Adds support for MCXN in NXP ipm and mbox drivers.

Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
2025-01-15 19:04:42 +01:00
Marcin Szymczyk
db7365e286 drivers: mbox: nrf_vevif_event: add workaround for nRF54L errata 16
Prevent events from being triggered again on the next CNT0 event.

Signed-off-by: Marcin Szymczyk <marcin.szymczyk@nordicsemi.no>
2024-12-18 18:15:29 +01:00
Gerard Marull-Paretas
2564443e6d drivers: mbox: nrf_vevif_event_rx: fix VPR address
VPR address was obtained from the child instance, however, the child
nodes address is purely an index within the VPR node. The VPR address
needs to be obtained from the parent.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2024-12-12 16:20:31 +01:00
Pieter De Gendt
9fdaad97c5 drivers: mbox: Place API into iterable section
Add wrapper DEVICE_API macro to all mbox_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-06 12:13:18 +01:00
Felipe Neves
9542166589 drivers: mbox: add IVSHMEM based mbox driver
Add initial support of the mailbox driver based
on the inter VM shared memory mechanism similar
as the existing IPM driver.

Signed-off-by: Felipe Neves <ryukokki.felipe@gmail.com>
2024-11-16 15:05:34 -05:00
Jimmy Zheng
6658b9c02c drivers: mbox: rework andes mbox plic to leverage intc_plic driver
Andes MBOX PLIC-SW use the same hardware as intc_plic driver. Reworked
mbox_andes_plic_sw implementation to leverage the intc_plic driver.

Signed-off-by: Jimmy Zheng <jimmyzhe@andestech.com>
2024-10-23 16:53:13 +02:00
Carles Cufi
51c1e45301 soc: nordic: Remove the nRF54L15 EngA
The production version of the nRF54L15 SoC is now available, so remove
the initial Engineering A (EngA) preview version.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2024-10-21 01:46:39 +01:00
Marcin Szymczyk
a555838033 drivers: mbox: nrf_vevif_task_rx: align to direct IRQs
Allow using direct IRQs (which are obligatory when buiding
with `CONFIG_GEN_SW_ISR_TABLE=n`).

Signed-off-by: Marcin Szymczyk <marcin.szymczyk@nordicsemi.no>
2024-10-15 04:07:32 -04:00
Raffael Rostagno
d392e9b345 drivers: mbox: esp32: IRQ priority and flags from dts
Get IRQ priority and flags from device tree, allowing for
custom configuration.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-09-23 18:08:36 -04:00
Felipe Neves
4713707e92 drivers: mbox: mbox_esp32: fix mbox callback call
Fixes the mailbox notification callback that was not
being called from the ISR when the other side sends
something.

Signed-off-by: Felipe Neves <ryukokki.felipe@gmail.com>
2024-09-19 03:25:57 -04:00
Yangbo Lu
4f99a57b81 drivers: mbox: make mbox_nxp_imx_mu use PRE_KERNEL_1 init level
The MU init should be very early for some platforms. For examples,
i.MX95 is using MU for ARM SCMI. It should be initialzied early
for next power, pinctrl, clock etc. management.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2024-09-11 09:34:04 +02:00
Sebastian Głąb
06b56c7971 drivers: mbox: Fix error code in Nordic's implementation
According to the official MBOX API documentation available at
https://docs.zephyrproject.org/latest/hardware/peripherals/mbox.html
mbox_sen() shall return
-EMSGSIZE – If the supplied data size is unsupported by the driver.

Fix error code returned by the mbox_send().

Signed-off-by: Sebastian Głąb <sebastian.glab@nordicsemi.no>
2024-09-04 12:52:24 +02:00
Pisit Sawangvonganan
1bcae0ea9f style: drivers: comply with MISRA C:2012 Rule 15.6
Add missing braces to comply with MISRA C:2012 Rule 15.6 and
also following Zephyr's style guideline.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-08-20 10:33:51 +02:00
Ha Duong Quang
0135e7433b drivers: nxp_s32_netc_psi_vsi: update to RTD 2.0.0
Config to enable VLAN promiscuous and untagged.

Config to enable SI message interrupt.

Fix the build warning.

Signed-off-by: Ha Duong Quang <ha.duongquang@nxp.com>
2024-08-20 10:32:32 +02:00
Gerard Marull-Paretas
8e7919cf65 drivers: mbox: nrfx_ipc: enable based on DT status
Enable the driver using the standard mechanism used everywhere else in
the tree. It is possible here as it is a singleton, so there's no
dependency on nrfx instantiation magic.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-08-16 11:20:08 +01:00
Felipe Neves
af91d06b00 drivers: mbox: mbox_esp32: add support for esp32 MBOX driver
as an alternative for IPM driver.

Signed-off-by: Felipe Neves <ryukokki.felipe@gmail.com>
2024-08-07 07:17:01 -04:00
Emanuele Di Santo
271ef88e05 drivers: mbox: nrf_bellboard: only clear events that raised the IRQ
The current implementation is such that if two or more events are
generated in quick succession, only one is handled. This would
have happened as follows.

At the beginning of the ISR, the contents of INTPEND are read.
Then, the ISR unconditionally clears all events that are set.

When two (or more) events are generated in rapid succession,
it may happen that by the time we enter the ISR, INTPEND is set
only for one event, but while we process the ISR, EVENTS_TRIGGERED
will be set for more than just that one event (more events are
generated).

By unconditionally clearing all events, we can potentially lose
all events that are generated during ISR processing.

This patch changes the ISR so that it only clears those events
that have a corresponding bit set in INTPEND at the time it is read.

Signed-off-by: Emanuele Di Santo <emdi@nordicsemi.no>
2024-07-27 15:13:45 +03:00
Jakub Zymelka
8091e93838 drivers: mbox: nrf: Change VEVIFs and BELLBOARD nomenclature
Renaming 'LOCAL' to 'RX' and 'REMOTE' to 'TX'.
This seems more descriptive and intuitive to use.

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
2024-06-15 04:41:47 -04:00
Jakub Zymelka
bace4a102d drivers: mbox: add initial driver for nRF VEVIF event
Add a mailbox driver for VEVIF events (VPR irq).
The driver can be built in either 'rx' or 'tx' configuration.
The VPR sends the event, so it uses the 'tx' configuration,
while the master core uses the 'rx' configuration of the driver
to receive the VPR events.

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
2024-06-15 04:41:47 -04:00
Yong Cong Sin
bbe5e1e6eb build: namespace the generated headers with zephyr/
Namespaced the generated headers with `zephyr` to prevent
potential conflict with other headers.

Introduce a temporary Kconfig `LEGACY_GENERATED_INCLUDE_PATH`
that is enabled by default. This allows the developers to
continue the use of the old include paths for the time being
until it is deprecated and eventually removed. The Kconfig will
generate a build-time warning message, similar to the
`CONFIG_TIMER_RANDOM_GENERATOR`.

Updated the includes path of in-tree sources accordingly.

Most of the changes here are scripted, check the PR for more
info.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
2024-05-28 22:03:55 +02:00
Celina Sophie Kalus
051dc14bb6 drivers: mbox: Add driver for STM32 HSEM
This driver implements a simple MBOX device which supports a single
instance, two channels (one for each direction), and only signalling
mode with no data transfer. Signalling to another core is achieved by
taking and giving two hardware semaphores, similar to the STM32 HSEM
IPM driver.

Signed-off-by: Celina Sophie Kalus <hello@celinakalus.de>
2024-05-24 07:52:06 -04:00
Marcin Szymczyk
06a84bf8e5 drivers: mbox: nrf_vevif_local: remove RT periph enable
It is done already at PRE_KERNEL stage.

Signed-off-by: Marcin Szymczyk <marcin.szymczyk@nordicsemi.no>
2024-04-23 21:26:04 +00:00
Tomas Galbicka
9882cf11cc drivers: mbox: Fix nxp,mbox kconfig depends on
This commit fixes Kconfig.nxp_mailbox depends on is now
set to correct value DT_HAS_NXP_MBOX_MAILBOX_ENABLED.

Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
2024-03-14 11:01:07 -05:00
Dat Nguyen Duy
9c500a8a82 drivers: mbox: fix build failures when userspace enabled
Fix build failures due to using wrong arguments when
calling the implementation functions

Signed-off-by: Dat Nguyen Duy <dat.nguyenduy@nxp.com>
2024-03-12 15:39:05 +01:00
Gerard Marull-Paretas
8be65b6608 drivers: mbox: refactor API
This patch refactors the MBOX API, so that it aligns with some common
Zephyr principles, main changes include:

- There is now a non-DT specific API that takes a regular struct device
  and a channel identifier, instead of a struct that contains both. This
  API should be used for cases where DT is not an option.
- There is a "dt-spec" variant of the API, meant to be used from
  devicetree specifications.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-03-07 14:32:57 +00:00
Gerard Marull-Paretas
e43ffcb5cd drivers: mbox: nxp_mailbox: add missing include
Add irq.h for IRQ_CONNECT.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-03-07 14:32:57 +00:00
Gerard Marull-Paretas
79490b9dc1 drivers: mbox: nxp_imx_mu: add missing include
Was causing build failures with IRQ_CONNECT missing.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-03-07 14:32:57 +00:00
Gerard Marull-Paretas
66b8a15899 drivers: mbox: andes_plic_sw: add missing include
Driver used spinlocks without including the necessary headers.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-03-07 14:32:57 +00:00
Gerard Marull-Paretas
0b38425f6d drivers: mbox: nrf_bellboard: add initial driver
Add a new driver for nRF BELLBOARD peripheral, in both local and remote
modes.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-03-05 16:50:36 +00:00
Gerard Marull-Paretas
78c40fe31b drivers: mbox: add initial driver for nRF VEVIF
Add a mailbox driver for VEVIF. The driver can be built in either
'local' or 'remote' configuration. This depends on the existence of the
'interrupts' property, which signals that the instance is managed
locally. VEVIF is, as expected, always managed by a VPR core.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-03-05 16:50:36 +00:00
Tomas Galbicka
069bcbcb7f drivers: mbox: Add NXP Mailbox driver for mbox
This adds new NXP mailbox driver for MBOX device.

NXP mailbox IP driver supports sending data between cores.
It uses 32 bit register to trigger irq to other core.
This driver implementation uses 4 bits for channel selection of
triggering mode, 4 bits for channel selection of data transfer and
rest 24 bits for data.

NXP mailbox IP Reference Manual UM11126, Chapter 52.
https://www.nxp.com/webapp/Download?colCode=UM11126

Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
2024-02-02 09:31:33 -06:00
Tomas Galbicka
a689228eb8 drivers: mbox: fix nxp mbox data read channel
This commit repairs reading of data from other
channels than 0.

Refactors irq handler outside of DT define.

Trigger registered callback only when proper flag is set.

Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
2024-01-22 09:48:09 +00:00
Gerard Marull-Paretas
c725c91d95 arch: riscv: define RISC_IRQ_MSOFT/MEXT
Instead of relying on spread definitions within SoC files.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
2024-01-15 09:58:03 +01:00
Tomas Galbicka
89bd024a1c drivers: mbox: Add nxp mbox multi-channel support
Current implementation of NXP mbox driver mbox_nxp_imx_mu
is using only one channel 0.
This commit adds support for multiple mbox channels as is
indented by mbox drivers.

Change done in .send api signaling mode leveraging provided
channel id to select correct General Purpose Interrupt.
Another change done in IRQHandler to check and handle all
channels.

Signed-off-by: Tomas Galbicka <tomas.galbicka@nxp.com>
2024-01-04 09:42:04 +01:00
Cong Nguyen Huu
5095d9d9e7 drivers: mbox_nxp_s32_mru: update to RTD 1.0.0
Update NOTIFYAdd configuration

Signed-off-by: Cong Nguyen Huu <cong.nguyenhuu@nxp.com>
2023-11-16 09:28:16 +01:00
Manuel Argüelles
434a40470c drivers: mbox: nxp_s32: use instance-based DT macros
At present, many of the NXP S32 shim drivers do not make use of
devicetree instance-based macros because the NXP S32 HAL relies on an
index-based approach, requiring knowledge of the peripheral instance
index during both compilation and runtime, and this index might not
align with the devicetree instance index.

The proposed solution in this patch eliminates this limitation by
determining the peripheral instance index during compilation
through macrobatics and defining the driver's ISR within the shim
driver itself.

Note that for some peripheral instances is needed to redefine the
HAL macros of the peripheral base address, since the naming is not
uniform for all instances.

Signed-off-by: Manuel Argüelles <manuel.arguelles@nxp.com>
2023-11-13 12:18:34 -05:00
Anas Nashif
a08bfeb49c syscall: rename Z_OOPS -> K_OOPS
Rename internal API to not use z_/Z_.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2023-11-03 11:46:52 +01:00