1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (c) 2022 MediaTek Inc. 4 * Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com> 5 */ 6 7 #ifndef __MTK_MDP3_M2M_H__ 8 #define __MTK_MDP3_M2M_H__ 9 10 #include <media/v4l2-ctrls.h> 11 #include "mtk-mdp3-core.h" 12 #include "mtk-mdp3-vpu.h" 13 #include "mtk-mdp3-regs.h" 14 15 #define MDP_MAX_CTRLS 10 16 17 enum { 18 MDP_M2M_SRC = 0, 19 MDP_M2M_DST = 1, 20 MDP_M2M_MAX, 21 }; 22 23 struct mdp_m2m_ctrls { 24 struct v4l2_ctrl *hflip; 25 struct v4l2_ctrl *vflip; 26 struct v4l2_ctrl *rotate; 27 }; 28 29 struct mdp_m2m_ctx { 30 u32 id; 31 struct mdp_dev *mdp_dev; 32 struct v4l2_fh fh; 33 struct v4l2_ctrl_handler ctrl_handler; 34 struct mdp_m2m_ctrls ctrls; 35 struct v4l2_m2m_ctx *m2m_ctx; 36 struct mdp_vpu_ctx vpu; 37 u32 frame_count[MDP_M2M_MAX]; 38 39 struct mdp_frameparam curr_param; 40 /* synchronization protect for mdp m2m context */ 41 struct mutex ctx_lock; 42 }; 43 44 int mdp_m2m_device_register(struct mdp_dev *mdp); 45 void mdp_m2m_device_unregister(struct mdp_dev *mdp); 46 void mdp_m2m_job_finish(struct mdp_m2m_ctx *ctx); 47 48 #endif /* __MTK_MDP3_M2M_H__ */ 49