Message ID | 20210126084252.238078-1-stanimir.varbanov@linaro.org |
---|---|
State | Accepted |
Commit | 18a6262b05f7c87a42de22d426e20402d163637f |
Headers | show |
Series | venus: core: Parse firmware-name DT property | expand |
Il 26/01/21 09:42, Stanimir Varbanov ha scritto: > On production devices the firmware could be located on different > places, this path could be provided by special firmware-name DT > property. > > Here we check for existence of such DT property and if it exist > take the firmware path from there. Otherwise, if the property > is missing we fallback to the predefined path from driver resource > structure. > > Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> > --- > drivers/media/platform/qcom/venus/firmware.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c > index d03e2dd5808c..56c8fb5a019b 100644 > --- a/drivers/media/platform/qcom/venus/firmware.c > +++ b/drivers/media/platform/qcom/venus/firmware.c > @@ -187,6 +187,7 @@ int venus_boot(struct venus_core *core) > { > struct device *dev = core->dev; > const struct venus_resources *res = core->res; > + const char *fwpath = NULL; > phys_addr_t mem_phys; > size_t mem_size; > int ret; > @@ -195,7 +196,12 @@ int venus_boot(struct venus_core *core) > (core->use_tz && !qcom_scm_is_available())) > return -EPROBE_DEFER; > > - ret = venus_load_fw(core, core->res->fwname, &mem_phys, &mem_size); > + ret = of_property_read_string_index(dev->of_node, "firmware-name", 0, > + &fwpath); > + if (ret) > + fwpath = core->res->fwname; > + > + ret = venus_load_fw(core, fwpath, &mem_phys, &mem_size); > if (ret) { > dev_err(dev, "fail to load video firmware\n"); > return -EINVAL; > Super! As you surely know, I totally agree. It may not have huge value, but: Reviewed-By: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
On Tue 26 Jan 02:42 CST 2021, Stanimir Varbanov wrote: > On production devices the firmware could be located on different > places, this path could be provided by special firmware-name DT > property. > > Here we check for existence of such DT property and if it exist > take the firmware path from there. Otherwise, if the property > is missing we fallback to the predefined path from driver resource > structure. > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> But firmware-name is not mentioned in the dt binding. Regards, Bjorn > Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> > --- > drivers/media/platform/qcom/venus/firmware.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c > index d03e2dd5808c..56c8fb5a019b 100644 > --- a/drivers/media/platform/qcom/venus/firmware.c > +++ b/drivers/media/platform/qcom/venus/firmware.c > @@ -187,6 +187,7 @@ int venus_boot(struct venus_core *core) > { > struct device *dev = core->dev; > const struct venus_resources *res = core->res; > + const char *fwpath = NULL; > phys_addr_t mem_phys; > size_t mem_size; > int ret; > @@ -195,7 +196,12 @@ int venus_boot(struct venus_core *core) > (core->use_tz && !qcom_scm_is_available())) > return -EPROBE_DEFER; > > - ret = venus_load_fw(core, core->res->fwname, &mem_phys, &mem_size); > + ret = of_property_read_string_index(dev->of_node, "firmware-name", 0, > + &fwpath); > + if (ret) > + fwpath = core->res->fwname; > + > + ret = venus_load_fw(core, fwpath, &mem_phys, &mem_size); > if (ret) { > dev_err(dev, "fail to load video firmware\n"); > return -EINVAL; > -- > 2.25.1 >
diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c index d03e2dd5808c..56c8fb5a019b 100644 --- a/drivers/media/platform/qcom/venus/firmware.c +++ b/drivers/media/platform/qcom/venus/firmware.c @@ -187,6 +187,7 @@ int venus_boot(struct venus_core *core) { struct device *dev = core->dev; const struct venus_resources *res = core->res; + const char *fwpath = NULL; phys_addr_t mem_phys; size_t mem_size; int ret; @@ -195,7 +196,12 @@ int venus_boot(struct venus_core *core) (core->use_tz && !qcom_scm_is_available())) return -EPROBE_DEFER; - ret = venus_load_fw(core, core->res->fwname, &mem_phys, &mem_size); + ret = of_property_read_string_index(dev->of_node, "firmware-name", 0, + &fwpath); + if (ret) + fwpath = core->res->fwname; + + ret = venus_load_fw(core, fwpath, &mem_phys, &mem_size); if (ret) { dev_err(dev, "fail to load video firmware\n"); return -EINVAL;
On production devices the firmware could be located on different places, this path could be provided by special firmware-name DT property. Here we check for existence of such DT property and if it exist take the firmware path from there. Otherwise, if the property is missing we fallback to the predefined path from driver resource structure. Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> --- drivers/media/platform/qcom/venus/firmware.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)