Kconfig 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. menu "ARM System Control and Management Interface Protocol"
  3. config ARM_SCMI_PROTOCOL
  4. tristate "ARM System Control and Management Interface (SCMI) Message Protocol"
  5. depends on ARM || ARM64 || COMPILE_TEST
  6. help
  7. ARM System Control and Management Interface (SCMI) protocol is a
  8. set of operating system-independent software interfaces that are
  9. used in system management. SCMI is extensible and currently provides
  10. interfaces for: Discovery and self-description of the interfaces
  11. it supports, Power domain management which is the ability to place
  12. a given device or domain into the various power-saving states that
  13. it supports, Performance management which is the ability to control
  14. the performance of a domain that is composed of compute engines
  15. such as application processors and other accelerators, Clock
  16. management which is the ability to set and inquire rates on platform
  17. managed clocks and Sensor management which is the ability to read
  18. sensor data, and be notified of sensor value.
  19. This protocol library provides interface for all the client drivers
  20. making use of the features offered by the SCMI.
  21. if ARM_SCMI_PROTOCOL
  22. config ARM_SCMI_HAVE_TRANSPORT
  23. bool
  24. help
  25. This declares whether at least one SCMI transport has been configured.
  26. Used to trigger a build bug when trying to build SCMI without any
  27. configured transport.
  28. config ARM_SCMI_HAVE_SHMEM
  29. bool
  30. help
  31. This declares whether a shared memory based transport for SCMI is
  32. available.
  33. config ARM_SCMI_HAVE_MSG
  34. bool
  35. help
  36. This declares whether a message passing based transport for SCMI is
  37. available.
  38. config ARM_SCMI_TRANSPORT_MAILBOX
  39. bool "SCMI transport based on Mailbox"
  40. depends on MAILBOX
  41. select ARM_SCMI_HAVE_TRANSPORT
  42. select ARM_SCMI_HAVE_SHMEM
  43. default y
  44. help
  45. Enable mailbox based transport for SCMI.
  46. If you want the ARM SCMI PROTOCOL stack to include support for a
  47. transport based on mailboxes, answer Y.
  48. config ARM_SCMI_TRANSPORT_OPTEE
  49. bool "SCMI transport based on OP-TEE service"
  50. depends on OPTEE=y || OPTEE=ARM_SCMI_PROTOCOL
  51. select ARM_SCMI_HAVE_TRANSPORT
  52. select ARM_SCMI_HAVE_SHMEM
  53. select ARM_SCMI_HAVE_MSG
  54. default y
  55. help
  56. This enables the OP-TEE service based transport for SCMI.
  57. If you want the ARM SCMI PROTOCOL stack to include support for a
  58. transport based on OP-TEE SCMI service, answer Y.
  59. config ARM_SCMI_TRANSPORT_SMC
  60. bool "SCMI transport based on SMC"
  61. depends on HAVE_ARM_SMCCC_DISCOVERY
  62. select ARM_SCMI_HAVE_TRANSPORT
  63. select ARM_SCMI_HAVE_SHMEM
  64. default y
  65. help
  66. Enable SMC based transport for SCMI.
  67. If you want the ARM SCMI PROTOCOL stack to include support for a
  68. transport based on SMC, answer Y.
  69. config ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE
  70. bool "Enable atomic mode support for SCMI SMC transport"
  71. depends on ARM_SCMI_TRANSPORT_SMC
  72. help
  73. Enable support of atomic operation for SCMI SMC based transport.
  74. If you want the SCMI SMC based transport to operate in atomic
  75. mode, avoiding any kind of sleeping behaviour for selected
  76. transactions on the TX path, answer Y.
  77. Enabling atomic mode operations allows any SCMI driver using this
  78. transport to optionally ask for atomic SCMI transactions and operate
  79. in atomic context too, at the price of using a number of busy-waiting
  80. primitives all over instead. If unsure say N.
  81. config ARM_SCMI_TRANSPORT_VIRTIO
  82. bool "SCMI transport based on VirtIO"
  83. depends on VIRTIO=y || VIRTIO=ARM_SCMI_PROTOCOL
  84. select ARM_SCMI_HAVE_TRANSPORT
  85. select ARM_SCMI_HAVE_MSG
  86. help
  87. This enables the virtio based transport for SCMI.
  88. If you want the ARM SCMI PROTOCOL stack to include support for a
  89. transport based on VirtIO, answer Y.
  90. config ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE
  91. bool "SCMI VirtIO transport Version 1 compliance"
  92. depends on ARM_SCMI_TRANSPORT_VIRTIO
  93. default y
  94. help
  95. This enforces strict compliance with VirtIO Version 1 specification.
  96. If you want the ARM SCMI VirtIO transport layer to refuse to work
  97. with Legacy VirtIO backends and instead support only VirtIO Version 1
  98. devices (or above), answer Y.
  99. If you want instead to support also old Legacy VirtIO backends (like
  100. the ones implemented by kvmtool) and let the core Kernel VirtIO layer
  101. take care of the needed conversions, say N.
  102. config ARM_SCMI_TRANSPORT_VIRTIO_ATOMIC_ENABLE
  103. bool "Enable atomic mode for SCMI VirtIO transport"
  104. depends on ARM_SCMI_TRANSPORT_VIRTIO
  105. help
  106. Enable support of atomic operation for SCMI VirtIO based transport.
  107. If you want the SCMI VirtIO based transport to operate in atomic
  108. mode, avoiding any kind of sleeping behaviour for selected
  109. transactions on the TX path, answer Y.
  110. Enabling atomic mode operations allows any SCMI driver using this
  111. transport to optionally ask for atomic SCMI transactions and operate
  112. in atomic context too, at the price of using a number of busy-waiting
  113. primitives all over instead. If unsure say N.
  114. config QTI_SCMI_PMU_PROTOCOL
  115. tristate "Qualcomm Technologies, Inc. SCMI PMU vendor Protocol"
  116. depends on ARM || ARM64 || COMPILE_TEST
  117. depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
  118. help
  119. System Control and Management Interface (SCMI) pmu vendor protocol.
  120. This protocol provides interface to communicate with micro controller
  121. which maintains the PMU configuration for multiple clients.
  122. This driver defines the commands or message ID's used for this
  123. communication and also exposes the ops used by clients.
  124. config QTI_SCMI_VENDOR_PROTOCOL
  125. tristate "Qualcomm Technologies, Inc. Qcom SCMI vendor Protocol"
  126. depends on ARM || ARM64 || COMPILE_TEST
  127. depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
  128. help
  129. System Control and Management Interface (SCMI) Qcom vendor protocol.
  130. This protocol provides interface to communicate with micro controller.
  131. This driver defines the commands or message ID's used for this
  132. communication and also exposes the ops used by clients.
  133. config QTI_SCMI_C1DCVS_PROTOCOL
  134. tristate "Qualcomm Technologies, Inc. SCMI C1DCVS vendor Protocol"
  135. depends on ARM || ARM64 || COMPILE_TEST
  136. depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
  137. help
  138. System Control and Management Interface (SCMI) c1dcvs vendor protocol.
  139. This protocol provides interface to communicate with micro controller
  140. which maintains the c1dcvs algorithm.
  141. This driver defines the comands or message ID's used for this
  142. communication and also exposes the ops used by clients.
  143. config QTI_SCMI_PLH_PROTOCOL
  144. tristate "Qualcomm Technologies, Inc. SCMI PLH vendor Protocol"
  145. depends on ARM_SCMI_PROTOCOL && QCOM_CPUCP
  146. help
  147. System Control and Management Interface (SCMI) plh vendor protocol
  148. this protocol provides interface to communicate with micro controller
  149. which is executing the plh algorithm.
  150. This driver defines the comands or message ID's used for this
  151. communication and also exposes the ops used by clients.
  152. endif #ARM_SCMI_PROTOCOL
  153. config ARM_SCMI_POWER_DOMAIN
  154. tristate "SCMI power domain driver"
  155. depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
  156. default y
  157. select PM_GENERIC_DOMAINS if PM
  158. help
  159. This enables support for the SCMI power domains which can be
  160. enabled or disabled via the SCP firmware
  161. This driver can also be built as a module. If so, the module
  162. will be called scmi_pm_domain. Note this may needed early in boot
  163. before rootfs may be available.
  164. config ARM_SCMI_POWER_CONTROL
  165. tristate "SCMI system power control driver"
  166. depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
  167. help
  168. This enables System Power control logic which binds system shutdown or
  169. reboot actions to SCMI System Power notifications generated by SCP
  170. firmware.
  171. This driver can also be built as a module. If so, the module will be
  172. called scmi_power_control. Note this may needed early in boot to catch
  173. early shutdown/reboot SCMI requests.
  174. endmenu