summaryrefslogtreecommitdiffstats
path: root/drivers/firmware/Makefile
diff options
context:
space:
mode:
authorElliot Berman <eberman@codeaurora.org>2020-01-07 13:04:26 -0800
committerBjorn Andersson <bjorn.andersson@linaro.org>2020-01-07 22:14:43 -0800
commit9a434cee773ae15309ac225f27551b5492618e4a (patch)
tree26d7deff138efa039629a0611ada779626d552e5 /drivers/firmware/Makefile
parent57d3b816718c1cf832e2929a754da3564c6127cc (diff)
downloadlinux-stable-9a434cee773ae15309ac225f27551b5492618e4a.tar.gz
linux-stable-9a434cee773ae15309ac225f27551b5492618e4a.tar.bz2
linux-stable-9a434cee773ae15309ac225f27551b5492618e4a.zip
firmware: qcom_scm: Dynamically support SMCCC and legacy conventions
Dynamically support SMCCCC and legacy conventions by detecting which convention to use at runtime. qcom_scm_call_atomic and qcom_scm_call can then be moved in qcom_scm.c and use underlying convention backend as appropriate. Thus, rename qcom_scm-64,-32 to reflect that they are backends for -smc and -legacy, respectively. Also add support for making SCM calls earlier than when SCM driver probes to support use cases such as qcom_scm_set_cold_boot_addr. Support is added by lazily initializing the convention and guarding the query with a spin lock. The limitation of these early SCM calls is that they cannot use DMA, as in the case of >4 arguments for SMC convention and any non-atomic call for legacy convention. Tested-by: Brian Masney <masneyb@onstation.org> # arm32 Tested-by: Stephan Gerhold <stephan@gerhold.net> Signed-off-by: Elliot Berman <eberman@codeaurora.org> Link: https://lore.kernel.org/r/1578431066-19600-18-git-send-email-eberman@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/firmware/Makefile')
-rw-r--r--drivers/firmware/Makefile4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
index 747fb73b264c..e9fb838af4df 100644
--- a/drivers/firmware/Makefile
+++ b/drivers/firmware/Makefile
@@ -17,9 +17,7 @@ obj-$(CONFIG_ISCSI_IBFT) += iscsi_ibft.o
obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o
obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o
obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o
-obj-$(CONFIG_QCOM_SCM) += qcom_scm.o
-obj-$(CONFIG_QCOM_SCM_64) += qcom_scm-64.o
-obj-$(CONFIG_QCOM_SCM_32) += qcom_scm-32.o
+obj-$(CONFIG_QCOM_SCM) += qcom_scm.o qcom_scm-smc.o qcom_scm-legacy.o
obj-$(CONFIG_TI_SCI_PROTOCOL) += ti_sci.o
obj-$(CONFIG_TRUSTED_FOUNDATIONS) += trusted_foundations.o
obj-$(CONFIG_TURRIS_MOX_RWTM) += turris-mox-rwtm.o