/*
 * Copyright (C) 2005-2015 Freescale Semiconductor, Inc. All Rights Reserved.
 */

/*
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/*
 * @file ipu_regs.h
 *
 * @brief IPU Register definitions
 *
 * @ingroup IPU
 */
#ifndef __IPU_REGS_INCLUDED__
#define __IPU_REGS_INCLUDED__

#include "ipu_prv.h"

#define IPU_MCU_T_DEFAULT	8

/* Register addresses */
/* IPU Common registers */
#define IPU_CM_REG(offset)		(offset)

#define IPU_CONF			IPU_CM_REG(0)
#define IPU_SRM_PRI1			IPU_CM_REG(0x00A0)
#define IPU_SRM_PRI2			IPU_CM_REG(0x00A4)
#define IPU_FS_PROC_FLOW1		IPU_CM_REG(0x00A8)
#define IPU_FS_PROC_FLOW2		IPU_CM_REG(0x00AC)
#define IPU_FS_PROC_FLOW3		IPU_CM_REG(0x00B0)
#define IPU_FS_DISP_FLOW1		IPU_CM_REG(0x00B4)
#define IPU_FS_DISP_FLOW2		IPU_CM_REG(0x00B8)
#define IPU_SKIP			IPU_CM_REG(0x00BC)
#define IPU_DISP_ALT_CONF		IPU_CM_REG(0x00C0)
#define IPU_DISP_GEN			IPU_CM_REG(0x00C4)
#define IPU_DISP_ALT1			IPU_CM_REG(0x00C8)
#define IPU_DISP_ALT2			IPU_CM_REG(0x00CC)
#define IPU_DISP_ALT3			IPU_CM_REG(0x00D0)
#define IPU_DISP_ALT4			IPU_CM_REG(0x00D4)
#define IPU_SNOOP			IPU_CM_REG(0x00D8)
#define IPU_MEM_RST			IPU_CM_REG(0x00DC)
#define IPU_PM				IPU_CM_REG(0x00E0)
#define IPU_GPR				IPU_CM_REG(0x00E4)
#define IPU_CHA_DB_MODE_SEL(ch)		IPU_CM_REG(0x0150 + 4 * ((ch) / 32))
#define IPU_ALT_CHA_DB_MODE_SEL(ch)	IPU_CM_REG(0x0168 + 4 * ((ch) / 32))
/*
 * IPUv3D doesn't support triple buffer, so point
 * IPU_CHA_TRB_MODE_SEL, IPU_CHA_TRIPLE_CUR_BUF and
 * IPU_CHA_BUF2_RDY to readonly
 * IPU_ALT_CUR_BUF0 for IPUv3D.
 */
#define IPU_CHA_TRB_MODE_SEL(type, ch) IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0178 + 4 * ((ch) / 32)) : \
					    (0x012C); })
#define IPU_CHA_TRIPLE_CUR_BUF(type, ch) IPU_CM_REG({(type) >= IPUv3EX ? \
					      (0x0258 + \
					       4 * (((ch) * 2) / 32)) : \
					      (0x012C); })
#define IPU_CHA_BUF2_RDY(type, ch)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0288 + 4 * ((ch) / 32)) : \
					    (0x012C); })
#define IPU_CHA_CUR_BUF(type, ch)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x023C + 4 * ((ch) / 32)) : \
					    (0x0124 + 4 * ((ch) / 32)); })
#define IPU_ALT_CUR_BUF0(type)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0244) : \
					    (0x012C); })
#define IPU_ALT_CUR_BUF1(type)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0248) : \
					    (0x0130); })
#define IPU_SRM_STAT(type)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x024C) : \
					    (0x0134); })
#define IPU_PROC_TASK_STAT(type)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0250) : \
					    (0x0138); })
#define IPU_DISP_TASK_STAT(type)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0254) : \
					    (0x013C); })
#define IPU_CHA_BUF0_RDY(type, ch)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0268 + 4 * ((ch) / 32)) : \
					    (0x0140 + 4 * ((ch) / 32)); })
#define IPU_CHA_BUF1_RDY(type, ch)	IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0270 + 4 * ((ch) / 32)) : \
					    (0x0148 + 4 * ((ch) / 32)); })
#define IPU_ALT_CHA_BUF0_RDY(type, ch) IPU_CM_REG({(type) >= IPUv3EX ? \
					     (0x0278 + 4 * ((ch) / 32)) : \
					     (0x0158 + 4 * ((ch) / 32)); })
#define IPU_ALT_CHA_BUF1_RDY(type, ch) IPU_CM_REG({(type) >= IPUv3EX ? \
					     (0x0280 + 4 * ((ch) / 32)) : \
					     (0x0160 + 4 * ((ch) / 32)); })

#define IPU_INT_CTRL(n)		IPU_CM_REG(0x003C + 4 * ((n) - 1))
#define IPU_INT_STAT(type, n)		IPU_CM_REG({(type) >= IPUv3EX ? \
					    (0x0200 + 4 * ((n) - 1)) : \
					    (0x00E8 + 4 * ((n) - 1)); })

#define IPUIRQ_2_STATREG(type, irq)	IPU_CM_REG(IPU_INT_STAT((type), 1) + 4 \
							* ((irq) / 32))
#define IPUIRQ_2_CTRLREG(irq)	IPU_CM_REG(IPU_INT_CTRL(1) + 4 * ((irq) / 32))
#define IPUIRQ_2_MASK(irq)	(1UL << ((irq) & 0x1F))

/* IPU VDI registers */
#define IPU_VDI_REG(offset)	(offset)

#define VDI_FSIZE		IPU_VDI_REG(0)
#define VDI_C			IPU_VDI_REG(0x0004)

/* IPU CSI Registers */
#define IPU_CSI_REG(offset)	(offset)

#define CSI_SENS_CONF		IPU_CSI_REG(0)
#define CSI_SENS_FRM_SIZE	IPU_CSI_REG(0x0004)
#define CSI_ACT_FRM_SIZE	IPU_CSI_REG(0x0008)
#define CSI_OUT_FRM_CTRL	IPU_CSI_REG(0x000C)
#define CSI_TST_CTRL		IPU_CSI_REG(0x0010)
#define CSI_CCIR_CODE_1		IPU_CSI_REG(0x0014)
#define CSI_CCIR_CODE_2		IPU_CSI_REG(0x0018)
#define CSI_CCIR_CODE_3		IPU_CSI_REG(0x001C)
#define CSI_MIPI_DI		IPU_CSI_REG(0x0020)
#define CSI_SKIP		IPU_CSI_REG(0x0024)
#define CSI_CPD_CTRL		IPU_CSI_REG(0x0028)
#define CSI_CPD_RC(n)		IPU_CSI_REG(0x002C + 4 * (n))
#define CSI_CPD_RS(n)		IPU_CSI_REG(0x004C + 4 * (n))
#define CSI_CPD_GRC(n)		IPU_CSI_REG(0x005C + 4 * (n))
#define CSI_CPD_GRS(n)		IPU_CSI_REG(0x007C + 4 * (n))
#define CSI_CPD_GBC(n)		IPU_CSI_REG(0x008C + 4 * (n))
#define CSI_CPD_GBS(n)		IPU_CSI_REG(0x00AC + 4 * (n))
#define CSI_CPD_BC(n)		IPU_CSI_REG(0x00BC + 4 * (n))
#define CSI_CPD_BS(n)		IPU_CSI_REG(0x00DC + 4 * (n))
#define CSI_CPD_OFFSET1		IPU_CSI_REG(0x00EC)
#define CSI_CPD_OFFSET2		IPU_CSI_REG(0x00F0)

/* IPU SMFC Registers */
#define IPU_SMFC_REG(offset)	(offset)

#define SMFC_MAP		IPU_SMFC_REG(0)
#define SMFC_WMC		IPU_SMFC_REG(0x0004)
#define SMFC_BS			IPU_SMFC_REG(0x0008)

/* IPU IC Registers */
#define IPU_IC_REG(offset)	(offset)

#define IC_CONF			IPU_IC_REG(0)
#define IC_PRP_ENC_RSC		IPU_IC_REG(0x0004)
#define IC_PRP_VF_RSC		IPU_IC_REG(0x0008)
#define IC_PP_RSC		IPU_IC_REG(0x000C)
#define IC_CMBP_1		IPU_IC_REG(0x0010)
#define IC_CMBP_2		IPU_IC_REG(0x0014)
#define IC_IDMAC_1		IPU_IC_REG(0x0018)
#define IC_IDMAC_2		IPU_IC_REG(0x001C)
#define IC_IDMAC_3		IPU_IC_REG(0x0020)
#define IC_IDMAC_4		IPU_IC_REG(0x0024)

/* IPU IDMAC Registers */
#define IPU_IDMAC_REG(offset)	(offset)

#define IDMAC_CONF		IPU_IDMAC_REG(0x0000)
#define IDMAC_CHA_EN(ch)	IPU_IDMAC_REG(0x0004 + 4 * ((ch) / 32))
#define IDMAC_SEP_ALPHA		IPU_IDMAC_REG(0x000C)
#define IDMAC_ALT_SEP_ALPHA	IPU_IDMAC_REG(0x0010)
#define IDMAC_CHA_PRI(ch)	IPU_IDMAC_REG(0x0014 + 4 * ((ch) / 32))
#define IDMAC_WM_EN(ch)		IPU_IDMAC_REG(0x001C + 4 * ((ch) / 32))
#define IDMAC_CH_LOCK_EN_1(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0024) : 0; })
#define IDMAC_CH_LOCK_EN_2(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0028) : \
					       (0x0024); })
#define IDMAC_SUB_ADDR_0(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x002C) : \
					       (0x0028); })
#define IDMAC_SUB_ADDR_1(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0030) : \
					       (0x002C); })
#define IDMAC_SUB_ADDR_2(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0034) : \
					       (0x0030); })
/*
 * IPUv3D doesn't support IDMAC_SUB_ADDR_3 and IDMAC_SUB_ADDR_4,
 * so point them to readonly IDMAC_CHA_BUSY1 for IPUv3D.
 */
#define IDMAC_SUB_ADDR_3(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0038) : \
					       (0x0040); })
#define IDMAC_SUB_ADDR_4(type)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x003C) : \
					       (0x0040); })
#define IDMAC_BAND_EN(type, ch)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0040 + 4 * ((ch) / 32)) : \
					       (0x0034 + 4 * ((ch) / 32)); })
#define IDMAC_CHA_BUSY(type, ch)	IPU_IDMAC_REG({(type) >= IPUv3EX ? \
					       (0x0100 + 4 * ((ch) / 32)) : \
					       (0x0040 + 4 * ((ch) / 32)); })

/* IPU DI Registers */
#define IPU_DI_REG(offset)	(offset)

#define DI_GENERAL		IPU_DI_REG(0)
#define DI_BS_CLKGEN0		IPU_DI_REG(0x0004)
#define DI_BS_CLKGEN1		IPU_DI_REG(0x0008)
#define DI_SW_GEN0(gen)		IPU_DI_REG(0x000C + 4 * ((gen) - 1))
#define DI_SW_GEN1(gen)		IPU_DI_REG(0x0030 + 4 * ((gen) - 1))
#define DI_STP_REP(gen)		IPU_DI_REG(0x0148 + 4 * (((gen) - 1) / 2))
#define DI_SYNC_AS_GEN		IPU_DI_REG(0x0054)
#define DI_DW_GEN(gen)		IPU_DI_REG(0x0058 + 4 * (gen))
#define DI_DW_SET(gen, set)	IPU_DI_REG(0x0088 + 4 * ((gen) + 0xC * (set)))
#define DI_SER_CONF		IPU_DI_REG(0x015C)
#define DI_SSC			IPU_DI_REG(0x0160)
#define DI_POL			IPU_DI_REG(0x0164)
#define DI_AW0			IPU_DI_REG(0x0168)
#define DI_AW1			IPU_DI_REG(0x016C)
#define DI_SCR_CONF		IPU_DI_REG(0x0170)
#define DI_STAT			IPU_DI_REG(0x0174)

/* IPU DMFC Registers */
#define IPU_DMFC_REG(offset)	(offset)

#define DMFC_RD_CHAN		IPU_DMFC_REG(0)
#define DMFC_WR_CHAN		IPU_DMFC_REG(0x0004)
#define DMFC_WR_CHAN_DEF	IPU_DMFC_REG(0x0008)
#define DMFC_DP_CHAN		IPU_DMFC_REG(0x000C)
#define DMFC_DP_CHAN_DEF	IPU_DMFC_REG(0x0010)
#define DMFC_GENERAL1		IPU_DMFC_REG(0x0014)
#define DMFC_GENERAL2		IPU_DMFC_REG(0x0018)
#define DMFC_IC_CTRL		IPU_DMFC_REG(0x001C)
#define DMFC_STAT		IPU_DMFC_REG(0x0020)

/* IPU DC Registers */
#define IPU_DC_REG(offset)	(offset)

#define DC_MAP_CONF_PTR(n)	IPU_DC_REG(0x0108 + ((n) & ~0x1) * 2)
#define DC_MAP_CONF_VAL(n)	IPU_DC_REG(0x0144 + ((n) & ~0x1) * 2)

#define _RL_CH_2_OFFSET(ch)	(((ch) == 0) ? 8 : ( \
				 ((ch) == 1) ? 0x24 : ( \
				 ((ch) == 2) ? 0x40 : ( \
				 ((ch) == 5) ? 0x64 : ( \
				 ((ch) == 6) ? 0x80 : ( \
				 ((ch) == 8) ? 0x9C : ( \
				 ((ch) == 9) ? 0xBC : (-1))))))))
#define DC_RL_CH(ch, evt)	IPU_DC_REG(_RL_CH_2_OFFSET(ch) + \
					   ((evt) & ~0x1) * 2)

#define DC_EVT_NF		0
#define DC_EVT_NL		1
#define DC_EVT_EOF		2
#define DC_EVT_NFIELD		3
#define DC_EVT_EOL		4
#define DC_EVT_EOFIELD		5
#define DC_EVT_NEW_ADDR		6
#define DC_EVT_NEW_CHAN		7
#define DC_EVT_NEW_DATA		8

#define DC_EVT_NEW_ADDR_W_0	0
#define DC_EVT_NEW_ADDR_W_1	1
#define DC_EVT_NEW_CHAN_W_0	2
#define DC_EVT_NEW_CHAN_W_1	3
#define DC_EVT_NEW_DATA_W_0	4
#define DC_EVT_NEW_DATA_W_1	5
#define DC_EVT_NEW_ADDR_R_0	6
#define DC_EVT_NEW_ADDR_R_1	7
#define DC_EVT_NEW_CHAN_R_0	8
#define DC_EVT_NEW_CHAN_R_1	9
#define DC_EVT_NEW_DATA_R_0	10
#define DC_EVT_NEW_DATA_R_1	11
#define DC_EVEN_UGDE0 		12
#define DC_ODD_UGDE0 		13
#define DC_EVEN_UGDE1 		14
#define DC_ODD_UGDE1 		15
#define DC_EVEN_UGDE2 		16
#define DC_ODD_UGDE2 		17
#define DC_EVEN_UGDE3 		18
#define DC_ODD_UGDE3 		19

#define dc_ch_offset(ch) \
({ \
	const u8 _offset[] = { \
		0, 0x1C, 0x38, 0x54, 0x58, 0x5C, 0x78, 0, 0x94, 0xB4}; \
	_offset[ch]; \
})
#define DC_WR_CH_CONF(ch)	IPU_DC_REG(dc_ch_offset(ch))
#define DC_WR_CH_ADDR(ch)	IPU_DC_REG(dc_ch_offset(ch) + 4)

#define DC_WR_CH_CONF_1		IPU_DC_REG(0x001C)
#define DC_WR_CH_ADDR_1		IPU_DC_REG(0x0020)
#define DC_WR_CH_CONF_5		IPU_DC_REG(0x005C)
#define DC_WR_CH_ADDR_5		IPU_DC_REG(0x0060)
#define DC_GEN			IPU_DC_REG(0x00D4)
#define DC_DISP_CONF1(disp)	IPU_DC_REG(0x00D8 + 4 * (disp))
#define DC_DISP_CONF2(disp)	IPU_DC_REG(0x00E8 + 4 * (disp))
#define DC_STAT			IPU_DC_REG(0x01C8)
#define DC_UGDE_0(evt)		IPU_DC_REG(0x0174 + 16 * (evt))
#define DC_UGDE_1(evt)		IPU_DC_REG(0x0178 + 16 * (evt))
#define DC_UGDE_2(evt)		IPU_DC_REG(0x017C + 16 * (evt))
#define DC_UGDE_3(evt)		IPU_DC_REG(0x0180 + 16 * (evt))

/* IPU DP Registers */
#define IPU_DP_REG(offset)		(offset)

#define DP_SYNC				0
#define DP_ASYNC0			0x60
#define DP_ASYNC1			0xBC
#define DP_COM_CONF(flow)		IPU_DP_REG(flow)
#define DP_GRAPH_WIND_CTRL(flow)	IPU_DP_REG(0x0004 + (flow))
#define DP_FG_POS(flow)			IPU_DP_REG(0x0008 + (flow))
#define DP_GAMMA_C(flow, i)		IPU_DP_REG(0x0014 + (flow) + 4 * (i))
#define DP_GAMMA_S(flow, i)		IPU_DP_REG(0x0034 + (flow) + 4 * (i))
#define DP_CSC_A_0(flow)		IPU_DP_REG(0x0044 + (flow))
#define DP_CSC_A_1(flow)		IPU_DP_REG(0x0048 + (flow))
#define DP_CSC_A_2(flow)		IPU_DP_REG(0x004C + (flow))
#define DP_CSC_A_3(flow)		IPU_DP_REG(0x0050 + (flow))
#define DP_CSC_0(flow)			IPU_DP_REG(0x0054 + (flow))
#define DP_CSC_1(flow)			IPU_DP_REG(0x0058 + (flow))

enum {
	IPU_CONF_CSI0_EN = 0x00000001,
	IPU_CONF_CSI1_EN = 0x00000002,
	IPU_CONF_IC_EN = 0x00000004,
	IPU_CONF_ROT_EN = 0x00000008,
	IPU_CONF_ISP_EN = 0x00000010,
	IPU_CONF_DP_EN = 0x00000020,
	IPU_CONF_DI0_EN = 0x00000040,
	IPU_CONF_DI1_EN = 0x00000080,
	IPU_CONF_DMFC_EN = 0x00000400,
	IPU_CONF_SMFC_EN = 0x00000100,
	IPU_CONF_DC_EN = 0x00000200,
	IPU_CONF_VDI_EN = 0x00001000,
	IPU_CONF_IDMAC_DIS = 0x00400000,
	IPU_CONF_IC_DMFC_SEL = 0x02000000,
	IPU_CONF_IC_DMFC_SYNC = 0x04000000,
	IPU_CONF_VDI_DMFC_SYNC = 0x08000000,
	IPU_CONF_CSI0_DATA_SOURCE = 0x10000000,
	IPU_CONF_CSI0_DATA_SOURCE_OFFSET = 28,
	IPU_CONF_CSI1_DATA_SOURCE = 0x20000000,
	IPU_CONF_IC_INPUT = 0x40000000,
	IPU_CONF_CSI_SEL = 0x80000000,

	DI0_COUNTER_RELEASE = 0x01000000,
	DI1_COUNTER_RELEASE = 0x02000000,

	FS_PRPVF_ROT_SRC_SEL_MASK = 0x00000F00,
	FS_PRPVF_ROT_SRC_SEL_OFFSET = 8,
	FS_PRPENC_ROT_SRC_SEL_MASK = 0x0000000F,
	FS_PRPENC_ROT_SRC_SEL_OFFSET = 0,
	FS_PP_ROT_SRC_SEL_MASK = 0x000F0000,
	FS_PP_ROT_SRC_SEL_OFFSET = 16,
	FS_PP_SRC_SEL_MASK = 0x0000F000,
	FS_PP_SRC_SEL_VDOA = 0x00008000,
	FS_PP_SRC_SEL_OFFSET = 12,
	FS_PRP_SRC_SEL_MASK = 0x0F000000,
	FS_PRP_SRC_SEL_OFFSET = 24,
	FS_VF_IN_VALID = 0x80000000,
	FS_ENC_IN_VALID = 0x40000000,
	FS_VDI_SRC_SEL_MASK = 0x30000000,
	FS_VDI_SRC_SEL_VDOA = 0x20000000,
	FS_VDOA_DEST_SEL_MASK = 0x00030000,
	FS_VDOA_DEST_SEL_VDI = 0x00020000,
	FS_VDOA_DEST_SEL_IC = 0x00010000,
	FS_VDI_SRC_SEL_OFFSET = 28,


	FS_PRPENC_DEST_SEL_MASK = 0x0000000F,
	FS_PRPENC_DEST_SEL_OFFSET = 0,
	FS_PRPVF_DEST_SEL_MASK = 0x000000F0,
	FS_PRPVF_DEST_SEL_OFFSET = 4,
	FS_PRPVF_ROT_DEST_SEL_MASK = 0x00000F00,
	FS_PRPVF_ROT_DEST_SEL_OFFSET = 8,
	FS_PP_DEST_SEL_MASK = 0x0000F000,
	FS_PP_DEST_SEL_OFFSET = 12,
	FS_PP_ROT_DEST_SEL_MASK = 0x000F0000,
	FS_PP_ROT_DEST_SEL_OFFSET = 16,
	FS_PRPENC_ROT_DEST_SEL_MASK = 0x00F00000,
	FS_PRPENC_ROT_DEST_SEL_OFFSET = 20,

	FS_SMFC0_DEST_SEL_MASK = 0x0000000F,
	FS_SMFC0_DEST_SEL_OFFSET = 0,
	FS_SMFC1_DEST_SEL_MASK = 0x00000070,
	FS_SMFC1_DEST_SEL_OFFSET = 4,
	FS_SMFC2_DEST_SEL_MASK = 0x00000780,
	FS_SMFC2_DEST_SEL_OFFSET = 7,
	FS_SMFC3_DEST_SEL_MASK = 0x00003800,
	FS_SMFC3_DEST_SEL_OFFSET = 11,

	FS_DC1_SRC_SEL_MASK = 0x00F00000,
	FS_DC1_SRC_SEL_OFFSET = 20,
	FS_DC2_SRC_SEL_MASK = 0x000F0000,
	FS_DC2_SRC_SEL_OFFSET = 16,
	FS_DP_SYNC0_SRC_SEL_MASK = 0x0000000F,
	FS_DP_SYNC0_SRC_SEL_OFFSET = 0,
	FS_DP_SYNC1_SRC_SEL_MASK = 0x000000F0,
	FS_DP_SYNC1_SRC_SEL_OFFSET = 4,
	FS_DP_ASYNC0_SRC_SEL_MASK = 0x00000F00,
	FS_DP_ASYNC0_SRC_SEL_OFFSET = 8,
	FS_DP_ASYNC1_SRC_SEL_MASK = 0x0000F000,
	FS_DP_ASYNC1_SRC_SEL_OFFSET = 12,

	FS_AUTO_REF_PER_MASK = 0,
	FS_AUTO_REF_PER_OFFSET = 16,

	TSTAT_VF_MASK = 0x0000000C,
	TSTAT_VF_OFFSET = 2,
	TSTAT_VF_ROT_MASK = 0x00000300,
	TSTAT_VF_ROT_OFFSET = 8,
	TSTAT_ENC_MASK = 0x00000003,
	TSTAT_ENC_OFFSET = 0,
	TSTAT_ENC_ROT_MASK = 0x000000C0,
	TSTAT_ENC_ROT_OFFSET = 6,
	TSTAT_PP_MASK = 0x00000030,
	TSTAT_PP_OFFSET = 4,
	TSTAT_PP_ROT_MASK = 0x00000C00,
	TSTAT_PP_ROT_OFFSET = 10,

	TASK_STAT_IDLE = 0,
	TASK_STAT_ACTIVE = 1,
	TASK_STAT_WAIT4READY = 2,

	/* IDMAC register bits */
	IDMAC_CONF_USED_BUFS_EN_R = 0x02000000,
	IDMAC_CONF_USED_BUFS_MAX_R_MASK = 0x01E00000,
	IDMAC_CONF_USED_BUFS_MAX_R_OFFSET = 21,
	IDMAC_CONF_USED_BUFS_EN_W = 0x00100000,
	IDMAC_CONF_USED_BUFS_MAX_W_MASK = 0x000E0000,
	IDMAC_CONF_USED_BUFS_MAX_W_OFFSET = 17,

	/* Image Converter Register bits */
	IC_CONF_PRPENC_EN = 0x00000001,
	IC_CONF_PRPENC_CSC1 = 0x00000002,
	IC_CONF_PRPENC_ROT_EN = 0x00000004,
	IC_CONF_PRPVF_EN = 0x00000100,
	IC_CONF_PRPVF_CSC1 = 0x00000200,
	IC_CONF_PRPVF_CSC2 = 0x00000400,
	IC_CONF_PRPVF_CMB = 0x00000800,
	IC_CONF_PRPVF_ROT_EN = 0x00001000,
	IC_CONF_PP_EN = 0x00010000,
	IC_CONF_PP_CSC1 = 0x00020000,
	IC_CONF_PP_CSC2 = 0x00040000,
	IC_CONF_PP_CMB = 0x00080000,
	IC_CONF_PP_ROT_EN = 0x00100000,
	IC_CONF_IC_GLB_LOC_A = 0x10000000,
	IC_CONF_KEY_COLOR_EN = 0x20000000,
	IC_CONF_RWS_EN = 0x40000000,
	IC_CONF_CSI_MEM_WR_EN = 0x80000000,

	IC_RSZ_MAX_RESIZE_RATIO = 0x00004000,

	IC_IDMAC_1_CB0_BURST_16 = 0x00000001,
	IC_IDMAC_1_CB1_BURST_16 = 0x00000002,
	IC_IDMAC_1_CB2_BURST_16 = 0x00000004,
	IC_IDMAC_1_CB3_BURST_16 = 0x00000008,
	IC_IDMAC_1_CB4_BURST_16 = 0x00000010,
	IC_IDMAC_1_CB5_BURST_16 = 0x00000020,
	IC_IDMAC_1_CB6_BURST_16 = 0x00000040,
	IC_IDMAC_1_CB7_BURST_16 = 0x00000080,
	IC_IDMAC_1_PRPENC_ROT_MASK = 0x00003800,
	IC_IDMAC_1_PRPENC_ROT_OFFSET = 11,
	IC_IDMAC_1_PRPVF_ROT_MASK = 0x0001C000,
	IC_IDMAC_1_PRPVF_ROT_OFFSET = 14,
	IC_IDMAC_1_PP_ROT_MASK = 0x000E0000,
	IC_IDMAC_1_PP_ROT_OFFSET = 17,
	IC_IDMAC_1_PP_FLIP_RS = 0x00400000,
	IC_IDMAC_1_PRPVF_FLIP_RS = 0x00200000,
	IC_IDMAC_1_PRPENC_FLIP_RS = 0x00100000,

	IC_IDMAC_2_PRPENC_HEIGHT_MASK = 0x000003FF,
	IC_IDMAC_2_PRPENC_HEIGHT_OFFSET = 0,
	IC_IDMAC_2_PRPVF_HEIGHT_MASK = 0x000FFC00,
	IC_IDMAC_2_PRPVF_HEIGHT_OFFSET = 10,
	IC_IDMAC_2_PP_HEIGHT_MASK = 0x3FF00000,
	IC_IDMAC_2_PP_HEIGHT_OFFSET = 20,

	IC_IDMAC_3_PRPENC_WIDTH_MASK = 0x000003FF,
	IC_IDMAC_3_PRPENC_WIDTH_OFFSET = 0,
	IC_IDMAC_3_PRPVF_WIDTH_MASK = 0x000FFC00,
	IC_IDMAC_3_PRPVF_WIDTH_OFFSET = 10,
	IC_IDMAC_3_PP_WIDTH_MASK = 0x3FF00000,
	IC_IDMAC_3_PP_WIDTH_OFFSET = 20,

	CSI_SENS_CONF_DATA_FMT_SHIFT = 8,
	CSI_SENS_CONF_DATA_FMT_MASK = 0x00000700,
	CSI_SENS_CONF_DATA_FMT_RGB_YUV444 = 0L,
	CSI_SENS_CONF_DATA_FMT_YUV422_YUYV = 1L,
	CSI_SENS_CONF_DATA_FMT_YUV422_UYVY = 2L,
	CSI_SENS_CONF_DATA_FMT_BAYER = 3L,
	CSI_SENS_CONF_DATA_FMT_RGB565 = 4L,
	CSI_SENS_CONF_DATA_FMT_RGB555 = 5L,
	CSI_SENS_CONF_DATA_FMT_RGB444 = 6L,
	CSI_SENS_CONF_DATA_FMT_JPEG = 7L,

	CSI_SENS_CONF_VSYNC_POL_SHIFT = 0,
	CSI_SENS_CONF_HSYNC_POL_SHIFT = 1,
	CSI_SENS_CONF_DATA_POL_SHIFT = 2,
	CSI_SENS_CONF_PIX_CLK_POL_SHIFT = 3,
	CSI_SENS_CONF_SENS_PRTCL_MASK = 0x00000070L,
	CSI_SENS_CONF_SENS_PRTCL_SHIFT = 4,
	CSI_SENS_CONF_PACK_TIGHT_SHIFT = 7,
	CSI_SENS_CONF_DATA_WIDTH_SHIFT = 11,
	CSI_SENS_CONF_EXT_VSYNC_SHIFT = 15,
	CSI_SENS_CONF_DIVRATIO_SHIFT = 16,

	CSI_SENS_CONF_DIVRATIO_MASK = 0x00FF0000L,
	CSI_SENS_CONF_DATA_DEST_SHIFT = 24,
	CSI_SENS_CONF_DATA_DEST_MASK = 0x07000000L,
	CSI_SENS_CONF_JPEG8_EN_SHIFT = 27,
	CSI_SENS_CONF_JPEG_EN_SHIFT = 28,
	CSI_SENS_CONF_FORCE_EOF_SHIFT = 29,
	CSI_SENS_CONF_DATA_EN_POL_SHIFT = 31,

	CSI_DATA_DEST_ISP = 1L,
	CSI_DATA_DEST_IC = 2L,
	CSI_DATA_DEST_IDMAC = 4L,

	CSI_CCIR_ERR_DET_EN = 0x01000000L,
	CSI_HORI_DOWNSIZE_EN = 0x80000000L,
	CSI_VERT_DOWNSIZE_EN = 0x40000000L,
	CSI_TEST_GEN_MODE_EN = 0x01000000L,

	CSI_HSC_MASK = 0x1FFF0000,
	CSI_HSC_SHIFT = 16,
	CSI_VSC_MASK = 0x00000FFF,
	CSI_VSC_SHIFT = 0,

	CSI_TEST_GEN_R_MASK = 0x000000FFL,
	CSI_TEST_GEN_R_SHIFT = 0,
	CSI_TEST_GEN_G_MASK = 0x0000FF00L,
	CSI_TEST_GEN_G_SHIFT = 8,
	CSI_TEST_GEN_B_MASK = 0x00FF0000L,
	CSI_TEST_GEN_B_SHIFT = 16,

	CSI_MIPI_DI0_MASK = 0x000000FFL,
	CSI_MIPI_DI0_SHIFT = 0,
	CSI_MIPI_DI1_MASK = 0x0000FF00L,
	CSI_MIPI_DI1_SHIFT = 8,
	CSI_MIPI_DI2_MASK = 0x00FF0000L,
	CSI_MIPI_DI2_SHIFT = 16,
	CSI_MIPI_DI3_MASK = 0xFF000000L,
	CSI_MIPI_DI3_SHIFT = 24,

	CSI_MAX_RATIO_SKIP_ISP_MASK = 0x00070000L,
	CSI_MAX_RATIO_SKIP_ISP_SHIFT = 16,
	CSI_SKIP_ISP_MASK = 0x00F80000L,
	CSI_SKIP_ISP_SHIFT = 19,
	CSI_MAX_RATIO_SKIP_SMFC_MASK = 0x00000007L,
	CSI_MAX_RATIO_SKIP_SMFC_SHIFT = 0,
	CSI_SKIP_SMFC_MASK = 0x000000F8L,
	CSI_SKIP_SMFC_SHIFT = 3,
	CSI_ID_2_SKIP_MASK = 0x00000300L,
	CSI_ID_2_SKIP_SHIFT = 8,

	CSI_COLOR_FIRST_ROW_MASK = 0x00000002L,
	CSI_COLOR_FIRST_COMP_MASK = 0x00000001L,

	SMFC_MAP_CH0_MASK = 0x00000007L,
	SMFC_MAP_CH0_SHIFT = 0,
	SMFC_MAP_CH1_MASK = 0x00000038L,
	SMFC_MAP_CH1_SHIFT = 3,
	SMFC_MAP_CH2_MASK = 0x000001C0L,
	SMFC_MAP_CH2_SHIFT = 6,
	SMFC_MAP_CH3_MASK = 0x00000E00L,
	SMFC_MAP_CH3_SHIFT = 9,

	SMFC_WM0_SET_MASK = 0x00000007L,
	SMFC_WM0_SET_SHIFT = 0,
	SMFC_WM1_SET_MASK = 0x000001C0L,
	SMFC_WM1_SET_SHIFT = 6,
	SMFC_WM2_SET_MASK = 0x00070000L,
	SMFC_WM2_SET_SHIFT = 16,
	SMFC_WM3_SET_MASK = 0x01C00000L,
	SMFC_WM3_SET_SHIFT = 22,

	SMFC_WM0_CLR_MASK = 0x00000038L,
	SMFC_WM0_CLR_SHIFT = 3,
	SMFC_WM1_CLR_MASK = 0x00000E00L,
	SMFC_WM1_CLR_SHIFT = 9,
	SMFC_WM2_CLR_MASK = 0x00380000L,
	SMFC_WM2_CLR_SHIFT = 19,
	SMFC_WM3_CLR_MASK = 0x0E000000L,
	SMFC_WM3_CLR_SHIFT = 25,

	SMFC_BS0_MASK = 0x0000000FL,
	SMFC_BS0_SHIFT = 0,
	SMFC_BS1_MASK = 0x000000F0L,
	SMFC_BS1_SHIFT = 4,
	SMFC_BS2_MASK = 0x00000F00L,
	SMFC_BS2_SHIFT = 8,
	SMFC_BS3_MASK = 0x0000F000L,
	SMFC_BS3_SHIFT = 12,

	PF_CONF_TYPE_MASK = 0x00000007,
	PF_CONF_TYPE_SHIFT = 0,
	PF_CONF_PAUSE_EN = 0x00000010,
	PF_CONF_RESET = 0x00008000,
	PF_CONF_PAUSE_ROW_MASK = 0x00FF0000,
	PF_CONF_PAUSE_ROW_SHIFT = 16,

	DI_DW_GEN_ACCESS_SIZE_OFFSET = 24,
	DI_DW_GEN_COMPONENT_SIZE_OFFSET = 16,

	DI_GEN_DI_CLK_EXT = 0x100000,
	DI_GEN_POLARITY_DISP_CLK = 0x00020000,
	DI_GEN_POLARITY_1 = 0x00000001,
	DI_GEN_POLARITY_2 = 0x00000002,
	DI_GEN_POLARITY_3 = 0x00000004,
	DI_GEN_POLARITY_4 = 0x00000008,
	DI_GEN_POLARITY_5 = 0x00000010,
	DI_GEN_POLARITY_6 = 0x00000020,
	DI_GEN_POLARITY_7 = 0x00000040,
	DI_GEN_POLARITY_8 = 0x00000080,

	DI_POL_DRDY_DATA_POLARITY = 0x00000080,
	DI_POL_DRDY_POLARITY_15 = 0x00000010,

	DI_VSYNC_SEL_OFFSET = 13,

	DC_WR_CH_CONF_FIELD_MODE = 0x00000200,
	DC_WR_CH_CONF_PROG_TYPE_OFFSET = 5,
	DC_WR_CH_CONF_PROG_TYPE_MASK = 0x000000E0,
	DC_WR_CH_CONF_PROG_DI_ID = 0x00000004,
	DC_WR_CH_CONF_PROG_DISP_ID_OFFSET = 3,
	DC_WR_CH_CONF_PROG_DISP_ID_MASK = 0x00000018,

	DC_UGDE_0_ODD_EN = 0x02000000,
	DC_UGDE_0_ID_CODED_MASK = 0x00000007,
	DC_UGDE_0_ID_CODED_OFFSET = 0,
	DC_UGDE_0_EV_PRIORITY_MASK = 0x00000078,
	DC_UGDE_0_EV_PRIORITY_OFFSET = 3,

	DP_COM_CONF_FG_EN = 0x00000001,
	DP_COM_CONF_GWSEL = 0x00000002,
	DP_COM_CONF_GWAM = 0x00000004,
	DP_COM_CONF_GWCKE = 0x00000008,
	DP_COM_CONF_CSC_DEF_MASK = 0x00000300,
	DP_COM_CONF_CSC_DEF_OFFSET = 8,
	DP_COM_CONF_CSC_DEF_FG = 0x00000300,
	DP_COM_CONF_CSC_DEF_BG = 0x00000200,
	DP_COM_CONF_CSC_DEF_BOTH = 0x00000100,
	DP_COM_CONF_GAMMA_EN = 0x00001000,
	DP_COM_CONF_GAMMA_YUV_EN = 0x00002000,

	DI_SER_CONF_LLA_SER_ACCESS = 0x00000020,
	DI_SER_CONF_SERIAL_CLK_POL = 0x00000010,
	DI_SER_CONF_SERIAL_DATA_POL = 0x00000008,
	DI_SER_CONF_SERIAL_RS_POL = 0x00000004,
	DI_SER_CONF_SERIAL_CS_POL = 0x00000002,
	DI_SER_CONF_WAIT4SERIAL = 0x00000001,

	VDI_C_CH_420 = 0x00000000,
	VDI_C_CH_422 = 0x00000002,
	VDI_C_MOT_SEL_FULL = 0x00000008,
	VDI_C_MOT_SEL_LOW = 0x00000004,
	VDI_C_MOT_SEL_MED = 0x00000000,
	VDI_C_BURST_SIZE1_4 = 0x00000030,
	VDI_C_BURST_SIZE2_4 = 0x00000300,
	VDI_C_BURST_SIZE3_4 = 0x00003000,
	VDI_C_BURST_SIZE_MASK = 0xF,
	VDI_C_BURST_SIZE1_OFFSET = 4,
	VDI_C_BURST_SIZE2_OFFSET = 8,
	VDI_C_BURST_SIZE3_OFFSET = 12,
	VDI_C_VWM1_SET_1 = 0x00000000,
	VDI_C_VWM1_SET_2 = 0x00010000,
	VDI_C_VWM1_CLR_2 = 0x00080000,
	VDI_C_VWM3_SET_1 = 0x00000000,
	VDI_C_VWM3_SET_2 = 0x00400000,
	VDI_C_VWM3_CLR_2 = 0x02000000,
	VDI_C_TOP_FIELD_MAN_1 = 0x40000000,
	VDI_C_TOP_FIELD_AUTO_1 = 0x80000000,
};

enum di_pins {
	DI_PIN11 = 0,
	DI_PIN12 = 1,
	DI_PIN13 = 2,
	DI_PIN14 = 3,
	DI_PIN15 = 4,
	DI_PIN16 = 5,
	DI_PIN17 = 6,
	DI_PIN_CS = 7,

	DI_PIN_SER_CLK = 0,
	DI_PIN_SER_RS = 1,
};

enum di_sync_wave {
	DI_SYNC_NONE = -1,
	DI_SYNC_CLK = 0,
	DI_SYNC_INT_HSYNC = 1,
	DI_SYNC_HSYNC = 2,
	DI_SYNC_VSYNC = 3,
	DI_SYNC_DE = 5,
};

/* DC template opcodes */
#define WROD(lf)		(0x18 | ((lf) << 1))
#define WRG	        	(0x01)

#endif
