diff options
author | Srikant Patnaik | 2015-01-13 15:08:24 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-13 15:08:24 +0530 |
commit | 97327692361306d1e6259021bc425e32832fdb50 (patch) | |
tree | fe9088f3248ec61e24f404f21b9793cb644b7f01 /drivers/media/video/wmt_v4l2/sensors/sp0718 | |
parent | 2d05a8f663478a44e088d122e0d62109bbc801d0 (diff) | |
parent | a3a8b90b61e21be3dde9101c4e86c881e0f06210 (diff) | |
download | FOSSEE-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')
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_ */ |