mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
media: qcom: Switch to generic PAS TZ APIs
Switch qcom media client drivers over to generic PAS TZ APIs. Generic PAS TZ service allows to support multiple TZ implementation backends like QTEE based SCM PAS service, OP-TEE based PAS service and any further future TZ backend service. Reviewed-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> Tested-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com> # Lemans Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Sumit Garg <sumit.garg@oss.qualcomm.com> Link: https://lore.kernel.org/r/20260702115835.167602-10-sumit.garg@kernel.org Signed-off-by: Bjorn Andersson <andersson@kernel.org>
This commit is contained in:
parent
a60558ae65
commit
94d3305d99
|
|
@ -1,14 +1,15 @@
|
|||
config VIDEO_QCOM_IRIS
|
||||
tristate "Qualcomm iris V4L2 decoder driver"
|
||||
depends on VIDEO_DEV
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
select V4L2_MEM2MEM_DEV
|
||||
select QCOM_MDT_LOADER
|
||||
select QCOM_SCM
|
||||
select QCOM_UBWC_CONFIG
|
||||
select VIDEOBUF2_DMA_CONTIG
|
||||
help
|
||||
This is a V4L2 driver for Qualcomm iris video accelerator
|
||||
hardware. It accelerates decoding operations on various
|
||||
Qualcomm SoCs.
|
||||
To compile this driver as a module choose m here.
|
||||
tristate "Qualcomm iris V4L2 decoder driver"
|
||||
depends on VIDEO_DEV
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
select V4L2_MEM2MEM_DEV
|
||||
select QCOM_MDT_LOADER
|
||||
select QCOM_SCM
|
||||
select QCOM_PAS
|
||||
select QCOM_UBWC_CONFIG
|
||||
select VIDEOBUF2_DMA_CONTIG
|
||||
help
|
||||
This is a V4L2 driver for Qualcomm iris video accelerator
|
||||
hardware. It accelerates decoding operations on various
|
||||
Qualcomm SoCs.
|
||||
To compile this driver as a module choose m here.
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/firmware/qcom/qcom_pas.h>
|
||||
#include <linux/firmware/qcom/qcom_scm.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_reserved_mem.h>
|
||||
|
|
@ -80,7 +81,7 @@ int iris_fw_load(struct iris_core *core)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ret = qcom_scm_pas_auth_and_reset(IRIS_PAS_ID);
|
||||
ret = qcom_pas_auth_and_reset(IRIS_PAS_ID);
|
||||
if (ret) {
|
||||
dev_err(core->dev, "auth and reset failed: %d\n", ret);
|
||||
return ret;
|
||||
|
|
@ -94,7 +95,7 @@ int iris_fw_load(struct iris_core *core)
|
|||
cp_config->cp_nonpixel_size);
|
||||
if (ret) {
|
||||
dev_err(core->dev, "qcom_scm_mem_protect_video_var failed: %d\n", ret);
|
||||
qcom_scm_pas_shutdown(IRIS_PAS_ID);
|
||||
qcom_pas_shutdown(IRIS_PAS_ID);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
@ -104,10 +105,10 @@ int iris_fw_load(struct iris_core *core)
|
|||
|
||||
int iris_fw_unload(struct iris_core *core)
|
||||
{
|
||||
return qcom_scm_pas_shutdown(IRIS_PAS_ID);
|
||||
return qcom_pas_shutdown(IRIS_PAS_ID);
|
||||
}
|
||||
|
||||
int iris_set_hw_state(struct iris_core *core, bool resume)
|
||||
{
|
||||
return qcom_scm_set_remote_state(resume, 0);
|
||||
return qcom_pas_set_remote_state(resume, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ config VIDEO_QCOM_VENUS
|
|||
select OF_DYNAMIC if ARCH_QCOM
|
||||
select QCOM_MDT_LOADER
|
||||
select QCOM_SCM
|
||||
select QCOM_PAS
|
||||
select VIDEOBUF2_DMA_CONTIG
|
||||
select V4L2_MEM2MEM_DEV
|
||||
help
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include <linux/of_reserved_mem.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/firmware/qcom/qcom_pas.h>
|
||||
#include <linux/firmware/qcom/qcom_scm.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/soc/qcom/mdt_loader.h>
|
||||
|
|
@ -58,7 +59,7 @@ int venus_set_hw_state(struct venus_core *core, bool resume)
|
|||
int ret;
|
||||
|
||||
if (core->use_tz) {
|
||||
ret = qcom_scm_set_remote_state(resume, 0);
|
||||
ret = qcom_pas_set_remote_state(resume, 0);
|
||||
if (resume && ret == -EINVAL)
|
||||
ret = 0;
|
||||
return ret;
|
||||
|
|
@ -218,7 +219,7 @@ int venus_boot(struct venus_core *core)
|
|||
int ret;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_QCOM_MDT_LOADER) ||
|
||||
(core->use_tz && !qcom_scm_is_available()))
|
||||
(core->use_tz && !qcom_pas_is_available()))
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
ret = of_property_read_string_index(dev->of_node, "firmware-name", 0,
|
||||
|
|
@ -236,7 +237,7 @@ int venus_boot(struct venus_core *core)
|
|||
core->fw.mem_phys = mem_phys;
|
||||
|
||||
if (core->use_tz)
|
||||
ret = qcom_scm_pas_auth_and_reset(VENUS_PAS_ID);
|
||||
ret = qcom_pas_auth_and_reset(VENUS_PAS_ID);
|
||||
else
|
||||
ret = venus_boot_no_tz(core, mem_phys, mem_size);
|
||||
|
||||
|
|
@ -259,7 +260,7 @@ int venus_boot(struct venus_core *core)
|
|||
res->cp_nonpixel_start,
|
||||
res->cp_nonpixel_size);
|
||||
if (ret) {
|
||||
qcom_scm_pas_shutdown(VENUS_PAS_ID);
|
||||
qcom_pas_shutdown(VENUS_PAS_ID);
|
||||
dev_err(dev, "set virtual address ranges fail (%d)\n",
|
||||
ret);
|
||||
return ret;
|
||||
|
|
@ -274,7 +275,7 @@ int venus_shutdown(struct venus_core *core)
|
|||
int ret;
|
||||
|
||||
if (core->use_tz)
|
||||
ret = qcom_scm_pas_shutdown(VENUS_PAS_ID);
|
||||
ret = qcom_pas_shutdown(VENUS_PAS_ID);
|
||||
else
|
||||
ret = venus_shutdown_no_tz(core);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user