All callers have been migrated to qcom_mdt_pas_load(), which takes an explicit qcom_pas_context instead of a raw pas_id and delegates memory setup to the context. Remove the now-unused qcom_mdt_load() wrapper along with its EXPORT_SYMBOL_GPL and header declaration.
Signed-off-by: Mukesh Ojha <[email protected]> --- drivers/soc/qcom/mdt_loader.c | 59 ++++++++++------------------- include/linux/soc/qcom/mdt_loader.h | 12 ------ 2 files changed, 19 insertions(+), 52 deletions(-) diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c index 002100fe2d32..1c7b5906f6ae 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -326,7 +326,8 @@ static bool qcom_mdt_bins_are_split(const struct firmware *fw) * @dev: device handle to associate resources with * @fw: firmware object for the mdt file * @fw_name: name of the firmware, for construction of segment file names - * @mem_region: allocated memory region to load firmware into + * @mem_region: virtual address of the memory region to load firmware into, + * or NULL to have the region mapped internally with ioremap_wc() * @mem_phys: physical address of allocated memory region * @mem_size: size of the allocated memory region * @reloc_base: adjusted physical address after relocation @@ -341,6 +342,7 @@ int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, const struct elf32_phdr *phdrs; const struct elf32_phdr *phdr; const struct elf32_hdr *ehdr; + void __iomem *mapped = NULL; phys_addr_t mem_reloc; phys_addr_t min_addr = PHYS_ADDR_MAX; ssize_t offset; @@ -350,12 +352,22 @@ int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, int ret = 0; int i; - if (!fw || !mem_region || !mem_phys || !mem_size) + if (!fw || !mem_phys || !mem_size) return -EINVAL; if (!mdt_header_valid(fw)) return -EINVAL; + if (!mem_region) { + mapped = ioremap_wc(mem_phys, mem_size); + if (!mapped) { + dev_err(dev, "unable to map memory region: %pa+%zx\n", + &mem_phys, mem_size); + return -ENOMEM; + } + mem_region = (__force void *)mapped; + } + is_split = qcom_mdt_bins_are_split(fw); ehdr = (struct elf32_hdr *)fw->data; phdrs = (struct elf32_phdr *)(fw->data + ehdr->e_phoff); @@ -434,39 +446,13 @@ int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, if (reloc_base) *reloc_base = mem_reloc; + if (mapped) + iounmap(mapped); + return ret; } EXPORT_SYMBOL_GPL(qcom_mdt_load_no_init); -/** - * qcom_mdt_load() - load the firmware which header is loaded as fw - * @dev: device handle to associate resources with - * @fw: firmware object for the mdt file - * @fw_name: name of the firmware, for construction of segment file names - * @pas_id: PAS identifier - * @mem_region: allocated memory region to load firmware into - * @mem_phys: physical address of allocated memory region - * @mem_size: size of the allocated memory region - * @reloc_base: adjusted physical address after relocation - * - * Returns 0 on success, negative errno otherwise. - */ -int qcom_mdt_load(struct device *dev, const struct firmware *fw, - const char *fw_name, int pas_id, void *mem_region, - phys_addr_t mem_phys, size_t mem_size, - phys_addr_t *reloc_base) -{ - int ret; - - ret = __qcom_mdt_pas_init(dev, fw, fw_name, pas_id, mem_phys, NULL); - if (ret) - return ret; - - return qcom_mdt_load_no_init(dev, fw, fw_name, mem_region, mem_phys, - mem_size, reloc_base); -} -EXPORT_SYMBOL_GPL(qcom_mdt_load); - /** * qcom_mdt_pas_load - Loads and authenticates the metadata of the firmware * (typically contained in the .mdt file), followed by loading the actual @@ -486,21 +472,14 @@ EXPORT_SYMBOL_GPL(qcom_mdt_load); int qcom_mdt_pas_load(struct qcom_pas_context *ctx, const struct firmware *fw, const char *firmware, phys_addr_t *reloc_base) { - void __iomem *mem_region; int ret; ret = __qcom_mdt_pas_init(ctx->dev, fw, firmware, ctx->pas_id, ctx->mem_phys, ctx); if (ret) return ret; - mem_region = qcom_pas_ctx_map(ctx); - if (!mem_region) - return -ENOMEM; - - ret = qcom_mdt_load_no_init(ctx->dev, fw, firmware, (__force void *)mem_region, - ctx->mem_phys, ctx->mem_size, reloc_base); - iounmap(mem_region); - return ret; + return qcom_mdt_load_no_init(ctx->dev, fw, firmware, NULL, + ctx->mem_phys, ctx->mem_size, reloc_base); } EXPORT_SYMBOL_GPL(qcom_mdt_pas_load); diff --git a/include/linux/soc/qcom/mdt_loader.h b/include/linux/soc/qcom/mdt_loader.h index 74886f772d46..f49de7b388bc 100644 --- a/include/linux/soc/qcom/mdt_loader.h +++ b/include/linux/soc/qcom/mdt_loader.h @@ -15,10 +15,6 @@ struct qcom_pas_context; #if IS_ENABLED(CONFIG_QCOM_MDT_LOADER) ssize_t qcom_mdt_get_size(const struct firmware *fw); -int qcom_mdt_load(struct device *dev, const struct firmware *fw, - const char *fw_name, int pas_id, void *mem_region, - phys_addr_t mem_phys, size_t mem_size, - phys_addr_t *reloc_base); int qcom_mdt_pas_load(struct qcom_pas_context *ctx, const struct firmware *fw, const char *firmware, phys_addr_t *reloc_base); @@ -37,14 +33,6 @@ static inline ssize_t qcom_mdt_get_size(const struct firmware *fw) return -ENODEV; } -static inline int qcom_mdt_load(struct device *dev, const struct firmware *fw, - const char *fw_name, int pas_id, - void *mem_region, phys_addr_t mem_phys, - size_t mem_size, phys_addr_t *reloc_base) -{ - return -ENODEV; -} - static inline int qcom_mdt_pas_load(struct qcom_pas_context *ctx, const struct firmware *fw, const char *firmware, phys_addr_t *reloc_base) -- 2.55.0

