> Subject: [PATCH v2] firmware: arm_scmi: Give SMC transport > precedence over mailbox > > Broadcom STB platforms have for historical reasons included both > "arm,scmi-smc" and "arm,scmi" in their SCMI Device Tree node > compatible string, in that order. If compatible = "arm,scmi-smc", "arm,scmi", smc driver should be used. or I missed something? > > After the commit cited in the Fixes tag and with a kernel configuration > that enables both the SMC and the Mailbox transports, we would > probe the mailbox transport, but fail to complete since we would not > have a mailbox driver available. With each SCMI transport being a > platform driver with its own set of compatible strings to match, rather > than an unique platform driver entry point, we no longer match from > most specific to least specific. There is also no simple way for the > mailbox driver to return -ENODEV and let another platform driver > attempt probing. This leads to a platform with no SCMI provider, > therefore all drivers depending upon SCMI resources are put on > deferred probe forever. > > By keeping the SMC transport objects linked first, we can let the > platform driver match the compatible string and probe successfully > with no adverse effects on platforms using the mailbox transport. > > Fixes: b53515fa177c ("firmware: arm_scmi: Make MBOX transport a > standalone driver") > Signed-off-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx> > --- > Changes in v2: > > - removed downstream Change-Id > - s/SCMI/SMC in the second paragraph > - added details about what changed and how that affects the probing > > drivers/firmware/arm_scmi/transports/Makefile | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/firmware/arm_scmi/transports/Makefile > b/drivers/firmware/arm_scmi/transports/Makefile > index 362a406f08e6..3ba3d3bee151 100644 > --- a/drivers/firmware/arm_scmi/transports/Makefile > +++ b/drivers/firmware/arm_scmi/transports/Makefile > @@ -1,8 +1,10 @@ > # SPDX-License-Identifier: GPL-2.0-only -scmi_transport_mailbox- > objs := mailbox.o > -obj-$(CONFIG_ARM_SCMI_TRANSPORT_MAILBOX) += > scmi_transport_mailbox.o > +# Keep before scmi_transport_mailbox.o to allow precedence # while > +matching the compatible. > scmi_transport_smc-objs := smc.o > obj-$(CONFIG_ARM_SCMI_TRANSPORT_SMC) += > scmi_transport_smc.o > +scmi_transport_mailbox-objs := mailbox.o > +obj-$(CONFIG_ARM_SCMI_TRANSPORT_MAILBOX) += This seems more like a hack. Regards, Peng. > scmi_transport_mailbox.o > scmi_transport_optee-objs := optee.o > obj-$(CONFIG_ARM_SCMI_TRANSPORT_OPTEE) += > scmi_transport_optee.o scmi_transport_virtio-objs := virtio.o > -- > 2.34.1 >