diff options
author | Mauro Carvalho Chehab <mchehab@kernel.org> | 2022-11-15 11:53:57 +0000 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@kernel.org> | 2022-11-15 11:53:57 +0000 |
commit | 997149b8bfe22c68e61f812aeb91d4ced3732f04 (patch) | |
tree | f064d8908baa16d9f3ccbfc62b7e40d29e56e692 | |
parent | 1e284ea984d3705e042b6b07469a66f1d43371e3 (diff) | |
parent | 0f6e8d8c94a82e85e1b9b62a7671990740dc6f70 (diff) |
Merge tag 'tag-venus-for-v6.2' of git://linuxtv.org/svarbanov/media_tree into media_stage
Venus updates for v6.2
* tag 'tag-venus-for-v6.2' of git://linuxtv.org/svarbanov/media_tree:
venus: pm_helpers: Fix error check in vcodec_domains_get()
venus: firmware: Correct assertion of reset bit on remote processor
venus: firmware: Correct non-pix start and end addresses
venus: firmware: Correct reset bit
MAINTAINERS: Change email for Venus driver
MAINTAINERS: Add Vikash as VENUS video driver co-maintainer
-rw-r--r-- | MAINTAINERS | 3 | ||||
-rw-r--r-- | drivers/media/platform/qcom/venus/firmware.c | 20 | ||||
-rw-r--r-- | drivers/media/platform/qcom/venus/pm_helpers.c | 4 |
3 files changed, 14 insertions, 13 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index aa1974054fce..6f4ff0ef4523 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17175,7 +17175,8 @@ F: Documentation/devicetree/bindings/thermal/qcom-tsens.yaml F: drivers/thermal/qcom/ QUALCOMM VENUS VIDEO ACCELERATOR DRIVER -M: Stanimir Varbanov <stanimir.varbanov@linaro.org> +M: Stanimir Varbanov <stanimir.k.varbanov@gmail.com> +M: Vikash Garodia <quic_vgarodia@quicinc.com> L: linux-media@vger.kernel.org L: linux-arm-msm@vger.kernel.org S: Maintained diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c index 14b6f1d05991..142d4c74017c 100644 --- a/drivers/media/platform/qcom/venus/firmware.c +++ b/drivers/media/platform/qcom/venus/firmware.c @@ -38,8 +38,8 @@ static void venus_reset_cpu(struct venus_core *core) writel(fw_size, wrapper_base + WRAPPER_FW_END_ADDR); writel(0, wrapper_base + WRAPPER_CPA_START_ADDR); writel(fw_size, wrapper_base + WRAPPER_CPA_END_ADDR); - writel(fw_size, wrapper_base + WRAPPER_NONPIX_START_ADDR); - writel(fw_size, wrapper_base + WRAPPER_NONPIX_END_ADDR); + writel(0, wrapper_base + WRAPPER_NONPIX_START_ADDR); + writel(0, wrapper_base + WRAPPER_NONPIX_END_ADDR); if (IS_V6(core)) { /* Bring XTSS out of reset */ @@ -68,9 +68,11 @@ int venus_set_hw_state(struct venus_core *core, bool resume) venus_reset_cpu(core); } else { if (IS_V6(core)) - writel(1, core->wrapper_tz_base + WRAPPER_TZ_XTSS_SW_RESET); + writel(WRAPPER_XTSS_SW_RESET_BIT, + core->wrapper_tz_base + WRAPPER_TZ_XTSS_SW_RESET); else - writel(1, core->wrapper_base + WRAPPER_A9SS_SW_RESET); + writel(WRAPPER_A9SS_SW_RESET_BIT, + core->wrapper_base + WRAPPER_A9SS_SW_RESET); } return 0; @@ -179,17 +181,15 @@ static int venus_shutdown_no_tz(struct venus_core *core) if (IS_V6(core)) { /* Assert the reset to XTSS */ - reg = readl_relaxed(wrapper_tz_base + WRAPPER_TZ_XTSS_SW_RESET); + reg = readl(wrapper_tz_base + WRAPPER_TZ_XTSS_SW_RESET); reg |= WRAPPER_XTSS_SW_RESET_BIT; - writel_relaxed(reg, wrapper_tz_base + WRAPPER_TZ_XTSS_SW_RESET); + writel(reg, wrapper_tz_base + WRAPPER_TZ_XTSS_SW_RESET); } else { /* Assert the reset to ARM9 */ - reg = readl_relaxed(wrapper_base + WRAPPER_A9SS_SW_RESET); + reg = readl(wrapper_base + WRAPPER_A9SS_SW_RESET); reg |= WRAPPER_A9SS_SW_RESET_BIT; - writel_relaxed(reg, wrapper_base + WRAPPER_A9SS_SW_RESET); + writel(reg, wrapper_base + WRAPPER_A9SS_SW_RESET); } - /* Make sure reset is asserted before the mapping is removed */ - mb(); iommu = core->fw.iommu_domain; diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c b/drivers/media/platform/qcom/venus/pm_helpers.c index c93d2906e4c7..48c9084bb4db 100644 --- a/drivers/media/platform/qcom/venus/pm_helpers.c +++ b/drivers/media/platform/qcom/venus/pm_helpers.c @@ -869,8 +869,8 @@ static int vcodec_domains_get(struct venus_core *core) for (i = 0; i < res->vcodec_pmdomains_num; i++) { pd = dev_pm_domain_attach_by_name(dev, res->vcodec_pmdomains[i]); - if (IS_ERR(pd)) - return PTR_ERR(pd); + if (IS_ERR_OR_NULL(pd)) + return PTR_ERR(pd) ? : -ENODATA; core->pmdomains[i] = pd; } |