From 45db55111393ee74ed9943b682de8e5cbbb636ac Mon Sep 17 00:00:00 2001 From: Andriy Tryshnivskyy Date: Mon, 4 Oct 2021 20:31:34 +0300 Subject: virtualization/linux-yocto: Backport virtio SCMI driver. This patch series is a "RFC v2" implementation of a driver for virtio SCMI device [1]. [1]: https://github.com/oasis-tcs/virtio-spec/blob/master/virtio-scmi.tex Bug-AGL: SPEC-3865 Upstream-Status: Submitted [https://lore.kernel.org/linux-arm-kernel/20201105212116.411422-1-peter.hilber@opensynergy.com/] Signed-off-by: Andriy Tryshnivskyy Change-Id: I653cb44769232ae5434bd54169910fd0518f1db8 --- ...m_scmi-smccc-mailbox-Make-shmem-based-tra.patch | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-scmi/0001-firmware-arm_scmi-smccc-mailbox-Make-shmem-based-tra.patch (limited to 'meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-scmi/0001-firmware-arm_scmi-smccc-mailbox-Make-shmem-based-tra.patch') diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-scmi/0001-firmware-arm_scmi-smccc-mailbox-Make-shmem-based-tra.patch b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-scmi/0001-firmware-arm_scmi-smccc-mailbox-Make-shmem-based-tra.patch new file mode 100644 index 00000000..3d9d0fdb --- /dev/null +++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/virtio-scmi/0001-firmware-arm_scmi-smccc-mailbox-Make-shmem-based-tra.patch @@ -0,0 +1,119 @@ +From 36269e8f5fa1f33a793c472935affe3039c052bd Mon Sep 17 00:00:00 2001 +From: Igor Skalkin +Date: Thu, 5 Nov 2020 22:21:07 +0100 +Subject: [PATCH] firmware: arm_scmi, smccc, mailbox: Make shmem based + transports optional + +Upon adding the virtio transport in this patch series, SCMI will also +work without shared memory based transports. Also, the mailbox transport +may not be needed if the smc transport is used. + +- Compile shmem.c only if a shmem based transport is available. + +- Remove hard dependency of SCMI on mailbox. + +Co-developed-by: Peter Hilber +Signed-off-by: Peter Hilber +Signed-off-by: Igor Skalkin +Signed-off-by: Vasyl Vavrychuk +--- + drivers/firmware/Kconfig | 9 ++++++++- + drivers/firmware/arm_scmi/Makefile | 2 +- + drivers/firmware/arm_scmi/common.h | 2 ++ + drivers/firmware/arm_scmi/driver.c | 2 ++ + drivers/firmware/smccc/Kconfig | 1 + + drivers/mailbox/Kconfig | 1 + + 6 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig +index 3315e3c21586..30a85d38d0c0 100644 +--- a/drivers/firmware/Kconfig ++++ b/drivers/firmware/Kconfig +@@ -9,7 +9,7 @@ menu "Firmware Drivers" + config ARM_SCMI_PROTOCOL + tristate "ARM System Control and Management Interface (SCMI) Message Protocol" + depends on ARM || ARM64 || COMPILE_TEST +- depends on MAILBOX ++ depends on ARM_SCMI_HAVE_SHMEM + help + ARM System Control and Management Interface (SCMI) protocol is a + set of operating system-independent software interfaces that are +@@ -27,6 +27,13 @@ config ARM_SCMI_PROTOCOL + This protocol library provides interface for all the client drivers + making use of the features offered by the SCMI. + ++config ARM_SCMI_HAVE_SHMEM ++ bool ++ default n ++ help ++ This declares whether a shared memory based transport for SCMI is ++ available. ++ + config ARM_SCMI_POWER_DOMAIN + tristate "SCMI power domain driver" + depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF) +diff --git a/drivers/firmware/arm_scmi/Makefile b/drivers/firmware/arm_scmi/Makefile +index bc0d54f8e861..3cc7fa40a464 100644 +--- a/drivers/firmware/arm_scmi/Makefile ++++ b/drivers/firmware/arm_scmi/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0-only + scmi-bus-y = bus.o + scmi-driver-y = driver.o notify.o +-scmi-transport-y = shmem.o ++scmi-transport-$(CONFIG_ARM_SCMI_HAVE_SHMEM) = shmem.o + scmi-transport-$(CONFIG_MAILBOX) += mailbox.o + scmi-transport-$(CONFIG_HAVE_ARM_SMCCC_DISCOVERY) += smc.o + scmi-protocols-y = base.o clock.o perf.o power.o reset.o sensors.o system.o +diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h +index 65063fa948d4..aed192238177 100644 +--- a/drivers/firmware/arm_scmi/common.h ++++ b/drivers/firmware/arm_scmi/common.h +@@ -242,7 +242,9 @@ struct scmi_desc { + int max_msg_size; + }; + ++#ifdef CONFIG_MAILBOX + extern const struct scmi_desc scmi_mailbox_desc; ++#endif + #ifdef CONFIG_HAVE_ARM_SMCCC + extern const struct scmi_desc scmi_smc_desc; + #endif +diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c +index 6b2ce3f28f7b..7efbf66f117b 100644 +--- a/drivers/firmware/arm_scmi/driver.c ++++ b/drivers/firmware/arm_scmi/driver.c +@@ -918,7 +918,9 @@ ATTRIBUTE_GROUPS(versions); + + /* Each compatible listed below must have descriptor associated with it */ + static const struct of_device_id scmi_of_match[] = { ++#ifdef CONFIG_MAILBOX + { .compatible = "arm,scmi", .data = &scmi_mailbox_desc }, ++#endif + #ifdef CONFIG_HAVE_ARM_SMCCC_DISCOVERY + { .compatible = "arm,scmi-smc", .data = &scmi_smc_desc}, + #endif +diff --git a/drivers/firmware/smccc/Kconfig b/drivers/firmware/smccc/Kconfig +index 15e7466179a6..69c4d6cabf62 100644 +--- a/drivers/firmware/smccc/Kconfig ++++ b/drivers/firmware/smccc/Kconfig +@@ -9,6 +9,7 @@ config HAVE_ARM_SMCCC_DISCOVERY + bool + depends on ARM_PSCI_FW + default y ++ select ARM_SCMI_HAVE_SHMEM + help + SMCCC v1.0 lacked discoverability and hence PSCI v1.0 was updated + to add SMCCC discovery mechanism though the PSCI firmware +diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig +index 05b1009e2820..5ffe1ab0c869 100644 +--- a/drivers/mailbox/Kconfig ++++ b/drivers/mailbox/Kconfig +@@ -1,6 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0-only + menuconfig MAILBOX + bool "Mailbox Hardware Support" ++ select ARM_SCMI_HAVE_SHMEM + help + Mailbox is a framework to control hardware communication between + on-chip processors through queued messages and interrupt driven -- cgit 1.2.3-korg