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
48*9c54633eSCristian Marussiconfig ARM_SCMI_RAW_MODE_SUPPORT_COEX
49*9c54633eSCristian Marussi	bool "Allow SCMI Raw mode coexistence with normal SCMI stack"
50*9c54633eSCristian Marussi	depends on ARM_SCMI_RAW_MODE_SUPPORT
51*9c54633eSCristian Marussi	help
52*9c54633eSCristian Marussi	  Allow SCMI Raw transmission mode to coexist with normal SCMI stack.
53*9c54633eSCristian Marussi
54*9c54633eSCristian Marussi	  This will allow regular SCMI drivers to register with the core and
55*9c54633eSCristian Marussi	  operate normally, thing which could make an SCMI test suite using the
56*9c54633eSCristian Marussi	  SCMI Raw mode support unreliable. If unsure, say N.
57*9c54633eSCristian Marussi
58e8419c24SCristian Marussiconfig ARM_SCMI_HAVE_TRANSPORT
59e8419c24SCristian Marussi	bool
60e8419c24SCristian Marussi	help
61e8419c24SCristian Marussi	  This declares whether at least one SCMI transport has been configured.
62e8419c24SCristian Marussi	  Used to trigger a build bug when trying to build SCMI without any
63e8419c24SCristian Marussi	  configured transport.
64e8419c24SCristian Marussi
65a7b1138bSIgor Skalkinconfig ARM_SCMI_HAVE_SHMEM
66a7b1138bSIgor Skalkin	bool
67a7b1138bSIgor Skalkin	help
68a7b1138bSIgor Skalkin	  This declares whether a shared memory based transport for SCMI is
69a7b1138bSIgor Skalkin	  available.
70a7b1138bSIgor Skalkin
71f301bba0SPeter Hilberconfig ARM_SCMI_HAVE_MSG
72f301bba0SPeter Hilber	bool
73f301bba0SPeter Hilber	help
74f301bba0SPeter Hilber	  This declares whether a message passing based transport for SCMI is
75f301bba0SPeter Hilber	  available.
76f301bba0SPeter Hilber
77e8419c24SCristian Marussiconfig ARM_SCMI_TRANSPORT_MAILBOX
78e8419c24SCristian Marussi	bool "SCMI transport based on Mailbox"
79e8419c24SCristian Marussi	depends on MAILBOX
80e8419c24SCristian Marussi	select ARM_SCMI_HAVE_TRANSPORT
81a7b1138bSIgor Skalkin	select ARM_SCMI_HAVE_SHMEM
82e8419c24SCristian Marussi	default y
83e8419c24SCristian Marussi	help
84e8419c24SCristian Marussi	  Enable mailbox based transport for SCMI.
85e8419c24SCristian Marussi
86e8419c24SCristian Marussi	  If you want the ARM SCMI PROTOCOL stack to include support for a
87e8419c24SCristian Marussi	  transport based on mailboxes, answer Y.
88e8419c24SCristian Marussi
895f90f189SEtienne Carriereconfig ARM_SCMI_TRANSPORT_OPTEE
905f90f189SEtienne Carriere	bool "SCMI transport based on OP-TEE service"
915f90f189SEtienne Carriere	depends on OPTEE=y || OPTEE=ARM_SCMI_PROTOCOL
925f90f189SEtienne Carriere	select ARM_SCMI_HAVE_TRANSPORT
935f90f189SEtienne Carriere	select ARM_SCMI_HAVE_SHMEM
945e114ad9SEtienne Carriere	select ARM_SCMI_HAVE_MSG
955f90f189SEtienne Carriere	default y
965f90f189SEtienne Carriere	help
975f90f189SEtienne Carriere	  This enables the OP-TEE service based transport for SCMI.
985f90f189SEtienne Carriere
995f90f189SEtienne Carriere	  If you want the ARM SCMI PROTOCOL stack to include support for a
1005f90f189SEtienne Carriere	  transport based on OP-TEE SCMI service, answer Y.
1015f90f189SEtienne Carriere
102e8419c24SCristian Marussiconfig ARM_SCMI_TRANSPORT_SMC
103e8419c24SCristian Marussi	bool "SCMI transport based on SMC"
104e8419c24SCristian Marussi	depends on HAVE_ARM_SMCCC_DISCOVERY
105e8419c24SCristian Marussi	select ARM_SCMI_HAVE_TRANSPORT
106a7b1138bSIgor Skalkin	select ARM_SCMI_HAVE_SHMEM
107e8419c24SCristian Marussi	default y
108e8419c24SCristian Marussi	help
109e8419c24SCristian Marussi	  Enable SMC based transport for SCMI.
110e8419c24SCristian Marussi
111e8419c24SCristian Marussi	  If you want the ARM SCMI PROTOCOL stack to include support for a
112e8419c24SCristian Marussi	  transport based on SMC, answer Y.
113e8419c24SCristian Marussi
1140bfdca8aSCristian Marussiconfig ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE
1150bfdca8aSCristian Marussi	bool "Enable atomic mode support for SCMI SMC transport"
1160bfdca8aSCristian Marussi	depends on ARM_SCMI_TRANSPORT_SMC
1170bfdca8aSCristian Marussi	help
1180bfdca8aSCristian Marussi	  Enable support of atomic operation for SCMI SMC based transport.
1190bfdca8aSCristian Marussi
1200bfdca8aSCristian Marussi	  If you want the SCMI SMC based transport to operate in atomic
1210bfdca8aSCristian Marussi	  mode, avoiding any kind of sleeping behaviour for selected
1220bfdca8aSCristian Marussi	  transactions on the TX path, answer Y.
1230bfdca8aSCristian Marussi	  Enabling atomic mode operations allows any SCMI driver using this
1240bfdca8aSCristian Marussi	  transport to optionally ask for atomic SCMI transactions and operate
1250bfdca8aSCristian Marussi	  in atomic context too, at the price of using a number of busy-waiting
1260bfdca8aSCristian Marussi	  primitives all over instead. If unsure say N.
1270bfdca8aSCristian Marussi
12846abe13bSIgor Skalkinconfig ARM_SCMI_TRANSPORT_VIRTIO
12946abe13bSIgor Skalkin	bool "SCMI transport based on VirtIO"
130c90521a0SCristian Marussi	depends on VIRTIO=y || VIRTIO=ARM_SCMI_PROTOCOL
13146abe13bSIgor Skalkin	select ARM_SCMI_HAVE_TRANSPORT
13246abe13bSIgor Skalkin	select ARM_SCMI_HAVE_MSG
13346abe13bSIgor Skalkin	help
13446abe13bSIgor Skalkin	  This enables the virtio based transport for SCMI.
13546abe13bSIgor Skalkin
13646abe13bSIgor Skalkin	  If you want the ARM SCMI PROTOCOL stack to include support for a
13746abe13bSIgor Skalkin	  transport based on VirtIO, answer Y.
13846abe13bSIgor Skalkin
139530897ecSCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE
140530897ecSCristian Marussi	bool "SCMI VirtIO transport Version 1 compliance"
141530897ecSCristian Marussi	depends on ARM_SCMI_TRANSPORT_VIRTIO
142530897ecSCristian Marussi	default y
143530897ecSCristian Marussi	help
144530897ecSCristian Marussi	  This enforces strict compliance with VirtIO Version 1 specification.
145530897ecSCristian Marussi
146530897ecSCristian Marussi	  If you want the ARM SCMI VirtIO transport layer to refuse to work
147530897ecSCristian Marussi	  with Legacy VirtIO backends and instead support only VirtIO Version 1
148530897ecSCristian Marussi	  devices (or above), answer Y.
149530897ecSCristian Marussi
150530897ecSCristian Marussi	  If you want instead to support also old Legacy VirtIO backends (like
151530897ecSCristian Marussi	  the ones implemented by kvmtool) and let the core Kernel VirtIO layer
152530897ecSCristian Marussi	  take care of the needed conversions, say N.
153530897ecSCristian Marussi
1545a3b7185SCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO_ATOMIC_ENABLE
1555a3b7185SCristian Marussi	bool "Enable atomic mode for SCMI VirtIO transport"
1565a3b7185SCristian Marussi	depends on ARM_SCMI_TRANSPORT_VIRTIO
1575a3b7185SCristian Marussi	help
1585a3b7185SCristian Marussi	  Enable support of atomic operation for SCMI VirtIO based transport.
1595a3b7185SCristian Marussi
1605a3b7185SCristian Marussi	  If you want the SCMI VirtIO based transport to operate in atomic
1615a3b7185SCristian Marussi	  mode, avoiding any kind of sleeping behaviour for selected
1625a3b7185SCristian Marussi	  transactions on the TX path, answer Y.
1635a3b7185SCristian Marussi
1645a3b7185SCristian Marussi	  Enabling atomic mode operations allows any SCMI driver using this
1655a3b7185SCristian Marussi	  transport to optionally ask for atomic SCMI transactions and operate
1665a3b7185SCristian Marussi	  in atomic context too, at the price of using a number of busy-waiting
1675a3b7185SCristian Marussi	  primitives all over instead. If unsure say N.
1685a3b7185SCristian Marussi
169e8419c24SCristian Marussiendif #ARM_SCMI_PROTOCOL
170e8419c24SCristian Marussi
171e8419c24SCristian Marussiconfig ARM_SCMI_POWER_DOMAIN
172e8419c24SCristian Marussi	tristate "SCMI power domain driver"
173e8419c24SCristian Marussi	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
174e8419c24SCristian Marussi	default y
175e8419c24SCristian Marussi	select PM_GENERIC_DOMAINS if PM
176e8419c24SCristian Marussi	help
177e8419c24SCristian Marussi	  This enables support for the SCMI power domains which can be
178e8419c24SCristian Marussi	  enabled or disabled via the SCP firmware
179e8419c24SCristian Marussi
180e8419c24SCristian Marussi	  This driver can also be built as a module.  If so, the module
181e8419c24SCristian Marussi	  will be called scmi_pm_domain. Note this may needed early in boot
182e8419c24SCristian Marussi	  before rootfs may be available.
183e8419c24SCristian Marussi
1842c4b97feSCristian Marussiconfig ARM_SCMI_POWER_CONTROL
1852c4b97feSCristian Marussi	tristate "SCMI system power control driver"
1862c4b97feSCristian Marussi	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
1872c4b97feSCristian Marussi	help
1882c4b97feSCristian Marussi	  This enables System Power control logic which binds system shutdown or
1892c4b97feSCristian Marussi	  reboot actions to SCMI System Power notifications generated by SCP
1902c4b97feSCristian Marussi	  firmware.
1912c4b97feSCristian Marussi
1922c4b97feSCristian Marussi	  This driver can also be built as a module.  If so, the module will be
1932c4b97feSCristian Marussi	  called scmi_power_control. Note this may needed early in boot to catch
1942c4b97feSCristian Marussi	  early shutdown/reboot SCMI requests.
1952c4b97feSCristian Marussi
196e8419c24SCristian Marussiendmenu
197