165 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# SPDX-License-Identifier: GPL-2.0-only
 | 
						|
menu "ARM System Control and Management Interface Protocol"
 | 
						|
 | 
						|
config ARM_SCMI_PROTOCOL
 | 
						|
	tristate "ARM System Control and Management Interface (SCMI) Message Protocol"
 | 
						|
	depends on ARM || ARM64 || COMPILE_TEST
 | 
						|
	help
 | 
						|
	  ARM System Control and Management Interface (SCMI) protocol is a
 | 
						|
	  set of operating system-independent software interfaces that are
 | 
						|
	  used in system management. SCMI is extensible and currently provides
 | 
						|
	  interfaces for: Discovery and self-description of the interfaces
 | 
						|
	  it supports, Power domain management which is the ability to place
 | 
						|
	  a given device or domain into the various power-saving states that
 | 
						|
	  it supports, Performance management which is the ability to control
 | 
						|
	  the performance of a domain that is composed of compute engines
 | 
						|
	  such as application processors and other accelerators, Clock
 | 
						|
	  management which is the ability to set and inquire rates on platform
 | 
						|
	  managed clocks and Sensor management which is the ability to read
 | 
						|
	  sensor data, and be notified of sensor value.
 | 
						|
 | 
						|
	  This protocol library provides interface for all the client drivers
 | 
						|
	  making use of the features offered by the SCMI.
 | 
						|
 | 
						|
if ARM_SCMI_PROTOCOL
 | 
						|
 | 
						|
config ARM_SCMI_HAVE_TRANSPORT
 | 
						|
	bool
 | 
						|
	help
 | 
						|
	  This declares whether at least one SCMI transport has been configured.
 | 
						|
	  Used to trigger a build bug when trying to build SCMI without any
 | 
						|
	  configured transport.
 | 
						|
 | 
						|
config ARM_SCMI_HAVE_SHMEM
 | 
						|
	bool
 | 
						|
	help
 | 
						|
	  This declares whether a shared memory based transport for SCMI is
 | 
						|
	  available.
 | 
						|
 | 
						|
config ARM_SCMI_HAVE_MSG
 | 
						|
	bool
 | 
						|
	help
 | 
						|
	  This declares whether a message passing based transport for SCMI is
 | 
						|
	  available.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_MAILBOX
 | 
						|
	bool "SCMI transport based on Mailbox"
 | 
						|
	depends on MAILBOX
 | 
						|
	select ARM_SCMI_HAVE_TRANSPORT
 | 
						|
	select ARM_SCMI_HAVE_SHMEM
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  Enable mailbox based transport for SCMI.
 | 
						|
 | 
						|
	  If you want the ARM SCMI PROTOCOL stack to include support for a
 | 
						|
	  transport based on mailboxes, answer Y.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_OPTEE
 | 
						|
	bool "SCMI transport based on OP-TEE service"
 | 
						|
	depends on OPTEE=y || OPTEE=ARM_SCMI_PROTOCOL
 | 
						|
	select ARM_SCMI_HAVE_TRANSPORT
 | 
						|
	select ARM_SCMI_HAVE_SHMEM
 | 
						|
	select ARM_SCMI_HAVE_MSG
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  This enables the OP-TEE service based transport for SCMI.
 | 
						|
 | 
						|
	  If you want the ARM SCMI PROTOCOL stack to include support for a
 | 
						|
	  transport based on OP-TEE SCMI service, answer Y.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_SMC
 | 
						|
	bool "SCMI transport based on SMC"
 | 
						|
	depends on HAVE_ARM_SMCCC_DISCOVERY
 | 
						|
	select ARM_SCMI_HAVE_TRANSPORT
 | 
						|
	select ARM_SCMI_HAVE_SHMEM
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  Enable SMC based transport for SCMI.
 | 
						|
 | 
						|
	  If you want the ARM SCMI PROTOCOL stack to include support for a
 | 
						|
	  transport based on SMC, answer Y.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE
 | 
						|
	bool "Enable atomic mode support for SCMI SMC transport"
 | 
						|
	depends on ARM_SCMI_TRANSPORT_SMC
 | 
						|
	help
 | 
						|
	  Enable support of atomic operation for SCMI SMC based transport.
 | 
						|
 | 
						|
	  If you want the SCMI SMC based transport to operate in atomic
 | 
						|
	  mode, avoiding any kind of sleeping behaviour for selected
 | 
						|
	  transactions on the TX path, answer Y.
 | 
						|
	  Enabling atomic mode operations allows any SCMI driver using this
 | 
						|
	  transport to optionally ask for atomic SCMI transactions and operate
 | 
						|
	  in atomic context too, at the price of using a number of busy-waiting
 | 
						|
	  primitives all over instead. If unsure say N.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_VIRTIO
 | 
						|
	bool "SCMI transport based on VirtIO"
 | 
						|
	depends on VIRTIO=y || VIRTIO=ARM_SCMI_PROTOCOL
 | 
						|
	select ARM_SCMI_HAVE_TRANSPORT
 | 
						|
	select ARM_SCMI_HAVE_MSG
 | 
						|
	help
 | 
						|
	  This enables the virtio based transport for SCMI.
 | 
						|
 | 
						|
	  If you want the ARM SCMI PROTOCOL stack to include support for a
 | 
						|
	  transport based on VirtIO, answer Y.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE
 | 
						|
	bool "SCMI VirtIO transport Version 1 compliance"
 | 
						|
	depends on ARM_SCMI_TRANSPORT_VIRTIO
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  This enforces strict compliance with VirtIO Version 1 specification.
 | 
						|
 | 
						|
	  If you want the ARM SCMI VirtIO transport layer to refuse to work
 | 
						|
	  with Legacy VirtIO backends and instead support only VirtIO Version 1
 | 
						|
	  devices (or above), answer Y.
 | 
						|
 | 
						|
	  If you want instead to support also old Legacy VirtIO backends (like
 | 
						|
	  the ones implemented by kvmtool) and let the core Kernel VirtIO layer
 | 
						|
	  take care of the needed conversions, say N.
 | 
						|
 | 
						|
config ARM_SCMI_TRANSPORT_VIRTIO_ATOMIC_ENABLE
 | 
						|
	bool "Enable atomic mode for SCMI VirtIO transport"
 | 
						|
	depends on ARM_SCMI_TRANSPORT_VIRTIO
 | 
						|
	help
 | 
						|
	  Enable support of atomic operation for SCMI VirtIO based transport.
 | 
						|
 | 
						|
	  If you want the SCMI VirtIO based transport to operate in atomic
 | 
						|
	  mode, avoiding any kind of sleeping behaviour for selected
 | 
						|
	  transactions on the TX path, answer Y.
 | 
						|
 | 
						|
	  Enabling atomic mode operations allows any SCMI driver using this
 | 
						|
	  transport to optionally ask for atomic SCMI transactions and operate
 | 
						|
	  in atomic context too, at the price of using a number of busy-waiting
 | 
						|
	  primitives all over instead. If unsure say N.
 | 
						|
 | 
						|
endif #ARM_SCMI_PROTOCOL
 | 
						|
 | 
						|
config ARM_SCMI_POWER_DOMAIN
 | 
						|
	tristate "SCMI power domain driver"
 | 
						|
	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
 | 
						|
	default y
 | 
						|
	select PM_GENERIC_DOMAINS if PM
 | 
						|
	help
 | 
						|
	  This enables support for the SCMI power domains which can be
 | 
						|
	  enabled or disabled via the SCP firmware
 | 
						|
 | 
						|
	  This driver can also be built as a module.  If so, the module
 | 
						|
	  will be called scmi_pm_domain. Note this may needed early in boot
 | 
						|
	  before rootfs may be available.
 | 
						|
 | 
						|
config ARM_SCMI_POWER_CONTROL
 | 
						|
	tristate "SCMI system power control driver"
 | 
						|
	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
 | 
						|
	help
 | 
						|
	  This enables System Power control logic which binds system shutdown or
 | 
						|
	  reboot actions to SCMI System Power notifications generated by SCP
 | 
						|
	  firmware.
 | 
						|
 | 
						|
	  This driver can also be built as a module.  If so, the module will be
 | 
						|
	  called scmi_power_control. Note this may needed early in boot to catch
 | 
						|
	  early shutdown/reboot SCMI requests.
 | 
						|
 | 
						|
endmenu
 |