1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef _MTK_VCODEC_FW_H_ 4 #define _MTK_VCODEC_FW_H_ 5 6 #include <linux/remoteproc.h> 7 #include <linux/remoteproc/mtk_scp.h> 8 9 #include "../mtk-vpu/mtk_vpu.h" 10 11 struct mtk_vcodec_dev; 12 13 enum mtk_vcodec_fw_type { 14 VPU, 15 SCP, 16 }; 17 18 enum mtk_vcodec_fw_use { 19 DECODER, 20 ENCODER, 21 }; 22 23 struct mtk_vcodec_fw; 24 25 typedef void (*mtk_vcodec_ipi_handler) (void *data, 26 unsigned int len, void *priv); 27 28 struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev, 29 enum mtk_vcodec_fw_type type, 30 enum mtk_vcodec_fw_use fw_use); 31 void mtk_vcodec_fw_release(struct mtk_vcodec_fw *fw); 32 33 int mtk_vcodec_fw_load_firmware(struct mtk_vcodec_fw *fw); 34 unsigned int mtk_vcodec_fw_get_vdec_capa(struct mtk_vcodec_fw *fw); 35 unsigned int mtk_vcodec_fw_get_venc_capa(struct mtk_vcodec_fw *fw); 36 void *mtk_vcodec_fw_map_dm_addr(struct mtk_vcodec_fw *fw, u32 mem_addr); 37 int mtk_vcodec_fw_ipi_register(struct mtk_vcodec_fw *fw, int id, 38 mtk_vcodec_ipi_handler handler, 39 const char *name, void *priv); 40 int mtk_vcodec_fw_ipi_send(struct mtk_vcodec_fw *fw, int id, 41 void *buf, unsigned int len, unsigned int wait); 42 43 #endif /* _MTK_VCODEC_FW_H_ */ 44