xref: /OK3568_Linux_fs/kernel/drivers/media/i2c/ar0822.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * ar0822 driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2023 Rockchip Electronics Co., Ltd.
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * V0.0X01.0X00 first version.
8*4882a593Smuzhiyun  * V0.0X01.0X01 support conversion gain switch.
9*4882a593Smuzhiyun  * V0.0X01.0X02 add debug interface for conversion gain switch.
10*4882a593Smuzhiyun  * V0.0X01.0X03 support enum sensor fmt
11*4882a593Smuzhiyun  * V0.0X01.0X04 add quick stream on/off
12*4882a593Smuzhiyun  */
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #include <linux/clk.h>
15*4882a593Smuzhiyun #include <linux/device.h>
16*4882a593Smuzhiyun #include <linux/delay.h>
17*4882a593Smuzhiyun #include <linux/gpio/consumer.h>
18*4882a593Smuzhiyun #include <linux/i2c.h>
19*4882a593Smuzhiyun #include <linux/module.h>
20*4882a593Smuzhiyun #include <linux/pm_runtime.h>
21*4882a593Smuzhiyun #include <linux/regulator/consumer.h>
22*4882a593Smuzhiyun #include <linux/sysfs.h>
23*4882a593Smuzhiyun #include <linux/slab.h>
24*4882a593Smuzhiyun #include <linux/version.h>
25*4882a593Smuzhiyun #include <linux/rk-camera-module.h>
26*4882a593Smuzhiyun #include <media/media-entity.h>
27*4882a593Smuzhiyun #include <media/v4l2-async.h>
28*4882a593Smuzhiyun #include <media/v4l2-ctrls.h>
29*4882a593Smuzhiyun #include <media/v4l2-subdev.h>
30*4882a593Smuzhiyun #include <linux/pinctrl/consumer.h>
31*4882a593Smuzhiyun #include <linux/rk-preisp.h>
32*4882a593Smuzhiyun #include "../platform/rockchip/isp/rkisp_tb_helper.h"
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define DRIVER_VERSION			KERNEL_VERSION(0, 0x01, 0x04)
35*4882a593Smuzhiyun #ifndef V4L2_CID_DIGITAL_GAIN
36*4882a593Smuzhiyun #define V4L2_CID_DIGITAL_GAIN		V4L2_CID_GAIN
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define MIPI_FREQ_492M			492000000//500000000
40*4882a593Smuzhiyun #define MIPI_FREQ_657M			657000000
41*4882a593Smuzhiyun #define MIPI_FREQ_823M                  823000000
42*4882a593Smuzhiyun #define MIPI_FREQ_986M                  986000000/*657M for 1.314Gbps,986M for 1.972Gbps */
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define PIXEL_RATE_MAX                  (MIPI_FREQ_986M  / 12 *2 * 4)
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #define OF_CAMERA_HDR_MODE		"rockchip,camera-hdr-mode"
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #define AR0822_XVCLK_FREQ		27000000 /*MCLK* need to config if XCLK from SOC; open.k*/
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define CHIP_ID				0x0F56
51*4882a593Smuzhiyun #define AR0822_REG_CHIP_ID		0x3000
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define AR0822_REG_CTRL_MODE		0x301A
54*4882a593Smuzhiyun #define AR0822_MODE_SW_STANDBY		0x0018
55*4882a593Smuzhiyun #define AR0822_MODE_STREAMING		0x001C
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define	AR0822_EXPOSURE_MIN		2 /* 最小曝光时间 行 * need to config; open.k*/
58*4882a593Smuzhiyun #define	AR0822_EXPOSURE_STEP		1
59*4882a593Smuzhiyun #define AR0822_VTS_MAX			0xffff  /* Frame length line; open.k*/
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #define AR0822_REG_EXP		0x3012
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun #define AR0822_REG_GAIN		0x5900
64*4882a593Smuzhiyun #define AR0822_REG_GAIN2	0x5902
65*4882a593Smuzhiyun #define AR0822_REG_GAIN3	0x5904
66*4882a593Smuzhiyun #define AR0822_GAIN_MIN		0
67*4882a593Smuzhiyun #define AR0822_GAIN_MAX		119
68*4882a593Smuzhiyun #define AR0822_GAIN_STEP		1
69*4882a593Smuzhiyun #define AR0822_GAIN_DEFAULT		0x20
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun #define AR0822_GROUP_UPDATE_ADDRESS	0x301A
72*4882a593Smuzhiyun #define AR0822_GROUP_UPDATE_START_DATA	0x801C
73*4882a593Smuzhiyun #define AR0822_GROUP_UPDATE_END_DATA	0x001C  /* make sure exposure and gain take effect from N+2 frame; open.k*/
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define AR0822_SOFTWARE_RESET_REG	0x301A
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define AR0822_REG_VTS			0x300A
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun #define REG_NULL			0xFFFF   /* Flag address for I2C array write,indicate this is the last row of I2C register table; open.k*/
80*4882a593Smuzhiyun #define REG_DELAY			0xFFFE
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define AR0822_REG_VALUE_08BIT		1
83*4882a593Smuzhiyun #define AR0822_REG_VALUE_16BIT		2
84*4882a593Smuzhiyun #define AR0822_REG_VALUE_24BIT		3
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define AR0822_LANES			4
87*4882a593Smuzhiyun #define AR0822_BPP12			12
88*4882a593Smuzhiyun #define AR0822_BPP14			14
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #define OF_CAMERA_PINCTRL_STATE_DEFAULT	"rockchip,camera_default"
91*4882a593Smuzhiyun #define OF_CAMERA_PINCTRL_STATE_SLEEP	"rockchip,camera_sleep"
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #define AR0822_NAME			"ar0822"
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #define USED_SYS_DEBUG
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun /*  sensor power on config, need check power, MCLK, GPIO etc,,, need go to .dts file to change the config; open.k */
99*4882a593Smuzhiyun static const char * const ar0822_supply_names[] = {
100*4882a593Smuzhiyun 	"avdd",		/* Analog power */
101*4882a593Smuzhiyun 	"dovdd",	/* Digital I/O power */
102*4882a593Smuzhiyun 	"dvdd",		/* Digital core power */
103*4882a593Smuzhiyun };
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun #define AR0822_NUM_SUPPLIES ARRAY_SIZE(ar0822_supply_names)
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #define AR0822_FLIP_REG			0x3040
109*4882a593Smuzhiyun #define MIRROR_BIT_MASK			BIT(14)
110*4882a593Smuzhiyun #define FLIP_BIT_MASK			BIT(15)
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun struct regval {
113*4882a593Smuzhiyun 	u16 addr;
114*4882a593Smuzhiyun 	u16 val;
115*4882a593Smuzhiyun };
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun /* Config resolution ,LLPCLK, FLL, exposure time,fps, MIPI channel config, HDR mode , open.k */
118*4882a593Smuzhiyun struct ar0822_mode {
119*4882a593Smuzhiyun 	u32 bus_fmt;
120*4882a593Smuzhiyun 	u32 width;
121*4882a593Smuzhiyun 	u32 height;
122*4882a593Smuzhiyun 	struct v4l2_fract max_fps;
123*4882a593Smuzhiyun 	u32 hts_def;
124*4882a593Smuzhiyun 	u32 vts_def;
125*4882a593Smuzhiyun 	u32 exp_def;
126*4882a593Smuzhiyun 	const struct regval *reg_list;
127*4882a593Smuzhiyun 	u32 hdr_mode;
128*4882a593Smuzhiyun 	u32 mipi_freq;
129*4882a593Smuzhiyun 	u32 mipi_rate;
130*4882a593Smuzhiyun 	u32 vc[PAD_MAX];
131*4882a593Smuzhiyun };
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun struct ar0822 {
134*4882a593Smuzhiyun 	struct i2c_client	*client;
135*4882a593Smuzhiyun 	struct clk		*xvclk;
136*4882a593Smuzhiyun 	struct gpio_desc	*reset_gpio;
137*4882a593Smuzhiyun 	struct gpio_desc	*pwdn_gpio;
138*4882a593Smuzhiyun 	struct regulator_bulk_data supplies[AR0822_NUM_SUPPLIES];
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun 	struct pinctrl		*pinctrl;
141*4882a593Smuzhiyun 	struct pinctrl_state	*pins_default;
142*4882a593Smuzhiyun 	struct pinctrl_state	*pins_sleep;
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun 	struct v4l2_subdev	subdev;
145*4882a593Smuzhiyun 	struct media_pad	pad;
146*4882a593Smuzhiyun 	struct v4l2_ctrl_handler ctrl_handler;
147*4882a593Smuzhiyun 	struct v4l2_ctrl	*exposure;
148*4882a593Smuzhiyun 	struct v4l2_ctrl	*anal_gain;
149*4882a593Smuzhiyun 	struct v4l2_ctrl	*digi_gain;
150*4882a593Smuzhiyun 	struct v4l2_ctrl	*hblank;
151*4882a593Smuzhiyun 	struct v4l2_ctrl	*vblank;
152*4882a593Smuzhiyun 	struct v4l2_ctrl	*test_pattern;
153*4882a593Smuzhiyun 	struct v4l2_ctrl	*pixel_rate;
154*4882a593Smuzhiyun 	struct v4l2_ctrl	*link_freq;
155*4882a593Smuzhiyun 	struct v4l2_ctrl	*h_flip;
156*4882a593Smuzhiyun 	struct v4l2_ctrl	*v_flip;
157*4882a593Smuzhiyun 	struct mutex		mutex;
158*4882a593Smuzhiyun 	bool			streaming;
159*4882a593Smuzhiyun 	bool			power_on;
160*4882a593Smuzhiyun 	const struct ar0822_mode *cur_mode;
161*4882a593Smuzhiyun 	u32			cfg_num;
162*4882a593Smuzhiyun 	u32			module_index;
163*4882a593Smuzhiyun 	const char		*module_facing;
164*4882a593Smuzhiyun 	const char		*module_name;
165*4882a593Smuzhiyun 	const char		*len_name;
166*4882a593Smuzhiyun 	bool			has_init_exp;
167*4882a593Smuzhiyun 	struct preisp_hdrae_exp_s init_hdrae_exp;
168*4882a593Smuzhiyun 	bool			long_hcg;
169*4882a593Smuzhiyun 	bool			middle_hcg;
170*4882a593Smuzhiyun 	bool			short_hcg;
171*4882a593Smuzhiyun 	bool			is_thunderboot;
172*4882a593Smuzhiyun 	bool			is_thunderboot_ng;
173*4882a593Smuzhiyun 	bool			is_first_streamoff;
174*4882a593Smuzhiyun 	u8			flip;
175*4882a593Smuzhiyun };
176*4882a593Smuzhiyun #define to_ar0822(sd) container_of(sd, struct ar0822, subdev)
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun /*
179*4882a593Smuzhiyun  * Xclk 27Mhz
180*4882a593Smuzhiyun  */
181*4882a593Smuzhiyun static const struct regval ar0822_linear_global_regs[] = {
182*4882a593Smuzhiyun 	{REG_DELAY, 2000},
183*4882a593Smuzhiyun 	{0x3030,0x0092},//PLL_MULTIPLIER
184*4882a593Smuzhiyun 	{0x302E,0x0002},//PRE_PLL_CLK_DIV
185*4882a593Smuzhiyun 	{0x302C,0x0002},//VT_SYS_CLK_DIV
186*4882a593Smuzhiyun 	{0x302A,0x0006},//VT_PIX_CLK_DIV
187*4882a593Smuzhiyun 	{0x3038,0x0004},//OP_SYS_CLK_DIV
188*4882a593Smuzhiyun 	{0x3036,0x0006},//OP_WORD_CLK_DIV
189*4882a593Smuzhiyun 	{0x31B0,0x0071},//FRAME_PREAMBLE
190*4882a593Smuzhiyun 	{0x31B2,0x004D},//LINE_PREAMBLE
191*4882a593Smuzhiyun 	{0x31B4,0x51C8},//MIPI_TIMING_0
192*4882a593Smuzhiyun 	{0x31B6,0x5288},//MIPI_TIMING_1
193*4882a593Smuzhiyun 	{0x31B8,0x70CA},//MIPI_TIMING_2
194*4882a593Smuzhiyun 	{0x31BA,0x030B},//MIPI_TIMING_3
195*4882a593Smuzhiyun 	{0x31BC,0x0C89},//MIPI_TIMING_4
196*4882a593Smuzhiyun 	{0x3342,0x122C},//MIPI_F1_PDT_EDT
197*4882a593Smuzhiyun 	{0x2512,0xA000},//SEQ_CTRL_PORT
198*4882a593Smuzhiyun 	{0x2510,0x0720},//SEQ_DATA_PORT
199*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
200*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
201*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
202*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
203*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
204*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
205*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
206*4882a593Smuzhiyun 	{0x2510,0x2122},//SEQ_DATA_PORT
207*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
208*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
209*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
210*4882a593Smuzhiyun 	{0x2510,0x26FF},//SEQ_DATA_PORT
211*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
212*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
213*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
214*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
215*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
216*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
217*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
218*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
219*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
220*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
221*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
222*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
223*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
224*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
225*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
226*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
227*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
228*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
229*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
230*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
231*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
232*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
233*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
234*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
235*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
236*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
237*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
238*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
239*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
240*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
241*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
242*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
243*4882a593Smuzhiyun 	{0x2510,0x0F8C},//SEQ_DATA_PORT
244*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
245*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
246*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
247*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
248*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
249*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
250*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
251*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
252*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
253*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
254*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
255*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
256*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
257*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
258*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
259*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
260*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
261*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
262*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
263*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
264*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
265*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
266*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
267*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
268*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
269*4882a593Smuzhiyun 	{0x2510,0xA0E1},//SEQ_DATA_PORT
270*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
271*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
272*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
273*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
274*4882a593Smuzhiyun 	{0x2510,0xA681},//SEQ_DATA_PORT
275*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
276*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
277*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
278*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
279*4882a593Smuzhiyun 	{0x2510,0x20FE},//SEQ_DATA_PORT
280*4882a593Smuzhiyun 	{0x2510,0x9070},//SEQ_DATA_PORT
281*4882a593Smuzhiyun 	{0x2510,0x891D},//SEQ_DATA_PORT
282*4882a593Smuzhiyun 	{0x2510,0x867F},//SEQ_DATA_PORT
283*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
284*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
285*4882a593Smuzhiyun 	{0x2510,0x893F},//SEQ_DATA_PORT
286*4882a593Smuzhiyun 	{0x2510,0x0F92},//SEQ_DATA_PORT
287*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
288*4882a593Smuzhiyun 	{0x2510,0x0F8F},//SEQ_DATA_PORT
289*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
290*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
291*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
292*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
293*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
294*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
295*4882a593Smuzhiyun 	{0x2510,0x9770},//SEQ_DATA_PORT
296*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
297*4882a593Smuzhiyun 	{0x2510,0x8054},//SEQ_DATA_PORT
298*4882a593Smuzhiyun 	{0x2510,0x896C},//SEQ_DATA_PORT
299*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
300*4882a593Smuzhiyun 	{0x2510,0x9030},//SEQ_DATA_PORT
301*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
302*4882a593Smuzhiyun 	{0x2510,0x8040},//SEQ_DATA_PORT
303*4882a593Smuzhiyun 	{0x2510,0x8948},//SEQ_DATA_PORT
304*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
305*4882a593Smuzhiyun 	{0x2510,0x1597},//SEQ_DATA_PORT
306*4882a593Smuzhiyun 	{0x2510,0x8808},//SEQ_DATA_PORT
307*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
308*4882a593Smuzhiyun 	{0x2510,0x1F96},//SEQ_DATA_PORT
309*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
310*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
311*4882a593Smuzhiyun 	{0x2510,0xA0C0},//SEQ_DATA_PORT
312*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
313*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
314*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
315*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
316*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
317*4882a593Smuzhiyun 	{0x2510,0x1FAA},//SEQ_DATA_PORT
318*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
319*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
320*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
321*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
322*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
323*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
324*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
325*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
326*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
327*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
328*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
329*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
330*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
331*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
332*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
333*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
334*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
335*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
336*4882a593Smuzhiyun 	{0x2510,0x2702},//SEQ_DATA_PORT
337*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
338*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
339*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
340*4882a593Smuzhiyun 	{0x2510,0x2703},//SEQ_DATA_PORT
341*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
342*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
343*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
344*4882a593Smuzhiyun 	{0x2510,0x2704},//SEQ_DATA_PORT
345*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
346*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
347*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
348*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
349*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
350*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
351*4882a593Smuzhiyun 	{0x2510,0x000F},//SEQ_DATA_PORT
352*4882a593Smuzhiyun 	{0x2510,0x109C},//SEQ_DATA_PORT
353*4882a593Smuzhiyun 	{0x2510,0x8855},//SEQ_DATA_PORT
354*4882a593Smuzhiyun 	{0x2510,0x3101},//SEQ_DATA_PORT
355*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
356*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
357*4882a593Smuzhiyun 	{0x2510,0x3102},//SEQ_DATA_PORT
358*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
359*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
360*4882a593Smuzhiyun 	{0x2510,0x3181},//SEQ_DATA_PORT
361*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
362*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
363*4882a593Smuzhiyun 	{0x2510,0x3188},//SEQ_DATA_PORT
364*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
365*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
366*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
367*4882a593Smuzhiyun 	{0x2510,0x3104},//SEQ_DATA_PORT
368*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
369*4882a593Smuzhiyun 	{0x2510,0xB0E4},//SEQ_DATA_PORT
370*4882a593Smuzhiyun 	{0x2510,0xAD92},//SEQ_DATA_PORT
371*4882a593Smuzhiyun 	{0x2510,0xBC0C},//SEQ_DATA_PORT
372*4882a593Smuzhiyun 	{0x2510,0x1028},//SEQ_DATA_PORT
373*4882a593Smuzhiyun 	{0x2510,0x0022},//SEQ_DATA_PORT
374*4882a593Smuzhiyun 	{0x2510,0xC020},//SEQ_DATA_PORT
375*4882a593Smuzhiyun 	{0x2510,0x003E},//SEQ_DATA_PORT
376*4882a593Smuzhiyun 	{0x2510,0x0045},//SEQ_DATA_PORT
377*4882a593Smuzhiyun 	{0x2510,0x00B0},//SEQ_DATA_PORT
378*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
379*4882a593Smuzhiyun 	{0x2510,0x30C1},//SEQ_DATA_PORT
380*4882a593Smuzhiyun 	{0x2510,0x8015},//SEQ_DATA_PORT
381*4882a593Smuzhiyun 	{0x2510,0xA038},//SEQ_DATA_PORT
382*4882a593Smuzhiyun 	{0x2510,0x100F},//SEQ_DATA_PORT
383*4882a593Smuzhiyun 	{0x2510,0x0507},//SEQ_DATA_PORT
384*4882a593Smuzhiyun 	{0x2510,0xA220},//SEQ_DATA_PORT
385*4882a593Smuzhiyun 	{0x2510,0x0010},//SEQ_DATA_PORT
386*4882a593Smuzhiyun 	{0x2510,0x10C2},//SEQ_DATA_PORT
387*4882a593Smuzhiyun 	{0x2510,0xB760},//SEQ_DATA_PORT
388*4882a593Smuzhiyun 	{0x2510,0x0033},//SEQ_DATA_PORT
389*4882a593Smuzhiyun 	{0x2510,0x1082},//SEQ_DATA_PORT
390*4882a593Smuzhiyun 	{0x2510,0x100B},//SEQ_DATA_PORT
391*4882a593Smuzhiyun 	{0x2510,0x1029},//SEQ_DATA_PORT
392*4882a593Smuzhiyun 	{0x2510,0xA85A},//SEQ_DATA_PORT
393*4882a593Smuzhiyun 	{0x2510,0x998D},//SEQ_DATA_PORT
394*4882a593Smuzhiyun 	{0x2510,0xC810},//SEQ_DATA_PORT
395*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
396*4882a593Smuzhiyun 	{0x2510,0x0ECE},//SEQ_DATA_PORT
397*4882a593Smuzhiyun 	{0x2510,0x123B},//SEQ_DATA_PORT
398*4882a593Smuzhiyun 	{0x2510,0xC000},//SEQ_DATA_PORT
399*4882a593Smuzhiyun 	{0x2510,0x032F},//SEQ_DATA_PORT
400*4882a593Smuzhiyun 	{0x2510,0x11D5},//SEQ_DATA_PORT
401*4882a593Smuzhiyun 	{0x2510,0x162F},//SEQ_DATA_PORT
402*4882a593Smuzhiyun 	{0x2510,0x9000},//SEQ_DATA_PORT
403*4882a593Smuzhiyun 	{0x2510,0x2034},//SEQ_DATA_PORT
404*4882a593Smuzhiyun 	{0x2510,0x0015},//SEQ_DATA_PORT
405*4882a593Smuzhiyun 	{0x2510,0x04CB},//SEQ_DATA_PORT
406*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
407*4882a593Smuzhiyun 	{0x2510,0x1031},//SEQ_DATA_PORT
408*4882a593Smuzhiyun 	{0x2510,0x002D},//SEQ_DATA_PORT
409*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
410*4882a593Smuzhiyun 	{0x2510,0x80B9},//SEQ_DATA_PORT
411*4882a593Smuzhiyun 	{0x2510,0xA101},//SEQ_DATA_PORT
412*4882a593Smuzhiyun 	{0x2510,0x001C},//SEQ_DATA_PORT
413*4882a593Smuzhiyun 	{0x2510,0x008E},//SEQ_DATA_PORT
414*4882a593Smuzhiyun 	{0x2510,0x124B},//SEQ_DATA_PORT
415*4882a593Smuzhiyun 	{0x2510,0x01B5},//SEQ_DATA_PORT
416*4882a593Smuzhiyun 	{0x2510,0x0B92},//SEQ_DATA_PORT
417*4882a593Smuzhiyun 	{0x2510,0xA400},//SEQ_DATA_PORT
418*4882a593Smuzhiyun 	{0x2510,0x8091},//SEQ_DATA_PORT
419*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
420*4882a593Smuzhiyun 	{0x2510,0x3002},//SEQ_DATA_PORT
421*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
422*4882a593Smuzhiyun 	{0x2510,0x1012},//SEQ_DATA_PORT
423*4882a593Smuzhiyun 	{0x2510,0x100E},//SEQ_DATA_PORT
424*4882a593Smuzhiyun 	{0x2510,0x10A8},//SEQ_DATA_PORT
425*4882a593Smuzhiyun 	{0x2510,0x00A1},//SEQ_DATA_PORT
426*4882a593Smuzhiyun 	{0x2510,0x132D},//SEQ_DATA_PORT
427*4882a593Smuzhiyun 	{0x2510,0x09AF},//SEQ_DATA_PORT
428*4882a593Smuzhiyun 	{0x2510,0x0159},//SEQ_DATA_PORT
429*4882a593Smuzhiyun 	{0x2510,0x121D},//SEQ_DATA_PORT
430*4882a593Smuzhiyun 	{0x2510,0x1259},//SEQ_DATA_PORT
431*4882a593Smuzhiyun 	{0x2510,0x11AF},//SEQ_DATA_PORT
432*4882a593Smuzhiyun 	{0x2510,0x18B5},//SEQ_DATA_PORT
433*4882a593Smuzhiyun 	{0x2510,0x0395},//SEQ_DATA_PORT
434*4882a593Smuzhiyun 	{0x2510,0x054B},//SEQ_DATA_PORT
435*4882a593Smuzhiyun 	{0x2510,0x1021},//SEQ_DATA_PORT
436*4882a593Smuzhiyun 	{0x2510,0x0020},//SEQ_DATA_PORT
437*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
438*4882a593Smuzhiyun 	{0x2510,0x1030},//SEQ_DATA_PORT
439*4882a593Smuzhiyun 	{0x2510,0x00CF},//SEQ_DATA_PORT
440*4882a593Smuzhiyun 	{0x2510,0xB146},//SEQ_DATA_PORT
441*4882a593Smuzhiyun 	{0x2510,0xC290},//SEQ_DATA_PORT
442*4882a593Smuzhiyun 	{0x2510,0x103C},//SEQ_DATA_PORT
443*4882a593Smuzhiyun 	{0x2510,0xA882},//SEQ_DATA_PORT
444*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
445*4882a593Smuzhiyun 	{0x2510,0x00A9},//SEQ_DATA_PORT
446*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
447*4882a593Smuzhiyun 	{0x2510,0xB700},//SEQ_DATA_PORT
448*4882a593Smuzhiyun 	{0x2510,0x0001},//SEQ_DATA_PORT
449*4882a593Smuzhiyun 	{0x2510,0x02A2},//SEQ_DATA_PORT
450*4882a593Smuzhiyun 	{0x2510,0x000A},//SEQ_DATA_PORT
451*4882a593Smuzhiyun 	{0x2510,0x98BB},//SEQ_DATA_PORT
452*4882a593Smuzhiyun 	{0x2510,0x203F},//SEQ_DATA_PORT
453*4882a593Smuzhiyun 	{0x2510,0x0036},//SEQ_DATA_PORT
454*4882a593Smuzhiyun 	{0x2510,0x1001},//SEQ_DATA_PORT
455*4882a593Smuzhiyun 	{0x2510,0x99BE},//SEQ_DATA_PORT
456*4882a593Smuzhiyun 	{0x2510,0x0139},//SEQ_DATA_PORT
457*4882a593Smuzhiyun 	{0x2510,0x100A},//SEQ_DATA_PORT
458*4882a593Smuzhiyun 	{0x2510,0x0040},//SEQ_DATA_PORT
459*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
460*4882a593Smuzhiyun 	{0x2510,0x124C},//SEQ_DATA_PORT
461*4882a593Smuzhiyun 	{0x2510,0x109F},//SEQ_DATA_PORT
462*4882a593Smuzhiyun 	{0x2510,0x15A3},//SEQ_DATA_PORT
463*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
464*4882a593Smuzhiyun 	{0x2510,0x3081},//SEQ_DATA_PORT
465*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
466*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
467*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
468*4882a593Smuzhiyun 	{0x2510,0x112A},//SEQ_DATA_PORT
469*4882a593Smuzhiyun 	{0x2510,0x101D},//SEQ_DATA_PORT
470*4882a593Smuzhiyun 	{0x2510,0x202B},//SEQ_DATA_PORT
471*4882a593Smuzhiyun 	{0x2510,0x02B8},//SEQ_DATA_PORT
472*4882a593Smuzhiyun 	{0x2510,0x10B8},//SEQ_DATA_PORT
473*4882a593Smuzhiyun 	{0x2510,0x1136},//SEQ_DATA_PORT
474*4882a593Smuzhiyun 	{0x2510,0x996B},//SEQ_DATA_PORT
475*4882a593Smuzhiyun 	{0x2510,0x004C},//SEQ_DATA_PORT
476*4882a593Smuzhiyun 	{0x2510,0x1039},//SEQ_DATA_PORT
477*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
478*4882a593Smuzhiyun 	{0x2510,0x00B5},//SEQ_DATA_PORT
479*4882a593Smuzhiyun 	{0x2510,0x03C4},//SEQ_DATA_PORT
480*4882a593Smuzhiyun 	{0x2510,0x1144},//SEQ_DATA_PORT
481*4882a593Smuzhiyun 	{0x2510,0x1245},//SEQ_DATA_PORT
482*4882a593Smuzhiyun 	{0x2510,0x9A7B},//SEQ_DATA_PORT
483*4882a593Smuzhiyun 	{0x2510,0x002B},//SEQ_DATA_PORT
484*4882a593Smuzhiyun 	{0x2510,0x30D0},//SEQ_DATA_PORT
485*4882a593Smuzhiyun 	{0x2510,0x3141},//SEQ_DATA_PORT
486*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
487*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
488*4882a593Smuzhiyun 	{0x2510,0x3142},//SEQ_DATA_PORT
489*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
490*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
491*4882a593Smuzhiyun 	{0x2510,0x3110},//SEQ_DATA_PORT
492*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
493*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
494*4882a593Smuzhiyun 	{0x2510,0x3120},//SEQ_DATA_PORT
495*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
496*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
497*4882a593Smuzhiyun 	{0x2510,0x3144},//SEQ_DATA_PORT
498*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
499*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
500*4882a593Smuzhiyun 	{0x2510,0x3148},//SEQ_DATA_PORT
501*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
502*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
503*4882a593Smuzhiyun 	{0x2510,0x3182},//SEQ_DATA_PORT
504*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
505*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
506*4882a593Smuzhiyun 	{0x2510,0x3184},//SEQ_DATA_PORT
507*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
508*4882a593Smuzhiyun 	{0x2510,0x3190},//SEQ_DATA_PORT
509*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
510*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
511*4882a593Smuzhiyun 	{0x2510,0x31A0},//SEQ_DATA_PORT
512*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
513*4882a593Smuzhiyun 	{0x2510,0x2201},//SEQ_DATA_PORT
514*4882a593Smuzhiyun 	{0x2510,0x807D},//SEQ_DATA_PORT
515*4882a593Smuzhiyun 	{0x2510,0x2206},//SEQ_DATA_PORT
516*4882a593Smuzhiyun 	{0x2510,0x8815},//SEQ_DATA_PORT
517*4882a593Smuzhiyun 	{0x2510,0x8877},//SEQ_DATA_PORT
518*4882a593Smuzhiyun 	{0x2510,0x0092},//SEQ_DATA_PORT
519*4882a593Smuzhiyun 	{0x2510,0x220E},//SEQ_DATA_PORT
520*4882a593Smuzhiyun 	{0x2510,0x2211},//SEQ_DATA_PORT
521*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
522*4882a593Smuzhiyun 	{0x2510,0x3001},//SEQ_DATA_PORT
523*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
524*4882a593Smuzhiyun 	{0x2510,0x8A61},//SEQ_DATA_PORT
525*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
526*4882a593Smuzhiyun 	{0x2510,0x1092},//SEQ_DATA_PORT
527*4882a593Smuzhiyun 	{0x2510,0x181F},//SEQ_DATA_PORT
528*4882a593Smuzhiyun 	{0x2510,0x0B1F},//SEQ_DATA_PORT
529*4882a593Smuzhiyun 	{0x2510,0x101F},//SEQ_DATA_PORT
530*4882a593Smuzhiyun 	{0x2510,0x00B6},//SEQ_DATA_PORT
531*4882a593Smuzhiyun 	{0x2510,0x0023},//SEQ_DATA_PORT
532*4882a593Smuzhiyun 	{0x2510,0x00B9},//SEQ_DATA_PORT
533*4882a593Smuzhiyun 	{0x2510,0x104C},//SEQ_DATA_PORT
534*4882a593Smuzhiyun 	{0x2510,0x996E},//SEQ_DATA_PORT
535*4882a593Smuzhiyun 	{0x2510,0x0140},//SEQ_DATA_PORT
536*4882a593Smuzhiyun 	{0x2510,0x0257},//SEQ_DATA_PORT
537*4882a593Smuzhiyun 	{0x2510,0x1035},//SEQ_DATA_PORT
538*4882a593Smuzhiyun 	{0x2510,0x9F26},//SEQ_DATA_PORT
539*4882a593Smuzhiyun 	{0x2510,0x1423},//SEQ_DATA_PORT
540*4882a593Smuzhiyun 	{0x2510,0x0048},//SEQ_DATA_PORT
541*4882a593Smuzhiyun 	{0x2510,0xC878},//SEQ_DATA_PORT
542*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
543*4882a593Smuzhiyun 	{0x2510,0x1548},//SEQ_DATA_PORT
544*4882a593Smuzhiyun 	{0x2510,0x0C49},//SEQ_DATA_PORT
545*4882a593Smuzhiyun 	{0x2510,0x1149},//SEQ_DATA_PORT
546*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
547*4882a593Smuzhiyun 	{0x2510,0x1057},//SEQ_DATA_PORT
548*4882a593Smuzhiyun 	{0x2510,0x3281},//SEQ_DATA_PORT
549*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
550*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
551*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
552*4882a593Smuzhiyun 	{0x2510,0xA020},//SEQ_DATA_PORT
553*4882a593Smuzhiyun 	{0x2510,0x000C},//SEQ_DATA_PORT
554*4882a593Smuzhiyun 	{0x2510,0x9825},//SEQ_DATA_PORT
555*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
556*4882a593Smuzhiyun 	{0x2510,0x1054},//SEQ_DATA_PORT
557*4882a593Smuzhiyun 	{0x2510,0xB06D},//SEQ_DATA_PORT
558*4882a593Smuzhiyun 	{0x2510,0x0035},//SEQ_DATA_PORT
559*4882a593Smuzhiyun 	{0x2510,0x004D},//SEQ_DATA_PORT
560*4882a593Smuzhiyun 	{0x2510,0x9905},//SEQ_DATA_PORT
561*4882a593Smuzhiyun 	{0x2510,0xB064},//SEQ_DATA_PORT
562*4882a593Smuzhiyun 	{0x2510,0x99C5},//SEQ_DATA_PORT
563*4882a593Smuzhiyun 	{0x2510,0x0047},//SEQ_DATA_PORT
564*4882a593Smuzhiyun 	{0x2510,0xB920},//SEQ_DATA_PORT
565*4882a593Smuzhiyun 	{0x2510,0x1447},//SEQ_DATA_PORT
566*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
567*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
568*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
569*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
570*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
571*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
572*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
573*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
574*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
575*4882a593Smuzhiyun 	{0x31F8,0x0008},//MIPI_CONFIG_2
576*4882a593Smuzhiyun 	{0x3C70,0x6828},//CALIB_ROWS
577*4882a593Smuzhiyun 	{0x3092,0x0826},//ROW_NOISE_CONTROL
578*4882a593Smuzhiyun 	{0x3428,0x0209},//SEQUENCER_CONTROL
579*4882a593Smuzhiyun 	{0x3516,0xFF04},//DAC_LD_22_23
580*4882a593Smuzhiyun 	{0x3526,0x6480},//DAC_LD_38_39
581*4882a593Smuzhiyun 	{0x3504,0x8AAA},//DAC_LD_4_5
582*4882a593Smuzhiyun 	{0x353C,0x220C},//DAC_LD_60_61
583*4882a593Smuzhiyun 	{0x3536,0x4C6E},//DAC_LD_54_55
584*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
585*4882a593Smuzhiyun 	{0x3364,0x00EC},//DCG_TRIM
586*4882a593Smuzhiyun 	{0x3512,0x8888},//DAC_LD_18_19
587*4882a593Smuzhiyun 	{0x3514,0x888F},//DAC_LD_20_21
588*4882a593Smuzhiyun 	{0x3520,0xFBF0},//DAC_LD_32_33
589*4882a593Smuzhiyun 	{0x3524,0xB2A1},//DAC_LD_36_37
590*4882a593Smuzhiyun 	{0x3528,0xCC84},//DAC_LD_40_41
591*4882a593Smuzhiyun 	{0x3532,0x4C8E},//DAC_LD_50_51
592*4882a593Smuzhiyun 	{0x3534,0x4E64},//DAC_LD_52_53
593*4882a593Smuzhiyun 	{0x351E,0x5856},//DAC_LD_30_31
594*4882a593Smuzhiyun 	{0x353E,0x98F2},//DAC_LD_62_63
595*4882a593Smuzhiyun 	{0x352E,0x6A8A},//DAC_LD_46_47
596*4882a593Smuzhiyun 	{0x3370,0x0211},//DBLC_CONTROL
597*4882a593Smuzhiyun 	{0x3372,0x700F},//DBLC_FS0_CONTROL
598*4882a593Smuzhiyun 	{0x3540,0x3597},//DAC_LD_64_65
599*4882a593Smuzhiyun 	{0x58E2,0x0BE3},//COL_COUNT_VALUES1
600*4882a593Smuzhiyun 	{0x58E4,0x18B4},//COL_COUNT_VALUES2
601*4882a593Smuzhiyun 	{0x3522,0x7C97},//DAC_LD_34_35
602*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
603*4882a593Smuzhiyun 	{0x31D4,0x0042},//CLK_MEM_GATING_CTRL
604*4882a593Smuzhiyun 	{0x352A,0x6F8F},//DAC_LD_42_43
605*4882a593Smuzhiyun 	{0x3530,0x4A08},//DAC_LD_48_49
606*4882a593Smuzhiyun 	{0x351A,0x5FFF},//DAC_LD_26_27
607*4882a593Smuzhiyun 	{0x350E,0x39D9},//DAC_LD_14_15
608*4882a593Smuzhiyun 	{0x3510,0x9988},//DAC_LD_16_17
609*4882a593Smuzhiyun 	{0x3380,0x1FFF},//DBLC_OFFSET1
610*4882a593Smuzhiyun 	{0x337A,0x1000},//DBLC_SCALE1
611*4882a593Smuzhiyun 	{0x3092,0x0800},//ROW_NOISE_CONTROL
612*4882a593Smuzhiyun 	{0x350A,0x0654},//DAC_LD_10_11
613*4882a593Smuzhiyun 	{0x3364,0x00E0},//DCG_TRIM
614*4882a593Smuzhiyun 	{0x591E,0x61AE},//ANALOG_GAIN_WR_DATA
615*4882a593Smuzhiyun 	{0x591E,0x722C},//ANALOG_GAIN_WR_DATA
616*4882a593Smuzhiyun 	{0x591E,0x82B8},//ANALOG_GAIN_WR_DATA
617*4882a593Smuzhiyun 	{0x591E,0x92F6},//ANALOG_GAIN_WR_DATA
618*4882a593Smuzhiyun 	{0x591E,0xA447},//ANALOG_GAIN_WR_DATA
619*4882a593Smuzhiyun 	{0x591E,0xB66D},//ANALOG_GAIN_WR_DATA
620*4882a593Smuzhiyun 	{0x591E,0xC6EA},//ANALOG_GAIN_WR_DATA
621*4882a593Smuzhiyun 	{0x591E,0xDECD},//ANALOG_GAIN_WR_DATA
622*4882a593Smuzhiyun 	{0x3532,0x4C8A},//DAC_LD_50_51
623*4882a593Smuzhiyun 	{0x3534,0x4E60},//DAC_LD_52_53
624*4882a593Smuzhiyun 	{0x353E,0x90F2},//DAC_LD_62_63
625*4882a593Smuzhiyun 	{0x351A,0x4FFF},//DAC_LD_26_27
626*4882a593Smuzhiyun 	{0x591C,0x00D7},//DGR_AMP_GAIN
627*4882a593Smuzhiyun 	{0x3522,0x6097},//DAC_LD_34_35
628*4882a593Smuzhiyun 	{0x5002,0x37C3},//T1_PIX_DEF_ID2
629*4882a593Smuzhiyun 	{0x51CC,0x0149},//T1_NOISE_GAIN_THRESHOLD0
630*4882a593Smuzhiyun 	{0x51D8,0x044D},//T1_NOISE_GAIN_THRESHOLD1
631*4882a593Smuzhiyun 	{0x51CE,0x0700},//T1_NOISE_GAIN_THRESHOLD2
632*4882a593Smuzhiyun 	{0x51D0,0x0001},//T1_NOISE_FLOOR0
633*4882a593Smuzhiyun 	{0x51D2,0x0002},//T1_NOISE_FLOOR1
634*4882a593Smuzhiyun 	{0x51D4,0x0003},//T1_NOISE_FLOOR2
635*4882a593Smuzhiyun 	{0x51D6,0x0004},//T1_NOISE_FLOOR3
636*4882a593Smuzhiyun 	{0x5202,0x37C3},//T2_PIX_DEF_ID2
637*4882a593Smuzhiyun 	{0x51EA,0x0149},//T2_NOISE_GAIN_THRESHOLD0
638*4882a593Smuzhiyun 	{0x51FC,0x044D},//T2_NOISE_GAIN_THRESHOLD1
639*4882a593Smuzhiyun 	{0x51EC,0x0700},//T2_NOISE_GAIN_THRESHOLD2
640*4882a593Smuzhiyun 	{0x51EE,0x0001},//T2_NOISE_FLOOR0
641*4882a593Smuzhiyun 	{0x51F0,0x0002},//T2_NOISE_FLOOR1
642*4882a593Smuzhiyun 	{0x51F2,0x0003},//T2_NOISE_FLOOR2
643*4882a593Smuzhiyun 	{0x51F4,0x0004},//T2_NOISE_FLOOR3
644*4882a593Smuzhiyun 	{0x5402,0x37C3},//T4_PIX_DEF_ID2
645*4882a593Smuzhiyun 	{0x5560,0x0149},//T4_NOISE_GAIN_THRESHOLD0
646*4882a593Smuzhiyun 	{0x556C,0x044D},//T4_NOISE_GAIN_THRESHOLD1
647*4882a593Smuzhiyun 	{0x5562,0x0700},//T4_NOISE_GAIN_THRESHOLD2
648*4882a593Smuzhiyun 	{0x5564,0x0001},//T4_NOISE_FLOOR0
649*4882a593Smuzhiyun 	{0x5566,0x0002},//T4_NOISE_FLOOR1
650*4882a593Smuzhiyun 	{0x5568,0x0003},//T4_NOISE_FLOOR2
651*4882a593Smuzhiyun 	{0x556A,0x0004},//T4_NOISE_FLOOR3
652*4882a593Smuzhiyun 	{0x31E0,0x0001},//PIX_DEF_ID
653*4882a593Smuzhiyun 	{0x5000,0x0080},//T1_PIX_DEF_ID
654*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
655*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
656*4882a593Smuzhiyun 	{0x5200,0x0080},//T2_PIX_DEF_ID
657*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
658*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
659*4882a593Smuzhiyun 	{0x5400,0x0080},//T4_PIX_DEF_ID
660*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
661*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
662*4882a593Smuzhiyun 	{0x5000,0x1180},//T1_PIX_DEF_ID
663*4882a593Smuzhiyun 	{0x50A2,0x2553},//BMT0
664*4882a593Smuzhiyun 	{0x50A4,0xDFD4},//BMT1
665*4882a593Smuzhiyun 	{0x50A6,0x030F},//SINGLEK_FACTOR0
666*4882a593Smuzhiyun 	{0x50A6,0x0F0F},//SINGLEK_FACTOR0
667*4882a593Smuzhiyun 	{0x50A8,0x030F},//SINGLEK_FACTOR1
668*4882a593Smuzhiyun 	{0x50A8,0x0F0F},//SINGLEK_FACTOR1
669*4882a593Smuzhiyun 	{0x50AA,0x030F},//SINGLEK_FACTOR2
670*4882a593Smuzhiyun 	{0x50AA,0x050F},//SINGLEK_FACTOR2
671*4882a593Smuzhiyun 	{0x50AC,0x0301},//CROSS_FACTOR0
672*4882a593Smuzhiyun 	{0x50AC,0x0101},//CROSS_FACTOR0
673*4882a593Smuzhiyun 	{0x50AE,0x0301},//CROSS_FACTOR1
674*4882a593Smuzhiyun 	{0x50AE,0x0101},//CROSS_FACTOR1
675*4882a593Smuzhiyun 	{0x50B0,0x0301},//CROSS_FACTOR2
676*4882a593Smuzhiyun 	{0x50B0,0x0101},//CROSS_FACTOR2
677*4882a593Smuzhiyun 	{0x50B2,0x03FF},//SINGLE_MAX_FACTOR
678*4882a593Smuzhiyun 	{0x50B4,0x030F},//COUPLE_FACTOR0
679*4882a593Smuzhiyun 	{0x50B4,0x0F0F},//COUPLE_FACTOR0
680*4882a593Smuzhiyun 	{0x50B6,0x030F},//COUPLE_FACTOR1
681*4882a593Smuzhiyun 	{0x50B6,0x0F0F},//COUPLE_FACTOR1
682*4882a593Smuzhiyun 	{0x50B8,0x030F},//COUPLE_FACTOR2
683*4882a593Smuzhiyun 	{0x50B8,0x050F},//COUPLE_FACTOR2
684*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
685*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
686*4882a593Smuzhiyun 	{0x3082,0x0001},//OPERATION_MODE_CTRL
687*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
688*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
689*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
690*4882a593Smuzhiyun 	{0x300C,0x0866},//LINE_LENGTH_PCK_
691*4882a593Smuzhiyun 	{0x300A,0x09F3},//FRAME_LENGTH_LINES_
692*4882a593Smuzhiyun 	{0x3012,0x08F4},//COARSE_INTEGRATION_TIME_
693*4882a593Smuzhiyun 	{0x5914,0x4012},//SENSOR_GAIN_TABLE_SEL
694*4882a593Smuzhiyun 	{REG_DELAY,100},
695*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
696*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
697*4882a593Smuzhiyun 	{0x5910,0x7091},//SENSOR_GAIN_REG1
698*4882a593Smuzhiyun 	{0x5910,0x689C},//SENSOR_GAIN_REG1
699*4882a593Smuzhiyun 	{0x5910,0x8885},//SENSOR_GAIN_REG1
700*4882a593Smuzhiyun 	{0x5910,0x98AD},//SENSOR_GAIN_REG1
701*4882a593Smuzhiyun 	{0x5910,0xA8A9},//SENSOR_GAIN_REG1
702*4882a593Smuzhiyun 	{0x5910,0xC894},//SENSOR_GAIN_REG1
703*4882a593Smuzhiyun 	{0x5910,0xC8D1},//SENSOR_GAIN_REG1
704*4882a593Smuzhiyun 	{0x5910,0xD88A},//SENSOR_GAIN_REG1
705*4882a593Smuzhiyun 	{0x5910,0xD8C3},//SENSOR_GAIN_REG1
706*4882a593Smuzhiyun 	{0x5910,0xD915},//SENSOR_GAIN_REG1
707*4882a593Smuzhiyun 	{0x5910,0xD988},//SENSOR_GAIN_REG1
708*4882a593Smuzhiyun 	{0x5910,0xDA2A},//SENSOR_GAIN_REG1
709*4882a593Smuzhiyun 	{0x5910,0xDB0E},//SENSOR_GAIN_REG1
710*4882a593Smuzhiyun 	{0x5910,0xDC53},//SENSOR_GAIN_REG1
711*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
712*4882a593Smuzhiyun 	{0x5910,0xC919},//SENSOR_GAIN_REG1
713*4882a593Smuzhiyun 	{0x5910,0xCA00},//SENSOR_GAIN_REG1
714*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
715*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
716*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
717*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
718*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
719*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
720*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
721*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
722*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
723*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
724*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
725*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
726*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
727*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
728*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
729*4882a593Smuzhiyun 	{0x5910,0x0002},//SENSOR_GAIN_REG1
730*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
731*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
732*4882a593Smuzhiyun 	{0x5910,0x5A8B},//SENSOR_GAIN_REG1
733*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
734*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
735*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
736*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
737*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
738*4882a593Smuzhiyun 	{0x5910,0x0005},//SENSOR_GAIN_REG1
739*4882a593Smuzhiyun 	{0x5910,0x0006},//SENSOR_GAIN_REG1
740*4882a593Smuzhiyun 	{0x5910,0x0007},//SENSOR_GAIN_REG1
741*4882a593Smuzhiyun 	{0x5910,0x9A8B},//SENSOR_GAIN_REG1
742*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
743*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
744*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
745*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
746*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
747*4882a593Smuzhiyun 	{0x5910,0x0015},//SENSOR_GAIN_REG1
748*4882a593Smuzhiyun 	{0x5910,0x0016},//SENSOR_GAIN_REG1
749*4882a593Smuzhiyun 	{0x5910,0x0017},//SENSOR_GAIN_REG1
750*4882a593Smuzhiyun 	{0x5910,0xDA8B},//SENSOR_GAIN_REG1
751*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
752*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
753*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
754*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
755*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
756*4882a593Smuzhiyun 	{0x5910,0x0025},//SENSOR_GAIN_REG1
757*4882a593Smuzhiyun 	{0x5910,0x0026},//SENSOR_GAIN_REG1
758*4882a593Smuzhiyun 	{0x5910,0x0027},//SENSOR_GAIN_REG1
759*4882a593Smuzhiyun 	{0x5910,0x59B9},//SENSOR_GAIN_REG1
760*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
761*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
762*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
763*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
764*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
765*4882a593Smuzhiyun 	{0x5910,0x0035},//SENSOR_GAIN_REG1
766*4882a593Smuzhiyun 	{0x5910,0x0036},//SENSOR_GAIN_REG1
767*4882a593Smuzhiyun 	{0x5910,0x0037},//SENSOR_GAIN_REG1
768*4882a593Smuzhiyun 	{0x5910,0x99B9},//SENSOR_GAIN_REG1
769*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
770*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
771*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
772*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
773*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
774*4882a593Smuzhiyun 	{0x5910,0x0045},//SENSOR_GAIN_REG1
775*4882a593Smuzhiyun 	{0x5910,0x0046},//SENSOR_GAIN_REG1
776*4882a593Smuzhiyun 	{0x5910,0x0047},//SENSOR_GAIN_REG1
777*4882a593Smuzhiyun 	{0x5910,0xD9B9},//SENSOR_GAIN_REG1
778*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
779*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
780*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
781*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
782*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
783*4882a593Smuzhiyun 	{0x5910,0x0055},//SENSOR_GAIN_REG1
784*4882a593Smuzhiyun 	{0x5910,0x0056},//SENSOR_GAIN_REG1
785*4882a593Smuzhiyun 	{0x5910,0x0057},//SENSOR_GAIN_REG1
786*4882a593Smuzhiyun 	{0x5910,0x9A85},//SENSOR_GAIN_REG1
787*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
788*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
789*4882a593Smuzhiyun 	{0x5910,0x0684},//SENSOR_GAIN_REG1
790*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
791*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
792*4882a593Smuzhiyun 	{0x5910,0x0065},//SENSOR_GAIN_REG1
793*4882a593Smuzhiyun 	{0x5910,0x0066},//SENSOR_GAIN_REG1
794*4882a593Smuzhiyun 	{0x5910,0x0067},//SENSOR_GAIN_REG1
795*4882a593Smuzhiyun 	{0x5910,0x59BD},//SENSOR_GAIN_REG1
796*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
797*4882a593Smuzhiyun 	{0x5910,0x0C00},//SENSOR_GAIN_REG1
798*4882a593Smuzhiyun 	{0x5910,0x0F00},//SENSOR_GAIN_REG1
799*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
800*4882a593Smuzhiyun 	{0x5910,0x10F0},//SENSOR_GAIN_REG1
801*4882a593Smuzhiyun 	{0x5910,0x0075},//SENSOR_GAIN_REG1
802*4882a593Smuzhiyun 	{0x5910,0x0076},//SENSOR_GAIN_REG1
803*4882a593Smuzhiyun 	{0x5910,0x0077},//SENSOR_GAIN_REG1
804*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
805*4882a593Smuzhiyun 	{0x5912,0x7091},//SENSOR_GAIN_REG2
806*4882a593Smuzhiyun 	{0x5912,0x689C},//SENSOR_GAIN_REG2
807*4882a593Smuzhiyun 	{0x5912,0x8885},//SENSOR_GAIN_REG2
808*4882a593Smuzhiyun 	{0x5912,0x98AD},//SENSOR_GAIN_REG2
809*4882a593Smuzhiyun 	{0x5912,0xA8A9},//SENSOR_GAIN_REG2
810*4882a593Smuzhiyun 	{0x5912,0xC894},//SENSOR_GAIN_REG2
811*4882a593Smuzhiyun 	{0x5912,0xC8D1},//SENSOR_GAIN_REG2
812*4882a593Smuzhiyun 	{0x5912,0xC927},//SENSOR_GAIN_REG2
813*4882a593Smuzhiyun 	{0x5912,0xC9A0},//SENSOR_GAIN_REG2
814*4882a593Smuzhiyun 	{0x5912,0xCA4C},//SENSOR_GAIN_REG2
815*4882a593Smuzhiyun 	{0x5912,0xCB3F},//SENSOR_GAIN_REG2
816*4882a593Smuzhiyun 	{0x5912,0xCC97},//SENSOR_GAIN_REG2
817*4882a593Smuzhiyun 	{0x5912,0xCE7C},//SENSOR_GAIN_REG2
818*4882a593Smuzhiyun 	{0x5912,0xCFFF},//SENSOR_GAIN_REG2
819*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
820*4882a593Smuzhiyun 	{0x5912,0xC8F0},//SENSOR_GAIN_REG2
821*4882a593Smuzhiyun 	{0x5912,0xCA00},//SENSOR_GAIN_REG2
822*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
823*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
824*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
825*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
826*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
827*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
828*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
829*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
830*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
831*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
832*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
833*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
834*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
835*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
836*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
837*4882a593Smuzhiyun 	{0x5912,0x0002},//SENSOR_GAIN_REG2
838*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
839*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
840*4882a593Smuzhiyun 	{0x5912,0x5A8B},//SENSOR_GAIN_REG2
841*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
842*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
843*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
844*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
845*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
846*4882a593Smuzhiyun 	{0x5912,0x0005},//SENSOR_GAIN_REG2
847*4882a593Smuzhiyun 	{0x5912,0x0006},//SENSOR_GAIN_REG2
848*4882a593Smuzhiyun 	{0x5912,0x0007},//SENSOR_GAIN_REG2
849*4882a593Smuzhiyun 	{0x5912,0x9A8B},//SENSOR_GAIN_REG2
850*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
851*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
852*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
853*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
854*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
855*4882a593Smuzhiyun 	{0x5912,0x0015},//SENSOR_GAIN_REG2
856*4882a593Smuzhiyun 	{0x5912,0x0016},//SENSOR_GAIN_REG2
857*4882a593Smuzhiyun 	{0x5912,0x0017},//SENSOR_GAIN_REG2
858*4882a593Smuzhiyun 	{0x5912,0xDA8B},//SENSOR_GAIN_REG2
859*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
860*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
861*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
862*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
863*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
864*4882a593Smuzhiyun 	{0x5912,0x0025},//SENSOR_GAIN_REG2
865*4882a593Smuzhiyun 	{0x5912,0x0026},//SENSOR_GAIN_REG2
866*4882a593Smuzhiyun 	{0x5912,0x0027},//SENSOR_GAIN_REG2
867*4882a593Smuzhiyun 	{0x5912,0x59B9},//SENSOR_GAIN_REG2
868*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
869*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
870*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
871*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
872*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
873*4882a593Smuzhiyun 	{0x5912,0x0035},//SENSOR_GAIN_REG2
874*4882a593Smuzhiyun 	{0x5912,0x0036},//SENSOR_GAIN_REG2
875*4882a593Smuzhiyun 	{0x5912,0x0037},//SENSOR_GAIN_REG2
876*4882a593Smuzhiyun 	{0x5912,0x99B9},//SENSOR_GAIN_REG2
877*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
878*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
879*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
880*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
881*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
882*4882a593Smuzhiyun 	{0x5912,0x0045},//SENSOR_GAIN_REG2
883*4882a593Smuzhiyun 	{0x5912,0x0046},//SENSOR_GAIN_REG2
884*4882a593Smuzhiyun 	{0x5912,0x0047},//SENSOR_GAIN_REG2
885*4882a593Smuzhiyun 	{0x5912,0xD9B9},//SENSOR_GAIN_REG2
886*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
887*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
888*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
889*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
890*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
891*4882a593Smuzhiyun 	{0x5912,0x0055},//SENSOR_GAIN_REG2
892*4882a593Smuzhiyun 	{0x5912,0x0056},//SENSOR_GAIN_REG2
893*4882a593Smuzhiyun 	{0x5912,0x0057},//SENSOR_GAIN_REG2
894*4882a593Smuzhiyun 	{0x5912,0x9A85},//SENSOR_GAIN_REG2
895*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
896*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
897*4882a593Smuzhiyun 	{0x5912,0x0684},//SENSOR_GAIN_REG2
898*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
899*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
900*4882a593Smuzhiyun 	{0x5912,0x0065},//SENSOR_GAIN_REG2
901*4882a593Smuzhiyun 	{0x5912,0x0066},//SENSOR_GAIN_REG2
902*4882a593Smuzhiyun 	{0x5912,0x0067},//SENSOR_GAIN_REG2
903*4882a593Smuzhiyun 	{0x5912,0x59BD},//SENSOR_GAIN_REG2
904*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
905*4882a593Smuzhiyun 	{0x5912,0x0C00},//SENSOR_GAIN_REG2
906*4882a593Smuzhiyun 	{0x5912,0x0F00},//SENSOR_GAIN_REG2
907*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
908*4882a593Smuzhiyun 	{0x5912,0x10F0},//SENSOR_GAIN_REG2
909*4882a593Smuzhiyun 	{0x5912,0x0075},//SENSOR_GAIN_REG2
910*4882a593Smuzhiyun 	{0x5912,0x0076},//SENSOR_GAIN_REG2
911*4882a593Smuzhiyun 	{0x5912,0x0077},//SENSOR_GAIN_REG2
912*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
913*4882a593Smuzhiyun 	{0x5900,0x0000},//SENSOR_GAIN
914*4882a593Smuzhiyun 	{REG_NULL, 0x00},
915*4882a593Smuzhiyun };
916*4882a593Smuzhiyun 
917*4882a593Smuzhiyun static const struct regval ar0822_hdr12bit_3840x2160_25fps_regs[] = {
918*4882a593Smuzhiyun 	{REG_DELAY, 2000},
919*4882a593Smuzhiyun 	{0x3030,0x007A},//PLL_MULTIPLIER
920*4882a593Smuzhiyun 	{0x302E,0x0002},//PRE_PLL_CLK_DIV
921*4882a593Smuzhiyun 	{0x302C,0x0002},//VT_SYS_CLK_DIV
922*4882a593Smuzhiyun 	{0x302A,0x0005},//VT_PIX_CLK_DIV
923*4882a593Smuzhiyun 	{0x3038,0x0002},//OP_SYS_CLK_DIV
924*4882a593Smuzhiyun 	{0x3036,0x0006},//OP_WORD_CLK_DIV
925*4882a593Smuzhiyun 	{0x31B0,0x00A3},//FRAME_PREAMBLE
926*4882a593Smuzhiyun 	{0x31B2,0x006C},//LINE_PREAMBLE
927*4882a593Smuzhiyun 	{0x31B4,0x72CC},//MIPI_TIMING_0
928*4882a593Smuzhiyun 	{0x31B6,0x73CE},//MIPI_TIMING_1
929*4882a593Smuzhiyun 	{0x31B8,0xB0CD},//MIPI_TIMING_2
930*4882a593Smuzhiyun 	{0x31BA,0x0411},//MIPI_TIMING_3
931*4882a593Smuzhiyun 	{0x31BC,0x550E},//MIPI_TIMING_4
932*4882a593Smuzhiyun 	{0x3342,0x122C},//MIPI_F1_PDT_EDT
933*4882a593Smuzhiyun 	{0x31BC,0x550E},//MIPI_TIMING_4
934*4882a593Smuzhiyun 	{0x31DE,0x0004},//MIPI_HISPI_TRIM
935*4882a593Smuzhiyun 	{0x31C6,0xC000},//HISPI_CONTROL
936*4882a593Smuzhiyun 	{0x31C8,0x0B28},//MIPI_DESKEW_PAT_WIDTH
937*4882a593Smuzhiyun 	{0x2512,0xA000},//SEQ_CTRL_PORT
938*4882a593Smuzhiyun 	{0x2510,0x0720},//SEQ_DATA_PORT
939*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
940*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
941*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
942*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
943*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
944*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
945*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
946*4882a593Smuzhiyun 	{0x2510,0x2122},//SEQ_DATA_PORT
947*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
948*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
949*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
950*4882a593Smuzhiyun 	{0x2510,0x26FF},//SEQ_DATA_PORT
951*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
952*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
953*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
954*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
955*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
956*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
957*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
958*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
959*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
960*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
961*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
962*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
963*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
964*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
965*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
966*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
967*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
968*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
969*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
970*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
971*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
972*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
973*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
974*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
975*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
976*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
977*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
978*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
979*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
980*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
981*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
982*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
983*4882a593Smuzhiyun 	{0x2510,0x0F8C},//SEQ_DATA_PORT
984*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
985*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
986*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
987*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
988*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
989*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
990*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
991*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
992*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
993*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
994*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
995*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
996*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
997*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
998*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
999*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1000*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1001*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1002*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1003*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1004*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1005*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1006*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1007*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1008*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
1009*4882a593Smuzhiyun 	{0x2510,0xA0E1},//SEQ_DATA_PORT
1010*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1011*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1012*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
1013*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
1014*4882a593Smuzhiyun 	{0x2510,0xA681},//SEQ_DATA_PORT
1015*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1016*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1017*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1018*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1019*4882a593Smuzhiyun 	{0x2510,0x20FE},//SEQ_DATA_PORT
1020*4882a593Smuzhiyun 	{0x2510,0x9070},//SEQ_DATA_PORT
1021*4882a593Smuzhiyun 	{0x2510,0x891D},//SEQ_DATA_PORT
1022*4882a593Smuzhiyun 	{0x2510,0x867F},//SEQ_DATA_PORT
1023*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1024*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
1025*4882a593Smuzhiyun 	{0x2510,0x893F},//SEQ_DATA_PORT
1026*4882a593Smuzhiyun 	{0x2510,0x0F92},//SEQ_DATA_PORT
1027*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1028*4882a593Smuzhiyun 	{0x2510,0x0F8F},//SEQ_DATA_PORT
1029*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1030*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1031*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1032*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1033*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1034*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1035*4882a593Smuzhiyun 	{0x2510,0x9770},//SEQ_DATA_PORT
1036*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
1037*4882a593Smuzhiyun 	{0x2510,0x8054},//SEQ_DATA_PORT
1038*4882a593Smuzhiyun 	{0x2510,0x896C},//SEQ_DATA_PORT
1039*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1040*4882a593Smuzhiyun 	{0x2510,0x9030},//SEQ_DATA_PORT
1041*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1042*4882a593Smuzhiyun 	{0x2510,0x8040},//SEQ_DATA_PORT
1043*4882a593Smuzhiyun 	{0x2510,0x8948},//SEQ_DATA_PORT
1044*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1045*4882a593Smuzhiyun 	{0x2510,0x1597},//SEQ_DATA_PORT
1046*4882a593Smuzhiyun 	{0x2510,0x8808},//SEQ_DATA_PORT
1047*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1048*4882a593Smuzhiyun 	{0x2510,0x1F96},//SEQ_DATA_PORT
1049*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1050*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1051*4882a593Smuzhiyun 	{0x2510,0xA0C0},//SEQ_DATA_PORT
1052*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1053*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
1054*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
1055*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
1056*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
1057*4882a593Smuzhiyun 	{0x2510,0x1FAA},//SEQ_DATA_PORT
1058*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1059*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1060*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1061*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1062*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1063*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1064*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1065*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1066*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1067*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1068*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1069*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1070*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1071*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
1072*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
1073*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1074*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1075*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
1076*4882a593Smuzhiyun 	{0x2510,0x2702},//SEQ_DATA_PORT
1077*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
1078*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1079*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
1080*4882a593Smuzhiyun 	{0x2510,0x2703},//SEQ_DATA_PORT
1081*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
1082*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1083*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
1084*4882a593Smuzhiyun 	{0x2510,0x2704},//SEQ_DATA_PORT
1085*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
1086*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1087*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1088*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1089*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1090*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
1091*4882a593Smuzhiyun 	{0x2510,0x000F},//SEQ_DATA_PORT
1092*4882a593Smuzhiyun 	{0x2510,0x109C},//SEQ_DATA_PORT
1093*4882a593Smuzhiyun 	{0x2510,0x8855},//SEQ_DATA_PORT
1094*4882a593Smuzhiyun 	{0x2510,0x3101},//SEQ_DATA_PORT
1095*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1096*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1097*4882a593Smuzhiyun 	{0x2510,0x3102},//SEQ_DATA_PORT
1098*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1099*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1100*4882a593Smuzhiyun 	{0x2510,0x3181},//SEQ_DATA_PORT
1101*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1102*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1103*4882a593Smuzhiyun 	{0x2510,0x3188},//SEQ_DATA_PORT
1104*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1105*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1106*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
1107*4882a593Smuzhiyun 	{0x2510,0x3104},//SEQ_DATA_PORT
1108*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1109*4882a593Smuzhiyun 	{0x2510,0xB0E4},//SEQ_DATA_PORT
1110*4882a593Smuzhiyun 	{0x2510,0xAD92},//SEQ_DATA_PORT
1111*4882a593Smuzhiyun 	{0x2510,0xBC0C},//SEQ_DATA_PORT
1112*4882a593Smuzhiyun 	{0x2510,0x1028},//SEQ_DATA_PORT
1113*4882a593Smuzhiyun 	{0x2510,0x0022},//SEQ_DATA_PORT
1114*4882a593Smuzhiyun 	{0x2510,0xC020},//SEQ_DATA_PORT
1115*4882a593Smuzhiyun 	{0x2510,0x003E},//SEQ_DATA_PORT
1116*4882a593Smuzhiyun 	{0x2510,0x0045},//SEQ_DATA_PORT
1117*4882a593Smuzhiyun 	{0x2510,0x00B0},//SEQ_DATA_PORT
1118*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
1119*4882a593Smuzhiyun 	{0x2510,0x30C1},//SEQ_DATA_PORT
1120*4882a593Smuzhiyun 	{0x2510,0x8015},//SEQ_DATA_PORT
1121*4882a593Smuzhiyun 	{0x2510,0xA038},//SEQ_DATA_PORT
1122*4882a593Smuzhiyun 	{0x2510,0x100F},//SEQ_DATA_PORT
1123*4882a593Smuzhiyun 	{0x2510,0x0507},//SEQ_DATA_PORT
1124*4882a593Smuzhiyun 	{0x2510,0xA220},//SEQ_DATA_PORT
1125*4882a593Smuzhiyun 	{0x2510,0x0010},//SEQ_DATA_PORT
1126*4882a593Smuzhiyun 	{0x2510,0x10C2},//SEQ_DATA_PORT
1127*4882a593Smuzhiyun 	{0x2510,0xB760},//SEQ_DATA_PORT
1128*4882a593Smuzhiyun 	{0x2510,0x0033},//SEQ_DATA_PORT
1129*4882a593Smuzhiyun 	{0x2510,0x1082},//SEQ_DATA_PORT
1130*4882a593Smuzhiyun 	{0x2510,0x100B},//SEQ_DATA_PORT
1131*4882a593Smuzhiyun 	{0x2510,0x1029},//SEQ_DATA_PORT
1132*4882a593Smuzhiyun 	{0x2510,0xA85A},//SEQ_DATA_PORT
1133*4882a593Smuzhiyun 	{0x2510,0x998D},//SEQ_DATA_PORT
1134*4882a593Smuzhiyun 	{0x2510,0xC810},//SEQ_DATA_PORT
1135*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
1136*4882a593Smuzhiyun 	{0x2510,0x0ECE},//SEQ_DATA_PORT
1137*4882a593Smuzhiyun 	{0x2510,0x123B},//SEQ_DATA_PORT
1138*4882a593Smuzhiyun 	{0x2510,0xC000},//SEQ_DATA_PORT
1139*4882a593Smuzhiyun 	{0x2510,0x032F},//SEQ_DATA_PORT
1140*4882a593Smuzhiyun 	{0x2510,0x11D5},//SEQ_DATA_PORT
1141*4882a593Smuzhiyun 	{0x2510,0x162F},//SEQ_DATA_PORT
1142*4882a593Smuzhiyun 	{0x2510,0x9000},//SEQ_DATA_PORT
1143*4882a593Smuzhiyun 	{0x2510,0x2034},//SEQ_DATA_PORT
1144*4882a593Smuzhiyun 	{0x2510,0x0015},//SEQ_DATA_PORT
1145*4882a593Smuzhiyun 	{0x2510,0x04CB},//SEQ_DATA_PORT
1146*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
1147*4882a593Smuzhiyun 	{0x2510,0x1031},//SEQ_DATA_PORT
1148*4882a593Smuzhiyun 	{0x2510,0x002D},//SEQ_DATA_PORT
1149*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
1150*4882a593Smuzhiyun 	{0x2510,0x80B9},//SEQ_DATA_PORT
1151*4882a593Smuzhiyun 	{0x2510,0xA101},//SEQ_DATA_PORT
1152*4882a593Smuzhiyun 	{0x2510,0x001C},//SEQ_DATA_PORT
1153*4882a593Smuzhiyun 	{0x2510,0x008E},//SEQ_DATA_PORT
1154*4882a593Smuzhiyun 	{0x2510,0x124B},//SEQ_DATA_PORT
1155*4882a593Smuzhiyun 	{0x2510,0x01B5},//SEQ_DATA_PORT
1156*4882a593Smuzhiyun 	{0x2510,0x0B92},//SEQ_DATA_PORT
1157*4882a593Smuzhiyun 	{0x2510,0xA400},//SEQ_DATA_PORT
1158*4882a593Smuzhiyun 	{0x2510,0x8091},//SEQ_DATA_PORT
1159*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
1160*4882a593Smuzhiyun 	{0x2510,0x3002},//SEQ_DATA_PORT
1161*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
1162*4882a593Smuzhiyun 	{0x2510,0x1012},//SEQ_DATA_PORT
1163*4882a593Smuzhiyun 	{0x2510,0x100E},//SEQ_DATA_PORT
1164*4882a593Smuzhiyun 	{0x2510,0x10A8},//SEQ_DATA_PORT
1165*4882a593Smuzhiyun 	{0x2510,0x00A1},//SEQ_DATA_PORT
1166*4882a593Smuzhiyun 	{0x2510,0x132D},//SEQ_DATA_PORT
1167*4882a593Smuzhiyun 	{0x2510,0x09AF},//SEQ_DATA_PORT
1168*4882a593Smuzhiyun 	{0x2510,0x0159},//SEQ_DATA_PORT
1169*4882a593Smuzhiyun 	{0x2510,0x121D},//SEQ_DATA_PORT
1170*4882a593Smuzhiyun 	{0x2510,0x1259},//SEQ_DATA_PORT
1171*4882a593Smuzhiyun 	{0x2510,0x11AF},//SEQ_DATA_PORT
1172*4882a593Smuzhiyun 	{0x2510,0x18B5},//SEQ_DATA_PORT
1173*4882a593Smuzhiyun 	{0x2510,0x0395},//SEQ_DATA_PORT
1174*4882a593Smuzhiyun 	{0x2510,0x054B},//SEQ_DATA_PORT
1175*4882a593Smuzhiyun 	{0x2510,0x1021},//SEQ_DATA_PORT
1176*4882a593Smuzhiyun 	{0x2510,0x0020},//SEQ_DATA_PORT
1177*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
1178*4882a593Smuzhiyun 	{0x2510,0x1030},//SEQ_DATA_PORT
1179*4882a593Smuzhiyun 	{0x2510,0x00CF},//SEQ_DATA_PORT
1180*4882a593Smuzhiyun 	{0x2510,0xB146},//SEQ_DATA_PORT
1181*4882a593Smuzhiyun 	{0x2510,0xC290},//SEQ_DATA_PORT
1182*4882a593Smuzhiyun 	{0x2510,0x103C},//SEQ_DATA_PORT
1183*4882a593Smuzhiyun 	{0x2510,0xA882},//SEQ_DATA_PORT
1184*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
1185*4882a593Smuzhiyun 	{0x2510,0x00A9},//SEQ_DATA_PORT
1186*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
1187*4882a593Smuzhiyun 	{0x2510,0xB700},//SEQ_DATA_PORT
1188*4882a593Smuzhiyun 	{0x2510,0x0001},//SEQ_DATA_PORT
1189*4882a593Smuzhiyun 	{0x2510,0x02A2},//SEQ_DATA_PORT
1190*4882a593Smuzhiyun 	{0x2510,0x000A},//SEQ_DATA_PORT
1191*4882a593Smuzhiyun 	{0x2510,0x98BB},//SEQ_DATA_PORT
1192*4882a593Smuzhiyun 	{0x2510,0x203F},//SEQ_DATA_PORT
1193*4882a593Smuzhiyun 	{0x2510,0x0036},//SEQ_DATA_PORT
1194*4882a593Smuzhiyun 	{0x2510,0x1001},//SEQ_DATA_PORT
1195*4882a593Smuzhiyun 	{0x2510,0x99BE},//SEQ_DATA_PORT
1196*4882a593Smuzhiyun 	{0x2510,0x0139},//SEQ_DATA_PORT
1197*4882a593Smuzhiyun 	{0x2510,0x100A},//SEQ_DATA_PORT
1198*4882a593Smuzhiyun 	{0x2510,0x0040},//SEQ_DATA_PORT
1199*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
1200*4882a593Smuzhiyun 	{0x2510,0x124C},//SEQ_DATA_PORT
1201*4882a593Smuzhiyun 	{0x2510,0x109F},//SEQ_DATA_PORT
1202*4882a593Smuzhiyun 	{0x2510,0x15A3},//SEQ_DATA_PORT
1203*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
1204*4882a593Smuzhiyun 	{0x2510,0x3081},//SEQ_DATA_PORT
1205*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
1206*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
1207*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1208*4882a593Smuzhiyun 	{0x2510,0x112A},//SEQ_DATA_PORT
1209*4882a593Smuzhiyun 	{0x2510,0x101D},//SEQ_DATA_PORT
1210*4882a593Smuzhiyun 	{0x2510,0x202B},//SEQ_DATA_PORT
1211*4882a593Smuzhiyun 	{0x2510,0x02B8},//SEQ_DATA_PORT
1212*4882a593Smuzhiyun 	{0x2510,0x10B8},//SEQ_DATA_PORT
1213*4882a593Smuzhiyun 	{0x2510,0x1136},//SEQ_DATA_PORT
1214*4882a593Smuzhiyun 	{0x2510,0x996B},//SEQ_DATA_PORT
1215*4882a593Smuzhiyun 	{0x2510,0x004C},//SEQ_DATA_PORT
1216*4882a593Smuzhiyun 	{0x2510,0x1039},//SEQ_DATA_PORT
1217*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
1218*4882a593Smuzhiyun 	{0x2510,0x00B5},//SEQ_DATA_PORT
1219*4882a593Smuzhiyun 	{0x2510,0x03C4},//SEQ_DATA_PORT
1220*4882a593Smuzhiyun 	{0x2510,0x1144},//SEQ_DATA_PORT
1221*4882a593Smuzhiyun 	{0x2510,0x1245},//SEQ_DATA_PORT
1222*4882a593Smuzhiyun 	{0x2510,0x9A7B},//SEQ_DATA_PORT
1223*4882a593Smuzhiyun 	{0x2510,0x002B},//SEQ_DATA_PORT
1224*4882a593Smuzhiyun 	{0x2510,0x30D0},//SEQ_DATA_PORT
1225*4882a593Smuzhiyun 	{0x2510,0x3141},//SEQ_DATA_PORT
1226*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1227*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1228*4882a593Smuzhiyun 	{0x2510,0x3142},//SEQ_DATA_PORT
1229*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1230*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1231*4882a593Smuzhiyun 	{0x2510,0x3110},//SEQ_DATA_PORT
1232*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1233*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1234*4882a593Smuzhiyun 	{0x2510,0x3120},//SEQ_DATA_PORT
1235*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1236*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1237*4882a593Smuzhiyun 	{0x2510,0x3144},//SEQ_DATA_PORT
1238*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1239*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1240*4882a593Smuzhiyun 	{0x2510,0x3148},//SEQ_DATA_PORT
1241*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1242*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1243*4882a593Smuzhiyun 	{0x2510,0x3182},//SEQ_DATA_PORT
1244*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1245*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1246*4882a593Smuzhiyun 	{0x2510,0x3184},//SEQ_DATA_PORT
1247*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1248*4882a593Smuzhiyun 	{0x2510,0x3190},//SEQ_DATA_PORT
1249*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1250*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1251*4882a593Smuzhiyun 	{0x2510,0x31A0},//SEQ_DATA_PORT
1252*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
1253*4882a593Smuzhiyun 	{0x2510,0x2201},//SEQ_DATA_PORT
1254*4882a593Smuzhiyun 	{0x2510,0x807D},//SEQ_DATA_PORT
1255*4882a593Smuzhiyun 	{0x2510,0x2206},//SEQ_DATA_PORT
1256*4882a593Smuzhiyun 	{0x2510,0x8815},//SEQ_DATA_PORT
1257*4882a593Smuzhiyun 	{0x2510,0x8877},//SEQ_DATA_PORT
1258*4882a593Smuzhiyun 	{0x2510,0x0092},//SEQ_DATA_PORT
1259*4882a593Smuzhiyun 	{0x2510,0x220E},//SEQ_DATA_PORT
1260*4882a593Smuzhiyun 	{0x2510,0x2211},//SEQ_DATA_PORT
1261*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
1262*4882a593Smuzhiyun 	{0x2510,0x3001},//SEQ_DATA_PORT
1263*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1264*4882a593Smuzhiyun 	{0x2510,0x8A61},//SEQ_DATA_PORT
1265*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
1266*4882a593Smuzhiyun 	{0x2510,0x1092},//SEQ_DATA_PORT
1267*4882a593Smuzhiyun 	{0x2510,0x181F},//SEQ_DATA_PORT
1268*4882a593Smuzhiyun 	{0x2510,0x0B1F},//SEQ_DATA_PORT
1269*4882a593Smuzhiyun 	{0x2510,0x101F},//SEQ_DATA_PORT
1270*4882a593Smuzhiyun 	{0x2510,0x00B6},//SEQ_DATA_PORT
1271*4882a593Smuzhiyun 	{0x2510,0x0023},//SEQ_DATA_PORT
1272*4882a593Smuzhiyun 	{0x2510,0x00B9},//SEQ_DATA_PORT
1273*4882a593Smuzhiyun 	{0x2510,0x104C},//SEQ_DATA_PORT
1274*4882a593Smuzhiyun 	{0x2510,0x996E},//SEQ_DATA_PORT
1275*4882a593Smuzhiyun 	{0x2510,0x0140},//SEQ_DATA_PORT
1276*4882a593Smuzhiyun 	{0x2510,0x0257},//SEQ_DATA_PORT
1277*4882a593Smuzhiyun 	{0x2510,0x1035},//SEQ_DATA_PORT
1278*4882a593Smuzhiyun 	{0x2510,0x9F26},//SEQ_DATA_PORT
1279*4882a593Smuzhiyun 	{0x2510,0x1423},//SEQ_DATA_PORT
1280*4882a593Smuzhiyun 	{0x2510,0x0048},//SEQ_DATA_PORT
1281*4882a593Smuzhiyun 	{0x2510,0xC878},//SEQ_DATA_PORT
1282*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1283*4882a593Smuzhiyun 	{0x2510,0x1548},//SEQ_DATA_PORT
1284*4882a593Smuzhiyun 	{0x2510,0x0C49},//SEQ_DATA_PORT
1285*4882a593Smuzhiyun 	{0x2510,0x1149},//SEQ_DATA_PORT
1286*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
1287*4882a593Smuzhiyun 	{0x2510,0x1057},//SEQ_DATA_PORT
1288*4882a593Smuzhiyun 	{0x2510,0x3281},//SEQ_DATA_PORT
1289*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1290*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
1291*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
1292*4882a593Smuzhiyun 	{0x2510,0xA020},//SEQ_DATA_PORT
1293*4882a593Smuzhiyun 	{0x2510,0x000C},//SEQ_DATA_PORT
1294*4882a593Smuzhiyun 	{0x2510,0x9825},//SEQ_DATA_PORT
1295*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
1296*4882a593Smuzhiyun 	{0x2510,0x1054},//SEQ_DATA_PORT
1297*4882a593Smuzhiyun 	{0x2510,0xB06D},//SEQ_DATA_PORT
1298*4882a593Smuzhiyun 	{0x2510,0x0035},//SEQ_DATA_PORT
1299*4882a593Smuzhiyun 	{0x2510,0x004D},//SEQ_DATA_PORT
1300*4882a593Smuzhiyun 	{0x2510,0x9905},//SEQ_DATA_PORT
1301*4882a593Smuzhiyun 	{0x2510,0xB064},//SEQ_DATA_PORT
1302*4882a593Smuzhiyun 	{0x2510,0x99C5},//SEQ_DATA_PORT
1303*4882a593Smuzhiyun 	{0x2510,0x0047},//SEQ_DATA_PORT
1304*4882a593Smuzhiyun 	{0x2510,0xB920},//SEQ_DATA_PORT
1305*4882a593Smuzhiyun 	{0x2510,0x1447},//SEQ_DATA_PORT
1306*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1307*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1308*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1309*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1310*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1311*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1312*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1313*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1314*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1315*4882a593Smuzhiyun 	{0x31F8,0x0008},//MIPI_CONFIG_2
1316*4882a593Smuzhiyun 	{0x3C70,0x6828},//CALIB_ROWS
1317*4882a593Smuzhiyun 	{0x3092,0x0826},//ROW_NOISE_CONTROL
1318*4882a593Smuzhiyun 	{0x3428,0x0209},//SEQUENCER_CONTROL
1319*4882a593Smuzhiyun 	{0x3516,0xFF04},//DAC_LD_22_23
1320*4882a593Smuzhiyun 	{0x3526,0x6480},//DAC_LD_38_39
1321*4882a593Smuzhiyun 	{0x3504,0x8AAA},//DAC_LD_4_5
1322*4882a593Smuzhiyun 	{0x353C,0x220C},//DAC_LD_60_61
1323*4882a593Smuzhiyun 	{0x3536,0x4C6E},//DAC_LD_54_55
1324*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
1325*4882a593Smuzhiyun 	{0x3364,0x00EC},//DCG_TRIM
1326*4882a593Smuzhiyun 	{0x3512,0x8888},//DAC_LD_18_19
1327*4882a593Smuzhiyun 	{0x3514,0x888F},//DAC_LD_20_21
1328*4882a593Smuzhiyun 	{0x3520,0xFBF0},//DAC_LD_32_33
1329*4882a593Smuzhiyun 	{0x3524,0xB2A1},//DAC_LD_36_37
1330*4882a593Smuzhiyun 	{0x3528,0xCC84},//DAC_LD_40_41
1331*4882a593Smuzhiyun 	{0x3532,0x4C8E},//DAC_LD_50_51
1332*4882a593Smuzhiyun 	{0x3534,0x4E64},//DAC_LD_52_53
1333*4882a593Smuzhiyun 	{0x351E,0x5856},//DAC_LD_30_31
1334*4882a593Smuzhiyun 	{0x353E,0x98F2},//DAC_LD_62_63
1335*4882a593Smuzhiyun 	{0x352E,0x6A8A},//DAC_LD_46_47
1336*4882a593Smuzhiyun 	{0x3370,0x0211},//DBLC_CONTROL
1337*4882a593Smuzhiyun 	{0x3372,0x700F},//DBLC_FS0_CONTROL
1338*4882a593Smuzhiyun 	{0x3540,0x3597},//DAC_LD_64_65
1339*4882a593Smuzhiyun 	{0x58E2,0x0BE3},//COL_COUNT_VALUES1
1340*4882a593Smuzhiyun 	{0x58E4,0x18B4},//COL_COUNT_VALUES2
1341*4882a593Smuzhiyun 	{0x3522,0x7C97},//DAC_LD_34_35
1342*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
1343*4882a593Smuzhiyun 	{0x31D4,0x0042},//CLK_MEM_GATING_CTRL
1344*4882a593Smuzhiyun 	{0x352A,0x6F8F},//DAC_LD_42_43
1345*4882a593Smuzhiyun 	{0x3530,0x4A08},//DAC_LD_48_49
1346*4882a593Smuzhiyun 	{0x351A,0x5FFF},//DAC_LD_26_27
1347*4882a593Smuzhiyun 	{0x350E,0x39D9},//DAC_LD_14_15
1348*4882a593Smuzhiyun 	{0x3510,0x9988},//DAC_LD_16_17
1349*4882a593Smuzhiyun 	{0x3380,0x1FFF},//DBLC_OFFSET1
1350*4882a593Smuzhiyun 	{0x337A,0x1000},//DBLC_SCALE1
1351*4882a593Smuzhiyun 	{0x3092,0x0800},//ROW_NOISE_CONTROL
1352*4882a593Smuzhiyun 	{0x350A,0x0654},//DAC_LD_10_11
1353*4882a593Smuzhiyun 	{0x3364,0x00E0},//DCG_TRIM
1354*4882a593Smuzhiyun 	{0x591E,0x61AE},//ANALOG_GAIN_WR_DATA
1355*4882a593Smuzhiyun 	{0x591E,0x722C},//ANALOG_GAIN_WR_DATA
1356*4882a593Smuzhiyun 	{0x591E,0x82B8},//ANALOG_GAIN_WR_DATA
1357*4882a593Smuzhiyun 	{0x591E,0x92F6},//ANALOG_GAIN_WR_DATA
1358*4882a593Smuzhiyun 	{0x591E,0xA447},//ANALOG_GAIN_WR_DATA
1359*4882a593Smuzhiyun 	{0x591E,0xB66D},//ANALOG_GAIN_WR_DATA
1360*4882a593Smuzhiyun 	{0x591E,0xC6EA},//ANALOG_GAIN_WR_DATA
1361*4882a593Smuzhiyun 	{0x591E,0xDECD},//ANALOG_GAIN_WR_DATA
1362*4882a593Smuzhiyun 	{0x3532,0x4C8A},//DAC_LD_50_51
1363*4882a593Smuzhiyun 	{0x3534,0x4E60},//DAC_LD_52_53
1364*4882a593Smuzhiyun 	{0x353E,0x90F2},//DAC_LD_62_63
1365*4882a593Smuzhiyun 	{0x351A,0x4FFF},//DAC_LD_26_27
1366*4882a593Smuzhiyun 	{0x591C,0x00D7},//DGR_AMP_GAIN
1367*4882a593Smuzhiyun 	{0x3522,0x6097},//DAC_LD_34_35
1368*4882a593Smuzhiyun 	{0x5002,0x37C3},//T1_PIX_DEF_ID2
1369*4882a593Smuzhiyun 	{0x51CC,0x0149},//T1_NOISE_GAIN_THRESHOLD0
1370*4882a593Smuzhiyun 	{0x51D8,0x044D},//T1_NOISE_GAIN_THRESHOLD1
1371*4882a593Smuzhiyun 	{0x51CE,0x0700},//T1_NOISE_GAIN_THRESHOLD2
1372*4882a593Smuzhiyun 	{0x51D0,0x0001},//T1_NOISE_FLOOR0
1373*4882a593Smuzhiyun 	{0x51D2,0x0002},//T1_NOISE_FLOOR1
1374*4882a593Smuzhiyun 	{0x51D4,0x0003},//T1_NOISE_FLOOR2
1375*4882a593Smuzhiyun 	{0x51D6,0x0004},//T1_NOISE_FLOOR3
1376*4882a593Smuzhiyun 	{0x5202,0x37C3},//T2_PIX_DEF_ID2
1377*4882a593Smuzhiyun 	{0x51EA,0x0149},//T2_NOISE_GAIN_THRESHOLD0
1378*4882a593Smuzhiyun 	{0x51FC,0x044D},//T2_NOISE_GAIN_THRESHOLD1
1379*4882a593Smuzhiyun 	{0x51EC,0x0700},//T2_NOISE_GAIN_THRESHOLD2
1380*4882a593Smuzhiyun 	{0x51EE,0x0001},//T2_NOISE_FLOOR0
1381*4882a593Smuzhiyun 	{0x51F0,0x0002},//T2_NOISE_FLOOR1
1382*4882a593Smuzhiyun 	{0x51F2,0x0003},//T2_NOISE_FLOOR2
1383*4882a593Smuzhiyun 	{0x51F4,0x0004},//T2_NOISE_FLOOR3
1384*4882a593Smuzhiyun 	{0x5402,0x37C3},//T4_PIX_DEF_ID2
1385*4882a593Smuzhiyun 	{0x5560,0x0149},//T4_NOISE_GAIN_THRESHOLD0
1386*4882a593Smuzhiyun 	{0x556C,0x044D},//T4_NOISE_GAIN_THRESHOLD1
1387*4882a593Smuzhiyun 	{0x5562,0x0700},//T4_NOISE_GAIN_THRESHOLD2
1388*4882a593Smuzhiyun 	{0x5564,0x0001},//T4_NOISE_FLOOR0
1389*4882a593Smuzhiyun 	{0x5566,0x0002},//T4_NOISE_FLOOR1
1390*4882a593Smuzhiyun 	{0x5568,0x0003},//T4_NOISE_FLOOR2
1391*4882a593Smuzhiyun 	{0x556A,0x0004},//T4_NOISE_FLOOR3
1392*4882a593Smuzhiyun 	{0x31E0,0x0001},//PIX_DEF_ID
1393*4882a593Smuzhiyun 	{0x5000,0x0080},//T1_PIX_DEF_ID
1394*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
1395*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
1396*4882a593Smuzhiyun 	{0x5200,0x0080},//T2_PIX_DEF_ID
1397*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
1398*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
1399*4882a593Smuzhiyun 	{0x5400,0x0080},//T4_PIX_DEF_ID
1400*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
1401*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
1402*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
1403*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
1404*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
1405*4882a593Smuzhiyun 	{0x50A2,0x3F2A},//BMT0
1406*4882a593Smuzhiyun 	{0x50A4,0x875A},//BMT1
1407*4882a593Smuzhiyun 	{0x50A6,0x030F},//SINGLEK_FACTOR0
1408*4882a593Smuzhiyun 	{0x50A6,0x0F0F},//SINGLEK_FACTOR0
1409*4882a593Smuzhiyun 	{0x50A8,0x030F},//SINGLEK_FACTOR1
1410*4882a593Smuzhiyun 	{0x50A8,0x0F0F},//SINGLEK_FACTOR1
1411*4882a593Smuzhiyun 	{0x50AA,0x030F},//SINGLEK_FACTOR2
1412*4882a593Smuzhiyun 	{0x50AA,0x050F},//SINGLEK_FACTOR2
1413*4882a593Smuzhiyun 	{0x50AC,0x0301},//CROSS_FACTOR0
1414*4882a593Smuzhiyun 	{0x50AC,0x0101},//CROSS_FACTOR0
1415*4882a593Smuzhiyun 	{0x50AE,0x0301},//CROSS_FACTOR1
1416*4882a593Smuzhiyun 	{0x50AE,0x0101},//CROSS_FACTOR1
1417*4882a593Smuzhiyun 	{0x50B0,0x0301},//CROSS_FACTOR2
1418*4882a593Smuzhiyun 	{0x50B0,0x0101},//CROSS_FACTOR2
1419*4882a593Smuzhiyun 	{0x50B2,0x03FF},//SINGLE_MAX_FACTOR
1420*4882a593Smuzhiyun 	{0x50B4,0x030F},//COUPLE_FACTOR0
1421*4882a593Smuzhiyun 	{0x50B4,0x0F0F},//COUPLE_FACTOR0
1422*4882a593Smuzhiyun 	{0x50B6,0x030F},//COUPLE_FACTOR1
1423*4882a593Smuzhiyun 	{0x50B6,0x0F0F},//COUPLE_FACTOR1
1424*4882a593Smuzhiyun 	{0x50B8,0x030F},//COUPLE_FACTOR2
1425*4882a593Smuzhiyun 	{0x50B8,0x050F},//COUPLE_FACTOR2
1426*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
1427*4882a593Smuzhiyun 	{0x3D34,0x9C40},//T2_STR_DEC_TH
1428*4882a593Smuzhiyun 	{0x3D36,0xFFFF},//T2_END_DEC_TH
1429*4882a593Smuzhiyun 	{0x3D02,0x5033},//MEC_CTRL2
1430*4882a593Smuzhiyun 	{0x3086,0x1A28},//PARK_ROW_ADDR
1431*4882a593Smuzhiyun 	{0x33E4,0x0040},//VERT_SHADING_CONTROL
1432*4882a593Smuzhiyun 	{0x3C70,0x6222},//CALIB_ROWS
1433*4882a593Smuzhiyun 	{0x3110,0x0011},//HDR_CONTROL0
1434*4882a593Smuzhiyun 	{0x30B0,0x0820},//DIGITAL_TEST
1435*4882a593Smuzhiyun 	{0x3280,0x0ED8},//T1_BARRIER_C0
1436*4882a593Smuzhiyun 	{0x3282,0x0ED8},//T1_BARRIER_C1
1437*4882a593Smuzhiyun 	{0x3284,0x0ED8},//T1_BARRIER_C2
1438*4882a593Smuzhiyun 	{0x3286,0x0ED8},//T1_BARRIER_C3
1439*4882a593Smuzhiyun 	{0x3288,0x0ED8},//T2_BARRIER_C0
1440*4882a593Smuzhiyun 	{0x328A,0x0ED8},//T2_BARRIER_C1
1441*4882a593Smuzhiyun 	{0x328C,0x0ED8},//T2_BARRIER_C2
1442*4882a593Smuzhiyun 	{0x328E,0x0ED8},//T2_BARRIER_C3
1443*4882a593Smuzhiyun 	{0x3290,0x0ED8},//T3_BARRIER_C0
1444*4882a593Smuzhiyun 	{0x3292,0x0ED8},//T3_BARRIER_C1
1445*4882a593Smuzhiyun 	{0x3294,0x0ED8},//T3_BARRIER_C2
1446*4882a593Smuzhiyun 	{0x3296,0x0ED8},//T3_BARRIER_C3
1447*4882a593Smuzhiyun 	{0x3100,0xC001},//DLO_CONTROL0
1448*4882a593Smuzhiyun 	{0x3102,0xBED8},//DLO_CONTROL1
1449*4882a593Smuzhiyun 	{0x3104,0xBED8},//DLO_CONTROL2
1450*4882a593Smuzhiyun 	{0x3106,0xBED8},//DLO_CONTROL3
1451*4882a593Smuzhiyun 	{0x3108,0x07D0},//DLO_CONTROL4
1452*4882a593Smuzhiyun 	{0x3116,0x2001},//HDR_CONTROL3
1453*4882a593Smuzhiyun 	{0x3124,0x006D},//HDR_MD_CONTROL0
1454*4882a593Smuzhiyun 	{0x3126,0x003C},//HDR_MD_CONTROL1
1455*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
1456*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
1457*4882a593Smuzhiyun 	{0x3082,0x0014},//OPERATION_MODE_CTRL
1458*4882a593Smuzhiyun 	{0x30BA,0x0135},//DIGITAL_CTRL
1459*4882a593Smuzhiyun 	{0x3238,0x0044},//EXPOSURE_RATIO
1460*4882a593Smuzhiyun 	{0x3012,0x07A0},//COARSE_INTEGRATION_TIME_
1461*4882a593Smuzhiyun 	{0x3212,0x007A},//COARSE_INTEGRATION_TIME2
1462*4882a593Smuzhiyun 	{0x300C,0x0A8C},//LINE_LENGTH_PCK_
1463*4882a593Smuzhiyun 	{0x300A,0x0980},//FRAME_LENGTH_LINES_
1464*4882a593Smuzhiyun 	{0x5914,0x4012},//SENSOR_GAIN_TABLE_SEL
1465*4882a593Smuzhiyun 	{REG_DELAY,100},
1466*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
1467*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
1468*4882a593Smuzhiyun 	{0x5910,0x7091},//SENSOR_GAIN_REG1
1469*4882a593Smuzhiyun 	{0x5910,0x689C},//SENSOR_GAIN_REG1
1470*4882a593Smuzhiyun 	{0x5910,0x8885},//SENSOR_GAIN_REG1
1471*4882a593Smuzhiyun 	{0x5910,0x98AD},//SENSOR_GAIN_REG1
1472*4882a593Smuzhiyun 	{0x5910,0xA8A9},//SENSOR_GAIN_REG1
1473*4882a593Smuzhiyun 	{0x5910,0xC894},//SENSOR_GAIN_REG1
1474*4882a593Smuzhiyun 	{0x5910,0xC8D1},//SENSOR_GAIN_REG1
1475*4882a593Smuzhiyun 	{0x5910,0xD88A},//SENSOR_GAIN_REG1
1476*4882a593Smuzhiyun 	{0x5910,0xD8C3},//SENSOR_GAIN_REG1
1477*4882a593Smuzhiyun 	{0x5910,0xD915},//SENSOR_GAIN_REG1
1478*4882a593Smuzhiyun 	{0x5910,0xD988},//SENSOR_GAIN_REG1
1479*4882a593Smuzhiyun 	{0x5910,0xDA2A},//SENSOR_GAIN_REG1
1480*4882a593Smuzhiyun 	{0x5910,0xDB0E},//SENSOR_GAIN_REG1
1481*4882a593Smuzhiyun 	{0x5910,0xDC53},//SENSOR_GAIN_REG1
1482*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
1483*4882a593Smuzhiyun 	{0x5910,0xC919},//SENSOR_GAIN_REG1
1484*4882a593Smuzhiyun 	{0x5910,0xCA00},//SENSOR_GAIN_REG1
1485*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
1486*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
1487*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
1488*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
1489*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
1490*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
1491*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
1492*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
1493*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1494*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1495*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1496*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1497*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1498*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1499*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
1500*4882a593Smuzhiyun 	{0x5910,0x0002},//SENSOR_GAIN_REG1
1501*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
1502*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
1503*4882a593Smuzhiyun 	{0x5910,0x5A8B},//SENSOR_GAIN_REG1
1504*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
1505*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1506*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
1507*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1508*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1509*4882a593Smuzhiyun 	{0x5910,0x0005},//SENSOR_GAIN_REG1
1510*4882a593Smuzhiyun 	{0x5910,0x0006},//SENSOR_GAIN_REG1
1511*4882a593Smuzhiyun 	{0x5910,0x0007},//SENSOR_GAIN_REG1
1512*4882a593Smuzhiyun 	{0x5910,0x9A8B},//SENSOR_GAIN_REG1
1513*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
1514*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1515*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1516*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1517*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1518*4882a593Smuzhiyun 	{0x5910,0x0015},//SENSOR_GAIN_REG1
1519*4882a593Smuzhiyun 	{0x5910,0x0016},//SENSOR_GAIN_REG1
1520*4882a593Smuzhiyun 	{0x5910,0x0017},//SENSOR_GAIN_REG1
1521*4882a593Smuzhiyun 	{0x5910,0xDA8B},//SENSOR_GAIN_REG1
1522*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
1523*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1524*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1525*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1526*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
1527*4882a593Smuzhiyun 	{0x5910,0x0025},//SENSOR_GAIN_REG1
1528*4882a593Smuzhiyun 	{0x5910,0x0026},//SENSOR_GAIN_REG1
1529*4882a593Smuzhiyun 	{0x5910,0x0027},//SENSOR_GAIN_REG1
1530*4882a593Smuzhiyun 	{0x5910,0x59B9},//SENSOR_GAIN_REG1
1531*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
1532*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1533*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
1534*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1535*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1536*4882a593Smuzhiyun 	{0x5910,0x0035},//SENSOR_GAIN_REG1
1537*4882a593Smuzhiyun 	{0x5910,0x0036},//SENSOR_GAIN_REG1
1538*4882a593Smuzhiyun 	{0x5910,0x0037},//SENSOR_GAIN_REG1
1539*4882a593Smuzhiyun 	{0x5910,0x99B9},//SENSOR_GAIN_REG1
1540*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
1541*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1542*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
1543*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1544*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1545*4882a593Smuzhiyun 	{0x5910,0x0045},//SENSOR_GAIN_REG1
1546*4882a593Smuzhiyun 	{0x5910,0x0046},//SENSOR_GAIN_REG1
1547*4882a593Smuzhiyun 	{0x5910,0x0047},//SENSOR_GAIN_REG1
1548*4882a593Smuzhiyun 	{0x5910,0xD9B9},//SENSOR_GAIN_REG1
1549*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
1550*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1551*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
1552*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1553*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
1554*4882a593Smuzhiyun 	{0x5910,0x0055},//SENSOR_GAIN_REG1
1555*4882a593Smuzhiyun 	{0x5910,0x0056},//SENSOR_GAIN_REG1
1556*4882a593Smuzhiyun 	{0x5910,0x0057},//SENSOR_GAIN_REG1
1557*4882a593Smuzhiyun 	{0x5910,0x9A85},//SENSOR_GAIN_REG1
1558*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
1559*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
1560*4882a593Smuzhiyun 	{0x5910,0x0684},//SENSOR_GAIN_REG1
1561*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
1562*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
1563*4882a593Smuzhiyun 	{0x5910,0x0065},//SENSOR_GAIN_REG1
1564*4882a593Smuzhiyun 	{0x5910,0x0066},//SENSOR_GAIN_REG1
1565*4882a593Smuzhiyun 	{0x5910,0x0067},//SENSOR_GAIN_REG1
1566*4882a593Smuzhiyun 	{0x5910,0x59BD},//SENSOR_GAIN_REG1
1567*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
1568*4882a593Smuzhiyun 	{0x5910,0x0C00},//SENSOR_GAIN_REG1
1569*4882a593Smuzhiyun 	{0x5910,0x0F00},//SENSOR_GAIN_REG1
1570*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
1571*4882a593Smuzhiyun 	{0x5910,0x10F0},//SENSOR_GAIN_REG1
1572*4882a593Smuzhiyun 	{0x5910,0x0075},//SENSOR_GAIN_REG1
1573*4882a593Smuzhiyun 	{0x5910,0x0076},//SENSOR_GAIN_REG1
1574*4882a593Smuzhiyun 	{0x5910,0x0077},//SENSOR_GAIN_REG1
1575*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
1576*4882a593Smuzhiyun 	{0x5912,0x7091},//SENSOR_GAIN_REG2
1577*4882a593Smuzhiyun 	{0x5912,0x689C},//SENSOR_GAIN_REG2
1578*4882a593Smuzhiyun 	{0x5912,0x8885},//SENSOR_GAIN_REG2
1579*4882a593Smuzhiyun 	{0x5912,0x98AD},//SENSOR_GAIN_REG2
1580*4882a593Smuzhiyun 	{0x5912,0xA8A9},//SENSOR_GAIN_REG2
1581*4882a593Smuzhiyun 	{0x5912,0xC894},//SENSOR_GAIN_REG2
1582*4882a593Smuzhiyun 	{0x5912,0xC8D1},//SENSOR_GAIN_REG2
1583*4882a593Smuzhiyun 	{0x5912,0xC927},//SENSOR_GAIN_REG2
1584*4882a593Smuzhiyun 	{0x5912,0xC9A0},//SENSOR_GAIN_REG2
1585*4882a593Smuzhiyun 	{0x5912,0xCA4C},//SENSOR_GAIN_REG2
1586*4882a593Smuzhiyun 	{0x5912,0xCB3F},//SENSOR_GAIN_REG2
1587*4882a593Smuzhiyun 	{0x5912,0xCC97},//SENSOR_GAIN_REG2
1588*4882a593Smuzhiyun 	{0x5912,0xCE7C},//SENSOR_GAIN_REG2
1589*4882a593Smuzhiyun 	{0x5912,0xCFFF},//SENSOR_GAIN_REG2
1590*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
1591*4882a593Smuzhiyun 	{0x5912,0xC8F0},//SENSOR_GAIN_REG2
1592*4882a593Smuzhiyun 	{0x5912,0xCA00},//SENSOR_GAIN_REG2
1593*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
1594*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
1595*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
1596*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
1597*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
1598*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
1599*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
1600*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
1601*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1602*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1603*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1604*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1605*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1606*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1607*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
1608*4882a593Smuzhiyun 	{0x5912,0x0002},//SENSOR_GAIN_REG2
1609*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
1610*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
1611*4882a593Smuzhiyun 	{0x5912,0x5A8B},//SENSOR_GAIN_REG2
1612*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
1613*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1614*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
1615*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1616*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1617*4882a593Smuzhiyun 	{0x5912,0x0005},//SENSOR_GAIN_REG2
1618*4882a593Smuzhiyun 	{0x5912,0x0006},//SENSOR_GAIN_REG2
1619*4882a593Smuzhiyun 	{0x5912,0x0007},//SENSOR_GAIN_REG2
1620*4882a593Smuzhiyun 	{0x5912,0x9A8B},//SENSOR_GAIN_REG2
1621*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
1622*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1623*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1624*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1625*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1626*4882a593Smuzhiyun 	{0x5912,0x0015},//SENSOR_GAIN_REG2
1627*4882a593Smuzhiyun 	{0x5912,0x0016},//SENSOR_GAIN_REG2
1628*4882a593Smuzhiyun 	{0x5912,0x0017},//SENSOR_GAIN_REG2
1629*4882a593Smuzhiyun 	{0x5912,0xDA8B},//SENSOR_GAIN_REG2
1630*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
1631*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1632*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1633*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1634*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
1635*4882a593Smuzhiyun 	{0x5912,0x0025},//SENSOR_GAIN_REG2
1636*4882a593Smuzhiyun 	{0x5912,0x0026},//SENSOR_GAIN_REG2
1637*4882a593Smuzhiyun 	{0x5912,0x0027},//SENSOR_GAIN_REG2
1638*4882a593Smuzhiyun 	{0x5912,0x59B9},//SENSOR_GAIN_REG2
1639*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
1640*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1641*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
1642*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1643*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1644*4882a593Smuzhiyun 	{0x5912,0x0035},//SENSOR_GAIN_REG2
1645*4882a593Smuzhiyun 	{0x5912,0x0036},//SENSOR_GAIN_REG2
1646*4882a593Smuzhiyun 	{0x5912,0x0037},//SENSOR_GAIN_REG2
1647*4882a593Smuzhiyun 	{0x5912,0x99B9},//SENSOR_GAIN_REG2
1648*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
1649*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1650*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
1651*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1652*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1653*4882a593Smuzhiyun 	{0x5912,0x0045},//SENSOR_GAIN_REG2
1654*4882a593Smuzhiyun 	{0x5912,0x0046},//SENSOR_GAIN_REG2
1655*4882a593Smuzhiyun 	{0x5912,0x0047},//SENSOR_GAIN_REG2
1656*4882a593Smuzhiyun 	{0x5912,0xD9B9},//SENSOR_GAIN_REG2
1657*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
1658*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1659*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
1660*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1661*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
1662*4882a593Smuzhiyun 	{0x5912,0x0055},//SENSOR_GAIN_REG2
1663*4882a593Smuzhiyun 	{0x5912,0x0056},//SENSOR_GAIN_REG2
1664*4882a593Smuzhiyun 	{0x5912,0x0057},//SENSOR_GAIN_REG2
1665*4882a593Smuzhiyun 	{0x5912,0x9A85},//SENSOR_GAIN_REG2
1666*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
1667*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
1668*4882a593Smuzhiyun 	{0x5912,0x0684},//SENSOR_GAIN_REG2
1669*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
1670*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
1671*4882a593Smuzhiyun 	{0x5912,0x0065},//SENSOR_GAIN_REG2
1672*4882a593Smuzhiyun 	{0x5912,0x0066},//SENSOR_GAIN_REG2
1673*4882a593Smuzhiyun 	{0x5912,0x0067},//SENSOR_GAIN_REG2
1674*4882a593Smuzhiyun 	{0x5912,0x59BD},//SENSOR_GAIN_REG2
1675*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
1676*4882a593Smuzhiyun 	{0x5912,0x0C00},//SENSOR_GAIN_REG2
1677*4882a593Smuzhiyun 	{0x5912,0x0F00},//SENSOR_GAIN_REG2
1678*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
1679*4882a593Smuzhiyun 	{0x5912,0x10F0},//SENSOR_GAIN_REG2
1680*4882a593Smuzhiyun 	{0x5912,0x0075},//SENSOR_GAIN_REG2
1681*4882a593Smuzhiyun 	{0x5912,0x0076},//SENSOR_GAIN_REG2
1682*4882a593Smuzhiyun 	{0x5912,0x0077},//SENSOR_GAIN_REG2
1683*4882a593Smuzhiyun 	{0x5914,0x4006},//SENSOR_GAIN_TABLE_SEL
1684*4882a593Smuzhiyun 	{0x5900,0x0020},//SENSOR_GAIN
1685*4882a593Smuzhiyun 	{0x5902,0x0000},//SENSOR_GAIN_T2
1686*4882a593Smuzhiyun 	{0x3110,0x0001},//HDR_CONTROL0
1687*4882a593Smuzhiyun 
1688*4882a593Smuzhiyun 	{REG_NULL, 0x00},
1689*4882a593Smuzhiyun };
1690*4882a593Smuzhiyun static const struct regval ar0822_hdr12bit_3840x2160_20fps_regs[] = {
1691*4882a593Smuzhiyun 	{REG_DELAY, 2000},
1692*4882a593Smuzhiyun 	{0x3030,0x0124},//PLL_MULTIPLIER
1693*4882a593Smuzhiyun 	{0x302E,0x0006},//PRE_PLL_CLK_DIV
1694*4882a593Smuzhiyun 	{0x302C,0x0002},//VT_SYS_CLK_DIV
1695*4882a593Smuzhiyun 	{0x302A,0x0004},//VT_PIX_CLK_DIV
1696*4882a593Smuzhiyun 	{0x3038,0x0002},//OP_SYS_CLK_DIV
1697*4882a593Smuzhiyun 	{0x3036,0x0006},//OP_WORD_CLK_DIV
1698*4882a593Smuzhiyun 	{0x31B0,0x0089},//FRAME_PREAMBLE
1699*4882a593Smuzhiyun 	{0x31B2,0x005C},//LINE_PREAMBLE
1700*4882a593Smuzhiyun 	{0x31B4,0x624A},//MIPI_TIMING_0
1701*4882a593Smuzhiyun 	{0x31B6,0x630B},//MIPI_TIMING_1
1702*4882a593Smuzhiyun 	{0x31B8,0x90CB},//MIPI_TIMING_2
1703*4882a593Smuzhiyun 	{0x31BA,0x038E},//MIPI_TIMING_3
1704*4882a593Smuzhiyun 	{0x31BC,0x508B},//MIPI_TIMING_4
1705*4882a593Smuzhiyun 	{0x3342,0x122C},//MIPI_F1_PDT_EDT
1706*4882a593Smuzhiyun 	{0x2512,0xA000},//SEQ_CTRL_PORT
1707*4882a593Smuzhiyun 	{0x2510,0x0720},//SEQ_DATA_PORT
1708*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1709*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1710*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1711*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1712*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1713*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1714*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1715*4882a593Smuzhiyun 	{0x2510,0x2122},//SEQ_DATA_PORT
1716*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1717*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1718*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1719*4882a593Smuzhiyun 	{0x2510,0x26FF},//SEQ_DATA_PORT
1720*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1721*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1722*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1723*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1724*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1725*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1726*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1727*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1728*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1729*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1730*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1731*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1732*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1733*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1734*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
1735*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1736*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1737*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1738*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1739*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1740*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1741*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1742*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1743*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1744*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1745*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1746*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1747*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1748*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1749*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1750*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1751*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1752*4882a593Smuzhiyun 	{0x2510,0x0F8C},//SEQ_DATA_PORT
1753*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1754*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1755*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1756*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1757*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1758*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1759*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1760*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1761*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1762*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1763*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1764*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1765*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1766*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1767*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1768*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1769*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1770*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1771*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1772*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1773*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1774*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1775*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1776*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1777*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
1778*4882a593Smuzhiyun 	{0x2510,0xA0E1},//SEQ_DATA_PORT
1779*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1780*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1781*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
1782*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
1783*4882a593Smuzhiyun 	{0x2510,0xA681},//SEQ_DATA_PORT
1784*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1785*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1786*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1787*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1788*4882a593Smuzhiyun 	{0x2510,0x20FE},//SEQ_DATA_PORT
1789*4882a593Smuzhiyun 	{0x2510,0x9070},//SEQ_DATA_PORT
1790*4882a593Smuzhiyun 	{0x2510,0x891D},//SEQ_DATA_PORT
1791*4882a593Smuzhiyun 	{0x2510,0x867F},//SEQ_DATA_PORT
1792*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1793*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
1794*4882a593Smuzhiyun 	{0x2510,0x893F},//SEQ_DATA_PORT
1795*4882a593Smuzhiyun 	{0x2510,0x0F92},//SEQ_DATA_PORT
1796*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1797*4882a593Smuzhiyun 	{0x2510,0x0F8F},//SEQ_DATA_PORT
1798*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1799*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1800*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1801*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1802*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1803*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1804*4882a593Smuzhiyun 	{0x2510,0x9770},//SEQ_DATA_PORT
1805*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
1806*4882a593Smuzhiyun 	{0x2510,0x8054},//SEQ_DATA_PORT
1807*4882a593Smuzhiyun 	{0x2510,0x896C},//SEQ_DATA_PORT
1808*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1809*4882a593Smuzhiyun 	{0x2510,0x9030},//SEQ_DATA_PORT
1810*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1811*4882a593Smuzhiyun 	{0x2510,0x8040},//SEQ_DATA_PORT
1812*4882a593Smuzhiyun 	{0x2510,0x8948},//SEQ_DATA_PORT
1813*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1814*4882a593Smuzhiyun 	{0x2510,0x1597},//SEQ_DATA_PORT
1815*4882a593Smuzhiyun 	{0x2510,0x8808},//SEQ_DATA_PORT
1816*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1817*4882a593Smuzhiyun 	{0x2510,0x1F96},//SEQ_DATA_PORT
1818*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1819*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1820*4882a593Smuzhiyun 	{0x2510,0xA0C0},//SEQ_DATA_PORT
1821*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
1822*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
1823*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
1824*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
1825*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
1826*4882a593Smuzhiyun 	{0x2510,0x1FAA},//SEQ_DATA_PORT
1827*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1828*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1829*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1830*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1831*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
1832*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1833*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1834*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1835*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
1836*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1837*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1838*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1839*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1840*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
1841*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
1842*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1843*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1844*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
1845*4882a593Smuzhiyun 	{0x2510,0x2702},//SEQ_DATA_PORT
1846*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
1847*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1848*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
1849*4882a593Smuzhiyun 	{0x2510,0x2703},//SEQ_DATA_PORT
1850*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
1851*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
1852*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
1853*4882a593Smuzhiyun 	{0x2510,0x2704},//SEQ_DATA_PORT
1854*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
1855*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1856*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1857*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1858*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
1859*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
1860*4882a593Smuzhiyun 	{0x2510,0x000F},//SEQ_DATA_PORT
1861*4882a593Smuzhiyun 	{0x2510,0x109C},//SEQ_DATA_PORT
1862*4882a593Smuzhiyun 	{0x2510,0x8855},//SEQ_DATA_PORT
1863*4882a593Smuzhiyun 	{0x2510,0x3101},//SEQ_DATA_PORT
1864*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1865*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1866*4882a593Smuzhiyun 	{0x2510,0x3102},//SEQ_DATA_PORT
1867*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1868*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1869*4882a593Smuzhiyun 	{0x2510,0x3181},//SEQ_DATA_PORT
1870*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1871*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1872*4882a593Smuzhiyun 	{0x2510,0x3188},//SEQ_DATA_PORT
1873*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1874*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1875*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
1876*4882a593Smuzhiyun 	{0x2510,0x3104},//SEQ_DATA_PORT
1877*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1878*4882a593Smuzhiyun 	{0x2510,0xB0E4},//SEQ_DATA_PORT
1879*4882a593Smuzhiyun 	{0x2510,0xAD92},//SEQ_DATA_PORT
1880*4882a593Smuzhiyun 	{0x2510,0xBC0C},//SEQ_DATA_PORT
1881*4882a593Smuzhiyun 	{0x2510,0x1028},//SEQ_DATA_PORT
1882*4882a593Smuzhiyun 	{0x2510,0x0022},//SEQ_DATA_PORT
1883*4882a593Smuzhiyun 	{0x2510,0xC020},//SEQ_DATA_PORT
1884*4882a593Smuzhiyun 	{0x2510,0x003E},//SEQ_DATA_PORT
1885*4882a593Smuzhiyun 	{0x2510,0x0045},//SEQ_DATA_PORT
1886*4882a593Smuzhiyun 	{0x2510,0x00B0},//SEQ_DATA_PORT
1887*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
1888*4882a593Smuzhiyun 	{0x2510,0x30C1},//SEQ_DATA_PORT
1889*4882a593Smuzhiyun 	{0x2510,0x8015},//SEQ_DATA_PORT
1890*4882a593Smuzhiyun 	{0x2510,0xA038},//SEQ_DATA_PORT
1891*4882a593Smuzhiyun 	{0x2510,0x100F},//SEQ_DATA_PORT
1892*4882a593Smuzhiyun 	{0x2510,0x0507},//SEQ_DATA_PORT
1893*4882a593Smuzhiyun 	{0x2510,0xA220},//SEQ_DATA_PORT
1894*4882a593Smuzhiyun 	{0x2510,0x0010},//SEQ_DATA_PORT
1895*4882a593Smuzhiyun 	{0x2510,0x10C2},//SEQ_DATA_PORT
1896*4882a593Smuzhiyun 	{0x2510,0xB760},//SEQ_DATA_PORT
1897*4882a593Smuzhiyun 	{0x2510,0x0033},//SEQ_DATA_PORT
1898*4882a593Smuzhiyun 	{0x2510,0x1082},//SEQ_DATA_PORT
1899*4882a593Smuzhiyun 	{0x2510,0x100B},//SEQ_DATA_PORT
1900*4882a593Smuzhiyun 	{0x2510,0x1029},//SEQ_DATA_PORT
1901*4882a593Smuzhiyun 	{0x2510,0xA85A},//SEQ_DATA_PORT
1902*4882a593Smuzhiyun 	{0x2510,0x998D},//SEQ_DATA_PORT
1903*4882a593Smuzhiyun 	{0x2510,0xC810},//SEQ_DATA_PORT
1904*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
1905*4882a593Smuzhiyun 	{0x2510,0x0ECE},//SEQ_DATA_PORT
1906*4882a593Smuzhiyun 	{0x2510,0x123B},//SEQ_DATA_PORT
1907*4882a593Smuzhiyun 	{0x2510,0xC000},//SEQ_DATA_PORT
1908*4882a593Smuzhiyun 	{0x2510,0x032F},//SEQ_DATA_PORT
1909*4882a593Smuzhiyun 	{0x2510,0x11D5},//SEQ_DATA_PORT
1910*4882a593Smuzhiyun 	{0x2510,0x162F},//SEQ_DATA_PORT
1911*4882a593Smuzhiyun 	{0x2510,0x9000},//SEQ_DATA_PORT
1912*4882a593Smuzhiyun 	{0x2510,0x2034},//SEQ_DATA_PORT
1913*4882a593Smuzhiyun 	{0x2510,0x0015},//SEQ_DATA_PORT
1914*4882a593Smuzhiyun 	{0x2510,0x04CB},//SEQ_DATA_PORT
1915*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
1916*4882a593Smuzhiyun 	{0x2510,0x1031},//SEQ_DATA_PORT
1917*4882a593Smuzhiyun 	{0x2510,0x002D},//SEQ_DATA_PORT
1918*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
1919*4882a593Smuzhiyun 	{0x2510,0x80B9},//SEQ_DATA_PORT
1920*4882a593Smuzhiyun 	{0x2510,0xA101},//SEQ_DATA_PORT
1921*4882a593Smuzhiyun 	{0x2510,0x001C},//SEQ_DATA_PORT
1922*4882a593Smuzhiyun 	{0x2510,0x008E},//SEQ_DATA_PORT
1923*4882a593Smuzhiyun 	{0x2510,0x124B},//SEQ_DATA_PORT
1924*4882a593Smuzhiyun 	{0x2510,0x01B5},//SEQ_DATA_PORT
1925*4882a593Smuzhiyun 	{0x2510,0x0B92},//SEQ_DATA_PORT
1926*4882a593Smuzhiyun 	{0x2510,0xA400},//SEQ_DATA_PORT
1927*4882a593Smuzhiyun 	{0x2510,0x8091},//SEQ_DATA_PORT
1928*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
1929*4882a593Smuzhiyun 	{0x2510,0x3002},//SEQ_DATA_PORT
1930*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
1931*4882a593Smuzhiyun 	{0x2510,0x1012},//SEQ_DATA_PORT
1932*4882a593Smuzhiyun 	{0x2510,0x100E},//SEQ_DATA_PORT
1933*4882a593Smuzhiyun 	{0x2510,0x10A8},//SEQ_DATA_PORT
1934*4882a593Smuzhiyun 	{0x2510,0x00A1},//SEQ_DATA_PORT
1935*4882a593Smuzhiyun 	{0x2510,0x132D},//SEQ_DATA_PORT
1936*4882a593Smuzhiyun 	{0x2510,0x09AF},//SEQ_DATA_PORT
1937*4882a593Smuzhiyun 	{0x2510,0x0159},//SEQ_DATA_PORT
1938*4882a593Smuzhiyun 	{0x2510,0x121D},//SEQ_DATA_PORT
1939*4882a593Smuzhiyun 	{0x2510,0x1259},//SEQ_DATA_PORT
1940*4882a593Smuzhiyun 	{0x2510,0x11AF},//SEQ_DATA_PORT
1941*4882a593Smuzhiyun 	{0x2510,0x18B5},//SEQ_DATA_PORT
1942*4882a593Smuzhiyun 	{0x2510,0x0395},//SEQ_DATA_PORT
1943*4882a593Smuzhiyun 	{0x2510,0x054B},//SEQ_DATA_PORT
1944*4882a593Smuzhiyun 	{0x2510,0x1021},//SEQ_DATA_PORT
1945*4882a593Smuzhiyun 	{0x2510,0x0020},//SEQ_DATA_PORT
1946*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
1947*4882a593Smuzhiyun 	{0x2510,0x1030},//SEQ_DATA_PORT
1948*4882a593Smuzhiyun 	{0x2510,0x00CF},//SEQ_DATA_PORT
1949*4882a593Smuzhiyun 	{0x2510,0xB146},//SEQ_DATA_PORT
1950*4882a593Smuzhiyun 	{0x2510,0xC290},//SEQ_DATA_PORT
1951*4882a593Smuzhiyun 	{0x2510,0x103C},//SEQ_DATA_PORT
1952*4882a593Smuzhiyun 	{0x2510,0xA882},//SEQ_DATA_PORT
1953*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
1954*4882a593Smuzhiyun 	{0x2510,0x00A9},//SEQ_DATA_PORT
1955*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
1956*4882a593Smuzhiyun 	{0x2510,0xB700},//SEQ_DATA_PORT
1957*4882a593Smuzhiyun 	{0x2510,0x0001},//SEQ_DATA_PORT
1958*4882a593Smuzhiyun 	{0x2510,0x02A2},//SEQ_DATA_PORT
1959*4882a593Smuzhiyun 	{0x2510,0x000A},//SEQ_DATA_PORT
1960*4882a593Smuzhiyun 	{0x2510,0x98BB},//SEQ_DATA_PORT
1961*4882a593Smuzhiyun 	{0x2510,0x203F},//SEQ_DATA_PORT
1962*4882a593Smuzhiyun 	{0x2510,0x0036},//SEQ_DATA_PORT
1963*4882a593Smuzhiyun 	{0x2510,0x1001},//SEQ_DATA_PORT
1964*4882a593Smuzhiyun 	{0x2510,0x99BE},//SEQ_DATA_PORT
1965*4882a593Smuzhiyun 	{0x2510,0x0139},//SEQ_DATA_PORT
1966*4882a593Smuzhiyun 	{0x2510,0x100A},//SEQ_DATA_PORT
1967*4882a593Smuzhiyun 	{0x2510,0x0040},//SEQ_DATA_PORT
1968*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
1969*4882a593Smuzhiyun 	{0x2510,0x124C},//SEQ_DATA_PORT
1970*4882a593Smuzhiyun 	{0x2510,0x109F},//SEQ_DATA_PORT
1971*4882a593Smuzhiyun 	{0x2510,0x15A3},//SEQ_DATA_PORT
1972*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
1973*4882a593Smuzhiyun 	{0x2510,0x3081},//SEQ_DATA_PORT
1974*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
1975*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
1976*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1977*4882a593Smuzhiyun 	{0x2510,0x112A},//SEQ_DATA_PORT
1978*4882a593Smuzhiyun 	{0x2510,0x101D},//SEQ_DATA_PORT
1979*4882a593Smuzhiyun 	{0x2510,0x202B},//SEQ_DATA_PORT
1980*4882a593Smuzhiyun 	{0x2510,0x02B8},//SEQ_DATA_PORT
1981*4882a593Smuzhiyun 	{0x2510,0x10B8},//SEQ_DATA_PORT
1982*4882a593Smuzhiyun 	{0x2510,0x1136},//SEQ_DATA_PORT
1983*4882a593Smuzhiyun 	{0x2510,0x996B},//SEQ_DATA_PORT
1984*4882a593Smuzhiyun 	{0x2510,0x004C},//SEQ_DATA_PORT
1985*4882a593Smuzhiyun 	{0x2510,0x1039},//SEQ_DATA_PORT
1986*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
1987*4882a593Smuzhiyun 	{0x2510,0x00B5},//SEQ_DATA_PORT
1988*4882a593Smuzhiyun 	{0x2510,0x03C4},//SEQ_DATA_PORT
1989*4882a593Smuzhiyun 	{0x2510,0x1144},//SEQ_DATA_PORT
1990*4882a593Smuzhiyun 	{0x2510,0x1245},//SEQ_DATA_PORT
1991*4882a593Smuzhiyun 	{0x2510,0x9A7B},//SEQ_DATA_PORT
1992*4882a593Smuzhiyun 	{0x2510,0x002B},//SEQ_DATA_PORT
1993*4882a593Smuzhiyun 	{0x2510,0x30D0},//SEQ_DATA_PORT
1994*4882a593Smuzhiyun 	{0x2510,0x3141},//SEQ_DATA_PORT
1995*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1996*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
1997*4882a593Smuzhiyun 	{0x2510,0x3142},//SEQ_DATA_PORT
1998*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
1999*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2000*4882a593Smuzhiyun 	{0x2510,0x3110},//SEQ_DATA_PORT
2001*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2002*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2003*4882a593Smuzhiyun 	{0x2510,0x3120},//SEQ_DATA_PORT
2004*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2005*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2006*4882a593Smuzhiyun 	{0x2510,0x3144},//SEQ_DATA_PORT
2007*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2008*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2009*4882a593Smuzhiyun 	{0x2510,0x3148},//SEQ_DATA_PORT
2010*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2011*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2012*4882a593Smuzhiyun 	{0x2510,0x3182},//SEQ_DATA_PORT
2013*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2014*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2015*4882a593Smuzhiyun 	{0x2510,0x3184},//SEQ_DATA_PORT
2016*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2017*4882a593Smuzhiyun 	{0x2510,0x3190},//SEQ_DATA_PORT
2018*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2019*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2020*4882a593Smuzhiyun 	{0x2510,0x31A0},//SEQ_DATA_PORT
2021*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
2022*4882a593Smuzhiyun 	{0x2510,0x2201},//SEQ_DATA_PORT
2023*4882a593Smuzhiyun 	{0x2510,0x807D},//SEQ_DATA_PORT
2024*4882a593Smuzhiyun 	{0x2510,0x2206},//SEQ_DATA_PORT
2025*4882a593Smuzhiyun 	{0x2510,0x8815},//SEQ_DATA_PORT
2026*4882a593Smuzhiyun 	{0x2510,0x8877},//SEQ_DATA_PORT
2027*4882a593Smuzhiyun 	{0x2510,0x0092},//SEQ_DATA_PORT
2028*4882a593Smuzhiyun 	{0x2510,0x220E},//SEQ_DATA_PORT
2029*4882a593Smuzhiyun 	{0x2510,0x2211},//SEQ_DATA_PORT
2030*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
2031*4882a593Smuzhiyun 	{0x2510,0x3001},//SEQ_DATA_PORT
2032*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2033*4882a593Smuzhiyun 	{0x2510,0x8A61},//SEQ_DATA_PORT
2034*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
2035*4882a593Smuzhiyun 	{0x2510,0x1092},//SEQ_DATA_PORT
2036*4882a593Smuzhiyun 	{0x2510,0x181F},//SEQ_DATA_PORT
2037*4882a593Smuzhiyun 	{0x2510,0x0B1F},//SEQ_DATA_PORT
2038*4882a593Smuzhiyun 	{0x2510,0x101F},//SEQ_DATA_PORT
2039*4882a593Smuzhiyun 	{0x2510,0x00B6},//SEQ_DATA_PORT
2040*4882a593Smuzhiyun 	{0x2510,0x0023},//SEQ_DATA_PORT
2041*4882a593Smuzhiyun 	{0x2510,0x00B9},//SEQ_DATA_PORT
2042*4882a593Smuzhiyun 	{0x2510,0x104C},//SEQ_DATA_PORT
2043*4882a593Smuzhiyun 	{0x2510,0x996E},//SEQ_DATA_PORT
2044*4882a593Smuzhiyun 	{0x2510,0x0140},//SEQ_DATA_PORT
2045*4882a593Smuzhiyun 	{0x2510,0x0257},//SEQ_DATA_PORT
2046*4882a593Smuzhiyun 	{0x2510,0x1035},//SEQ_DATA_PORT
2047*4882a593Smuzhiyun 	{0x2510,0x9F26},//SEQ_DATA_PORT
2048*4882a593Smuzhiyun 	{0x2510,0x1423},//SEQ_DATA_PORT
2049*4882a593Smuzhiyun 	{0x2510,0x0048},//SEQ_DATA_PORT
2050*4882a593Smuzhiyun 	{0x2510,0xC878},//SEQ_DATA_PORT
2051*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2052*4882a593Smuzhiyun 	{0x2510,0x1548},//SEQ_DATA_PORT
2053*4882a593Smuzhiyun 	{0x2510,0x0C49},//SEQ_DATA_PORT
2054*4882a593Smuzhiyun 	{0x2510,0x1149},//SEQ_DATA_PORT
2055*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
2056*4882a593Smuzhiyun 	{0x2510,0x1057},//SEQ_DATA_PORT
2057*4882a593Smuzhiyun 	{0x2510,0x3281},//SEQ_DATA_PORT
2058*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2059*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
2060*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
2061*4882a593Smuzhiyun 	{0x2510,0xA020},//SEQ_DATA_PORT
2062*4882a593Smuzhiyun 	{0x2510,0x000C},//SEQ_DATA_PORT
2063*4882a593Smuzhiyun 	{0x2510,0x9825},//SEQ_DATA_PORT
2064*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
2065*4882a593Smuzhiyun 	{0x2510,0x1054},//SEQ_DATA_PORT
2066*4882a593Smuzhiyun 	{0x2510,0xB06D},//SEQ_DATA_PORT
2067*4882a593Smuzhiyun 	{0x2510,0x0035},//SEQ_DATA_PORT
2068*4882a593Smuzhiyun 	{0x2510,0x004D},//SEQ_DATA_PORT
2069*4882a593Smuzhiyun 	{0x2510,0x9905},//SEQ_DATA_PORT
2070*4882a593Smuzhiyun 	{0x2510,0xB064},//SEQ_DATA_PORT
2071*4882a593Smuzhiyun 	{0x2510,0x99C5},//SEQ_DATA_PORT
2072*4882a593Smuzhiyun 	{0x2510,0x0047},//SEQ_DATA_PORT
2073*4882a593Smuzhiyun 	{0x2510,0xB920},//SEQ_DATA_PORT
2074*4882a593Smuzhiyun 	{0x2510,0x1447},//SEQ_DATA_PORT
2075*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2076*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2077*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2078*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2079*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2080*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2081*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2082*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2083*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2084*4882a593Smuzhiyun 	{0x31F8,0x0008},//MIPI_CONFIG_2
2085*4882a593Smuzhiyun 	{0x3C70,0x6828},//CALIB_ROWS
2086*4882a593Smuzhiyun 	{0x3092,0x0826},//ROW_NOISE_CONTROL
2087*4882a593Smuzhiyun 	{0x3428,0x0209},//SEQUENCER_CONTROL
2088*4882a593Smuzhiyun 	{0x3516,0xFF04},//DAC_LD_22_23
2089*4882a593Smuzhiyun 	{0x3526,0x6480},//DAC_LD_38_39
2090*4882a593Smuzhiyun 	{0x3504,0x8AAA},//DAC_LD_4_5
2091*4882a593Smuzhiyun 	{0x353C,0x220C},//DAC_LD_60_61
2092*4882a593Smuzhiyun 	{0x3536,0x4C6E},//DAC_LD_54_55
2093*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
2094*4882a593Smuzhiyun 	{0x3364,0x00EC},//DCG_TRIM
2095*4882a593Smuzhiyun 	{0x3512,0x8888},//DAC_LD_18_19
2096*4882a593Smuzhiyun 	{0x3514,0x888F},//DAC_LD_20_21
2097*4882a593Smuzhiyun 	{0x3520,0xFBF0},//DAC_LD_32_33
2098*4882a593Smuzhiyun 	{0x3524,0xB2A1},//DAC_LD_36_37
2099*4882a593Smuzhiyun 	{0x3528,0xCC84},//DAC_LD_40_41
2100*4882a593Smuzhiyun 	{0x3532,0x4C8E},//DAC_LD_50_51
2101*4882a593Smuzhiyun 	{0x3534,0x4E64},//DAC_LD_52_53
2102*4882a593Smuzhiyun 	{0x351E,0x5856},//DAC_LD_30_31
2103*4882a593Smuzhiyun 	{0x353E,0x98F2},//DAC_LD_62_63
2104*4882a593Smuzhiyun 	{0x352E,0x6A8A},//DAC_LD_46_47
2105*4882a593Smuzhiyun 	{0x3370,0x0211},//DBLC_CONTROL
2106*4882a593Smuzhiyun 	{0x3372,0x700F},//DBLC_FS0_CONTROL
2107*4882a593Smuzhiyun 	{0x3540,0x3597},//DAC_LD_64_65
2108*4882a593Smuzhiyun 	{0x58E2,0x0BE3},//COL_COUNT_VALUES1
2109*4882a593Smuzhiyun 	{0x58E4,0x18B4},//COL_COUNT_VALUES2
2110*4882a593Smuzhiyun 	{0x3522,0x7C97},//DAC_LD_34_35
2111*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
2112*4882a593Smuzhiyun 	{0x31D4,0x0042},//CLK_MEM_GATING_CTRL
2113*4882a593Smuzhiyun 	{0x352A,0x6F8F},//DAC_LD_42_43
2114*4882a593Smuzhiyun 	{0x3530,0x4A08},//DAC_LD_48_49
2115*4882a593Smuzhiyun 	{0x351A,0x5FFF},//DAC_LD_26_27
2116*4882a593Smuzhiyun 	{0x350E,0x39D9},//DAC_LD_14_15
2117*4882a593Smuzhiyun 	{0x3510,0x9988},//DAC_LD_16_17
2118*4882a593Smuzhiyun 	{0x3380,0x1FFF},//DBLC_OFFSET1
2119*4882a593Smuzhiyun 	{0x337A,0x1000},//DBLC_SCALE1
2120*4882a593Smuzhiyun 	{0x3092,0x0800},//ROW_NOISE_CONTROL
2121*4882a593Smuzhiyun 	{0x350A,0x0654},//DAC_LD_10_11
2122*4882a593Smuzhiyun 	{0x3364,0x00E0},//DCG_TRIM
2123*4882a593Smuzhiyun 	{0x591E,0x61AE},//ANALOG_GAIN_WR_DATA
2124*4882a593Smuzhiyun 	{0x591E,0x722C},//ANALOG_GAIN_WR_DATA
2125*4882a593Smuzhiyun 	{0x591E,0x82B8},//ANALOG_GAIN_WR_DATA
2126*4882a593Smuzhiyun 	{0x591E,0x92F6},//ANALOG_GAIN_WR_DATA
2127*4882a593Smuzhiyun 	{0x591E,0xA447},//ANALOG_GAIN_WR_DATA
2128*4882a593Smuzhiyun 	{0x591E,0xB66D},//ANALOG_GAIN_WR_DATA
2129*4882a593Smuzhiyun 	{0x591E,0xC6EA},//ANALOG_GAIN_WR_DATA
2130*4882a593Smuzhiyun 	{0x591E,0xDECD},//ANALOG_GAIN_WR_DATA
2131*4882a593Smuzhiyun 	{0x3532,0x4C8A},//DAC_LD_50_51
2132*4882a593Smuzhiyun 	{0x3534,0x4E60},//DAC_LD_52_53
2133*4882a593Smuzhiyun 	{0x353E,0x90F2},//DAC_LD_62_63
2134*4882a593Smuzhiyun 	{0x351A,0x4FFF},//DAC_LD_26_27
2135*4882a593Smuzhiyun 	{0x591C,0x00D7},//DGR_AMP_GAIN
2136*4882a593Smuzhiyun 	{0x3522,0x6097},//DAC_LD_34_35
2137*4882a593Smuzhiyun 	{0x5002,0x37C3},//T1_PIX_DEF_ID2
2138*4882a593Smuzhiyun 	{0x51CC,0x0149},//T1_NOISE_GAIN_THRESHOLD0
2139*4882a593Smuzhiyun 	{0x51D8,0x044D},//T1_NOISE_GAIN_THRESHOLD1
2140*4882a593Smuzhiyun 	{0x51CE,0x0700},//T1_NOISE_GAIN_THRESHOLD2
2141*4882a593Smuzhiyun 	{0x51D0,0x0001},//T1_NOISE_FLOOR0
2142*4882a593Smuzhiyun 	{0x51D2,0x0002},//T1_NOISE_FLOOR1
2143*4882a593Smuzhiyun 	{0x51D4,0x0003},//T1_NOISE_FLOOR2
2144*4882a593Smuzhiyun 	{0x51D6,0x0004},//T1_NOISE_FLOOR3
2145*4882a593Smuzhiyun 	{0x5202,0x37C3},//T2_PIX_DEF_ID2
2146*4882a593Smuzhiyun 	{0x51EA,0x0149},//T2_NOISE_GAIN_THRESHOLD0
2147*4882a593Smuzhiyun 	{0x51FC,0x044D},//T2_NOISE_GAIN_THRESHOLD1
2148*4882a593Smuzhiyun 	{0x51EC,0x0700},//T2_NOISE_GAIN_THRESHOLD2
2149*4882a593Smuzhiyun 	{0x51EE,0x0001},//T2_NOISE_FLOOR0
2150*4882a593Smuzhiyun 	{0x51F0,0x0002},//T2_NOISE_FLOOR1
2151*4882a593Smuzhiyun 	{0x51F2,0x0003},//T2_NOISE_FLOOR2
2152*4882a593Smuzhiyun 	{0x51F4,0x0004},//T2_NOISE_FLOOR3
2153*4882a593Smuzhiyun 	{0x5402,0x37C3},//T4_PIX_DEF_ID2
2154*4882a593Smuzhiyun 	{0x5560,0x0149},//T4_NOISE_GAIN_THRESHOLD0
2155*4882a593Smuzhiyun 	{0x556C,0x044D},//T4_NOISE_GAIN_THRESHOLD1
2156*4882a593Smuzhiyun 	{0x5562,0x0700},//T4_NOISE_GAIN_THRESHOLD2
2157*4882a593Smuzhiyun 	{0x5564,0x0001},//T4_NOISE_FLOOR0
2158*4882a593Smuzhiyun 	{0x5566,0x0002},//T4_NOISE_FLOOR1
2159*4882a593Smuzhiyun 	{0x5568,0x0003},//T4_NOISE_FLOOR2
2160*4882a593Smuzhiyun 	{0x556A,0x0004},//T4_NOISE_FLOOR3
2161*4882a593Smuzhiyun 	{0x31E0,0x0001},//PIX_DEF_ID
2162*4882a593Smuzhiyun 	{0x5000,0x0080},//T1_PIX_DEF_ID
2163*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
2164*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
2165*4882a593Smuzhiyun 	{0x5200,0x0080},//T2_PIX_DEF_ID
2166*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
2167*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
2168*4882a593Smuzhiyun 	{0x5400,0x0080},//T4_PIX_DEF_ID
2169*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
2170*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
2171*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
2172*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
2173*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
2174*4882a593Smuzhiyun 	{0x50A2,0x3F2A},//BMT0
2175*4882a593Smuzhiyun 	{0x50A4,0x875A},//BMT1
2176*4882a593Smuzhiyun 	{0x50A6,0x030F},//SINGLEK_FACTOR0
2177*4882a593Smuzhiyun 	{0x50A6,0x0F0F},//SINGLEK_FACTOR0
2178*4882a593Smuzhiyun 	{0x50A8,0x030F},//SINGLEK_FACTOR1
2179*4882a593Smuzhiyun 	{0x50A8,0x0F0F},//SINGLEK_FACTOR1
2180*4882a593Smuzhiyun 	{0x50AA,0x030F},//SINGLEK_FACTOR2
2181*4882a593Smuzhiyun 	{0x50AA,0x050F},//SINGLEK_FACTOR2
2182*4882a593Smuzhiyun 	{0x50AC,0x0301},//CROSS_FACTOR0
2183*4882a593Smuzhiyun 	{0x50AC,0x0101},//CROSS_FACTOR0
2184*4882a593Smuzhiyun 	{0x50AE,0x0301},//CROSS_FACTOR1
2185*4882a593Smuzhiyun 	{0x50AE,0x0101},//CROSS_FACTOR1
2186*4882a593Smuzhiyun 	{0x50B0,0x0301},//CROSS_FACTOR2
2187*4882a593Smuzhiyun 	{0x50B0,0x0101},//CROSS_FACTOR2
2188*4882a593Smuzhiyun 	{0x50B2,0x03FF},//SINGLE_MAX_FACTOR
2189*4882a593Smuzhiyun 	{0x50B4,0x030F},//COUPLE_FACTOR0
2190*4882a593Smuzhiyun 	{0x50B4,0x0F0F},//COUPLE_FACTOR0
2191*4882a593Smuzhiyun 	{0x50B6,0x030F},//COUPLE_FACTOR1
2192*4882a593Smuzhiyun 	{0x50B6,0x0F0F},//COUPLE_FACTOR1
2193*4882a593Smuzhiyun 	{0x50B8,0x030F},//COUPLE_FACTOR2
2194*4882a593Smuzhiyun 	{0x50B8,0x050F},//COUPLE_FACTOR2
2195*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
2196*4882a593Smuzhiyun 	{0x3D34,0x9C40},//T2_STR_DEC_TH
2197*4882a593Smuzhiyun 	{0x3D36,0xFFFF},//T2_END_DEC_TH
2198*4882a593Smuzhiyun 	{0x3D02,0x5033},//MEC_CTRL2
2199*4882a593Smuzhiyun 	{0x3086,0x1A28},//PARK_ROW_ADDR
2200*4882a593Smuzhiyun 	{0x33E4,0x0040},//VERT_SHADING_CONTROL
2201*4882a593Smuzhiyun 	{0x3C70,0x6222},//CALIB_ROWS
2202*4882a593Smuzhiyun 	{0x3110,0x0011},//HDR_CONTROL0
2203*4882a593Smuzhiyun 	{0x30B0,0x0820},//DIGITAL_TEST
2204*4882a593Smuzhiyun 	{0x3280,0x0ED8},//T1_BARRIER_C0
2205*4882a593Smuzhiyun 	{0x3282,0x0ED8},//T1_BARRIER_C1
2206*4882a593Smuzhiyun 	{0x3284,0x0ED8},//T1_BARRIER_C2
2207*4882a593Smuzhiyun 	{0x3286,0x0ED8},//T1_BARRIER_C3
2208*4882a593Smuzhiyun 	{0x3288,0x0ED8},//T2_BARRIER_C0
2209*4882a593Smuzhiyun 	{0x328A,0x0ED8},//T2_BARRIER_C1
2210*4882a593Smuzhiyun 	{0x328C,0x0ED8},//T2_BARRIER_C2
2211*4882a593Smuzhiyun 	{0x328E,0x0ED8},//T2_BARRIER_C3
2212*4882a593Smuzhiyun 	{0x3290,0x0ED8},//T3_BARRIER_C0
2213*4882a593Smuzhiyun 	{0x3292,0x0ED8},//T3_BARRIER_C1
2214*4882a593Smuzhiyun 	{0x3294,0x0ED8},//T3_BARRIER_C2
2215*4882a593Smuzhiyun 	{0x3296,0x0ED8},//T3_BARRIER_C3
2216*4882a593Smuzhiyun 	{0x3100,0xC001},//DLO_CONTROL0
2217*4882a593Smuzhiyun 	{0x3102,0xBED8},//DLO_CONTROL1
2218*4882a593Smuzhiyun 	{0x3104,0xBED8},//DLO_CONTROL2
2219*4882a593Smuzhiyun 	{0x3106,0xBED8},//DLO_CONTROL3
2220*4882a593Smuzhiyun 	{0x3108,0x07D0},//DLO_CONTROL4
2221*4882a593Smuzhiyun 	{0x3116,0x2001},//HDR_CONTROL3
2222*4882a593Smuzhiyun 	{0x3124,0x006D},//HDR_MD_CONTROL0
2223*4882a593Smuzhiyun 	{0x3126,0x003C},//HDR_MD_CONTROL1
2224*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
2225*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
2226*4882a593Smuzhiyun 	{0x3082,0x0014},//OPERATION_MODE_CTRL
2227*4882a593Smuzhiyun 	{0x30BA,0x0135},//DIGITAL_CTRL
2228*4882a593Smuzhiyun 	{0x3238,0x0044},//EXPOSURE_RATIO
2229*4882a593Smuzhiyun 	{0x3012,0x0900},//COARSE_INTEGRATION_TIME_
2230*4882a593Smuzhiyun 	{0x3212,0x0090},//COARSE_INTEGRATION_TIME2
2231*4882a593Smuzhiyun 	{0x300C,0x0CE2},//LINE_LENGTH_PCK_
2232*4882a593Smuzhiyun 	{0x300A,0x09B8},//FRAME_LENGTH_LINES_
2233*4882a593Smuzhiyun 	{0x5914,0x4012},//SENSOR_GAIN_TABLE_SEL
2234*4882a593Smuzhiyun 	{REG_DELAY,100},
2235*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
2236*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
2237*4882a593Smuzhiyun 	{0x5910,0x7091},//SENSOR_GAIN_REG1
2238*4882a593Smuzhiyun 	{0x5910,0x689C},//SENSOR_GAIN_REG1
2239*4882a593Smuzhiyun 	{0x5910,0x8885},//SENSOR_GAIN_REG1
2240*4882a593Smuzhiyun 	{0x5910,0x98AD},//SENSOR_GAIN_REG1
2241*4882a593Smuzhiyun 	{0x5910,0xA8A9},//SENSOR_GAIN_REG1
2242*4882a593Smuzhiyun 	{0x5910,0xC894},//SENSOR_GAIN_REG1
2243*4882a593Smuzhiyun 	{0x5910,0xC8D1},//SENSOR_GAIN_REG1
2244*4882a593Smuzhiyun 	{0x5910,0xD88A},//SENSOR_GAIN_REG1
2245*4882a593Smuzhiyun 	{0x5910,0xD8C3},//SENSOR_GAIN_REG1
2246*4882a593Smuzhiyun 	{0x5910,0xD915},//SENSOR_GAIN_REG1
2247*4882a593Smuzhiyun 	{0x5910,0xD988},//SENSOR_GAIN_REG1
2248*4882a593Smuzhiyun 	{0x5910,0xDA2A},//SENSOR_GAIN_REG1
2249*4882a593Smuzhiyun 	{0x5910,0xDB0E},//SENSOR_GAIN_REG1
2250*4882a593Smuzhiyun 	{0x5910,0xDC53},//SENSOR_GAIN_REG1
2251*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
2252*4882a593Smuzhiyun 	{0x5910,0xC919},//SENSOR_GAIN_REG1
2253*4882a593Smuzhiyun 	{0x5910,0xCA00},//SENSOR_GAIN_REG1
2254*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
2255*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
2256*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
2257*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
2258*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
2259*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
2260*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
2261*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
2262*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2263*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2264*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2265*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2266*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2267*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2268*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
2269*4882a593Smuzhiyun 	{0x5910,0x0002},//SENSOR_GAIN_REG1
2270*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
2271*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
2272*4882a593Smuzhiyun 	{0x5910,0x5A8B},//SENSOR_GAIN_REG1
2273*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
2274*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2275*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
2276*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2277*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2278*4882a593Smuzhiyun 	{0x5910,0x0005},//SENSOR_GAIN_REG1
2279*4882a593Smuzhiyun 	{0x5910,0x0006},//SENSOR_GAIN_REG1
2280*4882a593Smuzhiyun 	{0x5910,0x0007},//SENSOR_GAIN_REG1
2281*4882a593Smuzhiyun 	{0x5910,0x9A8B},//SENSOR_GAIN_REG1
2282*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
2283*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2284*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2285*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2286*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2287*4882a593Smuzhiyun 	{0x5910,0x0015},//SENSOR_GAIN_REG1
2288*4882a593Smuzhiyun 	{0x5910,0x0016},//SENSOR_GAIN_REG1
2289*4882a593Smuzhiyun 	{0x5910,0x0017},//SENSOR_GAIN_REG1
2290*4882a593Smuzhiyun 	{0x5910,0xDA8B},//SENSOR_GAIN_REG1
2291*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
2292*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2293*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2294*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2295*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
2296*4882a593Smuzhiyun 	{0x5910,0x0025},//SENSOR_GAIN_REG1
2297*4882a593Smuzhiyun 	{0x5910,0x0026},//SENSOR_GAIN_REG1
2298*4882a593Smuzhiyun 	{0x5910,0x0027},//SENSOR_GAIN_REG1
2299*4882a593Smuzhiyun 	{0x5910,0x59B9},//SENSOR_GAIN_REG1
2300*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
2301*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2302*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
2303*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2304*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2305*4882a593Smuzhiyun 	{0x5910,0x0035},//SENSOR_GAIN_REG1
2306*4882a593Smuzhiyun 	{0x5910,0x0036},//SENSOR_GAIN_REG1
2307*4882a593Smuzhiyun 	{0x5910,0x0037},//SENSOR_GAIN_REG1
2308*4882a593Smuzhiyun 	{0x5910,0x99B9},//SENSOR_GAIN_REG1
2309*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
2310*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2311*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
2312*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2313*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2314*4882a593Smuzhiyun 	{0x5910,0x0045},//SENSOR_GAIN_REG1
2315*4882a593Smuzhiyun 	{0x5910,0x0046},//SENSOR_GAIN_REG1
2316*4882a593Smuzhiyun 	{0x5910,0x0047},//SENSOR_GAIN_REG1
2317*4882a593Smuzhiyun 	{0x5910,0xD9B9},//SENSOR_GAIN_REG1
2318*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
2319*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2320*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
2321*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2322*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
2323*4882a593Smuzhiyun 	{0x5910,0x0055},//SENSOR_GAIN_REG1
2324*4882a593Smuzhiyun 	{0x5910,0x0056},//SENSOR_GAIN_REG1
2325*4882a593Smuzhiyun 	{0x5910,0x0057},//SENSOR_GAIN_REG1
2326*4882a593Smuzhiyun 	{0x5910,0x9A85},//SENSOR_GAIN_REG1
2327*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
2328*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
2329*4882a593Smuzhiyun 	{0x5910,0x0684},//SENSOR_GAIN_REG1
2330*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
2331*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
2332*4882a593Smuzhiyun 	{0x5910,0x0065},//SENSOR_GAIN_REG1
2333*4882a593Smuzhiyun 	{0x5910,0x0066},//SENSOR_GAIN_REG1
2334*4882a593Smuzhiyun 	{0x5910,0x0067},//SENSOR_GAIN_REG1
2335*4882a593Smuzhiyun 	{0x5910,0x59BD},//SENSOR_GAIN_REG1
2336*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
2337*4882a593Smuzhiyun 	{0x5910,0x0C00},//SENSOR_GAIN_REG1
2338*4882a593Smuzhiyun 	{0x5910,0x0F00},//SENSOR_GAIN_REG1
2339*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
2340*4882a593Smuzhiyun 	{0x5910,0x10F0},//SENSOR_GAIN_REG1
2341*4882a593Smuzhiyun 	{0x5910,0x0075},//SENSOR_GAIN_REG1
2342*4882a593Smuzhiyun 	{0x5910,0x0076},//SENSOR_GAIN_REG1
2343*4882a593Smuzhiyun 	{0x5910,0x0077},//SENSOR_GAIN_REG1
2344*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
2345*4882a593Smuzhiyun 	{0x5912,0x7091},//SENSOR_GAIN_REG2
2346*4882a593Smuzhiyun 	{0x5912,0x689C},//SENSOR_GAIN_REG2
2347*4882a593Smuzhiyun 	{0x5912,0x8885},//SENSOR_GAIN_REG2
2348*4882a593Smuzhiyun 	{0x5912,0x98AD},//SENSOR_GAIN_REG2
2349*4882a593Smuzhiyun 	{0x5912,0xA8A9},//SENSOR_GAIN_REG2
2350*4882a593Smuzhiyun 	{0x5912,0xC894},//SENSOR_GAIN_REG2
2351*4882a593Smuzhiyun 	{0x5912,0xC8D1},//SENSOR_GAIN_REG2
2352*4882a593Smuzhiyun 	{0x5912,0xC927},//SENSOR_GAIN_REG2
2353*4882a593Smuzhiyun 	{0x5912,0xC9A0},//SENSOR_GAIN_REG2
2354*4882a593Smuzhiyun 	{0x5912,0xCA4C},//SENSOR_GAIN_REG2
2355*4882a593Smuzhiyun 	{0x5912,0xCB3F},//SENSOR_GAIN_REG2
2356*4882a593Smuzhiyun 	{0x5912,0xCC97},//SENSOR_GAIN_REG2
2357*4882a593Smuzhiyun 	{0x5912,0xCE7C},//SENSOR_GAIN_REG2
2358*4882a593Smuzhiyun 	{0x5912,0xCFFF},//SENSOR_GAIN_REG2
2359*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
2360*4882a593Smuzhiyun 	{0x5912,0xC8F0},//SENSOR_GAIN_REG2
2361*4882a593Smuzhiyun 	{0x5912,0xCA00},//SENSOR_GAIN_REG2
2362*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
2363*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
2364*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
2365*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
2366*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
2367*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
2368*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
2369*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
2370*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2371*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2372*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2373*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2374*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2375*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2376*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
2377*4882a593Smuzhiyun 	{0x5912,0x0002},//SENSOR_GAIN_REG2
2378*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
2379*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
2380*4882a593Smuzhiyun 	{0x5912,0x5A8B},//SENSOR_GAIN_REG2
2381*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
2382*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2383*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
2384*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2385*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2386*4882a593Smuzhiyun 	{0x5912,0x0005},//SENSOR_GAIN_REG2
2387*4882a593Smuzhiyun 	{0x5912,0x0006},//SENSOR_GAIN_REG2
2388*4882a593Smuzhiyun 	{0x5912,0x0007},//SENSOR_GAIN_REG2
2389*4882a593Smuzhiyun 	{0x5912,0x9A8B},//SENSOR_GAIN_REG2
2390*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
2391*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2392*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2393*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2394*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2395*4882a593Smuzhiyun 	{0x5912,0x0015},//SENSOR_GAIN_REG2
2396*4882a593Smuzhiyun 	{0x5912,0x0016},//SENSOR_GAIN_REG2
2397*4882a593Smuzhiyun 	{0x5912,0x0017},//SENSOR_GAIN_REG2
2398*4882a593Smuzhiyun 	{0x5912,0xDA8B},//SENSOR_GAIN_REG2
2399*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
2400*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2401*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2402*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2403*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
2404*4882a593Smuzhiyun 	{0x5912,0x0025},//SENSOR_GAIN_REG2
2405*4882a593Smuzhiyun 	{0x5912,0x0026},//SENSOR_GAIN_REG2
2406*4882a593Smuzhiyun 	{0x5912,0x0027},//SENSOR_GAIN_REG2
2407*4882a593Smuzhiyun 	{0x5912,0x59B9},//SENSOR_GAIN_REG2
2408*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
2409*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2410*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
2411*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2412*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2413*4882a593Smuzhiyun 	{0x5912,0x0035},//SENSOR_GAIN_REG2
2414*4882a593Smuzhiyun 	{0x5912,0x0036},//SENSOR_GAIN_REG2
2415*4882a593Smuzhiyun 	{0x5912,0x0037},//SENSOR_GAIN_REG2
2416*4882a593Smuzhiyun 	{0x5912,0x99B9},//SENSOR_GAIN_REG2
2417*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
2418*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2419*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
2420*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2421*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2422*4882a593Smuzhiyun 	{0x5912,0x0045},//SENSOR_GAIN_REG2
2423*4882a593Smuzhiyun 	{0x5912,0x0046},//SENSOR_GAIN_REG2
2424*4882a593Smuzhiyun 	{0x5912,0x0047},//SENSOR_GAIN_REG2
2425*4882a593Smuzhiyun 	{0x5912,0xD9B9},//SENSOR_GAIN_REG2
2426*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
2427*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2428*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
2429*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2430*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
2431*4882a593Smuzhiyun 	{0x5912,0x0055},//SENSOR_GAIN_REG2
2432*4882a593Smuzhiyun 	{0x5912,0x0056},//SENSOR_GAIN_REG2
2433*4882a593Smuzhiyun 	{0x5912,0x0057},//SENSOR_GAIN_REG2
2434*4882a593Smuzhiyun 	{0x5912,0x9A85},//SENSOR_GAIN_REG2
2435*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
2436*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
2437*4882a593Smuzhiyun 	{0x5912,0x0684},//SENSOR_GAIN_REG2
2438*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
2439*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
2440*4882a593Smuzhiyun 	{0x5912,0x0065},//SENSOR_GAIN_REG2
2441*4882a593Smuzhiyun 	{0x5912,0x0066},//SENSOR_GAIN_REG2
2442*4882a593Smuzhiyun 	{0x5912,0x0067},//SENSOR_GAIN_REG2
2443*4882a593Smuzhiyun 	{0x5912,0x59BD},//SENSOR_GAIN_REG2
2444*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
2445*4882a593Smuzhiyun 	{0x5912,0x0C00},//SENSOR_GAIN_REG2
2446*4882a593Smuzhiyun 	{0x5912,0x0F00},//SENSOR_GAIN_REG2
2447*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
2448*4882a593Smuzhiyun 	{0x5912,0x10F0},//SENSOR_GAIN_REG2
2449*4882a593Smuzhiyun 	{0x5912,0x0075},//SENSOR_GAIN_REG2
2450*4882a593Smuzhiyun 	{0x5912,0x0076},//SENSOR_GAIN_REG2
2451*4882a593Smuzhiyun 	{0x5912,0x0077},//SENSOR_GAIN_REG2
2452*4882a593Smuzhiyun 	{0x5914,0x4006},//SENSOR_GAIN_TABLE_SEL
2453*4882a593Smuzhiyun 	{0x5900,0x0020},//SENSOR_GAIN
2454*4882a593Smuzhiyun 	{0x5902,0x0000},//SENSOR_GAIN_T2
2455*4882a593Smuzhiyun 	{0x3110,0x0001},//HDR_CONTROL0
2456*4882a593Smuzhiyun 
2457*4882a593Smuzhiyun 	{REG_NULL, 0x00},
2458*4882a593Smuzhiyun };
2459*4882a593Smuzhiyun static const struct regval ar0822_hdr12bit_3840x2160_30fps_regs[] = {
2460*4882a593Smuzhiyun 	{REG_DELAY, 2000},
2461*4882a593Smuzhiyun 	{0x3030,0x0092},//PLL_MULTIPLIER
2462*4882a593Smuzhiyun 	{0x302E,0x0002},//PRE_PLL_CLK_DIV
2463*4882a593Smuzhiyun 	{0x302C,0x0002},//VT_SYS_CLK_DIV
2464*4882a593Smuzhiyun 	{0x302A,0x0006},//VT_PIX_CLK_DIV
2465*4882a593Smuzhiyun 	{0x3038,0x0002},//OP_SYS_CLK_DIV
2466*4882a593Smuzhiyun 	{0x3036,0x0006},//OP_WORD_CLK_DIV
2467*4882a593Smuzhiyun 	{0x31B0,0x00BF},//FRAME_PREAMBLE
2468*4882a593Smuzhiyun 	{0x31B2,0x007D},//LINE_PREAMBLE
2469*4882a593Smuzhiyun 	{0x31B4,0x834E},//MIPI_TIMING_0
2470*4882a593Smuzhiyun 	{0x31B6,0x8491},//MIPI_TIMING_1
2471*4882a593Smuzhiyun 	{0x31B8,0xD0CF},//MIPI_TIMING_2
2472*4882a593Smuzhiyun 	{0x31BA,0x0515},//MIPI_TIMING_3
2473*4882a593Smuzhiyun 	{0x31BC,0x1911},//MIPI_TIMING_4
2474*4882a593Smuzhiyun 	{0x3342,0x122C},//MIPI_F1_PDT_EDT
2475*4882a593Smuzhiyun 	{0x2510,0x0720},//SEQ_DATA_PORT
2476*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2477*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2478*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2479*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2480*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2481*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2482*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2483*4882a593Smuzhiyun 	{0x2510,0x2122},//SEQ_DATA_PORT
2484*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2485*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2486*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2487*4882a593Smuzhiyun 	{0x2510,0x26FF},//SEQ_DATA_PORT
2488*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2489*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2490*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2491*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2492*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2493*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2494*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2495*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2496*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2497*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2498*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2499*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2500*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2501*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2502*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
2503*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2504*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2505*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2506*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2507*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2508*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2509*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2510*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2511*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2512*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2513*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2514*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2515*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2516*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2517*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2518*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2519*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2520*4882a593Smuzhiyun 	{0x2510,0x0F8C},//SEQ_DATA_PORT
2521*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2522*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2523*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2524*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2525*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2526*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2527*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2528*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2529*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2530*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2531*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2532*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2533*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2534*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2535*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2536*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2537*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2538*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2539*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2540*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2541*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2542*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2543*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2544*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
2545*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
2546*4882a593Smuzhiyun 	{0x2510,0xA0E1},//SEQ_DATA_PORT
2547*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2548*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2549*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
2550*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
2551*4882a593Smuzhiyun 	{0x2510,0xA681},//SEQ_DATA_PORT
2552*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2553*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2554*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2555*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2556*4882a593Smuzhiyun 	{0x2510,0x20FE},//SEQ_DATA_PORT
2557*4882a593Smuzhiyun 	{0x2510,0x9070},//SEQ_DATA_PORT
2558*4882a593Smuzhiyun 	{0x2510,0x891D},//SEQ_DATA_PORT
2559*4882a593Smuzhiyun 	{0x2510,0x867F},//SEQ_DATA_PORT
2560*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2561*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
2562*4882a593Smuzhiyun 	{0x2510,0x893F},//SEQ_DATA_PORT
2563*4882a593Smuzhiyun 	{0x2510,0x0F92},//SEQ_DATA_PORT
2564*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
2565*4882a593Smuzhiyun 	{0x2510,0x0F8F},//SEQ_DATA_PORT
2566*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2567*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2568*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2569*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2570*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2571*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
2572*4882a593Smuzhiyun 	{0x2510,0x9770},//SEQ_DATA_PORT
2573*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
2574*4882a593Smuzhiyun 	{0x2510,0x8054},//SEQ_DATA_PORT
2575*4882a593Smuzhiyun 	{0x2510,0x896C},//SEQ_DATA_PORT
2576*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2577*4882a593Smuzhiyun 	{0x2510,0x9030},//SEQ_DATA_PORT
2578*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2579*4882a593Smuzhiyun 	{0x2510,0x8040},//SEQ_DATA_PORT
2580*4882a593Smuzhiyun 	{0x2510,0x8948},//SEQ_DATA_PORT
2581*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2582*4882a593Smuzhiyun 	{0x2510,0x1597},//SEQ_DATA_PORT
2583*4882a593Smuzhiyun 	{0x2510,0x8808},//SEQ_DATA_PORT
2584*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2585*4882a593Smuzhiyun 	{0x2510,0x1F96},//SEQ_DATA_PORT
2586*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2587*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
2588*4882a593Smuzhiyun 	{0x2510,0xA0C0},//SEQ_DATA_PORT
2589*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2590*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
2591*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
2592*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
2593*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
2594*4882a593Smuzhiyun 	{0x2510,0x1FAA},//SEQ_DATA_PORT
2595*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2596*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2597*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2598*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2599*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
2600*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2601*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2602*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2603*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
2604*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2605*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2606*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2607*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
2608*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
2609*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
2610*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2611*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
2612*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
2613*4882a593Smuzhiyun 	{0x2510,0x2702},//SEQ_DATA_PORT
2614*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
2615*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
2616*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
2617*4882a593Smuzhiyun 	{0x2510,0x2703},//SEQ_DATA_PORT
2618*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
2619*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
2620*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
2621*4882a593Smuzhiyun 	{0x2510,0x2704},//SEQ_DATA_PORT
2622*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
2623*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2624*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2625*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2626*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2627*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
2628*4882a593Smuzhiyun 	{0x2510,0x010F},//SEQ_DATA_PORT
2629*4882a593Smuzhiyun 	{0x2510,0x8855},//SEQ_DATA_PORT
2630*4882a593Smuzhiyun 	{0x2510,0x3101},//SEQ_DATA_PORT
2631*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2632*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2633*4882a593Smuzhiyun 	{0x2510,0x3102},//SEQ_DATA_PORT
2634*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2635*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2636*4882a593Smuzhiyun 	{0x2510,0x3181},//SEQ_DATA_PORT
2637*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2638*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2639*4882a593Smuzhiyun 	{0x2510,0x3188},//SEQ_DATA_PORT
2640*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2641*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2642*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
2643*4882a593Smuzhiyun 	{0x2510,0x3104},//SEQ_DATA_PORT
2644*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2645*4882a593Smuzhiyun 	{0x2510,0xB0E4},//SEQ_DATA_PORT
2646*4882a593Smuzhiyun 	{0x2510,0xAD92},//SEQ_DATA_PORT
2647*4882a593Smuzhiyun 	{0x2510,0xBC0C},//SEQ_DATA_PORT
2648*4882a593Smuzhiyun 	{0x2510,0x1028},//SEQ_DATA_PORT
2649*4882a593Smuzhiyun 	{0x2510,0x0022},//SEQ_DATA_PORT
2650*4882a593Smuzhiyun 	{0x2510,0xC020},//SEQ_DATA_PORT
2651*4882a593Smuzhiyun 	{0x2510,0x003E},//SEQ_DATA_PORT
2652*4882a593Smuzhiyun 	{0x2510,0x0045},//SEQ_DATA_PORT
2653*4882a593Smuzhiyun 	{0x2510,0x00B0},//SEQ_DATA_PORT
2654*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
2655*4882a593Smuzhiyun 	{0x2510,0x30C1},//SEQ_DATA_PORT
2656*4882a593Smuzhiyun 	{0x2510,0x8015},//SEQ_DATA_PORT
2657*4882a593Smuzhiyun 	{0x2510,0xA038},//SEQ_DATA_PORT
2658*4882a593Smuzhiyun 	{0x2510,0x100F},//SEQ_DATA_PORT
2659*4882a593Smuzhiyun 	{0x2510,0x0507},//SEQ_DATA_PORT
2660*4882a593Smuzhiyun 	{0x2510,0xA220},//SEQ_DATA_PORT
2661*4882a593Smuzhiyun 	{0x2510,0x0010},//SEQ_DATA_PORT
2662*4882a593Smuzhiyun 	{0x2510,0x10C2},//SEQ_DATA_PORT
2663*4882a593Smuzhiyun 	{0x2510,0xB760},//SEQ_DATA_PORT
2664*4882a593Smuzhiyun 	{0x2510,0x0033},//SEQ_DATA_PORT
2665*4882a593Smuzhiyun 	{0x2510,0x1082},//SEQ_DATA_PORT
2666*4882a593Smuzhiyun 	{0x2510,0x100B},//SEQ_DATA_PORT
2667*4882a593Smuzhiyun 	{0x2510,0x1029},//SEQ_DATA_PORT
2668*4882a593Smuzhiyun 	{0x2510,0xA85A},//SEQ_DATA_PORT
2669*4882a593Smuzhiyun 	{0x2510,0x998D},//SEQ_DATA_PORT
2670*4882a593Smuzhiyun 	{0x2510,0xC810},//SEQ_DATA_PORT
2671*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
2672*4882a593Smuzhiyun 	{0x2510,0x0CCE},//SEQ_DATA_PORT
2673*4882a593Smuzhiyun 	{0x2510,0x113B},//SEQ_DATA_PORT
2674*4882a593Smuzhiyun 	{0x2510,0x1055},//SEQ_DATA_PORT
2675*4882a593Smuzhiyun 	{0x2510,0x101D},//SEQ_DATA_PORT
2676*4882a593Smuzhiyun 	{0x2510,0xC000},//SEQ_DATA_PORT
2677*4882a593Smuzhiyun 	{0x2510,0x052F},//SEQ_DATA_PORT
2678*4882a593Smuzhiyun 	{0x2510,0x162F},//SEQ_DATA_PORT
2679*4882a593Smuzhiyun 	{0x2510,0x9000},//SEQ_DATA_PORT
2680*4882a593Smuzhiyun 	{0x2510,0x2034},//SEQ_DATA_PORT
2681*4882a593Smuzhiyun 	{0x2510,0x0015},//SEQ_DATA_PORT
2682*4882a593Smuzhiyun 	{0x2510,0x04CB},//SEQ_DATA_PORT
2683*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
2684*4882a593Smuzhiyun 	{0x2510,0x1031},//SEQ_DATA_PORT
2685*4882a593Smuzhiyun 	{0x2510,0x002D},//SEQ_DATA_PORT
2686*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
2687*4882a593Smuzhiyun 	{0x2510,0x80B9},//SEQ_DATA_PORT
2688*4882a593Smuzhiyun 	{0x2510,0xA301},//SEQ_DATA_PORT
2689*4882a593Smuzhiyun 	{0x2510,0x008E},//SEQ_DATA_PORT
2690*4882a593Smuzhiyun 	{0x2510,0x124B},//SEQ_DATA_PORT
2691*4882a593Smuzhiyun 	{0x2510,0x01B5},//SEQ_DATA_PORT
2692*4882a593Smuzhiyun 	{0x2510,0x0B92},//SEQ_DATA_PORT
2693*4882a593Smuzhiyun 	{0x2510,0xA400},//SEQ_DATA_PORT
2694*4882a593Smuzhiyun 	{0x2510,0x8091},//SEQ_DATA_PORT
2695*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
2696*4882a593Smuzhiyun 	{0x2510,0x3002},//SEQ_DATA_PORT
2697*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
2698*4882a593Smuzhiyun 	{0x2510,0x1012},//SEQ_DATA_PORT
2699*4882a593Smuzhiyun 	{0x2510,0x100E},//SEQ_DATA_PORT
2700*4882a593Smuzhiyun 	{0x2510,0x10A8},//SEQ_DATA_PORT
2701*4882a593Smuzhiyun 	{0x2510,0x00A1},//SEQ_DATA_PORT
2702*4882a593Smuzhiyun 	{0x2510,0x132D},//SEQ_DATA_PORT
2703*4882a593Smuzhiyun 	{0x2510,0x09AF},//SEQ_DATA_PORT
2704*4882a593Smuzhiyun 	{0x2510,0x03D9},//SEQ_DATA_PORT
2705*4882a593Smuzhiyun 	{0x2510,0x1259},//SEQ_DATA_PORT
2706*4882a593Smuzhiyun 	{0x2510,0x11AF},//SEQ_DATA_PORT
2707*4882a593Smuzhiyun 	{0x2510,0x18B5},//SEQ_DATA_PORT
2708*4882a593Smuzhiyun 	{0x2510,0x0395},//SEQ_DATA_PORT
2709*4882a593Smuzhiyun 	{0x2510,0x05CB},//SEQ_DATA_PORT
2710*4882a593Smuzhiyun 	{0x2510,0x1021},//SEQ_DATA_PORT
2711*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
2712*4882a593Smuzhiyun 	{0x2510,0x1030},//SEQ_DATA_PORT
2713*4882a593Smuzhiyun 	{0x2510,0x004F},//SEQ_DATA_PORT
2714*4882a593Smuzhiyun 	{0x2510,0x001C},//SEQ_DATA_PORT
2715*4882a593Smuzhiyun 	{0x2510,0xB146},//SEQ_DATA_PORT
2716*4882a593Smuzhiyun 	{0x2510,0xC090},//SEQ_DATA_PORT
2717*4882a593Smuzhiyun 	{0x2510,0x0020},//SEQ_DATA_PORT
2718*4882a593Smuzhiyun 	{0x2510,0x103C},//SEQ_DATA_PORT
2719*4882a593Smuzhiyun 	{0x2510,0xA882},//SEQ_DATA_PORT
2720*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
2721*4882a593Smuzhiyun 	{0x2510,0x00A9},//SEQ_DATA_PORT
2722*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
2723*4882a593Smuzhiyun 	{0x2510,0xB700},//SEQ_DATA_PORT
2724*4882a593Smuzhiyun 	{0x2510,0x0001},//SEQ_DATA_PORT
2725*4882a593Smuzhiyun 	{0x2510,0x00A2},//SEQ_DATA_PORT
2726*4882a593Smuzhiyun 	{0x2510,0x11AE},//SEQ_DATA_PORT
2727*4882a593Smuzhiyun 	{0x2510,0x000A},//SEQ_DATA_PORT
2728*4882a593Smuzhiyun 	{0x2510,0x98BB},//SEQ_DATA_PORT
2729*4882a593Smuzhiyun 	{0x2510,0x2047},//SEQ_DATA_PORT
2730*4882a593Smuzhiyun 	{0x2510,0x0036},//SEQ_DATA_PORT
2731*4882a593Smuzhiyun 	{0x2510,0x1001},//SEQ_DATA_PORT
2732*4882a593Smuzhiyun 	{0x2510,0x9FBE},//SEQ_DATA_PORT
2733*4882a593Smuzhiyun 	{0x2510,0x108A},//SEQ_DATA_PORT
2734*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
2735*4882a593Smuzhiyun 	{0x2510,0x0039},//SEQ_DATA_PORT
2736*4882a593Smuzhiyun 	{0x2510,0x01C0},//SEQ_DATA_PORT
2737*4882a593Smuzhiyun 	{0x2510,0x109F},//SEQ_DATA_PORT
2738*4882a593Smuzhiyun 	{0x2510,0x1023},//SEQ_DATA_PORT
2739*4882a593Smuzhiyun 	{0x2510,0x052E},//SEQ_DATA_PORT
2740*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
2741*4882a593Smuzhiyun 	{0x2510,0x3081},//SEQ_DATA_PORT
2742*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
2743*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
2744*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2745*4882a593Smuzhiyun 	{0x2510,0x112A},//SEQ_DATA_PORT
2746*4882a593Smuzhiyun 	{0x2510,0x101D},//SEQ_DATA_PORT
2747*4882a593Smuzhiyun 	{0x2510,0x2020},//SEQ_DATA_PORT
2748*4882a593Smuzhiyun 	{0x2510,0x02B8},//SEQ_DATA_PORT
2749*4882a593Smuzhiyun 	{0x2510,0x10B8},//SEQ_DATA_PORT
2750*4882a593Smuzhiyun 	{0x2510,0x1136},//SEQ_DATA_PORT
2751*4882a593Smuzhiyun 	{0x2510,0x9B6B},//SEQ_DATA_PORT
2752*4882a593Smuzhiyun 	{0x2510,0x1039},//SEQ_DATA_PORT
2753*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
2754*4882a593Smuzhiyun 	{0x2510,0xAB80},//SEQ_DATA_PORT
2755*4882a593Smuzhiyun 	{0x2510,0x03C4},//SEQ_DATA_PORT
2756*4882a593Smuzhiyun 	{0x2510,0x10C4},//SEQ_DATA_PORT
2757*4882a593Smuzhiyun 	{0x2510,0x1023},//SEQ_DATA_PORT
2758*4882a593Smuzhiyun 	{0x2510,0x1245},//SEQ_DATA_PORT
2759*4882a593Smuzhiyun 	{0x2510,0x009F},//SEQ_DATA_PORT
2760*4882a593Smuzhiyun 	{0x2510,0x002B},//SEQ_DATA_PORT
2761*4882a593Smuzhiyun 	{0x2510,0x30D0},//SEQ_DATA_PORT
2762*4882a593Smuzhiyun 	{0x2510,0x3141},//SEQ_DATA_PORT
2763*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2764*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2765*4882a593Smuzhiyun 	{0x2510,0x3142},//SEQ_DATA_PORT
2766*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2767*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2768*4882a593Smuzhiyun 	{0x2510,0x3110},//SEQ_DATA_PORT
2769*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2770*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2771*4882a593Smuzhiyun 	{0x2510,0x3120},//SEQ_DATA_PORT
2772*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2773*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2774*4882a593Smuzhiyun 	{0x2510,0x3144},//SEQ_DATA_PORT
2775*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2776*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2777*4882a593Smuzhiyun 	{0x2510,0x3148},//SEQ_DATA_PORT
2778*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2779*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2780*4882a593Smuzhiyun 	{0x2510,0x3182},//SEQ_DATA_PORT
2781*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2782*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2783*4882a593Smuzhiyun 	{0x2510,0x3184},//SEQ_DATA_PORT
2784*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2785*4882a593Smuzhiyun 	{0x2510,0x3190},//SEQ_DATA_PORT
2786*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
2787*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2788*4882a593Smuzhiyun 	{0x2510,0x31A0},//SEQ_DATA_PORT
2789*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
2790*4882a593Smuzhiyun 	{0x2510,0x2201},//SEQ_DATA_PORT
2791*4882a593Smuzhiyun 	{0x2510,0x807D},//SEQ_DATA_PORT
2792*4882a593Smuzhiyun 	{0x2510,0x2206},//SEQ_DATA_PORT
2793*4882a593Smuzhiyun 	{0x2510,0x8815},//SEQ_DATA_PORT
2794*4882a593Smuzhiyun 	{0x2510,0x8877},//SEQ_DATA_PORT
2795*4882a593Smuzhiyun 	{0x2510,0x0092},//SEQ_DATA_PORT
2796*4882a593Smuzhiyun 	{0x2510,0x220E},//SEQ_DATA_PORT
2797*4882a593Smuzhiyun 	{0x2510,0x2211},//SEQ_DATA_PORT
2798*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
2799*4882a593Smuzhiyun 	{0x2510,0x3001},//SEQ_DATA_PORT
2800*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
2801*4882a593Smuzhiyun 	{0x2510,0x8C61},//SEQ_DATA_PORT
2802*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
2803*4882a593Smuzhiyun 	{0x2510,0x1012},//SEQ_DATA_PORT
2804*4882a593Smuzhiyun 	{0x2510,0x1D1F},//SEQ_DATA_PORT
2805*4882a593Smuzhiyun 	{0x2510,0x0D9F},//SEQ_DATA_PORT
2806*4882a593Smuzhiyun 	{0x2510,0x101F},//SEQ_DATA_PORT
2807*4882a593Smuzhiyun 	{0x2510,0x0036},//SEQ_DATA_PORT
2808*4882a593Smuzhiyun 	{0x2510,0x0040},//SEQ_DATA_PORT
2809*4882a593Smuzhiyun 	{0x2510,0x0023},//SEQ_DATA_PORT
2810*4882a593Smuzhiyun 	{0x2510,0x996E},//SEQ_DATA_PORT
2811*4882a593Smuzhiyun 	{0x2510,0x0257},//SEQ_DATA_PORT
2812*4882a593Smuzhiyun 	{0x2510,0x1035},//SEQ_DATA_PORT
2813*4882a593Smuzhiyun 	{0x2510,0x9926},//SEQ_DATA_PORT
2814*4882a593Smuzhiyun 	{0x2510,0x0039},//SEQ_DATA_PORT
2815*4882a593Smuzhiyun 	{0x2510,0x00AE},//SEQ_DATA_PORT
2816*4882a593Smuzhiyun 	{0x2510,0x11A3},//SEQ_DATA_PORT
2817*4882a593Smuzhiyun 	{0x2510,0x0048},//SEQ_DATA_PORT
2818*4882a593Smuzhiyun 	{0x2510,0xC878},//SEQ_DATA_PORT
2819*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
2820*4882a593Smuzhiyun 	{0x2510,0x1548},//SEQ_DATA_PORT
2821*4882a593Smuzhiyun 	{0x2510,0x0C49},//SEQ_DATA_PORT
2822*4882a593Smuzhiyun 	{0x2510,0x1149},//SEQ_DATA_PORT
2823*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
2824*4882a593Smuzhiyun 	{0x2510,0x1057},//SEQ_DATA_PORT
2825*4882a593Smuzhiyun 	{0x2510,0x3281},//SEQ_DATA_PORT
2826*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
2827*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
2828*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
2829*4882a593Smuzhiyun 	{0x2510,0xA020},//SEQ_DATA_PORT
2830*4882a593Smuzhiyun 	{0x2510,0x000C},//SEQ_DATA_PORT
2831*4882a593Smuzhiyun 	{0x2510,0x9825},//SEQ_DATA_PORT
2832*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
2833*4882a593Smuzhiyun 	{0x2510,0x1054},//SEQ_DATA_PORT
2834*4882a593Smuzhiyun 	{0x2510,0xB06D},//SEQ_DATA_PORT
2835*4882a593Smuzhiyun 	{0x2510,0x0035},//SEQ_DATA_PORT
2836*4882a593Smuzhiyun 	{0x2510,0x004D},//SEQ_DATA_PORT
2837*4882a593Smuzhiyun 	{0x2510,0x1020},//SEQ_DATA_PORT
2838*4882a593Smuzhiyun 	{0x2510,0xB064},//SEQ_DATA_PORT
2839*4882a593Smuzhiyun 	{0x2510,0x99C5},//SEQ_DATA_PORT
2840*4882a593Smuzhiyun 	{0x2510,0x0047},//SEQ_DATA_PORT
2841*4882a593Smuzhiyun 	{0x2510,0xB920},//SEQ_DATA_PORT
2842*4882a593Smuzhiyun 	{0x2510,0x1447},//SEQ_DATA_PORT
2843*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2844*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2845*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2846*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2847*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2848*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2849*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
2850*4882a593Smuzhiyun 	{0x31F8,0x0008},//MIPI_CONFIG_2
2851*4882a593Smuzhiyun 	{0x3C70,0x6828},//CALIB_ROWS
2852*4882a593Smuzhiyun 	{0x3092,0x0826},//ROW_NOISE_CONTROL
2853*4882a593Smuzhiyun 	{0x3428,0x0209},//SEQUENCER_CONTROL
2854*4882a593Smuzhiyun 	{0x3516,0xFF04},//DAC_LD_22_23
2855*4882a593Smuzhiyun 	{0x3526,0x6480},//DAC_LD_38_39
2856*4882a593Smuzhiyun 	{0x3504,0x8AAA},//DAC_LD_4_5
2857*4882a593Smuzhiyun 	{0x353C,0x220C},//DAC_LD_60_61
2858*4882a593Smuzhiyun 	{0x3536,0x4C6E},//DAC_LD_54_55
2859*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
2860*4882a593Smuzhiyun 	{0x3364,0x00EC},//DCG_TRIM
2861*4882a593Smuzhiyun 	{0x3512,0x8888},//DAC_LD_18_19
2862*4882a593Smuzhiyun 	{0x3514,0x888F},//DAC_LD_20_21
2863*4882a593Smuzhiyun 	{0x3520,0xFBF0},//DAC_LD_32_33
2864*4882a593Smuzhiyun 	{0x3524,0xB2A1},//DAC_LD_36_37
2865*4882a593Smuzhiyun 	{0x3528,0xCC84},//DAC_LD_40_41
2866*4882a593Smuzhiyun 	{0x3532,0x4C8E},//DAC_LD_50_51
2867*4882a593Smuzhiyun 	{0x3534,0x4E64},//DAC_LD_52_53
2868*4882a593Smuzhiyun 	{0x351E,0x5856},//DAC_LD_30_31
2869*4882a593Smuzhiyun 	{0x353E,0x98F2},//DAC_LD_62_63
2870*4882a593Smuzhiyun 	{0x352E,0x6A8A},//DAC_LD_46_47
2871*4882a593Smuzhiyun 	{0x3370,0x0211},//DBLC_CONTROL
2872*4882a593Smuzhiyun 	{0x3372,0x700F},//DBLC_FS0_CONTROL
2873*4882a593Smuzhiyun 	{0x3540,0x3597},//DAC_LD_64_65
2874*4882a593Smuzhiyun 	{0x58E2,0x0BE3},//COL_COUNT_VALUES1
2875*4882a593Smuzhiyun 	{0x58E4,0x18B4},//COL_COUNT_VALUES2
2876*4882a593Smuzhiyun 	{0x3522,0x7C97},//DAC_LD_34_35
2877*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
2878*4882a593Smuzhiyun 	{0x31D4,0x0042},//CLK_MEM_GATING_CTRL
2879*4882a593Smuzhiyun 	{0x352A,0x6F8F},//DAC_LD_42_43
2880*4882a593Smuzhiyun 	{0x3530,0x4A08},//DAC_LD_48_49
2881*4882a593Smuzhiyun 	{0x351A,0x5FFF},//DAC_LD_26_27
2882*4882a593Smuzhiyun 	{0x350E,0x39D9},//DAC_LD_14_15
2883*4882a593Smuzhiyun 	{0x3510,0x9988},//DAC_LD_16_17
2884*4882a593Smuzhiyun 	{0x3380,0x1FFF},//DBLC_OFFSET1
2885*4882a593Smuzhiyun 	{0x337A,0x1000},//DBLC_SCALE1
2886*4882a593Smuzhiyun 	{0x3092,0x0800},//ROW_NOISE_CONTROL
2887*4882a593Smuzhiyun 	{0x350A,0x0654},//DAC_LD_10_11
2888*4882a593Smuzhiyun 	{0x3364,0x00E0},//DCG_TRIM
2889*4882a593Smuzhiyun 	{0x591E,0x61AE},//ANALOG_GAIN_WR_DATA
2890*4882a593Smuzhiyun 	{0x591E,0x722C},//ANALOG_GAIN_WR_DATA
2891*4882a593Smuzhiyun 	{0x591E,0x82B8},//ANALOG_GAIN_WR_DATA
2892*4882a593Smuzhiyun 	{0x591E,0x92F6},//ANALOG_GAIN_WR_DATA
2893*4882a593Smuzhiyun 	{0x591E,0xA447},//ANALOG_GAIN_WR_DATA
2894*4882a593Smuzhiyun 	{0x591E,0xB66D},//ANALOG_GAIN_WR_DATA
2895*4882a593Smuzhiyun 	{0x591E,0xC6EA},//ANALOG_GAIN_WR_DATA
2896*4882a593Smuzhiyun 	{0x591E,0xDECD},//ANALOG_GAIN_WR_DATA
2897*4882a593Smuzhiyun 	{0x3532,0x4C8A},//DAC_LD_50_51
2898*4882a593Smuzhiyun 	{0x3534,0x4E60},//DAC_LD_52_53
2899*4882a593Smuzhiyun 	{0x353E,0x90F2},//DAC_LD_62_63
2900*4882a593Smuzhiyun 	{0x351A,0x4FFF},//DAC_LD_26_27
2901*4882a593Smuzhiyun 	{0x591C,0x00D7},//DGR_AMP_GAIN
2902*4882a593Smuzhiyun 	{0x5002,0x37C3},//T1_PIX_DEF_ID2
2903*4882a593Smuzhiyun 	{0x51CC,0x0149},//T1_NOISE_GAIN_THRESHOLD0
2904*4882a593Smuzhiyun 	{0x51D8,0x044D},//T1_NOISE_GAIN_THRESHOLD1
2905*4882a593Smuzhiyun 	{0x51CE,0x0700},//T1_NOISE_GAIN_THRESHOLD2
2906*4882a593Smuzhiyun 	{0x51D0,0x0001},//T1_NOISE_FLOOR0
2907*4882a593Smuzhiyun 	{0x51D2,0x0002},//T1_NOISE_FLOOR1
2908*4882a593Smuzhiyun 	{0x51D4,0x0003},//T1_NOISE_FLOOR2
2909*4882a593Smuzhiyun 	{0x51D6,0x0004},//T1_NOISE_FLOOR3
2910*4882a593Smuzhiyun 	{0x5202,0x37C3},//T2_PIX_DEF_ID2
2911*4882a593Smuzhiyun 	{0x51EA,0x0149},//T2_NOISE_GAIN_THRESHOLD0
2912*4882a593Smuzhiyun 	{0x51FC,0x044D},//T2_NOISE_GAIN_THRESHOLD1
2913*4882a593Smuzhiyun 	{0x51EC,0x0700},//T2_NOISE_GAIN_THRESHOLD2
2914*4882a593Smuzhiyun 	{0x51EE,0x0001},//T2_NOISE_FLOOR0
2915*4882a593Smuzhiyun 	{0x51F0,0x0002},//T2_NOISE_FLOOR1
2916*4882a593Smuzhiyun 	{0x51F2,0x0003},//T2_NOISE_FLOOR2
2917*4882a593Smuzhiyun 	{0x51F4,0x0004},//T2_NOISE_FLOOR3
2918*4882a593Smuzhiyun 	{0x5402,0x37C3},//T4_PIX_DEF_ID2
2919*4882a593Smuzhiyun 	{0x5560,0x0149},//T4_NOISE_GAIN_THRESHOLD0
2920*4882a593Smuzhiyun 	{0x556C,0x044D},//T4_NOISE_GAIN_THRESHOLD1
2921*4882a593Smuzhiyun 	{0x5562,0x0700},//T4_NOISE_GAIN_THRESHOLD2
2922*4882a593Smuzhiyun 	{0x5564,0x0001},//T4_NOISE_FLOOR0
2923*4882a593Smuzhiyun 	{0x5566,0x0002},//T4_NOISE_FLOOR1
2924*4882a593Smuzhiyun 	{0x5568,0x0003},//T4_NOISE_FLOOR2
2925*4882a593Smuzhiyun 	{0x556A,0x0004},//T4_NOISE_FLOOR3
2926*4882a593Smuzhiyun 	{0x31E0,0x0001},//PIX_DEF_ID
2927*4882a593Smuzhiyun 	{0x5000,0x0080},//T1_PIX_DEF_ID
2928*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
2929*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
2930*4882a593Smuzhiyun 	{0x5200,0x0080},//T2_PIX_DEF_ID
2931*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
2932*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
2933*4882a593Smuzhiyun 	{0x5400,0x0080},//T4_PIX_DEF_ID
2934*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
2935*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
2936*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
2937*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
2938*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
2939*4882a593Smuzhiyun 	{0x50A2,0x3F2A},//BMT0
2940*4882a593Smuzhiyun 	{0x50A4,0x875A},//BMT1
2941*4882a593Smuzhiyun 	{0x50A6,0x030F},//SINGLEK_FACTOR0
2942*4882a593Smuzhiyun 	{0x50A6,0x0F0F},//SINGLEK_FACTOR0
2943*4882a593Smuzhiyun 	{0x50A8,0x030F},//SINGLEK_FACTOR1
2944*4882a593Smuzhiyun 	{0x50A8,0x0F0F},//SINGLEK_FACTOR1
2945*4882a593Smuzhiyun 	{0x50AA,0x030F},//SINGLEK_FACTOR2
2946*4882a593Smuzhiyun 	{0x50AA,0x050F},//SINGLEK_FACTOR2
2947*4882a593Smuzhiyun 	{0x50AC,0x0301},//CROSS_FACTOR0
2948*4882a593Smuzhiyun 	{0x50AC,0x0101},//CROSS_FACTOR0
2949*4882a593Smuzhiyun 	{0x50AE,0x0301},//CROSS_FACTOR1
2950*4882a593Smuzhiyun 	{0x50AE,0x0101},//CROSS_FACTOR1
2951*4882a593Smuzhiyun 	{0x50B0,0x0301},//CROSS_FACTOR2
2952*4882a593Smuzhiyun 	{0x50B0,0x0101},//CROSS_FACTOR2
2953*4882a593Smuzhiyun 	{0x50B2,0x03FF},//SINGLE_MAX_FACTOR
2954*4882a593Smuzhiyun 	{0x50B4,0x030F},//COUPLE_FACTOR0
2955*4882a593Smuzhiyun 	{0x50B4,0x0F0F},//COUPLE_FACTOR0
2956*4882a593Smuzhiyun 	{0x50B6,0x030F},//COUPLE_FACTOR1
2957*4882a593Smuzhiyun 	{0x50B6,0x0F0F},//COUPLE_FACTOR1
2958*4882a593Smuzhiyun 	{0x50B8,0x030F},//COUPLE_FACTOR2
2959*4882a593Smuzhiyun 	{0x50B8,0x050F},//COUPLE_FACTOR2
2960*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
2961*4882a593Smuzhiyun 	{0x3D34,0x9C40},//T2_STR_DEC_TH
2962*4882a593Smuzhiyun 	{0x3D36,0xFFFF},//T2_END_DEC_TH
2963*4882a593Smuzhiyun 	{0x3D02,0x5033},//MEC_CTRL2
2964*4882a593Smuzhiyun 	{0x3D00,0x600F},//MEC_CTRL1
2965*4882a593Smuzhiyun 	{0x3086,0x1A28},//PARK_ROW_ADDR
2966*4882a593Smuzhiyun 	{0x33E4,0x0040},//VERT_SHADING_CONTROL
2967*4882a593Smuzhiyun 	{0x3C70,0x6222},//CALIB_ROWS
2968*4882a593Smuzhiyun 	{0x3110,0x0011},//HDR_CONTROL0
2969*4882a593Smuzhiyun 	{0x30B0,0x0820},//DIGITAL_TEST
2970*4882a593Smuzhiyun 	{0x3280,0x0ED8},//T1_BARRIER_C0
2971*4882a593Smuzhiyun 	{0x3282,0x0ED8},//T1_BARRIER_C1
2972*4882a593Smuzhiyun 	{0x3284,0x0ED8},//T1_BARRIER_C2
2973*4882a593Smuzhiyun 	{0x3286,0x0ED8},//T1_BARRIER_C3
2974*4882a593Smuzhiyun 	{0x3288,0x0ED8},//T2_BARRIER_C0
2975*4882a593Smuzhiyun 	{0x328A,0x0ED8},//T2_BARRIER_C1
2976*4882a593Smuzhiyun 	{0x328C,0x0ED8},//T2_BARRIER_C2
2977*4882a593Smuzhiyun 	{0x328E,0x0ED8},//T2_BARRIER_C3
2978*4882a593Smuzhiyun 	{0x3290,0x0ED8},//T3_BARRIER_C0
2979*4882a593Smuzhiyun 	{0x3292,0x0ED8},//T3_BARRIER_C1
2980*4882a593Smuzhiyun 	{0x3294,0x0ED8},//T3_BARRIER_C2
2981*4882a593Smuzhiyun 	{0x3296,0x0ED8},//T3_BARRIER_C3
2982*4882a593Smuzhiyun 	{0x3100,0xC001},//DLO_CONTROL0
2983*4882a593Smuzhiyun 	{0x3102,0xBED8},//DLO_CONTROL1
2984*4882a593Smuzhiyun 	{0x3104,0xBED8},//DLO_CONTROL2
2985*4882a593Smuzhiyun 	{0x3106,0xBED8},//DLO_CONTROL3
2986*4882a593Smuzhiyun 	{0x3108,0x07D0},//DLO_CONTROL4
2987*4882a593Smuzhiyun 	{0x3116,0x4001},//HDR_CONTROL3
2988*4882a593Smuzhiyun 	{0x3124,0x006D},//HDR_MD_CONTROL0
2989*4882a593Smuzhiyun 	{0x3126,0x003C},//HDR_MD_CONTROL1
2990*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
2991*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
2992*4882a593Smuzhiyun 	{0x3082,0x0014},//OPERATION_MODE_CTRL
2993*4882a593Smuzhiyun 	{0x30BA,0x0135},//DIGITAL_CTRL
2994*4882a593Smuzhiyun 	{0x3238,0x0044},//EXPOSURE_RATIO
2995*4882a593Smuzhiyun 	{0x3012,0x0700},//COARSE_INTEGRATION_TIME_
2996*4882a593Smuzhiyun 	{0x3212,0x0070},//COARSE_INTEGRATION_TIME2
2997*4882a593Smuzhiyun 	{0x300C,0x10CC},//LINE_LENGTH_PCK_
2998*4882a593Smuzhiyun 	{0x300A,0x09F3},//FRAME_LENGTH_LINES_
2999*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
3000*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
3001*4882a593Smuzhiyun 	{0x5910,0x7091},//SENSOR_GAIN_REG1
3002*4882a593Smuzhiyun 	{0x5910,0x689C},//SENSOR_GAIN_REG1
3003*4882a593Smuzhiyun 	{0x5910,0x8885},//SENSOR_GAIN_REG1
3004*4882a593Smuzhiyun 	{0x5910,0x98AD},//SENSOR_GAIN_REG1
3005*4882a593Smuzhiyun 	{0x5910,0xA8A9},//SENSOR_GAIN_REG1
3006*4882a593Smuzhiyun 	{0x5910,0xC894},//SENSOR_GAIN_REG1
3007*4882a593Smuzhiyun 	{0x5910,0xC8D1},//SENSOR_GAIN_REG1
3008*4882a593Smuzhiyun 	{0x5910,0xD88A},//SENSOR_GAIN_REG1
3009*4882a593Smuzhiyun 	{0x5910,0xD8C3},//SENSOR_GAIN_REG1
3010*4882a593Smuzhiyun 	{0x5910,0xD915},//SENSOR_GAIN_REG1
3011*4882a593Smuzhiyun 	{0x5910,0xD988},//SENSOR_GAIN_REG1
3012*4882a593Smuzhiyun 	{0x5910,0xDA2A},//SENSOR_GAIN_REG1
3013*4882a593Smuzhiyun 	{0x5910,0xDB0E},//SENSOR_GAIN_REG1
3014*4882a593Smuzhiyun 	{0x5910,0xDC53},//SENSOR_GAIN_REG1
3015*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
3016*4882a593Smuzhiyun 	{0x5910,0xC919},//SENSOR_GAIN_REG1
3017*4882a593Smuzhiyun 	{0x5910,0xCA00},//SENSOR_GAIN_REG1
3018*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
3019*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
3020*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
3021*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
3022*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
3023*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3024*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3025*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3026*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3027*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3028*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3029*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3030*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3031*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3032*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3033*4882a593Smuzhiyun 	{0x5910,0x0002},//SENSOR_GAIN_REG1
3034*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3035*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3036*4882a593Smuzhiyun 	{0x5910,0x5A8B},//SENSOR_GAIN_REG1
3037*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3038*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3039*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3040*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3041*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3042*4882a593Smuzhiyun 	{0x5910,0x0005},//SENSOR_GAIN_REG1
3043*4882a593Smuzhiyun 	{0x5910,0x0006},//SENSOR_GAIN_REG1
3044*4882a593Smuzhiyun 	{0x5910,0x0007},//SENSOR_GAIN_REG1
3045*4882a593Smuzhiyun 	{0x5910,0x9A8B},//SENSOR_GAIN_REG1
3046*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3047*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3048*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3049*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3050*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3051*4882a593Smuzhiyun 	{0x5910,0x0015},//SENSOR_GAIN_REG1
3052*4882a593Smuzhiyun 	{0x5910,0x0016},//SENSOR_GAIN_REG1
3053*4882a593Smuzhiyun 	{0x5910,0x0017},//SENSOR_GAIN_REG1
3054*4882a593Smuzhiyun 	{0x5910,0xDA8B},//SENSOR_GAIN_REG1
3055*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3056*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3057*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3058*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3059*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3060*4882a593Smuzhiyun 	{0x5910,0x0025},//SENSOR_GAIN_REG1
3061*4882a593Smuzhiyun 	{0x5910,0x0026},//SENSOR_GAIN_REG1
3062*4882a593Smuzhiyun 	{0x5910,0x0027},//SENSOR_GAIN_REG1
3063*4882a593Smuzhiyun 	{0x5910,0x59B9},//SENSOR_GAIN_REG1
3064*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3065*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3066*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3067*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3068*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3069*4882a593Smuzhiyun 	{0x5910,0x0035},//SENSOR_GAIN_REG1
3070*4882a593Smuzhiyun 	{0x5910,0x0036},//SENSOR_GAIN_REG1
3071*4882a593Smuzhiyun 	{0x5910,0x0037},//SENSOR_GAIN_REG1
3072*4882a593Smuzhiyun 	{0x5910,0x99B9},//SENSOR_GAIN_REG1
3073*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3074*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3075*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3076*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3077*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3078*4882a593Smuzhiyun 	{0x5910,0x0045},//SENSOR_GAIN_REG1
3079*4882a593Smuzhiyun 	{0x5910,0x0046},//SENSOR_GAIN_REG1
3080*4882a593Smuzhiyun 	{0x5910,0x0047},//SENSOR_GAIN_REG1
3081*4882a593Smuzhiyun 	{0x5910,0xD9B9},//SENSOR_GAIN_REG1
3082*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3083*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3084*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3085*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3086*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3087*4882a593Smuzhiyun 	{0x5910,0x0055},//SENSOR_GAIN_REG1
3088*4882a593Smuzhiyun 	{0x5910,0x0056},//SENSOR_GAIN_REG1
3089*4882a593Smuzhiyun 	{0x5910,0x0057},//SENSOR_GAIN_REG1
3090*4882a593Smuzhiyun 	{0x5910,0x9A85},//SENSOR_GAIN_REG1
3091*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3092*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3093*4882a593Smuzhiyun 	{0x5910,0x0684},//SENSOR_GAIN_REG1
3094*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3095*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3096*4882a593Smuzhiyun 	{0x5910,0x0065},//SENSOR_GAIN_REG1
3097*4882a593Smuzhiyun 	{0x5910,0x0066},//SENSOR_GAIN_REG1
3098*4882a593Smuzhiyun 	{0x5910,0x0067},//SENSOR_GAIN_REG1
3099*4882a593Smuzhiyun 	{0x5910,0x59BD},//SENSOR_GAIN_REG1
3100*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
3101*4882a593Smuzhiyun 	{0x5910,0x0C00},//SENSOR_GAIN_REG1
3102*4882a593Smuzhiyun 	{0x5910,0x0F00},//SENSOR_GAIN_REG1
3103*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
3104*4882a593Smuzhiyun 	{0x5910,0x10F0},//SENSOR_GAIN_REG1
3105*4882a593Smuzhiyun 	{0x5910,0x0075},//SENSOR_GAIN_REG1
3106*4882a593Smuzhiyun 	{0x5910,0x0076},//SENSOR_GAIN_REG1
3107*4882a593Smuzhiyun 	{0x5910,0x0077},//SENSOR_GAIN_REG1
3108*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
3109*4882a593Smuzhiyun 	{0x5912,0x7091},//SENSOR_GAIN_REG2
3110*4882a593Smuzhiyun 	{0x5912,0x689C},//SENSOR_GAIN_REG2
3111*4882a593Smuzhiyun 	{0x5912,0x8885},//SENSOR_GAIN_REG2
3112*4882a593Smuzhiyun 	{0x5912,0x98AD},//SENSOR_GAIN_REG2
3113*4882a593Smuzhiyun 	{0x5912,0xA8A9},//SENSOR_GAIN_REG2
3114*4882a593Smuzhiyun 	{0x5912,0xC894},//SENSOR_GAIN_REG2
3115*4882a593Smuzhiyun 	{0x5912,0xC8D1},//SENSOR_GAIN_REG2
3116*4882a593Smuzhiyun 	{0x5912,0xC927},//SENSOR_GAIN_REG2
3117*4882a593Smuzhiyun 	{0x5912,0xC9A0},//SENSOR_GAIN_REG2
3118*4882a593Smuzhiyun 	{0x5912,0xCA4C},//SENSOR_GAIN_REG2
3119*4882a593Smuzhiyun 	{0x5912,0xCB3F},//SENSOR_GAIN_REG2
3120*4882a593Smuzhiyun 	{0x5912,0xCC97},//SENSOR_GAIN_REG2
3121*4882a593Smuzhiyun 	{0x5912,0xCE7C},//SENSOR_GAIN_REG2
3122*4882a593Smuzhiyun 	{0x5912,0xCFFF},//SENSOR_GAIN_REG2
3123*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
3124*4882a593Smuzhiyun 	{0x5912,0xC919},//SENSOR_GAIN_REG2
3125*4882a593Smuzhiyun 	{0x5912,0xCA00},//SENSOR_GAIN_REG2
3126*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
3127*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
3128*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
3129*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
3130*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
3131*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3132*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3133*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3134*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3135*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3136*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3137*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3138*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3139*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3140*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3141*4882a593Smuzhiyun 	{0x5912,0x0002},//SENSOR_GAIN_REG2
3142*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3143*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3144*4882a593Smuzhiyun 	{0x5912,0x5A8B},//SENSOR_GAIN_REG2
3145*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3146*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3147*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3148*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3149*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3150*4882a593Smuzhiyun 	{0x5912,0x0005},//SENSOR_GAIN_REG2
3151*4882a593Smuzhiyun 	{0x5912,0x0006},//SENSOR_GAIN_REG2
3152*4882a593Smuzhiyun 	{0x5912,0x0007},//SENSOR_GAIN_REG2
3153*4882a593Smuzhiyun 	{0x5912,0x9A8B},//SENSOR_GAIN_REG2
3154*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3155*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3156*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3157*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3158*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3159*4882a593Smuzhiyun 	{0x5912,0x0015},//SENSOR_GAIN_REG2
3160*4882a593Smuzhiyun 	{0x5912,0x0016},//SENSOR_GAIN_REG2
3161*4882a593Smuzhiyun 	{0x5912,0x0017},//SENSOR_GAIN_REG2
3162*4882a593Smuzhiyun 	{0x5912,0xDA8B},//SENSOR_GAIN_REG2
3163*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3164*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3165*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3166*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3167*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3168*4882a593Smuzhiyun 	{0x5912,0x0025},//SENSOR_GAIN_REG2
3169*4882a593Smuzhiyun 	{0x5912,0x0026},//SENSOR_GAIN_REG2
3170*4882a593Smuzhiyun 	{0x5912,0x0027},//SENSOR_GAIN_REG2
3171*4882a593Smuzhiyun 	{0x5912,0x59B9},//SENSOR_GAIN_REG2
3172*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3173*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3174*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3175*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3176*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3177*4882a593Smuzhiyun 	{0x5912,0x0035},//SENSOR_GAIN_REG2
3178*4882a593Smuzhiyun 	{0x5912,0x0036},//SENSOR_GAIN_REG2
3179*4882a593Smuzhiyun 	{0x5912,0x0037},//SENSOR_GAIN_REG2
3180*4882a593Smuzhiyun 	{0x5912,0x99B9},//SENSOR_GAIN_REG2
3181*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3182*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3183*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3184*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3185*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3186*4882a593Smuzhiyun 	{0x5912,0x0045},//SENSOR_GAIN_REG2
3187*4882a593Smuzhiyun 	{0x5912,0x0046},//SENSOR_GAIN_REG2
3188*4882a593Smuzhiyun 	{0x5912,0x0047},//SENSOR_GAIN_REG2
3189*4882a593Smuzhiyun 	{0x5912,0xD9B9},//SENSOR_GAIN_REG2
3190*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3191*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3192*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3193*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3194*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3195*4882a593Smuzhiyun 	{0x5912,0x0055},//SENSOR_GAIN_REG2
3196*4882a593Smuzhiyun 	{0x5912,0x0056},//SENSOR_GAIN_REG2
3197*4882a593Smuzhiyun 	{0x5912,0x0057},//SENSOR_GAIN_REG2
3198*4882a593Smuzhiyun 	{0x5912,0x9A85},//SENSOR_GAIN_REG2
3199*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3200*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3201*4882a593Smuzhiyun 	{0x5912,0x0684},//SENSOR_GAIN_REG2
3202*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3203*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3204*4882a593Smuzhiyun 	{0x5912,0x0065},//SENSOR_GAIN_REG2
3205*4882a593Smuzhiyun 	{0x5912,0x0066},//SENSOR_GAIN_REG2
3206*4882a593Smuzhiyun 	{0x5912,0x0067},//SENSOR_GAIN_REG2
3207*4882a593Smuzhiyun 	{0x5912,0x59BD},//SENSOR_GAIN_REG2
3208*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
3209*4882a593Smuzhiyun 	{0x5912,0x0C00},//SENSOR_GAIN_REG2
3210*4882a593Smuzhiyun 	{0x5912,0x0F00},//SENSOR_GAIN_REG2
3211*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
3212*4882a593Smuzhiyun 	{0x5912,0x10F0},//SENSOR_GAIN_REG2
3213*4882a593Smuzhiyun 	{0x5912,0x0075},//SENSOR_GAIN_REG2
3214*4882a593Smuzhiyun 	{0x5912,0x0076},//SENSOR_GAIN_REG2
3215*4882a593Smuzhiyun 	{0x5912,0x0077},//SENSOR_GAIN_REG2
3216*4882a593Smuzhiyun 	{0x5914,0x4006},//SENSOR_GAIN_TABLE_SEL
3217*4882a593Smuzhiyun 	{0x5900,0x0020},//SENSOR_GAIN
3218*4882a593Smuzhiyun 	{0x5902,0x0000},//SENSOR_GAIN_T2
3219*4882a593Smuzhiyun 	{0x3110,0x0001},//HDR_CONTROL0
3220*4882a593Smuzhiyun 
3221*4882a593Smuzhiyun 	{REG_NULL, 0x00},
3222*4882a593Smuzhiyun };
3223*4882a593Smuzhiyun 
3224*4882a593Smuzhiyun static const struct regval ar0822_linear_60fps_regs[] = {
3225*4882a593Smuzhiyun 	{REG_DELAY, 2000},
3226*4882a593Smuzhiyun 	{0x3030,0x0092},//PLL_MULTIPLIER
3227*4882a593Smuzhiyun 	{0x302E,0x0002},//PRE_PLL_CLK_DIV
3228*4882a593Smuzhiyun 	{0x302C,0x0002},//VT_SYS_CLK_DIV
3229*4882a593Smuzhiyun 	{0x302A,0x0006},//VT_PIX_CLK_DIV
3230*4882a593Smuzhiyun 	{0x3038,0x0002},//OP_SYS_CLK_DIV
3231*4882a593Smuzhiyun 	{0x3036,0x0006},//OP_WORD_CLK_DIV
3232*4882a593Smuzhiyun 	{0x31B0,0x00BF},//FRAME_PREAMBLE
3233*4882a593Smuzhiyun 	{0x31B2,0x007D},//LINE_PREAMBLE
3234*4882a593Smuzhiyun 	{0x31B4,0x834E},//MIPI_TIMING_0
3235*4882a593Smuzhiyun 	{0x31B6,0x8491},//MIPI_TIMING_1
3236*4882a593Smuzhiyun 	{0x31B8,0xD0CF},//MIPI_TIMING_2
3237*4882a593Smuzhiyun 	{0x31BA,0x0515},//MIPI_TIMING_3
3238*4882a593Smuzhiyun 	{0x31BC,0x1911},//MIPI_TIMING_4
3239*4882a593Smuzhiyun 	{0x3342,0x122C},//MIPI_F1_PDT_EDT
3240*4882a593Smuzhiyun 	{0x31BC,0x5911},//MIPI_TIMING_4
3241*4882a593Smuzhiyun 	{0x31DE,0x0004},//MIPI_HISPI_TRIM
3242*4882a593Smuzhiyun 	{0x31C6,0xC000},//HISPI_CONTROL
3243*4882a593Smuzhiyun 	{0x31C8,0x0B28},//MIPI_DESKEW_PAT_WIDTH
3244*4882a593Smuzhiyun 	{0x2512,0xA000},//SEQ_CTRL_PORT
3245*4882a593Smuzhiyun 	{0x2510,0x0720},//SEQ_DATA_PORT
3246*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3247*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3248*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3249*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3250*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3251*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3252*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3253*4882a593Smuzhiyun 	{0x2510,0x2122},//SEQ_DATA_PORT
3254*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3255*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3256*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3257*4882a593Smuzhiyun 	{0x2510,0x26FF},//SEQ_DATA_PORT
3258*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3259*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3260*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3261*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3262*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3263*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3264*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3265*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3266*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3267*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3268*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3269*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3270*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3271*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3272*4882a593Smuzhiyun 	{0x2510,0xFFFF},//SEQ_DATA_PORT
3273*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3274*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3275*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3276*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3277*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3278*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3279*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3280*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3281*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3282*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3283*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3284*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3285*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3286*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3287*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3288*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3289*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3290*4882a593Smuzhiyun 	{0x2510,0x0F8C},//SEQ_DATA_PORT
3291*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3292*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3293*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3294*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3295*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3296*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3297*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3298*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3299*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3300*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3301*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3302*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3303*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3304*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3305*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3306*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3307*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3308*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3309*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3310*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3311*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3312*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3313*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3314*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
3315*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
3316*4882a593Smuzhiyun 	{0x2510,0xA0E1},//SEQ_DATA_PORT
3317*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3318*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3319*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
3320*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
3321*4882a593Smuzhiyun 	{0x2510,0xA681},//SEQ_DATA_PORT
3322*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3323*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3324*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3325*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3326*4882a593Smuzhiyun 	{0x2510,0x20FE},//SEQ_DATA_PORT
3327*4882a593Smuzhiyun 	{0x2510,0x9070},//SEQ_DATA_PORT
3328*4882a593Smuzhiyun 	{0x2510,0x891D},//SEQ_DATA_PORT
3329*4882a593Smuzhiyun 	{0x2510,0x867F},//SEQ_DATA_PORT
3330*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3331*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
3332*4882a593Smuzhiyun 	{0x2510,0x893F},//SEQ_DATA_PORT
3333*4882a593Smuzhiyun 	{0x2510,0x0F92},//SEQ_DATA_PORT
3334*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
3335*4882a593Smuzhiyun 	{0x2510,0x0F8F},//SEQ_DATA_PORT
3336*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3337*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3338*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3339*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3340*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3341*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
3342*4882a593Smuzhiyun 	{0x2510,0x9770},//SEQ_DATA_PORT
3343*4882a593Smuzhiyun 	{0x2510,0x20FC},//SEQ_DATA_PORT
3344*4882a593Smuzhiyun 	{0x2510,0x8054},//SEQ_DATA_PORT
3345*4882a593Smuzhiyun 	{0x2510,0x896C},//SEQ_DATA_PORT
3346*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
3347*4882a593Smuzhiyun 	{0x2510,0x9030},//SEQ_DATA_PORT
3348*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
3349*4882a593Smuzhiyun 	{0x2510,0x8040},//SEQ_DATA_PORT
3350*4882a593Smuzhiyun 	{0x2510,0x8948},//SEQ_DATA_PORT
3351*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
3352*4882a593Smuzhiyun 	{0x2510,0x1597},//SEQ_DATA_PORT
3353*4882a593Smuzhiyun 	{0x2510,0x8808},//SEQ_DATA_PORT
3354*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
3355*4882a593Smuzhiyun 	{0x2510,0x1F96},//SEQ_DATA_PORT
3356*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3357*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
3358*4882a593Smuzhiyun 	{0x2510,0xA0C0},//SEQ_DATA_PORT
3359*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
3360*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
3361*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
3362*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
3363*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
3364*4882a593Smuzhiyun 	{0x2510,0x1FAA},//SEQ_DATA_PORT
3365*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3366*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3367*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3368*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3369*4882a593Smuzhiyun 	{0x2510,0x20E0},//SEQ_DATA_PORT
3370*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3371*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3372*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3373*4882a593Smuzhiyun 	{0x2510,0x20FF},//SEQ_DATA_PORT
3374*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3375*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3376*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3377*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
3378*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
3379*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
3380*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3381*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
3382*4882a593Smuzhiyun 	{0x2510,0x2400},//SEQ_DATA_PORT
3383*4882a593Smuzhiyun 	{0x2510,0x2702},//SEQ_DATA_PORT
3384*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
3385*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
3386*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
3387*4882a593Smuzhiyun 	{0x2510,0x2703},//SEQ_DATA_PORT
3388*4882a593Smuzhiyun 	{0x2510,0x3242},//SEQ_DATA_PORT
3389*4882a593Smuzhiyun 	{0x2510,0x3108},//SEQ_DATA_PORT
3390*4882a593Smuzhiyun 	{0x2510,0x2420},//SEQ_DATA_PORT
3391*4882a593Smuzhiyun 	{0x2510,0x2704},//SEQ_DATA_PORT
3392*4882a593Smuzhiyun 	{0x2510,0x3244},//SEQ_DATA_PORT
3393*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3394*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3395*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3396*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3397*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
3398*4882a593Smuzhiyun 	{0x2510,0x000F},//SEQ_DATA_PORT
3399*4882a593Smuzhiyun 	{0x2510,0x109C},//SEQ_DATA_PORT
3400*4882a593Smuzhiyun 	{0x2510,0x8855},//SEQ_DATA_PORT
3401*4882a593Smuzhiyun 	{0x2510,0x3101},//SEQ_DATA_PORT
3402*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3403*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3404*4882a593Smuzhiyun 	{0x2510,0x3102},//SEQ_DATA_PORT
3405*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3406*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3407*4882a593Smuzhiyun 	{0x2510,0x3181},//SEQ_DATA_PORT
3408*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3409*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3410*4882a593Smuzhiyun 	{0x2510,0x3188},//SEQ_DATA_PORT
3411*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3412*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3413*4882a593Smuzhiyun 	{0x2510,0x3282},//SEQ_DATA_PORT
3414*4882a593Smuzhiyun 	{0x2510,0x3104},//SEQ_DATA_PORT
3415*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3416*4882a593Smuzhiyun 	{0x2510,0xB0E4},//SEQ_DATA_PORT
3417*4882a593Smuzhiyun 	{0x2510,0xAD92},//SEQ_DATA_PORT
3418*4882a593Smuzhiyun 	{0x2510,0xBC0C},//SEQ_DATA_PORT
3419*4882a593Smuzhiyun 	{0x2510,0x1028},//SEQ_DATA_PORT
3420*4882a593Smuzhiyun 	{0x2510,0x0022},//SEQ_DATA_PORT
3421*4882a593Smuzhiyun 	{0x2510,0xC020},//SEQ_DATA_PORT
3422*4882a593Smuzhiyun 	{0x2510,0x003E},//SEQ_DATA_PORT
3423*4882a593Smuzhiyun 	{0x2510,0x0045},//SEQ_DATA_PORT
3424*4882a593Smuzhiyun 	{0x2510,0x00B0},//SEQ_DATA_PORT
3425*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
3426*4882a593Smuzhiyun 	{0x2510,0x30C1},//SEQ_DATA_PORT
3427*4882a593Smuzhiyun 	{0x2510,0x8015},//SEQ_DATA_PORT
3428*4882a593Smuzhiyun 	{0x2510,0xA038},//SEQ_DATA_PORT
3429*4882a593Smuzhiyun 	{0x2510,0x100F},//SEQ_DATA_PORT
3430*4882a593Smuzhiyun 	{0x2510,0x0507},//SEQ_DATA_PORT
3431*4882a593Smuzhiyun 	{0x2510,0xA220},//SEQ_DATA_PORT
3432*4882a593Smuzhiyun 	{0x2510,0x0010},//SEQ_DATA_PORT
3433*4882a593Smuzhiyun 	{0x2510,0x10C2},//SEQ_DATA_PORT
3434*4882a593Smuzhiyun 	{0x2510,0xB760},//SEQ_DATA_PORT
3435*4882a593Smuzhiyun 	{0x2510,0x0033},//SEQ_DATA_PORT
3436*4882a593Smuzhiyun 	{0x2510,0x1082},//SEQ_DATA_PORT
3437*4882a593Smuzhiyun 	{0x2510,0x100B},//SEQ_DATA_PORT
3438*4882a593Smuzhiyun 	{0x2510,0x1029},//SEQ_DATA_PORT
3439*4882a593Smuzhiyun 	{0x2510,0xA85A},//SEQ_DATA_PORT
3440*4882a593Smuzhiyun 	{0x2510,0x998D},//SEQ_DATA_PORT
3441*4882a593Smuzhiyun 	{0x2510,0xC810},//SEQ_DATA_PORT
3442*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
3443*4882a593Smuzhiyun 	{0x2510,0x0ECE},//SEQ_DATA_PORT
3444*4882a593Smuzhiyun 	{0x2510,0x123B},//SEQ_DATA_PORT
3445*4882a593Smuzhiyun 	{0x2510,0xC000},//SEQ_DATA_PORT
3446*4882a593Smuzhiyun 	{0x2510,0x032F},//SEQ_DATA_PORT
3447*4882a593Smuzhiyun 	{0x2510,0x11D5},//SEQ_DATA_PORT
3448*4882a593Smuzhiyun 	{0x2510,0x162F},//SEQ_DATA_PORT
3449*4882a593Smuzhiyun 	{0x2510,0x9000},//SEQ_DATA_PORT
3450*4882a593Smuzhiyun 	{0x2510,0x2034},//SEQ_DATA_PORT
3451*4882a593Smuzhiyun 	{0x2510,0x0015},//SEQ_DATA_PORT
3452*4882a593Smuzhiyun 	{0x2510,0x04CB},//SEQ_DATA_PORT
3453*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
3454*4882a593Smuzhiyun 	{0x2510,0x1031},//SEQ_DATA_PORT
3455*4882a593Smuzhiyun 	{0x2510,0x002D},//SEQ_DATA_PORT
3456*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
3457*4882a593Smuzhiyun 	{0x2510,0x80B9},//SEQ_DATA_PORT
3458*4882a593Smuzhiyun 	{0x2510,0xA101},//SEQ_DATA_PORT
3459*4882a593Smuzhiyun 	{0x2510,0x001C},//SEQ_DATA_PORT
3460*4882a593Smuzhiyun 	{0x2510,0x008E},//SEQ_DATA_PORT
3461*4882a593Smuzhiyun 	{0x2510,0x124B},//SEQ_DATA_PORT
3462*4882a593Smuzhiyun 	{0x2510,0x01B5},//SEQ_DATA_PORT
3463*4882a593Smuzhiyun 	{0x2510,0x0B92},//SEQ_DATA_PORT
3464*4882a593Smuzhiyun 	{0x2510,0xA400},//SEQ_DATA_PORT
3465*4882a593Smuzhiyun 	{0x2510,0x8091},//SEQ_DATA_PORT
3466*4882a593Smuzhiyun 	{0x2510,0x0028},//SEQ_DATA_PORT
3467*4882a593Smuzhiyun 	{0x2510,0x3002},//SEQ_DATA_PORT
3468*4882a593Smuzhiyun 	{0x2510,0x2004},//SEQ_DATA_PORT
3469*4882a593Smuzhiyun 	{0x2510,0x1012},//SEQ_DATA_PORT
3470*4882a593Smuzhiyun 	{0x2510,0x100E},//SEQ_DATA_PORT
3471*4882a593Smuzhiyun 	{0x2510,0x10A8},//SEQ_DATA_PORT
3472*4882a593Smuzhiyun 	{0x2510,0x00A1},//SEQ_DATA_PORT
3473*4882a593Smuzhiyun 	{0x2510,0x132D},//SEQ_DATA_PORT
3474*4882a593Smuzhiyun 	{0x2510,0x09AF},//SEQ_DATA_PORT
3475*4882a593Smuzhiyun 	{0x2510,0x0159},//SEQ_DATA_PORT
3476*4882a593Smuzhiyun 	{0x2510,0x121D},//SEQ_DATA_PORT
3477*4882a593Smuzhiyun 	{0x2510,0x1259},//SEQ_DATA_PORT
3478*4882a593Smuzhiyun 	{0x2510,0x11AF},//SEQ_DATA_PORT
3479*4882a593Smuzhiyun 	{0x2510,0x18B5},//SEQ_DATA_PORT
3480*4882a593Smuzhiyun 	{0x2510,0x0395},//SEQ_DATA_PORT
3481*4882a593Smuzhiyun 	{0x2510,0x054B},//SEQ_DATA_PORT
3482*4882a593Smuzhiyun 	{0x2510,0x1021},//SEQ_DATA_PORT
3483*4882a593Smuzhiyun 	{0x2510,0x0020},//SEQ_DATA_PORT
3484*4882a593Smuzhiyun 	{0x2510,0x1015},//SEQ_DATA_PORT
3485*4882a593Smuzhiyun 	{0x2510,0x1030},//SEQ_DATA_PORT
3486*4882a593Smuzhiyun 	{0x2510,0x00CF},//SEQ_DATA_PORT
3487*4882a593Smuzhiyun 	{0x2510,0xB146},//SEQ_DATA_PORT
3488*4882a593Smuzhiyun 	{0x2510,0xC290},//SEQ_DATA_PORT
3489*4882a593Smuzhiyun 	{0x2510,0x103C},//SEQ_DATA_PORT
3490*4882a593Smuzhiyun 	{0x2510,0xA882},//SEQ_DATA_PORT
3491*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
3492*4882a593Smuzhiyun 	{0x2510,0x00A9},//SEQ_DATA_PORT
3493*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
3494*4882a593Smuzhiyun 	{0x2510,0xB700},//SEQ_DATA_PORT
3495*4882a593Smuzhiyun 	{0x2510,0x0001},//SEQ_DATA_PORT
3496*4882a593Smuzhiyun 	{0x2510,0x02A2},//SEQ_DATA_PORT
3497*4882a593Smuzhiyun 	{0x2510,0x000A},//SEQ_DATA_PORT
3498*4882a593Smuzhiyun 	{0x2510,0x98BB},//SEQ_DATA_PORT
3499*4882a593Smuzhiyun 	{0x2510,0x203F},//SEQ_DATA_PORT
3500*4882a593Smuzhiyun 	{0x2510,0x0036},//SEQ_DATA_PORT
3501*4882a593Smuzhiyun 	{0x2510,0x1001},//SEQ_DATA_PORT
3502*4882a593Smuzhiyun 	{0x2510,0x99BE},//SEQ_DATA_PORT
3503*4882a593Smuzhiyun 	{0x2510,0x0139},//SEQ_DATA_PORT
3504*4882a593Smuzhiyun 	{0x2510,0x100A},//SEQ_DATA_PORT
3505*4882a593Smuzhiyun 	{0x2510,0x0040},//SEQ_DATA_PORT
3506*4882a593Smuzhiyun 	{0x2510,0x1022},//SEQ_DATA_PORT
3507*4882a593Smuzhiyun 	{0x2510,0x124C},//SEQ_DATA_PORT
3508*4882a593Smuzhiyun 	{0x2510,0x109F},//SEQ_DATA_PORT
3509*4882a593Smuzhiyun 	{0x2510,0x15A3},//SEQ_DATA_PORT
3510*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
3511*4882a593Smuzhiyun 	{0x2510,0x3081},//SEQ_DATA_PORT
3512*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
3513*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
3514*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3515*4882a593Smuzhiyun 	{0x2510,0x112A},//SEQ_DATA_PORT
3516*4882a593Smuzhiyun 	{0x2510,0x101D},//SEQ_DATA_PORT
3517*4882a593Smuzhiyun 	{0x2510,0x202B},//SEQ_DATA_PORT
3518*4882a593Smuzhiyun 	{0x2510,0x02B8},//SEQ_DATA_PORT
3519*4882a593Smuzhiyun 	{0x2510,0x10B8},//SEQ_DATA_PORT
3520*4882a593Smuzhiyun 	{0x2510,0x1136},//SEQ_DATA_PORT
3521*4882a593Smuzhiyun 	{0x2510,0x996B},//SEQ_DATA_PORT
3522*4882a593Smuzhiyun 	{0x2510,0x004C},//SEQ_DATA_PORT
3523*4882a593Smuzhiyun 	{0x2510,0x1039},//SEQ_DATA_PORT
3524*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
3525*4882a593Smuzhiyun 	{0x2510,0x00B5},//SEQ_DATA_PORT
3526*4882a593Smuzhiyun 	{0x2510,0x03C4},//SEQ_DATA_PORT
3527*4882a593Smuzhiyun 	{0x2510,0x1144},//SEQ_DATA_PORT
3528*4882a593Smuzhiyun 	{0x2510,0x1245},//SEQ_DATA_PORT
3529*4882a593Smuzhiyun 	{0x2510,0x9A7B},//SEQ_DATA_PORT
3530*4882a593Smuzhiyun 	{0x2510,0x002B},//SEQ_DATA_PORT
3531*4882a593Smuzhiyun 	{0x2510,0x30D0},//SEQ_DATA_PORT
3532*4882a593Smuzhiyun 	{0x2510,0x3141},//SEQ_DATA_PORT
3533*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3534*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3535*4882a593Smuzhiyun 	{0x2510,0x3142},//SEQ_DATA_PORT
3536*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3537*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3538*4882a593Smuzhiyun 	{0x2510,0x3110},//SEQ_DATA_PORT
3539*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3540*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3541*4882a593Smuzhiyun 	{0x2510,0x3120},//SEQ_DATA_PORT
3542*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3543*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3544*4882a593Smuzhiyun 	{0x2510,0x3144},//SEQ_DATA_PORT
3545*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3546*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3547*4882a593Smuzhiyun 	{0x2510,0x3148},//SEQ_DATA_PORT
3548*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3549*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3550*4882a593Smuzhiyun 	{0x2510,0x3182},//SEQ_DATA_PORT
3551*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3552*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3553*4882a593Smuzhiyun 	{0x2510,0x3184},//SEQ_DATA_PORT
3554*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3555*4882a593Smuzhiyun 	{0x2510,0x3190},//SEQ_DATA_PORT
3556*4882a593Smuzhiyun 	{0x2510,0x3041},//SEQ_DATA_PORT
3557*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3558*4882a593Smuzhiyun 	{0x2510,0x31A0},//SEQ_DATA_PORT
3559*4882a593Smuzhiyun 	{0x2510,0x3088},//SEQ_DATA_PORT
3560*4882a593Smuzhiyun 	{0x2510,0x2201},//SEQ_DATA_PORT
3561*4882a593Smuzhiyun 	{0x2510,0x807D},//SEQ_DATA_PORT
3562*4882a593Smuzhiyun 	{0x2510,0x2206},//SEQ_DATA_PORT
3563*4882a593Smuzhiyun 	{0x2510,0x8815},//SEQ_DATA_PORT
3564*4882a593Smuzhiyun 	{0x2510,0x8877},//SEQ_DATA_PORT
3565*4882a593Smuzhiyun 	{0x2510,0x0092},//SEQ_DATA_PORT
3566*4882a593Smuzhiyun 	{0x2510,0x220E},//SEQ_DATA_PORT
3567*4882a593Smuzhiyun 	{0x2510,0x2211},//SEQ_DATA_PORT
3568*4882a593Smuzhiyun 	{0x2510,0x8055},//SEQ_DATA_PORT
3569*4882a593Smuzhiyun 	{0x2510,0x3001},//SEQ_DATA_PORT
3570*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3571*4882a593Smuzhiyun 	{0x2510,0x8A61},//SEQ_DATA_PORT
3572*4882a593Smuzhiyun 	{0x2510,0x8801},//SEQ_DATA_PORT
3573*4882a593Smuzhiyun 	{0x2510,0x1092},//SEQ_DATA_PORT
3574*4882a593Smuzhiyun 	{0x2510,0x181F},//SEQ_DATA_PORT
3575*4882a593Smuzhiyun 	{0x2510,0x0B1F},//SEQ_DATA_PORT
3576*4882a593Smuzhiyun 	{0x2510,0x101F},//SEQ_DATA_PORT
3577*4882a593Smuzhiyun 	{0x2510,0x00B6},//SEQ_DATA_PORT
3578*4882a593Smuzhiyun 	{0x2510,0x0023},//SEQ_DATA_PORT
3579*4882a593Smuzhiyun 	{0x2510,0x00B9},//SEQ_DATA_PORT
3580*4882a593Smuzhiyun 	{0x2510,0x104C},//SEQ_DATA_PORT
3581*4882a593Smuzhiyun 	{0x2510,0x996E},//SEQ_DATA_PORT
3582*4882a593Smuzhiyun 	{0x2510,0x0140},//SEQ_DATA_PORT
3583*4882a593Smuzhiyun 	{0x2510,0x0257},//SEQ_DATA_PORT
3584*4882a593Smuzhiyun 	{0x2510,0x1035},//SEQ_DATA_PORT
3585*4882a593Smuzhiyun 	{0x2510,0x9F26},//SEQ_DATA_PORT
3586*4882a593Smuzhiyun 	{0x2510,0x1423},//SEQ_DATA_PORT
3587*4882a593Smuzhiyun 	{0x2510,0x0048},//SEQ_DATA_PORT
3588*4882a593Smuzhiyun 	{0x2510,0xC878},//SEQ_DATA_PORT
3589*4882a593Smuzhiyun 	{0x2510,0x200A},//SEQ_DATA_PORT
3590*4882a593Smuzhiyun 	{0x2510,0x1548},//SEQ_DATA_PORT
3591*4882a593Smuzhiyun 	{0x2510,0x0C49},//SEQ_DATA_PORT
3592*4882a593Smuzhiyun 	{0x2510,0x1149},//SEQ_DATA_PORT
3593*4882a593Smuzhiyun 	{0x2510,0x002A},//SEQ_DATA_PORT
3594*4882a593Smuzhiyun 	{0x2510,0x1057},//SEQ_DATA_PORT
3595*4882a593Smuzhiyun 	{0x2510,0x3281},//SEQ_DATA_PORT
3596*4882a593Smuzhiyun 	{0x2510,0x2000},//SEQ_DATA_PORT
3597*4882a593Smuzhiyun 	{0x2510,0x3044},//SEQ_DATA_PORT
3598*4882a593Smuzhiyun 	{0x2510,0x2001},//SEQ_DATA_PORT
3599*4882a593Smuzhiyun 	{0x2510,0xA020},//SEQ_DATA_PORT
3600*4882a593Smuzhiyun 	{0x2510,0x000C},//SEQ_DATA_PORT
3601*4882a593Smuzhiyun 	{0x2510,0x9825},//SEQ_DATA_PORT
3602*4882a593Smuzhiyun 	{0x2510,0x1040},//SEQ_DATA_PORT
3603*4882a593Smuzhiyun 	{0x2510,0x1054},//SEQ_DATA_PORT
3604*4882a593Smuzhiyun 	{0x2510,0xB06D},//SEQ_DATA_PORT
3605*4882a593Smuzhiyun 	{0x2510,0x0035},//SEQ_DATA_PORT
3606*4882a593Smuzhiyun 	{0x2510,0x004D},//SEQ_DATA_PORT
3607*4882a593Smuzhiyun 	{0x2510,0x9905},//SEQ_DATA_PORT
3608*4882a593Smuzhiyun 	{0x2510,0xB064},//SEQ_DATA_PORT
3609*4882a593Smuzhiyun 	{0x2510,0x99C5},//SEQ_DATA_PORT
3610*4882a593Smuzhiyun 	{0x2510,0x0047},//SEQ_DATA_PORT
3611*4882a593Smuzhiyun 	{0x2510,0xB920},//SEQ_DATA_PORT
3612*4882a593Smuzhiyun 	{0x2510,0x1447},//SEQ_DATA_PORT
3613*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3614*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3615*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3616*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3617*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3618*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3619*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3620*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3621*4882a593Smuzhiyun 	{0x2510,0x7FFF},//SEQ_DATA_PORT
3622*4882a593Smuzhiyun 	{0x31F8,0x0008},//MIPI_CONFIG_2
3623*4882a593Smuzhiyun 	{0x3C70,0x6828},//CALIB_ROWS
3624*4882a593Smuzhiyun 	{0x3092,0x0826},//ROW_NOISE_CONTROL
3625*4882a593Smuzhiyun 	{0x3428,0x0209},//SEQUENCER_CONTROL
3626*4882a593Smuzhiyun 	{0x3516,0xFF04},//DAC_LD_22_23
3627*4882a593Smuzhiyun 	{0x3526,0x6480},//DAC_LD_38_39
3628*4882a593Smuzhiyun 	{0x3504,0x8AAA},//DAC_LD_4_5
3629*4882a593Smuzhiyun 	{0x353C,0x220C},//DAC_LD_60_61
3630*4882a593Smuzhiyun 	{0x3536,0x4C6E},//DAC_LD_54_55
3631*4882a593Smuzhiyun 	{0x3D2A,0x0FFF},//T1_END_DEC_TH
3632*4882a593Smuzhiyun 	{0x3364,0x00EC},//DCG_TRIM
3633*4882a593Smuzhiyun 	{0x3512,0x8888},//DAC_LD_18_19
3634*4882a593Smuzhiyun 	{0x3514,0x888F},//DAC_LD_20_21
3635*4882a593Smuzhiyun 	{0x3520,0xFBF0},//DAC_LD_32_33
3636*4882a593Smuzhiyun 	{0x3524,0xB2A1},//DAC_LD_36_37
3637*4882a593Smuzhiyun 	{0x3528,0xCC84},//DAC_LD_40_41
3638*4882a593Smuzhiyun 	{0x3532,0x4C8E},//DAC_LD_50_51
3639*4882a593Smuzhiyun 	{0x3534,0x4E64},//DAC_LD_52_53
3640*4882a593Smuzhiyun 	{0x351E,0x5856},//DAC_LD_30_31
3641*4882a593Smuzhiyun 	{0x353E,0x98F2},//DAC_LD_62_63
3642*4882a593Smuzhiyun 	{0x352E,0x6A8A},//DAC_LD_46_47
3643*4882a593Smuzhiyun 	{0x3370,0x0211},//DBLC_CONTROL
3644*4882a593Smuzhiyun 	{0x3372,0x700F},//DBLC_FS0_CONTROL
3645*4882a593Smuzhiyun 	{0x3540,0x3597},//DAC_LD_64_65
3646*4882a593Smuzhiyun 	{0x58E2,0x0BE3},//COL_COUNT_VALUES1
3647*4882a593Smuzhiyun 	{0x58E4,0x18B4},//COL_COUNT_VALUES2
3648*4882a593Smuzhiyun 	{0x3522,0x7C97},//DAC_LD_34_35
3649*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
3650*4882a593Smuzhiyun 	{0x31D4,0x0042},//CLK_MEM_GATING_CTRL
3651*4882a593Smuzhiyun 	{0x352A,0x6F8F},//DAC_LD_42_43
3652*4882a593Smuzhiyun 	{0x3530,0x4A08},//DAC_LD_48_49
3653*4882a593Smuzhiyun 	{0x351A,0x5FFF},//DAC_LD_26_27
3654*4882a593Smuzhiyun 	{0x350E,0x39D9},//DAC_LD_14_15
3655*4882a593Smuzhiyun 	{0x3510,0x9988},//DAC_LD_16_17
3656*4882a593Smuzhiyun 	{0x3380,0x1FFF},//DBLC_OFFSET1
3657*4882a593Smuzhiyun 	{0x337A,0x1000},//DBLC_SCALE1
3658*4882a593Smuzhiyun 	{0x3092,0x0800},//ROW_NOISE_CONTROL
3659*4882a593Smuzhiyun 	{0x350A,0x0654},//DAC_LD_10_11
3660*4882a593Smuzhiyun 	{0x3364,0x00E0},//DCG_TRIM
3661*4882a593Smuzhiyun 	{0x591E,0x61AE},//ANALOG_GAIN_WR_DATA
3662*4882a593Smuzhiyun 	{0x591E,0x722C},//ANALOG_GAIN_WR_DATA
3663*4882a593Smuzhiyun 	{0x591E,0x82B8},//ANALOG_GAIN_WR_DATA
3664*4882a593Smuzhiyun 	{0x591E,0x92F6},//ANALOG_GAIN_WR_DATA
3665*4882a593Smuzhiyun 	{0x591E,0xA447},//ANALOG_GAIN_WR_DATA
3666*4882a593Smuzhiyun 	{0x591E,0xB66D},//ANALOG_GAIN_WR_DATA
3667*4882a593Smuzhiyun 	{0x591E,0xC6EA},//ANALOG_GAIN_WR_DATA
3668*4882a593Smuzhiyun 	{0x591E,0xDECD},//ANALOG_GAIN_WR_DATA
3669*4882a593Smuzhiyun 	{0x3532,0x4C8A},//DAC_LD_50_51
3670*4882a593Smuzhiyun 	{0x3534,0x4E60},//DAC_LD_52_53
3671*4882a593Smuzhiyun 	{0x353E,0x90F2},//DAC_LD_62_63
3672*4882a593Smuzhiyun 	{0x351A,0x4FFF},//DAC_LD_26_27
3673*4882a593Smuzhiyun 	{0x591C,0x00D7},//DGR_AMP_GAIN
3674*4882a593Smuzhiyun 	{0x3522,0x6097},//DAC_LD_34_35
3675*4882a593Smuzhiyun 	{0x5002,0x37C3},//T1_PIX_DEF_ID2
3676*4882a593Smuzhiyun 	{0x51CC,0x0149},//T1_NOISE_GAIN_THRESHOLD0
3677*4882a593Smuzhiyun 	{0x51D8,0x044D},//T1_NOISE_GAIN_THRESHOLD1
3678*4882a593Smuzhiyun 	{0x51CE,0x0700},//T1_NOISE_GAIN_THRESHOLD2
3679*4882a593Smuzhiyun 	{0x51D0,0x0001},//T1_NOISE_FLOOR0
3680*4882a593Smuzhiyun 	{0x51D2,0x0002},//T1_NOISE_FLOOR1
3681*4882a593Smuzhiyun 	{0x51D4,0x0003},//T1_NOISE_FLOOR2
3682*4882a593Smuzhiyun 	{0x51D6,0x0004},//T1_NOISE_FLOOR3
3683*4882a593Smuzhiyun 	{0x5202,0x37C3},//T2_PIX_DEF_ID2
3684*4882a593Smuzhiyun 	{0x51EA,0x0149},//T2_NOISE_GAIN_THRESHOLD0
3685*4882a593Smuzhiyun 	{0x51FC,0x044D},//T2_NOISE_GAIN_THRESHOLD1
3686*4882a593Smuzhiyun 	{0x51EC,0x0700},//T2_NOISE_GAIN_THRESHOLD2
3687*4882a593Smuzhiyun 	{0x51EE,0x0001},//T2_NOISE_FLOOR0
3688*4882a593Smuzhiyun 	{0x51F0,0x0002},//T2_NOISE_FLOOR1
3689*4882a593Smuzhiyun 	{0x51F2,0x0003},//T2_NOISE_FLOOR2
3690*4882a593Smuzhiyun 	{0x51F4,0x0004},//T2_NOISE_FLOOR3
3691*4882a593Smuzhiyun 	{0x5402,0x37C3},//T4_PIX_DEF_ID2
3692*4882a593Smuzhiyun 	{0x5560,0x0149},//T4_NOISE_GAIN_THRESHOLD0
3693*4882a593Smuzhiyun 	{0x556C,0x044D},//T4_NOISE_GAIN_THRESHOLD1
3694*4882a593Smuzhiyun 	{0x5562,0x0700},//T4_NOISE_GAIN_THRESHOLD2
3695*4882a593Smuzhiyun 	{0x5564,0x0001},//T4_NOISE_FLOOR0
3696*4882a593Smuzhiyun 	{0x5566,0x0002},//T4_NOISE_FLOOR1
3697*4882a593Smuzhiyun 	{0x5568,0x0003},//T4_NOISE_FLOOR2
3698*4882a593Smuzhiyun 	{0x556A,0x0004},//T4_NOISE_FLOOR3
3699*4882a593Smuzhiyun 	{0x31E0,0x0001},//PIX_DEF_ID
3700*4882a593Smuzhiyun 	{0x5000,0x0080},//T1_PIX_DEF_ID
3701*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
3702*4882a593Smuzhiyun 	{0x5000,0x0180},//T1_PIX_DEF_ID
3703*4882a593Smuzhiyun 	{0x5200,0x0080},//T2_PIX_DEF_ID
3704*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
3705*4882a593Smuzhiyun 	{0x5200,0x0180},//T2_PIX_DEF_ID
3706*4882a593Smuzhiyun 	{0x5400,0x0080},//T4_PIX_DEF_ID
3707*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
3708*4882a593Smuzhiyun 	{0x5400,0x0180},//T4_PIX_DEF_ID
3709*4882a593Smuzhiyun 	{0x5000,0x1180},//T1_PIX_DEF_ID
3710*4882a593Smuzhiyun 	{0x50A2,0x2553},//BMT0
3711*4882a593Smuzhiyun 	{0x50A4,0xDFD4},//BMT1
3712*4882a593Smuzhiyun 	{0x50A6,0x030F},//SINGLEK_FACTOR0
3713*4882a593Smuzhiyun 	{0x50A6,0x0F0F},//SINGLEK_FACTOR0
3714*4882a593Smuzhiyun 	{0x50A8,0x030F},//SINGLEK_FACTOR1
3715*4882a593Smuzhiyun 	{0x50A8,0x0F0F},//SINGLEK_FACTOR1
3716*4882a593Smuzhiyun 	{0x50AA,0x030F},//SINGLEK_FACTOR2
3717*4882a593Smuzhiyun 	{0x50AA,0x050F},//SINGLEK_FACTOR2
3718*4882a593Smuzhiyun 	{0x50AC,0x0301},//CROSS_FACTOR0
3719*4882a593Smuzhiyun 	{0x50AC,0x0101},//CROSS_FACTOR0
3720*4882a593Smuzhiyun 	{0x50AE,0x0301},//CROSS_FACTOR1
3721*4882a593Smuzhiyun 	{0x50AE,0x0101},//CROSS_FACTOR1
3722*4882a593Smuzhiyun 	{0x50B0,0x0301},//CROSS_FACTOR2
3723*4882a593Smuzhiyun 	{0x50B0,0x0101},//CROSS_FACTOR2
3724*4882a593Smuzhiyun 	{0x50B2,0x03FF},//SINGLE_MAX_FACTOR
3725*4882a593Smuzhiyun 	{0x50B4,0x030F},//COUPLE_FACTOR0
3726*4882a593Smuzhiyun 	{0x50B4,0x0F0F},//COUPLE_FACTOR0
3727*4882a593Smuzhiyun 	{0x50B6,0x030F},//COUPLE_FACTOR1
3728*4882a593Smuzhiyun 	{0x50B6,0x0F0F},//COUPLE_FACTOR1
3729*4882a593Smuzhiyun 	{0x50B8,0x030F},//COUPLE_FACTOR2
3730*4882a593Smuzhiyun 	{0x50B8,0x050F},//COUPLE_FACTOR2
3731*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
3732*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
3733*4882a593Smuzhiyun 	{0x3082,0x0001},//OPERATION_MODE_CTRL
3734*4882a593Smuzhiyun 	{0x30BA,0x0024},//DIGITAL_CTRL
3735*4882a593Smuzhiyun 	{0x31AE,0x0204},//SERIAL_FORMAT
3736*4882a593Smuzhiyun 	{0x31AC,0x0C0C},//DATA_FORMAT_BITS
3737*4882a593Smuzhiyun 	{0x300C,0x0482},//LINE_LENGTH_PCK_
3738*4882a593Smuzhiyun 	{0x300A,0x0944},//FRAME_LENGTH_LINES_
3739*4882a593Smuzhiyun 	{0x3012,0x093E},//COARSE_INTEGRATION_TIME_
3740*4882a593Smuzhiyun 	{0x5914,0x4012},//SENSOR_GAIN_TABLE_SEL
3741*4882a593Smuzhiyun 	{REG_DELAY,100},
3742*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
3743*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
3744*4882a593Smuzhiyun 	{0x5910,0x7091},//SENSOR_GAIN_REG1
3745*4882a593Smuzhiyun 	{0x5910,0x689C},//SENSOR_GAIN_REG1
3746*4882a593Smuzhiyun 	{0x5910,0x8885},//SENSOR_GAIN_REG1
3747*4882a593Smuzhiyun 	{0x5910,0x98AD},//SENSOR_GAIN_REG1
3748*4882a593Smuzhiyun 	{0x5910,0xA8A9},//SENSOR_GAIN_REG1
3749*4882a593Smuzhiyun 	{0x5910,0xC894},//SENSOR_GAIN_REG1
3750*4882a593Smuzhiyun 	{0x5910,0xC8D1},//SENSOR_GAIN_REG1
3751*4882a593Smuzhiyun 	{0x5910,0xD88A},//SENSOR_GAIN_REG1
3752*4882a593Smuzhiyun 	{0x5910,0xD8C3},//SENSOR_GAIN_REG1
3753*4882a593Smuzhiyun 	{0x5910,0xD915},//SENSOR_GAIN_REG1
3754*4882a593Smuzhiyun 	{0x5910,0xD988},//SENSOR_GAIN_REG1
3755*4882a593Smuzhiyun 	{0x5910,0xDA2A},//SENSOR_GAIN_REG1
3756*4882a593Smuzhiyun 	{0x5910,0xDB0E},//SENSOR_GAIN_REG1
3757*4882a593Smuzhiyun 	{0x5910,0xDC53},//SENSOR_GAIN_REG1
3758*4882a593Smuzhiyun 	{0x5910,0x608A},//SENSOR_GAIN_REG1
3759*4882a593Smuzhiyun 	{0x5910,0xC919},//SENSOR_GAIN_REG1
3760*4882a593Smuzhiyun 	{0x5910,0xCA00},//SENSOR_GAIN_REG1
3761*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
3762*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
3763*4882a593Smuzhiyun 	{0x5910,0x0000},//SENSOR_GAIN_REG1
3764*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
3765*4882a593Smuzhiyun 	{0x5910,0x0001},//SENSOR_GAIN_REG1
3766*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3767*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3768*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3769*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3770*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3771*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3772*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3773*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3774*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3775*4882a593Smuzhiyun 	{0x5910,0x0004},//SENSOR_GAIN_REG1
3776*4882a593Smuzhiyun 	{0x5910,0x0002},//SENSOR_GAIN_REG1
3777*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3778*4882a593Smuzhiyun 	{0x5910,0x0003},//SENSOR_GAIN_REG1
3779*4882a593Smuzhiyun 	{0x5910,0x5A8B},//SENSOR_GAIN_REG1
3780*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3781*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3782*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3783*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3784*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3785*4882a593Smuzhiyun 	{0x5910,0x0005},//SENSOR_GAIN_REG1
3786*4882a593Smuzhiyun 	{0x5910,0x0006},//SENSOR_GAIN_REG1
3787*4882a593Smuzhiyun 	{0x5910,0x0007},//SENSOR_GAIN_REG1
3788*4882a593Smuzhiyun 	{0x5910,0x9A8B},//SENSOR_GAIN_REG1
3789*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3790*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3791*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3792*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3793*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3794*4882a593Smuzhiyun 	{0x5910,0x0015},//SENSOR_GAIN_REG1
3795*4882a593Smuzhiyun 	{0x5910,0x0016},//SENSOR_GAIN_REG1
3796*4882a593Smuzhiyun 	{0x5910,0x0017},//SENSOR_GAIN_REG1
3797*4882a593Smuzhiyun 	{0x5910,0xDA8B},//SENSOR_GAIN_REG1
3798*4882a593Smuzhiyun 	{0x5910,0xFF04},//SENSOR_GAIN_REG1
3799*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3800*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3801*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3802*4882a593Smuzhiyun 	{0x5910,0xF704},//SENSOR_GAIN_REG1
3803*4882a593Smuzhiyun 	{0x5910,0x0025},//SENSOR_GAIN_REG1
3804*4882a593Smuzhiyun 	{0x5910,0x0026},//SENSOR_GAIN_REG1
3805*4882a593Smuzhiyun 	{0x5910,0x0027},//SENSOR_GAIN_REG1
3806*4882a593Smuzhiyun 	{0x5910,0x59B9},//SENSOR_GAIN_REG1
3807*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3808*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3809*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3810*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3811*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3812*4882a593Smuzhiyun 	{0x5910,0x0035},//SENSOR_GAIN_REG1
3813*4882a593Smuzhiyun 	{0x5910,0x0036},//SENSOR_GAIN_REG1
3814*4882a593Smuzhiyun 	{0x5910,0x0037},//SENSOR_GAIN_REG1
3815*4882a593Smuzhiyun 	{0x5910,0x99B9},//SENSOR_GAIN_REG1
3816*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3817*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3818*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3819*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3820*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3821*4882a593Smuzhiyun 	{0x5910,0x0045},//SENSOR_GAIN_REG1
3822*4882a593Smuzhiyun 	{0x5910,0x0046},//SENSOR_GAIN_REG1
3823*4882a593Smuzhiyun 	{0x5910,0x0047},//SENSOR_GAIN_REG1
3824*4882a593Smuzhiyun 	{0x5910,0xD9B9},//SENSOR_GAIN_REG1
3825*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3826*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3827*4882a593Smuzhiyun 	{0x5910,0x700F},//SENSOR_GAIN_REG1
3828*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3829*4882a593Smuzhiyun 	{0x5910,0x7F0F},//SENSOR_GAIN_REG1
3830*4882a593Smuzhiyun 	{0x5910,0x0055},//SENSOR_GAIN_REG1
3831*4882a593Smuzhiyun 	{0x5910,0x0056},//SENSOR_GAIN_REG1
3832*4882a593Smuzhiyun 	{0x5910,0x0057},//SENSOR_GAIN_REG1
3833*4882a593Smuzhiyun 	{0x5910,0x9A85},//SENSOR_GAIN_REG1
3834*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3835*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3836*4882a593Smuzhiyun 	{0x5910,0x0684},//SENSOR_GAIN_REG1
3837*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3838*4882a593Smuzhiyun 	{0x5910,0x0654},//SENSOR_GAIN_REG1
3839*4882a593Smuzhiyun 	{0x5910,0x0065},//SENSOR_GAIN_REG1
3840*4882a593Smuzhiyun 	{0x5910,0x0066},//SENSOR_GAIN_REG1
3841*4882a593Smuzhiyun 	{0x5910,0x0067},//SENSOR_GAIN_REG1
3842*4882a593Smuzhiyun 	{0x5910,0x59BD},//SENSOR_GAIN_REG1
3843*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
3844*4882a593Smuzhiyun 	{0x5910,0x0C00},//SENSOR_GAIN_REG1
3845*4882a593Smuzhiyun 	{0x5910,0x0F00},//SENSOR_GAIN_REG1
3846*4882a593Smuzhiyun 	{0x5910,0x1000},//SENSOR_GAIN_REG1
3847*4882a593Smuzhiyun 	{0x5910,0x10F0},//SENSOR_GAIN_REG1
3848*4882a593Smuzhiyun 	{0x5910,0x0075},//SENSOR_GAIN_REG1
3849*4882a593Smuzhiyun 	{0x5910,0x0076},//SENSOR_GAIN_REG1
3850*4882a593Smuzhiyun 	{0x5910,0x0077},//SENSOR_GAIN_REG1
3851*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
3852*4882a593Smuzhiyun 	{0x5912,0x7091},//SENSOR_GAIN_REG2
3853*4882a593Smuzhiyun 	{0x5912,0x689C},//SENSOR_GAIN_REG2
3854*4882a593Smuzhiyun 	{0x5912,0x8885},//SENSOR_GAIN_REG2
3855*4882a593Smuzhiyun 	{0x5912,0x98AD},//SENSOR_GAIN_REG2
3856*4882a593Smuzhiyun 	{0x5912,0xA8A9},//SENSOR_GAIN_REG2
3857*4882a593Smuzhiyun 	{0x5912,0xC894},//SENSOR_GAIN_REG2
3858*4882a593Smuzhiyun 	{0x5912,0xC8D1},//SENSOR_GAIN_REG2
3859*4882a593Smuzhiyun 	{0x5912,0xC927},//SENSOR_GAIN_REG2
3860*4882a593Smuzhiyun 	{0x5912,0xC9A0},//SENSOR_GAIN_REG2
3861*4882a593Smuzhiyun 	{0x5912,0xCA4C},//SENSOR_GAIN_REG2
3862*4882a593Smuzhiyun 	{0x5912,0xCB3F},//SENSOR_GAIN_REG2
3863*4882a593Smuzhiyun 	{0x5912,0xCC97},//SENSOR_GAIN_REG2
3864*4882a593Smuzhiyun 	{0x5912,0xCE7C},//SENSOR_GAIN_REG2
3865*4882a593Smuzhiyun 	{0x5912,0xCFFF},//SENSOR_GAIN_REG2
3866*4882a593Smuzhiyun 	{0x5912,0x608A},//SENSOR_GAIN_REG2
3867*4882a593Smuzhiyun 	{0x5912,0xC8F0},//SENSOR_GAIN_REG2
3868*4882a593Smuzhiyun 	{0x5912,0xCA00},//SENSOR_GAIN_REG2
3869*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
3870*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
3871*4882a593Smuzhiyun 	{0x5912,0x0000},//SENSOR_GAIN_REG2
3872*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
3873*4882a593Smuzhiyun 	{0x5912,0x0001},//SENSOR_GAIN_REG2
3874*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3875*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3876*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3877*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3878*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3879*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3880*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3881*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3882*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3883*4882a593Smuzhiyun 	{0x5912,0x0004},//SENSOR_GAIN_REG2
3884*4882a593Smuzhiyun 	{0x5912,0x0002},//SENSOR_GAIN_REG2
3885*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3886*4882a593Smuzhiyun 	{0x5912,0x0003},//SENSOR_GAIN_REG2
3887*4882a593Smuzhiyun 	{0x5912,0x5A8B},//SENSOR_GAIN_REG2
3888*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3889*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3890*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3891*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3892*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3893*4882a593Smuzhiyun 	{0x5912,0x0005},//SENSOR_GAIN_REG2
3894*4882a593Smuzhiyun 	{0x5912,0x0006},//SENSOR_GAIN_REG2
3895*4882a593Smuzhiyun 	{0x5912,0x0007},//SENSOR_GAIN_REG2
3896*4882a593Smuzhiyun 	{0x5912,0x9A8B},//SENSOR_GAIN_REG2
3897*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3898*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3899*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3900*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3901*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3902*4882a593Smuzhiyun 	{0x5912,0x0015},//SENSOR_GAIN_REG2
3903*4882a593Smuzhiyun 	{0x5912,0x0016},//SENSOR_GAIN_REG2
3904*4882a593Smuzhiyun 	{0x5912,0x0017},//SENSOR_GAIN_REG2
3905*4882a593Smuzhiyun 	{0x5912,0xDA8B},//SENSOR_GAIN_REG2
3906*4882a593Smuzhiyun 	{0x5912,0xFF04},//SENSOR_GAIN_REG2
3907*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3908*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3909*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3910*4882a593Smuzhiyun 	{0x5912,0xF704},//SENSOR_GAIN_REG2
3911*4882a593Smuzhiyun 	{0x5912,0x0025},//SENSOR_GAIN_REG2
3912*4882a593Smuzhiyun 	{0x5912,0x0026},//SENSOR_GAIN_REG2
3913*4882a593Smuzhiyun 	{0x5912,0x0027},//SENSOR_GAIN_REG2
3914*4882a593Smuzhiyun 	{0x5912,0x59B9},//SENSOR_GAIN_REG2
3915*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3916*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3917*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3918*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3919*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3920*4882a593Smuzhiyun 	{0x5912,0x0035},//SENSOR_GAIN_REG2
3921*4882a593Smuzhiyun 	{0x5912,0x0036},//SENSOR_GAIN_REG2
3922*4882a593Smuzhiyun 	{0x5912,0x0037},//SENSOR_GAIN_REG2
3923*4882a593Smuzhiyun 	{0x5912,0x99B9},//SENSOR_GAIN_REG2
3924*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3925*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3926*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3927*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3928*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3929*4882a593Smuzhiyun 	{0x5912,0x0045},//SENSOR_GAIN_REG2
3930*4882a593Smuzhiyun 	{0x5912,0x0046},//SENSOR_GAIN_REG2
3931*4882a593Smuzhiyun 	{0x5912,0x0047},//SENSOR_GAIN_REG2
3932*4882a593Smuzhiyun 	{0x5912,0xD9B9},//SENSOR_GAIN_REG2
3933*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3934*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3935*4882a593Smuzhiyun 	{0x5912,0x700F},//SENSOR_GAIN_REG2
3936*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3937*4882a593Smuzhiyun 	{0x5912,0x7F0F},//SENSOR_GAIN_REG2
3938*4882a593Smuzhiyun 	{0x5912,0x0055},//SENSOR_GAIN_REG2
3939*4882a593Smuzhiyun 	{0x5912,0x0056},//SENSOR_GAIN_REG2
3940*4882a593Smuzhiyun 	{0x5912,0x0057},//SENSOR_GAIN_REG2
3941*4882a593Smuzhiyun 	{0x5912,0x9A85},//SENSOR_GAIN_REG2
3942*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3943*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3944*4882a593Smuzhiyun 	{0x5912,0x0684},//SENSOR_GAIN_REG2
3945*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3946*4882a593Smuzhiyun 	{0x5912,0x0654},//SENSOR_GAIN_REG2
3947*4882a593Smuzhiyun 	{0x5912,0x0065},//SENSOR_GAIN_REG2
3948*4882a593Smuzhiyun 	{0x5912,0x0066},//SENSOR_GAIN_REG2
3949*4882a593Smuzhiyun 	{0x5912,0x0067},//SENSOR_GAIN_REG2
3950*4882a593Smuzhiyun 	{0x5912,0x59BD},//SENSOR_GAIN_REG2
3951*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
3952*4882a593Smuzhiyun 	{0x5912,0x0C00},//SENSOR_GAIN_REG2
3953*4882a593Smuzhiyun 	{0x5912,0x0F00},//SENSOR_GAIN_REG2
3954*4882a593Smuzhiyun 	{0x5912,0x1000},//SENSOR_GAIN_REG2
3955*4882a593Smuzhiyun 	{0x5912,0x10F0},//SENSOR_GAIN_REG2
3956*4882a593Smuzhiyun 	{0x5912,0x0075},//SENSOR_GAIN_REG2
3957*4882a593Smuzhiyun 	{0x5912,0x0076},//SENSOR_GAIN_REG2
3958*4882a593Smuzhiyun 	{0x5912,0x0077},//SENSOR_GAIN_REG2
3959*4882a593Smuzhiyun 	{0x5914,0x4002},//SENSOR_GAIN_TABLE_SEL
3960*4882a593Smuzhiyun 	{0x5900,0x0000},//SENSOR_GAIN
3961*4882a593Smuzhiyun 
3962*4882a593Smuzhiyun 	{REG_NULL, 0x00},
3963*4882a593Smuzhiyun };
3964*4882a593Smuzhiyun static const s64 link_freq_menu_items[] = {
3965*4882a593Smuzhiyun 	MIPI_FREQ_492M,
3966*4882a593Smuzhiyun 	MIPI_FREQ_657M,
3967*4882a593Smuzhiyun 	MIPI_FREQ_823M,
3968*4882a593Smuzhiyun 	MIPI_FREQ_986M,
3969*4882a593Smuzhiyun };
3970*4882a593Smuzhiyun #define MIPI_FREQ_492M_INDEX 0
3971*4882a593Smuzhiyun #define MIPI_FREQ_657M_INDEX 1
3972*4882a593Smuzhiyun #define MIPI_FREQ_823M_INDEX 2
3973*4882a593Smuzhiyun #define MIPI_FREQ_986M_INDEX 3
3974*4882a593Smuzhiyun #define MIPI_FREQ_MAX_INDEX  4
3975*4882a593Smuzhiyun /*
3976*4882a593Smuzhiyun  * The width and height must be configured to be
3977*4882a593Smuzhiyun  * the same as the current output resolution of the sensor.
3978*4882a593Smuzhiyun  * The input width of the isp needs to be 16 aligned.
3979*4882a593Smuzhiyun  * The input height of the isp needs to be 8 aligned.
3980*4882a593Smuzhiyun  * If the width or height does not meet the alignment rules,
3981*4882a593Smuzhiyun  * you can configure the cropping parameters with the following function to
3982*4882a593Smuzhiyun  * crop out the appropriate resolution.
3983*4882a593Smuzhiyun  * struct v4l2_subdev_pad_ops {
3984*4882a593Smuzhiyun  *	.get_selection
3985*4882a593Smuzhiyun  * }
3986*4882a593Smuzhiyun  */
3987*4882a593Smuzhiyun 
3988*4882a593Smuzhiyun /* Config resolution ,LLPCLK, FLL, exposure time,fps, MIPI channel config, HDR mode , open.k */
3989*4882a593Smuzhiyun static const struct ar0822_mode supported_modes[] = {
3990*4882a593Smuzhiyun /*	{
3991*4882a593Smuzhiyun 		.bus_fmt = MEDIA_BUS_FMT_SGRBG12_1X12,
3992*4882a593Smuzhiyun 		.width = 3840,
3993*4882a593Smuzhiyun 		.height = 2160,
3994*4882a593Smuzhiyun 		.max_fps = {
3995*4882a593Smuzhiyun 			.numerator = 10000,
3996*4882a593Smuzhiyun 			.denominator = 600000,
3997*4882a593Smuzhiyun 		},
3998*4882a593Smuzhiyun 		.exp_def = 0x0240,
3999*4882a593Smuzhiyun 		.hts_def = 0x4330,//for linear mode, hblank is 4*LINE_LENGTH_PCK_-WIDTH,so hts is 4*LINE_LENGTH_PCK_. not used param by RK.
4000*4882a593Smuzhiyun 		.vts_def = 0x0944,//used by AEC, should set correctly.
4001*4882a593Smuzhiyun 		.reg_list = ar0822_linear_60fps_regs,
4002*4882a593Smuzhiyun 		.hdr_mode = NO_HDR,
4003*4882a593Smuzhiyun 		.mipi_freq = MIPI_FREQ_986M_INDEX,
4004*4882a593Smuzhiyun 		.mipi_rate = MIPI_FREQ_986M/AR0822_BPP12*2*AR0822_LANES,
4005*4882a593Smuzhiyun 		.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0,
4006*4882a593Smuzhiyun 	},*/
4007*4882a593Smuzhiyun 	{
4008*4882a593Smuzhiyun 		.bus_fmt = MEDIA_BUS_FMT_SGRBG12_1X12,
4009*4882a593Smuzhiyun 		.width = 3840,
4010*4882a593Smuzhiyun 		.height = 2160,
4011*4882a593Smuzhiyun 		.max_fps = {
4012*4882a593Smuzhiyun 			.numerator = 10000,
4013*4882a593Smuzhiyun 			.denominator = 300000,
4014*4882a593Smuzhiyun 		},
4015*4882a593Smuzhiyun 		.exp_def = 0x0240,
4016*4882a593Smuzhiyun 		.hts_def = 0x4330,//for linear mode, hblank is 4*LINE_LENGTH_PCK_-WIDTH,so hts is 4*LINE_LENGTH_PCK_. not used param by RK.
4017*4882a593Smuzhiyun 		.vts_def = 0x09F3,//used by AEC, should set correctly.
4018*4882a593Smuzhiyun 		.reg_list = ar0822_linear_global_regs,
4019*4882a593Smuzhiyun 		.hdr_mode = NO_HDR,
4020*4882a593Smuzhiyun 		.mipi_freq = MIPI_FREQ_492M_INDEX,
4021*4882a593Smuzhiyun 		.mipi_rate = MIPI_FREQ_492M / AR0822_BPP12 * 2 * AR0822_LANES,
4022*4882a593Smuzhiyun 		.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0,
4023*4882a593Smuzhiyun 	},
4024*4882a593Smuzhiyun 
4025*4882a593Smuzhiyun 	{
4026*4882a593Smuzhiyun 		.bus_fmt = MEDIA_BUS_FMT_SGRBG12_1X12,
4027*4882a593Smuzhiyun 		.width = 3840,
4028*4882a593Smuzhiyun 		.height = 2160,
4029*4882a593Smuzhiyun 		.max_fps = {
4030*4882a593Smuzhiyun 			.numerator = 10000,
4031*4882a593Smuzhiyun 			.denominator = 200000,
4032*4882a593Smuzhiyun 		},
4033*4882a593Smuzhiyun 		.exp_def = 0x0240,
4034*4882a593Smuzhiyun 		.hts_def = 0x0E7C*2,//
4035*4882a593Smuzhiyun 		.vts_def = 0x9b8,//0x0888,//
4036*4882a593Smuzhiyun 		.reg_list = ar0822_hdr12bit_3840x2160_20fps_regs,
4037*4882a593Smuzhiyun 		.hdr_mode = HDR_X2,
4038*4882a593Smuzhiyun 		.mipi_freq = MIPI_FREQ_657M_INDEX,
4039*4882a593Smuzhiyun 		.mipi_rate = MIPI_FREQ_657M / AR0822_BPP12 * 2 *AR0822_LANES,
4040*4882a593Smuzhiyun 		.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_1,
4041*4882a593Smuzhiyun 		.vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_0,//L->csi wr0
4042*4882a593Smuzhiyun 		.vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_1,
4043*4882a593Smuzhiyun 		.vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2
4044*4882a593Smuzhiyun 	},
4045*4882a593Smuzhiyun 
4046*4882a593Smuzhiyun 	{
4047*4882a593Smuzhiyun 		.bus_fmt = MEDIA_BUS_FMT_SGRBG12_1X12,
4048*4882a593Smuzhiyun 		.width = 3840,
4049*4882a593Smuzhiyun 		.height = 2160,
4050*4882a593Smuzhiyun 		.max_fps = {
4051*4882a593Smuzhiyun 			.numerator = 10000,
4052*4882a593Smuzhiyun 			.denominator = 250000,
4053*4882a593Smuzhiyun 		},
4054*4882a593Smuzhiyun 		.exp_def = 0x0080,
4055*4882a593Smuzhiyun 		.hts_def = 0x0B98*4-3840,//
4056*4882a593Smuzhiyun 		.vts_def = 0x0980,//0x0888,//
4057*4882a593Smuzhiyun 		.reg_list = ar0822_hdr12bit_3840x2160_25fps_regs,
4058*4882a593Smuzhiyun 		.hdr_mode = HDR_X2,
4059*4882a593Smuzhiyun 		.mipi_freq = MIPI_FREQ_823M_INDEX,
4060*4882a593Smuzhiyun 		.mipi_rate = MIPI_FREQ_823M / AR0822_BPP12 * 2 * AR0822_LANES,
4061*4882a593Smuzhiyun 		.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_1,
4062*4882a593Smuzhiyun 		.vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_0,
4063*4882a593Smuzhiyun 		.vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr0
4064*4882a593Smuzhiyun 		.vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2
4065*4882a593Smuzhiyun 	},
4066*4882a593Smuzhiyun 
4067*4882a593Smuzhiyun 	{
4068*4882a593Smuzhiyun 		.bus_fmt = MEDIA_BUS_FMT_SGRBG12_1X12,
4069*4882a593Smuzhiyun 		.width = 3840,
4070*4882a593Smuzhiyun 		.height = 2160,
4071*4882a593Smuzhiyun 		.max_fps = {
4072*4882a593Smuzhiyun 			.numerator = 10000,
4073*4882a593Smuzhiyun 			.denominator = 300000,
4074*4882a593Smuzhiyun 		},
4075*4882a593Smuzhiyun 		.exp_def = 0x0240,
4076*4882a593Smuzhiyun 		.hts_def = 0x3430,//for HDR, hblank is 4*LINE_LENGTH_PCK_-WIDTH*2, so hts is 4*LINE_LENGTH_PCK_-WIDTH. param not used by RK.
4077*4882a593Smuzhiyun 		.vts_def = 0x9F3,//should be set correctly,
4078*4882a593Smuzhiyun 		.reg_list = ar0822_hdr12bit_3840x2160_30fps_regs,
4079*4882a593Smuzhiyun 		.hdr_mode = HDR_X2,
4080*4882a593Smuzhiyun 		.mipi_freq = MIPI_FREQ_986M_INDEX,
4081*4882a593Smuzhiyun 		.mipi_rate = MIPI_FREQ_986M / AR0822_BPP12 * 2 * AR0822_LANES,
4082*4882a593Smuzhiyun 		.vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_0,
4083*4882a593Smuzhiyun 		.vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr0
4084*4882a593Smuzhiyun 	},
4085*4882a593Smuzhiyun 
4086*4882a593Smuzhiyun 
4087*4882a593Smuzhiyun };
4088*4882a593Smuzhiyun 
4089*4882a593Smuzhiyun 
4090*4882a593Smuzhiyun /* use ar0822_enable_test_pattern to config test pattern mode here, open.k */
4091*4882a593Smuzhiyun static const char * const ar0822_test_pattern_menu[] = {
4092*4882a593Smuzhiyun 	"Disabled",
4093*4882a593Smuzhiyun 	"Vertical Color Bar Type 1",
4094*4882a593Smuzhiyun 	"Vertical Color Bar Type 2",
4095*4882a593Smuzhiyun 	"Vertical Color Bar Type 3",
4096*4882a593Smuzhiyun 	"Vertical Color Bar Type 4"
4097*4882a593Smuzhiyun };
4098*4882a593Smuzhiyun 
4099*4882a593Smuzhiyun static int __ar0822_power_on(struct ar0822 *ar0822);
4100*4882a593Smuzhiyun 
4101*4882a593Smuzhiyun /* Write registers up to 4 at a time */
ar0822_write_reg(struct i2c_client * client,u16 reg,u32 len,u32 val)4102*4882a593Smuzhiyun static int ar0822_write_reg(struct i2c_client *client, u16 reg,
4103*4882a593Smuzhiyun 			    u32 len, u32 val)
4104*4882a593Smuzhiyun {
4105*4882a593Smuzhiyun 	u32 buf_i, val_i;
4106*4882a593Smuzhiyun 	u8 buf[6];
4107*4882a593Smuzhiyun 	u8 *val_p;
4108*4882a593Smuzhiyun 	__be32 val_be;
4109*4882a593Smuzhiyun 
4110*4882a593Smuzhiyun 	if (len > 4)
4111*4882a593Smuzhiyun 		return -EINVAL;
4112*4882a593Smuzhiyun 
4113*4882a593Smuzhiyun 	buf[0] = reg >> 8;
4114*4882a593Smuzhiyun 	buf[1] = reg & 0xff;
4115*4882a593Smuzhiyun 
4116*4882a593Smuzhiyun 	val_be = cpu_to_be32(val);
4117*4882a593Smuzhiyun 	val_p = (u8 *)&val_be;
4118*4882a593Smuzhiyun 	buf_i = 2;
4119*4882a593Smuzhiyun 	val_i = 4 - len;
4120*4882a593Smuzhiyun 
4121*4882a593Smuzhiyun 	while (val_i < 4)
4122*4882a593Smuzhiyun 		buf[buf_i++] = val_p[val_i++];
4123*4882a593Smuzhiyun 
4124*4882a593Smuzhiyun 	if (i2c_master_send(client, buf, len + 2) != len + 2)
4125*4882a593Smuzhiyun 		return -EIO;
4126*4882a593Smuzhiyun 
4127*4882a593Smuzhiyun 	return 0;
4128*4882a593Smuzhiyun }
4129*4882a593Smuzhiyun 
ar0822_write_array(struct i2c_client * client,const struct regval * regs)4130*4882a593Smuzhiyun static int ar0822_write_array(struct i2c_client *client,
4131*4882a593Smuzhiyun 			       const struct regval *regs)
4132*4882a593Smuzhiyun {
4133*4882a593Smuzhiyun 	u32 i;
4134*4882a593Smuzhiyun 	int ret = 0;
4135*4882a593Smuzhiyun 
4136*4882a593Smuzhiyun 	for (i = 0; ret == 0 && regs[i].addr != REG_NULL; i++) {
4137*4882a593Smuzhiyun 		if (unlikely(regs[i].addr == REG_DELAY))
4138*4882a593Smuzhiyun 			usleep_range(regs[i].val, regs[i].val * 2);
4139*4882a593Smuzhiyun 		else
4140*4882a593Smuzhiyun 			ret |= ar0822_write_reg(client, regs[i].addr,
4141*4882a593Smuzhiyun 				AR0822_REG_VALUE_16BIT, regs[i].val);
4142*4882a593Smuzhiyun 	}
4143*4882a593Smuzhiyun 	return ret;
4144*4882a593Smuzhiyun }
4145*4882a593Smuzhiyun 
4146*4882a593Smuzhiyun /* Read registers up to 4 at a time */
ar0822_read_reg(struct i2c_client * client,u16 reg,unsigned int len,u32 * val)4147*4882a593Smuzhiyun static int ar0822_read_reg(struct i2c_client *client,
4148*4882a593Smuzhiyun 			    u16 reg,
4149*4882a593Smuzhiyun 			    unsigned int len,
4150*4882a593Smuzhiyun 			    u32 *val)
4151*4882a593Smuzhiyun {
4152*4882a593Smuzhiyun 	struct i2c_msg msgs[2];
4153*4882a593Smuzhiyun 	u8 *data_be_p;
4154*4882a593Smuzhiyun 	__be32 data_be = 0;
4155*4882a593Smuzhiyun 	__be16 reg_addr_be = cpu_to_be16(reg);
4156*4882a593Smuzhiyun 	int ret;
4157*4882a593Smuzhiyun 
4158*4882a593Smuzhiyun 	if (len > 4 || !len)
4159*4882a593Smuzhiyun 		return -EINVAL;
4160*4882a593Smuzhiyun 
4161*4882a593Smuzhiyun 	data_be_p = (u8 *)&data_be;
4162*4882a593Smuzhiyun 	/* Write register address */
4163*4882a593Smuzhiyun 	msgs[0].addr = client->addr;
4164*4882a593Smuzhiyun 	msgs[0].flags = 0;
4165*4882a593Smuzhiyun 	msgs[0].len = 2;
4166*4882a593Smuzhiyun 	msgs[0].buf = (u8 *)&reg_addr_be;
4167*4882a593Smuzhiyun 
4168*4882a593Smuzhiyun 	/* Read data from register */
4169*4882a593Smuzhiyun 	msgs[1].addr = client->addr;
4170*4882a593Smuzhiyun 	msgs[1].flags = I2C_M_RD;
4171*4882a593Smuzhiyun 	msgs[1].len = len;
4172*4882a593Smuzhiyun 	msgs[1].buf = &data_be_p[4 - len];
4173*4882a593Smuzhiyun 
4174*4882a593Smuzhiyun 	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
4175*4882a593Smuzhiyun 	if (ret != ARRAY_SIZE(msgs))
4176*4882a593Smuzhiyun 		return -EIO;
4177*4882a593Smuzhiyun 
4178*4882a593Smuzhiyun 	*val = be32_to_cpu(data_be);
4179*4882a593Smuzhiyun 
4180*4882a593Smuzhiyun 	return 0;
4181*4882a593Smuzhiyun }
4182*4882a593Smuzhiyun 
ar0822_get_reso_dist(const struct ar0822_mode * mode,struct v4l2_mbus_framefmt * framefmt)4183*4882a593Smuzhiyun static int ar0822_get_reso_dist(const struct ar0822_mode *mode,
4184*4882a593Smuzhiyun 				struct v4l2_mbus_framefmt *framefmt)
4185*4882a593Smuzhiyun {
4186*4882a593Smuzhiyun 	return abs(mode->width - framefmt->width) +
4187*4882a593Smuzhiyun 	       abs(mode->height - framefmt->height);
4188*4882a593Smuzhiyun }
4189*4882a593Smuzhiyun 
4190*4882a593Smuzhiyun static const struct ar0822_mode *
ar0822_find_best_fit(struct ar0822 * ar0822,struct v4l2_subdev_format * fmt)4191*4882a593Smuzhiyun ar0822_find_best_fit(struct ar0822 *ar0822, struct v4l2_subdev_format *fmt)
4192*4882a593Smuzhiyun {
4193*4882a593Smuzhiyun 	struct v4l2_mbus_framefmt *framefmt = &fmt->format;
4194*4882a593Smuzhiyun 	int dist;
4195*4882a593Smuzhiyun 	int cur_best_fit = 0;
4196*4882a593Smuzhiyun 	int cur_best_fit_dist = -1;
4197*4882a593Smuzhiyun 	unsigned int i;
4198*4882a593Smuzhiyun 
4199*4882a593Smuzhiyun 	for (i = 0; i < ar0822->cfg_num; i++) {
4200*4882a593Smuzhiyun 		dist = ar0822_get_reso_dist(&supported_modes[i], framefmt);
4201*4882a593Smuzhiyun 		if ((cur_best_fit_dist == -1 || dist < cur_best_fit_dist) &&
4202*4882a593Smuzhiyun 			(supported_modes[i].bus_fmt == framefmt->code)) {
4203*4882a593Smuzhiyun 			cur_best_fit_dist = dist;
4204*4882a593Smuzhiyun 			cur_best_fit = i;
4205*4882a593Smuzhiyun 		}
4206*4882a593Smuzhiyun 	}
4207*4882a593Smuzhiyun 
4208*4882a593Smuzhiyun 	return &supported_modes[cur_best_fit];
4209*4882a593Smuzhiyun }
ar0822_set_rates(struct ar0822 * ar0822)4210*4882a593Smuzhiyun static int ar0822_set_rates(struct ar0822 *ar0822)
4211*4882a593Smuzhiyun {
4212*4882a593Smuzhiyun 	const struct ar0822_mode *mode = ar0822->cur_mode;
4213*4882a593Smuzhiyun 	s64 h_blank, vblank_def;
4214*4882a593Smuzhiyun 	int ret = 0;
4215*4882a593Smuzhiyun 
4216*4882a593Smuzhiyun 	h_blank = mode->hts_def - mode->width;
4217*4882a593Smuzhiyun 	dev_err(&ar0822->client->dev,
4218*4882a593Smuzhiyun 		"set format hblank is (%lld), mipi freq: %d, rate: %d\n",
4219*4882a593Smuzhiyun 		 h_blank, mode->mipi_freq,mode->mipi_rate);
4220*4882a593Smuzhiyun 	__v4l2_ctrl_modify_range(ar0822->hblank, h_blank,
4221*4882a593Smuzhiyun 				h_blank, 1, h_blank);
4222*4882a593Smuzhiyun 	vblank_def = mode->vts_def - mode->height;
4223*4882a593Smuzhiyun 	__v4l2_ctrl_modify_range(ar0822->vblank, vblank_def,
4224*4882a593Smuzhiyun 				AR0822_VTS_MAX - mode->height,
4225*4882a593Smuzhiyun 				1, vblank_def);
4226*4882a593Smuzhiyun 
4227*4882a593Smuzhiyun 	__v4l2_ctrl_s_ctrl_int64(ar0822->pixel_rate,
4228*4882a593Smuzhiyun 				 mode->mipi_rate);
4229*4882a593Smuzhiyun 	__v4l2_ctrl_s_ctrl(ar0822->link_freq,
4230*4882a593Smuzhiyun 			   mode->mipi_freq);
4231*4882a593Smuzhiyun 
4232*4882a593Smuzhiyun 	return ret;
4233*4882a593Smuzhiyun }
4234*4882a593Smuzhiyun /* setup sensor work format to determine the MIPI speed, open.k */
ar0822_set_fmt(struct v4l2_subdev * sd,struct v4l2_subdev_pad_config * cfg,struct v4l2_subdev_format * fmt)4235*4882a593Smuzhiyun static int ar0822_set_fmt(struct v4l2_subdev *sd,
4236*4882a593Smuzhiyun 			  struct v4l2_subdev_pad_config *cfg,
4237*4882a593Smuzhiyun 			  struct v4l2_subdev_format *fmt)
4238*4882a593Smuzhiyun {
4239*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4240*4882a593Smuzhiyun 	const struct ar0822_mode *mode;
4241*4882a593Smuzhiyun 
4242*4882a593Smuzhiyun 	mutex_lock(&ar0822->mutex);
4243*4882a593Smuzhiyun 
4244*4882a593Smuzhiyun 	mode = ar0822_find_best_fit(ar0822, fmt);
4245*4882a593Smuzhiyun 	fmt->format.code = mode->bus_fmt;
4246*4882a593Smuzhiyun 	fmt->format.width = mode->width;
4247*4882a593Smuzhiyun 	fmt->format.height = mode->height;
4248*4882a593Smuzhiyun 	fmt->format.field = V4L2_FIELD_NONE;
4249*4882a593Smuzhiyun 	if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
4250*4882a593Smuzhiyun #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
4251*4882a593Smuzhiyun 		*v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format;
4252*4882a593Smuzhiyun #else
4253*4882a593Smuzhiyun 		mutex_unlock(&ar0822->mutex);
4254*4882a593Smuzhiyun 		return -ENOTTY;
4255*4882a593Smuzhiyun #endif
4256*4882a593Smuzhiyun 	} else {
4257*4882a593Smuzhiyun 		ar0822->cur_mode = mode;
4258*4882a593Smuzhiyun 		ar0822_set_rates(ar0822);
4259*4882a593Smuzhiyun 	}
4260*4882a593Smuzhiyun 
4261*4882a593Smuzhiyun 	mutex_unlock(&ar0822->mutex);
4262*4882a593Smuzhiyun 
4263*4882a593Smuzhiyun 	return 0;
4264*4882a593Smuzhiyun }
4265*4882a593Smuzhiyun 
ar0822_get_fmt(struct v4l2_subdev * sd,struct v4l2_subdev_pad_config * cfg,struct v4l2_subdev_format * fmt)4266*4882a593Smuzhiyun static int ar0822_get_fmt(struct v4l2_subdev *sd,
4267*4882a593Smuzhiyun 			  struct v4l2_subdev_pad_config *cfg,
4268*4882a593Smuzhiyun 			  struct v4l2_subdev_format *fmt)
4269*4882a593Smuzhiyun {
4270*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4271*4882a593Smuzhiyun 	const struct ar0822_mode *mode = ar0822->cur_mode;
4272*4882a593Smuzhiyun 
4273*4882a593Smuzhiyun 	mutex_lock(&ar0822->mutex);
4274*4882a593Smuzhiyun 	if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
4275*4882a593Smuzhiyun #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
4276*4882a593Smuzhiyun 		fmt->format = *v4l2_subdev_get_try_format(sd, cfg, fmt->pad);
4277*4882a593Smuzhiyun #else
4278*4882a593Smuzhiyun 		mutex_unlock(&ar0822->mutex);
4279*4882a593Smuzhiyun 		return -ENOTTY;
4280*4882a593Smuzhiyun #endif
4281*4882a593Smuzhiyun 	} else {
4282*4882a593Smuzhiyun 		fmt->format.width = mode->width;
4283*4882a593Smuzhiyun 		fmt->format.height = mode->height;
4284*4882a593Smuzhiyun 		fmt->format.code = mode->bus_fmt;
4285*4882a593Smuzhiyun 		fmt->format.field = V4L2_FIELD_NONE;
4286*4882a593Smuzhiyun 		if (fmt->pad < PAD_MAX && mode->hdr_mode != NO_HDR)
4287*4882a593Smuzhiyun 			fmt->reserved[0] = mode->vc[fmt->pad];
4288*4882a593Smuzhiyun 		else
4289*4882a593Smuzhiyun 			fmt->reserved[0] = mode->vc[PAD0];
4290*4882a593Smuzhiyun 	}
4291*4882a593Smuzhiyun 	mutex_unlock(&ar0822->mutex);
4292*4882a593Smuzhiyun 
4293*4882a593Smuzhiyun 	return 0;
4294*4882a593Smuzhiyun }
4295*4882a593Smuzhiyun 
ar0822_enum_mbus_code(struct v4l2_subdev * sd,struct v4l2_subdev_pad_config * cfg,struct v4l2_subdev_mbus_code_enum * code)4296*4882a593Smuzhiyun static int ar0822_enum_mbus_code(struct v4l2_subdev *sd,
4297*4882a593Smuzhiyun 				 struct v4l2_subdev_pad_config *cfg,
4298*4882a593Smuzhiyun 				 struct v4l2_subdev_mbus_code_enum *code)
4299*4882a593Smuzhiyun {
4300*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4301*4882a593Smuzhiyun 
4302*4882a593Smuzhiyun 	if (code->index >= ar0822->cfg_num)
4303*4882a593Smuzhiyun 		return -EINVAL;
4304*4882a593Smuzhiyun 	code->code = supported_modes[code->index].bus_fmt;
4305*4882a593Smuzhiyun 
4306*4882a593Smuzhiyun 	return 0;
4307*4882a593Smuzhiyun }
4308*4882a593Smuzhiyun 
ar0822_enum_frame_sizes(struct v4l2_subdev * sd,struct v4l2_subdev_pad_config * cfg,struct v4l2_subdev_frame_size_enum * fse)4309*4882a593Smuzhiyun static int ar0822_enum_frame_sizes(struct v4l2_subdev *sd,
4310*4882a593Smuzhiyun 				   struct v4l2_subdev_pad_config *cfg,
4311*4882a593Smuzhiyun 				   struct v4l2_subdev_frame_size_enum *fse)
4312*4882a593Smuzhiyun {
4313*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4314*4882a593Smuzhiyun 
4315*4882a593Smuzhiyun 	if (fse->index >= ar0822->cfg_num)
4316*4882a593Smuzhiyun 		return -EINVAL;
4317*4882a593Smuzhiyun 
4318*4882a593Smuzhiyun 	if (fse->code != supported_modes[fse->index].bus_fmt)
4319*4882a593Smuzhiyun 		return -EINVAL;
4320*4882a593Smuzhiyun 
4321*4882a593Smuzhiyun 	fse->min_width  = supported_modes[fse->index].width;
4322*4882a593Smuzhiyun 	fse->max_width  = supported_modes[fse->index].width;
4323*4882a593Smuzhiyun 	fse->max_height = supported_modes[fse->index].height;
4324*4882a593Smuzhiyun 	fse->min_height = supported_modes[fse->index].height;
4325*4882a593Smuzhiyun 
4326*4882a593Smuzhiyun 	return 0;
4327*4882a593Smuzhiyun }
4328*4882a593Smuzhiyun /* use ar0822_enable_test_pattern to config test pattern mode here, open.k */
ar0822_enable_test_pattern(struct ar0822 * ar0822,u32 pattern)4329*4882a593Smuzhiyun static int ar0822_enable_test_pattern(struct ar0822 *ar0822, u32 pattern)
4330*4882a593Smuzhiyun {
4331*4882a593Smuzhiyun 	int ret = 0;
4332*4882a593Smuzhiyun 
4333*4882a593Smuzhiyun 	return ret;
4334*4882a593Smuzhiyun }
4335*4882a593Smuzhiyun 
ar0822_g_frame_interval(struct v4l2_subdev * sd,struct v4l2_subdev_frame_interval * fi)4336*4882a593Smuzhiyun static int ar0822_g_frame_interval(struct v4l2_subdev *sd,
4337*4882a593Smuzhiyun 				   struct v4l2_subdev_frame_interval *fi)
4338*4882a593Smuzhiyun {
4339*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4340*4882a593Smuzhiyun 	const struct ar0822_mode *mode = ar0822->cur_mode;
4341*4882a593Smuzhiyun 
4342*4882a593Smuzhiyun 	mutex_lock(&ar0822->mutex);
4343*4882a593Smuzhiyun 	fi->interval = mode->max_fps;
4344*4882a593Smuzhiyun 	mutex_unlock(&ar0822->mutex);
4345*4882a593Smuzhiyun 
4346*4882a593Smuzhiyun 	return 0;
4347*4882a593Smuzhiyun }
4348*4882a593Smuzhiyun 
ar0822_g_mbus_config(struct v4l2_subdev * sd,unsigned int pad_id,struct v4l2_mbus_config * config)4349*4882a593Smuzhiyun static int ar0822_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id,
4350*4882a593Smuzhiyun 				struct v4l2_mbus_config *config)
4351*4882a593Smuzhiyun {
4352*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4353*4882a593Smuzhiyun 	const struct ar0822_mode *mode = ar0822->cur_mode;
4354*4882a593Smuzhiyun 	u32 val = 0;
4355*4882a593Smuzhiyun 
4356*4882a593Smuzhiyun 	val = 1 << (AR0822_LANES - 1) |
4357*4882a593Smuzhiyun 		  V4L2_MBUS_CSI2_CHANNEL_0 |
4358*4882a593Smuzhiyun 		  V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
4359*4882a593Smuzhiyun 	if (mode->hdr_mode != NO_HDR)
4360*4882a593Smuzhiyun 		val |= V4L2_MBUS_CSI2_CHANNEL_1;
4361*4882a593Smuzhiyun 	if (mode->hdr_mode == HDR_X3)
4362*4882a593Smuzhiyun 		val |= V4L2_MBUS_CSI2_CHANNEL_2;
4363*4882a593Smuzhiyun 
4364*4882a593Smuzhiyun 	config->type = V4L2_MBUS_CSI2_DPHY;
4365*4882a593Smuzhiyun 	config->flags = val;
4366*4882a593Smuzhiyun 
4367*4882a593Smuzhiyun 	return 0;
4368*4882a593Smuzhiyun }
4369*4882a593Smuzhiyun 
4370*4882a593Smuzhiyun 
ar0822_get_module_inf(struct ar0822 * ar0822,struct rkmodule_inf * inf)4371*4882a593Smuzhiyun static void ar0822_get_module_inf(struct ar0822 *ar0822,
4372*4882a593Smuzhiyun 				  struct rkmodule_inf *inf)
4373*4882a593Smuzhiyun {
4374*4882a593Smuzhiyun 	memset(inf, 0, sizeof(*inf));
4375*4882a593Smuzhiyun 	strlcpy(inf->base.sensor, AR0822_NAME, sizeof(inf->base.sensor));
4376*4882a593Smuzhiyun 	strlcpy(inf->base.module, ar0822->module_name,
4377*4882a593Smuzhiyun 		sizeof(inf->base.module));
4378*4882a593Smuzhiyun 	strlcpy(inf->base.lens, ar0822->len_name, sizeof(inf->base.lens));
4379*4882a593Smuzhiyun }
4380*4882a593Smuzhiyun 
ar0822_set_hdrae(struct ar0822 * ar0822,struct preisp_hdrae_exp_s * ae)4381*4882a593Smuzhiyun static int ar0822_set_hdrae(struct ar0822 *ar0822,
4382*4882a593Smuzhiyun 			     struct preisp_hdrae_exp_s *ae)
4383*4882a593Smuzhiyun {
4384*4882a593Smuzhiyun 	u32 l_exp_time, m_exp_time, s_exp_time;
4385*4882a593Smuzhiyun 	u32 l_a_gain, m_a_gain, s_a_gain;
4386*4882a593Smuzhiyun 	int ret = 0;
4387*4882a593Smuzhiyun 	u8 l_cg_mode = 0;
4388*4882a593Smuzhiyun 	u8 m_cg_mode = 0;
4389*4882a593Smuzhiyun 	u8 s_cg_mode = 0;
4390*4882a593Smuzhiyun 	u32 gain_val = 0;
4391*4882a593Smuzhiyun 
4392*4882a593Smuzhiyun 	if (!ar0822->has_init_exp && !ar0822->streaming) {
4393*4882a593Smuzhiyun 		ar0822->init_hdrae_exp = *ae;
4394*4882a593Smuzhiyun 		ar0822->has_init_exp = true;
4395*4882a593Smuzhiyun 		dev_err(&ar0822->client->dev, "ar0822 don't stream, record exp for hdr!\n");
4396*4882a593Smuzhiyun 		return ret;
4397*4882a593Smuzhiyun 	}
4398*4882a593Smuzhiyun 	l_exp_time = ae->long_exp_reg;
4399*4882a593Smuzhiyun 	m_exp_time = ae->middle_exp_reg;
4400*4882a593Smuzhiyun 	s_exp_time = ae->short_exp_reg;
4401*4882a593Smuzhiyun 	l_a_gain = ae->long_gain_reg;
4402*4882a593Smuzhiyun 	m_a_gain = ae->middle_gain_reg;
4403*4882a593Smuzhiyun 	s_a_gain = ae->short_gain_reg;
4404*4882a593Smuzhiyun 	l_cg_mode = ae->long_cg_mode;
4405*4882a593Smuzhiyun 	m_cg_mode = ae->middle_cg_mode;
4406*4882a593Smuzhiyun 	s_cg_mode = ae->short_cg_mode;
4407*4882a593Smuzhiyun 	dev_dbg(&ar0822->client->dev,
4408*4882a593Smuzhiyun 		"Li-HDR irev exp req: L_exp: 0x%x, 0x%x, M_exp: 0x%x, 0x%x S_exp: 0x%x, 0x%x\n",
4409*4882a593Smuzhiyun 		l_exp_time, l_a_gain,
4410*4882a593Smuzhiyun 		m_exp_time, m_a_gain,
4411*4882a593Smuzhiyun 		s_exp_time, s_a_gain);
4412*4882a593Smuzhiyun 
4413*4882a593Smuzhiyun 	if (ar0822->cur_mode->hdr_mode == HDR_X2) {
4414*4882a593Smuzhiyun 		//2 stagger
4415*4882a593Smuzhiyun 		l_a_gain = m_a_gain;
4416*4882a593Smuzhiyun 		l_exp_time = m_exp_time;
4417*4882a593Smuzhiyun 		l_cg_mode = m_cg_mode;
4418*4882a593Smuzhiyun 		m_a_gain = s_a_gain;
4419*4882a593Smuzhiyun 		m_exp_time = s_exp_time;
4420*4882a593Smuzhiyun 		m_cg_mode = s_cg_mode;
4421*4882a593Smuzhiyun 	}
4422*4882a593Smuzhiyun 
4423*4882a593Smuzhiyun 	l_a_gain = (l_a_gain > AR0822_GAIN_MAX) ? AR0822_GAIN_MAX:l_a_gain;
4424*4882a593Smuzhiyun 	m_a_gain = (m_a_gain > AR0822_GAIN_MAX) ? AR0822_GAIN_MAX:m_a_gain;
4425*4882a593Smuzhiyun 	s_a_gain = (s_a_gain > AR0822_GAIN_MAX) ? AR0822_GAIN_MAX:s_a_gain;
4426*4882a593Smuzhiyun 	l_a_gain = (l_a_gain < AR0822_GAIN_MIN) ? AR0822_GAIN_MIN:l_a_gain;
4427*4882a593Smuzhiyun 	m_a_gain = (m_a_gain < AR0822_GAIN_MIN) ? AR0822_GAIN_MIN:m_a_gain;
4428*4882a593Smuzhiyun 	s_a_gain = (s_a_gain < AR0822_GAIN_MIN) ? AR0822_GAIN_MIN:s_a_gain;
4429*4882a593Smuzhiyun 
4430*4882a593Smuzhiyun 	gain_val = l_a_gain;
4431*4882a593Smuzhiyun 	ret |= ar0822_write_reg(ar0822->client,
4432*4882a593Smuzhiyun 		AR0822_GROUP_UPDATE_ADDRESS,
4433*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT,
4434*4882a593Smuzhiyun 		AR0822_GROUP_UPDATE_START_DATA);
4435*4882a593Smuzhiyun 
4436*4882a593Smuzhiyun 	ret |= ar0822_write_reg(ar0822->client,
4437*4882a593Smuzhiyun 		AR0822_REG_GAIN,
4438*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT, gain_val);
4439*4882a593Smuzhiyun 
4440*4882a593Smuzhiyun 	gain_val = m_a_gain;
4441*4882a593Smuzhiyun 	ret |= ar0822_write_reg(ar0822->client,
4442*4882a593Smuzhiyun 		AR0822_REG_GAIN2,
4443*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT, gain_val);
4444*4882a593Smuzhiyun 
4445*4882a593Smuzhiyun 	if (ar0822->cur_mode->hdr_mode == HDR_X3) {
4446*4882a593Smuzhiyun 		gain_val = s_a_gain;
4447*4882a593Smuzhiyun 		ret |= ar0822_write_reg(ar0822->client,
4448*4882a593Smuzhiyun 			AR0822_REG_GAIN3,
4449*4882a593Smuzhiyun 			AR0822_REG_VALUE_16BIT, gain_val);
4450*4882a593Smuzhiyun     	}
4451*4882a593Smuzhiyun 	ret |= ar0822_write_reg(ar0822->client,
4452*4882a593Smuzhiyun 		AR0822_REG_EXP,
4453*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT,
4454*4882a593Smuzhiyun 		l_exp_time);//fixed ratio 1/16 is used here, T2 and T3 is from ratio* T1 or ratio^2* T1.
4455*4882a593Smuzhiyun 
4456*4882a593Smuzhiyun 	ret |= ar0822_write_reg(ar0822->client,
4457*4882a593Smuzhiyun 		AR0822_GROUP_UPDATE_ADDRESS,
4458*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT,
4459*4882a593Smuzhiyun 		AR0822_GROUP_UPDATE_END_DATA);
4460*4882a593Smuzhiyun 
4461*4882a593Smuzhiyun 	dev_dbg(&ar0822->client->dev, "ar0822_set_hdrae exp 0x%x\n",l_exp_time);
4462*4882a593Smuzhiyun 
4463*4882a593Smuzhiyun 	return ret;
4464*4882a593Smuzhiyun }
4465*4882a593Smuzhiyun 
ar0822_set_conversion_gain(struct ar0822 * ar0822,u32 * cg)4466*4882a593Smuzhiyun static int ar0822_set_conversion_gain(struct ar0822 *ar0822, u32 *cg)
4467*4882a593Smuzhiyun {
4468*4882a593Smuzhiyun 	int ret = 0;
4469*4882a593Smuzhiyun 	return ret;
4470*4882a593Smuzhiyun }
4471*4882a593Smuzhiyun 
4472*4882a593Smuzhiyun #ifdef USED_SYS_DEBUG
4473*4882a593Smuzhiyun //ag: echo 0 >  /sys/devices/platform/ff510000.i2c/i2c-1/1-0036-1/cam_s_cg
set_conversion_gain_status(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)4474*4882a593Smuzhiyun static ssize_t set_conversion_gain_status(struct device *dev,
4475*4882a593Smuzhiyun 	struct device_attribute *attr,
4476*4882a593Smuzhiyun 	const char *buf,
4477*4882a593Smuzhiyun 	size_t count)
4478*4882a593Smuzhiyun {
4479*4882a593Smuzhiyun 	struct i2c_client *client = to_i2c_client(dev);
4480*4882a593Smuzhiyun 	struct v4l2_subdev *sd = i2c_get_clientdata(client);
4481*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4482*4882a593Smuzhiyun 	int status = 0;
4483*4882a593Smuzhiyun 	int ret = 0;
4484*4882a593Smuzhiyun 
4485*4882a593Smuzhiyun 	ret = kstrtoint(buf, 0, &status);
4486*4882a593Smuzhiyun 	if (!ret && status >= 0 && status < 2)
4487*4882a593Smuzhiyun 		ar0822_set_conversion_gain(ar0822, &status);
4488*4882a593Smuzhiyun 	else
4489*4882a593Smuzhiyun 		dev_err(dev, "input 0 for LCG, 1 for HCG, cur %d\n", status);
4490*4882a593Smuzhiyun 	return count;
4491*4882a593Smuzhiyun }
4492*4882a593Smuzhiyun 
4493*4882a593Smuzhiyun static struct device_attribute attributes[] = {
4494*4882a593Smuzhiyun 	__ATTR(cam_s_cg, S_IWUSR, NULL, set_conversion_gain_status),
4495*4882a593Smuzhiyun };
4496*4882a593Smuzhiyun 
add_sysfs_interfaces(struct device * dev)4497*4882a593Smuzhiyun static int add_sysfs_interfaces(struct device *dev)
4498*4882a593Smuzhiyun {
4499*4882a593Smuzhiyun 	int i;
4500*4882a593Smuzhiyun 
4501*4882a593Smuzhiyun 	for (i = 0; i < ARRAY_SIZE(attributes); i++)
4502*4882a593Smuzhiyun 		if (device_create_file(dev, attributes + i))
4503*4882a593Smuzhiyun 			goto undo;
4504*4882a593Smuzhiyun 	return 0;
4505*4882a593Smuzhiyun undo:
4506*4882a593Smuzhiyun 	for (i--; i >= 0 ; i--)
4507*4882a593Smuzhiyun 		device_remove_file(dev, attributes + i);
4508*4882a593Smuzhiyun 	dev_err(dev, "%s: failed to create sysfs interface\n", __func__);
4509*4882a593Smuzhiyun 	return -ENODEV;
4510*4882a593Smuzhiyun }
4511*4882a593Smuzhiyun #endif
4512*4882a593Smuzhiyun 
ar0822_get_channel_info(struct ar0822 * ar0822,struct rkmodule_channel_info * ch_info)4513*4882a593Smuzhiyun static int ar0822_get_channel_info(struct ar0822 *ar0822, struct rkmodule_channel_info *ch_info)
4514*4882a593Smuzhiyun {
4515*4882a593Smuzhiyun 	if (ch_info->index < PAD0 || ch_info->index >= PAD_MAX)
4516*4882a593Smuzhiyun 		return -EINVAL;
4517*4882a593Smuzhiyun 	ch_info->vc = ar0822->cur_mode->vc[ch_info->index];
4518*4882a593Smuzhiyun 	ch_info->width = ar0822->cur_mode->width;
4519*4882a593Smuzhiyun 	ch_info->height = ar0822->cur_mode->height;
4520*4882a593Smuzhiyun 	ch_info->bus_fmt = ar0822->cur_mode->bus_fmt;
4521*4882a593Smuzhiyun 	return 0;
4522*4882a593Smuzhiyun }
4523*4882a593Smuzhiyun 
ar0822_ioctl(struct v4l2_subdev * sd,unsigned int cmd,void * arg)4524*4882a593Smuzhiyun static long ar0822_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
4525*4882a593Smuzhiyun {
4526*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4527*4882a593Smuzhiyun 	struct rkmodule_hdr_cfg *hdr_cfg;
4528*4882a593Smuzhiyun 	struct rkmodule_channel_info *ch_info;
4529*4882a593Smuzhiyun 	long ret = 0;
4530*4882a593Smuzhiyun 	u32 i, h, w;
4531*4882a593Smuzhiyun 	u32 stream = 0;
4532*4882a593Smuzhiyun 
4533*4882a593Smuzhiyun 	switch (cmd) {
4534*4882a593Smuzhiyun 	case PREISP_CMD_SET_HDRAE_EXP:
4535*4882a593Smuzhiyun 		ar0822_set_hdrae(ar0822, arg);
4536*4882a593Smuzhiyun 		break;
4537*4882a593Smuzhiyun 	case RKMODULE_SET_HDR_CFG:
4538*4882a593Smuzhiyun 		hdr_cfg = (struct rkmodule_hdr_cfg *)arg;
4539*4882a593Smuzhiyun 		w = ar0822->cur_mode->width;
4540*4882a593Smuzhiyun 		h = ar0822->cur_mode->height;
4541*4882a593Smuzhiyun 		for (i = 0; i < ar0822->cfg_num; i++) {
4542*4882a593Smuzhiyun 			if (w == supported_modes[i].width &&
4543*4882a593Smuzhiyun 			h == supported_modes[i].height &&
4544*4882a593Smuzhiyun 			supported_modes[i].hdr_mode == hdr_cfg->hdr_mode) {
4545*4882a593Smuzhiyun 				ar0822->cur_mode = &supported_modes[i];
4546*4882a593Smuzhiyun 				break;
4547*4882a593Smuzhiyun 			}
4548*4882a593Smuzhiyun 		}
4549*4882a593Smuzhiyun 		if (i == ar0822->cfg_num) {
4550*4882a593Smuzhiyun 			dev_err(&ar0822->client->dev,
4551*4882a593Smuzhiyun 				"not find hdr mode:%d %dx%d config\n",
4552*4882a593Smuzhiyun 				hdr_cfg->hdr_mode, w, h);
4553*4882a593Smuzhiyun 			ret = -EINVAL;
4554*4882a593Smuzhiyun 		} else {
4555*4882a593Smuzhiyun 			w = ar0822->cur_mode->hts_def - ar0822->cur_mode->width;
4556*4882a593Smuzhiyun 			h = ar0822->cur_mode->vts_def - ar0822->cur_mode->height;
4557*4882a593Smuzhiyun 			dev_info(&ar0822->client->dev,
4558*4882a593Smuzhiyun 			"set hdr cfg, hblank is (%d)\n", w);
4559*4882a593Smuzhiyun 			__v4l2_ctrl_modify_range(ar0822->hblank, w, w, 1, w);
4560*4882a593Smuzhiyun 			__v4l2_ctrl_modify_range(ar0822->vblank, h,
4561*4882a593Smuzhiyun 				AR0822_VTS_MAX - ar0822->cur_mode->height,
4562*4882a593Smuzhiyun 				1, h);
4563*4882a593Smuzhiyun 			dev_info(&ar0822->client->dev,
4564*4882a593Smuzhiyun 				"sensor mode: %d\n",
4565*4882a593Smuzhiyun 				ar0822->cur_mode->hdr_mode);
4566*4882a593Smuzhiyun 		}
4567*4882a593Smuzhiyun 		ar0822_set_rates(ar0822);
4568*4882a593Smuzhiyun 		break;
4569*4882a593Smuzhiyun 	case RKMODULE_GET_MODULE_INFO:
4570*4882a593Smuzhiyun 		ar0822_get_module_inf(ar0822, (struct rkmodule_inf *)arg);
4571*4882a593Smuzhiyun 		break;
4572*4882a593Smuzhiyun 	case RKMODULE_GET_HDR_CFG:
4573*4882a593Smuzhiyun 		hdr_cfg = (struct rkmodule_hdr_cfg *)arg;
4574*4882a593Smuzhiyun 		hdr_cfg->esp.mode = HDR_NORMAL_VC;
4575*4882a593Smuzhiyun 		hdr_cfg->hdr_mode = ar0822->cur_mode->hdr_mode;
4576*4882a593Smuzhiyun 		break;
4577*4882a593Smuzhiyun 	case RKMODULE_SET_CONVERSION_GAIN:
4578*4882a593Smuzhiyun 		ret = 0;//ar0822_set_conversion_gain(ar0822, (u32 *)arg);
4579*4882a593Smuzhiyun 		break;
4580*4882a593Smuzhiyun 	case RKMODULE_SET_QUICK_STREAM:
4581*4882a593Smuzhiyun 
4582*4882a593Smuzhiyun 		stream = *((u32 *)arg);
4583*4882a593Smuzhiyun 
4584*4882a593Smuzhiyun 		if (stream)
4585*4882a593Smuzhiyun 			ret = ar0822_write_reg(ar0822->client, AR0822_REG_CTRL_MODE,
4586*4882a593Smuzhiyun 				AR0822_REG_VALUE_16BIT, AR0822_MODE_STREAMING);
4587*4882a593Smuzhiyun 		else
4588*4882a593Smuzhiyun 			ret = ar0822_write_reg(ar0822->client, AR0822_REG_CTRL_MODE,
4589*4882a593Smuzhiyun 				AR0822_REG_VALUE_16BIT, AR0822_MODE_SW_STANDBY);
4590*4882a593Smuzhiyun 		break;
4591*4882a593Smuzhiyun 	case RKMODULE_GET_CHANNEL_INFO:
4592*4882a593Smuzhiyun 		ch_info = (struct rkmodule_channel_info *)arg;
4593*4882a593Smuzhiyun 		ret = ar0822_get_channel_info(ar0822, ch_info);
4594*4882a593Smuzhiyun 		break;
4595*4882a593Smuzhiyun 	default:
4596*4882a593Smuzhiyun 		ret = -ENOIOCTLCMD;
4597*4882a593Smuzhiyun 		break;
4598*4882a593Smuzhiyun 	}
4599*4882a593Smuzhiyun 
4600*4882a593Smuzhiyun 	return ret;
4601*4882a593Smuzhiyun }
4602*4882a593Smuzhiyun 
4603*4882a593Smuzhiyun #ifdef CONFIG_COMPAT
ar0822_compat_ioctl32(struct v4l2_subdev * sd,unsigned int cmd,unsigned long arg)4604*4882a593Smuzhiyun static long ar0822_compat_ioctl32(struct v4l2_subdev *sd,
4605*4882a593Smuzhiyun 				  unsigned int cmd, unsigned long arg)
4606*4882a593Smuzhiyun {
4607*4882a593Smuzhiyun 	void __user *up = compat_ptr(arg);
4608*4882a593Smuzhiyun 	struct rkmodule_inf *inf;
4609*4882a593Smuzhiyun 	struct rkmodule_awb_cfg *cfg;
4610*4882a593Smuzhiyun 	struct rkmodule_hdr_cfg *hdr;
4611*4882a593Smuzhiyun 	struct preisp_hdrae_exp_s *hdrae;
4612*4882a593Smuzhiyun 	struct rkmodule_channel_info *ch_info;
4613*4882a593Smuzhiyun 	long ret;
4614*4882a593Smuzhiyun 	u32 cg = 0;
4615*4882a593Smuzhiyun 	u32 stream = 0;
4616*4882a593Smuzhiyun 
4617*4882a593Smuzhiyun 	switch (cmd) {
4618*4882a593Smuzhiyun 	case RKMODULE_GET_MODULE_INFO:
4619*4882a593Smuzhiyun 		inf = kzalloc(sizeof(*inf), GFP_KERNEL);
4620*4882a593Smuzhiyun 		if (!inf) {
4621*4882a593Smuzhiyun 			ret = -ENOMEM;
4622*4882a593Smuzhiyun 			return ret;
4623*4882a593Smuzhiyun 		}
4624*4882a593Smuzhiyun 
4625*4882a593Smuzhiyun 		ret = ar0822_ioctl(sd, cmd, inf);
4626*4882a593Smuzhiyun 		if (!ret)
4627*4882a593Smuzhiyun 			ret = copy_to_user(up, inf, sizeof(*inf));
4628*4882a593Smuzhiyun 		kfree(inf);
4629*4882a593Smuzhiyun 		break;
4630*4882a593Smuzhiyun 	case RKMODULE_AWB_CFG:
4631*4882a593Smuzhiyun 		cfg = kzalloc(sizeof(*cfg), GFP_KERNEL);
4632*4882a593Smuzhiyun 		if (!cfg) {
4633*4882a593Smuzhiyun 			ret = -ENOMEM;
4634*4882a593Smuzhiyun 			return ret;
4635*4882a593Smuzhiyun 		}
4636*4882a593Smuzhiyun 
4637*4882a593Smuzhiyun 		ret = copy_from_user(cfg, up, sizeof(*cfg));
4638*4882a593Smuzhiyun 		if (!ret)
4639*4882a593Smuzhiyun 			ret = ar0822_ioctl(sd, cmd, cfg);
4640*4882a593Smuzhiyun 		kfree(cfg);
4641*4882a593Smuzhiyun 		break;
4642*4882a593Smuzhiyun 	case RKMODULE_GET_HDR_CFG:
4643*4882a593Smuzhiyun 		hdr = kzalloc(sizeof(*hdr), GFP_KERNEL);
4644*4882a593Smuzhiyun 		if (!hdr) {
4645*4882a593Smuzhiyun 			ret = -ENOMEM;
4646*4882a593Smuzhiyun 			return ret;
4647*4882a593Smuzhiyun 		}
4648*4882a593Smuzhiyun 
4649*4882a593Smuzhiyun 		ret = ar0822_ioctl(sd, cmd, hdr);
4650*4882a593Smuzhiyun 		if (!ret)
4651*4882a593Smuzhiyun 			ret = copy_to_user(up, hdr, sizeof(*hdr));
4652*4882a593Smuzhiyun 		kfree(hdr);
4653*4882a593Smuzhiyun 		break;
4654*4882a593Smuzhiyun 	case RKMODULE_SET_HDR_CFG:
4655*4882a593Smuzhiyun 		hdr = kzalloc(sizeof(*hdr), GFP_KERNEL);
4656*4882a593Smuzhiyun 		if (!hdr) {
4657*4882a593Smuzhiyun 			ret = -ENOMEM;
4658*4882a593Smuzhiyun 			return ret;
4659*4882a593Smuzhiyun 		}
4660*4882a593Smuzhiyun 
4661*4882a593Smuzhiyun 		ret = copy_from_user(hdr, up, sizeof(*hdr));
4662*4882a593Smuzhiyun 		if (!ret)
4663*4882a593Smuzhiyun 			ret = ar0822_ioctl(sd, cmd, hdr);
4664*4882a593Smuzhiyun 		kfree(hdr);
4665*4882a593Smuzhiyun 		break;
4666*4882a593Smuzhiyun 	case PREISP_CMD_SET_HDRAE_EXP:
4667*4882a593Smuzhiyun 		hdrae = kzalloc(sizeof(*hdrae), GFP_KERNEL);
4668*4882a593Smuzhiyun 		if (!hdrae) {
4669*4882a593Smuzhiyun 			ret = -ENOMEM;
4670*4882a593Smuzhiyun 			return ret;
4671*4882a593Smuzhiyun 		}
4672*4882a593Smuzhiyun 
4673*4882a593Smuzhiyun 		ret = copy_from_user(hdrae, up, sizeof(*hdrae));
4674*4882a593Smuzhiyun 		if (!ret)
4675*4882a593Smuzhiyun 			ret = ar0822_ioctl(sd, cmd, hdrae);
4676*4882a593Smuzhiyun 		kfree(hdrae);
4677*4882a593Smuzhiyun 		break;
4678*4882a593Smuzhiyun 	case RKMODULE_SET_CONVERSION_GAIN:
4679*4882a593Smuzhiyun 		ret = copy_from_user(&cg, up, sizeof(cg));
4680*4882a593Smuzhiyun 		if (!ret)
4681*4882a593Smuzhiyun 			ret = ar0822_ioctl(sd, cmd, &cg);
4682*4882a593Smuzhiyun 		break;
4683*4882a593Smuzhiyun 	case RKMODULE_SET_QUICK_STREAM:
4684*4882a593Smuzhiyun 		ret = copy_from_user(&stream, up, sizeof(u32));
4685*4882a593Smuzhiyun 		if (!ret)
4686*4882a593Smuzhiyun 			ret = ar0822_ioctl(sd, cmd, &stream);
4687*4882a593Smuzhiyun 		break;
4688*4882a593Smuzhiyun 	case RKMODULE_GET_CHANNEL_INFO:
4689*4882a593Smuzhiyun 		ch_info = kzalloc(sizeof(*ch_info), GFP_KERNEL);
4690*4882a593Smuzhiyun 		if (!ch_info) {
4691*4882a593Smuzhiyun 			ret = -ENOMEM;
4692*4882a593Smuzhiyun 			return ret;
4693*4882a593Smuzhiyun 		}
4694*4882a593Smuzhiyun 
4695*4882a593Smuzhiyun 		ret = ar0822_ioctl(sd, cmd, ch_info);
4696*4882a593Smuzhiyun 		if (!ret) {
4697*4882a593Smuzhiyun 			ret = copy_to_user(up, ch_info, sizeof(*ch_info));
4698*4882a593Smuzhiyun 			if (ret)
4699*4882a593Smuzhiyun 				ret = -EFAULT;
4700*4882a593Smuzhiyun 		}
4701*4882a593Smuzhiyun 		kfree(ch_info);
4702*4882a593Smuzhiyun 		break;
4703*4882a593Smuzhiyun 	default:
4704*4882a593Smuzhiyun 		ret = -ENOIOCTLCMD;
4705*4882a593Smuzhiyun 		break;
4706*4882a593Smuzhiyun 	}
4707*4882a593Smuzhiyun 
4708*4882a593Smuzhiyun 	return ret;
4709*4882a593Smuzhiyun }
4710*4882a593Smuzhiyun #endif
4711*4882a593Smuzhiyun 
__ar0822_start_stream(struct ar0822 * ar0822)4712*4882a593Smuzhiyun static int __ar0822_start_stream(struct ar0822 *ar0822)
4713*4882a593Smuzhiyun {
4714*4882a593Smuzhiyun 	int ret;
4715*4882a593Smuzhiyun 
4716*4882a593Smuzhiyun 	if (!ar0822->is_thunderboot) {
4717*4882a593Smuzhiyun 		ret = ar0822_write_reg(ar0822->client,
4718*4882a593Smuzhiyun 					 AR0822_SOFTWARE_RESET_REG,
4719*4882a593Smuzhiyun 					 AR0822_REG_VALUE_16BIT,
4720*4882a593Smuzhiyun 					 0x0001);
4721*4882a593Smuzhiyun 		usleep_range(100000, 200000);
4722*4882a593Smuzhiyun 		ret = ar0822_write_array(ar0822->client, ar0822->cur_mode->reg_list);
4723*4882a593Smuzhiyun 		if (ret)
4724*4882a593Smuzhiyun 			return ret;
4725*4882a593Smuzhiyun 	}
4726*4882a593Smuzhiyun 
4727*4882a593Smuzhiyun 	/* In case these controls are set before streaming */
4728*4882a593Smuzhiyun 	ret = __v4l2_ctrl_handler_setup(&ar0822->ctrl_handler);
4729*4882a593Smuzhiyun 	if (ret)
4730*4882a593Smuzhiyun 		return ret;
4731*4882a593Smuzhiyun 	if (ar0822->has_init_exp && ar0822->cur_mode->hdr_mode != NO_HDR) {
4732*4882a593Smuzhiyun 		ret = ar0822_ioctl(&ar0822->subdev, PREISP_CMD_SET_HDRAE_EXP, &ar0822->init_hdrae_exp);
4733*4882a593Smuzhiyun 		if (ret) {
4734*4882a593Smuzhiyun 			dev_err(&ar0822->client->dev,
4735*4882a593Smuzhiyun 				"init exp fail in hdr mode\n");
4736*4882a593Smuzhiyun 			return ret;
4737*4882a593Smuzhiyun 		}
4738*4882a593Smuzhiyun 		dev_err(&ar0822->client->dev,
4739*4882a593Smuzhiyun 				"init exp success in hdr mode\n");
4740*4882a593Smuzhiyun 	}
4741*4882a593Smuzhiyun 	return ar0822_write_reg(ar0822->client, AR0822_REG_CTRL_MODE,
4742*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT, AR0822_MODE_STREAMING);
4743*4882a593Smuzhiyun }
4744*4882a593Smuzhiyun 
__ar0822_stop_stream(struct ar0822 * ar0822)4745*4882a593Smuzhiyun static int __ar0822_stop_stream(struct ar0822 *ar0822)
4746*4882a593Smuzhiyun {
4747*4882a593Smuzhiyun 	ar0822->has_init_exp = false;
4748*4882a593Smuzhiyun 	if (ar0822->is_thunderboot)
4749*4882a593Smuzhiyun 		ar0822->is_first_streamoff = true;
4750*4882a593Smuzhiyun 	return ar0822_write_reg(ar0822->client, AR0822_REG_CTRL_MODE,
4751*4882a593Smuzhiyun 		AR0822_REG_VALUE_16BIT, AR0822_MODE_SW_STANDBY);
4752*4882a593Smuzhiyun }
4753*4882a593Smuzhiyun 
ar0822_s_stream(struct v4l2_subdev * sd,int on)4754*4882a593Smuzhiyun static int ar0822_s_stream(struct v4l2_subdev *sd, int on)
4755*4882a593Smuzhiyun {
4756*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4757*4882a593Smuzhiyun 	struct i2c_client *client = ar0822->client;
4758*4882a593Smuzhiyun 	int ret = 0;
4759*4882a593Smuzhiyun 
4760*4882a593Smuzhiyun 	mutex_lock(&ar0822->mutex);
4761*4882a593Smuzhiyun 	on = !!on;
4762*4882a593Smuzhiyun 	if (on == ar0822->streaming)
4763*4882a593Smuzhiyun 		goto unlock_and_return;
4764*4882a593Smuzhiyun 	if (on) {
4765*4882a593Smuzhiyun 		if (ar0822->is_thunderboot && rkisp_tb_get_state() == RKISP_TB_NG) {
4766*4882a593Smuzhiyun 			ar0822->is_thunderboot = false;
4767*4882a593Smuzhiyun 			__ar0822_power_on(ar0822);
4768*4882a593Smuzhiyun 		}
4769*4882a593Smuzhiyun 		ret = pm_runtime_get_sync(&client->dev);
4770*4882a593Smuzhiyun 		if (ret < 0) {
4771*4882a593Smuzhiyun 			pm_runtime_put_noidle(&client->dev);
4772*4882a593Smuzhiyun 			goto unlock_and_return;
4773*4882a593Smuzhiyun 		}
4774*4882a593Smuzhiyun 
4775*4882a593Smuzhiyun 		ret = __ar0822_start_stream(ar0822);
4776*4882a593Smuzhiyun 		if (ret) {
4777*4882a593Smuzhiyun 			v4l2_err(sd, "start stream failed while write regs\n");
4778*4882a593Smuzhiyun 			pm_runtime_put(&client->dev);
4779*4882a593Smuzhiyun 			goto unlock_and_return;
4780*4882a593Smuzhiyun 		}
4781*4882a593Smuzhiyun 	} else {
4782*4882a593Smuzhiyun 		__ar0822_stop_stream(ar0822);
4783*4882a593Smuzhiyun 		pm_runtime_put(&client->dev);
4784*4882a593Smuzhiyun 	}
4785*4882a593Smuzhiyun 	ar0822->streaming = on;
4786*4882a593Smuzhiyun 
4787*4882a593Smuzhiyun 
4788*4882a593Smuzhiyun unlock_and_return:
4789*4882a593Smuzhiyun 	mutex_unlock(&ar0822->mutex);
4790*4882a593Smuzhiyun 
4791*4882a593Smuzhiyun 	return ret;
4792*4882a593Smuzhiyun }
4793*4882a593Smuzhiyun 
ar0822_s_power(struct v4l2_subdev * sd,int on)4794*4882a593Smuzhiyun static int ar0822_s_power(struct v4l2_subdev *sd, int on)
4795*4882a593Smuzhiyun {
4796*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4797*4882a593Smuzhiyun 	struct i2c_client *client = ar0822->client;
4798*4882a593Smuzhiyun 	int ret = 0;
4799*4882a593Smuzhiyun 
4800*4882a593Smuzhiyun 	mutex_lock(&ar0822->mutex);
4801*4882a593Smuzhiyun 	/* If the power state is not modified - no work to do. */
4802*4882a593Smuzhiyun 	if (ar0822->power_on == !!on)
4803*4882a593Smuzhiyun 		goto unlock_and_return;
4804*4882a593Smuzhiyun 
4805*4882a593Smuzhiyun 	if (on) {
4806*4882a593Smuzhiyun 		ret = pm_runtime_get_sync(&client->dev);
4807*4882a593Smuzhiyun 		if (ret < 0) {
4808*4882a593Smuzhiyun 			pm_runtime_put_noidle(&client->dev);
4809*4882a593Smuzhiyun 			goto unlock_and_return;
4810*4882a593Smuzhiyun 		}
4811*4882a593Smuzhiyun 
4812*4882a593Smuzhiyun 		if (!ar0822->is_thunderboot) {
4813*4882a593Smuzhiyun 			ret |= ar0822_write_reg(ar0822->client,
4814*4882a593Smuzhiyun 						 AR0822_SOFTWARE_RESET_REG,
4815*4882a593Smuzhiyun 						 AR0822_REG_VALUE_16BIT,
4816*4882a593Smuzhiyun 						 0x0001);
4817*4882a593Smuzhiyun 			usleep_range(100, 200);
4818*4882a593Smuzhiyun 		}
4819*4882a593Smuzhiyun 
4820*4882a593Smuzhiyun 		ar0822->power_on = true;
4821*4882a593Smuzhiyun 	} else {
4822*4882a593Smuzhiyun 		pm_runtime_put(&client->dev);
4823*4882a593Smuzhiyun 		ar0822->power_on = false;
4824*4882a593Smuzhiyun 	}
4825*4882a593Smuzhiyun 
4826*4882a593Smuzhiyun unlock_and_return:
4827*4882a593Smuzhiyun 	mutex_unlock(&ar0822->mutex);
4828*4882a593Smuzhiyun 
4829*4882a593Smuzhiyun 	return ret;
4830*4882a593Smuzhiyun }
4831*4882a593Smuzhiyun 
4832*4882a593Smuzhiyun /* Calculate the delay in us by clock rate and clock cycles */
ar0822_cal_delay(u32 cycles)4833*4882a593Smuzhiyun static inline u32 ar0822_cal_delay(u32 cycles)
4834*4882a593Smuzhiyun {
4835*4882a593Smuzhiyun 	return DIV_ROUND_UP(cycles, AR0822_XVCLK_FREQ / 1000 / 1000);
4836*4882a593Smuzhiyun }
4837*4882a593Smuzhiyun 
__ar0822_power_on(struct ar0822 * ar0822)4838*4882a593Smuzhiyun static int __ar0822_power_on(struct ar0822 *ar0822)  /*  sensor power on config, need check power, MCLK, GPIO etc,,, need go to .dts file to change the config; open.k */
4839*4882a593Smuzhiyun {
4840*4882a593Smuzhiyun 	int ret;
4841*4882a593Smuzhiyun 	u32 delay_us;
4842*4882a593Smuzhiyun 	struct device *dev = &ar0822->client->dev;
4843*4882a593Smuzhiyun 
4844*4882a593Smuzhiyun 	if (ar0822->is_thunderboot)
4845*4882a593Smuzhiyun 		return 0;
4846*4882a593Smuzhiyun 
4847*4882a593Smuzhiyun 	if (!IS_ERR_OR_NULL(ar0822->pins_default)) {
4848*4882a593Smuzhiyun 		ret = pinctrl_select_state(ar0822->pinctrl,
4849*4882a593Smuzhiyun 					   ar0822->pins_default);
4850*4882a593Smuzhiyun 		if (ret < 0)
4851*4882a593Smuzhiyun 			dev_err(dev, "could not set pins\n");
4852*4882a593Smuzhiyun 	}
4853*4882a593Smuzhiyun 	ret = clk_set_rate(ar0822->xvclk, AR0822_XVCLK_FREQ);
4854*4882a593Smuzhiyun 	if (ret < 0)
4855*4882a593Smuzhiyun 		dev_warn(dev, "Failed to set xvclk rate (24MHz)\n");
4856*4882a593Smuzhiyun 	if (clk_get_rate(ar0822->xvclk) != AR0822_XVCLK_FREQ)
4857*4882a593Smuzhiyun 		dev_warn(dev, "xvclk mismatched, modes are based on 24MHz\n");
4858*4882a593Smuzhiyun 	ret = clk_prepare_enable(ar0822->xvclk);
4859*4882a593Smuzhiyun 	if (ret < 0) {
4860*4882a593Smuzhiyun 		dev_err(dev, "Failed to enable xvclk\n");
4861*4882a593Smuzhiyun 		return ret;
4862*4882a593Smuzhiyun 	}
4863*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->reset_gpio))
4864*4882a593Smuzhiyun 		gpiod_direction_output(ar0822->reset_gpio, 1);
4865*4882a593Smuzhiyun 
4866*4882a593Smuzhiyun 	ret = regulator_bulk_enable(AR0822_NUM_SUPPLIES, ar0822->supplies);
4867*4882a593Smuzhiyun 	if (ret < 0) {
4868*4882a593Smuzhiyun 		dev_err(dev, "Failed to enable regulators\n");
4869*4882a593Smuzhiyun 		goto disable_clk;
4870*4882a593Smuzhiyun 	}
4871*4882a593Smuzhiyun 
4872*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->reset_gpio))
4873*4882a593Smuzhiyun 		gpiod_direction_output(ar0822->reset_gpio, 0);
4874*4882a593Smuzhiyun 
4875*4882a593Smuzhiyun 	usleep_range(500, 1000);
4876*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->pwdn_gpio))
4877*4882a593Smuzhiyun 		gpiod_direction_output(ar0822->pwdn_gpio, 1);
4878*4882a593Smuzhiyun 	/*
4879*4882a593Smuzhiyun 	 * There is no need to wait for the delay of RC circuit
4880*4882a593Smuzhiyun 	 * if the reset signal is directly controlled by GPIO.
4881*4882a593Smuzhiyun 	 */
4882*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->reset_gpio))
4883*4882a593Smuzhiyun 		usleep_range(6000, 8000);
4884*4882a593Smuzhiyun 	else
4885*4882a593Smuzhiyun 		usleep_range(12000, 16000);
4886*4882a593Smuzhiyun 
4887*4882a593Smuzhiyun 	/* 8192 cycles prior to first SCCB transaction */
4888*4882a593Smuzhiyun 	delay_us = ar0822_cal_delay(8192);
4889*4882a593Smuzhiyun 	usleep_range(delay_us, delay_us * 2);
4890*4882a593Smuzhiyun 
4891*4882a593Smuzhiyun 	return 0;
4892*4882a593Smuzhiyun 
4893*4882a593Smuzhiyun disable_clk:
4894*4882a593Smuzhiyun 	clk_disable_unprepare(ar0822->xvclk);
4895*4882a593Smuzhiyun 
4896*4882a593Smuzhiyun 	return ret;
4897*4882a593Smuzhiyun }
4898*4882a593Smuzhiyun 
__ar0822_power_off(struct ar0822 * ar0822)4899*4882a593Smuzhiyun static void __ar0822_power_off(struct ar0822 *ar0822)
4900*4882a593Smuzhiyun {
4901*4882a593Smuzhiyun 	int ret;
4902*4882a593Smuzhiyun 	struct device *dev = &ar0822->client->dev;
4903*4882a593Smuzhiyun 
4904*4882a593Smuzhiyun 	if (ar0822->is_thunderboot) {
4905*4882a593Smuzhiyun 		if (ar0822->is_first_streamoff) {
4906*4882a593Smuzhiyun 			ar0822->is_thunderboot = false;
4907*4882a593Smuzhiyun 			ar0822->is_first_streamoff = false;
4908*4882a593Smuzhiyun 		} else {
4909*4882a593Smuzhiyun 			return;
4910*4882a593Smuzhiyun 		}
4911*4882a593Smuzhiyun 	}
4912*4882a593Smuzhiyun 
4913*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->pwdn_gpio))
4914*4882a593Smuzhiyun 		gpiod_direction_output(ar0822->pwdn_gpio, 0);
4915*4882a593Smuzhiyun 
4916*4882a593Smuzhiyun 	clk_disable_unprepare(ar0822->xvclk);
4917*4882a593Smuzhiyun 
4918*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->reset_gpio))
4919*4882a593Smuzhiyun 		gpiod_direction_output(ar0822->reset_gpio, 0);
4920*4882a593Smuzhiyun 	if (!IS_ERR_OR_NULL(ar0822->pins_sleep)) {
4921*4882a593Smuzhiyun 		ret = pinctrl_select_state(ar0822->pinctrl,
4922*4882a593Smuzhiyun 					   ar0822->pins_sleep);
4923*4882a593Smuzhiyun 		if (ret < 0)
4924*4882a593Smuzhiyun 			dev_dbg(dev, "could not set pins\n");
4925*4882a593Smuzhiyun 	}
4926*4882a593Smuzhiyun 
4927*4882a593Smuzhiyun 	if (ar0822->is_thunderboot_ng) {
4928*4882a593Smuzhiyun 		ar0822->is_thunderboot_ng = false;
4929*4882a593Smuzhiyun 		regulator_bulk_disable(AR0822_NUM_SUPPLIES, ar0822->supplies);
4930*4882a593Smuzhiyun 	}
4931*4882a593Smuzhiyun }
4932*4882a593Smuzhiyun 
ar0822_runtime_resume(struct device * dev)4933*4882a593Smuzhiyun static int ar0822_runtime_resume(struct device *dev)
4934*4882a593Smuzhiyun {
4935*4882a593Smuzhiyun 	struct i2c_client *client = to_i2c_client(dev);
4936*4882a593Smuzhiyun 	struct v4l2_subdev *sd = i2c_get_clientdata(client);
4937*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4938*4882a593Smuzhiyun 
4939*4882a593Smuzhiyun 	return __ar0822_power_on(ar0822);
4940*4882a593Smuzhiyun }
4941*4882a593Smuzhiyun 
ar0822_runtime_suspend(struct device * dev)4942*4882a593Smuzhiyun static int ar0822_runtime_suspend(struct device *dev)
4943*4882a593Smuzhiyun {
4944*4882a593Smuzhiyun 	struct i2c_client *client = to_i2c_client(dev);
4945*4882a593Smuzhiyun 	struct v4l2_subdev *sd = i2c_get_clientdata(client);
4946*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4947*4882a593Smuzhiyun 
4948*4882a593Smuzhiyun 	__ar0822_power_off(ar0822);
4949*4882a593Smuzhiyun 
4950*4882a593Smuzhiyun 	return 0;
4951*4882a593Smuzhiyun }
4952*4882a593Smuzhiyun 
4953*4882a593Smuzhiyun #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
ar0822_open(struct v4l2_subdev * sd,struct v4l2_subdev_fh * fh)4954*4882a593Smuzhiyun static int ar0822_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
4955*4882a593Smuzhiyun {
4956*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4957*4882a593Smuzhiyun 	struct v4l2_mbus_framefmt *try_fmt =
4958*4882a593Smuzhiyun 				v4l2_subdev_get_try_format(sd, fh->pad, 0);
4959*4882a593Smuzhiyun 	const struct ar0822_mode *def_mode = &supported_modes[0];
4960*4882a593Smuzhiyun 	mutex_lock(&ar0822->mutex);
4961*4882a593Smuzhiyun 	/* Initialize try_fmt */
4962*4882a593Smuzhiyun 	try_fmt->width = def_mode->width;
4963*4882a593Smuzhiyun 	try_fmt->height = def_mode->height;
4964*4882a593Smuzhiyun 	try_fmt->code = def_mode->bus_fmt;
4965*4882a593Smuzhiyun 	try_fmt->field = V4L2_FIELD_NONE;
4966*4882a593Smuzhiyun 
4967*4882a593Smuzhiyun 	mutex_unlock(&ar0822->mutex);
4968*4882a593Smuzhiyun 	/* No crop or compose */
4969*4882a593Smuzhiyun 
4970*4882a593Smuzhiyun 	return 0;
4971*4882a593Smuzhiyun }
4972*4882a593Smuzhiyun #endif
4973*4882a593Smuzhiyun 
ar0822_enum_frame_interval(struct v4l2_subdev * sd,struct v4l2_subdev_pad_config * cfg,struct v4l2_subdev_frame_interval_enum * fie)4974*4882a593Smuzhiyun static int ar0822_enum_frame_interval(struct v4l2_subdev *sd,
4975*4882a593Smuzhiyun 				       struct v4l2_subdev_pad_config *cfg,
4976*4882a593Smuzhiyun 				       struct v4l2_subdev_frame_interval_enum *fie)
4977*4882a593Smuzhiyun {
4978*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
4979*4882a593Smuzhiyun 
4980*4882a593Smuzhiyun 	if (fie->index >= ar0822->cfg_num)
4981*4882a593Smuzhiyun 		return -EINVAL;
4982*4882a593Smuzhiyun 	fie->code = supported_modes[fie->index].bus_fmt;
4983*4882a593Smuzhiyun 	fie->width = supported_modes[fie->index].width;
4984*4882a593Smuzhiyun 	fie->height = supported_modes[fie->index].height;
4985*4882a593Smuzhiyun 	fie->interval = supported_modes[fie->index].max_fps;
4986*4882a593Smuzhiyun 	fie->reserved[0] = supported_modes[fie->index].hdr_mode;
4987*4882a593Smuzhiyun 	return 0;
4988*4882a593Smuzhiyun }
4989*4882a593Smuzhiyun 
4990*4882a593Smuzhiyun static const struct dev_pm_ops ar0822_pm_ops = {
4991*4882a593Smuzhiyun 	SET_RUNTIME_PM_OPS(ar0822_runtime_suspend,
4992*4882a593Smuzhiyun 			   ar0822_runtime_resume, NULL)
4993*4882a593Smuzhiyun };
4994*4882a593Smuzhiyun 
4995*4882a593Smuzhiyun #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
4996*4882a593Smuzhiyun static const struct v4l2_subdev_internal_ops ar0822_internal_ops = {
4997*4882a593Smuzhiyun 	.open = ar0822_open,
4998*4882a593Smuzhiyun };
4999*4882a593Smuzhiyun #endif
5000*4882a593Smuzhiyun 
5001*4882a593Smuzhiyun static const struct v4l2_subdev_core_ops ar0822_core_ops = {
5002*4882a593Smuzhiyun 	.s_power = ar0822_s_power,
5003*4882a593Smuzhiyun 	.ioctl = ar0822_ioctl,
5004*4882a593Smuzhiyun #ifdef CONFIG_COMPAT
5005*4882a593Smuzhiyun 	.compat_ioctl32 = ar0822_compat_ioctl32,
5006*4882a593Smuzhiyun #endif
5007*4882a593Smuzhiyun };
5008*4882a593Smuzhiyun 
5009*4882a593Smuzhiyun static const struct v4l2_subdev_video_ops ar0822_video_ops = {
5010*4882a593Smuzhiyun 	.s_stream = ar0822_s_stream,
5011*4882a593Smuzhiyun 	.g_frame_interval = ar0822_g_frame_interval,
5012*4882a593Smuzhiyun };
5013*4882a593Smuzhiyun 
5014*4882a593Smuzhiyun static const struct v4l2_subdev_pad_ops ar0822_pad_ops = {
5015*4882a593Smuzhiyun 	.enum_mbus_code = ar0822_enum_mbus_code,
5016*4882a593Smuzhiyun 	.enum_frame_size = ar0822_enum_frame_sizes,
5017*4882a593Smuzhiyun 	.enum_frame_interval = ar0822_enum_frame_interval,
5018*4882a593Smuzhiyun 	.get_fmt = ar0822_get_fmt,
5019*4882a593Smuzhiyun 	.set_fmt = ar0822_set_fmt,
5020*4882a593Smuzhiyun 	.get_mbus_config = ar0822_g_mbus_config,
5021*4882a593Smuzhiyun };
5022*4882a593Smuzhiyun 
5023*4882a593Smuzhiyun static const struct v4l2_subdev_ops ar0822_subdev_ops = {
5024*4882a593Smuzhiyun 	.core	= &ar0822_core_ops,
5025*4882a593Smuzhiyun 	.video	= &ar0822_video_ops,
5026*4882a593Smuzhiyun 	.pad	= &ar0822_pad_ops,
5027*4882a593Smuzhiyun };
5028*4882a593Smuzhiyun 
5029*4882a593Smuzhiyun 
ar0822_set_ctrl(struct v4l2_ctrl * ctrl)5030*4882a593Smuzhiyun static int ar0822_set_ctrl(struct v4l2_ctrl *ctrl)
5031*4882a593Smuzhiyun {
5032*4882a593Smuzhiyun 	struct ar0822 *ar0822 = container_of(ctrl->handler,
5033*4882a593Smuzhiyun 					     struct ar0822, ctrl_handler);
5034*4882a593Smuzhiyun 	struct i2c_client *client = ar0822->client;
5035*4882a593Smuzhiyun 	s64 max;
5036*4882a593Smuzhiyun 	int ret = 0;
5037*4882a593Smuzhiyun 	u32 again = 0;
5038*4882a593Smuzhiyun 	u32 val = 0;
5039*4882a593Smuzhiyun 
5040*4882a593Smuzhiyun 	/* Propagate change of current control to all related controls */
5041*4882a593Smuzhiyun 	switch (ctrl->id) {
5042*4882a593Smuzhiyun 	case V4L2_CID_VBLANK:
5043*4882a593Smuzhiyun 		/* Update max exposure while meeting expected vblanking */
5044*4882a593Smuzhiyun 		max = ar0822->cur_mode->height + ctrl->val - 4;
5045*4882a593Smuzhiyun 		__v4l2_ctrl_modify_range(ar0822->exposure,
5046*4882a593Smuzhiyun 					 ar0822->exposure->minimum, max,
5047*4882a593Smuzhiyun 					 ar0822->exposure->step,
5048*4882a593Smuzhiyun 					 ar0822->exposure->default_value);
5049*4882a593Smuzhiyun 		break;
5050*4882a593Smuzhiyun 	}
5051*4882a593Smuzhiyun 
5052*4882a593Smuzhiyun 	if (!pm_runtime_get_if_in_use(&client->dev))
5053*4882a593Smuzhiyun 		return 0;
5054*4882a593Smuzhiyun 
5055*4882a593Smuzhiyun 	switch (ctrl->id) {
5056*4882a593Smuzhiyun 	case V4L2_CID_EXPOSURE:
5057*4882a593Smuzhiyun 		if (ar0822->cur_mode->hdr_mode != NO_HDR)
5058*4882a593Smuzhiyun 			goto ctrl_end;
5059*4882a593Smuzhiyun 		ret = ar0822_write_reg(ar0822->client,
5060*4882a593Smuzhiyun 					AR0822_REG_EXP,
5061*4882a593Smuzhiyun 					AR0822_REG_VALUE_16BIT,
5062*4882a593Smuzhiyun 					ctrl->val);
5063*4882a593Smuzhiyun 
5064*4882a593Smuzhiyun 		dev_dbg(&client->dev, "set exposure 0x%x\n",
5065*4882a593Smuzhiyun 			ctrl->val);
5066*4882a593Smuzhiyun 		break;
5067*4882a593Smuzhiyun 	case V4L2_CID_ANALOGUE_GAIN:
5068*4882a593Smuzhiyun 		if (ar0822->cur_mode->hdr_mode != NO_HDR)
5069*4882a593Smuzhiyun 			goto ctrl_end;
5070*4882a593Smuzhiyun 		if (ctrl->val > AR0822_GAIN_MAX) {
5071*4882a593Smuzhiyun 			again = AR0822_GAIN_MAX;
5072*4882a593Smuzhiyun 		} else {
5073*4882a593Smuzhiyun 			again = ctrl->val;
5074*4882a593Smuzhiyun 		}
5075*4882a593Smuzhiyun 		if (ctrl->val < AR0822_GAIN_MIN) {
5076*4882a593Smuzhiyun 			again = AR0822_GAIN_MIN;
5077*4882a593Smuzhiyun 		} else {
5078*4882a593Smuzhiyun 			again = ctrl->val;
5079*4882a593Smuzhiyun 		}
5080*4882a593Smuzhiyun 
5081*4882a593Smuzhiyun 		val = again;
5082*4882a593Smuzhiyun 		ret = ar0822_write_reg(ar0822->client,
5083*4882a593Smuzhiyun 					AR0822_REG_GAIN,
5084*4882a593Smuzhiyun 					AR0822_REG_VALUE_16BIT,
5085*4882a593Smuzhiyun 					val);
5086*4882a593Smuzhiyun 
5087*4882a593Smuzhiyun 		dev_dbg(&client->dev, "Corn set analog gain 0x%x\n",
5088*4882a593Smuzhiyun 			ctrl->val);
5089*4882a593Smuzhiyun 		break;
5090*4882a593Smuzhiyun 	case V4L2_CID_VBLANK:
5091*4882a593Smuzhiyun 		//ret = ar0822_write_reg(ar0822->client, AR0822_REG_VTS,
5092*4882a593Smuzhiyun 		//			AR0822_REG_VALUE_16BIT,
5093*4882a593Smuzhiyun 		//			ctrl->val + ar0822->cur_mode->height);
5094*4882a593Smuzhiyun 		dev_dbg(&client->dev, "set vblank 0x%x\n",
5095*4882a593Smuzhiyun 			ctrl->val);
5096*4882a593Smuzhiyun 		break;
5097*4882a593Smuzhiyun 	case V4L2_CID_TEST_PATTERN:
5098*4882a593Smuzhiyun 		ret = ar0822_enable_test_pattern(ar0822, ctrl->val);
5099*4882a593Smuzhiyun 		break;
5100*4882a593Smuzhiyun 	case V4L2_CID_HFLIP:
5101*4882a593Smuzhiyun 		ret = ar0822_read_reg(ar0822->client, AR0822_FLIP_REG,
5102*4882a593Smuzhiyun 				       AR0822_REG_VALUE_16BIT,
5103*4882a593Smuzhiyun 				       &val);
5104*4882a593Smuzhiyun 		if (ctrl->val)
5105*4882a593Smuzhiyun 			val |= MIRROR_BIT_MASK;
5106*4882a593Smuzhiyun 		else
5107*4882a593Smuzhiyun 			val &= ~MIRROR_BIT_MASK;
5108*4882a593Smuzhiyun 		ret = ar0822_write_reg(ar0822->client, AR0822_FLIP_REG,
5109*4882a593Smuzhiyun 					AR0822_REG_VALUE_16BIT,
5110*4882a593Smuzhiyun 					val);
5111*4882a593Smuzhiyun 		if (ret == 0)
5112*4882a593Smuzhiyun 			ar0822->flip = val;
5113*4882a593Smuzhiyun 		break;
5114*4882a593Smuzhiyun 	case V4L2_CID_VFLIP:
5115*4882a593Smuzhiyun 		ret = ar0822_read_reg(ar0822->client, AR0822_FLIP_REG,
5116*4882a593Smuzhiyun 				       AR0822_REG_VALUE_16BIT,
5117*4882a593Smuzhiyun 				       &val);
5118*4882a593Smuzhiyun 		if (ctrl->val)
5119*4882a593Smuzhiyun 			val |= FLIP_BIT_MASK;
5120*4882a593Smuzhiyun 		else
5121*4882a593Smuzhiyun 			val &= ~FLIP_BIT_MASK;
5122*4882a593Smuzhiyun 		ret = ar0822_write_reg(ar0822->client, AR0822_FLIP_REG,
5123*4882a593Smuzhiyun 					AR0822_REG_VALUE_16BIT,
5124*4882a593Smuzhiyun 					val);
5125*4882a593Smuzhiyun 		if (ret == 0)
5126*4882a593Smuzhiyun 			ar0822->flip = val;
5127*4882a593Smuzhiyun 		break;
5128*4882a593Smuzhiyun 	default:
5129*4882a593Smuzhiyun 		dev_warn(&client->dev, "%s Unhandled id:0x%x, val:0x%x\n",
5130*4882a593Smuzhiyun 			 __func__, ctrl->id, ctrl->val);
5131*4882a593Smuzhiyun 		break;
5132*4882a593Smuzhiyun 	}
5133*4882a593Smuzhiyun 
5134*4882a593Smuzhiyun 
5135*4882a593Smuzhiyun ctrl_end:
5136*4882a593Smuzhiyun 	pm_runtime_put(&client->dev);
5137*4882a593Smuzhiyun 
5138*4882a593Smuzhiyun 	return ret;
5139*4882a593Smuzhiyun }
5140*4882a593Smuzhiyun 
5141*4882a593Smuzhiyun static const struct v4l2_ctrl_ops ar0822_ctrl_ops = {
5142*4882a593Smuzhiyun 	.s_ctrl = ar0822_set_ctrl,
5143*4882a593Smuzhiyun };
5144*4882a593Smuzhiyun 
ar0822_initialize_controls(struct ar0822 * ar0822)5145*4882a593Smuzhiyun static int ar0822_initialize_controls(struct ar0822 *ar0822)
5146*4882a593Smuzhiyun {
5147*4882a593Smuzhiyun 	const struct ar0822_mode *mode;
5148*4882a593Smuzhiyun 	struct v4l2_ctrl_handler *handler;
5149*4882a593Smuzhiyun 	s64 exposure_max, vblank_def;
5150*4882a593Smuzhiyun 	u32 h_blank;
5151*4882a593Smuzhiyun 	int ret;
5152*4882a593Smuzhiyun 	u64 dst_link_freq = 0;
5153*4882a593Smuzhiyun 	u64 dst_pixel_rate = 0;
5154*4882a593Smuzhiyun 
5155*4882a593Smuzhiyun 	handler = &ar0822->ctrl_handler;
5156*4882a593Smuzhiyun 	mode = ar0822->cur_mode;
5157*4882a593Smuzhiyun 	ret = v4l2_ctrl_handler_init(handler, 9);
5158*4882a593Smuzhiyun 	if (ret)
5159*4882a593Smuzhiyun 		return ret;
5160*4882a593Smuzhiyun 	handler->lock = &ar0822->mutex;
5161*4882a593Smuzhiyun 	ar0822->link_freq = v4l2_ctrl_new_int_menu(handler, NULL,
5162*4882a593Smuzhiyun 			V4L2_CID_LINK_FREQ,
5163*4882a593Smuzhiyun 			MIPI_FREQ_MAX_INDEX, 0, link_freq_menu_items);
5164*4882a593Smuzhiyun 
5165*4882a593Smuzhiyun 	dst_link_freq = mode->mipi_freq;
5166*4882a593Smuzhiyun 	dst_pixel_rate = mode->mipi_rate;
5167*4882a593Smuzhiyun 	/* pixel rate = link frequency * 2 * lanes / BITS_PER_SAMPLE */
5168*4882a593Smuzhiyun 	ar0822->pixel_rate = v4l2_ctrl_new_std(handler, NULL,
5169*4882a593Smuzhiyun 			V4L2_CID_PIXEL_RATE,
5170*4882a593Smuzhiyun 			0, PIXEL_RATE_MAX,
5171*4882a593Smuzhiyun 			1, dst_pixel_rate);
5172*4882a593Smuzhiyun 	__v4l2_ctrl_s_ctrl(ar0822->link_freq,
5173*4882a593Smuzhiyun 			   dst_link_freq);
5174*4882a593Smuzhiyun 
5175*4882a593Smuzhiyun 	h_blank = mode->hts_def - mode->width;
5176*4882a593Smuzhiyun 	ar0822->hblank = v4l2_ctrl_new_std(handler, NULL, V4L2_CID_HBLANK,
5177*4882a593Smuzhiyun 				h_blank, h_blank, 1, h_blank);
5178*4882a593Smuzhiyun 	if (ar0822->hblank)
5179*4882a593Smuzhiyun 		ar0822->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
5180*4882a593Smuzhiyun 
5181*4882a593Smuzhiyun 	vblank_def = mode->vts_def - mode->height;
5182*4882a593Smuzhiyun 	ar0822->vblank = v4l2_ctrl_new_std(handler, &ar0822_ctrl_ops,
5183*4882a593Smuzhiyun 				V4L2_CID_VBLANK, vblank_def,
5184*4882a593Smuzhiyun 				AR0822_VTS_MAX - mode->height,
5185*4882a593Smuzhiyun 				1, vblank_def);
5186*4882a593Smuzhiyun 
5187*4882a593Smuzhiyun 	exposure_max = mode->vts_def - 4;
5188*4882a593Smuzhiyun 	ar0822->exposure = v4l2_ctrl_new_std(handler, &ar0822_ctrl_ops,
5189*4882a593Smuzhiyun 				V4L2_CID_EXPOSURE, AR0822_EXPOSURE_MIN,
5190*4882a593Smuzhiyun 				exposure_max, AR0822_EXPOSURE_STEP,
5191*4882a593Smuzhiyun 				mode->exp_def);
5192*4882a593Smuzhiyun 
5193*4882a593Smuzhiyun 	ar0822->anal_gain = v4l2_ctrl_new_std(handler, &ar0822_ctrl_ops,
5194*4882a593Smuzhiyun 				V4L2_CID_ANALOGUE_GAIN, AR0822_GAIN_MIN,
5195*4882a593Smuzhiyun 				AR0822_GAIN_MAX, AR0822_GAIN_STEP,
5196*4882a593Smuzhiyun 				AR0822_GAIN_DEFAULT);
5197*4882a593Smuzhiyun 
5198*4882a593Smuzhiyun 	ar0822->test_pattern = v4l2_ctrl_new_std_menu_items(handler,
5199*4882a593Smuzhiyun 				&ar0822_ctrl_ops, V4L2_CID_TEST_PATTERN,
5200*4882a593Smuzhiyun 				ARRAY_SIZE(ar0822_test_pattern_menu) - 1,
5201*4882a593Smuzhiyun 				0, 0, ar0822_test_pattern_menu);
5202*4882a593Smuzhiyun 
5203*4882a593Smuzhiyun 	ar0822->h_flip = v4l2_ctrl_new_std(handler, &ar0822_ctrl_ops,
5204*4882a593Smuzhiyun 				V4L2_CID_HFLIP, 0, 1, 1, 0);
5205*4882a593Smuzhiyun 
5206*4882a593Smuzhiyun 	ar0822->v_flip = v4l2_ctrl_new_std(handler, &ar0822_ctrl_ops,
5207*4882a593Smuzhiyun 				V4L2_CID_VFLIP, 0, 1, 1, 0);
5208*4882a593Smuzhiyun 	ar0822->flip = 0;
5209*4882a593Smuzhiyun 	if (handler->error) {
5210*4882a593Smuzhiyun 		ret = handler->error;
5211*4882a593Smuzhiyun 		dev_err(&ar0822->client->dev,
5212*4882a593Smuzhiyun 			"Failed to init controls(%d)\n", ret);
5213*4882a593Smuzhiyun 		goto err_free_handler;
5214*4882a593Smuzhiyun 	}
5215*4882a593Smuzhiyun 
5216*4882a593Smuzhiyun 	ar0822->subdev.ctrl_handler = handler;
5217*4882a593Smuzhiyun 	ar0822->has_init_exp = false;
5218*4882a593Smuzhiyun 	ar0822->long_hcg = false;
5219*4882a593Smuzhiyun 	ar0822->middle_hcg = false;
5220*4882a593Smuzhiyun 	ar0822->short_hcg = false;
5221*4882a593Smuzhiyun 
5222*4882a593Smuzhiyun 	return 0;
5223*4882a593Smuzhiyun 
5224*4882a593Smuzhiyun err_free_handler:
5225*4882a593Smuzhiyun 	v4l2_ctrl_handler_free(handler);
5226*4882a593Smuzhiyun 
5227*4882a593Smuzhiyun 	return ret;
5228*4882a593Smuzhiyun }
5229*4882a593Smuzhiyun 
ar0822_check_sensor_id(struct ar0822 * ar0822,struct i2c_client * client)5230*4882a593Smuzhiyun static int ar0822_check_sensor_id(struct ar0822 *ar0822,
5231*4882a593Smuzhiyun 				  struct i2c_client *client)
5232*4882a593Smuzhiyun {
5233*4882a593Smuzhiyun 	struct device *dev = &ar0822->client->dev;
5234*4882a593Smuzhiyun 	u32 id = 0;
5235*4882a593Smuzhiyun 	int ret;
5236*4882a593Smuzhiyun 
5237*4882a593Smuzhiyun 	if (ar0822->is_thunderboot) {
5238*4882a593Smuzhiyun 		dev_info(dev, "Enable thunderboot mode, skip sensor id check\n");
5239*4882a593Smuzhiyun 		return 0;
5240*4882a593Smuzhiyun 	}
5241*4882a593Smuzhiyun 
5242*4882a593Smuzhiyun 	ret = ar0822_read_reg(client, AR0822_REG_CHIP_ID,
5243*4882a593Smuzhiyun 			       AR0822_REG_VALUE_16BIT, &id);
5244*4882a593Smuzhiyun 	if (id != CHIP_ID) {
5245*4882a593Smuzhiyun 		dev_err(dev, "Unexpected sensor id(%06x), ret(%d)\n", id, ret);
5246*4882a593Smuzhiyun 		return -ENODEV;
5247*4882a593Smuzhiyun 	}
5248*4882a593Smuzhiyun 
5249*4882a593Smuzhiyun 	dev_info(dev, "Detected ar0822%04x sensor\n", CHIP_ID);
5250*4882a593Smuzhiyun 
5251*4882a593Smuzhiyun 	return 0;
5252*4882a593Smuzhiyun }
5253*4882a593Smuzhiyun 
ar0822_configure_regulators(struct ar0822 * ar0822)5254*4882a593Smuzhiyun static int ar0822_configure_regulators(struct ar0822 *ar0822)
5255*4882a593Smuzhiyun {
5256*4882a593Smuzhiyun 	unsigned int i;
5257*4882a593Smuzhiyun 
5258*4882a593Smuzhiyun 	for (i = 0; i < AR0822_NUM_SUPPLIES; i++)
5259*4882a593Smuzhiyun 		ar0822->supplies[i].supply = ar0822_supply_names[i];
5260*4882a593Smuzhiyun 
5261*4882a593Smuzhiyun 	return devm_regulator_bulk_get(&ar0822->client->dev,
5262*4882a593Smuzhiyun 				       AR0822_NUM_SUPPLIES,
5263*4882a593Smuzhiyun 				       ar0822->supplies);
5264*4882a593Smuzhiyun }
5265*4882a593Smuzhiyun 
ar0822_probe(struct i2c_client * client,const struct i2c_device_id * id)5266*4882a593Smuzhiyun static int ar0822_probe(struct i2c_client *client,
5267*4882a593Smuzhiyun 			const struct i2c_device_id *id)
5268*4882a593Smuzhiyun {
5269*4882a593Smuzhiyun 	struct device *dev = &client->dev;
5270*4882a593Smuzhiyun 	struct device_node *node = dev->of_node;
5271*4882a593Smuzhiyun 	struct ar0822 *ar0822;
5272*4882a593Smuzhiyun 	struct v4l2_subdev *sd;
5273*4882a593Smuzhiyun 	char facing[2];
5274*4882a593Smuzhiyun 	int ret;
5275*4882a593Smuzhiyun 	u32 i, hdr_mode = 0;
5276*4882a593Smuzhiyun 
5277*4882a593Smuzhiyun 	dev_info(dev, "driver version: %02x.%02x.%02x",
5278*4882a593Smuzhiyun 		DRIVER_VERSION >> 16,
5279*4882a593Smuzhiyun 		(DRIVER_VERSION & 0xff00) >> 8,
5280*4882a593Smuzhiyun 		DRIVER_VERSION & 0x00ff);
5281*4882a593Smuzhiyun 
5282*4882a593Smuzhiyun 	ar0822 = devm_kzalloc(dev, sizeof(*ar0822), GFP_KERNEL);
5283*4882a593Smuzhiyun 	if (!ar0822)
5284*4882a593Smuzhiyun 		return -ENOMEM;
5285*4882a593Smuzhiyun 
5286*4882a593Smuzhiyun 	ret = of_property_read_u32(node, RKMODULE_CAMERA_MODULE_INDEX,
5287*4882a593Smuzhiyun 				   &ar0822->module_index);
5288*4882a593Smuzhiyun 	ret |= of_property_read_string(node, RKMODULE_CAMERA_MODULE_FACING,
5289*4882a593Smuzhiyun 				       &ar0822->module_facing);
5290*4882a593Smuzhiyun 	ret |= of_property_read_string(node, RKMODULE_CAMERA_MODULE_NAME,
5291*4882a593Smuzhiyun 				       &ar0822->module_name);
5292*4882a593Smuzhiyun 	ret |= of_property_read_string(node, RKMODULE_CAMERA_LENS_NAME,
5293*4882a593Smuzhiyun 				       &ar0822->len_name);
5294*4882a593Smuzhiyun 	if (ret) {
5295*4882a593Smuzhiyun 		dev_err(dev, "could not get module information!\n");
5296*4882a593Smuzhiyun 		return -EINVAL;
5297*4882a593Smuzhiyun 	}
5298*4882a593Smuzhiyun 
5299*4882a593Smuzhiyun 	ar0822->is_thunderboot = IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_THUNDER_BOOT_ISP);
5300*4882a593Smuzhiyun 	ret = of_property_read_u32(node, OF_CAMERA_HDR_MODE,
5301*4882a593Smuzhiyun 			&hdr_mode);
5302*4882a593Smuzhiyun 	if (ret) {
5303*4882a593Smuzhiyun 		hdr_mode = NO_HDR;
5304*4882a593Smuzhiyun 		dev_warn(dev, " Get hdr mode failed! no hdr default\n");
5305*4882a593Smuzhiyun 	}
5306*4882a593Smuzhiyun 	ar0822->cfg_num = ARRAY_SIZE(supported_modes);
5307*4882a593Smuzhiyun 	if(ar0822->cfg_num == 0){
5308*4882a593Smuzhiyun 		dev_err(dev, "no any supported mode providec, force exit probe!\n");
5309*4882a593Smuzhiyun 		return -EINVAL;
5310*4882a593Smuzhiyun 	}
5311*4882a593Smuzhiyun 	ar0822->cur_mode = &supported_modes[0];//initialize.
5312*4882a593Smuzhiyun 	for (i = 0; i < ar0822->cfg_num; i++) {
5313*4882a593Smuzhiyun 		if (hdr_mode == supported_modes[i].hdr_mode) {
5314*4882a593Smuzhiyun 			ar0822->cur_mode = &supported_modes[i];
5315*4882a593Smuzhiyun 			break;
5316*4882a593Smuzhiyun 		}
5317*4882a593Smuzhiyun 	}
5318*4882a593Smuzhiyun 	ar0822->client = client;
5319*4882a593Smuzhiyun 
5320*4882a593Smuzhiyun 	ar0822->xvclk = devm_clk_get(dev, "xvclk");
5321*4882a593Smuzhiyun 	if (IS_ERR(ar0822->xvclk)) {
5322*4882a593Smuzhiyun 		dev_err(dev, "Failed to get xvclk\n");
5323*4882a593Smuzhiyun 		return -EINVAL;
5324*4882a593Smuzhiyun 	}
5325*4882a593Smuzhiyun 
5326*4882a593Smuzhiyun 	ar0822->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS);
5327*4882a593Smuzhiyun 	if (IS_ERR(ar0822->reset_gpio))
5328*4882a593Smuzhiyun 		dev_warn(dev, "Failed to get reset-gpios\n");
5329*4882a593Smuzhiyun 
5330*4882a593Smuzhiyun 	ar0822->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_ASIS);
5331*4882a593Smuzhiyun 	if (IS_ERR(ar0822->pwdn_gpio))
5332*4882a593Smuzhiyun 		dev_warn(dev, "Failed to get pwdn-gpios\n");
5333*4882a593Smuzhiyun 
5334*4882a593Smuzhiyun 	ar0822->pinctrl = devm_pinctrl_get(dev);
5335*4882a593Smuzhiyun 	if (!IS_ERR(ar0822->pinctrl)) {
5336*4882a593Smuzhiyun 		ar0822->pins_default =
5337*4882a593Smuzhiyun 			pinctrl_lookup_state(ar0822->pinctrl,
5338*4882a593Smuzhiyun 					     OF_CAMERA_PINCTRL_STATE_DEFAULT);
5339*4882a593Smuzhiyun 		if (IS_ERR(ar0822->pins_default))
5340*4882a593Smuzhiyun 			dev_err(dev, "could not get default pinstate\n");
5341*4882a593Smuzhiyun 
5342*4882a593Smuzhiyun 		ar0822->pins_sleep =
5343*4882a593Smuzhiyun 			pinctrl_lookup_state(ar0822->pinctrl,
5344*4882a593Smuzhiyun 					     OF_CAMERA_PINCTRL_STATE_SLEEP);
5345*4882a593Smuzhiyun 		if (IS_ERR(ar0822->pins_sleep))
5346*4882a593Smuzhiyun 			dev_err(dev, "could not get sleep pinstate\n");
5347*4882a593Smuzhiyun 	} else {
5348*4882a593Smuzhiyun 		dev_err(dev, "no pinctrl\n");
5349*4882a593Smuzhiyun 	}
5350*4882a593Smuzhiyun 
5351*4882a593Smuzhiyun 	ret = ar0822_configure_regulators(ar0822);
5352*4882a593Smuzhiyun 	if (ret) {
5353*4882a593Smuzhiyun 		dev_err(dev, "Failed to get power regulators\n");
5354*4882a593Smuzhiyun 		return ret;
5355*4882a593Smuzhiyun 	}
5356*4882a593Smuzhiyun 
5357*4882a593Smuzhiyun 	mutex_init(&ar0822->mutex);
5358*4882a593Smuzhiyun 
5359*4882a593Smuzhiyun 	sd = &ar0822->subdev;
5360*4882a593Smuzhiyun 	v4l2_i2c_subdev_init(sd, client, &ar0822_subdev_ops);
5361*4882a593Smuzhiyun 	ret = ar0822_initialize_controls(ar0822);
5362*4882a593Smuzhiyun 	if (ret)
5363*4882a593Smuzhiyun 		goto err_destroy_mutex;
5364*4882a593Smuzhiyun 
5365*4882a593Smuzhiyun 	ret = __ar0822_power_on(ar0822);
5366*4882a593Smuzhiyun 	if (ret)
5367*4882a593Smuzhiyun 		goto err_free_handler;
5368*4882a593Smuzhiyun 
5369*4882a593Smuzhiyun 	ret = ar0822_check_sensor_id(ar0822, client);
5370*4882a593Smuzhiyun 	if (ret)
5371*4882a593Smuzhiyun 		goto err_power_off;
5372*4882a593Smuzhiyun 
5373*4882a593Smuzhiyun #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
5374*4882a593Smuzhiyun 	sd->internal_ops = &ar0822_internal_ops;
5375*4882a593Smuzhiyun 	sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
5376*4882a593Smuzhiyun #endif
5377*4882a593Smuzhiyun #if defined(CONFIG_MEDIA_CONTROLLER)
5378*4882a593Smuzhiyun 	ar0822->pad.flags = MEDIA_PAD_FL_SOURCE;
5379*4882a593Smuzhiyun 	sd->entity.function = MEDIA_ENT_F_CAM_SENSOR;
5380*4882a593Smuzhiyun 	ret = media_entity_pads_init(&sd->entity, 1, &ar0822->pad);
5381*4882a593Smuzhiyun 	if (ret < 0)
5382*4882a593Smuzhiyun 		goto err_power_off;
5383*4882a593Smuzhiyun #endif
5384*4882a593Smuzhiyun 
5385*4882a593Smuzhiyun 	memset(facing, 0, sizeof(facing));
5386*4882a593Smuzhiyun 	if (strcmp(ar0822->module_facing, "back") == 0)
5387*4882a593Smuzhiyun 		facing[0] = 'b';
5388*4882a593Smuzhiyun 	else
5389*4882a593Smuzhiyun 		facing[0] = 'f';
5390*4882a593Smuzhiyun 
5391*4882a593Smuzhiyun 	snprintf(sd->name, sizeof(sd->name), "m%02d_%s_%s %s",
5392*4882a593Smuzhiyun 		 ar0822->module_index, facing,
5393*4882a593Smuzhiyun 		 AR0822_NAME, dev_name(sd->dev));
5394*4882a593Smuzhiyun 	ret = v4l2_async_register_subdev_sensor_common(sd);
5395*4882a593Smuzhiyun 	if (ret) {
5396*4882a593Smuzhiyun 		dev_err(dev, "v4l2 async register subdev failed\n");
5397*4882a593Smuzhiyun 		goto err_clean_entity;
5398*4882a593Smuzhiyun 	}
5399*4882a593Smuzhiyun 
5400*4882a593Smuzhiyun 	pm_runtime_set_active(dev);
5401*4882a593Smuzhiyun 	pm_runtime_enable(dev);
5402*4882a593Smuzhiyun 	pm_runtime_idle(dev);
5403*4882a593Smuzhiyun #ifdef USED_SYS_DEBUG
5404*4882a593Smuzhiyun 	add_sysfs_interfaces(dev);
5405*4882a593Smuzhiyun #endif
5406*4882a593Smuzhiyun 	return 0;
5407*4882a593Smuzhiyun 
5408*4882a593Smuzhiyun err_clean_entity:
5409*4882a593Smuzhiyun #if defined(CONFIG_MEDIA_CONTROLLER)
5410*4882a593Smuzhiyun 	media_entity_cleanup(&sd->entity);
5411*4882a593Smuzhiyun #endif
5412*4882a593Smuzhiyun err_power_off:
5413*4882a593Smuzhiyun 	__ar0822_power_off(ar0822);
5414*4882a593Smuzhiyun err_free_handler:
5415*4882a593Smuzhiyun 	v4l2_ctrl_handler_free(&ar0822->ctrl_handler);
5416*4882a593Smuzhiyun err_destroy_mutex:
5417*4882a593Smuzhiyun 	mutex_destroy(&ar0822->mutex);
5418*4882a593Smuzhiyun 
5419*4882a593Smuzhiyun 	return ret;
5420*4882a593Smuzhiyun }
5421*4882a593Smuzhiyun 
ar0822_remove(struct i2c_client * client)5422*4882a593Smuzhiyun static int ar0822_remove(struct i2c_client *client)
5423*4882a593Smuzhiyun {
5424*4882a593Smuzhiyun 	struct v4l2_subdev *sd = i2c_get_clientdata(client);
5425*4882a593Smuzhiyun 	struct ar0822 *ar0822 = to_ar0822(sd);
5426*4882a593Smuzhiyun 
5427*4882a593Smuzhiyun 	v4l2_async_unregister_subdev(sd);
5428*4882a593Smuzhiyun #if defined(CONFIG_MEDIA_CONTROLLER)
5429*4882a593Smuzhiyun 	media_entity_cleanup(&sd->entity);
5430*4882a593Smuzhiyun #endif
5431*4882a593Smuzhiyun 	v4l2_ctrl_handler_free(&ar0822->ctrl_handler);
5432*4882a593Smuzhiyun 	mutex_destroy(&ar0822->mutex);
5433*4882a593Smuzhiyun 
5434*4882a593Smuzhiyun 	pm_runtime_disable(&client->dev);
5435*4882a593Smuzhiyun 	if (!pm_runtime_status_suspended(&client->dev))
5436*4882a593Smuzhiyun 		__ar0822_power_off(ar0822);
5437*4882a593Smuzhiyun 	pm_runtime_set_suspended(&client->dev);
5438*4882a593Smuzhiyun 
5439*4882a593Smuzhiyun 	return 0;
5440*4882a593Smuzhiyun }
5441*4882a593Smuzhiyun 
5442*4882a593Smuzhiyun #if IS_ENABLED(CONFIG_OF)
5443*4882a593Smuzhiyun static const struct of_device_id ar0822_of_match[] = {
5444*4882a593Smuzhiyun 	{ .compatible = "onsemi,ar0822" },
5445*4882a593Smuzhiyun 	{},
5446*4882a593Smuzhiyun };
5447*4882a593Smuzhiyun MODULE_DEVICE_TABLE(of, ar0822_of_match);
5448*4882a593Smuzhiyun #endif
5449*4882a593Smuzhiyun 
5450*4882a593Smuzhiyun static const struct i2c_device_id ar0822_match_id[] = {
5451*4882a593Smuzhiyun 	{ "onsemi,ar0822", 0 },
5452*4882a593Smuzhiyun 	{ },
5453*4882a593Smuzhiyun };
5454*4882a593Smuzhiyun 
5455*4882a593Smuzhiyun static struct i2c_driver ar0822_i2c_driver = {
5456*4882a593Smuzhiyun 	.driver = {
5457*4882a593Smuzhiyun 		.name = AR0822_NAME,
5458*4882a593Smuzhiyun 		.pm = &ar0822_pm_ops,
5459*4882a593Smuzhiyun 		.of_match_table = of_match_ptr(ar0822_of_match),
5460*4882a593Smuzhiyun 	},
5461*4882a593Smuzhiyun 	.probe		= &ar0822_probe,
5462*4882a593Smuzhiyun 	.remove		= &ar0822_remove,
5463*4882a593Smuzhiyun 	.id_table	= ar0822_match_id,
5464*4882a593Smuzhiyun };
5465*4882a593Smuzhiyun 
5466*4882a593Smuzhiyun #ifdef CONFIG_ROCKCHIP_THUNDER_BOOT
5467*4882a593Smuzhiyun module_i2c_driver(ar0822_i2c_driver);
5468*4882a593Smuzhiyun #else
sensor_mod_init(void)5469*4882a593Smuzhiyun static int __init sensor_mod_init(void)
5470*4882a593Smuzhiyun {
5471*4882a593Smuzhiyun 	return i2c_add_driver(&ar0822_i2c_driver);
5472*4882a593Smuzhiyun }
5473*4882a593Smuzhiyun 
sensor_mod_exit(void)5474*4882a593Smuzhiyun static void __exit sensor_mod_exit(void)
5475*4882a593Smuzhiyun {
5476*4882a593Smuzhiyun 	i2c_del_driver(&ar0822_i2c_driver);
5477*4882a593Smuzhiyun }
5478*4882a593Smuzhiyun 
5479*4882a593Smuzhiyun device_initcall_sync(sensor_mod_init);
5480*4882a593Smuzhiyun module_exit(sensor_mod_exit);
5481*4882a593Smuzhiyun #endif
5482*4882a593Smuzhiyun 
5483*4882a593Smuzhiyun MODULE_DESCRIPTION("Onsemi ar0822 sensor driver");
5484*4882a593Smuzhiyun MODULE_LICENSE("GPL");
5485