summaryrefslogtreecommitdiff
path: root/drivers/media/video/wmt_v4l2/sensors/sp0718
diff options
context:
space:
mode:
authorSrikant Patnaik2015-01-13 15:08:24 +0530
committerSrikant Patnaik2015-01-13 15:08:24 +0530
commit97327692361306d1e6259021bc425e32832fdb50 (patch)
treefe9088f3248ec61e24f404f21b9793cb644b7f01 /drivers/media/video/wmt_v4l2/sensors/sp0718
parent2d05a8f663478a44e088d122e0d62109bbc801d0 (diff)
parenta3a8b90b61e21be3dde9101c4e86c881e0f06210 (diff)
downloadFOSSEE-netbook-kernel-source-97327692361306d1e6259021bc425e32832fdb50.tar.gz
FOSSEE-netbook-kernel-source-97327692361306d1e6259021bc425e32832fdb50.tar.bz2
FOSSEE-netbook-kernel-source-97327692361306d1e6259021bc425e32832fdb50.zip
dirty fix to merging
Diffstat (limited to 'drivers/media/video/wmt_v4l2/sensors/sp0718')
-rwxr-xr-xdrivers/media/video/wmt_v4l2/sensors/sp0718/sp0718-gt7302-gmt.h992
-rwxr-xr-xdrivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.c344
-rwxr-xr-xdrivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.h990
3 files changed, 2326 insertions, 0 deletions
diff --git a/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718-gt7302-gmt.h b/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718-gt7302-gmt.h
new file mode 100755
index 00000000..986da258
--- /dev/null
+++ b/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718-gt7302-gmt.h
@@ -0,0 +1,992 @@
+
+#ifndef __SP0718_H_
+#define __SP0718_H_
+
+#define SP0718_NORMAL_Y0ffset 0x20
+#define SP0718_LOWLIGHT_Y0ffset 0x25
+//AE target
+#define SP0718_P1_0xeb 0x78
+#define SP0718_P1_0xec 0x6c
+//HEQ
+#define SP0718_P1_0x10 0x00//outdoor
+#define SP0718_P1_0x14 0x1e //0x18
+#define SP0718_P1_0x11 0x00//nr
+#define SP0718_P1_0x15 0x14 //0x10
+#define SP0718_P1_0x12 0x00//dummy
+#define SP0718_P1_0x16 0x14 //0x10
+#define SP0718_P1_0x13 0x00//low
+#define SP0718_P1_0x17 0x08
+//AWB pre gain
+#define SP0718_P2_0x26 0xc8
+#define SP0718_P2_0x27 0xb6
+//SAT u
+#define SP0718_P1_0xd3 0x9c
+#define SP0718_P1_0xd4 0x98
+#define SP0718_P1_0xd5 0x8c
+#define SP0718_P1_0xd6 0x84
+//SAT v
+#define SP0718_P1_0xd7 0x9c
+#define SP0718_P1_0xd8 0x98
+#define SP0718_P1_0xd9 0x8c
+#define SP0718_P1_0xda 0x84
+
+
+// Scene Mode
+uint8_t sp0718_scene_mode_auto[] = {
+ 0xfd,0x01,
+ 0xcd,SP0718_NORMAL_Y0ffset,
+ 0xce,0x1f,
+ //capture preview daylight 24M 50hz 15-8FPS
+
+ 0xfd,0x00,
+ 0x03,0x01,
+ 0x04,0xb0,
+ 0x06,0x00,
+ 0x09,0x03,
+ 0x0a,0x31,
+ 0xfd,0x01,
+ 0xef,0x48,
+ 0xf0,0x00,
+ 0x02,0x0e,
+ 0x03,0x01,
+ 0x06,0x42,
+ 0x07,0x00,
+ 0x08,0x01,
+ 0x09,0x00,
+ //Status,
+ 0xfd,0x02,
+ 0xbe,0xf0,
+ 0xbf,0x03,
+ 0xd0,0xf0,
+ 0xd1,0x03,
+ 0xfd,0x01,
+ 0x5b,0x03,
+ 0x5c,0xf0,
+
+
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_scene_mode_night[] = {
+ 0xfd,0x01,
+ 0xcd,SP0718_LOWLIGHT_Y0ffset,
+ 0xce,0x1f,
+ //capture preview night 24M 50hz 15-6FPS
+ 0xfd,0x00,
+ 0x03,0x01,
+ 0x04,0xce,
+ 0x06,0x00,
+ 0x09,0x02,
+ 0x0a,0xc4,
+ 0xfd,0x01,
+ 0xef,0x4d,
+ 0xf0,0x00,
+ 0x02,0x10,
+ 0x03,0x01,
+ 0x06,0x47,
+ 0x07,0x00,
+ 0x08,0x01,
+ 0x09,0x00,
+ //Statu
+ 0xfd,0x02,
+ 0xbe,0xd0,
+ 0xbf,0x04,
+ 0xd0,0xd0,
+ 0xd1,0x04,
+ 0xfd,0x01,
+ 0x5b,0x04,
+ 0x5c,0xd0,
+
+ 0xfd,0x00,
+};
+
+// White Balance
+uint8_t sp0718_wb_auto[] = {
+ 0xfd,0x01,
+ 0x32,0x15,
+ 0xfd,0x02,
+ 0x26,0xc8,
+ 0x27,0xb6,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_incandescent[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0xaa,
+ 0x27,0xce,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_fluorescent[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0x91,
+ 0x27,0xc8,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_daylight[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0xc8,
+ 0x27,0x89,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_cloudy[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0xdc,
+ 0x27,0x75,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_tungsten[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0x75,
+ 0x27,0xe2,
+ 0xfd,0x00,
+};
+
+
+// Exposure
+uint8_t sp0718_exposure_neg2[] = {
+ 0xfd,0x01,
+ 0xdb,0xe0,//level -3
+};
+
+uint8_t sp0718_exposure_neg1[] = {
+ 0xfd,0x01,
+ 0xdb,0xf0,
+};
+
+uint8_t sp0718_exposure_zero[] = {
+ 0xfd,0x01,
+ 0xdb,0x00,//level -3
+};
+
+uint8_t sp0718_exposure_pos1[] = {
+ 0xfd,0x01,
+ 0xdb,0x10,
+};
+
+uint8_t sp0718_exposure_pos2[] = {
+ 0xfd,0x01,
+ 0xdb,0x20,
+};
+
+
+// Color Effect
+uint8_t sp0718_colorfx_none[] = {
+ 0xfd, 0x01,
+ 0x66, 0x00,
+ 0x67, 0x80,
+ 0x68, 0x80,
+};
+
+uint8_t sp0718_colorfx_bw[] = {
+ 0xfd, 0x01,
+ 0x66, 0x20,
+ 0x67, 0x80,
+ 0x68, 0x80,
+};
+
+uint8_t sp0718_colorfx_sepia[] = {
+ 0xfd, 0x01,
+ 0x66, 0x10,
+ 0x67, 0xc0,
+ 0x68, 0x20,
+};
+
+uint8_t sp0718_colorfx_negative[] = {
+ //Negative
+ 0xfd, 0x01,
+ 0x66, 0x04,
+ 0x67, 0x80,
+ 0x68, 0x80,
+};
+
+uint8_t sp0718_colorfx_emboss[] = {
+};
+
+uint8_t sp0718_colorfx_sketch[] = {
+};
+
+uint8_t sp0718_colorfx_sky_blue[] = {
+ 0xfd, 0x01,
+ 0x66, 0x10,
+ 0x67, 0x20,
+ 0x68, 0xf0,
+};
+
+uint8_t sp0718_colorfx_grass_green[] = {
+ 0xfd, 0x01,
+ 0x66, 0x10,
+ 0x67, 0x20,
+ 0x68, 0x20,
+};
+
+uint8_t sp0718_colorfx_skin_whiten[] = {
+};
+
+uint8_t sp0718_colorfx_vivid[] = {
+};
+
+// Brightness
+uint8_t sp0718_brightness_neg4[] = {
+ 0xfd,0x01,
+ 0xdb,0xc0,
+};
+
+uint8_t sp0718_brightness_neg3[] = {
+ 0xfd,0x01,
+ 0xdb,0xd0,
+};
+
+uint8_t sp0718_brightness_neg2[] = {
+ 0xfd,0x01,
+ 0xdb,0xe0,
+};
+
+uint8_t sp0718_brightness_neg1[] = {
+ 0xfd,0x01,
+ 0xdb,0xf0,
+};
+
+uint8_t sp0718_brightness_zero[] = {
+ 0xfd,0x01,
+ 0xdb,0x00
+};
+
+uint8_t sp0718_brightness_pos1[] = {
+ 0xfd,0x01,
+ 0xdb,0x10,
+};
+
+uint8_t sp0718_brightness_pos2[] = {
+ 0xfd,0x01,
+ 0xdb,0x20,
+};
+
+uint8_t sp0718_brightness_pos3[] = {
+ 0xfd,0x01,
+ 0xdb,0x30,
+};
+
+uint8_t sp0718_brightness_pos4[] = {
+ 0xfd,0x01,
+ 0xdb,0x40,
+};
+
+
+// contrast
+uint8_t sp0718_contrast_neg4[] = {
+ //level -4
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x10,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x10,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x10,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_neg3[] = {
+ //level -3
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x0c,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x0c,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x0c,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_neg2[] = {
+ //level -2
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x08,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x08,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x08,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_neg1[] = {
+ //level -1
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x04,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x04,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x04,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_zero[] = {
+ //level 0
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_pos1[] = {
+ //level +1
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x08, //out
+ 0x14,SP0718_P1_0x14+0x08,
+ 0x11,SP0718_P1_0x11+0x08, //nr
+ 0x15,SP0718_P1_0x15+0x08,
+ 0x12,SP0718_P1_0x12+0x08, //dummy
+ 0x16,SP0718_P1_0x16+0x08,
+ 0x13,SP0718_P1_0x13+0x08, //low
+ 0x17,SP0718_P1_0x17+0x08,
+};
+
+uint8_t sp0718_contrast_pos2[] = {
+ //level +2
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x10, //out
+ 0x14,SP0718_P1_0x14+0x10,
+ 0x11,SP0718_P1_0x11+0x10, //nr
+ 0x15,SP0718_P1_0x15+0x10,
+ 0x12,SP0718_P1_0x12+0x10, //dummy
+ 0x16,SP0718_P1_0x16+0x10,
+ 0x13,SP0718_P1_0x13+0x10, //low
+ 0x17,SP0718_P1_0x17+0x10,
+};
+
+uint8_t sp0718_contrast_pos3[] = {
+ //level +3
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x18, //out
+ 0x14,SP0718_P1_0x14+0x18,
+ 0x11,SP0718_P1_0x11+0x18, //nr
+ 0x15,SP0718_P1_0x15+0x18,
+ 0x12,SP0718_P1_0x12+0x18, //dummy
+ 0x16,SP0718_P1_0x16+0x18,
+ 0x13,SP0718_P1_0x13+0x18, //low
+ 0x17,SP0718_P1_0x17+0x18,
+};
+
+uint8_t sp0718_contrast_pos4[] = {
+ //level +4
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x20, //out
+ 0x14,SP0718_P1_0x14+0x20,
+ 0x11,SP0718_P1_0x11+0x20, //nr
+ 0x15,SP0718_P1_0x15+0x20,
+ 0x12,SP0718_P1_0x12+0x20, //dummy
+ 0x16,SP0718_P1_0x16+0x20,
+ 0x13,SP0718_P1_0x13+0x20, //low
+ 0x17,SP0718_P1_0x17+0x20,
+};
+
+// saturation
+uint8_t sp0718_saturation_neg4[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x20,
+ 0xd4,SP0718_P1_0xd4-0x20,
+ 0xd5,SP0718_P1_0xd5-0x20,
+ 0xd6,SP0718_P1_0xd6-0x20,
+ //sat v -0x20
+ 0xd7,SP0718_P1_0xd7-0x20,
+ 0xd8,SP0718_P1_0xd8-0x20,
+ 0xd9,SP0718_P1_0xd9-0x20,
+ 0xda,SP0718_P1_0xda-0x20,
+};
+
+uint8_t sp0718_saturation_neg3[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x18,
+ 0xd4,SP0718_P1_0xd4-0x18,
+ 0xd5,SP0718_P1_0xd5-0x18,
+ 0xd6,SP0718_P1_0xd6-0x18,
+ //sat v -0x18
+ 0xd7,SP0718_P1_0xd7-0x18,
+ 0xd8,SP0718_P1_0xd8-0x18,
+ 0xd9,SP0718_P1_0xd9-0x18,
+ 0xda,SP0718_P1_0xda-0x18,
+};
+
+uint8_t sp0718_saturation_neg2[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x10,
+ 0xd4,SP0718_P1_0xd4-0x10,
+ 0xd5,SP0718_P1_0xd5-0x10,
+ 0xd6,SP0718_P1_0xd6-0x10,
+ //sat v -0x10
+ 0xd7,SP0718_P1_0xd7-0x10,
+ 0xd8,SP0718_P1_0xd8-0x10,
+ 0xd9,SP0718_P1_0xd9-0x10,
+ 0xda,SP0718_P1_0xda-0x10,
+};
+
+uint8_t sp0718_saturation_neg1[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x08,
+ 0xd4,SP0718_P1_0xd4-0x08,
+ 0xd5,SP0718_P1_0xd5-0x08,
+ 0xd6,SP0718_P1_0xd6-0x08,
+ //sat v -0x08
+ 0xd7,SP0718_P1_0xd7-0x08,
+ 0xd8,SP0718_P1_0xd8-0x08,
+ 0xd9,SP0718_P1_0xd9-0x08,
+ 0xda,SP0718_P1_0xda-0x08,
+};
+
+uint8_t sp0718_saturation_zero[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3,
+ 0xd4,SP0718_P1_0xd4,
+ 0xd5,SP0718_P1_0xd5,
+ 0xd6,SP0718_P1_0xd6,
+ //sat v
+ 0xd7,SP0718_P1_0xd7,
+ 0xd8,SP0718_P1_0xd8,
+ 0xd9,SP0718_P1_0xd9,
+ 0xda,SP0718_P1_0xda,
+};
+
+uint8_t sp0718_saturation_pos1[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x08,
+ 0xd4,SP0718_P1_0xd4+0x08,
+ 0xd5,SP0718_P1_0xd5+0x08,
+ 0xd6,SP0718_P1_0xd6+0x08,
+ //sat v +0x08
+ 0xd7,SP0718_P1_0xd7+0x08,
+ 0xd8,SP0718_P1_0xd8+0x08,
+ 0xd9,SP0718_P1_0xd9+0x08,
+ 0xda,SP0718_P1_0xda+0x08,
+};
+
+uint8_t sp0718_saturation_pos2[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x10,
+ 0xd4,SP0718_P1_0xd4+0x10,
+ 0xd5,SP0718_P1_0xd5+0x10,
+ 0xd6,SP0718_P1_0xd6+0x10,
+ //sat v +0x10
+ 0xd7,SP0718_P1_0xd7+0x10,
+ 0xd8,SP0718_P1_0xd8+0x10,
+ 0xd9,SP0718_P1_0xd9+0x10,
+ 0xda,SP0718_P1_0xda+0x10,
+};
+
+uint8_t sp0718_saturation_pos3[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x18,
+ 0xd4,SP0718_P1_0xd4+0x18,
+ 0xd5,SP0718_P1_0xd5+0x18,
+ 0xd6,SP0718_P1_0xd6+0x18,
+ //sat v +0x18
+ 0xd7,SP0718_P1_0xd7+0x18,
+ 0xd8,SP0718_P1_0xd8+0x18,
+ 0xd9,SP0718_P1_0xd9+0x18,
+ 0xda,SP0718_P1_0xda+0x18,
+};
+
+uint8_t sp0718_saturation_pos4[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x20,
+ 0xd4,SP0718_P1_0xd4+0x20,
+ 0xd5,SP0718_P1_0xd5+0x20,
+ 0xd6,SP0718_P1_0xd6+0x20,
+ //sat v +0x20
+ 0xd7,SP0718_P1_0xd7+0x20,
+ 0xd8,SP0718_P1_0xd8+0x20,
+ 0xd9,SP0718_P1_0xd9+0x20,
+ 0xda,SP0718_P1_0xda+0x20,
+};
+
+
+// Resolution
+
+// QCIF
+uint8_t sp0718_176x144[]={
+};
+
+// QVGA
+uint8_t sp0718_320x240[]={
+};
+
+// CIF
+uint8_t sp0718_352x288[]={
+};
+
+// VGA
+uint8_t sp0718_640x480[]={
+ 0xfd,0x01,
+ 0x4a,0x00,
+ 0x4b,0x01,
+ 0x4c,0xe0,
+ 0x4d,0x00,
+ 0x4e,0x02,
+ 0x4f,0x80,
+
+ 0xfd,0x02,
+ 0x0f,0x00, //1//subsampledisable
+
+ 0xfd,0x00,
+ 0x30,0x00,
+};
+
+// SVGA
+uint8_t sp0718_800x600[]={
+};
+
+// XGA
+uint8_t sp0718_1024x768[]={
+};
+
+// 720p
+uint8_t sp0718_1280x720[]={
+};
+
+// UXGA
+uint8_t sp0718_1600x1200[]={
+};
+
+// 1080p
+uint8_t sp0718_1920x1080[]={
+};
+
+// QXGA
+uint8_t sp0718_2048x1536[]={
+};
+
+uint8_t sp0718_2592x1944[]={
+};
+
+// Initiliztion
+uint8_t sp0718_default_regs_init[] = {
+ 0xfd,0x00,
+ 0x1C,0x00,
+ 0x31,0x10,
+ 0x27,0xb3,//0xb3 //2x gain
+
+ 0x1b,0x17, // driver
+ 0x1f,0x30,
+ 0x30,0x00, // div clk
+
+ 0x26,0xaa,
+ 0x37,0x02,
+ 0x28,0x8f,
+ 0x1a,0x73,
+ 0x1e,0x1b,
+ 0x21,0x06, //blackout voltage
+ 0x22,0x2a, //colbias
+ 0x0f,0x3f,
+ 0x10,0x3e,
+ 0x11,0x00,
+ 0x12,0x01,
+ 0x13,0x3f,
+ 0x14,0x04,
+ 0x15,0x30,
+ 0x16,0x31,
+ 0x17,0x01,
+ 0x69,0x31,
+ 0x6a,0x2a,
+ 0x6b,0x33,
+ 0x6c,0x1a,
+ 0x6d,0x32,
+ 0x6e,0x28,
+ 0x6f,0x29,
+ 0x70,0x34,
+ 0x71,0x18,
+ 0x36,0x00,//02 delete badframe
+ 0xfd,0x01,
+ 0x5d,0x51,//position
+ 0xf2,0x19,
+
+ //Blacklevel
+ 0x1f,0x10,
+ 0x20,0x1f,
+ //pregain
+ 0xfd,0x02,
+ 0x00,0x88,
+ 0x01,0x88,
+ //SI15_SP0718 24M 50Hz 15-8fps
+
+ 0xfd,0x00,
+ 0x03,0x01,
+ 0x04,0xb0,
+ 0x06,0x00,
+ 0x09,0x03,
+ 0x0a,0x31,
+ 0xfd,0x01,
+ 0xef,0x48,
+ 0xf0,0x00,
+ 0x02,0x0e,
+ 0x03,0x01,
+ 0x06,0x42,
+ 0x07,0x00,
+ 0x08,0x01,
+ 0x09,0x00,
+ //Status,
+ 0xfd,0x02,
+ 0xbe,0xf0,
+ 0xbf,0x03,
+ 0xd0,0xf0,
+ 0xd1,0x03,
+ 0xfd,0x01,
+ 0x5b,0x03,
+ 0x5c,0xf0,
+
+ //rpc
+ 0xfd,0x01,
+ 0xe0,0x40,////24//4c//48//4c//44//4c//3e//3c//3a//38//rpc_1base_max
+ 0xe1,0x30,////24//3c//38//3c//36//3c//30//2e//2c//2a//rpc_2base_max
+ 0xe2,0x2e,////24//34//30//34//2e//34//2a//28//26//26//rpc_3base_max
+ 0xe3,0x2a,////24//2a//2e//2c//2e//2a//2e//26//24//22//rpc_4base_max
+ 0xe4,0x2a,////24//2a//2e//2c//2e//2a//2e//26//24//22//rpc_5base_max
+ 0xe5,0x28,////24//2c//2a//2c//28//2c//24//22//20//rpc_6base_max
+ 0xe6,0x28,////24//2c//2a//2c//28//2c//24//22//20//rpc_7base_max
+ 0xe7,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_8base_max
+ 0xe8,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_9base_max
+ 0xe9,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_10base_max
+ 0xea,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_11base_max
+ 0xf3,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_12base_max
+ 0xf4,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_13base_max
+ //ae gain &status
+ 0xfd,0x01,
+ 0x04,0xe0,//rpc_max_indr
+ 0x05,0x26,//1e//rpc_min_indr
+ 0x0a,0xa0,//rpc_max_outdr
+ 0x0b,0x26,//rpc_min_outdr
+ 0x5a,0x40,//dp rpc
+ 0xfd,0x02,
+ 0xbc,0xa0,//rpc_heq_low
+ 0xbd,0x80,//rpc_heq_dummy
+ 0xb8,0x80,//mean_normal_dummy
+ 0xb9,0x90,//mean_dummy_normal
+
+ //ae target
+ 0xfd,0x01,
+ 0xeb,SP0718_P1_0xeb,//78
+ 0xec,SP0718_P1_0xec,//78
+ 0xed,0x0a,
+ 0xee,0x10,
+
+ //lsc
+ 0xfd,0x01,
+ 0x26,0x30,
+ 0x27,0x2c,
+ 0x28,0x07,
+ 0x29,0x08,
+ 0x2a,0x40,
+ 0x2b,0x03,
+ 0x2c,0x00,
+ 0x2d,0x00,
+
+ 0xa1,0x24,
+ 0xa2,0x27,
+ 0xa3,0x27,
+ 0xa4,0x2b,
+ 0xa5,0x1c,
+ 0xa6,0x1a,
+ 0xa7,0x1a,
+ 0xa8,0x1a,
+ 0xa9,0x18,
+ 0xaa,0x1c,
+ 0xab,0x17,
+ 0xac,0x17,
+ 0xad,0x08,
+ 0xae,0x08,
+ 0xaf,0x08,
+ 0xb0,0x00,
+ 0xb1,0x00,
+ 0xb2,0x00,
+ 0xb3,0x00,
+ 0xb4,0x00,
+ 0xb5,0x02,
+ 0xb6,0x06,
+ 0xb7,0x00,
+ 0xb8,0x00,
+
+
+ //DP
+ 0xfd,0x01,
+ 0x48,0x09,
+ 0x49,0x99,
+
+ //awb
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x00,
+ 0xe7,0x03,
+ 0xfd,0x02,
+ 0x26,0xc8,
+ 0x27,0xb6,
+ 0xfd,0x00,
+ 0xe7,0x00,
+ 0xfd,0x02,
+ 0x1b,0x80,
+ 0x1a,0x80,
+ 0x18,0x26,
+ 0x19,0x28,
+ 0xfd,0x02,
+ 0x2a,0x00,
+ 0x2b,0x08,
+ 0x28,0xef,//0xa0//f8
+ 0x29,0x20,
+
+ //d65 90 e2 93
+ 0x66,0x42,//0x59//0x60////0x58//4e//0x48
+ 0x67,0x62,//0x74//0x70//0x78//6b//0x69
+ 0x68,0xee,//0xd6//0xe3//0xd5//cb//0xaa
+ 0x69,0x18,//0xf4//0xf3//0xf8//ed
+ 0x6a,0xa6,//0xa5
+ //indoor 91
+ 0x7c,0x3b,//0x45//30//41//0x2f//0x44
+ 0x7d,0x5b,//0x70//60//55//0x4b//0x6f
+ 0x7e,0x15,//0a//0xed
+ 0x7f,0x39,//23//0x28
+ 0x80,0xaa,//0xa6
+ //cwf 92
+ 0x70,0x3e,//0x38//41//0x3b
+ 0x71,0x59,//0x5b//5f//0x55
+ 0x72,0x31,//0x30//22//0x28
+ 0x73,0x4f,//0x54//44//0x45
+ 0x74,0xaa,
+ //tl84 93
+ 0x6b,0x1b,//0x18//11
+ 0x6c,0x3a,//0x3c//25//0x2f
+ 0x6d,0x3e,//0x3a//35
+ 0x6e,0x59,//0x5c//46//0x52
+ 0x6f,0xaa,
+ //f 94
+ 0x61,0xea,//0x03//0x00//f4//0xed
+ 0x62,0x03,//0x1a//0x25//0f//0f
+ 0x63,0x6a,//0x62//0x60//52//0x5d
+ 0x64,0x8a,//0x7d//0x85//70//0x75//0x8f
+ 0x65,0x6a,//0xaa//6a
+
+ 0x75,0x80,
+ 0x76,0x20,
+ 0x77,0x00,
+ 0x24,0x25,
+
+ //针对室内调偏不过灯箱测试使用//针对人脸调偏
+ 0x20,0xd8,
+ 0x21,0xa3,//82//a8偏暗照度还有调偏
+ 0x22,0xd0,//e3//bc
+ 0x23,0x86,
+
+ //outdoor r\b range
+ 0x78,0xc3,//d8
+ 0x79,0xba,//82
+ 0x7a,0xa6,//e3
+ 0x7b,0x99,//86
+
+
+ //skin
+ 0x08,0x15,//
+ 0x09,0x04,//
+ 0x0a,0x20,//
+ 0x0b,0x12,//
+ 0x0c,0x27,//
+ 0x0d,0x06,//
+ 0x0e,0x63,//
+
+ //wt th
+ 0x3b,0x10,
+ //gw
+ 0x31,0x60,
+ 0x32,0x60,
+ 0x33,0xc0,
+ 0x35,0x6f,
+
+ // sharp
+ 0xfd,0x02,
+ 0xde,0x0f,
+ 0xd2,0x02,//6//控制黑白边;0-边粗,f-变细
+ 0xd3,0x06,
+ 0xd4,0x06,
+ 0xd5,0x06,
+ 0xd7,0x20,//10//2x根据增益判断轮廓阈值
+ 0xd8,0x30,//24//1A//4x
+ 0xd9,0x38,//28//8x
+ 0xda,0x38,//16x
+ 0xdb,0x08,//
+ 0xe8,0x58,//48//轮廓强度
+ 0xe9,0x48,
+ 0xea,0x30,
+ 0xeb,0x20,
+ 0xec,0x48,//60//80
+ 0xed,0x48,//50//60
+ 0xee,0x30,
+ 0xef,0x20,
+ //平坦区域锐化力度
+ 0xf3,0x50,
+ 0xf4,0x10,
+ 0xf5,0x10,
+ 0xf6,0x10,
+ //dns
+ 0xfd,0x01,
+ 0x64,0x44,//沿方向边缘平滑力度 //0-最强,8-最弱
+ 0x65,0x22,
+ 0x6d,0x04,//8//强平滑(平坦)区域平滑阈值
+ 0x6e,0x06,//8
+ 0x6f,0x10,
+ 0x70,0x10,
+ 0x71,0x08,//0d//弱平滑(非平坦)区域平滑阈值
+ 0x72,0x12,//1b
+ 0x73,0x1c,//20
+ 0x74,0x24,
+ 0x75,0x44,//[7:4]平坦区域强度,[3:0]非平坦区域强度;0-最强,8-最弱;
+ 0x76,0x02,//46
+ 0x77,0x02,//33
+ 0x78,0x02,
+ 0x81,0x10,//18//2x//根据增益判定区域阈值,低于这个做强平滑、大于这个做弱平滑;
+ 0x82,0x20,//30//4x
+ 0x83,0x30,//40//8x
+ 0x84,0x48,//50//16x
+ 0x85,0x0c,//12/8+reg0x81 第二阈值,在平坦和非平坦区域做连接
+ 0xfd,0x02,
+ 0xdc,0x0f,
+
+ //gamma
+ 0xfd,0x01,
+ 0x8b,0x00,//00//00
+ 0x8c,0x0c,//0c//09
+ 0x8d,0x19,//19//17
+ 0x8e,0x25,//25//24
+ 0x8f,0x30,//30//33
+ 0x90,0x44,//44//47
+ 0x91,0x4e,//54//58
+ 0x92,0x5f,//61//64
+ 0x93,0x6c,//6d//70
+ 0x94,0x82,//80//81
+ 0x95,0x94,//92//8f
+ 0x96,0xa6,//a1//9b
+ 0x97,0xb2,//ad//a5
+ 0x98,0xbf,//ba//b0
+ 0x99,0xc9,//c4//ba
+ 0x9a,0xd1,//cf//c4
+ 0x9b,0xd8,//d7//ce
+ 0x9c,0xe0,//e0//d7
+ 0x9d,0xe8,//e8//e1
+ 0x9e,0xef,//ef//ea
+ 0x9f,0xf8,//f7//f5
+ 0xa0,0xff,//ff//ff
+ //CCM
+ 0xfd,0x02,
+ 0x15,0xd0,//b>th
+ 0x16,0x95,//r<th
+ //gc镜头照人脸偏黄
+ //!F
+ 0xa0,0x80,//80
+ 0xa1,0x00,//00
+ 0xa2,0x00,//00
+ 0xa3,0x00,//06
+ 0xa4,0x8c,//8c
+ 0xa5,0xf4,//ed
+ 0xa6,0x0c,//0c
+ 0xa7,0xf4,//f4
+ 0xa8,0x80,//80
+ 0xa9,0x00,//00
+ 0xaa,0x30,//30
+ 0xab,0x0c,//0c
+ //F
+ 0xac,0x8c,
+ 0xad,0xf4,
+ 0xae,0x00,
+ 0xaf,0xed,
+ 0xb0,0x8c,
+ 0xb1,0x06,
+ 0xb2,0xf4,
+ 0xb3,0xf4,
+ 0xb4,0x99,
+ 0xb5,0x0c,
+ 0xb6,0x03,
+ 0xb7,0x0f,
+
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3,//0x88//50
+ 0xd4,SP0718_P1_0xd4,//0x88//50
+ 0xd5,SP0718_P1_0xd5,//50
+ 0xd6,SP0718_P1_0xd6,//50
+ //sat v
+ 0xd7,SP0718_P1_0xd7,//0x88//50
+ 0xd8,SP0718_P1_0xd8,//0x88//50
+ 0xd9,SP0718_P1_0xd9,//50
+ 0xda,SP0718_P1_0xda,//50
+ //auto_sat
+ 0xdd,0x30,
+ 0xde,0x10,
+ 0xd2,0x01,//autosa_en
+ 0xdf,0xff,//a0//y_mean_th
+
+ //uv_th
+ 0xfd,0x01,
+ 0xc2,0xaa,
+ 0xc3,0xaa,
+ 0xc4,0x66,
+ 0xc5,0x66,
+
+ //heq
+ 0xfd,0x01,
+ 0x0f,0xff,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+
+ 0xfd,0x01,
+ 0xcd,0x20,
+ 0xce,0x1f,
+ 0xcf,0x20,
+ 0xd0,0x55,
+ //auto
+ 0xfd,0x01,
+ 0xfb,0x33,
+ //0x32,0x15,
+ 0x33,0xff,
+ 0x34,0xe7,
+ 0x35,0x40,
+ 0x36,0x08,
+};
+
+// Exit
+uint8_t sp0718_default_regs_exit[] = {
+};
+
+#endif /* #ifndef __SP0718_H_ */
diff --git a/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.c b/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.c
new file mode 100755
index 00000000..5ecd7a0c
--- /dev/null
+++ b/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.c
@@ -0,0 +1,344 @@
+
+#include "../cmos-subdev.h"
+#include "../../wmt-vid.h"
+#include "sp0718.h"
+
+#define sensor_write_array(sd, arr, sz) \
+ cmos_init_8bit_addr(arr, sz, (sd)->i2c_addr)
+
+#define sensor_read(sd, reg) \
+ wmt_vid_i2c_read(sd->i2c_addr, reg)
+
+#define sensor_write(sd, reg, val) \
+ wmt_vid_i2c_write(sd->i2c_addr, reg, val)
+
+struct cmos_win_size {
+ char *name;
+ int width;
+ int height;
+ uint8_t *regs;
+ size_t size;
+};
+
+#define CMOS_WIN_SIZE(n, w, h, r) \
+ {.name = n, .width = w , .height = h, .regs = r, .size = ARRAY_SIZE(r) }
+
+static const struct cmos_win_size cmos_supported_win_sizes[] = {
+// CMOS_WIN_SIZE("QVGA", 320, 240, sp0718_320x240),
+ CMOS_WIN_SIZE("VGA", 640, 480, sp0718_640x480),
+};
+
+#define FILP_REG_INIT_VALUE 0x10
+#define DELAY_INTERVAL 50
+#define RETRY_TIMES 10
+
+static const struct cmos_win_size *cmos_select_win(u32 *width, u32 *height)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(cmos_supported_win_sizes); i++) {
+ if (cmos_supported_win_sizes[i].width == *width &&
+ cmos_supported_win_sizes[i].height == *height) {
+ *width = cmos_supported_win_sizes[i].width;
+ *height = cmos_supported_win_sizes[i].height;
+ return &cmos_supported_win_sizes[i];
+ }
+ }
+ return NULL;
+}
+
+static int sensor_s_wb(struct cmos_subdev *sd, enum v4l2_wb_mode value)
+{
+ uint8_t *regs;
+ size_t size;
+
+ switch (value) {
+ case WHITE_BALANCE_AUTO:
+ regs = sp0718_wb_auto;
+ size = ARRAY_SIZE(sp0718_wb_auto);
+ break;
+ case WHITE_BALANCE_INCANDESCENCE:
+ regs = sp0718_wb_incandescent;
+ size = ARRAY_SIZE(sp0718_wb_incandescent);
+ break;
+ case WHITE_BALANCE_DAYLIGHT:
+ regs = sp0718_wb_daylight;
+ size = ARRAY_SIZE(sp0718_wb_daylight);
+ break;
+ case WHITE_BALANCE_CLOUDY:
+ regs = sp0718_wb_cloudy;
+ size = ARRAY_SIZE(sp0718_wb_cloudy);
+ break;
+ case WHITE_BALANCE_FLUORESCENT:
+ regs = sp0718_wb_fluorescent;
+ size = ARRAY_SIZE(sp0718_wb_fluorescent);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ sensor_write_array(sd, regs, size);
+ return 0;
+}
+
+static int sensor_s_scenemode(struct cmos_subdev *sd, enum v4l2_scene_mode value)
+{
+ uint8_t *regs;
+ size_t size;
+
+ switch (value) {
+ case SCENE_MODE_AUTO:
+ regs = sp0718_scene_mode_auto;
+ size = ARRAY_SIZE(sp0718_scene_mode_auto);
+ break;
+ case SCENE_MODE_NIGHTSHOT:
+ regs = sp0718_scene_mode_night;
+ size = ARRAY_SIZE(sp0718_scene_mode_night);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ sensor_write_array(sd, regs, size);
+ return 0;
+}
+
+static int sensor_s_exposure(struct cmos_subdev *sd, int value)
+{
+ uint8_t *regs;
+ size_t size;
+
+ switch (value) {
+ case -2:
+ regs = sp0718_exposure_neg2;
+ size = ARRAY_SIZE(sp0718_exposure_neg2);
+ break;
+ case -1:
+ regs = sp0718_exposure_neg1;
+ size = ARRAY_SIZE(sp0718_exposure_neg1);
+ break;
+ case 0:
+ regs = sp0718_exposure_zero;
+ size = ARRAY_SIZE(sp0718_exposure_zero);
+ break;
+ case 1:
+ regs = sp0718_exposure_pos1;
+ size = ARRAY_SIZE(sp0718_exposure_pos1);
+ break;
+ case 2:
+ regs = sp0718_exposure_pos2;
+ size = ARRAY_SIZE(sp0718_exposure_pos2);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ sensor_write_array(sd, regs, size);
+ return 0;
+}
+
+static int sensor_s_hflip(struct cmos_subdev *sd, int value)
+{
+ uint8_t data,tmp=0;
+ uint8_t retry_times=0;
+
+ sensor_write(sd, 0xfd, 0x00); // set page0
+ data = sensor_read(sd, 0x31);
+ switch (value) {
+ case 0:
+ data &= ~0x20;
+ break;
+ case 1:
+ data |= 0x20;
+ break;
+ default:
+ return -EINVAL;
+ }
+ tmp=data | FILP_REG_INIT_VALUE;
+ for(retry_times=0;retry_times<RETRY_TIMES;retry_times++){
+ sensor_write(sd, 0x31, tmp);
+ msleep(50+retry_times*DELAY_INTERVAL);
+ if(sensor_read(sd, 0x31)==tmp)
+ break;
+ }
+ printk(KERN_DEBUG "%s, 0x%x\n", __func__, data);
+ return 0;
+}
+
+static int sensor_s_vflip(struct cmos_subdev *sd, int value)
+{
+ uint8_t data,tmp=0;
+ uint8_t retry_times=0;
+
+ sensor_write(sd, 0xfd, 0x00); // set page0
+ data = sensor_read(sd, 0x31);
+ switch (value) {
+ case 0:
+ data &= ~0x40;
+ break;
+ case 1:
+ data |= 0x40;
+ break;
+ default:
+ return -EINVAL;
+ }
+ tmp=data | FILP_REG_INIT_VALUE;
+ for(retry_times=0;retry_times<RETRY_TIMES;retry_times++){
+ sensor_write(sd, 0x31, tmp);
+ msleep(50+retry_times*DELAY_INTERVAL);
+ if(sensor_read(sd, 0x31)==tmp)
+ break;
+ }
+ printk(KERN_DEBUG "%s, 0x%x\n", __func__, data);
+ return 0;
+}
+
+static int sensor_queryctrl(struct cmos_subdev *sd, struct v4l2_queryctrl *qc)
+{
+ switch (qc->id) {
+ case V4L2_CID_VFLIP:
+ case V4L2_CID_HFLIP:
+ return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
+ case V4L2_CID_CAMERA_SCENE_MODE:
+ return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
+ case V4L2_CID_DO_WHITE_BALANCE:
+ return v4l2_ctrl_query_fill(qc, 0, 3, 1, 0);
+ case V4L2_CID_EXPOSURE:
+ return v4l2_ctrl_query_fill(qc, -2, 2, 1, 0);
+ }
+ return -EINVAL;
+}
+
+static int sensor_s_ctrl(struct cmos_subdev *sd, struct v4l2_control *ctrl)
+{
+ switch (ctrl->id) {
+ case V4L2_CID_CAMERA_SCENE_MODE:
+ return sensor_s_scenemode(sd, ctrl->value);
+ case V4L2_CID_DO_WHITE_BALANCE:
+ return sensor_s_wb(sd, ctrl->value);
+ case V4L2_CID_EXPOSURE:
+ return sensor_s_exposure(sd, ctrl->value);
+ case V4L2_CID_HFLIP:
+ return sensor_s_hflip(sd, ctrl->value);
+ case V4L2_CID_VFLIP:
+ return sensor_s_vflip(sd, ctrl->value);
+ default:
+ case WMT_V4L2_CID_CAMERA_ANTIBANDING:
+ return -EINVAL;
+ }
+ return -EINVAL;
+}
+
+static int sensor_g_mbus_fmt(struct cmos_subdev *sd,
+ struct v4l2_mbus_framefmt *mf)
+{
+ return -EINVAL;
+}
+
+static int sensor_s_mbus_fmt(struct cmos_subdev *sd,
+ struct v4l2_mbus_framefmt *mf)
+{
+ const struct cmos_win_size *win;
+
+ win = cmos_select_win(&mf->width, &mf->height);
+ if (!win) {
+ pr_err("%s, s_mbus_fmt failed, width %d, height %d\n",
+ sd->name, mf->width, mf->height);
+ return -EINVAL;
+ }
+
+ sensor_write_array(sd, win->regs, win->size);
+ return 0;
+}
+
+static int sensor_try_mbus_fmt(struct cmos_subdev *sd,
+ struct v4l2_mbus_framefmt *mf)
+{
+ return 0;
+}
+
+static int sensor_enum_framesizes(struct cmos_subdev *sd,
+ struct v4l2_frmsizeenum *fsize)
+{
+ int i;
+ int num_valid = -1;
+ __u32 index = fsize->index;
+
+ for (i = 0; i < ARRAY_SIZE(cmos_supported_win_sizes); i++) {
+ const struct cmos_win_size *win = &cmos_supported_win_sizes[index];
+ if (index == ++num_valid) {
+ fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+ fsize->discrete.width = win->width;
+ fsize->discrete.height = win->height;
+ return 0;
+ }
+ }
+
+ return -EINVAL;
+}
+
+static int sensor_identify(struct cmos_subdev *sd)
+{
+ uint8_t data = 0;
+
+ sensor_write(sd, 0xfd, 0x0);
+ data = sensor_read(sd, 0x02);
+
+ return (data == sd->id) ? 0 : -EINVAL;
+}
+
+static int sensor_init(struct cmos_subdev *sd)
+{
+ if (sensor_identify(sd)) {
+ return -1;
+ }
+
+ sensor_write_array(sd, sp0718_default_regs_init,
+ ARRAY_SIZE(sp0718_default_regs_init));
+ return 0;
+}
+
+static int sensor_exit(struct cmos_subdev *sd)
+{
+ sensor_write_array(sd, sp0718_default_regs_exit,
+ ARRAY_SIZE(sp0718_default_regs_exit));
+ return 0;
+}
+
+static struct cmos_subdev_ops sp0718_ops = {
+ .identify = sensor_identify,
+ .init = sensor_init,
+ .exit = sensor_exit,
+ .queryctrl = sensor_queryctrl,
+ .s_ctrl = sensor_s_ctrl,
+ .s_mbus_fmt = sensor_s_mbus_fmt,
+ .g_mbus_fmt = sensor_g_mbus_fmt,
+ .try_mbus_fmt = sensor_try_mbus_fmt,
+ .enum_framesizes = sensor_enum_framesizes,
+};
+
+struct cmos_subdev sp0718 = {
+ .name = "sp0718",
+ .i2c_addr = 0x21,
+ .id = 0x71,
+ .max_width = 640,
+ .max_height = 480,
+ .ops = &sp0718_ops,
+};
+
+#if 0
+static int __init sp0718_init(void)
+{
+ return cmos_register_sudbdev(&sp0718);
+}
+
+static void __exit sp0718_exit(void)
+{
+ return cmos_unregister_subdev(&sp0718);
+}
+
+module_init(sp0718_init);
+module_exit(sp0718_exit);
+
+MODULE_LICENSE("GPL");
+#endif
diff --git a/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.h b/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.h
new file mode 100755
index 00000000..e868f6c0
--- /dev/null
+++ b/drivers/media/video/wmt_v4l2/sensors/sp0718/sp0718.h
@@ -0,0 +1,990 @@
+
+#ifndef __SP0718_H_
+#define __SP0718_H_
+
+#define SP0718_NORMAL_Y0ffset 0x20
+#define SP0718_LOWLIGHT_Y0ffset 0x25
+//AE target
+#define SP0718_P1_0xeb 0x78
+#define SP0718_P1_0xec 0x6c
+//HEQ
+#define SP0718_P1_0x10 0x00//outdoor
+#define SP0718_P1_0x14 0x20
+#define SP0718_P1_0x11 0x00//nr
+#define SP0718_P1_0x15 0x14
+#define SP0718_P1_0x12 0x00//dummy
+#define SP0718_P1_0x16 0x10
+#define SP0718_P1_0x13 0x00//low
+#define SP0718_P1_0x17 0x08
+//AWB pre gain
+#define SP0718_P2_0x26 0xc8
+#define SP0718_P2_0x27 0xb6
+//SAT u
+#define SP0718_P1_0xd3 0x9c
+#define SP0718_P1_0xd4 0x98
+#define SP0718_P1_0xd5 0x8c
+#define SP0718_P1_0xd6 0x84
+//SAT v
+#define SP0718_P1_0xd7 0x9c
+#define SP0718_P1_0xd8 0x98
+#define SP0718_P1_0xd9 0x8c
+#define SP0718_P1_0xda 0x84
+
+
+// Scene Mode
+uint8_t sp0718_scene_mode_auto[] = {
+ 0xfd,0x01,
+ 0xcd,SP0718_NORMAL_Y0ffset,
+ 0xce,0x1f,
+ //capture preview daylight 24M 50hz 15-8FPS
+ 0xfd,0x00,
+ 0x03,0x01,
+ 0x04,0xce,
+ 0x06,0x00,
+ 0x09,0x02,
+ 0x0a,0xc4,
+ 0xfd,0x01,
+ 0xef,0x4d,
+ 0xf0,0x00,
+ 0x02,0x0c,
+ 0x03,0x01,
+ 0x06,0x47,
+ 0x07,0x00,
+ 0x08,0x01,
+ 0x09,0x00,
+ //Status
+ 0xfd,0x02,
+ 0xbe,0x9c,
+ 0xbf,0x03,
+ 0xd0,0x9c,
+ 0xd1,0x03,
+ 0xfd,0x01,
+ 0x5b,0x03,
+ 0x5c,0x9c,
+
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_scene_mode_night[] = {
+ 0xfd,0x01,
+ 0xcd,SP0718_LOWLIGHT_Y0ffset,
+ 0xce,0x1f,
+ //capture preview night 24M 50hz 15-6FPS
+ 0xfd,0x00,
+ 0x03,0x01,
+ 0x04,0xce,
+ 0x06,0x00,
+ 0x09,0x02,
+ 0x0a,0xc4,
+ 0xfd,0x01,
+ 0xef,0x4d,
+ 0xf0,0x00,
+ 0x02,0x10,
+ 0x03,0x01,
+ 0x06,0x47,
+ 0x07,0x00,
+ 0x08,0x01,
+ 0x09,0x00,
+ //Statu
+ 0xfd,0x02,
+ 0xbe,0xd0,
+ 0xbf,0x04,
+ 0xd0,0xd0,
+ 0xd1,0x04,
+ 0xfd,0x01,
+ 0x5b,0x04,
+ 0x5c,0xd0,
+
+ 0xfd,0x00,
+};
+
+// White Balance
+uint8_t sp0718_wb_auto[] = {
+ 0xfd,0x01,
+ 0x32,0x15,
+ 0xfd,0x02,
+ 0x26,0xc8,
+ 0x27,0xb6,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_incandescent[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0xaa,
+ 0x27,0xce,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_fluorescent[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0x91,
+ 0x27,0xc8,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_daylight[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0xc8,
+ 0x27,0x89,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_cloudy[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0xdc,
+ 0x27,0x75,
+ 0xfd,0x00,
+};
+
+uint8_t sp0718_wb_tungsten[] = {
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x02,
+ 0x26,0x75,
+ 0x27,0xe2,
+ 0xfd,0x00,
+};
+
+
+// Exposure
+uint8_t sp0718_exposure_neg2[] = {
+ 0xfd,0x01,
+ 0xdb,0xe0,//level -3
+};
+
+uint8_t sp0718_exposure_neg1[] = {
+ 0xfd,0x01,
+ 0xdb,0xf0,
+};
+
+uint8_t sp0718_exposure_zero[] = {
+ 0xfd,0x01,
+ 0xdb,0x00,//level -3
+};
+
+uint8_t sp0718_exposure_pos1[] = {
+ 0xfd,0x01,
+ 0xdb,0x10,
+};
+
+uint8_t sp0718_exposure_pos2[] = {
+ 0xfd,0x01,
+ 0xdb,0x20,
+};
+
+
+// Color Effect
+uint8_t sp0718_colorfx_none[] = {
+ 0xfd, 0x01,
+ 0x66, 0x00,
+ 0x67, 0x80,
+ 0x68, 0x80,
+};
+
+uint8_t sp0718_colorfx_bw[] = {
+ 0xfd, 0x01,
+ 0x66, 0x20,
+ 0x67, 0x80,
+ 0x68, 0x80,
+};
+
+uint8_t sp0718_colorfx_sepia[] = {
+ 0xfd, 0x01,
+ 0x66, 0x10,
+ 0x67, 0xc0,
+ 0x68, 0x20,
+};
+
+uint8_t sp0718_colorfx_negative[] = {
+ //Negative
+ 0xfd, 0x01,
+ 0x66, 0x04,
+ 0x67, 0x80,
+ 0x68, 0x80,
+};
+
+uint8_t sp0718_colorfx_emboss[] = {
+};
+
+uint8_t sp0718_colorfx_sketch[] = {
+};
+
+uint8_t sp0718_colorfx_sky_blue[] = {
+ 0xfd, 0x01,
+ 0x66, 0x10,
+ 0x67, 0x20,
+ 0x68, 0xf0,
+};
+
+uint8_t sp0718_colorfx_grass_green[] = {
+ 0xfd, 0x01,
+ 0x66, 0x10,
+ 0x67, 0x20,
+ 0x68, 0x20,
+};
+
+uint8_t sp0718_colorfx_skin_whiten[] = {
+};
+
+uint8_t sp0718_colorfx_vivid[] = {
+};
+
+// Brightness
+uint8_t sp0718_brightness_neg4[] = {
+ 0xfd,0x01,
+ 0xdb,0xc0,
+};
+
+uint8_t sp0718_brightness_neg3[] = {
+ 0xfd,0x01,
+ 0xdb,0xd0,
+};
+
+uint8_t sp0718_brightness_neg2[] = {
+ 0xfd,0x01,
+ 0xdb,0xe0,
+};
+
+uint8_t sp0718_brightness_neg1[] = {
+ 0xfd,0x01,
+ 0xdb,0xf0,
+};
+
+uint8_t sp0718_brightness_zero[] = {
+ 0xfd,0x01,
+ 0xdb,0x00
+};
+
+uint8_t sp0718_brightness_pos1[] = {
+ 0xfd,0x01,
+ 0xdb,0x10,
+};
+
+uint8_t sp0718_brightness_pos2[] = {
+ 0xfd,0x01,
+ 0xdb,0x20,
+};
+
+uint8_t sp0718_brightness_pos3[] = {
+ 0xfd,0x01,
+ 0xdb,0x30,
+};
+
+uint8_t sp0718_brightness_pos4[] = {
+ 0xfd,0x01,
+ 0xdb,0x40,
+};
+
+
+// contrast
+uint8_t sp0718_contrast_neg4[] = {
+ //level -4
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x10,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x10,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x10,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_neg3[] = {
+ //level -3
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x0c,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x0c,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x0c,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_neg2[] = {
+ //level -2
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x08,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x08,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x08,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_neg1[] = {
+ //level -1
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14-0x04,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15-0x04,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16-0x04,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_zero[] = {
+ //level 0
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+};
+
+uint8_t sp0718_contrast_pos1[] = {
+ //level +1
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x08, //out
+ 0x14,SP0718_P1_0x14+0x08,
+ 0x11,SP0718_P1_0x11+0x08, //nr
+ 0x15,SP0718_P1_0x15+0x08,
+ 0x12,SP0718_P1_0x12+0x08, //dummy
+ 0x16,SP0718_P1_0x16+0x08,
+ 0x13,SP0718_P1_0x13+0x08, //low
+ 0x17,SP0718_P1_0x17+0x08,
+};
+
+uint8_t sp0718_contrast_pos2[] = {
+ //level +2
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x10, //out
+ 0x14,SP0718_P1_0x14+0x10,
+ 0x11,SP0718_P1_0x11+0x10, //nr
+ 0x15,SP0718_P1_0x15+0x10,
+ 0x12,SP0718_P1_0x12+0x10, //dummy
+ 0x16,SP0718_P1_0x16+0x10,
+ 0x13,SP0718_P1_0x13+0x10, //low
+ 0x17,SP0718_P1_0x17+0x10,
+};
+
+uint8_t sp0718_contrast_pos3[] = {
+ //level +3
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x18, //out
+ 0x14,SP0718_P1_0x14+0x18,
+ 0x11,SP0718_P1_0x11+0x18, //nr
+ 0x15,SP0718_P1_0x15+0x18,
+ 0x12,SP0718_P1_0x12+0x18, //dummy
+ 0x16,SP0718_P1_0x16+0x18,
+ 0x13,SP0718_P1_0x13+0x18, //low
+ 0x17,SP0718_P1_0x17+0x18,
+};
+
+uint8_t sp0718_contrast_pos4[] = {
+ //level +4
+ 0xfd,0x01,
+ 0x10,SP0718_P1_0x10+0x20, //out
+ 0x14,SP0718_P1_0x14+0x20,
+ 0x11,SP0718_P1_0x11+0x20, //nr
+ 0x15,SP0718_P1_0x15+0x20,
+ 0x12,SP0718_P1_0x12+0x20, //dummy
+ 0x16,SP0718_P1_0x16+0x20,
+ 0x13,SP0718_P1_0x13+0x20, //low
+ 0x17,SP0718_P1_0x17+0x20,
+};
+
+// saturation
+uint8_t sp0718_saturation_neg4[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x20,
+ 0xd4,SP0718_P1_0xd4-0x20,
+ 0xd5,SP0718_P1_0xd5-0x20,
+ 0xd6,SP0718_P1_0xd6-0x20,
+ //sat v -0x20
+ 0xd7,SP0718_P1_0xd7-0x20,
+ 0xd8,SP0718_P1_0xd8-0x20,
+ 0xd9,SP0718_P1_0xd9-0x20,
+ 0xda,SP0718_P1_0xda-0x20,
+};
+
+uint8_t sp0718_saturation_neg3[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x18,
+ 0xd4,SP0718_P1_0xd4-0x18,
+ 0xd5,SP0718_P1_0xd5-0x18,
+ 0xd6,SP0718_P1_0xd6-0x18,
+ //sat v -0x18
+ 0xd7,SP0718_P1_0xd7-0x18,
+ 0xd8,SP0718_P1_0xd8-0x18,
+ 0xd9,SP0718_P1_0xd9-0x18,
+ 0xda,SP0718_P1_0xda-0x18,
+};
+
+uint8_t sp0718_saturation_neg2[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x10,
+ 0xd4,SP0718_P1_0xd4-0x10,
+ 0xd5,SP0718_P1_0xd5-0x10,
+ 0xd6,SP0718_P1_0xd6-0x10,
+ //sat v -0x10
+ 0xd7,SP0718_P1_0xd7-0x10,
+ 0xd8,SP0718_P1_0xd8-0x10,
+ 0xd9,SP0718_P1_0xd9-0x10,
+ 0xda,SP0718_P1_0xda-0x10,
+};
+
+uint8_t sp0718_saturation_neg1[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3-0x08,
+ 0xd4,SP0718_P1_0xd4-0x08,
+ 0xd5,SP0718_P1_0xd5-0x08,
+ 0xd6,SP0718_P1_0xd6-0x08,
+ //sat v -0x08
+ 0xd7,SP0718_P1_0xd7-0x08,
+ 0xd8,SP0718_P1_0xd8-0x08,
+ 0xd9,SP0718_P1_0xd9-0x08,
+ 0xda,SP0718_P1_0xda-0x08,
+};
+
+uint8_t sp0718_saturation_zero[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3,
+ 0xd4,SP0718_P1_0xd4,
+ 0xd5,SP0718_P1_0xd5,
+ 0xd6,SP0718_P1_0xd6,
+ //sat v
+ 0xd7,SP0718_P1_0xd7,
+ 0xd8,SP0718_P1_0xd8,
+ 0xd9,SP0718_P1_0xd9,
+ 0xda,SP0718_P1_0xda,
+};
+
+uint8_t sp0718_saturation_pos1[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x08,
+ 0xd4,SP0718_P1_0xd4+0x08,
+ 0xd5,SP0718_P1_0xd5+0x08,
+ 0xd6,SP0718_P1_0xd6+0x08,
+ //sat v +0x08
+ 0xd7,SP0718_P1_0xd7+0x08,
+ 0xd8,SP0718_P1_0xd8+0x08,
+ 0xd9,SP0718_P1_0xd9+0x08,
+ 0xda,SP0718_P1_0xda+0x08,
+};
+
+uint8_t sp0718_saturation_pos2[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x10,
+ 0xd4,SP0718_P1_0xd4+0x10,
+ 0xd5,SP0718_P1_0xd5+0x10,
+ 0xd6,SP0718_P1_0xd6+0x10,
+ //sat v +0x10
+ 0xd7,SP0718_P1_0xd7+0x10,
+ 0xd8,SP0718_P1_0xd8+0x10,
+ 0xd9,SP0718_P1_0xd9+0x10,
+ 0xda,SP0718_P1_0xda+0x10,
+};
+
+uint8_t sp0718_saturation_pos3[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x18,
+ 0xd4,SP0718_P1_0xd4+0x18,
+ 0xd5,SP0718_P1_0xd5+0x18,
+ 0xd6,SP0718_P1_0xd6+0x18,
+ //sat v +0x18
+ 0xd7,SP0718_P1_0xd7+0x18,
+ 0xd8,SP0718_P1_0xd8+0x18,
+ 0xd9,SP0718_P1_0xd9+0x18,
+ 0xda,SP0718_P1_0xda+0x18,
+};
+
+uint8_t sp0718_saturation_pos4[] = {
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3+0x20,
+ 0xd4,SP0718_P1_0xd4+0x20,
+ 0xd5,SP0718_P1_0xd5+0x20,
+ 0xd6,SP0718_P1_0xd6+0x20,
+ //sat v +0x20
+ 0xd7,SP0718_P1_0xd7+0x20,
+ 0xd8,SP0718_P1_0xd8+0x20,
+ 0xd9,SP0718_P1_0xd9+0x20,
+ 0xda,SP0718_P1_0xda+0x20,
+};
+
+
+// Resolution
+
+// QCIF
+uint8_t sp0718_176x144[]={
+};
+
+// QVGA
+uint8_t sp0718_320x240[]={
+};
+
+// CIF
+uint8_t sp0718_352x288[]={
+};
+
+// VGA
+uint8_t sp0718_640x480[]={
+ 0xfd,0x01,
+ 0x4a,0x00,
+ 0x4b,0x01,
+ 0x4c,0xe0,
+ 0x4d,0x00,
+ 0x4e,0x02,
+ 0x4f,0x80,
+
+ 0xfd,0x02,
+ 0x0f,0x00, //1//subsampledisable
+
+ 0xfd,0x00,
+ 0x30,0x00,
+};
+
+// SVGA
+uint8_t sp0718_800x600[]={
+};
+
+// XGA
+uint8_t sp0718_1024x768[]={
+};
+
+// 720p
+uint8_t sp0718_1280x720[]={
+};
+
+// UXGA
+uint8_t sp0718_1600x1200[]={
+};
+
+// 1080p
+uint8_t sp0718_1920x1080[]={
+};
+
+// QXGA
+uint8_t sp0718_2048x1536[]={
+};
+
+uint8_t sp0718_2592x1944[]={
+};
+
+// Initiliztion
+uint8_t sp0718_default_regs_init[] = {
+ 0xfd,0x00,
+ 0x1C,0x00,
+ 0x31,0x10,
+ 0x27,0xb3,//0xb3 //2x gain
+
+ 0x1b,0x17, // driver
+ 0x1f,0x30,
+ 0x30,0x00, // div clk
+
+ 0x26,0xaa,
+ 0x37,0x02,
+ 0x28,0x8f,
+ 0x1a,0x73,
+ 0x1e,0x1b,
+ 0x21,0x06, //blackout voltage
+ 0x22,0x2a, //colbias
+ 0x0f,0x3f,
+ 0x10,0x3e,
+ 0x11,0x00,
+ 0x12,0x01,
+ 0x13,0x3f,
+ 0x14,0x04,
+ 0x15,0x30,
+ 0x16,0x31,
+ 0x17,0x01,
+ 0x69,0x31,
+ 0x6a,0x2a,
+ 0x6b,0x33,
+ 0x6c,0x1a,
+ 0x6d,0x32,
+ 0x6e,0x28,
+ 0x6f,0x29,
+ 0x70,0x34,
+ 0x71,0x18,
+ 0x36,0x00,//02 delete badframe
+ 0xfd,0x01,
+ 0x5d,0x51,//position
+ 0xf2,0x19,
+
+ //Blacklevel
+ 0x1f,0x10,
+ 0x20,0x1f,
+ //pregain
+ 0xfd,0x02,
+ 0x00,0x88,
+ 0x01,0x88,
+ //SI15_SP0718 24M 50Hz 15-8fps
+ //ae setting
+ 0xfd,0x00,
+ 0x03,0x01,
+ 0x04,0xce,
+ 0x06,0x00,
+ 0x09,0x02,
+ 0x0a,0xc4,
+ 0xfd,0x01,
+ 0xef,0x4d,
+ 0xf0,0x00,
+ 0x02,0x0c,
+ 0x03,0x01,
+ 0x06,0x47,
+ 0x07,0x00,
+ 0x08,0x01,
+ 0x09,0x00,
+ //Status
+ 0xfd,0x02,
+ 0xbe,0x9c,
+ 0xbf,0x03,
+ 0xd0,0x9c,
+ 0xd1,0x03,
+ 0xfd,0x01,
+ 0x5b,0x03,
+ 0x5c,0x9c,
+
+ //rpc
+ 0xfd,0x01,
+ 0xe0,0x40,////24//4c//48//4c//44//4c//3e//3c//3a//38//rpc_1base_max
+ 0xe1,0x30,////24//3c//38//3c//36//3c//30//2e//2c//2a//rpc_2base_max
+ 0xe2,0x2e,////24//34//30//34//2e//34//2a//28//26//26//rpc_3base_max
+ 0xe3,0x2a,////24//2a//2e//2c//2e//2a//2e//26//24//22//rpc_4base_max
+ 0xe4,0x2a,////24//2a//2e//2c//2e//2a//2e//26//24//22//rpc_5base_max
+ 0xe5,0x28,////24//2c//2a//2c//28//2c//24//22//20//rpc_6base_max
+ 0xe6,0x28,////24//2c//2a//2c//28//2c//24//22//20//rpc_7base_max
+ 0xe7,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_8base_max
+ 0xe8,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_9base_max
+ 0xe9,0x26,////24//2a//28//2a//26//2a//22//20//20//1e//rpc_10base_max
+ 0xea,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_11base_max
+ 0xf3,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_12base_max
+ 0xf4,0x26,////24//28//26//28//24//28//20//1f//1e//1d//rpc_13base_max
+ //ae gain &status
+ 0xfd,0x01,
+ 0x04,0xe0,//rpc_max_indr
+ 0x05,0x26,//1e//rpc_min_indr
+ 0x0a,0xa0,//rpc_max_outdr
+ 0x0b,0x26,//rpc_min_outdr
+ 0x5a,0x40,//dp rpc
+ 0xfd,0x02,
+ 0xbc,0xa0,//rpc_heq_low
+ 0xbd,0x80,//rpc_heq_dummy
+ 0xb8,0x80,//mean_normal_dummy
+ 0xb9,0x90,//mean_dummy_normal
+
+ //ae target
+ 0xfd,0x01,
+ 0xeb,SP0718_P1_0xeb,//78
+ 0xec,SP0718_P1_0xec,//78
+ 0xed,0x0a,
+ 0xee,0x10,
+
+ //lsc
+ 0xfd,0x01,
+ 0x26,0x30,
+ 0x27,0x2c,
+ 0x28,0x07,
+ 0x29,0x08,
+ 0x2a,0x40,
+ 0x2b,0x03,
+ 0x2c,0x00,
+ 0x2d,0x00,
+
+ 0xa1,0x24,
+ 0xa2,0x27,
+ 0xa3,0x27,
+ 0xa4,0x2b,
+ 0xa5,0x1c,
+ 0xa6,0x1a,
+ 0xa7,0x1a,
+ 0xa8,0x1a,
+ 0xa9,0x18,
+ 0xaa,0x1c,
+ 0xab,0x17,
+ 0xac,0x17,
+ 0xad,0x08,
+ 0xae,0x08,
+ 0xaf,0x08,
+ 0xb0,0x00,
+ 0xb1,0x00,
+ 0xb2,0x00,
+ 0xb3,0x00,
+ 0xb4,0x00,
+ 0xb5,0x02,
+ 0xb6,0x06,
+ 0xb7,0x00,
+ 0xb8,0x00,
+
+
+ //DP
+ 0xfd,0x01,
+ 0x48,0x09,
+ 0x49,0x99,
+
+ //awb
+ 0xfd,0x01,
+ 0x32,0x05,
+ 0xfd,0x00,
+ 0xe7,0x03,
+ 0xfd,0x02,
+ 0x26,0xc8,
+ 0x27,0xb6,
+ 0xfd,0x00,
+ 0xe7,0x00,
+ 0xfd,0x02,
+ 0x1b,0x80,
+ 0x1a,0x80,
+ 0x18,0x26,
+ 0x19,0x28,
+ 0xfd,0x02,
+ 0x2a,0x00,
+ 0x2b,0x08,
+ 0x28,0xef,//0xa0//f8
+ 0x29,0x20,
+
+ //d65 90 e2 93
+ 0x66,0x42,//0x59//0x60////0x58//4e//0x48
+ 0x67,0x62,//0x74//0x70//0x78//6b//0x69
+ 0x68,0xee,//0xd6//0xe3//0xd5//cb//0xaa
+ 0x69,0x18,//0xf4//0xf3//0xf8//ed
+ 0x6a,0xa6,//0xa5
+ //indoor 91
+ 0x7c,0x3b,//0x45//30//41//0x2f//0x44
+ 0x7d,0x5b,//0x70//60//55//0x4b//0x6f
+ 0x7e,0x15,//0a//0xed
+ 0x7f,0x39,//23//0x28
+ 0x80,0xaa,//0xa6
+ //cwf 92
+ 0x70,0x3e,//0x38//41//0x3b
+ 0x71,0x59,//0x5b//5f//0x55
+ 0x72,0x31,//0x30//22//0x28
+ 0x73,0x4f,//0x54//44//0x45
+ 0x74,0xaa,
+ //tl84 93
+ 0x6b,0x1b,//0x18//11
+ 0x6c,0x3a,//0x3c//25//0x2f
+ 0x6d,0x3e,//0x3a//35
+ 0x6e,0x59,//0x5c//46//0x52
+ 0x6f,0xaa,
+ //f 94
+ 0x61,0xea,//0x03//0x00//f4//0xed
+ 0x62,0x03,//0x1a//0x25//0f//0f
+ 0x63,0x6a,//0x62//0x60//52//0x5d
+ 0x64,0x8a,//0x7d//0x85//70//0x75//0x8f
+ 0x65,0x6a,//0xaa//6a
+
+ 0x75,0x80,
+ 0x76,0x20,
+ 0x77,0x00,
+ 0x24,0x25,
+
+ //针对室内调偏不过灯箱测试使用//针对人脸调偏
+ 0x20,0xd8,
+ 0x21,0xa3,//82//a8偏暗照度还有调偏
+ 0x22,0xd0,//e3//bc
+ 0x23,0x86,
+
+ //outdoor r\b range
+ 0x78,0xc3,//d8
+ 0x79,0xba,//82
+ 0x7a,0xa6,//e3
+ 0x7b,0x99,//86
+
+
+ //skin
+ 0x08,0x15,//
+ 0x09,0x04,//
+ 0x0a,0x20,//
+ 0x0b,0x12,//
+ 0x0c,0x27,//
+ 0x0d,0x06,//
+ 0x0e,0x63,//
+
+ //wt th
+ 0x3b,0x10,
+ //gw
+ 0x31,0x60,
+ 0x32,0x60,
+ 0x33,0xc0,
+ 0x35,0x6f,
+
+ // sharp
+ 0xfd,0x02,
+ 0xde,0x0f,
+ 0xd2,0x02,//6//控制黑白边;0-边粗,f-变细
+ 0xd3,0x06,
+ 0xd4,0x06,
+ 0xd5,0x06,
+ 0xd7,0x20,//10//2x根据增益判断轮廓阈值
+ 0xd8,0x30,//24//1A//4x
+ 0xd9,0x38,//28//8x
+ 0xda,0x38,//16x
+ 0xdb,0x08,//
+ 0xe8,0x58,//48//轮廓强度
+ 0xe9,0x48,
+ 0xea,0x30,
+ 0xeb,0x20,
+ 0xec,0x48,//60//80
+ 0xed,0x48,//50//60
+ 0xee,0x30,
+ 0xef,0x20,
+ //平坦区域锐化力度
+ 0xf3,0x50,
+ 0xf4,0x10,
+ 0xf5,0x10,
+ 0xf6,0x10,
+ //dns
+ 0xfd,0x01,
+ 0x64,0x44,//沿方向边缘平滑力度 //0-最强,8-最弱
+ 0x65,0x22,
+ 0x6d,0x04,//8//强平滑(平坦)区域平滑阈值
+ 0x6e,0x06,//8
+ 0x6f,0x10,
+ 0x70,0x10,
+ 0x71,0x08,//0d//弱平滑(非平坦)区域平滑阈值
+ 0x72,0x12,//1b
+ 0x73,0x1c,//20
+ 0x74,0x24,
+ 0x75,0x44,//[7:4]平坦区域强度,[3:0]非平坦区域强度;0-最强,8-最弱;
+ 0x76,0x02,//46
+ 0x77,0x02,//33
+ 0x78,0x02,
+ 0x81,0x10,//18//2x//根据增益判定区域阈值,低于这个做强平滑、大于这个做弱平滑;
+ 0x82,0x20,//30//4x
+ 0x83,0x30,//40//8x
+ 0x84,0x48,//50//16x
+ 0x85,0x0c,//12/8+reg0x81 第二阈值,在平坦和非平坦区域做连接
+ 0xfd,0x02,
+ 0xdc,0x0f,
+
+ //gamma
+ 0xfd,0x01,
+ 0x8b,0x00,//00//00
+ 0x8c,0x0a,//0c//09
+ 0x8d,0x16,//19//17
+ 0x8e,0x1f,//25//24
+ 0x8f,0x2a,//30//33
+ 0x90,0x3c,//44//47
+ 0x91,0x4e,//54//58
+ 0x92,0x5f,//61//64
+ 0x93,0x6c,//6d//70
+ 0x94,0x82,//80//81
+ 0x95,0x94,//92//8f
+ 0x96,0xa6,//a1//9b
+ 0x97,0xb2,//ad//a5
+ 0x98,0xbf,//ba//b0
+ 0x99,0xc9,//c4//ba
+ 0x9a,0xd1,//cf//c4
+ 0x9b,0xd8,//d7//ce
+ 0x9c,0xe0,//e0//d7
+ 0x9d,0xe8,//e8//e1
+ 0x9e,0xef,//ef//ea
+ 0x9f,0xf8,//f7//f5
+ 0xa0,0xff,//ff//ff
+ //CCM
+ 0xfd,0x02,
+ 0x15,0xd0,//b>th
+ 0x16,0x95,//r<th
+ //gc镜头照人脸偏黄
+ //!F
+ 0xa0,0x80,//80
+ 0xa1,0x00,//00
+ 0xa2,0x00,//00
+ 0xa3,0x00,//06
+ 0xa4,0x8c,//8c
+ 0xa5,0xf4,//ed
+ 0xa6,0x0c,//0c
+ 0xa7,0xf4,//f4
+ 0xa8,0x80,//80
+ 0xa9,0x00,//00
+ 0xaa,0x30,//30
+ 0xab,0x0c,//0c
+ //F
+ 0xac,0x8c,
+ 0xad,0xf4,
+ 0xae,0x00,
+ 0xaf,0xed,
+ 0xb0,0x8c,
+ 0xb1,0x06,
+ 0xb2,0xf4,
+ 0xb3,0xf4,
+ 0xb4,0x99,
+ 0xb5,0x0c,
+ 0xb6,0x03,
+ 0xb7,0x0f,
+
+ //sat u
+ 0xfd,0x01,
+ 0xd3,SP0718_P1_0xd3,//0x88//50
+ 0xd4,SP0718_P1_0xd4,//0x88//50
+ 0xd5,SP0718_P1_0xd5,//50
+ 0xd6,SP0718_P1_0xd6,//50
+ //sat v
+ 0xd7,SP0718_P1_0xd7,//0x88//50
+ 0xd8,SP0718_P1_0xd8,//0x88//50
+ 0xd9,SP0718_P1_0xd9,//50
+ 0xda,SP0718_P1_0xda,//50
+ //auto_sat
+ 0xdd,0x30,
+ 0xde,0x10,
+ 0xd2,0x01,//autosa_en
+ 0xdf,0xff,//a0//y_mean_th
+
+ //uv_th
+ 0xfd,0x01,
+ 0xc2,0xaa,
+ 0xc3,0xaa,
+ 0xc4,0x66,
+ 0xc5,0x66,
+
+ //heq
+ 0xfd,0x01,
+ 0x0f,0xff,
+ 0x10,SP0718_P1_0x10, //out
+ 0x14,SP0718_P1_0x14,
+ 0x11,SP0718_P1_0x11, //nr
+ 0x15,SP0718_P1_0x15,
+ 0x12,SP0718_P1_0x12, //dummy
+ 0x16,SP0718_P1_0x16,
+ 0x13,SP0718_P1_0x13, //low
+ 0x17,SP0718_P1_0x17,
+
+ 0xfd,0x01,
+ 0xcd,0x20,
+ 0xce,0x1f,
+ 0xcf,0x20,
+ 0xd0,0x55,
+ //auto
+ 0xfd,0x01,
+ 0xfb,0x33,
+ //0x32,0x15,
+ 0x33,0xff,
+ 0x34,0xe7,
+ 0x35,0x40,
+ 0x36,0x08,
+};
+
+// Exit
+uint8_t sp0718_default_regs_exit[] = {
+};
+
+#endif /* #ifndef __SP0718_H_ */