#ifndef __MMP_B52_SENSOR_H__
#define __MMP_B52_SENSOR_H__

#include <linux/types.h>
#include <linux/gpio/consumer.h>
#include <media/v4l2-subdev.h>
#include <media/v4l2-ctrls.h>
#include <uapi/linux/v4l2-mediabus.h>
#include <media/mrvl-camera.h>
#include <media/b52_api.h>
#define MAX_REGULATOR_NUM   (5)
#define MAX_SENSOR_FMT_NUM  (4)

/*
 * if want to 5m delay, set regval_tab to
 * [SENSOR_MDELAY, SENSOR_MDELAY, 5]
 */
#define SENSOR_MDELAY    (0xffff)

/* forward references */
struct b52_sensor;

#define to_b52_sensor(sd) container_of((sd), struct b52_sensor, sd);

#define b52_sensor_call(s, f, args...) \
	(!(s) ? -ENODEV : (((s)->ops.f) ? \
	(s)->ops.f((&(s)->sd) , ##args)   \
	: -ENOIOCTLCMD))

enum b52_sensor_i2c_pos {
	B52_SENSOR_I2C_NONE = 0,
	B52_SENSOR_I2C_PRIMARY_MASTER,
	B52_SENSOR_I2C_SECONDARY_MASTER,
	B52_SENSOR_I2C_BOTH,
};

enum b52_sensor_type {
	OVT_SENSOR = 0,
	SONY_SENSOR,
	SAMSUNG_SENSOR,
	HYNIX_SENSOR,
};

enum b52_sensor_gain_type {
	B52_SENSOR_AG = 0,
	B52_SENSOR_DG,
	B52_SENSOR_GAIN_MAX,
};

enum b52_sensor_param_type {
	B52_SENSOR_GAIN = 0,
	B52_SENSOR_AGAIN,
	B52_SENSOR_DGAIN,
	B52_SENSOR_EXPO,
	B52_SENSOR_FRACTIONALEXPO,
	B52_SENSOR_VTS,
	B52_SENSOR_REQ_VTS,
	B52_SENSOR_REQ_HTS,
	B52_SENSOR_FOCUS,
	B52_SENSOR_PARAM_MAX,
};

struct regval_tab {
	u16 reg;
	u16 val;
	u16 mask;
};

struct b52_sensor_regs {
	struct regval_tab *tab;
	u32 num;
};

struct b52_sensor_mbus_fmt {
	enum v4l2_mbus_pixelcode mbus_code;
	enum v4l2_colorspace colorspace;
	struct b52_sensor_regs regs;
};

/*cropped for video*/
enum b52_sensor_res_prop {
	SENSOR_RES_BINING1,
	SENSOR_RES_BINING2,
	SENSOR_RES_CROPPED,
	SENSOR_RES_MAX,
};

/*HB >= 7% one line length, unit pixel */
/*not include exposure, gain and VTS cfg*/
struct b52_sensor_resolution {
	u32 width;
	u32 height;
	u32 hts;
	u32 min_vts;
	enum b52_sensor_res_prop prop;
	struct b52_sensor_regs regs;
};

struct sensor_prop_range {
	u32 min;
	u32 max;
};

struct b52_sensor_vcm {
	const char *name;
	enum b52_vcm_type type;
	struct b52_sensor_i2c_attr *attr;
	u16 pos_reg_msb;
	u16 pos_reg_lsb;
	/*suppose this property belongs to some module */
	struct b52_sensor_regs id;
	struct b52_sensor_regs init;
};

struct b52_sensor_module {
	u32 id;
	u32 apeture_size;
	struct b52_sensor_vcm *vcm;
};
struct b52_sensor_otp {
	u32 customer_id;
	u32 module_id;
	u32 lens_id;
	u32 af_cal_dir;
	u32 af_inf_cur;
	u32 af_mac_cur;
	u32 rg_ratio;
	u32 bg_ratio;
	u32 gg_ratio;
	u32 golden_rg_ratio;
	u32 golden_bg_ratio;
	u32 golden_gg_ratio;
	struct sensor_otp *user_otp;
	u32 user_data[5];
	u32 otp_ctrl;
	enum OTP_TYPE	otp_type;
};

struct b52_sensor_spec_ops {
	 /*pixel clk rate unit HZ*/
	int (*get_pixel_rate)(struct v4l2_subdev *sd, u32 *rate, u32 mclk);
	int (*get_dphy_desc)(struct v4l2_subdev *sd,
			struct csi_dphy_desc *dphy_desc, u32 mclk);
	int (*update_otp)(struct v4l2_subdev *sd, struct b52_sensor_otp *otp);
	int (*s_power)(struct v4l2_subdev *sd, int onoff);
};

enum sensor_i2c_len {
	I2C_8BIT = 0,
	I2C_16BIT,
};

struct b52_sensor_i2c_attr {
	enum sensor_i2c_len reg_len;
	enum sensor_i2c_len val_len;
	u8 addr; /* 7 bit i2c address*/
};

struct b52_cmd_i2c_data {
	const struct b52_sensor_i2c_attr *attr;
	struct regval_tab *tab;
	u32 num; /* the number of sensor regs*/
	u8 pos;
};

struct b52_sensor_data {
	char * const name;
	enum b52_sensor_type type;

	struct b52_sensor_spec_ops *ops;

	struct b52_sensor_i2c_attr *i2c_attr;
	int num_i2c_attr;
	struct b52_sensor_regs id;

	struct b52_sensor_regs global_setting;
	struct b52_sensor_mbus_fmt *mbus_fmt;
	int num_mbus_fmt;
	struct b52_sensor_resolution *res;
	int num_res;

	struct b52_sensor_regs streamon;
	struct b52_sensor_regs streamoff;
	struct b52_sensor_regs esd;
	/*
	 *gain unit 0x10: 1 gain = 0x10;
	 *the precision is for B52 ISP: Q4
	 *NOTE: MIN range >= 0x10
	 */
#define B52_GAIN_UNIT (0x10)
	struct sensor_prop_range gain_range[B52_SENSOR_GAIN_MAX];
	/*if numerator = 100, denominator = 0x10
	 * iso = gain * 100 / 0x10 */
	struct v4l2_fract gain2iso_ratio;

	/*vts unit intergration line*/
	struct sensor_prop_range vts_range;
	/*expo unit intergration line*/
	/*the precision is for B52 ISP: Q4*/
	/*NOTE: MAX range < def VTS*/
	struct sensor_prop_range expo_range;
	struct sensor_prop_range frationalexp_range;
	struct sensor_prop_range focus_range;

	struct b52_sensor_module *module;
	u32 num_module;

	struct b52_sensor_regs expo_reg;
	struct b52_sensor_regs frationalexp_reg;
	struct b52_sensor_regs vts_reg;
	struct b52_sensor_regs gain_reg[B52_SENSOR_GAIN_MAX];
	struct b52_sensor_regs af_reg;
	/* the bias must have 13 item*/
	int *ev_bias_offset;

	u8 gain_shift;
	u8 expo_shift;
	int calc_dphy;
	u8 nr_lane;
	u32 mipi_clk_bps;
	/*optional*/
	u32 skip_top_lines;
	u32 skip_frames;
	struct b52_sensor_regs hflip;
	struct b52_sensor_regs vflip;
	int flip_change_phase;
	int reset_delay;
};

struct b52_sensor_ops {
 /*pixel clk rate unit HZ, mclk unit HZ*/
	int (*get_pixel_rate)(struct v4l2_subdev *, u32 *rate, u32 mclk);
	int (*get_dphy_desc)(struct v4l2_subdev *,
			struct csi_dphy_desc *, u32 mclk);
	int (*update_otp)(struct v4l2_subdev *, struct b52_sensor_otp *);
/*below func does not need to implement for each sensor*/
	int (*init)(struct v4l2_subdev *);
	int (*get_power)(struct v4l2_subdev *);
	int (*put_power)(struct v4l2_subdev *);
	int (*i2c_read)(struct v4l2_subdev *, u16 addr, u32 *val, u8 num);
	int (*i2c_write)(struct v4l2_subdev *, u16 addr, u32 val, u8 num);
	int (*detect_sensor)(struct v4l2_subdev *);
	int (*detect_vcm)(struct v4l2_subdev *);
	int (*g_cur_fmt)(struct v4l2_subdev *, struct b52_cmd_i2c_data *);
	int (*gain_to_iso)(struct v4l2_subdev *, u32 gain, u32 *iso);
	int (*iso_to_gain)(struct v4l2_subdev *, u32 iso, u32 *gain);
	int (*to_expo_line)(struct v4l2_subdev *, u32 time, u32 *lines);
	int (*to_expo_time)(struct v4l2_subdev *, u32 *time, u32 lines);
	int (*g_cur_fps)(struct v4l2_subdev *, struct v4l2_fract *fps);
	int (*s_flip)(struct v4l2_subdev *, int hflip, int on);
	int (*g_band_step)(struct v4l2_subdev *,
			u16 *band_50hz, u16 *band_60hz);
	int (*g_param_range)(struct v4l2_subdev *,
			int type, u16 *min, u16 *max);
	int (*g_aecagc_reg)(struct v4l2_subdev *,
			int type, struct b52_sensor_regs *);
	int (*g_sensor_attr)(struct v4l2_subdev *,
			struct b52_sensor_i2c_attr *);
	int (*g_csi)(struct v4l2_subdev *, struct mipi_csi2 *);

	int (*s_focus)(struct v4l2_subdev *, u16 val);
	int (*g_focus)(struct v4l2_subdev *, u16 *val);
	int (*s_expo)(struct v4l2_subdev *, u32 expo, u16 vts);
	int (*s_gain)(struct v4l2_subdev *, u32 gain);
};

struct sensor_power {
	struct regulator *af_2v8;
	struct regulator *avdd_2v8;
	struct regulator *dovdd_1v8;
	struct regulator *dvdd_1v2;
	struct gpio_desc *pwdn;
	struct gpio_desc *rst;
	int ref_cnt;
};

struct b52isp_sensor_ctrls {
	struct v4l2_ctrl_handler ctrl_hdl;

	struct v4l2_ctrl *hflip;
	struct v4l2_ctrl *vflip;
};

struct b52_sensor {
	const struct b52_sensor_data *drvdata;

	struct b52_sensor_ops ops;
	struct v4l2_subdev sd;
	struct media_pad pad;
	struct device *dev;

	struct sensor_power power;
	enum b52_sensor_i2c_pos pos;

	struct b52_sensor_otp otp;

	u32 mclk;
	u32 pixel_rate;
	struct mipi_csi2 csi;

	struct b52isp_sensor_ctrls ctrls;

	int cur_mod_id;

	struct mutex lock; /* Protects streaming, format, interval*/
	struct v4l2_mbus_framefmt mf;
	struct b52_sensor_regs mf_regs;
	u8 cur_i2c_idx;
	u8 cur_res_idx;
	u8 cur_mbus_idx;
	struct clk *clk;
	int i2c_dyn_ctrl;
	int sensor_init;
	atomic_t	stream_cnt;
	int board_prop_id;

	struct blocking_notifier_head nh;
};

extern struct b52_sensor *b52_get_sensor(struct media_entity *entity);
extern int b52_cmd_read_i2c(struct b52_cmd_i2c_data *data);
extern int b52_cmd_write_i2c(struct b52_cmd_i2c_data *data);
extern int b52_isp_read_i2c(const struct b52_sensor_i2c_attr *attr,
		u16 reg, u16 *val, u8 pos);
extern struct b52_sensor_data b52_ov5642;
extern struct b52_sensor *b52_get_sensor(struct media_entity *entity);
extern struct b52_sensor_data b52_ov13850_8M;
extern struct b52_sensor_data b52_ov13850_13M;
extern struct b52_sensor_data b52_ov13850r2a_13M;
extern struct b52_sensor_data b52_imx219;
extern struct b52_sensor_data b52_ov8858;
extern struct b52_sensor_data b52_ov8858_front;
extern struct b52_sensor_data b52_ov5648;
extern struct b52_sensor_data b52_ov2680;
extern struct b52_sensor_data b52_sr544;
extern struct b52_sensor_data b52_hi551;
extern struct b52_sensor_data b52_ov5670;
extern struct b52_sensor_data b52_s5k3l2;
extern struct b52_sensor_data b52_s5k5e3;
extern struct b52_sensor_data b52_s5k4h5;
extern const struct b52_sensor_data *memory_sensor_match(char *sensor_name);
extern void b52_init_workqueue(void *data);

/* this two api for SSG J1 only*/
int b52isp_set_focus_distance(u32 distance, int id);
int check_load_firmware(void);
#endif
