/*
 * Copyright (C) 2012 Texas Instruments Inc
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation version 2.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *
 * Contributors:
 *      Manjunath Hadli <manjunath.hadli@ti.com>
 *      Prabhakar Lad <prabhakar.lad@ti.com>
 */

#ifndef _DAVINCI_VPFE_DM365_IPIPE_HW_H
#define _DAVINCI_VPFE_DM365_IPIPE_HW_H

#include "vpfe_mc_capture.h"

#define SET_LOW_ADDR     0x0000ffff
#define SET_HIGH_ADDR    0xffff0000

/* Below are the internal tables */
#define DPC_TB0_START_ADDR	0x8000
#define DPC_TB1_START_ADDR	0x8400

#define GAMMA_R_START_ADDR	0xa800
#define GAMMA_G_START_ADDR	0xb000
#define GAMMA_B_START_ADDR	0xb800

/* RAM table addresses for edge enhancement correction*/
#define YEE_TB_START_ADDR	0x8800

/* RAM table address for GBC LUT */
#define GBCE_TB_START_ADDR	0x9000

/* RAM table for 3D NF LUT */
#define D3L_TB0_START_ADDR	0x9800
#define D3L_TB1_START_ADDR	0x9c00
#define D3L_TB2_START_ADDR	0xa000
#define D3L_TB3_START_ADDR	0xa400

/* IPIPE Register Offsets from the base address */
#define IPIPE_SRC_EN		0x0000
#define IPIPE_SRC_MODE		0x0004
#define IPIPE_SRC_FMT		0x0008
#define IPIPE_SRC_COL		0x000c
#define IPIPE_SRC_VPS		0x0010
#define IPIPE_SRC_VSZ		0x0014
#define IPIPE_SRC_HPS		0x0018
#define IPIPE_SRC_HSZ		0x001c

#define IPIPE_SEL_SBU		0x0020

#define IPIPE_DMA_STA		0x0024
#define IPIPE_GCK_MMR		0x0028
#define IPIPE_GCK_PIX		0x002c
#define IPIPE_RESERVED0		0x0030

/* Defect Correction */
#define DPC_LUT_EN		0x0034
#define DPC_LUT_SEL		0x0038
#define DPC_LUT_ADR		0x003c
#define DPC_LUT_SIZ		0x0040
#define DPC_OTF_EN		0x0044
#define DPC_OTF_TYP		0x0048
#define DPC_OTF_2D_THR_R	0x004c
#define DPC_OTF_2D_THR_GR	0x0050
#define DPC_OTF_2D_THR_GB	0x0054
#define DPC_OTF_2D_THR_B	0x0058
#define DPC_OTF_2C_THR_R	0x005c
#define DPC_OTF_2C_THR_GR	0x0060
#define DPC_OTF_2C_THR_GB	0x0064
#define DPC_OTF_2C_THR_B	0x0068
#define DPC_OTF_3_SHF		0x006c
#define DPC_OTF_3D_THR		0x0070
#define DPC_OTF_3D_SLP		0x0074
#define DPC_OTF_3D_MIN		0x0078
#define DPC_OTF_3D_MAX		0x007c
#define DPC_OTF_3C_THR		0x0080
#define DPC_OTF_3C_SLP		0x0084
#define DPC_OTF_3C_MIN		0x0088
#define DPC_OTF_3C_MAX		0x008c

/* Lense Shading Correction */
#define LSC_VOFT		0x90
#define LSC_VA2			0x94
#define LSC_VA1			0x98
#define LSC_VS			0x9c
#define LSC_HOFT		0xa0
#define LSC_HA2			0xa4
#define LSC_HA1			0xa8
#define LSC_HS			0xac
#define LSC_GAIN_R		0xb0
#define LSC_GAIN_GR		0xb4
#define LSC_GAIN_GB		0xb8
#define LSC_GAIN_B		0xbc
#define LSC_OFT_R		0xc0
#define LSC_OFT_GR		0xc4
#define LSC_OFT_GB		0xc8
#define LSC_OFT_B		0xcc
#define LSC_SHF			0xd0
#define LSC_MAX			0xd4

/* Noise Filter 1. Ofsets from start address given */
#define D2F_1ST			0xd8
#define D2F_EN			0x0
#define D2F_TYP			0x4
#define D2F_THR			0x8
#define D2F_STR			0x28
#define D2F_SPR			0x48
#define D2F_EDG_MIN		0x68
#define D2F_EDG_MAX		0x6c

/* Noise Filter 2 */
#define D2F_2ND			0x148

/* GIC */
#define GIC_EN			0x1b8
#define GIC_TYP			0x1bc
#define GIC_GAN			0x1c0
#define GIC_NFGAN		0x1c4
#define GIC_THR			0x1c8
#define GIC_SLP			0x1cc

/* White Balance */
#define WB2_OFT_R		0x1d0
#define WB2_OFT_GR		0x1d4
#define WB2_OFT_GB		0x1d8
#define WB2_OFT_B		0x1dc
#define WB2_WGN_R		0x1e0
#define WB2_WGN_GR		0x1e4
#define WB2_WGN_GB		0x1e8
#define WB2_WGN_B		0x1ec

/* CFA interpolation */
#define CFA_MODE		0x1f0
#define CFA_2DIR_HPF_THR	0x1f4
#define CFA_2DIR_HPF_SLP	0x1f8
#define CFA_2DIR_MIX_THR	0x1fc
#define CFA_2DIR_MIX_SLP	0x200
#define CFA_2DIR_DIR_THR	0x204
#define CFA_2DIR_DIR_SLP	0x208
#define CFA_2DIR_NDWT		0x20c
#define CFA_MONO_HUE_FRA	0x210
#define CFA_MONO_EDG_THR	0x214
#define CFA_MONO_THR_MIN	0x218
#define CFA_MONO_THR_SLP	0x21c
#define CFA_MONO_SLP_MIN	0x220
#define CFA_MONO_SLP_SLP	0x224
#define CFA_MONO_LPWT		0x228

/* RGB to RGB conversiona - 1st */
#define RGB1_MUL_BASE		0x22c
/* Offsets from base */
#define RGB_MUL_RR		0x0
#define RGB_MUL_GR		0x4
#define RGB_MUL_BR		0x8
#define RGB_MUL_RG		0xc
#define RGB_MUL_GG		0x10
#define RGB_MUL_BG		0x14
#define RGB_MUL_RB		0x18
#define RGB_MUL_GB		0x1c
#define RGB_MUL_BB		0x20
#define RGB_OFT_OR		0x24
#define RGB_OFT_OG		0x28
#define RGB_OFT_OB		0x2c

/* Gamma */
#define GMM_CFG			0x25c

/* RGB to RGB conversiona - 2nd */
#define RGB2_MUL_BASE		0x260

/* 3D LUT */
#define D3LUT_EN		0x290

/* RGB to YUV(YCbCr) conversion */
#define YUV_ADJ			0x294
#define YUV_MUL_RY		0x298
#define YUV_MUL_GY		0x29c
#define YUV_MUL_BY		0x2a0
#define YUV_MUL_RCB		0x2a4
#define YUV_MUL_GCB		0x2a8
#define YUV_MUL_BCB		0x2ac
#define YUV_MUL_RCR		0x2b0
#define YUV_MUL_GCR		0x2b4
#define YUV_MUL_BCR		0x2b8
#define YUV_OFT_Y		0x2bc
#define YUV_OFT_CB		0x2c0
#define YUV_OFT_CR		0x2c4
#define YUV_PHS			0x2c8

/* Global Brightness and Contrast */
#define GBCE_EN			0x2cc
#define GBCE_TYP		0x2d0

/* Edge Enhancer */
#define YEE_EN			0x2d4
#define YEE_TYP			0x2d8
#define YEE_SHF			0x2dc
#define YEE_MUL_00		0x2e0
#define YEE_MUL_01		0x2e4
#define YEE_MUL_02		0x2e8
#define YEE_MUL_10		0x2ec
#define YEE_MUL_11		0x2f0
#define YEE_MUL_12		0x2f4
#define YEE_MUL_20		0x2f8
#define YEE_MUL_21		0x2fc
#define YEE_MUL_22		0x300
#define YEE_THR			0x304
#define YEE_E_GAN		0x308
#define YEE_E_THR1		0x30c
#define YEE_E_THR2		0x310
#define YEE_G_GAN		0x314
#define YEE_G_OFT		0x318

/* Chroma Artifact Reduction */
#define CAR_EN			0x31c
#define CAR_TYP			0x320
#define CAR_SW			0x324
#define CAR_HPF_TYP		0x328
#define CAR_HPF_SHF		0x32c
#define	CAR_HPF_THR		0x330
#define CAR_GN1_GAN		0x334
#define CAR_GN1_SHF		0x338
#define CAR_GN1_MIN		0x33c
#define CAR_GN2_GAN		0x340
#define CAR_GN2_SHF		0x344
#define CAR_GN2_MIN		0x348

/* Chroma Gain Suppression */
#define CGS_EN			0x34c
#define CGS_GN1_L_THR		0x350
#define CGS_GN1_L_GAN		0x354
#define CGS_GN1_L_SHF		0x358
#define CGS_GN1_L_MIN		0x35c
#define CGS_GN1_H_THR		0x360
#define CGS_GN1_H_GAN		0x364
#define CGS_GN1_H_SHF		0x368
#define CGS_GN1_H_MIN		0x36c
#define CGS_GN2_L_THR		0x370
#define CGS_GN2_L_GAN		0x374
#define CGS_GN2_L_SHF		0x378
#define CGS_GN2_L_MIN		0x37c

/* Resizer */
#define RSZ_SRC_EN		0x0
#define RSZ_SRC_MODE		0x4
#define RSZ_SRC_FMT0		0x8
#define RSZ_SRC_FMT1		0xc
#define RSZ_SRC_VPS		0x10
#define RSZ_SRC_VSZ		0x14
#define RSZ_SRC_HPS		0x18
#define RSZ_SRC_HSZ		0x1c
#define RSZ_DMA_RZA		0x20
#define RSZ_DMA_RZB		0x24
#define RSZ_DMA_STA		0x28
#define RSZ_GCK_MMR		0x2c
#define RSZ_RESERVED0		0x30
#define RSZ_GCK_SDR		0x34
#define RSZ_IRQ_RZA		0x38
#define RSZ_IRQ_RZB		0x3c
#define RSZ_YUV_Y_MIN		0x40
#define RSZ_YUV_Y_MAX		0x44
#define RSZ_YUV_C_MIN		0x48
#define RSZ_YUV_C_MAX		0x4c
#define RSZ_YUV_PHS		0x50
#define RSZ_SEQ			0x54

/* Resizer Rescale Parameters */
#define RSZ_EN_A		0x58
#define RSZ_EN_B		0xe8
/* offset of the registers to be added with base register of
   either RSZ0 or RSZ1
*/
#define RSZ_MODE		0x4
#define RSZ_420			0x8
#define RSZ_I_VPS		0xc
#define RSZ_I_HPS		0x10
#define RSZ_O_VSZ		0x14
#define RSZ_O_HSZ		0x18
#define RSZ_V_PHS_Y		0x1c
#define RSZ_V_PHS_C		0x20
#define RSZ_V_DIF		0x24
#define RSZ_V_TYP		0x28
#define RSZ_V_LPF		0x2c
#define RSZ_H_PHS		0x30
#define RSZ_H_PHS_ADJ		0x34
#define RSZ_H_DIF		0x38
#define RSZ_H_TYP		0x3c
#define RSZ_H_LPF		0x40
#define RSZ_DWN_EN		0x44
#define RSZ_DWN_AV		0x48

/* Resizer RGB Conversion Parameters */
#define RSZ_RGB_EN		0x4c
#define RSZ_RGB_TYP		0x50
#define RSZ_RGB_BLD		0x54

/* Resizer External Memory Parameters */
#define RSZ_SDR_Y_BAD_H		0x58
#define RSZ_SDR_Y_BAD_L		0x5c
#define RSZ_SDR_Y_SAD_H		0x60
#define RSZ_SDR_Y_SAD_L		0x64
#define RSZ_SDR_Y_OFT		0x68
#define RSZ_SDR_Y_PTR_S		0x6c
#define RSZ_SDR_Y_PTR_E		0x70
#define RSZ_SDR_C_BAD_H		0x74
#define RSZ_SDR_C_BAD_L		0x78
#define RSZ_SDR_C_SAD_H		0x7c
#define RSZ_SDR_C_SAD_L		0x80
#define RSZ_SDR_C_OFT		0x84
#define RSZ_SDR_C_PTR_S		0x88
#define RSZ_SDR_C_PTR_E		0x8c

/* Macro for resizer */
#define RSZ_YUV_Y_MIN		0x40
#define RSZ_YUV_Y_MAX		0x44
#define RSZ_YUV_C_MIN		0x48
#define RSZ_YUV_C_MAX		0x4c

#define IPIPE_GCK_MMR_DEFAULT	1
#define IPIPE_GCK_PIX_DEFAULT	0xe
#define RSZ_GCK_MMR_DEFAULT	1
#define RSZ_GCK_SDR_DEFAULT	1

/* LUTDPC */
#define LUTDPC_TBL_256_EN	0
#define LUTDPC_INF_TBL_EN	1
#define LUT_DPC_START_ADDR	0
#define LUT_DPC_H_POS_MASK	0x1fff
#define LUT_DPC_V_POS_MASK	0x1fff
#define LUT_DPC_V_POS_SHIFT	13
#define LUT_DPC_CORR_METH_SHIFT	26
#define LUT_DPC_MAX_SIZE	256
#define LUT_DPC_SIZE_MASK	0x3ff

/* OTFDPC */
#define OTFDPC_DPC2_THR_MASK	0xfff
#define OTF_DET_METHOD_SHIFT	1
#define OTF_DPC3_0_SHF_MASK	3
#define OTF_DPC3_0_THR_SHIFT	6
#define OTF_DPC3_0_THR_MASK	0x3f
#define OTF_DPC3_0_SLP_MASK	0x3f
#define OTF_DPC3_0_DET_MASK	0xfff
#define OTF_DPC3_0_CORR_MASK	0xfff

/* NF (D2F) */
#define D2F_SPR_VAL_MASK		0x1f
#define D2F_SPR_VAL_SHIFT		0
#define D2F_SHFT_VAL_MASK		3
#define D2F_SHFT_VAL_SHIFT		5
#define D2F_SAMPLE_METH_SHIFT		7
#define D2F_APPLY_LSC_GAIN_SHIFT	8
#define D2F_USE_SPR_REG_VAL		0
#define D2F_STR_VAL_MASK		0x1f
#define D2F_THR_VAL_MASK		0x3ff
#define D2F_EDGE_DET_THR_MASK		0x7ff

/* Green Imbalance Correction */
#define GIC_TYP_SHIFT			0
#define GIC_THR_SEL_SHIFT		1
#define	GIC_APPLY_LSC_GAIN_SHIFT	2
#define GIC_GAIN_MASK			0xff
#define GIC_THR_MASK			0xfff
#define GIC_SLOPE_MASK			0xfff
#define GIC_NFGAN_INT_MASK		7
#define GIC_NFGAN_DECI_MASK		0x1f

/* WB */
#define WB_OFFSET_MASK			0xfff
#define WB_GAIN_INT_MASK		0xf
#define WB_GAIN_DECI_MASK		0x1ff

/* CFA */
#define CFA_HPF_THR_2DIR_MASK		0x1fff
#define CFA_HPF_SLOPE_2DIR_MASK		0x3ff
#define CFA_HPF_MIX_THR_2DIR_MASK	0x1fff
#define CFA_HPF_MIX_SLP_2DIR_MASK	0x3ff
#define CFA_DIR_THR_2DIR_MASK		0x3ff
#define CFA_DIR_SLP_2DIR_MASK		0x7f
#define CFA_ND_WT_2DIR_MASK		0x3f
#define CFA_DAA_HUE_FRA_MASK		0x3f
#define CFA_DAA_EDG_THR_MASK		0xff
#define CFA_DAA_THR_MIN_MASK		0x3ff
#define CFA_DAA_THR_SLP_MASK		0x3ff
#define CFA_DAA_SLP_MIN_MASK		0x3ff
#define CFA_DAA_SLP_SLP_MASK		0x3ff
#define CFA_DAA_LP_WT_MASK		0x3f

/* RGB2RGB */
#define RGB2RGB_1_OFST_MASK		0x1fff
#define RGB2RGB_1_GAIN_INT_MASK		0xf
#define RGB2RGB_GAIN_DECI_MASK		0xff
#define RGB2RGB_2_OFST_MASK		0x7ff
#define RGB2RGB_2_GAIN_INT_MASK		0x7

/* Gamma */
#define GAMMA_BYPR_SHIFT		0
#define GAMMA_BYPG_SHIFT		1
#define GAMMA_BYPB_SHIFT		2
#define GAMMA_TBL_SEL_SHIFT		4
#define GAMMA_TBL_SIZE_SHIFT		5
#define GAMMA_MASK			0x3ff
#define GAMMA_SHIFT			10

/* 3D LUT */
#define D3_LUT_ENTRY_MASK		0x3ff
#define D3_LUT_ENTRY_R_SHIFT		20
#define D3_LUT_ENTRY_G_SHIFT		10
#define D3_LUT_ENTRY_B_SHIFT		0

/* Lumina adj */
#define	LUM_ADJ_CONTR_SHIFT		0
#define	LUM_ADJ_BRIGHT_SHIFT		8

/* RGB2YCbCr */
#define RGB2YCBCR_OFST_MASK		0x7ff
#define RGB2YCBCR_COEF_INT_MASK		0xf
#define RGB2YCBCR_COEF_DECI_MASK	0xff

/* GBCE */
#define GBCE_Y_VAL_MASK			0xff
#define GBCE_GAIN_VAL_MASK		0x3ff
#define GBCE_ENTRY_SHIFT		10

/* Edge Enhancements */
#define YEE_HALO_RED_EN_SHIFT		1
#define YEE_HPF_SHIFT_MASK		0xf
#define YEE_COEF_MASK			0x3ff
#define YEE_THR_MASK			0x3f
#define YEE_ES_GAIN_MASK		0xfff
#define YEE_ES_THR1_MASK		0xfff
#define YEE_ENTRY_SHIFT			9
#define YEE_ENTRY_MASK			0x1ff

/* CAR */
#define CAR_MF_THR			0xff
#define CAR_SW1_SHIFT			8
#define CAR_GAIN1_SHFT_MASK		7
#define CAR_GAIN_MIN_MASK		0x1ff
#define CAR_GAIN2_SHFT_MASK		0xf
#define CAR_HPF_SHIFT_MASK		3

/* CGS */
#define CAR_SHIFT_MASK			3

/* Resizer */
#define RSZ_BYPASS_SHIFT		1
#define RSZ_SRC_IMG_FMT_SHIFT		1
#define RSZ_SRC_Y_C_SEL_SHIFT		2
#define IPIPE_RSZ_VPS_MASK		0xffff
#define IPIPE_RSZ_HPS_MASK		0xffff
#define IPIPE_RSZ_VSZ_MASK		0x1fff
#define IPIPE_RSZ_HSZ_MASK		0x1fff
#define RSZ_HPS_MASK			0x1fff
#define RSZ_VPS_MASK			0x1fff
#define RSZ_O_HSZ_MASK			0x1fff
#define RSZ_O_VSZ_MASK			0x1fff
#define RSZ_V_PHS_MASK			0x3fff
#define RSZ_V_DIF_MASK			0x3fff

#define RSZA_H_FLIP_SHIFT		0
#define RSZA_V_FLIP_SHIFT		1
#define RSZB_H_FLIP_SHIFT		2
#define RSZB_V_FLIP_SHIFT		3
#define RSZ_A				0
#define RSZ_B				1
#define RSZ_CEN_SHIFT			1
#define RSZ_YEN_SHIFT			0
#define RSZ_TYP_Y_SHIFT			0
#define RSZ_TYP_C_SHIFT			1
#define RSZ_LPF_INT_MASK		0x3f
#define RSZ_LPF_INT_C_SHIFT		6
#define RSZ_H_PHS_MASK			0x3fff
#define RSZ_H_DIF_MASK			0x3fff
#define RSZ_DIFF_DOWN_THR		256
#define RSZ_DWN_SCALE_AV_SZ_V_SHIFT	3
#define RSZ_DWN_SCALE_AV_SZ_MASK	7
#define RSZ_RGB_MSK1_SHIFT		2
#define RSZ_RGB_MSK0_SHIFT		1
#define RSZ_RGB_TYP_SHIFT		0
#define RSZ_RGB_ALPHA_MASK		0xff

static inline u32 regr_ip(void __iomem *addr, u32 offset)
{
	return readl(addr + offset);
}

static inline void regw_ip(void __iomem *addr, u32 val, u32 offset)
{
	writel(val, addr + offset);
}

static inline u32 w_ip_table(void __iomem *addr, u32 val, u32 offset)
{
	writel(val, addr + offset);

	return val;
}

static inline u32 regr_rsz(void __iomem *addr, u32 offset)
{
	return readl(addr + offset);
}

static inline u32 regw_rsz(void __iomem *addr, u32 val, u32 offset)
{
	writel(val, addr + offset);

	return val;
}

int config_ipipe_hw(struct vpfe_ipipe_device *ipipe);
int resizer_set_outaddr(void __iomem *rsz_base, struct resizer_params *params,
			int resize_no, unsigned int address);
int rsz_enable(void __iomem *rsz_base, int rsz_id, int enable);
void rsz_src_enable(void __iomem *rsz_base, int enable);
void rsz_set_in_pix_format(unsigned char y_c);
int config_rsz_hw(struct vpfe_resizer_device *resizer,
		  struct resizer_params *config);
void ipipe_set_d2f_regs(void __iomem *base_addr, unsigned int id,
	struct vpfe_ipipe_nf *noise_filter);
void ipipe_set_rgb2rgb_regs(void __iomem *base_addr, unsigned int id,
	struct vpfe_ipipe_rgb2rgb *rgb);
void ipipe_set_yuv422_conv_regs(void __iomem *base_addr,
	struct vpfe_ipipe_yuv422_conv *conv);
void ipipe_set_lum_adj_regs(void __iomem *base_addr,
	struct ipipe_lum_adj *lum_adj);
void ipipe_set_rgb2ycbcr_regs(void __iomem *base_addr,
	struct vpfe_ipipe_rgb2yuv *yuv);
void ipipe_set_lutdpc_regs(void __iomem *base_addr,
	void __iomem *isp5_base_addr, struct vpfe_ipipe_lutdpc *lutdpc);
void ipipe_set_otfdpc_regs(void __iomem *base_addr,
	struct vpfe_ipipe_otfdpc *otfdpc);
void ipipe_set_3d_lut_regs(void __iomem *base_addr,
	void __iomem *isp5_base_addr, struct vpfe_ipipe_3d_lut *lut_3d);
void ipipe_set_gamma_regs(void __iomem *base_addr,
	void __iomem *isp5_base_addr, struct vpfe_ipipe_gamma *gamma);
void ipipe_set_ee_regs(void __iomem *base_addr,
	void __iomem *isp5_base_addr, struct vpfe_ipipe_yee *ee);
void ipipe_set_gbce_regs(void __iomem *base_addr,
	void __iomem *isp5_base_addr, struct vpfe_ipipe_gbce *gbce);
void ipipe_set_gic_regs(void __iomem *base_addr, struct vpfe_ipipe_gic *gic);
void ipipe_set_cfa_regs(void __iomem *base_addr, struct vpfe_ipipe_cfa *cfa);
void ipipe_set_car_regs(void __iomem *base_addr, struct vpfe_ipipe_car *car);
void ipipe_set_cgs_regs(void __iomem *base_addr, struct vpfe_ipipe_cgs *cgs);
void ipipe_set_wb_regs(void __iomem *base_addr, struct vpfe_ipipe_wb *wb);

#endif		/* _DAVINCI_VPFE_DM365_IPIPE_HW_H */
