| /* SPDX-License-Identifier: GPL-2.0 */ | 
|   | 
| #ifndef _MTK_VCODEC_FW_H_ | 
| #define _MTK_VCODEC_FW_H_ | 
|   | 
| #include <linux/remoteproc.h> | 
| #include <linux/remoteproc/mtk_scp.h> | 
|   | 
| #include "../mtk-vpu/mtk_vpu.h" | 
|   | 
| struct mtk_vcodec_dev; | 
|   | 
| enum mtk_vcodec_fw_type { | 
|     VPU, | 
|     SCP, | 
| }; | 
|   | 
| enum mtk_vcodec_fw_use { | 
|     DECODER, | 
|     ENCODER, | 
| }; | 
|   | 
| struct mtk_vcodec_fw; | 
|   | 
| typedef void (*mtk_vcodec_ipi_handler) (void *data, | 
|     unsigned int len, void *priv); | 
|   | 
| struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev, | 
|                        enum mtk_vcodec_fw_type type, | 
|                        enum mtk_vcodec_fw_use fw_use); | 
| void mtk_vcodec_fw_release(struct mtk_vcodec_fw *fw); | 
|   | 
| int mtk_vcodec_fw_load_firmware(struct mtk_vcodec_fw *fw); | 
| unsigned int mtk_vcodec_fw_get_vdec_capa(struct mtk_vcodec_fw *fw); | 
| unsigned int mtk_vcodec_fw_get_venc_capa(struct mtk_vcodec_fw *fw); | 
| void *mtk_vcodec_fw_map_dm_addr(struct mtk_vcodec_fw *fw, u32 mem_addr); | 
| int mtk_vcodec_fw_ipi_register(struct mtk_vcodec_fw *fw, int id, | 
|                    mtk_vcodec_ipi_handler handler, | 
|                    const char *name, void *priv); | 
| int mtk_vcodec_fw_ipi_send(struct mtk_vcodec_fw *fw, int id, | 
|                void *buf, unsigned int len, unsigned int wait); | 
|   | 
| #endif /* _MTK_VCODEC_FW_H_ */ |