xref: /linux/drivers/firmware/arm_scmi/transports/Kconfig (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1b53515faSCristian Marussi# SPDX-License-Identifier: GPL-2.0-only
2b53515faSCristian Marussimenu "SCMI Transport Drivers"
3b53515faSCristian Marussi
4b53515faSCristian Marussiconfig ARM_SCMI_HAVE_TRANSPORT
5b53515faSCristian Marussi	bool
6b53515faSCristian Marussi	help
7b53515faSCristian Marussi	  This declares whether at least one SCMI transport has been configured.
8b53515faSCristian Marussi	  Used to trigger a build bug when trying to build SCMI without any
9b53515faSCristian Marussi	  configured transport.
10b53515faSCristian Marussi
11b53515faSCristian Marussiconfig ARM_SCMI_HAVE_SHMEM
12b53515faSCristian Marussi	bool
13b53515faSCristian Marussi	help
14b53515faSCristian Marussi	  This declares whether a shared memory based transport for SCMI is
15b53515faSCristian Marussi	  available.
16b53515faSCristian Marussi
17b53515faSCristian Marussiconfig ARM_SCMI_HAVE_MSG
18b53515faSCristian Marussi	bool
19b53515faSCristian Marussi	help
20b53515faSCristian Marussi	  This declares whether a message passing based transport for SCMI is
21b53515faSCristian Marussi	  available.
22b53515faSCristian Marussi
23b53515faSCristian Marussiconfig ARM_SCMI_TRANSPORT_MAILBOX
24b53515faSCristian Marussi	tristate "SCMI transport based on Mailbox"
25b53515faSCristian Marussi	depends on MAILBOX
26b53515faSCristian Marussi	select ARM_SCMI_HAVE_TRANSPORT
27b53515faSCristian Marussi	select ARM_SCMI_HAVE_SHMEM
28b53515faSCristian Marussi	default y
29b53515faSCristian Marussi	help
30b53515faSCristian Marussi	  Enable mailbox based transport for SCMI.
31b53515faSCristian Marussi
32b53515faSCristian Marussi	  If you want the ARM SCMI PROTOCOL stack to include support for a
33b53515faSCristian Marussi	  transport based on mailboxes, answer Y.
34b53515faSCristian Marussi	  This driver can also be built as a module. If so, the module
35b53515faSCristian Marussi	  will be called scmi_transport_mailbox.
36b53515faSCristian Marussi
37a4175950SCristian Marussiconfig ARM_SCMI_TRANSPORT_SMC
38a4175950SCristian Marussi	tristate "SCMI transport based on SMC"
39a4175950SCristian Marussi	depends on HAVE_ARM_SMCCC_DISCOVERY
40a4175950SCristian Marussi	select ARM_SCMI_HAVE_TRANSPORT
41a4175950SCristian Marussi	select ARM_SCMI_HAVE_SHMEM
42a4175950SCristian Marussi	default y
43a4175950SCristian Marussi	help
44a4175950SCristian Marussi	  Enable SMC based transport for SCMI.
45a4175950SCristian Marussi
46a4175950SCristian Marussi	  If you want the ARM SCMI PROTOCOL stack to include support for a
47a4175950SCristian Marussi	  transport based on SMC, answer Y.
48a4175950SCristian Marussi	  This driver can also be built as a module. If so, the module
49a4175950SCristian Marussi	  will be called scmi_transport_smc.
50a4175950SCristian Marussi
51a4175950SCristian Marussiconfig ARM_SCMI_TRANSPORT_SMC_ATOMIC_ENABLE
52a4175950SCristian Marussi	bool "Enable atomic mode support for SCMI SMC transport"
53a4175950SCristian Marussi	depends on ARM_SCMI_TRANSPORT_SMC
54a4175950SCristian Marussi	help
55a4175950SCristian Marussi	  Enable support of atomic operation for SCMI SMC based transport.
56a4175950SCristian Marussi
57a4175950SCristian Marussi	  If you want the SCMI SMC based transport to operate in atomic
58a4175950SCristian Marussi	  mode, avoiding any kind of sleeping behaviour for selected
59a4175950SCristian Marussi	  transactions on the TX path, answer Y.
60a4175950SCristian Marussi	  Enabling atomic mode operations allows any SCMI driver using this
61a4175950SCristian Marussi	  transport to optionally ask for atomic SCMI transactions and operate
62a4175950SCristian Marussi	  in atomic context too, at the price of using a number of busy-waiting
63a4175950SCristian Marussi	  primitives all over instead. If unsure say N.
64a4175950SCristian Marussi
65db9cc5e6SCristian Marussiconfig ARM_SCMI_TRANSPORT_OPTEE
66db9cc5e6SCristian Marussi	tristate "SCMI transport based on OP-TEE service"
67db9cc5e6SCristian Marussi	depends on OPTEE
68db9cc5e6SCristian Marussi	select ARM_SCMI_HAVE_TRANSPORT
69db9cc5e6SCristian Marussi	select ARM_SCMI_HAVE_SHMEM
70db9cc5e6SCristian Marussi	select ARM_SCMI_HAVE_MSG
71db9cc5e6SCristian Marussi	default y
72db9cc5e6SCristian Marussi	help
73db9cc5e6SCristian Marussi	  This enables the OP-TEE service based transport for SCMI.
74db9cc5e6SCristian Marussi
75db9cc5e6SCristian Marussi	  If you want the ARM SCMI PROTOCOL stack to include support for a
76db9cc5e6SCristian Marussi	  transport based on OP-TEE SCMI service, answer Y.
77db9cc5e6SCristian Marussi	  This driver can also be built as a module. If so, the module
78db9cc5e6SCristian Marussi	  will be called scmi_transport_optee.
79db9cc5e6SCristian Marussi
80*20bda12aSCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO
81*20bda12aSCristian Marussi	tristate "SCMI transport based on VirtIO"
82*20bda12aSCristian Marussi	depends on VIRTIO
83*20bda12aSCristian Marussi	select ARM_SCMI_HAVE_TRANSPORT
84*20bda12aSCristian Marussi	select ARM_SCMI_HAVE_MSG
85*20bda12aSCristian Marussi	help
86*20bda12aSCristian Marussi	  This enables the virtio based transport for SCMI.
87*20bda12aSCristian Marussi
88*20bda12aSCristian Marussi	  If you want the ARM SCMI PROTOCOL stack to include support for a
89*20bda12aSCristian Marussi	  transport based on VirtIO, answer Y.
90*20bda12aSCristian Marussi	  This driver can also be built as a module. If so, the module
91*20bda12aSCristian Marussi	  will be called scmi_transport_virtio.
92*20bda12aSCristian Marussi
93*20bda12aSCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO_VERSION1_COMPLIANCE
94*20bda12aSCristian Marussi	bool "SCMI VirtIO transport Version 1 compliance"
95*20bda12aSCristian Marussi	depends on ARM_SCMI_TRANSPORT_VIRTIO
96*20bda12aSCristian Marussi	default y
97*20bda12aSCristian Marussi	help
98*20bda12aSCristian Marussi	  This enforces strict compliance with VirtIO Version 1 specification.
99*20bda12aSCristian Marussi
100*20bda12aSCristian Marussi	  If you want the ARM SCMI VirtIO transport layer to refuse to work
101*20bda12aSCristian Marussi	  with Legacy VirtIO backends and instead support only VirtIO Version 1
102*20bda12aSCristian Marussi	  devices (or above), answer Y.
103*20bda12aSCristian Marussi
104*20bda12aSCristian Marussi	  If you want instead to support also old Legacy VirtIO backends (like
105*20bda12aSCristian Marussi	  the ones implemented by kvmtool) and let the core Kernel VirtIO layer
106*20bda12aSCristian Marussi	  take care of the needed conversions, say N.
107*20bda12aSCristian Marussi
108*20bda12aSCristian Marussiconfig ARM_SCMI_TRANSPORT_VIRTIO_ATOMIC_ENABLE
109*20bda12aSCristian Marussi	bool "Enable atomic mode for SCMI VirtIO transport"
110*20bda12aSCristian Marussi	depends on ARM_SCMI_TRANSPORT_VIRTIO
111*20bda12aSCristian Marussi	help
112*20bda12aSCristian Marussi	  Enable support of atomic operation for SCMI VirtIO based transport.
113*20bda12aSCristian Marussi
114*20bda12aSCristian Marussi	  If you want the SCMI VirtIO based transport to operate in atomic
115*20bda12aSCristian Marussi	  mode, avoiding any kind of sleeping behaviour for selected
116*20bda12aSCristian Marussi	  transactions on the TX path, answer Y.
117*20bda12aSCristian Marussi
118*20bda12aSCristian Marussi	  Enabling atomic mode operations allows any SCMI driver using this
119*20bda12aSCristian Marussi	  transport to optionally ask for atomic SCMI transactions and operate
120*20bda12aSCristian Marussi	  in atomic context too, at the price of using a number of busy-waiting
121*20bda12aSCristian Marussi	  primitives all over instead. If unsure say N.
122*20bda12aSCristian Marussi
123b53515faSCristian Marussiendmenu
124