123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- # 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.
- config QTI_SCMI_PMU_PROTOCOL
- tristate "Qualcomm Technologies, Inc. SCMI PMU vendor Protocol"
- depends on ARM || ARM64 || COMPILE_TEST
- depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
- help
- System Control and Management Interface (SCMI) pmu vendor protocol.
- This protocol provides interface to communicate with micro controller
- which maintains the PMU configuration for multiple clients.
- This driver defines the commands or message ID's used for this
- communication and also exposes the ops used by clients.
- config QTI_SCMI_VENDOR_PROTOCOL
- tristate "Qualcomm Technologies, Inc. Qcom SCMI vendor Protocol"
- depends on ARM || ARM64 || COMPILE_TEST
- depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
- help
- System Control and Management Interface (SCMI) Qcom vendor protocol.
- This protocol provides interface to communicate with micro controller.
- This driver defines the commands or message ID's used for this
- communication and also exposes the ops used by clients.
- config QTI_SCMI_C1DCVS_PROTOCOL
- tristate "Qualcomm Technologies, Inc. SCMI C1DCVS vendor Protocol"
- depends on ARM || ARM64 || COMPILE_TEST
- depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
- help
- System Control and Management Interface (SCMI) c1dcvs vendor protocol.
- This protocol provides interface to communicate with micro controller
- which maintains the c1dcvs algorithm.
- This driver defines the comands or message ID's used for this
- communication and also exposes the ops used by clients.
- config QTI_SCMI_PLH_PROTOCOL
- tristate "Qualcomm Technologies, Inc. SCMI PLH vendor Protocol"
- depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
- help
- System Control and Management Interface (SCMI) plh vendor protocol
- this protocol provides interface to communicate with micro controller
- which is executing the plh algorithm.
- This driver defines the comands or message ID's used for this
- communication and also exposes the ops used by clients.
- 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
|