The Multi-Channel Inter-Processor Mailbox (MBOX) framework can be seen as a more general version of the Inter-Processor Mailbox (IPM) framework. An MBOX driver provides for multiple channels, where IPM provides for only a single channel of communication. Currently many applications are written to use IPM, while some are now being written to use MBOX. This means if a platform wants to support both types of apps a given it must have a driver for both frameworks. As MBOX is the newer and more generic framework, new drivers are being added for this framework only and older IPM drivers are being migrated to MBOX. This leads to the situation where applications need to be written twice, once for each framework, to run across all platforms. The solution is to add a gasket driver that exposes the IPM interface while using a MBOX driver in the back-end. This shim driver allows platforms to only need an MBOX driver to support both types of application. This IPM driver can be used when an application only supports IPM but the platform only supports MBOX. This will allow platforms and applications to be ported over to MBOX independently of each other. Add this driver here. Signed-off-by: Andrew Davis <afd@ti.com>
78 lines
1.8 KiB
Text
78 lines
1.8 KiB
Text
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig IPM
|
|
bool "Inter-Processor Mailbox (IPM) drivers"
|
|
help
|
|
Include interrupt-based inter-processor mailboxes
|
|
drivers in system configuration
|
|
|
|
if IPM
|
|
|
|
config IPM_MHU
|
|
bool "IPM MHU driver"
|
|
default y
|
|
depends on DT_HAS_ARM_MHU_ENABLED
|
|
help
|
|
Driver for SSE 200 MHU (Message Handling Unit)
|
|
|
|
config IPM_NRFX
|
|
bool "IPM NRF driver"
|
|
default y
|
|
depends on DT_HAS_NORDIC_NRF_IPC_ENABLED
|
|
select NRFX_IPC
|
|
help
|
|
Driver for Nordic nRF messaging unit, based
|
|
on nRF IPC peripheral HW.
|
|
|
|
config IPM_NRF_SINGLE_INSTANCE
|
|
bool "Single instance of IPM device"
|
|
help
|
|
Enable this option if the IPM device should have
|
|
a single instance, instead of one per IPC
|
|
message channel.
|
|
|
|
config ESP32_SOFT_IPM
|
|
bool "ESP32 Software IPM driver"
|
|
default y
|
|
depends on DT_HAS_ESPRESSIF_ESP32_IPM_ENABLED
|
|
help
|
|
Interprocessor driver for ESP32 when using AMP.
|
|
|
|
config IPM_IVSHMEM
|
|
bool "IPM driver based on IVSHMEM-Doorbell"
|
|
default y
|
|
depends on DT_HAS_LINARO_IVSHMEM_IPM_ENABLED
|
|
depends on IVSHMEM
|
|
depends on IVSHMEM_DOORBELL
|
|
help
|
|
Interprocessor driver using IVSHMEM Doorbell mechanism.
|
|
|
|
config XLNX_IPI
|
|
bool "AMD-Xilinx IPM driver"
|
|
default y
|
|
depends on DT_HAS_XLNX_ZYNQMP_IPI_MAILBOX_ENABLED
|
|
help
|
|
Inter Processor Interrupt driver for AMD-Xilinx
|
|
platforms such as ZynqMP Ultrascale+.
|
|
|
|
config IPM_MBOX
|
|
bool "IPM over MBOX driver"
|
|
default y
|
|
depends on DT_HAS_ZEPHYR_MBOX_IPM_ENABLED
|
|
depends on MBOX
|
|
help
|
|
IPM driver using a MBOX driver as the backend mechanism.
|
|
|
|
source "drivers/ipm/Kconfig.nrfx"
|
|
source "drivers/ipm/Kconfig.imx"
|
|
source "drivers/ipm/Kconfig.stm32"
|
|
source "drivers/ipm/Kconfig.intel_adsp"
|
|
source "drivers/ipm/Kconfig.ivshmem"
|
|
source "drivers/ipm/Kconfig.sedi"
|
|
|
|
|
|
module = IPM
|
|
module-str = ipm
|
|
source "subsys/logging/Kconfig.template.log_config"
|
|
|
|
endif #IPM
|