| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright (c) 2022 MediaTek Inc. |
| * Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com> |
| */ |
| |
| #ifndef __MTK_MDP3_M2M_H__ |
| #define __MTK_MDP3_M2M_H__ |
| |
| #include <media/v4l2-ctrls.h> |
| #include "mtk-mdp3-core.h" |
| #include "mtk-mdp3-vpu.h" |
| #include "mtk-mdp3-regs.h" |
| |
| #define MDP_MAX_CTRLS 10 |
| |
| enum { |
| MDP_M2M_SRC = 0, |
| MDP_M2M_DST = 1, |
| MDP_M2M_MAX, |
| }; |
| |
| struct mdp_m2m_ctrls { |
| struct v4l2_ctrl *hflip; |
| struct v4l2_ctrl *vflip; |
| struct v4l2_ctrl *rotate; |
| }; |
| |
| struct mdp_m2m_ctx { |
| u32 id; |
| struct mdp_dev *mdp_dev; |
| struct v4l2_fh fh; |
| struct v4l2_ctrl_handler ctrl_handler; |
| struct mdp_m2m_ctrls ctrls; |
| struct v4l2_m2m_ctx *m2m_ctx; |
| u32 frame_count[MDP_M2M_MAX]; |
| |
| struct mdp_frameparam curr_param; |
| /* synchronization protect for mdp m2m context */ |
| struct mutex ctx_lock; |
| }; |
| |
| int mdp_m2m_device_register(struct mdp_dev *mdp); |
| void mdp_m2m_device_unregister(struct mdp_dev *mdp); |
| void mdp_m2m_job_finish(struct mdp_m2m_ctx *ctx); |
| |
| #endif /* __MTK_MDP3_M2M_H__ */ |