162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2022 MediaTek Inc. 462306a36Sopenharmony_ci * Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef __MTK_MDP3_M2M_H__ 862306a36Sopenharmony_ci#define __MTK_MDP3_M2M_H__ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <media/v4l2-ctrls.h> 1162306a36Sopenharmony_ci#include "mtk-mdp3-core.h" 1262306a36Sopenharmony_ci#include "mtk-mdp3-vpu.h" 1362306a36Sopenharmony_ci#include "mtk-mdp3-regs.h" 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define MDP_MAX_CTRLS 10 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cienum { 1862306a36Sopenharmony_ci MDP_M2M_SRC = 0, 1962306a36Sopenharmony_ci MDP_M2M_DST = 1, 2062306a36Sopenharmony_ci MDP_M2M_MAX, 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct mdp_m2m_ctrls { 2462306a36Sopenharmony_ci struct v4l2_ctrl *hflip; 2562306a36Sopenharmony_ci struct v4l2_ctrl *vflip; 2662306a36Sopenharmony_ci struct v4l2_ctrl *rotate; 2762306a36Sopenharmony_ci}; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistruct mdp_m2m_ctx { 3062306a36Sopenharmony_ci u32 id; 3162306a36Sopenharmony_ci struct mdp_dev *mdp_dev; 3262306a36Sopenharmony_ci struct v4l2_fh fh; 3362306a36Sopenharmony_ci struct v4l2_ctrl_handler ctrl_handler; 3462306a36Sopenharmony_ci struct mdp_m2m_ctrls ctrls; 3562306a36Sopenharmony_ci struct v4l2_m2m_ctx *m2m_ctx; 3662306a36Sopenharmony_ci u32 frame_count[MDP_M2M_MAX]; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci struct mdp_frameparam curr_param; 3962306a36Sopenharmony_ci /* synchronization protect for mdp m2m context */ 4062306a36Sopenharmony_ci struct mutex ctx_lock; 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciint mdp_m2m_device_register(struct mdp_dev *mdp); 4462306a36Sopenharmony_civoid mdp_m2m_device_unregister(struct mdp_dev *mdp); 4562306a36Sopenharmony_civoid mdp_m2m_job_finish(struct mdp_m2m_ctx *ctx); 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#endif /* __MTK_MDP3_M2M_H__ */ 48