Use the shared optional resource-table helper in the remoteproc drivers that currently ignore a missing table. This keeps the missing resource-table case non-fatal while letting other parsing failures propagate to the caller.
Signed-off-by: Ben Levinsky <[email protected]> --- drivers/remoteproc/imx_dsp_rproc.c | 10 +-------- drivers/remoteproc/imx_rproc.c | 13 +---------- drivers/remoteproc/rcar_rproc.c | 13 +---------- drivers/remoteproc/stm32_rproc.c | 10 +-------- drivers/remoteproc/xlnx_r5_remoteproc.c | 29 +------------------------ 5 files changed, 5 insertions(+), 70 deletions(-) diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c index 2d9f14fbef1d..3e96e7978cd2 100644 --- a/drivers/remoteproc/imx_dsp_rproc.c +++ b/drivers/remoteproc/imx_dsp_rproc.c @@ -954,14 +954,6 @@ static int imx_dsp_rproc_elf_load_segments(struct rproc *rproc, const struct fir return ret; } -static int imx_dsp_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) -{ - if (rproc_elf_load_rsc_table(rproc, fw)) - dev_warn(&rproc->dev, "no resource table found for this firmware\n"); - - return 0; -} - static int imx_dsp_rproc_load(struct rproc *rproc, const struct firmware *fw) { struct imx_dsp_rproc *priv = rproc->priv; @@ -997,7 +989,7 @@ static const struct rproc_ops imx_dsp_rproc_ops = { .stop = imx_dsp_rproc_stop, .kick = imx_dsp_rproc_kick, .load = imx_dsp_rproc_load, - .parse_fw = imx_dsp_rproc_parse_fw, + .parse_fw = rproc_elf_load_rsc_table_optional, .handle_rsc = imx_dsp_rproc_handle_rsc, .find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table, .sanity_check = rproc_elf_sanity_check, diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 6249815b54d8..5509048f7e19 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -680,17 +680,6 @@ static int imx_rproc_prepare(struct rproc *rproc) return 0; } -static int imx_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) -{ - int ret; - - ret = rproc_elf_load_rsc_table(rproc, fw); - if (ret) - dev_info(&rproc->dev, "No resource table in elf\n"); - - return 0; -} - static void imx_rproc_kick(struct rproc *rproc, int vqid) { struct imx_rproc *priv = rproc->priv; @@ -777,7 +766,7 @@ static const struct rproc_ops imx_rproc_ops = { .kick = imx_rproc_kick, .da_to_va = imx_rproc_da_to_va, .load = rproc_elf_load_segments, - .parse_fw = imx_rproc_parse_fw, + .parse_fw = rproc_elf_load_rsc_table_optional, .find_loaded_rsc_table = imx_rproc_elf_find_loaded_rsc_table, .get_loaded_rsc_table = imx_rproc_get_loaded_rsc_table, .sanity_check = rproc_elf_sanity_check, diff --git a/drivers/remoteproc/rcar_rproc.c b/drivers/remoteproc/rcar_rproc.c index e3121fadd292..7adaa6d37b82 100644 --- a/drivers/remoteproc/rcar_rproc.c +++ b/drivers/remoteproc/rcar_rproc.c @@ -55,17 +55,6 @@ static int rcar_rproc_prepare(struct rproc *rproc) } } -static int rcar_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) -{ - int ret; - - ret = rproc_elf_load_rsc_table(rproc, fw); - if (ret) - dev_info(&rproc->dev, "No resource table in elf\n"); - - return 0; -} - static int rcar_rproc_start(struct rproc *rproc) { struct rcar_rproc *priv = rproc->priv; @@ -104,7 +93,7 @@ static struct rproc_ops rcar_rproc_ops = { .start = rcar_rproc_start, .stop = rcar_rproc_stop, .load = rproc_elf_load_segments, - .parse_fw = rcar_rproc_parse_fw, + .parse_fw = rproc_elf_load_rsc_table_optional, .find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table, .sanity_check = rproc_elf_sanity_check, .get_boot_addr = rproc_elf_get_boot_addr, diff --git a/drivers/remoteproc/stm32_rproc.c b/drivers/remoteproc/stm32_rproc.c index 7ac8265b60ac..007175dcd7af 100644 --- a/drivers/remoteproc/stm32_rproc.c +++ b/drivers/remoteproc/stm32_rproc.c @@ -232,14 +232,6 @@ static int stm32_rproc_prepare(struct rproc *rproc) } } -static int stm32_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw) -{ - if (rproc_elf_load_rsc_table(rproc, fw)) - dev_warn(&rproc->dev, "no resource table found for this firmware\n"); - - return 0; -} - static irqreturn_t stm32_rproc_wdg(int irq, void *data) { struct platform_device *pdev = data; @@ -631,7 +623,7 @@ static const struct rproc_ops st_rproc_ops = { .detach = stm32_rproc_detach, .kick = stm32_rproc_kick, .load = rproc_elf_load_segments, - .parse_fw = stm32_rproc_parse_fw, + .parse_fw = rproc_elf_load_rsc_table_optional, .find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table, .get_loaded_rsc_table = stm32_rproc_get_loaded_rsc_table, .sanity_check = rproc_elf_sanity_check, diff --git a/drivers/remoteproc/xlnx_r5_remoteproc.c b/drivers/remoteproc/xlnx_r5_remoteproc.c index e5d1903c9636..92c1f8972551 100644 --- a/drivers/remoteproc/xlnx_r5_remoteproc.c +++ b/drivers/remoteproc/xlnx_r5_remoteproc.c @@ -664,33 +664,6 @@ static int add_tcm_banks(struct rproc *rproc) return ret; } -/* - * zynqmp_r5_parse_fw() - * @rproc: single R5 core's corresponding rproc instance - * @fw: ptr to firmware to be loaded onto r5 core - * - * get resource table if available - * - * return 0 on success, otherwise non-zero value on failure - */ -static int zynqmp_r5_parse_fw(struct rproc *rproc, const struct firmware *fw) -{ - int ret; - - ret = rproc_elf_load_rsc_table(rproc, fw); - if (ret == -EINVAL) { - /* - * resource table only required for IPC. - * if not present, this is not necessarily an error; - * for example, loading r5 hello world application - * so simply inform user and keep going. - */ - dev_info(&rproc->dev, "no resource table found.\n"); - ret = 0; - } - return ret; -} - /** * zynqmp_r5_rproc_prepare() - prepare core to boot/attach * adds carveouts for TCM bank and reserved memory regions @@ -849,7 +822,7 @@ static const struct rproc_ops zynqmp_r5_rproc_ops = { .start = zynqmp_r5_rproc_start, .stop = zynqmp_r5_rproc_stop, .load = rproc_elf_load_segments, - .parse_fw = zynqmp_r5_parse_fw, + .parse_fw = rproc_elf_load_rsc_table_optional, .find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table, .sanity_check = rproc_elf_sanity_check, .get_boot_addr = rproc_elf_get_boot_addr, -- 2.34.1

