/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2018 MediaTek Inc.
 * Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com>
 */

#ifndef __MTK_MDP3_CORE_H__
#define __MTK_MDP3_CORE_H__

#include <media/v4l2-device.h>
#include <media/v4l2-mem2mem.h>
#include "mtk-mdp3-comp.h"
#include "mtk-mdp3-vpu.h"

#define MDP_MODULE_NAME	"mtk-mdp3"

enum mdp_buffer_usage {
	MDP_BUFFER_USAGE_HW_READ,
	MDP_BUFFER_USAGE_MDP,
	MDP_BUFFER_USAGE_MDP2,
	MDP_BUFFER_USAGE_ISP,
	MDP_BUFFER_USAGE_WPE,
};

struct mdp_dev {
	struct platform_device	*pdev;
	struct mdp_comp		mmsys;
	struct mdp_comp		mm_mutex;
	struct mdp_comp		*comp[MDP_MAX_COMP_COUNT];
	s32			event[MDP_MAX_EVENT_COUNT];

	struct workqueue_struct	*job_wq;
	struct workqueue_struct	*clock_wq;
	struct mdp_vpu_dev	vpu;
	struct mtk_scp		*scp;
	struct rproc		*rproc_handle;
	/* synchronization protect for accessing vpu working buffer info */
	struct mutex		vpu_lock;
	s32			vpu_count;
	u32			id_count;
	struct ida		mdp_ida;
	struct cmdq_client	*cmdq_clt;
	wait_queue_head_t	callback_wq;

	struct v4l2_device	v4l2_dev;
	struct video_device	*m2m_vdev;
	struct v4l2_m2m_dev	*m2m_dev;
	/* synchronization protect for m2m device operation */
	struct mutex		m2m_lock;
	atomic_t		suspended;
	atomic_t		job_count;
};

int mdp_vpu_get_locked(struct mdp_dev *mdp);
void mdp_vpu_put_locked(struct mdp_dev *mdp);
int mdp_vpu_register(struct mdp_dev *mdp);
void mdp_vpu_unregister(struct mdp_dev *mdp);

extern int mtk_mdp_debug;

#define DEBUG
#if defined(DEBUG)

#define mdp_dbg(level, fmt, ...)\
	do {\
		if (mtk_mdp_debug >= (level))\
			pr_info("[MTK-MDP3] %d %s:%d: " fmt,\
				level, __func__, __LINE__, ##__VA_ARGS__);\
	} while (0)

#define mdp_err(fmt, ...)\
	pr_err("[MTK-MDP3][ERR] %s:%d: " fmt, __func__, __LINE__,\
		##__VA_ARGS__)

#else

#define mdp_dbg(level, fmt, ...)	do {} while (0)
#define mdp_err(fmt, ...)		do {} while (0)

#endif

#define mdp_dbg_enter() mdp_dbg(3, "+")
#define mdp_dbg_leave() mdp_dbg(3, "-")

#endif  /* __MTK_MDP3_CORE_H__ */

