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