Initialize tee private data to support secure decoder.
Release tee related information for each instance when decoder
done.

Signed-off-by: Yunfei Dong <yunfei.d...@mediatek.com>
---
 .../platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git 
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c 
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c
index f47c98faf068..08e7d250487b 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.c
@@ -310,6 +310,9 @@ static int fops_vcodec_release(struct file *file)
        v4l2_fh_exit(&ctx->fh);
        v4l2_ctrl_handler_free(&ctx->ctrl_hdl);
 
+       if (ctx->is_secure_playback)
+               mtk_vcodec_dec_optee_release(dev->optee_private);
+
        mtk_vcodec_dbgfs_remove(dev, ctx->id);
        list_del_init(&ctx->list);
        kfree(ctx);
@@ -466,6 +469,11 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
        atomic_set(&dev->dec_active_cnt, 0);
        memset(dev->vdec_racing_info, 0, sizeof(dev->vdec_racing_info));
        mutex_init(&dev->dec_racing_info_mutex);
+       ret = mtk_vcodec_dec_optee_private_init(dev);
+       if (ret) {
+               dev_err(&pdev->dev, "Failed to init svp private.");
+               goto err_reg_cont;
+       }
 
        ret = video_register_device(vfd_dec, VFL_TYPE_VIDEO, -1);
        if (ret) {
-- 
2.25.1

Reply via email to