Commit 1976f33e authored by Carlo Caione's avatar Carlo Caione Committed by Carles Cufi
Browse files

drivers: mbox: Introduce MBOX driver class



One limitation of the current IPM API is that it is assuming that the
hardware is only exporting one single channel through which the data can
be sent or signalling can happen.

If the hardware supports multiple channels, the IPM device must be
instantiated (possibly in the DT) several times, one for each channel to
be able to send data through multiple channels using the same hw
peripheral. Also in the current IPM API only one callback can be
registered, that means that only one driver is controlling all the
signalling happening on all the channels.

This patch is introducing a new MBOX API that is supporting
multi-channel signalling and data exachange leveraging and extending the
previous (and outdated) IPM API.

Signed-off-by: default avatarCarlo Caione <ccaione@baylibre.com>
parent bc412341
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -284,6 +284,7 @@
/drivers/led/                             @Mani-Sadhasivam
/drivers/led_strip/                       @mbolivar-nordic
/drivers/lora/                            @Mani-Sadhasivam
/drivers/mbox/                            @carlocaione
/drivers/memc/                            @gmarull
/drivers/misc/                            @tejlmand
/drivers/misc/ft8xx/                      @hubertmis
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ Peripherals
   ipm.rst
   kscan.rst
   led.rst
   mbox.rst
   pinmux.rst
   pwm.rst
   ps2.rst
+18 −0
Original line number Diff line number Diff line
.. _mbox_api:

MBOX
####

Overview
********

An MBOX device is a peripheral capable of passing signals (and data depending
on the peripheral) between CPUs and clusters in the system. Each MBOX instance
is providing one or more channels, each one targeting one other CPU cluster
(multiple channels can target the same cluster).


API Reference
*************

.. doxygengroup:: mbox_interface
+1 −0
Original line number Diff line number Diff line
@@ -62,3 +62,4 @@ add_subdirectory_ifdef(CONFIG_SYSCON syscon)
add_subdirectory_ifdef(CONFIG_BBRAM            bbram)
add_subdirectory_ifdef(CONFIG_FPGA             fpga)
add_subdirectory_ifdef(CONFIG_PINCTRL pinctrl)
add_subdirectory_ifdef(CONFIG_MBOX             mbox)
+2 −0
Original line number Diff line number Diff line
@@ -125,4 +125,6 @@ source "drivers/fpga/Kconfig"

source "drivers/pinctrl/Kconfig"

source "drivers/mbox/Kconfig"

endmenu
Loading