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