Message ID | 20210611165937.701-7-cristian.marussi@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce SCMI VirtIO transport | expand |
On 11.06.21 18:59, Cristian Marussi wrote: > From: Igor Skalkin <igor.skalkin@opensynergy.com> > > 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. The hard dependency has now already been removed with c05b07963e96 ("firmware: arm_scmi: Add SMCCC discovery dependency in") > > [ Peter: Adapted patch for submission to upstream. ] > > Co-developed-by: Peter Hilber <peter.hilber@opensynergy.com> > Signed-off-by: Igor Skalkin <igor.skalkin@opensynergy.com> > Signed-off-by: Peter Hilber <peter.hilber@opensynergy.com> > --- > drivers/firmware/Kconfig | 8 +++++++- > drivers/firmware/arm_scmi/Makefile | 2 +- > drivers/firmware/arm_scmi/common.h | 2 ++ > drivers/firmware/smccc/Kconfig | 1 + > drivers/mailbox/Kconfig | 1 + > 5 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig > index 1db738d5b301..358f895847b5 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 || HAVE_ARM_SMCCC_DISCOVERY > + 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,12 @@ 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 > + 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 6a2ef63306d6..5a2d4c32e0ae 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 voltage.o > diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h > index 0edc04bc434c..4666777019fa 100644 > --- a/drivers/firmware/arm_scmi/common.h > +++ b/drivers/firmware/arm_scmi/common.h > @@ -375,7 +375,9 @@ struct scmi_desc { > bool support_xfers_delegation; > }; > > +#ifdef CONFIG_MAILBOX > extern const struct scmi_desc scmi_mailbox_desc; > +#endif > #ifdef CONFIG_HAVE_ARM_SMCCC_DISCOVERY > extern const struct scmi_desc 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 68de2c6af727..fc02c38c0739 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 >
Hi, On Thu, Jul 01, 2021 at 10:42:56AM +0200, Peter Hilber wrote: > On 11.06.21 18:59, Cristian Marussi wrote: > > From: Igor Skalkin <igor.skalkin@opensynergy.com> > > > > 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. > > The hard dependency has now already been removed with > > c05b07963e96 ("firmware: arm_scmi: Add SMCCC discovery dependency in") > I deeply reviewed transport Kconfig approach in V5 in general, making all transport configurable (y/n), so this patch will be adapted to the new Kconfig layout annd basically just provide the HAVE_SHMEM feature. Thanks, Cristian
diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig index 1db738d5b301..358f895847b5 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 || HAVE_ARM_SMCCC_DISCOVERY + 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,12 @@ 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 + 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 6a2ef63306d6..5a2d4c32e0ae 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 voltage.o diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h index 0edc04bc434c..4666777019fa 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -375,7 +375,9 @@ struct scmi_desc { bool support_xfers_delegation; }; +#ifdef CONFIG_MAILBOX extern const struct scmi_desc scmi_mailbox_desc; +#endif #ifdef CONFIG_HAVE_ARM_SMCCC_DISCOVERY extern const struct scmi_desc 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 68de2c6af727..fc02c38c0739 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