# SPDX-License-Identifier: GPL-2.0-only
config IMX_DSP
	tristate "IMX DSP Protocol driver"
	depends on IMX_MBOX
	help
	  This enables DSP IPC protocol between host AP (Linux)
	  and the firmware running on DSP.
	  DSP exists on some i.MX8 processors (e.g i.MX8QM, i.MX8QXP).

	  It acts like a doorbell. Client might use shared memory to
	  exchange information with DSP side.

config IMX_SCU
	bool "IMX SCU Protocol driver"
	depends on IMX_MBOX
	select SOC_BUS
	help
	  The System Controller Firmware (SCFW) is a low-level system function
	  which runs on a dedicated Cortex-M core to provide power, clock, and
	  resource management. It exists on some i.MX8 processors. e.g. i.MX8QM
	  (QM, QP), and i.MX8QX (QXP, DX).

	  This driver manages the IPC interface between host CPU and the
	  SCU firmware running on M4.

config IMX_SCMI_CPU_DRV
	tristate "IMX SCMI CPU Protocol driver"
	depends on ARCH_MXC || COMPILE_TEST
	default y if ARCH_MXC
	help
	  The System Controller Management Interface firmware (SCMI FW) is
	  a low-level system function which runs on a dedicated Cortex-M
	  core that could provide cpu management features.

	  This driver can also be built as a module.

config IMX_SCMI_LMM_DRV
	tristate "IMX SCMI LMM Protocol driver"
	depends on ARCH_MXC || COMPILE_TEST
	default y if ARCH_MXC
	help
	  The System Controller Management Interface firmware (SCMI FW) is
	  a low-level system function which runs on a dedicated Cortex-M
	  core that could provide Logical Machine management features.

	  This driver can also be built as a module.

config IMX_SCMI_MISC_DRV
	tristate "IMX SCMI MISC Protocol driver"
	depends on ARCH_MXC || COMPILE_TEST
	default y if ARCH_MXC
	help
	  The System Controller Management Interface firmware (SCMI FW) is
	  a low-level system function which runs on a dedicated Cortex-M
	  core that could provide misc functions such as board control.

	  This driver can also be built as a module.
