# SPDX-License-Identifier: Apache-2.0

menuconfig IPM
	bool "IPM drivers"
	help
	  Include interrupt-based inter-processor mailboxes
	  drivers in system configuration

if IPM

config IPM_MCUX
	bool "MCUX IPM driver"
	depends on HAS_MCUX
	help
	  Driver for MCUX mailbox

config IPM_IMX
	bool "IMX IPM driver"
	depends on HAS_IMX_HAL
	help
	  Driver for NXP i.MX messaging unit

choice
	prompt "IMX IPM max data size"
	default IPM_IMX_MAX_DATA_SIZE_16
	depends on IPM_IMX
	help
	  Select maximum message size for NXP i.MX messaging unit.

config IPM_IMX_MAX_DATA_SIZE_4
	bool "4 bytes"
	help
	  There will be four message types with ids 0, 1, 2 or 3
	  and a maximum size of 4 bytes each.

config IPM_IMX_MAX_DATA_SIZE_8
	bool "8 bytes"
	help
	  There will be two message types with ids 0 or 1
	  and a maximum size of 8 bytes each.

config IPM_IMX_MAX_DATA_SIZE_16
	bool "16 bytes"
	help
	  There will be a single message type with id 0
	  and a maximum size of 16 bytes.

endchoice

config IPM_IMX_MAX_DATA_SIZE
	int
	range 4 16
	default 4 if IPM_IMX_MAX_DATA_SIZE_4
	default 8 if IPM_IMX_MAX_DATA_SIZE_8
	default 16 if IPM_IMX_MAX_DATA_SIZE_16
	depends on IPM_IMX

config IPM_IMX_MAX_ID_VAL
	int
	range 0 3
	default 3 if IPM_IMX_MAX_DATA_SIZE_4
	default 1 if IPM_IMX_MAX_DATA_SIZE_8
	default 0 if IPM_IMX_MAX_DATA_SIZE_16
	depends on IPM_IMX

config IPM_MHU
	bool "IPM MHU driver"
	help
	  Driver for SSE 200 MHU (Message Handling Unit)

config IPM_NRFX
	bool "IPM NRF driver"
	depends on HAS_HW_NRF_IPC
	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.

source "drivers/ipm/Kconfig.nrfx"

config IPM_STM32_IPCC
	bool "STM32 IPCC controller"
	select USE_STM32_LL_IPCC
	help
	  Driver for stm32 IPCC mailboxes

config IPM_STM32_IPCC_PROCID
	int "STM32 IPCC Processor ID"
	default 2
	range 1 2
	depends on IPM_STM32_IPCC
	help
	  use to define the Processor ID for IPCC access

config IPM_CAVS_IDC
	bool "CAVS DSP Intra-DSP Communication (IDC) driver"
	depends on IPM && CAVS_ICTL
	default y if MP_NUM_CPUS > 1 && SMP
	help
	  Driver for the Intra-DSP Communication (IDC) channel for
	  cross SoC communications.

config IPM_INTEL_ADSP
	bool "IPM ADSP Host-DSP Communication driver"
	help
	  Driver for the Host-DSP Mailbox Communication channel.

config IPM_STM32_HSEM
	bool "STM32 HSEM controller"
	depends on STM32H7_DUAL_CORE
	help
	  Driver for stm32 HSEM mailbox

config IPM_STM32_HSEM_CPU
	int "HSEM CPU ID"
	default 1 if "$(dt_nodelabel_enabled,cpu0)"
	default 2 if "$(dt_nodelabel_enabled,cpu1)"
	range 1 2
	depends on IPM_STM32_HSEM
	help
	  use to define the CPU ID used by HSEM

module = IPM
module-str = ipm
source "subsys/logging/Kconfig.template.log_config"

endif #IPM
