1e8419c24SCristian Marussi# SPDX-License-Identifier: GPL-2.0-only 2e8419c24SCristian Marussimenu "ARM System Control and Management Interface Protocol" 3e8419c24SCristian Marussi 4e8419c24SCristian Marussiconfig ARM_SCMI_PROTOCOL 5e8419c24SCristian Marussi tristate "ARM System Control and Management Interface (SCMI) Message Protocol" 6e8419c24SCristian Marussi depends on ARM || ARM64 || COMPILE_TEST 7e8419c24SCristian Marussi help 8e8419c24SCristian Marussi ARM System Control and Management Interface (SCMI) protocol is a 9e8419c24SCristian Marussi set of operating system-independent software interfaces that are 10e8419c24SCristian Marussi used in system management. SCMI is extensible and currently provides 11e8419c24SCristian Marussi interfaces for: Discovery and self-description of the interfaces 12e8419c24SCristian Marussi it supports, Power domain management which is the ability to place 13e8419c24SCristian Marussi a given device or domain into the various power-saving states that 14e8419c24SCristian Marussi it supports, Performance management which is the ability to control 15e8419c24SCristian Marussi the performance of a domain that is composed of compute engines 16e8419c24SCristian Marussi such as application processors and other accelerators, Clock 17e8419c24SCristian Marussi management which is the ability to set and inquire rates on platform 18e8419c24SCristian Marussi managed clocks and Sensor management which is the ability to read 19e8419c24SCristian Marussi sensor data, and be notified of sensor value. 20e8419c24SCristian Marussi 21e8419c24SCristian Marussi This protocol library provides interface for all the client drivers 22e8419c24SCristian Marussi making use of the features offered by the SCMI. 23e8419c24SCristian Marussi 24e8419c24SCristian Marussiif ARM_SCMI_PROTOCOL 25e8419c24SCristian Marussi 26c3d4aed7SCristian Marussiconfig ARM_SCMI_NEED_DEBUGFS 27c3d4aed7SCristian Marussi bool 28c3d4aed7SCristian Marussi help 29c3d4aed7SCristian Marussi This declares whether at least one SCMI facility is configured 30c3d4aed7SCristian Marussi which needs debugfs support. When selected causess the creation 31c3d4aed7SCristian Marussi of a common SCMI debugfs root directory. 32c3d4aed7SCristian Marussi 333c3d818aSCristian Marussiconfig ARM_SCMI_RAW_MODE_SUPPORT 343c3d818aSCristian Marussi bool "Enable support for SCMI Raw transmission mode" 353c3d818aSCristian Marussi depends on DEBUG_FS 363c3d818aSCristian Marussi select ARM_SCMI_NEED_DEBUGFS 373c3d818aSCristian Marussi help 383c3d818aSCristian Marussi Enable support for SCMI Raw transmission mode. 393c3d818aSCristian Marussi 403c3d818aSCristian Marussi If enabled allows the direct injection and snooping of SCMI bare 413c3d818aSCristian Marussi messages through a dedicated debugfs interface. 423c3d818aSCristian Marussi It is meant to be used by SCMI compliance/testing suites. 433c3d818aSCristian Marussi 443c3d818aSCristian Marussi When enabled regular SCMI drivers interactions are inhibited in 453c3d818aSCristian Marussi order to avoid unexpected interactions with the SCMI Raw message 463c3d818aSCristian Marussi flow. If unsure say N. 473c3d818aSCristian Marussi 489c54633eSCristian Marussiconfig ARM_SCMI_RAW_MODE_SUPPORT_COEX 499c54633eSCristian Marussi bool "Allow SCMI Raw mode coexistence with normal SCMI stack" 509c54633eSCristian Marussi depends on ARM_SCMI_RAW_MODE_SUPPORT 519c54633eSCristian Marussi help 529c54633eSCristian Marussi Allow SCMI Raw transmission mode to coexist with normal SCMI stack. 539c54633eSCristian Marussi 549c54633eSCristian Marussi This will allow regular SCMI drivers to register with the core and 559c54633eSCristian Marussi operate normally, thing which could make an SCMI test suite using the 569c54633eSCristian Marussi SCMI Raw mode support unreliable. If unsure, say N. 579c54633eSCristian Marussi 581b18d429SLuke Parkinconfig ARM_SCMI_DEBUG_COUNTERS 591b18d429SLuke Parkin bool "Enable SCMI communication debug metrics tracking" 601b18d429SLuke Parkin select ARM_SCMI_NEED_DEBUGFS 611b18d429SLuke Parkin depends on DEBUG_FS 621b18d429SLuke Parkin default n 631b18d429SLuke Parkin help 641b18d429SLuke Parkin Enables tracking of some key communication metrics for debug 651b18d429SLuke Parkin purposes. It may track metrics like how many messages were sent 661b18d429SLuke Parkin or received, were there any failures, what kind of failures, ..etc. 671b18d429SLuke Parkin 681b18d429SLuke Parkin Enable this option to create a new debugfs directory which contains 691b18d429SLuke Parkin such useful debug counters. This can be helpful for debugging and 701b18d429SLuke Parkin SCMI monitoring. 711b18d429SLuke Parkin 72*b53515faSCristian Marussisource "drivers/firmware/arm_scmi/transports/Kconfig" 73e8419c24SCristian Marussi 745f90f189SEtienne Carriereconfig ARM_SCMI_TRANSPORT_OPTEE 755f90f189SEtienne Carriere bool "SCMI transport based on OP-TEE service" 765f90f189SEtienne Carriere depends on OPTEE=y || OPTEE=ARM_SCMI_PROTOCOL 775f90f189SEtienne Carriere select ARM_SCMI_HAVE_TRANSPORT 785f90f189SEtienne Carriere select ARM_SCMI_HAVE_SHMEM 795e114ad9SEtienne Carriere select ARM_SCMI_HAVE_MSG 805f90f189SEtienne Carriere default y 815f90f189SEtienne Carriere help 825f90f189SEtienne Carriere This enables the OP-TEE service based transport for SCMI. 835f90f189SEtienne Carriere 845f90f189SEtienne Carriere If you want the ARM SCMI PROTOCOL stack to include support for a 855f90f189SEtienne Carriere transport based on OP-TEE SCMI service, answer Y. 865f90f189SEtienne Carriere 87e8419c24SCristian Marussiconfig ARM_SCMI_TRANSPORT_SMC 88e8419c24SCristian Marussi bool "SCMI transport based on SMC" 89e8419c24SCristian Marussi depends on HAVE_ARM_SMCCC_DISCOVERY 90e8419c24SCristian Marussi select ARM_SCMI_HAVE_TRANSPORT 91a7b1138bSIgor Skalkin select ARM_SCMI_HAVE_SHMEM 92e8419c24SCristian Marussi default y 93e8419c24SCristian Marussi help 94e8419c24SCristian Marussi Enable SMC based transport for SCMI. 95e8419c24SCristian Marussi 96e8419c24SCristian Marussi If you want the ARM SCMI PROTOCOL stack to include support for a 97e8419c24SCristian Marussi transport based on SMC, answer Y. 98e8419c24SCristian Marussi 990bfdca8aSCristian Marussiconfig ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE 1000bfdca8aSCristian Marussi bool "Enable atomic mode support for SCMI SMC transport" 1010bfdca8aSCristian Marussi depends on ARM_SCMI_TRANSPORT_SMC 1020bfdca8aSCristian Marussi help 1030bfdca8aSCristian Marussi Enable support of atomic operation for SCMI SMC based transport. 1040bfdca8aSCristian Marussi 1050bfdca8aSCristian Marussi If you want the SCMI SMC based transport to operate in atomic 1060bfdca8aSCristian Marussi mode, avoiding any kind of sleeping behaviour for selected 1070bfdca8aSCristian Marussi transactions on the TX path, answer Y. 1080bfdca8aSCristian Marussi Enabling atomic mode operations allows any SCMI driver using this 1090bfdca8aSCristian Marussi transport to optionally ask for atomic SCMI transactions and operate 1100bfdca8aSCristian Marussi in atomic context too, at the price of using a number of busy-waiting 1110bfdca8aSCristian Marussi primitives all over instead. If unsure say N. 1120bfdca8aSCristian Marussi 11346abe13bSIgor Skalkinconfig ARM_SCMI_TRANSPORT_VIRTIO 11446abe13bSIgor Skalkin bool "SCMI transport based on VirtIO" 115c90521a0SCristian Marussi depends on VIRTIO=y || VIRTIO=ARM_SCMI_PROTOCOL 11646abe13bSIgor Skalkin select ARM_SCMI_HAVE_TRANSPORT 11746abe13bSIgor Skalkin select ARM_SCMI_HAVE_MSG 11846abe13bSIgor Skalkin help 11946abe13bSIgor Skalkin This enables the virtio based transport for SCMI. 12046abe13bSIgor Skalkin 12146abe13bSIgor Skalkin If you want the ARM SCMI PROTOCOL stack to include support for a 12246abe13bSIgor Skalkin transport based on VirtIO, answer Y. 12346abe13bSIgor Skalkin 124530897ecSCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE 125530897ecSCristian Marussi bool "SCMI VirtIO transport Version 1 compliance" 126530897ecSCristian Marussi depends on ARM_SCMI_TRANSPORT_VIRTIO 127530897ecSCristian Marussi default y 128530897ecSCristian Marussi help 129530897ecSCristian Marussi This enforces strict compliance with VirtIO Version 1 specification. 130530897ecSCristian Marussi 131530897ecSCristian Marussi If you want the ARM SCMI VirtIO transport layer to refuse to work 132530897ecSCristian Marussi with Legacy VirtIO backends and instead support only VirtIO Version 1 133530897ecSCristian Marussi devices (or above), answer Y. 134530897ecSCristian Marussi 135530897ecSCristian Marussi If you want instead to support also old Legacy VirtIO backends (like 136530897ecSCristian Marussi the ones implemented by kvmtool) and let the core Kernel VirtIO layer 137530897ecSCristian Marussi take care of the needed conversions, say N. 138530897ecSCristian Marussi 1395a3b7185SCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO_ATOMIC_ENABLE 1405a3b7185SCristian Marussi bool "Enable atomic mode for SCMI VirtIO transport" 1415a3b7185SCristian Marussi depends on ARM_SCMI_TRANSPORT_VIRTIO 1425a3b7185SCristian Marussi help 1435a3b7185SCristian Marussi Enable support of atomic operation for SCMI VirtIO based transport. 1445a3b7185SCristian Marussi 1455a3b7185SCristian Marussi If you want the SCMI VirtIO based transport to operate in atomic 1465a3b7185SCristian Marussi mode, avoiding any kind of sleeping behaviour for selected 1475a3b7185SCristian Marussi transactions on the TX path, answer Y. 1485a3b7185SCristian Marussi 1495a3b7185SCristian Marussi Enabling atomic mode operations allows any SCMI driver using this 1505a3b7185SCristian Marussi transport to optionally ask for atomic SCMI transactions and operate 1515a3b7185SCristian Marussi in atomic context too, at the price of using a number of busy-waiting 1525a3b7185SCristian Marussi primitives all over instead. If unsure say N. 1535a3b7185SCristian Marussi 154e8419c24SCristian Marussiendif #ARM_SCMI_PROTOCOL 155e8419c24SCristian Marussi 1562c4b97feSCristian Marussiconfig ARM_SCMI_POWER_CONTROL 1572c4b97feSCristian Marussi tristate "SCMI system power control driver" 1582c4b97feSCristian Marussi depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) 1592c4b97feSCristian Marussi help 1602c4b97feSCristian Marussi This enables System Power control logic which binds system shutdown or 1612c4b97feSCristian Marussi reboot actions to SCMI System Power notifications generated by SCP 1622c4b97feSCristian Marussi firmware. 1632c4b97feSCristian Marussi 1642c4b97feSCristian Marussi This driver can also be built as a module. If so, the module will be 1652c4b97feSCristian Marussi called scmi_power_control. Note this may needed early in boot to catch 1662c4b97feSCristian Marussi early shutdown/reboot SCMI requests. 1672c4b97feSCristian Marussi 168e8419c24SCristian Marussiendmenu 169