Merge tag 'defconfig-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / drivers / firmware / arm_scmi / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "ARM System Control and Management Interface Protocol"
3
4 config ARM_SCMI_PROTOCOL
5         tristate "ARM System Control and Management Interface (SCMI) Message Protocol"
6         depends on ARM || ARM64 || COMPILE_TEST
7         help
8           ARM System Control and Management Interface (SCMI) protocol is a
9           set of operating system-independent software interfaces that are
10           used in system management. SCMI is extensible and currently provides
11           interfaces for: Discovery and self-description of the interfaces
12           it supports, Power domain management which is the ability to place
13           a given device or domain into the various power-saving states that
14           it supports, Performance management which is the ability to control
15           the performance of a domain that is composed of compute engines
16           such as application processors and other accelerators, Clock
17           management which is the ability to set and inquire rates on platform
18           managed clocks and Sensor management which is the ability to read
19           sensor data, and be notified of sensor value.
20
21           This protocol library provides interface for all the client drivers
22           making use of the features offered by the SCMI.
23
24 if ARM_SCMI_PROTOCOL
25
26 config ARM_SCMI_HAVE_TRANSPORT
27         bool
28         help
29           This declares whether at least one SCMI transport has been configured.
30           Used to trigger a build bug when trying to build SCMI without any
31           configured transport.
32
33 config ARM_SCMI_HAVE_SHMEM
34         bool
35         help
36           This declares whether a shared memory based transport for SCMI is
37           available.
38
39 config ARM_SCMI_HAVE_MSG
40         bool
41         help
42           This declares whether a message passing based transport for SCMI is
43           available.
44
45 config ARM_SCMI_TRANSPORT_MAILBOX
46         bool "SCMI transport based on Mailbox"
47         depends on MAILBOX
48         select ARM_SCMI_HAVE_TRANSPORT
49         select ARM_SCMI_HAVE_SHMEM
50         default y
51         help
52           Enable mailbox based transport for SCMI.
53
54           If you want the ARM SCMI PROTOCOL stack to include support for a
55           transport based on mailboxes, answer Y.
56
57 config ARM_SCMI_TRANSPORT_SMC
58         bool "SCMI transport based on SMC"
59         depends on HAVE_ARM_SMCCC_DISCOVERY
60         select ARM_SCMI_HAVE_TRANSPORT
61         select ARM_SCMI_HAVE_SHMEM
62         default y
63         help
64           Enable SMC based transport for SCMI.
65
66           If you want the ARM SCMI PROTOCOL stack to include support for a
67           transport based on SMC, answer Y.
68
69 config ARM_SCMI_TRANSPORT_VIRTIO
70         bool "SCMI transport based on VirtIO"
71         depends on VIRTIO
72         select ARM_SCMI_HAVE_TRANSPORT
73         select ARM_SCMI_HAVE_MSG
74         help
75           This enables the virtio based transport for SCMI.
76
77           If you want the ARM SCMI PROTOCOL stack to include support for a
78           transport based on VirtIO, answer Y.
79
80 endif #ARM_SCMI_PROTOCOL
81
82 config ARM_SCMI_POWER_DOMAIN
83         tristate "SCMI power domain driver"
84         depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
85         default y
86         select PM_GENERIC_DOMAINS if PM
87         help
88           This enables support for the SCMI power domains which can be
89           enabled or disabled via the SCP firmware
90
91           This driver can also be built as a module.  If so, the module
92           will be called scmi_pm_domain. Note this may needed early in boot
93           before rootfs may be available.
94
95 endmenu