#ifndef __SECURE_DPU_H__
#define __SECURE_DPU_H__

#include "cal_common/decon_cal.h"
#include "cal_common/dsim_cal.h"
#include "cal_common/dpp_cal.h"
#include "cal_common/dqe_cal.h"

/* DECON config */
struct tui_decon_device {
	uint32_t id;
	struct decon_regs regs;
	struct decon_config config;
	struct decon_window_regs win_config;
};

/* DSIM config */
struct tui_dsim_device {
	uint32_t id;
	void __iomem *phy_iso_regs;
	struct dsim_regs regs;
	struct dsim_clks clks;
	struct dsim_reg_config config;
};

/* DPP config */
struct tui_dpp_device {
	uint32_t id;
	unsigned long attr;
	struct dpp_regs regs[MAX_DPP_CNT];
	struct dpp_params_info config;
};

struct tui_dqe_device {
	uint32_t id;
	struct dqe_regs regs;
};

/* DPU config */
struct tui_dpu_device {
	bool enabled;
	struct tui_decon_device decon;
	struct tui_dsim_device dsim;
	struct tui_dpp_device dpp;
	struct tui_dqe_device dqe;
};

void tui_dpu_init(uint32_t width, uint32_t height, uint64_t *lcd_info, uint32_t disp_if);
int tui_dpu_ready(uint32_t fb_addr);
int tui_dpu_oneshot(void);
void tui_dpu_deinit(void);

#endif /* __SECURE_DPU_H__ */
