xref: /kernel/linux/linux-6.6/drivers/mailbox/Kconfig (revision 62306a36)
162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_cimenuconfig MAILBOX
362306a36Sopenharmony_ci	bool "Mailbox Hardware Support"
462306a36Sopenharmony_ci	help
562306a36Sopenharmony_ci	  Mailbox is a framework to control hardware communication between
662306a36Sopenharmony_ci	  on-chip processors through queued messages and interrupt driven
762306a36Sopenharmony_ci	  signals. Say Y if your platform supports hardware mailboxes.
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciif MAILBOX
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciconfig APPLE_MAILBOX
1262306a36Sopenharmony_ci	tristate "Apple Mailbox driver"
1362306a36Sopenharmony_ci	depends on ARCH_APPLE || (ARM64 && COMPILE_TEST)
1462306a36Sopenharmony_ci	default ARCH_APPLE
1562306a36Sopenharmony_ci	help
1662306a36Sopenharmony_ci	  Apple SoCs have various co-processors required for certain
1762306a36Sopenharmony_ci	  peripherals to work (NVMe, display controller, etc.). This
1862306a36Sopenharmony_ci	  driver adds support for the mailbox controller used to
1962306a36Sopenharmony_ci	  communicate with those.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	  Say Y here if you have a Apple SoC.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciconfig ARM_MHU
2462306a36Sopenharmony_ci	tristate "ARM MHU Mailbox"
2562306a36Sopenharmony_ci	depends on ARM_AMBA
2662306a36Sopenharmony_ci	help
2762306a36Sopenharmony_ci	  Say Y here if you want to build the ARM MHU controller driver.
2862306a36Sopenharmony_ci	  The controller has 3 mailbox channels, the last of which can be
2962306a36Sopenharmony_ci	  used in Secure mode only.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciconfig ARM_MHU_V2
3262306a36Sopenharmony_ci	tristate "ARM MHUv2 Mailbox"
3362306a36Sopenharmony_ci	depends on ARM_AMBA
3462306a36Sopenharmony_ci	help
3562306a36Sopenharmony_ci	  Say Y here if you want to build the ARM MHUv2 controller driver,
3662306a36Sopenharmony_ci	  which provides unidirectional mailboxes between processing elements.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciconfig IMX_MBOX
3962306a36Sopenharmony_ci	tristate "i.MX Mailbox"
4062306a36Sopenharmony_ci	depends on ARCH_MXC || COMPILE_TEST
4162306a36Sopenharmony_ci	help
4262306a36Sopenharmony_ci	  Mailbox implementation for i.MX Messaging Unit (MU).
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciconfig PLATFORM_MHU
4562306a36Sopenharmony_ci	tristate "Platform MHU Mailbox"
4662306a36Sopenharmony_ci	depends on OF
4762306a36Sopenharmony_ci	depends on HAS_IOMEM
4862306a36Sopenharmony_ci	help
4962306a36Sopenharmony_ci	  Say Y here if you want to build a platform specific variant MHU
5062306a36Sopenharmony_ci	  controller driver.
5162306a36Sopenharmony_ci	  The controller has a maximum of 3 mailbox channels, the last of
5262306a36Sopenharmony_ci	  which can be used in Secure mode only.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciconfig PL320_MBOX
5562306a36Sopenharmony_ci	bool "ARM PL320 Mailbox"
5662306a36Sopenharmony_ci	depends on ARM_AMBA
5762306a36Sopenharmony_ci	help
5862306a36Sopenharmony_ci	  An implementation of the ARM PL320 Interprocessor Communication
5962306a36Sopenharmony_ci	  Mailbox (IPCM), tailored for the Calxeda Highbank. It is used to
6062306a36Sopenharmony_ci	  send short messages between Highbank's A9 cores and the EnergyCore
6162306a36Sopenharmony_ci	  Management Engine, primarily for cpufreq. Say Y here if you want
6262306a36Sopenharmony_ci	  to use the PL320 IPCM support.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig ARMADA_37XX_RWTM_MBOX
6562306a36Sopenharmony_ci	tristate "Armada 37xx rWTM BIU Mailbox"
6662306a36Sopenharmony_ci	depends on ARCH_MVEBU || COMPILE_TEST
6762306a36Sopenharmony_ci	depends on OF
6862306a36Sopenharmony_ci	help
6962306a36Sopenharmony_ci	  Mailbox implementation for communication with the the firmware
7062306a36Sopenharmony_ci	  running on the Cortex-M3 rWTM secure processor of the Armada 37xx
7162306a36Sopenharmony_ci	  SOC. Say Y here if you are building for such a device (for example
7262306a36Sopenharmony_ci	  the Turris Mox router).
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciconfig OMAP2PLUS_MBOX
7562306a36Sopenharmony_ci	tristate "OMAP2+ Mailbox framework support"
7662306a36Sopenharmony_ci	depends on ARCH_OMAP2PLUS || ARCH_K3
7762306a36Sopenharmony_ci	help
7862306a36Sopenharmony_ci	  Mailbox implementation for OMAP family chips with hardware for
7962306a36Sopenharmony_ci	  interprocessor communication involving DSP, IVA1.0 and IVA2 in
8062306a36Sopenharmony_ci	  OMAP2/3; or IPU, IVA HD and DSP in OMAP4/5. Say Y here if you
8162306a36Sopenharmony_ci	  want to use OMAP2+ Mailbox framework support.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciconfig OMAP_MBOX_KFIFO_SIZE
8462306a36Sopenharmony_ci	int "Mailbox kfifo default buffer size (bytes)"
8562306a36Sopenharmony_ci	depends on OMAP2PLUS_MBOX
8662306a36Sopenharmony_ci	default 256
8762306a36Sopenharmony_ci	help
8862306a36Sopenharmony_ci	  Specify the default size of mailbox's kfifo buffers (bytes).
8962306a36Sopenharmony_ci	  This can also be changed at runtime (via the mbox_kfifo_size
9062306a36Sopenharmony_ci	  module parameter).
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciconfig ROCKCHIP_MBOX
9362306a36Sopenharmony_ci	bool "Rockchip Soc Integrated Mailbox Support"
9462306a36Sopenharmony_ci	depends on ARCH_ROCKCHIP || COMPILE_TEST
9562306a36Sopenharmony_ci	help
9662306a36Sopenharmony_ci	  This driver provides support for inter-processor communication
9762306a36Sopenharmony_ci	  between CPU cores and MCU processor on Some Rockchip SOCs.
9862306a36Sopenharmony_ci	  Please check it that the Soc you use have Mailbox hardware.
9962306a36Sopenharmony_ci	  Say Y here if you want to use the Rockchip Mailbox support.
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciconfig PCC
10262306a36Sopenharmony_ci	bool "Platform Communication Channel Driver"
10362306a36Sopenharmony_ci	depends on ACPI
10462306a36Sopenharmony_ci	default n
10562306a36Sopenharmony_ci	help
10662306a36Sopenharmony_ci	  ACPI 5.0+ spec defines a generic mode of communication
10762306a36Sopenharmony_ci	  between the OS and a platform such as the BMC. This medium
10862306a36Sopenharmony_ci	  (PCC) is typically used by CPPC (ACPI CPU Performance management),
10962306a36Sopenharmony_ci	  RAS (ACPI reliability protocol) and MPST (ACPI Memory power
11062306a36Sopenharmony_ci	  states). Select this driver if your platform implements the
11162306a36Sopenharmony_ci	  PCC clients mentioned above.
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ciconfig ALTERA_MBOX
11462306a36Sopenharmony_ci	tristate "Altera Mailbox"
11562306a36Sopenharmony_ci	depends on HAS_IOMEM
11662306a36Sopenharmony_ci	help
11762306a36Sopenharmony_ci	  An implementation of the Altera Mailbox soft core. It is used
11862306a36Sopenharmony_ci	  to send message between processors. Say Y here if you want to use the
11962306a36Sopenharmony_ci	  Altera mailbox support.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciconfig BCM2835_MBOX
12262306a36Sopenharmony_ci	tristate "BCM2835 Mailbox"
12362306a36Sopenharmony_ci	depends on ARCH_BCM2835
12462306a36Sopenharmony_ci	help
12562306a36Sopenharmony_ci	  An implementation of the BCM2385 Mailbox.  It is used to invoke
12662306a36Sopenharmony_ci	  the services of the Videocore. Say Y here if you want to use the
12762306a36Sopenharmony_ci	  BCM2835 Mailbox.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciconfig STI_MBOX
13062306a36Sopenharmony_ci	tristate "STI Mailbox framework support"
13162306a36Sopenharmony_ci	depends on ARCH_STI && OF
13262306a36Sopenharmony_ci	help
13362306a36Sopenharmony_ci	  Mailbox implementation for STMicroelectonics family chips with
13462306a36Sopenharmony_ci	  hardware for interprocessor communication.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ciconfig TI_MESSAGE_MANAGER
13762306a36Sopenharmony_ci	tristate "Texas Instruments Message Manager Driver"
13862306a36Sopenharmony_ci	depends on ARCH_KEYSTONE || ARCH_K3
13962306a36Sopenharmony_ci	default ARCH_K3
14062306a36Sopenharmony_ci	help
14162306a36Sopenharmony_ci	  An implementation of Message Manager slave driver for Keystone
14262306a36Sopenharmony_ci	  and K3 architecture SoCs from Texas Instruments. Message Manager
14362306a36Sopenharmony_ci	  is a communication entity found on few of Texas Instrument's keystone
14462306a36Sopenharmony_ci	  and K3 architecture SoCs. These may be used for communication between
14562306a36Sopenharmony_ci	  multiple processors within the SoC. Select this driver if your
14662306a36Sopenharmony_ci	  platform has support for the hardware block.
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ciconfig HI3660_MBOX
14962306a36Sopenharmony_ci	tristate "Hi3660 Mailbox" if EXPERT
15062306a36Sopenharmony_ci	depends on (ARCH_HISI || COMPILE_TEST)
15162306a36Sopenharmony_ci	depends on OF
15262306a36Sopenharmony_ci	default ARCH_HISI
15362306a36Sopenharmony_ci	help
15462306a36Sopenharmony_ci	  An implementation of the hi3660 mailbox. It is used to send message
15562306a36Sopenharmony_ci	  between application processors and other processors/MCU/DSP. Select
15662306a36Sopenharmony_ci	  Y here if you want to use Hi3660 mailbox controller.
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ciconfig HI6220_MBOX
15962306a36Sopenharmony_ci	tristate "Hi6220 Mailbox" if EXPERT
16062306a36Sopenharmony_ci	depends on (ARCH_HISI || COMPILE_TEST)
16162306a36Sopenharmony_ci	depends on OF
16262306a36Sopenharmony_ci	default ARCH_HISI
16362306a36Sopenharmony_ci	help
16462306a36Sopenharmony_ci	  An implementation of the hi6220 mailbox. It is used to send message
16562306a36Sopenharmony_ci	  between application processors and MCU. Say Y here if you want to
16662306a36Sopenharmony_ci	  build Hi6220 mailbox controller driver.
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ciconfig MAILBOX_TEST
16962306a36Sopenharmony_ci	tristate "Mailbox Test Client"
17062306a36Sopenharmony_ci	depends on OF
17162306a36Sopenharmony_ci	depends on HAS_IOMEM
17262306a36Sopenharmony_ci	help
17362306a36Sopenharmony_ci	  Test client to help with testing new Controller driver
17462306a36Sopenharmony_ci	  implementations.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciconfig POLARFIRE_SOC_MAILBOX
17762306a36Sopenharmony_ci	tristate "PolarFire SoC (MPFS) Mailbox"
17862306a36Sopenharmony_ci	depends on HAS_IOMEM
17962306a36Sopenharmony_ci	depends on ARCH_MICROCHIP_POLARFIRE || COMPILE_TEST
18062306a36Sopenharmony_ci	help
18162306a36Sopenharmony_ci	  This driver adds support for the PolarFire SoC (MPFS) mailbox controller.
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	  To compile this driver as a module, choose M here. the
18462306a36Sopenharmony_ci	  module will be called mailbox-mpfs.
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci	  If unsure, say N.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ciconfig QCOM_APCS_IPC
18962306a36Sopenharmony_ci	tristate "Qualcomm APCS IPC driver"
19062306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
19162306a36Sopenharmony_ci	help
19262306a36Sopenharmony_ci	  Say y here to enable support for the APCS IPC mailbox driver,
19362306a36Sopenharmony_ci	  providing an interface for invoking the inter-process communication
19462306a36Sopenharmony_ci	  signals from the application processor to other masters.
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ciconfig TEGRA_HSP_MBOX
19762306a36Sopenharmony_ci	bool "Tegra HSP (Hardware Synchronization Primitives) Driver"
19862306a36Sopenharmony_ci	depends on ARCH_TEGRA
19962306a36Sopenharmony_ci	help
20062306a36Sopenharmony_ci	  The Tegra HSP driver is used for the interprocessor communication
20162306a36Sopenharmony_ci	  between different remote processors and host processors on Tegra186
20262306a36Sopenharmony_ci	  and later SoCs. Say Y here if you want to have this support.
20362306a36Sopenharmony_ci	  If unsure say N.
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ciconfig XGENE_SLIMPRO_MBOX
20662306a36Sopenharmony_ci	tristate "APM SoC X-Gene SLIMpro Mailbox Controller"
20762306a36Sopenharmony_ci	depends on ARCH_XGENE
20862306a36Sopenharmony_ci	help
20962306a36Sopenharmony_ci	  An implementation of the APM X-Gene Interprocessor Communication
21062306a36Sopenharmony_ci	  Mailbox (IPCM) between the ARM 64-bit cores and SLIMpro controller.
21162306a36Sopenharmony_ci	  It is used to send short messages between ARM64-bit cores and
21262306a36Sopenharmony_ci	  the SLIMpro Management Engine, primarily for PM. Say Y here if you
21362306a36Sopenharmony_ci	  want to use the APM X-Gene SLIMpro IPCM support.
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ciconfig BCM_PDC_MBOX
21662306a36Sopenharmony_ci	tristate "Broadcom FlexSparx DMA Mailbox"
21762306a36Sopenharmony_ci	depends on ARCH_BCM_IPROC || COMPILE_TEST
21862306a36Sopenharmony_ci	help
21962306a36Sopenharmony_ci	  Mailbox implementation for the Broadcom FlexSparx DMA ring manager,
22062306a36Sopenharmony_ci	  which provides access to various offload engines on Broadcom
22162306a36Sopenharmony_ci	  SoCs, including FA2/FA+ on Northstar Plus and PDC on Northstar 2.
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ciconfig BCM_FLEXRM_MBOX
22462306a36Sopenharmony_ci	tristate "Broadcom FlexRM Mailbox"
22562306a36Sopenharmony_ci	depends on ARM64
22662306a36Sopenharmony_ci	depends on ARCH_BCM_IPROC || COMPILE_TEST
22762306a36Sopenharmony_ci	select GENERIC_MSI_IRQ
22862306a36Sopenharmony_ci	default m if ARCH_BCM_IPROC
22962306a36Sopenharmony_ci	help
23062306a36Sopenharmony_ci	  Mailbox implementation of the Broadcom FlexRM ring manager,
23162306a36Sopenharmony_ci	  which provides access to various offload engines on Broadcom
23262306a36Sopenharmony_ci	  SoCs. Say Y here if you want to use the Broadcom FlexRM.
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ciconfig STM32_IPCC
23562306a36Sopenharmony_ci	tristate "STM32 IPCC Mailbox"
23662306a36Sopenharmony_ci	depends on MACH_STM32MP157 || COMPILE_TEST
23762306a36Sopenharmony_ci	help
23862306a36Sopenharmony_ci	  Mailbox implementation for STMicroelectonics STM32 family chips
23962306a36Sopenharmony_ci	  with hardware for Inter-Processor Communication Controller (IPCC)
24062306a36Sopenharmony_ci	  between processors. Say Y here if you want to have this support.
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ciconfig MTK_ADSP_MBOX
24362306a36Sopenharmony_ci	tristate "MediaTek ADSP Mailbox Controller"
24462306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
24562306a36Sopenharmony_ci	help
24662306a36Sopenharmony_ci          Say yes here to add support for "MediaTek ADSP Mailbox Controller.
24762306a36Sopenharmony_ci          This mailbox driver is used to send notification or short message
24862306a36Sopenharmony_ci          between processors with ADSP. It will place the message to share
24962306a36Sopenharmony_ci	  buffer and will access the ipc control.
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ciconfig MTK_CMDQ_MBOX
25262306a36Sopenharmony_ci	tristate "MediaTek CMDQ Mailbox Support"
25362306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
25462306a36Sopenharmony_ci	select MTK_INFRACFG
25562306a36Sopenharmony_ci	help
25662306a36Sopenharmony_ci	  Say yes here to add support for the MediaTek Command Queue (CMDQ)
25762306a36Sopenharmony_ci	  mailbox driver. The CMDQ is used to help read/write registers with
25862306a36Sopenharmony_ci	  critical time limitation, such as updating display configuration
25962306a36Sopenharmony_ci	  during the vblank.
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ciconfig ZYNQMP_IPI_MBOX
26262306a36Sopenharmony_ci	tristate "Xilinx ZynqMP IPI Mailbox"
26362306a36Sopenharmony_ci	depends on ARCH_ZYNQMP && OF
26462306a36Sopenharmony_ci	help
26562306a36Sopenharmony_ci	  Say yes here to add support for Xilinx IPI mailbox driver.
26662306a36Sopenharmony_ci	  This mailbox driver is used to send notification or short message
26762306a36Sopenharmony_ci	  between processors with Xilinx ZynqMP IPI. It will place the
26862306a36Sopenharmony_ci	  message to the IPI buffer and will access the IPI control
26962306a36Sopenharmony_ci	  registers to kick the other processor or enquire status.
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ciconfig SUN6I_MSGBOX
27262306a36Sopenharmony_ci	tristate "Allwinner sun6i/sun8i/sun9i/sun50i Message Box"
27362306a36Sopenharmony_ci	depends on ARCH_SUNXI || COMPILE_TEST
27462306a36Sopenharmony_ci	default ARCH_SUNXI
27562306a36Sopenharmony_ci	help
27662306a36Sopenharmony_ci	  Mailbox implementation for the hardware message box present in
27762306a36Sopenharmony_ci	  various Allwinner SoCs. This mailbox is used for communication
27862306a36Sopenharmony_ci	  between the application CPUs and the power management coprocessor.
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ciconfig SPRD_MBOX
28162306a36Sopenharmony_ci	tristate "Spreadtrum Mailbox"
28262306a36Sopenharmony_ci	depends on ARCH_SPRD || COMPILE_TEST
28362306a36Sopenharmony_ci	help
28462306a36Sopenharmony_ci	  Mailbox driver implementation for the Spreadtrum platform. It is used
28562306a36Sopenharmony_ci	  to send message between application processors and MCU. Say Y here if
28662306a36Sopenharmony_ci	  you want to build the Spreatrum mailbox controller driver.
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ciconfig QCOM_IPCC
28962306a36Sopenharmony_ci	tristate "Qualcomm Technologies, Inc. IPCC driver"
29062306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
29162306a36Sopenharmony_ci	help
29262306a36Sopenharmony_ci	  Qualcomm Technologies, Inc. Inter-Processor Communication Controller
29362306a36Sopenharmony_ci	  (IPCC) driver for MSM devices. The driver provides mailbox support for
29462306a36Sopenharmony_ci	  sending interrupts to the clients. On the other hand, the driver also
29562306a36Sopenharmony_ci	  acts as an interrupt controller for receiving interrupts from clients.
29662306a36Sopenharmony_ci	  Say Y here if you want to build this driver.
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ciendif
299