1# SPDX-License-Identifier: Apache-2.0
2
3menuconfig IPM
4	bool "IPM drivers"
5	help
6	  Include interrupt-based inter-processor mailboxes
7	  drivers in system configuration
8
9if IPM
10
11config IPM_MCUX
12	bool "MCUX IPM driver"
13	depends on HAS_MCUX
14	help
15	  Driver for MCUX mailbox
16
17config IPM_IMX
18	bool "IMX IPM driver"
19	depends on HAS_IMX_HAL
20	help
21	  Driver for NXP i.MX messaging unit
22
23choice
24	prompt "IMX IPM max data size"
25	default IPM_IMX_MAX_DATA_SIZE_16
26	depends on IPM_IMX
27	help
28	  Select maximum message size for NXP i.MX messaging unit.
29
30config IPM_IMX_MAX_DATA_SIZE_4
31	bool "4 bytes"
32	help
33	  There will be four message types with ids 0, 1, 2 or 3
34	  and a maximum size of 4 bytes each.
35
36config IPM_IMX_MAX_DATA_SIZE_8
37	bool "8 bytes"
38	help
39	  There will be two message types with ids 0 or 1
40	  and a maximum size of 8 bytes each.
41
42config IPM_IMX_MAX_DATA_SIZE_16
43	bool "16 bytes"
44	help
45	  There will be a single message type with id 0
46	  and a maximum size of 16 bytes.
47
48endchoice
49
50config IPM_IMX_MAX_DATA_SIZE
51	int
52	range 4 16
53	default 4 if IPM_IMX_MAX_DATA_SIZE_4
54	default 8 if IPM_IMX_MAX_DATA_SIZE_8
55	default 16 if IPM_IMX_MAX_DATA_SIZE_16
56	depends on IPM_IMX
57
58config IPM_IMX_MAX_ID_VAL
59	int
60	range 0 3
61	default 3 if IPM_IMX_MAX_DATA_SIZE_4
62	default 1 if IPM_IMX_MAX_DATA_SIZE_8
63	default 0 if IPM_IMX_MAX_DATA_SIZE_16
64	depends on IPM_IMX
65
66config IPM_MHU
67	bool "IPM MHU driver"
68	help
69	  Driver for SSE 200 MHU (Message Handling Unit)
70
71config IPM_NRFX
72	bool "IPM NRF driver"
73	depends on HAS_HW_NRF_IPC
74	select NRFX_IPC
75	help
76	  Driver for Nordic nRF messaging unit, based
77	  on nRF IPC peripheral HW.
78
79config IPM_NRF_SINGLE_INSTANCE
80	bool "Single instance of IPM device"
81	help
82	  Enable this option if the IPM device should have
83	  a single instance, instead of one per IPC
84	  message channel.
85
86source "drivers/ipm/Kconfig.nrfx"
87
88config IPM_STM32_IPCC
89	bool "STM32 IPCC controller"
90	select USE_STM32_LL_IPCC
91	help
92	  Driver for stm32 IPCC mailboxes
93
94config IPM_STM32_IPCC_PROCID
95	int "STM32 IPCC Processor ID"
96	default 2
97	range 1 2
98	depends on IPM_STM32_IPCC
99	help
100	  use to define the Processor ID for IPCC access
101
102config IPM_CAVS_IDC
103	bool "CAVS DSP Intra-DSP Communication (IDC) driver"
104	depends on IPM && CAVS_ICTL
105	default y if MP_NUM_CPUS > 1 && SMP
106	help
107	  Driver for the Intra-DSP Communication (IDC) channel for
108	  cross SoC communications.
109
110config IPM_INTEL_ADSP
111	bool "IPM ADSP Host-DSP Communication driver"
112	help
113	  Driver for the Host-DSP Mailbox Communication channel.
114
115config IPM_STM32_HSEM
116	bool "STM32 HSEM controller"
117	depends on STM32H7_DUAL_CORE
118	help
119	  Driver for stm32 HSEM mailbox
120
121config IPM_STM32_HSEM_CPU
122	int "HSEM CPU ID"
123	default 1 if "$(dt_nodelabel_enabled,cpu0)"
124	default 2 if "$(dt_nodelabel_enabled,cpu1)"
125	range 1 2
126	depends on IPM_STM32_HSEM
127	help
128	  use to define the CPU ID used by HSEM
129
130module = IPM
131module-str = ipm
132source "subsys/logging/Kconfig.template.log_config"
133
134endif #IPM
135