| /* SPDX-License-Identifier: GPL-2.0 */ |
| |
| #ifndef _MTK_VCODEC_FW_PRIV_H_ |
| #define _MTK_VCODEC_FW_PRIV_H_ |
| |
| #include "mtk_vcodec_fw.h" |
| |
| struct mtk_vcodec_dev; |
| |
| struct mtk_vcodec_fw { |
| enum mtk_vcodec_fw_type type; |
| const struct mtk_vcodec_fw_ops *ops; |
| struct platform_device *pdev; |
| struct mtk_scp *scp; |
| }; |
| |
| struct mtk_vcodec_fw_ops { |
| int (*load_firmware)(struct mtk_vcodec_fw *fw); |
| unsigned int (*get_vdec_capa)(struct mtk_vcodec_fw *fw); |
| unsigned int (*get_venc_capa)(struct mtk_vcodec_fw *fw); |
| void *(*map_dm_addr)(struct mtk_vcodec_fw *fw, u32 dtcm_dmem_addr); |
| int (*ipi_register)(struct mtk_vcodec_fw *fw, int id, |
| mtk_vcodec_ipi_handler handler, const char *name, |
| void *priv); |
| int (*ipi_send)(struct mtk_vcodec_fw *fw, int id, void *buf, |
| unsigned int len, unsigned int wait); |
| void (*release)(struct mtk_vcodec_fw *fw); |
| }; |
| |
| #if IS_ENABLED(CONFIG_VIDEO_MEDIATEK_VCODEC_VPU) |
| struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev, |
| enum mtk_vcodec_fw_use fw_use); |
| #else |
| static inline struct mtk_vcodec_fw * |
| mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev, |
| enum mtk_vcodec_fw_use fw_use) |
| { |
| return ERR_PTR(-ENODEV); |
| } |
| #endif /* CONFIG_VIDEO_MEDIATEK_VCODEC_VPU */ |
| |
| #if IS_ENABLED(CONFIG_VIDEO_MEDIATEK_VCODEC_SCP) |
| struct mtk_vcodec_fw *mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev); |
| #else |
| static inline struct mtk_vcodec_fw * |
| mtk_vcodec_fw_scp_init(struct mtk_vcodec_dev *dev) |
| { |
| return ERR_PTR(-ENODEV); |
| } |
| #endif /* CONFIG_VIDEO_MEDIATEK_VCODEC_SCP */ |
| |
| #endif /* _MTK_VCODEC_FW_PRIV_H_ */ |