summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSooman Jeong <sm5.jeong@samsung.com>2016-05-10 18:54:37 +0900
committerwansu.yoo <wansu.yoo@samsung.com>2016-08-22 14:58:30 +0900
commitfa8d76cf26dab05f11ffb7d2f1f3e4567ee72a48 (patch)
tree49503939a100403578b7aba4d37b4e76b7b2b5f4
parent234019e7996a8ac9bc2a8018d6f10e1878160944 (diff)
downloadlinux-3.10-artik-fa8d76cf26dab05f11ffb7d2f1f3e4567ee72a48.tar.gz
linux-3.10-artik-fa8d76cf26dab05f11ffb7d2f1f3e4567ee72a48.tar.bz2
linux-3.10-artik-fa8d76cf26dab05f11ffb7d2f1f3e4567ee72a48.zip
exynos: fimc-is-w1: introduce 4EC camera sensor driver
This patch introduces 4EC camera sensor driver. The S5K4ECGA is a SOC type CMOS sensor with 1/4 inch size, 1.4 um pixel size, and supporting 5MP capture @ 15fps, HD size video @ 30fps with MIPI CSI-2 interface. Since this sensor is SOC type, this sensor has embedded Image Signal Processor This driver always will be tried to probed, and be succeed if reading sensor id is successful. Change-Id: I464ee16ced754731a976656c2eb6cefa60617dd8 Signed-off-by: Sooman Jeong <sm5.jeong@samsung.com>
-rw-r--r--drivers/media/platform/exynos/fimc-is-w1/Makefile3
-rw-r--r--drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec-reg.h10471
-rw-r--r--drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.c3726
-rw-r--r--drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.h213
4 files changed, 14412 insertions, 1 deletions
diff --git a/drivers/media/platform/exynos/fimc-is-w1/Makefile b/drivers/media/platform/exynos/fimc-is-w1/Makefile
index 2309e72f5c0..0174c758c5d 100644
--- a/drivers/media/platform/exynos/fimc-is-w1/Makefile
+++ b/drivers/media/platform/exynos/fimc-is-w1/Makefile
@@ -35,6 +35,7 @@ fimc-is-objs := fimc-is-core.o \
sensor/fimc-is-device-6a3.o \
sensor/fimc-is-device-imx175.o \
sensor/fimc-is-device-4h5.o \
- sensor/fimc-is-device-5ea.o
+ sensor/fimc-is-device-5ea.o \
+ sensor/fimc-is-device-4ec.o
obj-$(CONFIG_VIDEO_EXYNOS_FIMC_IS) += fimc-is.o
diff --git a/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec-reg.h b/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec-reg.h
new file mode 100644
index 00000000000..ac3e6aad64a
--- /dev/null
+++ b/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec-reg.h
@@ -0,0 +1,10471 @@
+/*
+ * Samsung Exynos5 SoC series Sensor driver
+ *
+ *
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef FIMC_IS_DEVICE_4EC_REG_H
+#define FIMC_IS_DEVICE_4EC_REG_H
+
+static const u32 s5k4ec_init_reg1[] = {
+/*==========================================================
+// 00.History
+//==========================================================
+//2010 : EVT1.1
+//20110429 : LSI CSE Standard
+//==========================================================
+//==========================================================
+// 01.Start Setting
+//=========================================================*/
+ 0xFCFCD000, /* 01.Start Setting */
+ 0x00100001, /* S/W Reset */
+ 0x10300000, /* contint_host_int */
+ 0x00140001, /* sw_load_complete-Release CORE(Arm)from reset state */
+ 0xFFFF000A, /* Delay 10ms */
+
+};
+
+static const u32 s5k4ec_init_reg2[] = {
+/*==========================================================
+//02.ETC Setting
+//=========================================================*/
+ 0x0028D000, /* 02.ETC Setting */
+ 0x002A1082,
+ 0x0F120155,
+ 0x002A1084,
+ 0x0F120155,
+ 0x002A1086,
+ 0x0F120055,
+ 0x002A1088,
+ 0x0F120555,
+ 0x002A100E,
+ 0x0F120000,
+
+/*==========================================================
+// 03.Analog Setting & ASP Control
+//=========================================================*/
+
+/*This register is for FACTORY ONLY.
+//If you change it without prior notification
+//YOU are RESPONSIBLE for the FAILURE that will happen in the future */
+
+ 0x0028D000, /* 03.Analog Setting & ASP Control-1 */
+ 0x002A007A,
+ 0x0F120000, /* config_clk_setting */
+ 0x002AE406,
+ 0x0F120082, /* fadlc_disable */
+ 0x002AE410,
+ 0x0F123804, /* adlc_fadlc_filter_co */
+ 0x002AE41A,
+ 0x0F120010, /* adlc_ptune_total */
+ 0x002AF132,
+ 0x0F120200,
+ 0x002AF142,
+ 0x0F120200, /* 110404 AE haunting - from_LSI */
+ 0x002AE420,
+ 0x0F120003, /* adlc_fadlc_filter_refresh */
+ 0x0F120060, /* adlc_filter_level_diff_threshold */
+ 0x002AE42E,
+ 0x0F120004, /* adlc_qec */
+ 0x002AF400,
+ 0x0F125A3C, /* aig_shutter_width */
+ 0x0F120023, /* aig_cds_tune */
+ 0x0F128080, /* aig_cds_option */
+ 0x0F1203AF, /* aig_mx */
+ 0x0F12000A, /* aig_mode_en */
+ 0x0F12AA54, /* aig_ms */
+ 0x0F120040, /* aig_rmp_tune_1 */
+ 0x0F12464E, /* aig_rmp_tune_2 */
+ 0x0F120240, /* aig_bist_sig_width_e */
+ 0x0F120240, /* aig_bist_sig_width_o */
+ 0x0F120040, /* aig_dbs_bist */
+ 0x0F121000, /* aig_dbs_tune */
+ 0x0F1255FF, /* aig_bias_tune */
+ 0x0F12D000, /* aig_ref_tune_1 */
+ 0x0F120010, /* aig_ref_tune_2 */
+ 0x0F120202, /* aig_reg_tune_1 */
+ 0x0F120401, /* aig_reg_tune_2 */
+ 0x0F120022, /* aig_rosc_tune */
+ 0x0F120088, /* aig_dbr_tune_1 */
+ 0x0F12009F, /* aig_dbr_tune_2 */
+ 0x0F120000, /* aig_bist_en_cintr */
+ 0x0F121800, /* aig_vdec_tune */
+ 0x0F120088, /* aig_pmg_reg_tune */
+ 0x0F120000, /* aig_pmg_tune_1 */
+ 0x0F122428, /* aig_shutter_gap */
+ 0x0F120000, /* aig_atx_option */
+ 0x0F1203EE, /* aig_avg_half */
+ 0x0F120000, /* aig_hvs_test_reg */
+ 0x0F120000, /* aig_dbus_bist_auto */
+ 0x0F120000, /* aig_dbr_option */
+ 0x002AF552,
+ 0x0F120708, /* aig_1h_time_1 */
+ 0x0F12080C, /* aig_1h_time_2 */
+
+/*==========================================================
+// 04.Trap and Patch
+//=========================================================*/
+/* Start of Patch data */
+ 0x00287000, /* 05.Trap and Patch */
+ 0x002A3AF8,
+ 0x0F12B5F8,
+ 0x0F124B44,
+ 0x0F124944,
+ 0x0F124845,
+ 0x0F122200,
+ 0x0F12C008,
+ 0x0F126001,
+ 0x0F124944,
+ 0x0F124844,
+ 0x0F122401,
+ 0x0F12F000,
+ 0x0F12FCA4,
+ 0x0F124943,
+ 0x0F124844,
+ 0x0F122702,
+ 0x0F120022,
+ 0x0F12F000,
+ 0x0F12FC9E,
+ 0x0F120260,
+ 0x0F124C42,
+ 0x0F128020,
+ 0x0F122600,
+ 0x0F128066,
+ 0x0F124941,
+ 0x0F124841,
+ 0x0F126041,
+ 0x0F124941,
+ 0x0F124842,
+ 0x0F12003A,
+ 0x0F122503,
+ 0x0F12F000,
+ 0x0F12FC90,
+ 0x0F12483D,
+ 0x0F124940,
+ 0x0F1230C0,
+ 0x0F1263C1,
+ 0x0F124F3B,
+ 0x0F12483F,
+ 0x0F123F80,
+ 0x0F126438,
+ 0x0F12483E,
+ 0x0F12493F,
+ 0x0F126388,
+ 0x0F12002A,
+ 0x0F12493E,
+ 0x0F12483F,
+ 0x0F122504,
+ 0x0F12F000,
+ 0x0F12FC7F,
+ 0x0F12002A,
+ 0x0F12493D,
+ 0x0F12483E,
+ 0x0F122505,
+ 0x0F12F000,
+ 0x0F12F8A7,
+ 0x0F12483C,
+ 0x0F12002A,
+ 0x0F12493C,
+ 0x0F122506,
+ 0x0F121D80,
+ 0x0F12F000,
+ 0x0F12F8A0,
+ 0x0F124838,
+ 0x0F12002A,
+ 0x0F124939,
+ 0x0F122507,
+ 0x0F12300C,
+ 0x0F12F000,
+ 0x0F12F899,
+ 0x0F124835,
+ 0x0F12002A,
+ 0x0F124937,
+ 0x0F122508,
+ 0x0F123010,
+ 0x0F12F000,
+ 0x0F12F892,
+ 0x0F12002A,
+ 0x0F124935,
+ 0x0F124835,
+ 0x0F122509,
+ 0x0F12F000,
+ 0x0F12FC5E,
+ 0x0F12002A,
+ 0x0F124934,
+ 0x0F124834,
+ 0x0F12250A,
+ 0x0F12F000,
+ 0x0F12FC58,
+ 0x0F12002A,
+ 0x0F124933,
+ 0x0F124833,
+ 0x0F12250B,
+ 0x0F12F000,
+ 0x0F12FC52,
+ 0x0F12002A,
+ 0x0F124932,
+ 0x0F124832,
+ 0x0F12250C,
+ 0x0F12F000,
+ 0x0F12FC4C,
+ 0x0F12002A,
+ 0x0F124931,
+ 0x0F124831,
+ 0x0F12250D,
+ 0x0F12F000,
+ 0x0F12FC46,
+ 0x0F12002A,
+ 0x0F124930,
+ 0x0F124830,
+ 0x0F12250E,
+ 0x0F12F000,
+ 0x0F12FC40,
+ 0x0F12002A,
+ 0x0F12492F,
+ 0x0F12482F,
+ 0x0F12250F,
+ 0x0F12F000,
+ 0x0F12FC3A,
+ 0x0F128626,
+ 0x0F1220FF,
+ 0x0F121C40,
+ 0x0F128660,
+ 0x0F12482C,
+ 0x0F1264F8,
+ 0x0F12492C,
+ 0x0F12482D,
+ 0x0F122410,
+ 0x0F12002A,
+ 0x0F12F000,
+ 0x0F12FC2E,
+ 0x0F12492B,
+ 0x0F12482C,
+ 0x0F120022,
+ 0x0F12F000,
+ 0x0F12FC29,
+ 0x0F12BCF8,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F12019C,
+ 0x0F124EC2,
+ 0x0F1273FF,
+ 0x0F120000,
+ 0x0F121F90,
+ 0x0F127000,
+ 0x0F123CCD,
+ 0x0F127000,
+ 0x0F12E38B,
+ 0x0F120000,
+ 0x0F123D05,
+ 0x0F127000,
+ 0x0F12C3B1,
+ 0x0F120000,
+ 0x0F124780,
+ 0x0F127000,
+ 0x0F123D63,
+ 0x0F127000,
+ 0x0F120080,
+ 0x0F127000,
+ 0x0F123D9F,
+ 0x0F127000,
+ 0x0F12B49D,
+ 0x0F120000,
+ 0x0F123E4B,
+ 0x0F127000,
+ 0x0F123DFF,
+ 0x0F127000,
+ 0x0F12FFFF,
+ 0x0F1200FF,
+ 0x0F1217E0,
+ 0x0F127000,
+ 0x0F123FC7,
+ 0x0F127000,
+ 0x0F12053D,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120A89,
+ 0x0F126CD2,
+ 0x0F120000,
+ 0x0F1202C9,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120A9A,
+ 0x0F120000,
+ 0x0F1202D2,
+ 0x0F124015,
+ 0x0F127000,
+ 0x0F129E65,
+ 0x0F120000,
+ 0x0F124089,
+ 0x0F127000,
+ 0x0F127C49,
+ 0x0F120000,
+ 0x0F1240FD,
+ 0x0F127000,
+ 0x0F127C63,
+ 0x0F120000,
+ 0x0F124119,
+ 0x0F127000,
+ 0x0F128F01,
+ 0x0F120000,
+ 0x0F1241BB,
+ 0x0F127000,
+ 0x0F127F3F,
+ 0x0F120000,
+ 0x0F124249,
+ 0x0F127000,
+ 0x0F1298C5,
+ 0x0F120000,
+ 0x0F1243B5,
+ 0x0F127000,
+ 0x0F126099,
+ 0x0F120000,
+ 0x0F12430F, /* End of TnP */
+ 0x0F127000,
+ 0x0F124365,
+ 0x0F127000,
+ 0x0F12A70B,
+ 0x0F120000,
+ 0x0F124387,
+ 0x0F127000,
+ 0x0F12400D,
+ 0x0F120000,
+ 0x0F12B570,
+ 0x0F12000C,
+ 0x0F120015,
+ 0x0F120029,
+ 0x0F12F000,
+ 0x0F12FBD4,
+ 0x0F1249F8,
+ 0x0F1200A8,
+ 0x0F12500C,
+ 0x0F12BC70,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F126808,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F126849,
+ 0x0F120409,
+ 0x0F120C09,
+ 0x0F124AF3,
+ 0x0F128992,
+ 0x0F122A00,
+ 0x0F12D00D,
+ 0x0F122300,
+ 0x0F121A89,
+ 0x0F12D400,
+ 0x0F12000B,
+ 0x0F120419,
+ 0x0F120C09,
+ 0x0F1223FF,
+ 0x0F1233C1,
+ 0x0F121810,
+ 0x0F124298,
+ 0x0F12D800,
+ 0x0F120003,
+ 0x0F120418,
+ 0x0F120C00,
+ 0x0F124AEB,
+ 0x0F128150,
+ 0x0F128191,
+ 0x0F124770,
+ 0x0F12B5F3,
+ 0x0F120004,
+ 0x0F12B081,
+ 0x0F129802,
+ 0x0F126800,
+ 0x0F120600,
+ 0x0F120E00,
+ 0x0F122201,
+ 0x0F120015,
+ 0x0F120021,
+ 0x0F123910,
+ 0x0F12408A,
+ 0x0F1240A5,
+ 0x0F124FE4,
+ 0x0F120016,
+ 0x0F122C10,
+ 0x0F12DA03,
+ 0x0F128839,
+ 0x0F1243A9,
+ 0x0F128039,
+ 0x0F12E002,
+ 0x0F128879,
+ 0x0F1243B1,
+ 0x0F128079,
+ 0x0F12F000,
+ 0x0F12FBA0,
+ 0x0F122C10,
+ 0x0F12DA03,
+ 0x0F128839,
+ 0x0F124329,
+ 0x0F128039,
+ 0x0F12E002,
+ 0x0F128879,
+ 0x0F124331,
+ 0x0F128079,
+ 0x0F1249DA,
+ 0x0F128809,
+ 0x0F122900,
+ 0x0F12D102,
+ 0x0F12F000,
+ 0x0F12FB99,
+ 0x0F122000,
+ 0x0F129902,
+ 0x0F126008,
+ 0x0F12BCFE,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F12B538,
+ 0x0F129C04,
+ 0x0F120015,
+ 0x0F12002A,
+ 0x0F129400,
+ 0x0F12F000,
+ 0x0F12FB94,
+ 0x0F124AD1,
+ 0x0F128811,
+ 0x0F122900,
+ 0x0F12D00F,
+ 0x0F128820,
+ 0x0F124281,
+ 0x0F12D20C,
+ 0x0F128861,
+ 0x0F128853,
+ 0x0F124299,
+ 0x0F12D200,
+ 0x0F121E40,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F128020,
+ 0x0F128851,
+ 0x0F128061,
+ 0x0F124368,
+ 0x0F121840,
+ 0x0F126060,
+ 0x0F12BC38,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F12B5F8,
+ 0x0F120004,
+ 0x0F126808,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F122201,
+ 0x0F120015,
+ 0x0F120021,
+ 0x0F123910,
+ 0x0F12408A,
+ 0x0F1240A5,
+ 0x0F124FBE,
+ 0x0F120016,
+ 0x0F122C10,
+ 0x0F12DA03,
+ 0x0F128839,
+ 0x0F1243A9,
+ 0x0F128039,
+ 0x0F12E002,
+ 0x0F128879,
+ 0x0F1243B1,
+ 0x0F128079,
+ 0x0F12F000,
+ 0x0F12FB6D,
+ 0x0F122C10,
+ 0x0F12DA03,
+ 0x0F128838,
+ 0x0F124328,
+ 0x0F128038,
+ 0x0F12E002,
+ 0x0F128878,
+ 0x0F124330,
+ 0x0F128078,
+ 0x0F1248B6,
+ 0x0F128800,
+ 0x0F120400,
+ 0x0F12D507,
+ 0x0F124BB5,
+ 0x0F127819,
+ 0x0F124AB5,
+ 0x0F127810,
+ 0x0F127018,
+ 0x0F127011,
+ 0x0F1249B4,
+ 0x0F128188,
+ 0x0F12BCF8,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F12B538,
+ 0x0F1248B2,
+ 0x0F124669,
+ 0x0F12F000,
+ 0x0F12FB58,
+ 0x0F1248B1,
+ 0x0F1249B0,
+ 0x0F1269C2,
+ 0x0F122400,
+ 0x0F1231A8,
+ 0x0F122A00,
+ 0x0F12D008,
+ 0x0F1261C4,
+ 0x0F12684A,
+ 0x0F126242,
+ 0x0F126282,
+ 0x0F12466B,
+ 0x0F12881A,
+ 0x0F126302,
+ 0x0F12885A,
+ 0x0F126342,
+ 0x0F126A02,
+ 0x0F122A00,
+ 0x0F12D00A,
+ 0x0F126204,
+ 0x0F126849,
+ 0x0F126281,
+ 0x0F12466B,
+ 0x0F128819,
+ 0x0F126301,
+ 0x0F128859,
+ 0x0F126341,
+ 0x0F1249A5,
+ 0x0F1288C9,
+ 0x0F1263C1,
+ 0x0F12F000,
+ 0x0F12FB40,
+ 0x0F12E7A6,
+ 0x0F12B5F0,
+ 0x0F12B08B,
+ 0x0F1220FF,
+ 0x0F121C40,
+ 0x0F1249A1,
+ 0x0F1289CC,
+ 0x0F124E9E,
+ 0x0F126AB1,
+ 0x0F124284,
+ 0x0F12D101,
+ 0x0F12489F,
+ 0x0F126081,
+ 0x0F126A70,
+ 0x0F120200,
+ 0x0F12F000,
+ 0x0F12FB37,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F124A96,
+ 0x0F128A11,
+ 0x0F129109,
+ 0x0F122101,
+ 0x0F120349,
+ 0x0F124288,
+ 0x0F12D200,
+ 0x0F120001,
+ 0x0F124A92,
+ 0x0F128211,
+ 0x0F124D97,
+ 0x0F128829,
+ 0x0F129108,
+ 0x0F124A8B,
+ 0x0F122303,
+ 0x0F123222,
+ 0x0F121F91,
+ 0x0F12F000,
+ 0x0F12FB28,
+ 0x0F128028,
+ 0x0F12488E,
+ 0x0F124987,
+ 0x0F126BC2,
+ 0x0F126AC0,
+ 0x0F124282,
+ 0x0F12D201,
+ 0x0F128CC8,
+ 0x0F128028,
+ 0x0F1288E8,
+ 0x0F129007,
+ 0x0F122240,
+ 0x0F124310,
+ 0x0F1280E8,
+ 0x0F122000,
+ 0x0F120041,
+ 0x0F12194B,
+ 0x0F12001E,
+ 0x0F123680,
+ 0x0F128BB2,
+ 0x0F12AF04,
+ 0x0F12527A,
+ 0x0F124A7D,
+ 0x0F12188A,
+ 0x0F128897,
+ 0x0F1283B7,
+ 0x0F1233A0,
+ 0x0F12891F,
+ 0x0F12AE01,
+ 0x0F125277,
+ 0x0F128A11,
+ 0x0F128119,
+ 0x0F121C40,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F122806,
+ 0x0F12D3E9,
+ 0x0F12F000,
+ 0x0F12FB09,
+ 0x0F12F000,
+ 0x0F12FB0F,
+ 0x0F124F79,
+ 0x0F1237A8,
+ 0x0F122800,
+ 0x0F12D10A,
+ 0x0F121FE0,
+ 0x0F1238FD,
+ 0x0F12D001,
+ 0x0F121CC0,
+ 0x0F12D105,
+ 0x0F124874,
+ 0x0F128829,
+ 0x0F123818,
+ 0x0F126840,
+ 0x0F124348,
+ 0x0F126078,
+ 0x0F124972,
+ 0x0F126878,
+ 0x0F126B89,
+ 0x0F124288,
+ 0x0F12D300,
+ 0x0F120008,
+ 0x0F126078,
+ 0x0F122000,
+ 0x0F120041,
+ 0x0F12AA04,
+ 0x0F125A53,
+ 0x0F12194A,
+ 0x0F12269C,
+ 0x0F1252B3,
+ 0x0F12AB01,
+ 0x0F125A59,
+ 0x0F1232A0,
+ 0x0F128111,
+ 0x0F121C40,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F122806,
+ 0x0F12D3F0,
+ 0x0F124965,
+ 0x0F129809,
+ 0x0F128208,
+ 0x0F129808,
+ 0x0F128028,
+ 0x0F129807,
+ 0x0F1280E8,
+ 0x0F121FE0,
+ 0x0F1238FD,
+ 0x0F12D13B,
+ 0x0F124D64,
+ 0x0F1289E8,
+ 0x0F121FC1,
+ 0x0F1239FF,
+ 0x0F12D136,
+ 0x0F124C5F,
+ 0x0F128AE0,
+ 0x0F12F000,
+ 0x0F12FADE,
+ 0x0F120006,
+ 0x0F128B20,
+ 0x0F12F000,
+ 0x0F12FAE2,
+ 0x0F129000,
+ 0x0F126AA1,
+ 0x0F126878,
+ 0x0F121809,
+ 0x0F120200,
+ 0x0F12F000,
+ 0x0F12FAB5,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F120022,
+ 0x0F123246,
+ 0x0F120011,
+ 0x0F12310A,
+ 0x0F122305,
+ 0x0F12F000,
+ 0x0F12FAB2,
+ 0x0F1266E8,
+ 0x0F126B23,
+ 0x0F120002,
+ 0x0F120031,
+ 0x0F120018,
+ 0x0F12F000,
+ 0x0F12FAD3,
+ 0x0F12466B,
+ 0x0F128518,
+ 0x0F126EEA,
+ 0x0F126B60,
+ 0x0F129900,
+ 0x0F12F000,
+ 0x0F12FACC,
+ 0x0F12466B,
+ 0x0F128558,
+ 0x0F120029,
+ 0x0F12980A,
+ 0x0F123170,
+ 0x0F12F000,
+ 0x0F12FACD,
+ 0x0F120028,
+ 0x0F123060,
+ 0x0F128A02,
+ 0x0F124946,
+ 0x0F123128,
+ 0x0F12808A,
+ 0x0F128A42,
+ 0x0F1280CA,
+ 0x0F128A80,
+ 0x0F128108,
+ 0x0F12B00B,
+ 0x0F12BCF0,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F12B570,
+ 0x0F122400,
+ 0x0F124D46,
+ 0x0F124846,
+ 0x0F128881,
+ 0x0F124846,
+ 0x0F128041,
+ 0x0F122101,
+ 0x0F128001,
+ 0x0F12F000,
+ 0x0F12FABC,
+ 0x0F124842,
+ 0x0F123820,
+ 0x0F128BC0,
+ 0x0F12F000,
+ 0x0F12FABF,
+ 0x0F124B42,
+ 0x0F12220D,
+ 0x0F120712,
+ 0x0F1218A8,
+ 0x0F128806,
+ 0x0F1200E1,
+ 0x0F1218C9,
+ 0x0F1281CE,
+ 0x0F128846,
+ 0x0F12818E,
+ 0x0F128886,
+ 0x0F12824E,
+ 0x0F1288C0,
+ 0x0F128208,
+ 0x0F123508,
+ 0x0F12042D,
+ 0x0F120C2D,
+ 0x0F121C64,
+ 0x0F120424,
+ 0x0F120C24,
+ 0x0F122C07,
+ 0x0F12D3EC,
+ 0x0F12E658,
+ 0x0F12B510,
+ 0x0F124834,
+ 0x0F124C34,
+ 0x0F1288C0,
+ 0x0F128060,
+ 0x0F122001,
+ 0x0F128020,
+ 0x0F124831,
+ 0x0F123820,
+ 0x0F128BC0,
+ 0x0F12F000,
+ 0x0F12FA9C,
+ 0x0F1288E0,
+ 0x0F124A31,
+ 0x0F122800,
+ 0x0F12D003,
+ 0x0F124930,
+ 0x0F128849,
+ 0x0F122900,
+ 0x0F12D009,
+ 0x0F122001,
+ 0x0F1203C0,
+ 0x0F128050,
+ 0x0F1280D0,
+ 0x0F122000,
+ 0x0F128090,
+ 0x0F128110,
+ 0x0F12BC10,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F128050,
+ 0x0F128920,
+ 0x0F1280D0,
+ 0x0F128960,
+ 0x0F120400,
+ 0x0F121400,
+ 0x0F128090,
+ 0x0F1289A1,
+ 0x0F120409,
+ 0x0F121409,
+ 0x0F128111,
+ 0x0F1289E3,
+ 0x0F128A24,
+ 0x0F122B00,
+ 0x0F12D104,
+ 0x0F1217C3,
+ 0x0F120F5B,
+ 0x0F121818,
+ 0x0F1210C0,
+ 0x0F128090,
+ 0x0F122C00,
+ 0x0F12D1E6,
+ 0x0F1217C8,
+ 0x0F120F40,
+ 0x0F121840,
+ 0x0F1210C0,
+ 0x0F128110,
+ 0x0F12E7E0,
+ 0x0F12B510,
+ 0x0F12000C,
+ 0x0F124919,
+ 0x0F122204,
+ 0x0F126820,
+ 0x0F125E8A,
+ 0x0F120140,
+ 0x0F121A80,
+ 0x0F120280,
+ 0x0F128849,
+ 0x0F12F000,
+ 0x0F12FA6A,
+ 0x0F126020,
+ 0x0F12E7D2,
+ 0x0F1238D4,
+ 0x0F127000,
+ 0x0F1217D0,
+ 0x0F127000,
+ 0x0F125000,
+ 0x0F12D000,
+ 0x0F121100,
+ 0x0F12D000,
+ 0x0F12171A,
+ 0x0F127000,
+ 0x0F124780,
+ 0x0F127000,
+ 0x0F122FCA,
+ 0x0F127000,
+ 0x0F122FC5,
+ 0x0F127000,
+ 0x0F122FC6,
+ 0x0F127000,
+ 0x0F122ED8,
+ 0x0F127000,
+ 0x0F122BD0,
+ 0x0F127000,
+ 0x0F1217E0,
+ 0x0F127000,
+ 0x0F122DE8,
+ 0x0F127000,
+ 0x0F1237E0,
+ 0x0F127000,
+ 0x0F12210C,
+ 0x0F127000,
+ 0x0F121484,
+ 0x0F127000,
+ 0x0F12A006,
+ 0x0F120000,
+ 0x0F120724,
+ 0x0F127000,
+ 0x0F12A000,
+ 0x0F12D000,
+ 0x0F122270,
+ 0x0F127000,
+ 0x0F122558,
+ 0x0F127000,
+ 0x0F12146C,
+ 0x0F127000,
+ 0x0F12B510,
+ 0x0F12000C,
+ 0x0F1249C7,
+ 0x0F122208,
+ 0x0F126820,
+ 0x0F125E8A,
+ 0x0F120140,
+ 0x0F121A80,
+ 0x0F120280,
+ 0x0F1288C9,
+ 0x0F12F000,
+ 0x0F12FA30,
+ 0x0F126020,
+ 0x0F12E798,
+ 0x0F12B5FE,
+ 0x0F12000C,
+ 0x0F126825,
+ 0x0F126866,
+ 0x0F1268A0,
+ 0x0F129001,
+ 0x0F1268E7,
+ 0x0F121BA8,
+ 0x0F1242B5,
+ 0x0F12DA00,
+ 0x0F121B70,
+ 0x0F129000,
+ 0x0F1249BB,
+ 0x0F1248BC,
+ 0x0F12884A,
+ 0x0F128843,
+ 0x0F12435A,
+ 0x0F122304,
+ 0x0F125ECB,
+ 0x0F120A92,
+ 0x0F1218D2,
+ 0x0F1202D2,
+ 0x0F120C12,
+ 0x0F1288CB,
+ 0x0F128880,
+ 0x0F124343,
+ 0x0F120A98,
+ 0x0F122308,
+ 0x0F125ECB,
+ 0x0F1218C0,
+ 0x0F1202C0,
+ 0x0F120C00,
+ 0x0F120411,
+ 0x0F120400,
+ 0x0F121409,
+ 0x0F121400,
+ 0x0F121A08,
+ 0x0F1249B0,
+ 0x0F1239E0,
+ 0x0F126148,
+ 0x0F129801,
+ 0x0F123040,
+ 0x0F127880,
+ 0x0F122800,
+ 0x0F12D103,
+ 0x0F129801,
+ 0x0F120029,
+ 0x0F12F000,
+ 0x0F12FA03,
+ 0x0F128839,
+ 0x0F129800,
+ 0x0F124281,
+ 0x0F12D814,
+ 0x0F128879,
+ 0x0F129800,
+ 0x0F124281,
+ 0x0F12D20C,
+ 0x0F129801,
+ 0x0F120029,
+ 0x0F12F000,
+ 0x0F12F9FF,
+ 0x0F129801,
+ 0x0F120029,
+ 0x0F12F000,
+ 0x0F12F9FB,
+ 0x0F129801,
+ 0x0F120029,
+ 0x0F12F000,
+ 0x0F12F9F7,
+ 0x0F12E003,
+ 0x0F129801,
+ 0x0F120029,
+ 0x0F12F000,
+ 0x0F12F9F2,
+ 0x0F129801,
+ 0x0F120032,
+ 0x0F120039,
+ 0x0F12F000,
+ 0x0F12F9F5,
+ 0x0F126020,
+ 0x0F12E5D0,
+ 0x0F12B57C,
+ 0x0F12489A,
+ 0x0F12A901,
+ 0x0F120004,
+ 0x0F12F000,
+ 0x0F12F979,
+ 0x0F12466B,
+ 0x0F1288D9,
+ 0x0F128898,
+ 0x0F124B95,
+ 0x0F123346,
+ 0x0F121E9A,
+ 0x0F12F000,
+ 0x0F12F9ED,
+ 0x0F124894,
+ 0x0F124992,
+ 0x0F123812,
+ 0x0F123140,
+ 0x0F128A42,
+ 0x0F12888B,
+ 0x0F1218D2,
+ 0x0F128242,
+ 0x0F128AC2,
+ 0x0F1288C9,
+ 0x0F121851,
+ 0x0F1282C1,
+ 0x0F120020,
+ 0x0F124669,
+ 0x0F12F000,
+ 0x0F12F961,
+ 0x0F12488D,
+ 0x0F12214D,
+ 0x0F128301,
+ 0x0F122196,
+ 0x0F128381,
+ 0x0F12211D,
+ 0x0F123020,
+ 0x0F128001,
+ 0x0F12F000,
+ 0x0F12F9DB,
+ 0x0F12F000,
+ 0x0F12F9E1,
+ 0x0F124888,
+ 0x0F124C88,
+ 0x0F126E00,
+ 0x0F1260E0,
+ 0x0F12466B,
+ 0x0F128818,
+ 0x0F128859,
+ 0x0F120025,
+ 0x0F121A40,
+ 0x0F123540,
+ 0x0F1261A8,
+ 0x0F12487F,
+ 0x0F129900,
+ 0x0F123060,
+ 0x0F12F000,
+ 0x0F12F9D9,
+ 0x0F12466B,
+ 0x0F128819,
+ 0x0F121DE0,
+ 0x0F1230F9,
+ 0x0F128741,
+ 0x0F128859,
+ 0x0F128781,
+ 0x0F122000,
+ 0x0F1271A0,
+ 0x0F1274A8,
+ 0x0F12BC7C,
+ 0x0F12BC08,
+ 0x0F124718,
+ 0x0F12B5F8,
+ 0x0F120005,
+ 0x0F126808,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F12684A,
+ 0x0F120412,
+ 0x0F120C12,
+ 0x0F12688E,
+ 0x0F1268CC,
+ 0x0F124970,
+ 0x0F12884B,
+ 0x0F124343,
+ 0x0F120A98,
+ 0x0F122304,
+ 0x0F125ECB,
+ 0x0F1218C0,
+ 0x0F1202C0,
+ 0x0F120C00,
+ 0x0F1288CB,
+ 0x0F124353,
+ 0x0F120A9A,
+ 0x0F122308,
+ 0x0F125ECB,
+ 0x0F1218D1,
+ 0x0F1202C9,
+ 0x0F120C09,
+ 0x0F122701,
+ 0x0F12003A,
+ 0x0F1240AA,
+ 0x0F129200,
+ 0x0F12002A,
+ 0x0F123A10,
+ 0x0F124097,
+ 0x0F122D10,
+ 0x0F12DA06,
+ 0x0F124A69,
+ 0x0F129B00,
+ 0x0F128812,
+ 0x0F12439A,
+ 0x0F124B67,
+ 0x0F12801A,
+ 0x0F12E003,
+ 0x0F124B66,
+ 0x0F12885A,
+ 0x0F1243BA,
+ 0x0F12805A,
+ 0x0F120023,
+ 0x0F120032,
+ 0x0F12F000,
+ 0x0F12F981,
+ 0x0F122D10,
+ 0x0F12DA05,
+ 0x0F124961,
+ 0x0F129A00,
+ 0x0F128808,
+ 0x0F124310,
+ 0x0F128008,
+ 0x0F12E003,
+ 0x0F12485E,
+ 0x0F128841,
+ 0x0F124339,
+ 0x0F128041,
+ 0x0F124D5B,
+ 0x0F122000,
+ 0x0F123580,
+ 0x0F1288AA,
+ 0x0F125E30,
+ 0x0F122100,
+ 0x0F12F000,
+ 0x0F12F98D,
+ 0x0F128030,
+ 0x0F122000,
+ 0x0F1288AA,
+ 0x0F125E20,
+ 0x0F122100,
+ 0x0F12F000,
+ 0x0F12F986,
+ 0x0F128020,
+ 0x0F12E587,
+ 0x0F12B510,
+ 0x0F12F000,
+ 0x0F12F989,
+ 0x0F124A53,
+ 0x0F128D50,
+ 0x0F122800,
+ 0x0F12D007,
+ 0x0F12494E,
+ 0x0F1231C0,
+ 0x0F12684B,
+ 0x0F124950,
+ 0x0F124283,
+ 0x0F12D202,
+ 0x0F128D90,
+ 0x0F1281C8,
+ 0x0F12E6A0,
+ 0x0F128DD0,
+ 0x0F1281C8,
+ 0x0F12E69D,
+ 0x0F12B5F8,
+ 0x0F12F000,
+ 0x0F12F97E,
+ 0x0F124D49,
+ 0x0F128E28,
+ 0x0F122800,
+ 0x0F12D01F,
+ 0x0F124E49,
+ 0x0F124844,
+ 0x0F1268B4,
+ 0x0F126800,
+ 0x0F124284,
+ 0x0F12D903,
+ 0x0F121A21,
+ 0x0F120849,
+ 0x0F121847,
+ 0x0F12E006,
+ 0x0F124284,
+ 0x0F12D203,
+ 0x0F121B01,
+ 0x0F120849,
+ 0x0F121A47,
+ 0x0F12E000,
+ 0x0F120027,
+ 0x0F120020,
+ 0x0F12493B,
+ 0x0F123120,
+ 0x0F127A0C,
+ 0x0F122C00,
+ 0x0F12D004,
+ 0x0F120200,
+ 0x0F120039,
+ 0x0F12F000,
+ 0x0F12F8C3,
+ 0x0F128668,
+ 0x0F122C00,
+ 0x0F12D000,
+ 0x0F1260B7,
+ 0x0F12E54D,
+ 0x0F1220FF,
+ 0x0F121C40,
+ 0x0F128668,
+ 0x0F12E549,
+ 0x0F12B510,
+ 0x0F12000C,
+ 0x0F126820,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F124933,
+ 0x0F128E0A,
+ 0x0F122A00,
+ 0x0F12D003,
+ 0x0F128E49,
+ 0x0F120200,
+ 0x0F12F000,
+ 0x0F12F8AD,
+ 0x0F126020,
+ 0x0F120400,
+ 0x0F120C00,
+ 0x0F12E661,
+ 0x0F12B570,
+ 0x0F12680C,
+ 0x0F124D2F,
+ 0x0F120020,
+ 0x0F126F29,
+ 0x0F12F000,
+ 0x0F12F946,
+ 0x0F126F69,
+ 0x0F121D20,
+ 0x0F12F000,
+ 0x0F12F942,
+ 0x0F124827,
+ 0x0F128E00,
+ 0x0F122800,
+ 0x0F12D006,
+ 0x0F124922,
+ 0x0F122214,
+ 0x0F123168,
+ 0x0F120008,
+ 0x0F12383C,
+ 0x0F12F000,
+ 0x0F12F93F,
+ 0x0F12E488,
+ 0x0F12B5F8,
+ 0x0F120004,
+ 0x0F124D24,
+ 0x0F128B68,
+ 0x0F122800,
+ 0x0F12D012,
+ 0x0F124823,
+ 0x0F128A00,
+ 0x0F1206C0,
+ 0x0F12D50E,
+ 0x0F124822,
+ 0x0F127800,
+ 0x0F122800,
+ 0x0F12D00A,
+ 0x0F12481D,
+ 0x0F126FC1,
+ 0x0F122000,
+ 0x0F12F000,
+ 0x0F12F923,
+ 0x0F128B28,
+ 0x0F122201,
+ 0x0F122180,
+ 0x0F12F000,
+ 0x0F12F92C,
+ 0x0F128328,
+ 0x0F122101,
+ 0x0F12000D,
+ 0x0F120020,
+ 0x0F123810,
+ 0x0F124081,
+ 0x0F1240A5,
+ 0x0F124F11,
+ 0x0F12000E,
+ 0x0F122C10,
+ 0x0F12DA03,
+ 0x0F128838,
+ 0x0F1243A8,
+ 0x0F128038,
+ 0x0F12E002,
+ 0x0F128878,
+ 0x0F1243B0,
+ 0x0F128078,
+ 0x0F12F000,
+ 0x0F12F920,
+ 0x0F122C10,
+ 0x0F12DA03,
+ 0x0F128838,
+ 0x0F124328,
+ 0x0F128038,
+ 0x0F12E4EF,
+ 0x0F128878,
+ 0x0F124330,
+ 0x0F128078,
+ 0x0F12E4EB,
+ 0x0F122558,
+ 0x0F127000,
+ 0x0F122AB8,
+ 0x0F127000,
+ 0x0F12145E,
+ 0x0F127000,
+ 0x0F122698,
+ 0x0F127000,
+ 0x0F122BB8,
+ 0x0F127000,
+ 0x0F122998,
+ 0x0F127000,
+ 0x0F121100,
+ 0x0F12D000,
+ 0x0F124780,
+ 0x0F127000,
+ 0x0F12E200,
+ 0x0F12D000,
+ 0x0F12210C,
+ 0x0F127000,
+ 0x0F120000,
+ 0x0F127000,
+ 0x0F12308C,
+ 0x0F127000,
+ 0x0F12B040,
+ 0x0F12D000,
+ 0x0F123858,
+ 0x0F127000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F121789,
+ 0x0F120001,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F1216F1,
+ 0x0F120001,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12C3B1,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12C36D,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12F6D7,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12B49D,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127EDF,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12448D,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12F004,
+ 0x0F12E51F,
+ 0x0F1229EC,
+ 0x0F120001,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F122EF1,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12EE03,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12A58B,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127C49,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127C63,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F122DB7,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12EB3D,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12F061,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12F0EF,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12F004,
+ 0x0F12E51F,
+ 0x0F122824,
+ 0x0F120001,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F128EDD,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F128DCB,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F128E17,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F1298C5,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127C7D,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127E31,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127EAB,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F127501,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12F63F,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F123D0B,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F1229BF,
+ 0x0F120001,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12F004,
+ 0x0F12E51F,
+ 0x0F1226D8,
+ 0x0F120001,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F12306B,
+ 0x0F120000,
+ 0x0F124778,
+ 0x0F1246C0,
+ 0x0F12C000,
+ 0x0F12E59F,
+ 0x0F12FF1C,
+ 0x0F12E12F,
+ 0x0F126099,
+ 0x0F120000, /* End of Patch Data(Last : 7000449Eh) */
+/*
+// End of Patch Data(Last : 7000465Ah)
+// Total Size 2916 (0B64)
+// Addr : 3AF8 Size : 2914(B62h)
+
+// TNP_USER_MBCV_CONTROL
+// TNP_4EC_MBR_TUNE
+// TNP_4EC_FORBIDDEN_TUNE
+// TNP_AF_FINESEARCH_DRIVEBACK
+// TNP_FLASH_ALG
+// TNP_GAS_ALPHA_OTP
+// TNP_AWB_MODUL_COMP
+// TNP_AWB_INIT_QUEUE
+// TNP_AWB_GRID_LOWBR
+// TNP_AWB_GRID_MODULECOMP
+// TNP_ADLC_TUNE
+// TNP_1FRAME_AE
+// TNP_TG_OFF_CFG_CHG_IN_SPOOF_MODE
+*/
+
+/*==========================================================
+// OTP setting
+//=========================================================*/
+ 0x002A0722, /* OTP block */
+ 0x0F120100,
+ 0x002A0726,
+ 0x0F120001,
+ 0x002A08D6,
+ 0x0F120001,
+ 0x002A146E,
+ 0x0F120000,
+ 0x002A08DC,
+ 0x0F120000,
+ 0x0028D000,
+ 0x002A1000,
+ 0x0F120001,
+
+/*==========================================================
+//04.Gas_Anti Shading_Otp
+//=========================================================*/
+ 0x00287000,
+ 0x002A08B4,
+ 0x0F120001, /* wbt_bUseOutdoorASH */
+
+/* Refer Mon_AWB_RotGain */
+ 0x002A08BC,
+ 0x0F1200C0, /* TVAR_ash_AwbAshCord_0_ 2300K */
+ 0x0F1200DF, /* TVAR_ash_AwbAshCord_1_ 2750K */
+ 0x0F120100, /* TVAR_ash_AwbAshCord_2_ 3300K */
+ 0x0F120125, /* TVAR_ash_AwbAshCord_3_ 4150K */
+ 0x0F12015F, /* TVAR_ash_AwbAshCord_4_ 5250K */
+ 0x0F12017C, /* TVAR_ash_AwbAshCord_5_ 6400K */
+ 0x0F120194, /* TVAR_ash_AwbAshCord_6_ 7500K */
+
+/* GAS Alpha Table */
+ 0x002A08F6,
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__0_ R // 2300K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__3_ B */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__0_ R // 2750K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__3_ B */
+ 0x0F124100, /* TVAR_ash_GASAlpha_2__0_ R // 3300K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__3_ B */
+ 0x0F123F80, /* TVAR_ash_GASAlpha_3__0_ R // 4150K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__3_ B */
+ 0x0F124080, /* TVAR_ash_GASAlpha_4__0_ R // 5250K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__3_ B */
+ 0x0F124100, /* TVAR_ash_GASAlpha_5__0_ R // 6400K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__3_ B */
+ 0x0F124150, /* TVAR_ash_GASAlpha_6__0_ R // 7500K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__3_ B */
+
+/* Outdoor GAS Alpha */
+ 0x0F124600, /* TVAR_ash_GASOutdoorAlpha_0_ R */
+ 0x0F124000, /* TVAR_ash_GASOutdoorAlpha_1_ GR */
+ 0x0F124000, /* TVAR_ash_GASOutdoorAlpha_2_ GB */
+ 0x0F124000, /* TVAR_ash_GASOutdoorAlpha_3_ B */
+ 0x002A08F4,
+ 0x0F120001, /* ash_bUseGasAlpha */
+
+/*==========================================================
+// 07. Analog Setting 2
+//=========================================================*/
+/* This register is for FACTORY ONLY.
+//If you change it without prior notification
+//YOU are RESPONSIBLE for the FAILURE that will happen in the future
+//For subsampling Size */
+
+ 0x00287000, /* REG_ANALOG_SETTING2 */
+ 0x002A18BC,
+ 0x0F120004, /* senHal_ContPtrs_senModesDataArr_0_ */
+ 0x0F1205B6, /* senHal_ContPtrs_senModesDataArr_1_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_2_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_3_ */
+ 0x0F120001, /* senHal_ContPtrs_senModesDataArr_4_ */
+ 0x0F1205BA, /* senHal_ContPtrs_senModesDataArr_5_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_6_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_7_ */
+ 0x0F120007, /* senHal_ContPtrs_senModesDataArr_8_ */
+ 0x0F1205BA, /* senHal_ContPtrs_senModesDataArr_9_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_10_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_11_ */
+ 0x0F1201F4, /* senHal_ContPtrs_senModesDataArr_12_ */
+ 0x0F12024E, /* senHal_ContPtrs_senModesDataArr_13_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_14_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_15_ */
+ 0x0F1201F4, /* senHal_ContPtrs_senModesDataArr_16_ */
+ 0x0F1205B6, /* senHal_ContPtrs_senModesDataArr_17_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_18_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_19_ */
+ 0x0F1201F4, /* senHal_ContPtrs_senModesDataArr_20_ */
+ 0x0F1205BA, /* senHal_ContPtrs_senModesDataArr_21_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_22_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_23_ */
+ 0x0F1201F4, /* senHal_ContPtrs_senModesDataArr_24_ */
+ 0x0F12024F, /* senHal_ContPtrs_senModesDataArr_25_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_26_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_27_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_28_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_29_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_30_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_31_ */
+ 0x0F120075, /* senHal_ContPtrs_senModesDataArr_32_ */
+ 0x0F1200CF, /* senHal_ContPtrs_senModesDataArr_33_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_34_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_35_ */
+ 0x0F120075, /* senHal_ContPtrs_senModesDataArr_36_ */
+ 0x0F1200D6, /* senHal_ContPtrs_senModesDataArr_37_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_38_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_39_ */
+ 0x0F120004, /* senHal_ContPtrs_senModesDataArr_40_ */
+ 0x0F1201F4, /* senHal_ContPtrs_senModesDataArr_41_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_42_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_43_ */
+ 0x0F1200F0, /* senHal_ContPtrs_senModesDataArr_44_ */
+ 0x0F1201F4, /* senHal_ContPtrs_senModesDataArr_45_ */
+ 0x0F12029E, /* senHal_ContPtrs_senModesDataArr_46_ */
+ 0x0F1205B2, /* senHal_ContPtrs_senModesDataArr_47_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_48_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_49_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_50_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_51_ */
+ 0x0F1201F8, /* senHal_ContPtrs_senModesDataArr_52_ */
+ 0x0F120228, /* senHal_ContPtrs_senModesDataArr_53_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_54_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_55_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_56_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_57_ */
+ 0x0F120208, /* senHal_ContPtrs_senModesDataArr_58_ */
+ 0x0F120238, /* senHal_ContPtrs_senModesDataArr_59_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_60_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_61_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_62_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_63_ */
+ 0x0F120218, /* senHal_ContPtrs_senModesDataArr_64_ */
+ 0x0F120238, /* senHal_ContPtrs_senModesDataArr_65_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_66_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_67_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_68_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_69_ */
+ 0x0F120001, /* senHal_ContPtrs_senModesDataArr_70_ */
+ 0x0F120009, /* senHal_ContPtrs_senModesDataArr_71_ */
+ 0x0F1200DE, /* senHal_ContPtrs_senModesDataArr_72_ */
+ 0x0F1205C0, /* senHal_ContPtrs_senModesDataArr_73_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_74_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_75_ */
+ 0x0F1200DF, /* senHal_ContPtrs_senModesDataArr_76_ */
+ 0x0F1200E4, /* senHal_ContPtrs_senModesDataArr_77_ */
+ 0x0F1201F8, /* senHal_ContPtrs_senModesDataArr_78_ */
+ 0x0F1201FD, /* senHal_ContPtrs_senModesDataArr_79_ */
+ 0x0F1205B6, /* senHal_ContPtrs_senModesDataArr_80_ */
+ 0x0F1205BB, /* senHal_ContPtrs_senModesDataArr_81_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_82_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_83_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_84_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_85_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_86_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_87_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_88_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_89_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_90_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_91_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_92_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_93_ */
+ 0x0F1201F8, /* senHal_ContPtrs_senModesDataArr_94_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_95_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_96_ */
+ 0x0F120077, /* senHal_ContPtrs_senModesDataArr_97_ */
+ 0x0F12007E, /* senHal_ContPtrs_senModesDataArr_98_ */
+ 0x0F12024F, /* senHal_ContPtrs_senModesDataArr_99_ */
+ 0x0F12025E, /* senHal_ContPtrs_senModesDataArr_100_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_101_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_102_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_103_ */
+ 0x0F120000, /* senHal_ContPtrs_senModesDataArr_104_ */
+
+ 0x0F120004, /* senHal_ContPtrs_senAvgModesDataArr_0_ */
+ 0x0F1209D1, /* senHal_ContPtrs_senAvgModesDataArr_1_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_2_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_3_ */
+ 0x0F120001, /* senHal_ContPtrs_senAvgModesDataArr_4_ */
+ 0x0F1209D5, /* senHal_ContPtrs_senAvgModesDataArr_5_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_6_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_7_ */
+ 0x0F120008, /* senHal_ContPtrs_senAvgModesDataArr_8_ */
+ 0x0F1209D5, /* senHal_ContPtrs_senAvgModesDataArr_9_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_10_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_11_ */
+ 0x0F1202AA, /* senHal_ContPtrs_senAvgModesDataArr_12_ */
+ 0x0F120326, /* senHal_ContPtrs_senAvgModesDataArr_13_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_14_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_15_ */
+ 0x0F1202AA, /* senHal_ContPtrs_senAvgModesDataArr_16_ */
+ 0x0F1209D1, /* senHal_ContPtrs_senAvgModesDataArr_17_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_18_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_19_ */
+ 0x0F1202AA, /* senHal_ContPtrs_senAvgModesDataArr_20_ */
+ 0x0F1209D5, /* senHal_ContPtrs_senAvgModesDataArr_21_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_22_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_23_ */
+ 0x0F1202AA, /* senHal_ContPtrs_senAvgModesDataArr_24_ */
+ 0x0F120327, /* senHal_ContPtrs_senAvgModesDataArr_25_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_26_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_27_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_28_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_29_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_30_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_31_ */
+ 0x0F120008, /* senHal_ContPtrs_senAvgModesDataArr_32_ */
+ 0x0F120084, /* senHal_ContPtrs_senAvgModesDataArr_33_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_34_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_35_ */
+ 0x0F120008, /* senHal_ContPtrs_senAvgModesDataArr_36_ */
+ 0x0F12008D, /* senHal_ContPtrs_senAvgModesDataArr_37_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_38_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_39_ */
+ 0x0F120008, /* senHal_ContPtrs_senAvgModesDataArr_40_ */
+ 0x0F1202AA, /* senHal_ContPtrs_senAvgModesDataArr_41_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_42_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_43_ */
+ 0x0F1200AA, /* senHal_ContPtrs_senAvgModesDataArr_44_ */
+ 0x0F1202AA, /* senHal_ContPtrs_senAvgModesDataArr_45_ */
+ 0x0F1203AD, /* senHal_ContPtrs_senAvgModesDataArr_46_ */
+ 0x0F1209CD, /* senHal_ContPtrs_senAvgModesDataArr_47_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_48_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_49_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_50_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_51_ */
+ 0x0F1202AE, /* senHal_ContPtrs_senAvgModesDataArr_52_ */
+ 0x0F1202DE, /* senHal_ContPtrs_senAvgModesDataArr_53_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_54_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_55_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_56_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_57_ */
+ 0x0F1202BE, /* senHal_ContPtrs_senAvgModesDataArr_58_ */
+ 0x0F1202EE, /* senHal_ContPtrs_senAvgModesDataArr_59_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_60_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_61_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_62_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_63_ */
+ 0x0F1202CE, /* senHal_ContPtrs_senAvgModesDataArr_64_ */
+ 0x0F1202EE, /* senHal_ContPtrs_senAvgModesDataArr_65_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_66_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_67_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_68_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_69_ */
+ 0x0F120001, /* senHal_ContPtrs_senAvgModesDataArr_70_ */
+ 0x0F120009, /* senHal_ContPtrs_senAvgModesDataArr_71_ */
+ 0x0F120095, /* senHal_ContPtrs_senAvgModesDataArr_72_ */
+ 0x0F1209DB, /* senHal_ContPtrs_senAvgModesDataArr_73_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_74_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_75_ */
+ 0x0F120096, /* senHal_ContPtrs_senAvgModesDataArr_76_ */
+ 0x0F12009B, /* senHal_ContPtrs_senAvgModesDataArr_77_ */
+ 0x0F1202AE, /* senHal_ContPtrs_senAvgModesDataArr_78_ */
+ 0x0F1202B3, /* senHal_ContPtrs_senAvgModesDataArr_79_ */
+ 0x0F1209D1, /* senHal_ContPtrs_senAvgModesDataArr_80_ */
+ 0x0F1209D6, /* senHal_ContPtrs_senAvgModesDataArr_81_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_82_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_83_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_84_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_85_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_86_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_87_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_88_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_89_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_90_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_91_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_92_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_93_ */
+ 0x0F1202AE, /* senHal_ContPtrs_senAvgModesDataArr_94_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_95_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_96_ */
+ 0x0F120009, /* senHal_ContPtrs_senAvgModesDataArr_97_ */
+ 0x0F120010, /* senHal_ContPtrs_senAvgModesDataArr_98_ */
+ 0x0F120327, /* senHal_ContPtrs_senAvgModesDataArr_99_ */
+ 0x0F120336, /* senHal_ContPtrs_senAvgModesDataArr_100_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_101_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_102_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_103_ */
+ 0x0F120000, /* senHal_ContPtrs_senAvgModesDataArr_104_ */
+
+ 0x002A1AF8,
+ 0x0F125A3C, /* senHal_TuneStr_AngTuneData1_2_ register at subsampling */
+ 0x002A1896,
+ 0x0F120002, /* senHal_SamplingType */
+ 0x0F120000, /* senHal_SamplingMode 0000 : 2PLA, 0001 : 4PLA */
+ 0x0F120003, /* senHal_PLAOption [0] VPLA enable, [1] HPLA enable */
+
+ 0x002A1B00, /* Add for low lux flash from LSI */
+ 0x0F12F428,
+ 0x0F12FFFF,
+ 0x0F120000,
+
+ 0x002A189E,
+ 0x0F120FB0, /* senHal_ExpMinPixels */
+
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+
+ 0x002A1AEA,
+ 0x0F128080, /* senHal_SubF404Tune */
+ 0x0F120080, /* senHal_FullF404Tune */
+ 0x002A1AE0,
+ 0x0F120000, /* senHal_bSenAAC */
+
+ 0x002A1A72,
+ 0x0F120000, /* senHal_bSRX SRX off */
+ 0x002A18A2,
+ 0x0F120004, /* senHal_NExpLinesCheckFine extend Forbidden area line */
+ 0x002A1A6A,
+ 0x0F12009A, /* senHal_usForbiddenRightOfs extend right Forbidden
+ area line */
+ 0x002A385E,
+ 0x0F12024C, /* Mon_Sen_uExpPixelsOfs */
+
+ 0x002A0EE6,
+ 0x0F120000, /* setot_bUseDigitalHbin */
+ 0x002A1B2A,
+ 0x0F120300, /* senHal_TuneStr2_usAngTuneGainTh */
+ 0x0F1200D6, /* senHal_TuneStr2_AngTuneF4CA_0_ */
+ 0x0F12008D, /* senHal_TuneStr2_AngTuneF4CA_1_ */
+ 0x0F1200CF, /* senHal_TuneStr2_AngTuneF4C2_0_ */
+ 0x0F120084, /* senHal_TuneStr2_AngTuneF4C2_1_ */
+
+ 0x002A0EEC,
+ 0x0F12000A, /* setot_usSubSXBayerOffset */
+ 0x0F120012, /* setot_usFullXBayerOffset */
+
+/*==========================================================
+// 12.AF Setting
+//=========================================================*/
+/* AF interface setting */
+ 0x00287000,
+ 0x002A01FC,
+ 0x0F120001, /* REG_TC_IPRM_LedGpio */
+
+ 0x002A01FE,
+ 0x0F120003, /* REG_TC_IPRM_CM_Init_AfModeType VCM IIC */
+ 0x0F120000, /* REG_TC_IPRM_CM_Init_PwmConfig1 */
+ 0x002A0204,
+ 0x0F120061, /* REG_TC_IPRM_CM_Init_GpioConfig1 AF Enable GPIO 6 */
+ 0x002A020C,
+ 0x0F122F0C, /* REG_TC_IPRM_CM_Init_Mi2cBits */
+ 0x0F120190, /* REG_TC_IPRM_CM_Init_Mi2cRateKhz IIC Speed */
+
+/* AF Windo,w Settings */
+ 0x002A0294,
+ 0x0F120100, /* REG_TC_AF_FstWinStartX */
+ 0x0F1200E3, /* REG_TC_AF_FstWinStartY */
+ 0x0F120200, /* REG_TC_AF_FstWinSizeX */
+ 0x0F120238, /* REG_TC_AF_FstWinSizeY */
+ 0x0F1201C6, /* LSI_Cho AF Window Center from_LSI */
+ 0x0F120166, /* REG_TC_AF_ScndWinStartY */
+ 0x0F120074, /* LSI_Cho AF Fail when Size change from_LSI */
+ 0x0F120132, /* REG_TC_AF_ScndWinSizeY */
+ 0x0F120001, /* REG_TC_AF_WinSizesUpdated */
+
+/* 2nd search setting */
+ 0x002A070E,
+ 0x0F1200C0,
+ 0x002A071E,
+ 0x0F120000,
+ 0x002A163C,
+ 0x0F120000,
+ 0x002A1648,
+ 0x0F129002,
+ 0x002A1652,
+ 0x0F120002,
+ 0x0F120000,
+ 0x002A15E0,
+ 0x0F120802,
+
+/* Peak Threshold */
+ 0x002A164C,
+ 0x0F120003,
+ 0x002A163E,
+ 0x0F1200C2,
+ 0x0F120098,
+
+/* Home Pos */
+ 0x002A15D4,
+ 0x0F120000, /* af_pos_usHomePos */
+ 0x0F12D000, /* af_pos_usLowConfPos */
+
+/* AF statistics */
+ 0x002A169A,
+ 0x0F12FF95,
+ 0x002A166A,
+ 0x0F120280,
+ 0x002A1676,
+ 0x0F1203A0,
+ 0x0F120320,
+ 0x002A16BC,
+ 0x0F120030,
+ 0x002A16E0,
+ 0x0F120060,
+ 0x002A16D4,
+ 0x0F120010,
+ 0x002A1656,
+ 0x0F120000,
+ 0x002A15E6,
+ 0x0F12003C,
+
+ 0x0F120018,
+ 0x0F120024,
+ 0x0F120028,
+ 0x0F12002C,
+ 0x0F12002E,
+ 0x0F120032,
+ 0x0F120036,
+ 0x0F12003A,
+ 0x0F120040,
+ 0x0F120048,
+ 0x0F120050,
+ 0x0F120058,
+ 0x0F120060,
+ 0x0F120068,
+ 0x0F120070,
+ 0x0F120078,
+ 0x0F120080,
+ 0x0F120088,
+ 0x0F120090,
+ 0x0F120098,
+ 0x0F1200A0,
+ 0x0F1200A8,
+ 0x0F1200B0,
+ 0x0F1200B8,
+ 0x0F1200C0,
+ 0x0F1200C8,
+
+ 0x002A1722,
+ 0x0F128000,
+ 0x0F120006,
+ 0x0F123FF0,
+ 0x0F1203E8,
+ 0x0F120000,
+ 0x0F120008,
+ 0x0F120001,
+ 0x0F120004,
+ 0x0F120080,
+ 0x0F1200C0,
+ 0x0F1200E0,
+ 0x0F120000,
+
+ 0x002A028C,
+ 0x0F120003,
+
+/*==========================================================
+// 14.AWB-BASIC setting
+//=========================================================*/
+
+ /* AWB init Start point */
+ 0x002A145E,
+ 0x0F120580, /* awbb_GainsInit_0_ */
+ 0x0F120428, /* awbb_GainsInit_1_ */
+ 0x0F1207B0,
+
+ /* White Locus */
+ 0x002A11F0,
+ 0x0F120120, /* awbb_IntcR */
+ 0x0F120121, /* awbb_IntcB */
+
+ /* Indoor Zone */
+ 0x002A101C,
+ 0x0F12036E,
+ 0x0F1203AC,
+ 0x0F120324,
+ 0x0F1203A2,
+ 0x0F1202EA,
+ 0x0F120386,
+ 0x0F1202B0,
+ 0x0F120358,
+ 0x0F120284,
+ 0x0F120326,
+ 0x0F120266,
+ 0x0F1202F4,
+ 0x0F12024E,
+ 0x0F1202D0,
+ 0x0F120236,
+ 0x0F1202B2,
+ 0x0F120220,
+ 0x0F120298,
+ 0x0F12020A,
+ 0x0F120282,
+ 0x0F1201F4,
+ 0x0F12026E,
+ 0x0F1201DE,
+ 0x0F120258,
+ 0x0F1201BA,
+ 0x0F120242,
+ 0x0F1201A4,
+ 0x0F120226,
+ 0x0F1201C2,
+ 0x0F1201F0,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120005,
+ 0x002A1070,
+ 0x0F12000F,
+ 0x002A1074,
+ 0x0F12011A,
+
+ /* Outdoor Zone */
+ 0x002A1078,
+ 0x0F120258,
+ 0x0F120284,
+ 0x0F12023C,
+ 0x0F120290,
+ 0x0F120222,
+ 0x0F120290,
+ 0x0F12021A,
+ 0x0F120286,
+ 0x0F12021A,
+ 0x0F120278,
+ 0x0F12021C,
+ 0x0F120264,
+ 0x0F120230,
+ 0x0F120244,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120004,
+ 0x002A10AC,
+ 0x0F120007,
+ 0x002A10B0,
+ 0x0F120216,
+
+ 0x002A10B4, /* LowBr Zone */
+ 0x0F120394,
+ 0x0F1203C2,
+ 0x0F120312,
+ 0x0F1203EA,
+ 0x0F120270,
+ 0x0F1203F0,
+ 0x0F120204,
+ 0x0F1203C2,
+ 0x0F1201C2,
+ 0x0F120366,
+ 0x0F120194,
+ 0x0F120312,
+ 0x0F120166,
+ 0x0F1202D4,
+ 0x0F120142,
+ 0x0F120294,
+ 0x0F12011C,
+ 0x0F120258,
+ 0x0F12015A,
+ 0x0F120214,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120006,
+ 0x002A10E8,
+ 0x0F12000A,
+ 0x002A10EC,
+ 0x0F120120,
+
+ 0x002A10F0,
+ 0x0F120380,
+ 0x0F120000,
+ 0x0F120168,
+ 0x0F120000,
+ 0x0F122D90,
+ 0x0F120000,
+
+ 0x002A1464,
+ 0x0F120008,
+ 0x0F120190,
+ 0x0F1200A0,
+
+ 0x002A1228,
+ 0x0F1200C0,
+ 0x002A122C,
+ 0x0F120010,
+ 0x002A122A,
+ 0x0F120010,
+
+ 0x002A120A,
+ 0x0F1205D5,
+ 0x002A120E,
+ 0x0F120000,
+
+ 0x0F120771,
+ 0x0F1203A4,
+ 0x0F120036,
+ 0x0F12002A,
+
+ 0x002A1278,
+ 0x0F12FEF7,
+ 0x0F120021,
+ 0x0F120DAC, /* Outdoor TH : about 2500lux */
+ 0x0F120DAC, /* Outdoor TH : about 2500lux */
+ 0x0F12018F,
+ 0x0F120096,
+ 0x0F12000E,
+ 0x002A1224,
+ 0x0F120032,
+ 0x0F12001E,
+ 0x0F1200C0,
+ 0x0F120010,
+ 0x0F120002,
+ 0x002A2BA4,
+ 0x0F120004,
+
+ 0x002A146C,
+ 0x0F120002,
+
+ /* grid const */
+ 0x002A1434,
+ 0x0F1202CE,
+ 0x0F120347,
+ 0x0F1203C2,
+ 0x0F121060,
+ 0x0F121000,
+ 0x0F121150,
+ 0x0F1211E5,
+ 0x0F12120A,
+ 0x0F121296,
+ 0x0F1200AB,
+ 0x0F1200BF,
+ 0x0F1200D2,
+ 0x0F120093,
+
+ /* Indoor Grid Offset_LYA */
+ 0x002A13A4,
+ 0x0F12FFD8,
+ 0x0F12FFF0,
+ 0x0F12FFF5,
+ 0x0F12FFC9,
+ 0x0F120014,
+ 0x0F120028,
+ 0x0F12FFD8,
+ 0x0F12FFF0,
+ 0x0F12FFF5,
+ 0x0F12FFC9,
+ 0x0F120014,
+ 0x0F120028,
+ 0x0F12FFD8,
+ 0x0F12FFF0,
+ 0x0F12FFF5,
+ 0x0F12FFC9,
+ 0x0F120014,
+ 0x0F120028,
+ 0x0F12FFE2,
+ 0x0F12FFDD,
+ 0x0F12FFB5,
+ 0x0F12FF51,
+ 0x0F12FE70,
+ 0x0F12FE70,
+ 0x0F12FFE2,
+ 0x0F12FFDD,
+ 0x0F12FFB5,
+ 0x0F12FF51,
+ 0x0F12FE70,
+ 0x0F12FE70,
+ 0x0F12FFE2,
+ 0x0F12FFDD,
+ 0x0F12FFB5,
+ 0x0F12FF51,
+ 0x0F12FE70,
+ 0x0F12FE70,
+
+ /* Outdoor Grid Offset_LYA */
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120010,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120010,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120010,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120002,
+ 0x0F120002,
+ 0x0F120002,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120002,
+ 0x0F120002,
+ 0x0F120002,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x0F120002,
+ 0x0F120002,
+ 0x0F120002,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x002A1208,
+ 0x0F120020,
+
+ 0x002A144E,
+ 0x0F120000,
+ 0x0F12FFE0,
+ 0x0F120000,
+
+/*==========================================================
+// 10.Clock Setting PCLK X
+//=========================================================*/
+
+/* Input Clock (Mclk) */
+ 0x002A01F8,
+ 0x0F125DC0, /* REG_TC_IPRM_InClockLSBs */
+ 0x002A0212,
+ 0x0F120000, /* REG_TC_IPRM_UseNPviClocks */
+ 0x0F120002, /* REG_TC_IPRM_UseNMipiClocks */
+ 0x0F120002, /* REG_TC_IPRM_NumberOfMipiLanes */
+
+/* System Clock & Output clock (Pclk) */
+ 0x002A021A,
+ 0x0F123A98, /* REG_TC_IPRM_OpClk4KHz_0 //SCLK : 60Mhz */
+ 0x0F122904, /* REG_TC_IPRM_MinOutRate4KHz_0 */
+ 0x0F1229FE, /* REG_TC_IPRM_MaxOutRate4KHz_0 */
+ 0x0F124F1A, /* REG_TC_IPRM_MinOutRate4KHz_1 */
+ 0x0F122904, /* REG_TC_IPRM_MinOutRate4KHz_1 //PCLK Min : 43Mhz */
+ 0x0F1229FE, /* REG_TC_IPRM_MaxOutRate4KHz_1 //PCLK Max : 44Mhz */
+
+/*==========================================================
+// 11.Auto Flicker Detection
+//=========================================================*/
+
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A0F2A,
+ 0x0F120000, /* AFC_Default BIT[0] 1:60Hz 0:50Hz */
+ 0x002A04E6,
+ 0x0F12077F, /* REG_TC_DBG 7F: 60Hz 5F:50Hz */
+ 0x002A0F20,
+ 0x0F120002, /* AFC_SmallP_MaxFrames default :2 20131104 */
+ 0x002A0F08,
+ 0x0F120260, /* AFC_NewS_XSumDiff default :2 20131104 */
+ 0x002A0F2E,
+ 0x0F120004, /* AFC_D_MaxHitsCnt default :2 20131104 */
+ 0x002A0F0A,
+ 0x0F120110, /* AFC_NewS_XBatchVarLimit default :2 20131104 */
+ 0x002A0F12,
+ 0x0F120030, /* AFC_D_AbsEnergyThresh default :2 20131104 */
+ 0x002A0F1C,
+ 0x0F120700, /* AFC_D_B_Coef default :2 20131104 */
+ 0x002A0F14,
+ 0x0F120010, /* AFC_D_RelEnergyThresh default :2 20131104 */
+
+/*==========================================================
+// 12.AE Setting
+//=========================================================*/
+/* AE Target */
+ 0x002A1484,
+ 0x0F12003C, /* TVAR_ae_BrAve */
+
+/*ae_StatMode bit[3] BLC has to be bypassed
+* to prevent AE weight change especially
+* backlight scene */
+ 0x002A148A,
+ 0x0F12000F, /* ae_StatMode */
+
+ 0x002A058C,
+ 0x0F123520,
+
+ 0x0F120000,
+ 0x0F12C350,
+ 0x0F120000,
+ 0x0F123520,
+ 0x0F120000,
+ 0x0F12C350,
+ 0x0F120000,
+ 0x002A059C,
+ 0x0F120470,
+ 0x0F120C00,
+ 0x0F120100,
+ 0x0F121000,
+
+ 0x002A0544,
+ 0x0F120111,
+ 0x0F1200EF,
+
+ 0x002A0608,
+ 0x0F120001,
+ 0x0F120001,
+ 0x0F120800,
+ 0x0F120100,
+
+ 0x0F120001,
+ 0x0F120000,
+ 0x0F120A3C,
+ 0x0F120000,
+ 0x0F120D05,
+ 0x0F120000,
+ 0x0F124008,
+ 0x0F120000,
+ 0x0F127000,
+ 0x0F120000,
+ 0x0F129E00,
+ 0x0F120000,
+ 0x0F12AD00,
+ 0x0F120001,
+ 0x0F12F1D4,
+ 0x0F120002,
+ 0x0F12DC00,
+ 0x0F120005,
+ 0x0F12DC00,
+ 0x0F120005,
+
+ 0x002A0638,
+ 0x0F120001,
+ 0x0F120000,
+ 0x0F120A3C,
+ 0x0F120000,
+ 0x0F120D05,
+ 0x0F120000,
+ 0x0F123408,
+ 0x0F120000,
+ 0x0F123408,
+ 0x0F120000,
+ 0x0F126810,
+ 0x0F120000,
+ 0x0F128214,
+ 0x0F120000,
+ 0x0F12C350,
+ 0x0F120000,
+ 0x0F12C350,
+ 0x0F120000,
+ 0x0F12C350,
+ 0x0F120000,
+
+ 0x002A0660,
+ 0x0F120650,
+ 0x0F120100,
+
+/* Lei Control */
+ 0x002A06B8,
+ 0x0F12802C,
+ 0x0F120005, /* lt_uMaxLei */
+
+ 0x002A05D0,
+ 0x0F120000,
+
+/*==========================================================
+// 13.AE Weight (Normal)
+//=========================================================*/
+ 0x002A1492,
+ 0x0F120100,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120001,
+ 0x0F120101,
+ 0x0F120201,
+ 0x0F120102,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120101,
+ 0x0F120201,
+ 0x0F120302,
+ 0x0F120203,
+ 0x0F120102,
+ 0x0F120201,
+ 0x0F120302,
+ 0x0F120203,
+ 0x0F120102,
+ 0x0F120201,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120102,
+ 0x0F120101,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+
+/*==========================================================
+// 14.Flash Setting
+//=========================================================*/
+
+ 0x00287000,
+ 0x002A0484,
+ 0x0F120002, /* REG_TC_FLS_Mode */
+
+ 0x002A183A,
+ 0x0F120001, /* _afl_usCounter */
+
+ 0x002A17F6,
+ 0x0F120260, /* _afl_DefaultWPr //5C 54 54 */
+ 0x0F120210, /* _afl_DefaultWPb //28 30 28 */
+
+ 0x002A1840,
+ 0x0F120001, /* _afl_bFlsMode */
+
+ 0x0F120100, /* _afl_FlsAFIn_0_ */
+ 0x0F120120, /* _afl_FlsAFIn_1_ */
+ 0x0F120180, /* _afl_FlsAFIn_2_ */
+ 0x0F120200, /* _afl_FlsAFIn_3_ */
+ 0x0F120400, /* _afl_FlsAFIn_4_ */
+ 0x0F120800, /* _afl_FlsAFIn_5_ */
+ 0x0F120A00, /* _afl_FlsAFIn_6_ */
+ 0x0F121000, /* _afl_FlsAFIn_7_ */
+
+ 0x0F120100, /* _afl_FlsAFOut_0_ */
+ 0x0F1200A0, /* _afl_FlsAFOut_1_ */
+ 0x0F120090, /* _afl_FlsAFOut_2_ */
+ 0x0F120080, /* _afl_FlsAFOut_3_ */
+ 0x0F120070, /* _afl_FlsAFOut_4_ */
+ 0x0F120045, /* _afl_FlsAFOut_5_ */
+ 0x0F120030, /* _afl_FlsAFOut_6_ */
+ 0x0F120010, /* _afl_FlsAFOut_7_ */
+
+ 0x002A1884,
+ 0x0F120100, /* _afl_FlsNBOut_0_ */
+ 0x0F120100, /* _afl_FlsNBOut_1_ */
+ 0x0F120100, /* _afl_FlsNBOut_2_ */
+ 0x0F120100, /* _afl_FlsNBOut_3_ */
+ 0x0F120100, /* _afl_FlsNBOut_4_ */
+ 0x0F120100, /* _afl_FlsNBOut_5_ */
+ 0x0F120100, /* _afl_FlsNBOut_6_ */
+ 0x0F120100, /* _afl_FlsNBOut_7_ */
+
+ 0x002A1826,
+
+ 0x0F120100, /* _afl_FlashWP_Weight2_0_ */
+ 0x0F1200C0, /* _afl_FlashWP_Weight2_1_ */
+ 0x0F120080, /* _afl_FlashWP_Weight2_2_ */
+ 0x0F12000A, /* _afl_FlashWP_Weight2_3_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_4_ */
+
+ 0x0F120030, /* _afl_FlashWP_Lei_Thres2_0_ */
+ 0x0F120040, /* _afl_FlashWP_Lei_Thres2_1_ */
+ 0x0F120048, /* _afl_FlashWP_Lei_Thres2_2_ */
+ 0x0F120050, /* _afl_FlashWP_Lei_Thres2_3_ */
+ 0x0F120060, /* _afl_FlashWP_Lei_Thres2_4_ */
+
+ 0x002A4784,
+ 0x0F1200A0, /* TNP_Regs_FlsWeightRIn weight tune start in */
+ 0x0F1200C0,
+ 0x0F1200D0,
+ 0x0F120100,
+ 0x0F120200,
+ 0x0F120300,
+
+ 0x0F120088, /* TNP_Regs_FlsWeightROut weight tune start out */
+ 0x0F1200B0,
+ 0x0F1200C0,
+ 0x0F120100,
+ 0x0F120200,
+ 0x0F120300,
+
+ 0x002A479C,
+
+ 0x0F120120, /* Fls BRIn */
+ 0x0F120150,
+ 0x0F120200,
+
+ 0x0F12003C, /* Fls BROut */
+ 0x0F12003B,
+ 0x0F120026, /* brightness */
+
+/*==========================================================
+// 15.CCM Setting
+//=========================================================*/
+ 0x002A08A6,
+ 0x0F1200C0,
+ 0x0F120100,
+ 0x0F120125,
+ 0x0F12015F,
+ 0x0F12017C,
+ 0x0F120194,
+
+ 0x0F120001, /* wbt_bUseOutdoorCCM */
+
+ 0x002A0898,
+ 0x0F124800,
+ 0x0F127000, /* TVAR_wbt_pBaseCcms */
+ 0x002A08A0,
+ 0x0F1248D8,
+ 0x0F127000, /* TVAR_wbt_pOutdoorCcm */
+
+ 0x002A4800, /* Horizon */
+ 0x0F120208, /* _wbt_pBaseCcms[0] */
+ 0x0F12FFB5, /* _wbt_pBaseCcms[1] */
+ 0x0F12FFE8, /* _wbt_pBaseCcms[2] */
+ 0x0F12FF99, /* _wbt_pBaseCcms[3] */
+ 0x0F1200EB, /* _wbt_pBaseCcms[4] */
+ 0x0F12FFAD, /* _wbt_pBaseCcms[5] */
+ 0x0F120022, /* _wbt_pBaseCcms[6] */
+ 0x0F12FFEA, /* _wbt_pBaseCcms[7] */
+ 0x0F1201C2, /* _wbt_pBaseCcms[8] */
+ 0x0F1200C6, /* _wbt_pBaseCcms[9] */
+ 0x0F120095, /* _wbt_pBaseCcms[10] */
+ 0x0F12FEFD, /* _wbt_pBaseCcms[11] */
+ 0x0F120206, /* _wbt_pBaseCcms[12] */
+ 0x0F12FF7F, /* _wbt_pBaseCcms[13] */
+ 0x0F120191, /* _wbt_pBaseCcms[14] */
+ 0x0F12FF06, /* _wbt_pBaseCcms[15] */
+ 0x0F1201BA, /* _wbt_pBaseCcms[16] */
+ 0x0F120108, /* _wbt_pBaseCcms[17] */
+
+ 0x0F120208, /* TVAR_wbt_pBaseCcms[18] inca A */
+ 0x0F12FFB5, /* _wbt_pBaseCcms[19] */
+ 0x0F12FFE8, /* _wbt_pBaseCcms[20] */
+ 0x0F12FF82, /* _wbt_pBaseCcms[21] */
+ 0x0F120115, /* _wbt_pBaseCcms[22] */
+ 0x0F12FF9A, /* _wbt_pBaseCcms[23] */
+ 0x0F12FFFB, /* _wbt_pBaseCcms[24] */
+ 0x0F12FFB4, /* _wbt_pBaseCcms[25] */
+ 0x0F12021E, /* _wbt_pBaseCcms[26] */
+ 0x0F1200C6, /* _wbt_pBaseCcms[27] */
+ 0x0F120095, /* _wbt_pBaseCcms[28] */
+ 0x0F12FEFD, /* _wbt_pBaseCcms[29] */
+ 0x0F120206, /* _wbt_pBaseCcms[30] */
+ 0x0F12FF7F, /* _wbt_pBaseCcms[31] */
+ 0x0F120191, /* _wbt_pBaseCcms[32] */
+ 0x0F12FF06, /* _wbt_pBaseCcms[33] */
+ 0x0F1201BA, /* _wbt_pBaseCcms[34] */
+ 0x0F120108, /* _wbt_pBaseCcms[35] */
+
+ 0x0F120208, /* TVAR_wbt_pBaseCcms[36] WW*/
+ 0x0F12FFB5, /* _wbt_pBaseCcms[37] */
+ 0x0F12FFE8, /* _wbt_pBaseCcms[38] */
+ 0x0F12FF99, /* _wbt_pBaseCcms[39] */
+ 0x0F1200EB, /* _wbt_pBaseCcms[40] */
+ 0x0F12FFAD, /* _wbt_pBaseCcms[41] */
+ 0x0F120022, /* _wbt_pBaseCcms[42] */
+ 0x0F12FFEA, /* _wbt_pBaseCcms[43] */
+ 0x0F1201C2, /* _wbt_pBaseCcms[44] */
+ 0x0F1200C6, /* _wbt_pBaseCcms[45] */
+ 0x0F120095, /* _wbt_pBaseCcms[46] */
+ 0x0F12FEFD, /* _wbt_pBaseCcms[47] */
+ 0x0F120206, /* _wbt_pBaseCcms[48] */
+ 0x0F12FF7F, /* _wbt_pBaseCcms[49] */
+ 0x0F120191, /* _wbt_pBaseCcms[50] */
+ 0x0F12FF06, /* _wbt_pBaseCcms[51] */
+ 0x0F1201BA, /* _wbt_pBaseCcms[52] */
+ 0x0F120108, /* _wbt_pBaseCcms[53] */
+
+ 0x0F120204, /* _wbt_pBaseCcms[54] // CW */
+ 0x0F12FFB2, /* _wbt_pBaseCcms[55] */
+ 0x0F12FFF5, /* _wbt_pBaseCcms[56] */
+ 0x0F12FEF1, /* _wbt_pBaseCcms[57] */
+ 0x0F12014E, /* _wbt_pBaseCcms[58] */
+ 0x0F12FF18, /* _wbt_pBaseCcms[59] */
+ 0x0F12FFE6, /* _wbt_pBaseCcms[60] */
+ 0x0F12FFDD, /* _wbt_pBaseCcms[61] */
+ 0x0F1201B2, /* _wbt_pBaseCcms[62] */
+ 0x0F1200F2, /* _wbt_pBaseCcms[63] */
+ 0x0F1200CA, /* _wbt_pBaseCcms[64] */
+ 0x0F12FF48, /* _wbt_pBaseCcms[65] */
+ 0x0F120151, /* _wbt_pBaseCcms[66] */
+ 0x0F12FF50, /* _wbt_pBaseCcms[67] */
+ 0x0F120147, /* _wbt_pBaseCcms[68] */
+ 0x0F12FF75, /* _wbt_pBaseCcms[69] */
+ 0x0F120187, /* _wbt_pBaseCcms[70] */
+ 0x0F1201BF, /* _wbt_pBaseCcms[71] */
+
+ 0x0F120204, /* _wbt_pBaseCcms[72] // D50 */
+ 0x0F12FFB2, /* _wbt_pBaseCcms[73] */
+ 0x0F12FFF5, /* _wbt_pBaseCcms[74] */
+ 0x0F12FEF1, /* _wbt_pBaseCcms[75] */
+ 0x0F12014E, /* _wbt_pBaseCcms[76] */
+ 0x0F12FF18, /* _wbt_pBaseCcms[77] */
+ 0x0F12FFD9, /* _wbt_pBaseCcms[78] */
+ 0x0F12FFBA, /* _wbt_pBaseCcms[79] */
+ 0x0F1201D4, /* _wbt_pBaseCcms[80] */
+ 0x0F1200F2, /* _wbt_pBaseCcms[81] */
+ 0x0F1200CA, /* _wbt_pBaseCcms[82] */
+ 0x0F12FF48, /* _wbt_pBaseCcms[83] */
+ 0x0F120151, /* _wbt_pBaseCcms[84] */
+ 0x0F12FF50, /* _wbt_pBaseCcms[85] */
+ 0x0F120147, /* _wbt_pBaseCcms[86] */
+ 0x0F12FF75, /* _wbt_pBaseCcms[87] */
+ 0x0F120187, /* _wbt_pBaseCcms[88] */
+ 0x0F1201BF, /* _wbt_pBaseCcms[89] */
+
+ 0x0F120204, /* _wbt_pBaseCcms[90] // D65 */
+ 0x0F12FFB2, /* _wbt_pBaseCcms[91] */
+ 0x0F12FFF5, /* _wbt_pBaseCcms[92] */
+ 0x0F12FEF1, /* _wbt_pBaseCcms[93] */
+ 0x0F12014E, /* _wbt_pBaseCcms[94] */
+ 0x0F12FF18, /* _wbt_pBaseCcms[95] */
+ 0x0F12FFD9, /* _wbt_pBaseCcms[96] */
+ 0x0F12FFBA, /* _wbt_pBaseCcms[97] */
+ 0x0F1201D4, /* _wbt_pBaseCcms[98] */
+ 0x0F1200F2, /* _wbt_pBaseCcms[99] */
+ 0x0F1200CA, /* _wbt_pBaseCcms[100] */
+ 0x0F12FF48, /* _wbt_pBaseCcms[101] */
+ 0x0F120151, /* _wbt_pBaseCcms[102] */
+ 0x0F12FF50, /* _wbt_pBaseCcms[103] */
+ 0x0F120147, /* _wbt_pBaseCcms[104] */
+ 0x0F12FF75, /* _wbt_pBaseCcms[105] */
+ 0x0F120187, /* _wbt_pBaseCcms[106] */
+ 0x0F1201BF, /* _wbt_pBaseCcms[107] */
+
+ 0x0F1201E9, /* _wbt_pOutdoorCcm[0] */
+ 0x0F12FFA8, /* _wbt_pOutdoorCcm[1] */
+ 0x0F12FFC9, /* _wbt_pOutdoorCcm[2] */
+ 0x0F12FE6E, /* _wbt_pOutdoorCcm[3] */
+ 0x0F12012A, /* _wbt_pOutdoorCcm[4] */
+ 0x0F12FF56, /* _wbt_pOutdoorCcm[5] */
+ 0x0F120002, /* _wbt_pOutdoorCcm[6] */
+ 0x0F120042, /* _wbt_pOutdoorCcm[7] */
+ 0x0F1201E6, /* _wbt_pOutdoorCcm[8] */
+ 0x0F1200B6, /* _wbt_pOutdoorCcm[9] */
+ 0x0F120115, /* _wbt_pOutdoorCcm[10] */
+ 0x0F12FF40, /* _wbt_pOutdoorCcm[11] */
+ 0x0F1201EC, /* _wbt_pOutdoorCcm[12] */
+ 0x0F12FF6E, /* _wbt_pOutdoorCcm[13] */
+ 0x0F120181, /* _wbt_pOutdoorCcm[14] */
+ 0x0F12FEC1, /* _wbt_pOutdoorCcm[15] */
+ 0x0F120140, /* _wbt_pOutdoorCcm[16] */
+ 0x0F120176, /* _wbt_pOutdoorCcm[17] */
+
+/*==========================================================
+// 16.GAMMA
+//=========================================================*/
+ /* RGB Indoor Gamma */
+ 0x002A0734, /* R */
+ 0x0F120001,
+ 0x0F120003,
+ 0x0F12000F,
+ 0x0F120028,
+ 0x0F120066,
+ 0x0F1200D9,
+ 0x0F120138,
+ 0x0F120163,
+ 0x0F120189,
+ 0x0F1201C6,
+ 0x0F1201F8,
+ 0x0F120222,
+ 0x0F120247,
+ 0x0F120282,
+ 0x0F1202B5,
+ 0x0F12030F,
+ 0x0F12035F,
+ 0x0F1203A2,
+ 0x0F1203D8,
+ 0x0F1203FF,
+ 0x0F120001, /* G */
+ 0x0F120003,
+ 0x0F12000F,
+ 0x0F120028,
+ 0x0F120066,
+ 0x0F1200D9,
+ 0x0F120138,
+ 0x0F120163,
+ 0x0F120189,
+ 0x0F1201C6,
+ 0x0F1201F8,
+ 0x0F120222,
+ 0x0F120247,
+ 0x0F120282,
+ 0x0F1202B5,
+ 0x0F12030F,
+ 0x0F12035F,
+ 0x0F1203A2,
+ 0x0F1203D8,
+ 0x0F1203FF,
+ 0x0F120001, /* B */
+ 0x0F120003,
+ 0x0F12000F,
+ 0x0F120028,
+ 0x0F120066,
+ 0x0F1200D9,
+ 0x0F120138,
+ 0x0F120163,
+ 0x0F120189,
+ 0x0F1201C6,
+ 0x0F1201F8,
+ 0x0F120222,
+ 0x0F120247,
+ 0x0F120282,
+ 0x0F1202B5,
+ 0x0F12030F,
+ 0x0F12035F,
+ 0x0F1203A2,
+ 0x0F1203D8,
+ 0x0F1203FF,
+
+ 0x0F120007, /* RED */
+ 0x0F120012,
+ 0x0F120020,
+ 0x0F120038,
+ 0x0F120071,
+ 0x0F1200DA,
+ 0x0F120137,
+ 0x0F120161,
+ 0x0F120187,
+ 0x0F1201C3,
+ 0x0F1201FE,
+ 0x0F12021B,
+ 0x0F120245,
+ 0x0F12028C,
+ 0x0F1202CB,
+ 0x0F120325,
+ 0x0F120365,
+ 0x0F12039A,
+ 0x0F1203C7,
+ 0x0F1203F4,
+
+ 0x0F120005,
+ 0x0F120010,
+ 0x0F12001E,
+ 0x0F120036,
+ 0x0F12006F,
+ 0x0F1200D8,
+ 0x0F120135,
+ 0x0F12015F,
+ 0x0F120185,
+ 0x0F1201C1,
+ 0x0F1201F3,
+ 0x0F120220,
+ 0x0F12024A,
+ 0x0F120291,
+ 0x0F1202D0,
+ 0x0F12032A,
+ 0x0F12036A,
+ 0x0F12039F,
+ 0x0F1203CC,
+ 0x0F1203F9,
+
+ 0x0F120003, /* Blue */
+ 0x0F12000E,
+ 0x0F12001C,
+ 0x0F120034,
+ 0x0F12006D,
+ 0x0F1200D6,
+ 0x0F120133,
+ 0x0F12015D,
+ 0x0F120183,
+ 0x0F1201BF,
+ 0x0F1201F5,
+ 0x0F120222,
+ 0x0F12024C,
+ 0x0F120293,
+ 0x0F1202D2,
+ 0x0F12032C,
+ 0x0F12036C,
+ 0x0F1203A1,
+ 0x0F1203CE,
+ 0x0F1203FB,
+
+/*==========================================================
+// 17.AFIT
+//=========================================================*/
+ 0x002A0944, /* Noise Index setting */
+ 0x0F120050, /* afit_uNoiseIndInDoor */
+ 0x0F1200B0, /* afit_uNoiseIndInDoor */
+ 0x0F120196, /* afit_uNoiseIndInDoor */
+ 0x0F120245, /* afit_uNoiseIndInDoor */
+ 0x0F120300, /* afit_uNoiseIndInDoor */
+ 0x002A0976,
+ 0x0F120070, /* afit_usGamutTh */
+ 0x0F120005, /* afit_usNeargrayOffset */
+ 0x0F120000, /* afit_bUseSenBpr */
+ 0x0F1201CC, /* afit_usBprThr_0_ */
+ 0x0F1201CC, /* afit_usBprThr_1_ */
+ 0x0F1201CC, /* afit_usBprThr_2_ */
+ 0x0F1201CC, /* afit_usBprThr_3_ */
+ 0x0F1201CC, /* afit_usBprThr_4_ */
+ 0x0F120180, /* afit_NIContrastAFITValue */
+ 0x0F120196, /* afit_NIContrastTh */
+ 0x002A0938,
+ 0x0F120000, /* on/off AFIT by NB option */
+ 0x0F120014, /* SARR_uNormBrInDoor */
+ 0x0F1200D2, /* SARR_uNormBrInDoor */
+ 0x0F120384, /* SARR_uNormBrInDoor */
+ 0x0F1207D0, /* SARR_uNormBrInDoor */
+ 0x0F121388, /* SARR_uNormBrInDoor */
+ 0x002A098C,
+ 0x0F12FFFB, /* 7000098C AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 7000098E AFIT16_CONTRAST */
+ 0x0F120000, /* 70000990 AFIT16_SATURATION */
+ 0x0F120000, /* 70000992 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000994 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000996 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000998 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 7000099A AFIT16_postdmsc_iHighBright */
+ 0x0F12005F, /* 7000099C AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 7000099E AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 700009A0 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 700009A2 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 700009A4 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 700009A6 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 700009A8 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120040, /* 700009AA AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F1200A0, /* 700009AC AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 700009AE AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 700009B0 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 700009B2 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F123604, /* 700009B4 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12032A, /* 700009B6 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120103, /* 700009B8 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F121205, /* 700009BA AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F12400D, /* 700009BC AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120080, /* 700009BE AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F122080, /* 700009C0 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F123840, /* 700009C2 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120638, /* 700009C4 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 700009C6 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 700009C8 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 700009CA AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 700009CC AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120400, /* 700009CE AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12245A, /* 700009D0 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F12102A, /* 700009D2 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 700009D4 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120600, /* 700009D6 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 700009D8 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120505, /* 700009DA AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 700009DC AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 700009DE AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 700009E0 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F122828, /* 700009E2 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F12040F, /* 700009E4 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 700009E6 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F120800, /* 700009E8 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F121804, /* 700009EA AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 700009EC AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 700009EE AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 700009F0 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 700009F2 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 700009F4 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 700009F6 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120004, /* 700009F8 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 700009FA AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 700009FC AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 700009FE AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000A00 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000A02 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000A04 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000A06 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000A08 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000A0A AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000A0C AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000A0E AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121C04, /* 70000A10 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120214, /* 70000A12 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121002, /* 70000A14 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120610, /* 70000A16 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000A18 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F122818, /* 70000A1A AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000A1C AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120350, /* 70000A1E AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000A20 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000A22 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000A24 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F123141, /* 70000A26 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000A28 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F123140, /* 70000A2A AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000A2C AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000A2E AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000A30 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000A32 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F123601, /* 70000A34 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12242A, /* 70000A36 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F123660, /* 70000A38 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF2A, /* 70000A3A AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000A3C AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000A3E AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000A40 AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000A42 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000A44 AFIT16_CONTRAST */
+ 0x0F12FFFB, /* 0000, */
+ 0x0F120000, /* 70000A48 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000A4A AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000A4C AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000A4E AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000A50 AFIT16_postdmsc_iHighBright */
+ 0x0F120051, /* 70000A52 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000A54 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000A56 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000A58 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000A5A AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000A5C AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000A5E AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000A60 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000A62 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000A64 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000A66 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000A68 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F122404, /* 70000A6A AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12031B, /* 70000A6C AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120103, /* 70000A6E AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F121004, /* 70000A70 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F123A0C, /* 70000A72 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120070, /* 70000A74 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121C80, /* 70000A76 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F123030, /* 70000A78 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120630, /* 70000A7A AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000A7C AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000A7E AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000A80 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000A82 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000A84 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12245A, /* 70000A86 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121018, /* 70000A88 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000A8A AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120B00, /* 70000A8C AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000A8E AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120505, /* 70000A90 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000A92 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000A94 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000A96 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F122928, /* 70000A98 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120415, /* 70000A9A AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000A9C AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F120800, /* 70000A9E AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F121004, /* 70000AA0 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000AA2 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000AA4 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000AA6 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000AA8 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000AAA AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000AAC AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120003, /* 70000AAE AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000AB0 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000AB2 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000AB4 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000AB6 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000AB8 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000ABA AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000ABC AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000ABE AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000AC0 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000AC2 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000AC4 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121F04, /* 70000AC6 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120218, /* 70000AC8 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121102, /* 70000ACA AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120611, /* 70000ACC AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000ACE AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126418, /* 70000AD0 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000AD2 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120380, /* 70000AD4 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000AD6 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000AD8 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000ADA AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F122832, /* 70000ADC AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000ADE AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F12272C, /* 70000AE0 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000AE2 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000AE4 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000AE6 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000AE8 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F122401, /* 70000AEA AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12241B, /* 70000AEC AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F121E60, /* 70000AEE AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF18, /* 70000AF0 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000AF2 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000AF4 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000AF6 AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000AF8 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000AFA AFIT16_CONTRAST */
+ 0x0F12FFFB, /* 70000AFC AFIT16_SATURATION */
+ 0x0F120000, /* 70000AFE AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000B00 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000B02 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000B04 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000B06 AFIT16_postdmsc_iHighBright */
+ 0x0F120043, /* 70000B08 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000B0A AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000B0C AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000B0E AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000B10 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000B12 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000B14 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000B16 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000B18 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000B1A AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000B1C AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000B1E AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121B04, /* 70000B20 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F120312, /* 70000B22 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000B24 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120C03, /* 70000B26 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122806, /* 70000B28 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120060, /* 70000B2A AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121580, /* 70000B2C AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F122020, /* 70000B2E AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000B30 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000B32 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000B34 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000B36 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000B38 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000B3A AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000B3C AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000B3E AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000B40 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120E00, /* 70000B42 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000B44 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120504, /* 70000B46 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000B48 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000B4A AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000B4C AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F122B28, /* 70000B4E AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120417, /* 70000B50 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000B52 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F128000, /* 70000B54 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120A04, /* 70000B56 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000B58 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000B5A AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000B5C AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000B5E AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000B60 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000B62 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120002, /* 70000B64 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000B66 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000B68 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000B6A AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000B6C AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000B6E AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000B70 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120207, /* 70000B72 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000B74 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000B76 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000B78 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000B7A AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122404, /* 70000B7C AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120221, /* 70000B7E AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121202, /* 70000B80 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120613, /* 70000B82 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000B84 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000B86 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000B88 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000B8A AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000B8C AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000B8E AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000B90 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F122630, /* 70000B92 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000B94 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121616, /* 70000B96 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000B98 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000B9A AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000B9C AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000B9E AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121B01, /* 70000BA0 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F122412, /* 70000BA2 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120C60, /* 70000BA4 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0C, /* 70000BA6 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000BA8 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000BAA AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000BAC AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000BAE AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000BB0 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000BB2 AFIT16_SATURATION */
+ 0x0F120000, /* 70000BB4 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000BB6 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000BB8 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000BBA AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000BBC AFIT16_postdmsc_iHighBright */
+ 0x0F120032, /* 70000BBE AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000BC0 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000BC2 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000BC4 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000BC6 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000BC8 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000BCA AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000BCC AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000BCE AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000BD0 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000BD2 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000BD4 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121504, /* 70000BD6 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12030F, /* 70000BD8 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000BDA AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120902, /* 70000BDC AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122004, /* 70000BDE AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120050, /* 70000BE0 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121140, /* 70000BE2 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F12201C, /* 70000BE4 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000BE6 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000BE8 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000BEA AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000BEC AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000BEE AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000BF0 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000BF2 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000BF4 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000BF6 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F121000, /* 70000BF8 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000BFA AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120503, /* 70000BFC AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000BFE AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000C00 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000C02 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F123028, /* 70000C04 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F12041A, /* 70000C06 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000C08 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F12FF00, /* 70000C0A AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120904, /* 70000C0C AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000C0E AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000C10 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000C12 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000C14 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000C16 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000C18 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120002, /* 70000C1A AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000C1C AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000C1E AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000C20 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000C22 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000C24 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000C26 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120206, /* 70000C28 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000C2A AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000C2C AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120305, /* 70000C2E AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120406, /* 70000C30 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122804, /* 70000C32 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120228, /* 70000C34 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121402, /* 70000C36 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120618, /* 70000C38 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000C3A AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000C3C AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000C3E AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000C40 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000C42 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000C44 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000C46 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F12232B, /* 70000C48 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000C4A AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121414, /* 70000C4C AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000C4E AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000C50 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000C52 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000C54 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121501, /* 70000C56 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12240F, /* 70000C58 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120A60, /* 70000C5A AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0A, /* 70000C5C AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000C5E AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000C60 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000C62 AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000C64 AFIT16_BRIGHTNESS //AFIT 4 */
+ 0x0F120000, /* 70000C66 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000C68 AFIT16_SATURATION */
+ 0x0F120000, /* 70000C6A AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000C6C AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000C6E AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000C70 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000C72 AFIT16_postdmsc_iHighBright */
+ 0x0F120032, /* 70000C74 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000C76 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000C78 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000C7A AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000C7C AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000C7E AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000C80 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000C82 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000C84 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000C86 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000C88 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000C8A AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F120F04, /* 70000C8C AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12030C, /* 70000C8E AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000C90 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120602, /* 70000C92 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F121803, /* 70000C94 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120040, /* 70000C96 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F120E20, /* 70000C98 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F122018, /* 70000C9A AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000C9C AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000C9E AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000CA0 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000CA2 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000CA4 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120200, /* 70000CA6 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000CA8 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000CAA AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000CAC AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F121200, /* 70000CAE AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000CB0 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120502, /* 70000CB2 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000CB4 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000CB6 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000CB8 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F124028, /* 70000CBA AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120430, /* 70000CBC AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000CBE AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F12FF00, /* 70000CC0 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120804, /* 70000CC2 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000CC4 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000CC6 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000CC8 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000CCA AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000CCC AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000CCE AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120002, /* 70000CD0 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000CD2 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000CD4 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000CD6 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000CD8 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000CDA AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000CDC AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000CDE AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000CE0 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000CE2 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000CE4 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000CE6 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122C04, /* 70000CE8 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F12022C, /* 70000CEA AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121402, /* 70000CEC AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120618, /* 70000CEE AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000CF0 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000CF2 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000CF4 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000CF6 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000CF8 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000CFA AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000CFC AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F121114, /* 70000CFE AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000D00 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121212, /* 70000D02 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000D04 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000D06 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000D08 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000D0A AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F120F01, /* 70000D0C AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12240C, /* 70000D0E AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120860, /* 70000D10 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF08, /* 70000D12 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000D14 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000D16 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000D18 AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+ 0x0F1223CE, /* 70000D1A //[0]CAFITB_bnr_bypass */
+ 0x0F12FDC8, /* 70000D1C //[0]CAFITB_bnr_bSlopenessTune */
+ 0x0F12112E, /* 70000D1E //[0]CAFITB_ee_bReduceNegMedSh */
+ 0x0F1293A5, /* 70000D20 //[0]CAFITB_dmsc_bDoDesat */
+ 0x0F12FE67, /* 70000D22 //[0]CAFITB_postdmsc_bSat */
+ 0x0F120000, /* 70000D24 //[0]CAFITB_yuviirnr_bWideY */
+
+
+/*==========================================================
+// 18.JPEG Thumnail Setting
+//=========================================================*/
+ /* JPEG Quality */
+ 0x002A0478,
+ 0x0F120050, /* REG_TC_BRC_usPrevQuality */
+ 0x0F12005F, /* REG_TC_BRC_usCaptureQuality */
+
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive // JPEG Thumnail */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+ 0x0F120005, /* REG_TC_THUMB_Thumb_Format //YUV */
+
+ 0x002A17DC, /* JPEG setting */
+ 0x0F120054, /* jpeg_ManualMBCV */
+ 0x002A1AE4,
+ 0x0F12001C, /* senHal_bExtraAddLine */
+ 0x002A0284,
+ 0x0F120001, /* REG_TC_GP_bBypassScalerJpg */
+ 0x002A028A,
+ 0x0F120000, /* REG_TC_GP_bUse1FrameCaptureMode */
+
+ 0x002A1CC2, /* DRx_uDRxWeight for AutoCont function */
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+ 0x002A147C, /* Brightness min/Max */
+ 0x0F120170, /* bp_uMaxBrightnessFactor */
+ 0x002A1482,
+ 0x0F1201E0, /*bp_uMinBrightnessFactor */
+
+/*==========================================================
+// 07.Input Size Setting
+//=========================================================*/
+ 0x002A0250,
+ 0x0F120A10,
+ 0x0F12078C,
+ 0x0F120008,
+ 0x0F120006,
+ 0x0F120A10,
+ 0x0F12078C,
+ 0x0F120008,
+ 0x0F120006,
+ 0x002A0494,
+ 0x0F120A10,
+ 0x0F12078C,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120A10,
+ 0x0F12078C,
+ 0x0F120000,
+ 0x0F120000,
+ 0x002A0262,
+ 0x0F120001,
+ 0x0F120001,
+
+/*==========================================================
+// Preview
+//=========================================================*/
+ 0x002A02A6, /* Preview config[0] 640 480 10~30fps */
+ 0x0F120280, /* REG_0TC_PCFG_usWidth */
+ 0x0F1201E0, /* REG_0TC_PCFG_usHeight */
+ 0x0F120005, /* REG_0TC_PCFG_Format //5:YUV}, 7:RAW}, 9:JPEG */
+ 0x0F1229FE, /* REG_0TC_PCFG_usMaxOut4KHzRate */
+ 0x0F122904, /* REG_0TC_PCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_PCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_PCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_PCFG_PVIMask //[1]:PCLK Inversion */
+ 0x0F120000, /* REG_0TC_PCFG_OIFMask */
+ 0x0F1201E0, /* REG_0TC_PCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_PCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_PCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F1203E8, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 //03E8h:10fps */
+ 0x0F12014A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
+ 0x002A02D0,
+ 0x0F120003, /* REG_0TC_PCFG_uPrevMirror */
+ 0x0F120003, /* REG_0TC_PCFG_uCaptureMirror */
+
+/*==========================================================
+// Capture
+//=========================================================*/
+ 0x002A0396,
+ 0x0F120000, /* REG_0TC_CCFG_uCaptureMode */
+ 0x0F120A10, /* REG_0TC_CCFG_usWidth //2576 */
+ 0x0F12078C, /* REG_0TC_CCFG_usHeight //1932 */
+ 0x0F120005, /* REG_0TC_CCFG_Format //5:YUV}, 7:RAW}, 9:JPEG */
+ 0x0F1229FE, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F122904, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_CCFG_PVIMask //[1]:PCLK Inversion */
+ 0x0F120070, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize //2064d */
+ 0x0F120900, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120001, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 //0535h:7.5fps */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 //029Ah:15fps */
+ 0x002A022C,
+ 0x0F120001, /* REG_TC_IPRM_InitParamsUpdated */
+
+/*==========================================================
+// 21.Select Cofigration Display
+//=========================================================*/
+ 0x00287000,
+ 0x002A0266,
+ 0x0F120000, /* REG_TC_GP_ActivePrevConfig */
+ 0x002A023E,
+ 0x0F120000, /* REG_TC_GP_EnablePreview */
+ 0x0F120001, /* REG_TC_GP_EnablePreviewChanged */
+
+/*==========================================================
+// 22. ESD Check
+//=========================================================*/
+ 0x00287000,
+ 0x002A01A8, /* ESD Check*/
+ 0x0F12AAAA,
+ 0x0028147C,
+ 0x0F120170,
+ 0x00281482,
+ 0x0F1201E0,
+};
+
+
+static const u32 s5k4ec_init_reg3[] = {
+/*==========================================================
+// 21.Select Cofigration Display
+//=========================================================*/
+ 0x00287000,
+ 0x002A0266,
+ 0x0F120000, /* REG_TC_GP_ActivePrevConfig */
+ 0x002A026A,
+ 0x0F120001, /* REG_TC_GP_PrevOpenAfterChange */
+ 0x002A0268,
+ 0x0F120001, /* REG_TC_GP_PrevConfigChanged */
+ 0x002A026E,
+ 0x0f120000,
+ 0x002A026A,
+ 0x0F120001, /* REG_TC_GP_PrevOpenAfterChange */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A023E,
+ 0x0F120001, /* REG_TC_GP_EnablePreview */
+ 0x0F120001, /* REG_TC_GP_EnablePreviewChanged */
+
+/*==========================================================
+// 22. ESD Check
+//=========================================================*/
+ 0x00287000,
+ 0x002A01A8, /* ESD Check */
+ 0x0F12AAAA,
+ 0x0028147C,
+ 0x0F120170,
+ 0x00281482,
+ 0x0F1201E0,
+
+/*==========================================================
+// 23. Brightness min/Max
+//=========================================================*/
+ 0x002A147C, /* Brightness min/Max */
+ 0x0F120170, /* bp_uMaxBrightnessFactor */
+ 0x002A1482,
+ 0x0F1201E0, /* bp_uMinBrightnessFactor */
+
+/*==========================================================
+// 24.ISSUE
+//
+//20110728 : Sequence Changed by image dev.(by J.M.Ahn)
+//20110728 : ESD Check Register Address Change
+//20110829 : TnP Changed by S.Y.Lee
+//20120104 : init Parm Update sequence changed(by J.M.Ahn)
+//20120201 : Flash Öº Green Noise setting (by J.M.Ahn)
+//20120228 : Add Brightness Block
+//20120717 : Lowtemp bypass Å´
+//=========================================================*/
+
+};
+
+static const u32 s5k4ec_init_reg4[] = {
+/*==========================================================
+// 19.Select Cofigration Display
+//=========================================================*/
+ 0x00287000,
+ 0x002A0266,
+ 0x0F120000, /* REG_TC_GP_ActivePrevConfig */
+ 0x002A026A,
+ 0x0F120001, /* REG_TC_GP_PrevOpenAfterChange */
+ 0x002A0268,
+ 0x0F120001, /* REG_TC_GP_PrevConfigChanged */
+ 0x002A026E,
+ 0x0f120000,
+ 0x002A026A,
+ 0x0F120001, /* REG_TC_GP_PrevOpenAfterChange */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A023E,
+ 0x0F120000, /* REG_TC_GP_EnablePreview */
+ 0x0F120001, /* REG_TC_GP_EnablePreviewChanged */
+};
+
+static const u32 s5k4ec_normal_snapshot[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0242,
+ 0x0F120001,
+ 0x002A024E,
+ 0x0F120001,
+ 0x002A0244,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_dtp_init[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0944,
+ 0x0F12FFF0, /*af_uNoise_0_*/
+ 0x0F12FFF1, /*afit_uNoiseIndInDoor_1_ */
+ 0x0F12FFF2, /*afit_uNoiseIndInDoor_2_ */
+ 0x0F12FFF3, /*afit_uNoiseIndInDoor_3_ */
+ 0x0F12FFF4, /*afit_uNoiseIndInDoor_4_ */
+ 0x002A0938,
+ 0x0F120000, /*afit_bUseNB_Afit */
+ 0x0F12FFF0, /*SARR_uNormBrInDoor_0_ */
+ 0x0F12FFF1, /*SARR_uNormBrInDoor_1_ */
+ 0x0F12FFF2, /*SARR_uNormBrInDoor_2_ */
+ 0x0F12FFF3, /*SARR_uNormBrInDoor_3_ */
+ 0x0F12FFF4, /*SARR_uNormBrInDoor_4_ */
+ 0x00287000,
+ 0x002A04A6,
+ 0x0F120001,
+ 0x002A04AA,
+ 0x0F120001,
+ 0x0028D000,
+ 0x002A4200,
+ 0x0F1208A3, /*GAS bypass */
+ 0x002A6600,
+ 0x0F120001, /*CCM bypass */
+ 0x002A6700,
+ 0x0F120001, /*Gamma bypass */
+ 0x002A4900,
+ 0x0F120001, /*AWB bypass */
+
+/*Delay 50ms*/
+ 0x0028D000,
+ 0x002A3100,
+ 0x0F120002, /*Colorbar pattern */
+};
+
+static const u32 s5k4ec_dtp_stop[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0944,
+ 0x0F12004B, /*afit_uNoiser0*/
+ 0x0F120092, /*afit_uNoiseIndInDoor_1_ */
+ 0x0F120196, /*afit_uNoiseIndInDoor_2_ */
+ 0x0F120217, /*afit_uNoiseIndInDoor_3_ */
+ 0x0F1202B0, /*afit_uNoiseIndInDoor_4_ */
+
+ /* Normal Brightness setting */
+ 0x002A0938,
+ 0x0F120000, /*afit_bUseNB_Afit */
+ 0x0F120014, /*SARR_uNormBrInDoor_0_ */
+ 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
+ 0x0F120384, /*SARR_uNormBrInDoor_2_ */
+ 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /*SARR_uNormBrInDoor_4_ */
+ 0x00287000,
+ 0x002A04A6,
+ 0x0F120000,
+ 0x002A04AA,
+ 0x0F120001,
+ 0x0028D000,
+ 0x002A4200,
+ 0x0F1208A2, /*GAS bypass */
+ 0x002A6600,
+ 0x0F120000, /*CCM bypass */
+ 0x002A6700,
+ 0x0F120000, /*Gamma bypass */
+ 0x002A4900,
+ 0x0F120000, /*AWB bypass */
+ 0xFFFE0032, /*p50 */
+ 0x0028D000,
+ 0x002A3100,
+ 0x0F120000, /*Colorbar pattern */
+};
+
+static const u32 s5k4ec_50hz[] = {
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A0F2A,
+ 0x0F120000, /* AFC_Default BIT[0] 1:60Hz 0:50Hz */
+};
+
+static const u32 s5k4ec_60hz[] = {
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A0F2A,
+ 0x0F120001, /* AFC_Default BIT[0] 1:60Hz 0:50Hz */
+};
+
+static const u32 s5k4ec_fps_auto[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02BE,
+ 0x0F120000, /*usFrTimeType*/
+ 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
+ 0x0F1203E8, /*REG_0TC_PCFG_usMaxFrTimeMsecMult10 */ /* 029Ah:15fps */
+ 0x0F12014A, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 */ /*014Ah:30fps */
+};
+
+static const u32 s5k4ec_fps_5[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AF132,
+ 0x0F120006,
+ 0x002AF142,
+ 0x0F120000, /* 110404 AE haunting */
+ 0x00287000,
+ 0x002A02BE,
+ 0x0F120002,
+ 0x0F120001,
+ 0x0F1207D0,
+ 0x0F1207D0,
+};
+
+static const u32 s5k4ec_fps_7[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02B4,
+ 0x0F120012,
+ 0x002A02BE,
+ 0x0F120002, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F120594, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 */
+ 0x0F120594, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 */
+};
+
+static const u32 s5k4ec_fps_10[] = {
+ /* frame rate 10~10fps*/
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AF132,
+ 0x0F120200,
+ 0x002AF142,
+ 0x0F120200, /* 110404 AE haunting */
+ 0x00287000,
+ 0x002A02BE,
+ 0x0F120002, /* usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityTy */
+ 0x0F1203E8, /* 029A/REG_0TC_PCFG_usMaxFrTimeMsecMult10 //03E8h:10fps */
+ 0x0F1203E8, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //03E8h:10fps */
+};
+
+static const u32 s5k4ec_fps_12[] = {
+ /* frame rate 12~12fps*/
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AF132,
+ 0x0F120200,
+ 0x002AF142,
+ 0x0F120200, /* 110404 AE haunting */
+ 0x00287000,
+ 0x002A02BE,
+ 0x0F120002, /* usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F120341, /* 029A/REG_0TC_PCFG_usMaxFrTimeMsecMult10 //0341h:12fps */
+ 0x0F120341, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //0341h:12fps */
+};
+
+static const u32 s5k4ec_fps_15[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02B4,
+ 0x0F120012,
+ 0x002A02BE,
+ 0x0F120002, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F12029A, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 //029Ah:15fps */
+ 0x0F12029A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //029Ah:15fps */
+};
+
+static const u32 s5k4ec_fps_20[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02B4,
+ 0x0F120012,
+ 0x002A02BE,
+ 0x0F120002, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F1201F4, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 //01F4h:20fps */
+ 0x0F1201F4, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //01F4h:20fps */
+};
+
+static const u32 s5k4ec_fps_25[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AF132,
+ 0x0F120200,
+ 0x002AF142,
+ 0x0F120200, /* 110404 AE haunting */
+ 0x00287000,
+ 0x002A02BE,
+ 0x0F120002, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F120190, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 //0190h:25fps */
+ 0x0F120190, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //0190h:25fps */
+};
+
+static const u32 s5k4ec_fps_30[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AF132,
+ 0x0F120006,
+ 0x002AF142,
+ 0x0F120000, /* 110404 AE haunting */
+ 0x00287000,
+ 0x002A02BE,
+ 0x0F120002,
+ 0x0F120001,
+ 0x0F12014A,
+ 0x0F12014A,
+};
+
+static const u32 s5k4ec_effect_normal[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A023C,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_effect_solarization[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A023C,
+ 0x0F120002,
+};
+
+static const u32 s5k4ec_effect_negative[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A023C,
+ 0x0F120003,
+};
+
+static const u32 s5k4ec_effect_sepia[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A023C,
+ 0x0F120004,
+};
+
+static const u32 s5k4ec_effect_black_white[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A023C,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_effect_aqua[] = {
+
+};
+
+static const u32 s5k4ec_effect_sketch[] = {
+
+};
+
+static const u32 s5k4ec_wb_auto[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F12077F,
+
+ 0x002A1826,
+ 0x0F120100, /* _afl_FlashWP_Weight2_0_ */
+ 0x0F1200C0, /* _afl_FlashWP_Weight2_1_ */
+ 0x0F120080, /* _afl_FlashWP_Weight2_2_ */
+ 0x0F12000A, /* _afl_FlashWP_Weight2_3_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_4_ */
+};
+
+static const u32 s5k4ec_wb_sunny[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777,
+
+ 0x002A04BA, /* R gain */
+ 0x0F1205A0,
+
+ 0x002A04BE, /* G gain */
+ 0x0F120400,
+
+ 0x002A04C2, /* B gain */
+ 0x0F120570,
+
+ 0x002A04C6, /* RGB gain changed */
+ 0x0F120001,
+
+ 0x002A1826,
+ 0x0F120000, /* _afl_FlashWP_Weight2_0_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_1_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_2_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_3_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_4_ */
+};
+
+static const u32 s5k4ec_wb_cloudy[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777,
+
+ 0x002A04BA, /* R gain */
+ 0x0F120670,
+
+ 0x002A04BE, /* G gain */
+ 0x0F120400,
+
+ 0x002A04C2, /* B gain */
+ 0x0F1204C0,
+
+ 0x002A04C6,
+ 0x0F120001,
+
+ 0x002A1826,
+ 0x0F120000, /* _afl_FlashWP_Weight2_0_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_1_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_2_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_3_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_4_ */
+};
+
+static const u32 s5k4ec_wb_tungsten[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777,
+
+ 0x002A04BA,
+ 0x0F120420,
+
+ 0x002A04BE,
+ 0x0F120430,
+
+ 0x002A04C2,
+ 0x0F120990,
+
+ 0x002A04C6,
+ 0x0F120001,
+
+ 0x002A1826,
+ 0x0F120000, /* _afl_FlashWP_Weight2_0_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_1_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_2_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_3_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_4_ */
+};
+
+static const u32 s5k4ec_wb_fluorescent[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777,
+
+ 0x002A04BA, /* R gain */
+ 0x0F1205C0,
+
+ 0x002A04BE, /* G gain */
+ 0x0F120400,
+
+ 0x002A04C2, /* B gain */
+ 0x0F1207F0,
+
+ 0x002A04C6,
+ 0x0F120001,
+
+ 0x002A1826,
+ 0x0F120000, /* _afl_FlashWP_Weight2_0_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_1_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_2_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_3_ */
+ 0x0F120000, /* _afl_FlashWP_Weight2_4_ */
+};
+
+static const u32 s5k4ec_wdr_on[] = {
+ 0x002A1BEA,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_wdr_off[] = {
+ 0x002A1BEA,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_iso_auto[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0938, /* afit_bUseNB_Afit */
+ 0x0F120000,
+ 0x0F120014, /* SARR_uNormBrInDoor_0_ */
+ 0x0F1200D2, /* SARR_uNormBrInDoor_1_ */
+ 0x0F120384, /* SARR_uNormBrInDoor_2_ */
+ 0x0F1207D0, /* SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* SARR_uNormBrInDoor_4_ */
+
+ 0x002A2C64,
+ 0x0F120001, /*Auto Flicker Enable */
+
+ 0x002A0230,
+ 0x0F120000,
+
+ 0x002A04D0,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120001,
+
+ 0x002A06C2,
+ 0x0F120200,
+};
+
+static const u32 s5k4ec_iso_50[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+ 0x0F120014, /* SARR_uNormBrInDoor_0_ */
+ 0x0F1200D2, /* SARR_uNormBrInDoor_1_ */
+ 0x0F120384, /* SARR_uNormBrInDoor_2_ */
+ 0x0F1207D0, /* SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* SARR_uNormBrInDoor_4_ */
+
+ 0x002A04D6,
+ 0x0F120000, /* REG_SF_USER_FlickerQuant */
+ 0x0F120001, /* REG_SF_USER_FlickerQuantChanged */
+
+ 0x002A04D0,
+ 0x0F120001, /* REG_SF_USER_IsoType*/
+ 0x0F120100, /* REG_SF_USER_IsoVal */
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120100, /* lt_bUseSecISODgain */
+};
+
+static const u32 s5k4ec_iso_100[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+ 0x0F120014, /* SARR_uNormBrInDoor_0_ */
+ 0x0F1200D2, /* SARR_uNormBrInDoor_1_ */
+ 0x0F120384, /* SARR_uNormBrInDoor_2_ */
+ 0x0F1207D0, /* SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* SARR_uNormBrInDoor_4_ */
+
+ 0x002A04D6,
+ 0x0F120000, /*REG_SF_USER_FlickerQuant */
+ 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
+
+ 0x002A04D0,
+ 0x0F120001, /*REG_SF_USER_IsoType */
+ 0x0F1201BA, /*REG_SF_USER_IsoVal/1BA/1CA:16.9msec/1AA: 17.8msec */
+ 0x0F120001, /*REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120100, /*lt_bUseSecISODgain */
+};
+
+static const u32 s5k4ec_iso_200[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+ 0x0F120114, /* SARR_uNormBrInDoor_0_ */
+ 0x0F1204A2, /* SARR_uNormBrInDoor_1_ */
+ 0x0F120584, /* SARR_uNormBrInDoor_2_ */
+ 0x0F1208D0, /* SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* SARR_uNormBrInDoor_4_ */
+
+ 0x002A04D6,
+ 0x0F120000, /*REG_SF_USER_FlickerQuant */
+ 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
+
+ 0x002A04D0,
+ 0x0F120001, /* REG_SF_USER_IsoType */
+ 0x0F120374,
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120100, /* lt_bUseSecISODgain */
+};
+
+static const u32 s5k4ec_iso_400[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+ 0x0F120214, /* SARR_uNormBrInDoor_0_ */
+ 0x0F120BD2, /* SARR_uNormBrInDoor_1_ */
+ 0x0F120C84, /* SARR_uNormBrInDoor_2_ */
+ 0x0F1210D0, /* SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* SARR_uNormBrInDoor_4_ */
+
+ 0x002A04D6,
+ 0x0F120000, /* REG_SF_USER_FlickerQuant */
+ 0x0F120001, /* REG_SF_USER_FlickerQuantChanged */
+
+ 0x002A04D0,
+ 0x0F120001, /* REG_SF_USER_IsoType */
+ 0x0F1206F4, /* REGSFUSER_IsoVal/6F4*/
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120100, /* lt_bUseSecISODgain */
+};
+
+static const u32 s5k4ec_metering_matrix[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1492,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+};
+
+static const u32 s5k4ec_metering_center[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1492,
+ 0x0F120100,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120001,
+ 0x0F120101,
+ 0x0F120201,
+ 0x0F120102,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120101,
+ 0x0F120201,
+ 0x0F120302,
+ 0x0F120203,
+ 0x0F120102,
+ 0x0F120201,
+ 0x0F120302,
+ 0x0F120203,
+ 0x0F120102,
+ 0x0F120201,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120102,
+ 0x0F120101,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+};
+
+static const u32 s5k4ec_metering_spot[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1492,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120F01,
+ 0x0F12010F,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120F01,
+ 0x0F12010F,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_anti_banding_flicker_50[] = {
+ 0x00287000,
+ 0x002a04e6,
+ 0x0f12075f,
+ 0x002a04d6,
+ 0x0f120001,
+ 0x0f120001,
+ 0xFFFFFFFF,
+};
+
+static const u32 s5k4ec_anti_banding_flicker_60[] = {
+ 0x00287000,
+ 0x002a04e6,
+ 0x0f12075f,
+ 0x002a04d6,
+ 0x0f120002,
+ 0x0f120001,
+ 0xFFFFFFFF,
+};
+
+/* brightness_level_0 */
+static const u32 s5k4ec_ev_minus_4[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120018, /* _ae_BrAve */
+
+ 0x002A0544,
+ 0x0F12011F,
+ 0x0F1200E1,
+};
+
+/* brightness_level_1 */
+static const u32 s5k4ec_ev_minus_3[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12001E, /* _ae_BrAve */
+
+ 0x002A0544,
+ 0x0F12011F,
+ 0x0F1200E1,
+};
+
+/* brightness_level_2 */
+static const u32 s5k4ec_ev_minus_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120025, /* _ae_BrAve */
+
+ 0x002A0544,
+ 0x0F12011F,
+ 0x0F1200E1,
+};
+
+/* brightness_level_3 */
+static const u32 s5k4ec_ev_minus_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120030, /* _ae_BrAve */
+};
+
+/* brightness_level_4 */
+static const u32 s5k4ec_ev_default[] = {
+ 0xFCFCD000, /* default */
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12003C, /* _ae_BrAve */
+
+ 0x002A0544,
+ 0x0F120111,
+ 0x0F1200EF,
+};
+
+/* brightness_level_5 */
+static const u32 s5k4ec_ev_plus_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12004E, /* _ae_BrAve */
+};
+
+/* brightness_level_6 */
+static const u32 s5k4ec_ev_plus_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12005C, /* TVAR_ae_BrAve 1101 0060->005C */
+};
+
+/* brightness_level_7 */
+static const u32 s5k4ec_ev_plus_3[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120070, /* TVAR_ae_BrAve */
+};
+
+/* brightness_level_8 */
+static const u32 s5k4ec_ev_plus_4[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120080, /* TVAR_ae_BrAve */
+};
+
+/* camcorder brightness_level_0 */
+static const u32 s5k4ec_camcorder_ev_minus_4[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120012, /* _ae_BrAve */
+};
+
+/* camcorder brightness_level_1 */
+static const u32 s5k4ec_camcorder_ev_minus_3[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12001A, /* _ae_BrAve */
+};
+
+/* camcorder brightness_level_2 */
+static const u32 s5k4ec_camcorder_ev_minus_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120022, /* _ae_BrAve */
+};
+
+/* camcorder brightness_level_3 */
+static const u32 s5k4ec_camcorder_ev_minus_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12002A, /* _ae_BrAve */
+};
+
+/* camcorder brightness_level_4 */
+static const u32 s5k4ec_camcorder_ev_default[] = {
+ 0xFCFCD000, /* default */
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120032, /* _ae_BrAve */
+};
+
+/* camcorder brightness_level_5 */
+static const u32 s5k4ec_camcorder_ev_plus_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12003F, /* _ae_BrAve */
+};
+
+/* camcorder brightness_level_6 */
+static const u32 s5k4ec_camcorder_ev_plus_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F12004C, /* TVAR_ae_BrAve 1101 0060->005C */
+};
+
+/* camcorder brightness_level_7 */
+static const u32 s5k4ec_camcorder_ev_plus_3[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120059, /* TVAR_ae_BrAve */
+};
+
+/* camcorder brightness_level_8 */
+static const u32 s5k4ec_camcorder_ev_plus_4[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1484,
+ 0x0F120066, /* TVAR_ae_BrAve */
+};
+
+/* contrast_level_0 */
+static const u32 s5k4ec_contrast_minus_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0232,
+ 0x0F12FFC0,
+};
+
+/* contrast_level_1 */
+static const u32 s5k4ec_contrast_minus_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0232,
+ 0x0F12FFE0,
+};
+
+/* contrast_level_2 */
+static const u32 s5k4ec_contrast_default[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0232,
+ 0x0F120000, /* default */
+};
+
+/* contrast_level_3 */
+static const u32 s5k4ec_contrast_plus_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0232,
+ 0x0F120020,
+};
+
+/* contrast_level_4 */
+static const u32 s5k4ec_contrast_plus_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0232,
+ 0x0F120040,
+};
+
+static const u32 s5k4ec_auto_contrast_on[] = {
+ 0x002A098E,
+ 0x0F12FFB0,
+ 0x002A0A44,
+ 0x0F12FFB0,
+ 0x002A0AFA,
+ 0x0F12FFB0,
+ 0x002A0BB0,
+ 0x0F12FFB0,
+ 0x002A0C66,
+ 0x0F12FFB0,
+};
+
+static const u32 s5k4ec_auto_contrast_off[] = {
+ 0x002A098E,
+ 0x0F12FFB0,
+ 0x002A0A44,
+ 0x0F12FFB0,
+ 0x002A0AFA,
+ 0x0F12FFB0,
+ 0x002A0BB0,
+ 0x0F12FFB0,
+ 0x002A0C66,
+ 0x0F12FFB0,
+};
+
+/* sharpness_level_0 */
+static const u32 s5k4ec_sharpness_minus_2[] = {
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F122010,
+ 0x002A0ADE,
+ 0x0F122010,
+ 0x002A0B94,
+ 0x0F122010,
+ 0x002A0C4A,
+ 0x0F122010,
+ 0x002A0D00,
+ 0x0F122010,
+};
+
+/* sharpness_level_1 */
+static const u32 s5k4ec_sharpness_minus_1[] = {
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F124020,
+ 0x002A0ADE,
+ 0x0F124020,
+ 0x002A0B94,
+ 0x0F124020,
+ 0x002A0C4A,
+ 0x0F124020,
+ 0x002A0D00,
+ 0x0F124020,
+};
+
+/* sharpness_level_2 */
+static const u32 s5k4ec_sharpness_default[] = {
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F126024,
+ 0x002A0ADE,
+ 0x0F126024,
+ 0x002A0B94,
+ 0x0F126024,
+ 0x002A0C4A,
+ 0x0F126024,
+ 0x002A0D00,
+ 0x0F126024,
+};
+
+/* sharpness_level_3 */
+static const u32 s5k4ec_sharpness_plus_1[] = {
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F128040,
+ 0x002A0ADE,
+ 0x0F128040,
+ 0x002A0B94,
+ 0x0F128040,
+ 0x002A0C4A,
+ 0x0F128040,
+ 0x002A0D00,
+ 0x0F128040,
+};
+
+/* sharpness_level_4 */
+static const u32 s5k4ec_sharpness_plus_2[] = {
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F12A060,
+ 0x002A0ADE,
+ 0x0F12A060,
+ 0x002A0B94,
+ 0x0F12A060,
+ 0x002A0C4A,
+ 0x0F12A060,
+ 0x002A0D00,
+ 0x0F12A060,
+};
+
+/* saturation_level_0 */
+static const u32 s5k4ec_saturation_minus_2[] = {
+ 0x00287000,
+ 0x002A0234,
+ 0x0F12FF81,
+};
+
+/* saturation_level_1 */
+static const u32 s5k4ec_saturation_minus_1[] = {
+ 0x00287000,
+ 0x002A0234,
+ 0x0F12FFC0,
+};
+
+/* saturation_level_2 */
+static const u32 s5k4ec_saturation_default[] = {
+ 0x00287000,
+ 0x002A0234,
+ 0x0F120000,
+};
+
+/* saturation_level_3 */
+static const u32 s5k4ec_saturation_plus_1[] = {
+ 0x00287000,
+ 0x002A0234,
+ 0x0F120040,
+};
+
+/* saturation_level_4 */
+static const u32 s5k4ec_saturation_plus_2[] = {
+ 0x00287000,
+ 0x002A0234,
+ 0x0F12007F,
+};
+
+static const u32 s5k4ec_jpeg_quality_high[] = {
+ 0x00287000,
+ 0x002A0478,
+ 0x0F12005F,
+ 0x0F12005F,
+};
+
+static const u32 s5k4ec_jpeg_quality_normal[] = {
+ 0x00287000,
+ 0x002A0478,
+ 0x0F12005A,
+ 0x0F12005A,
+};
+
+static const u32 s5k4ec_jpeg_quality_low[] = {
+ 0x00287000,
+ 0x002A0478,
+ 0x0F120054,
+ 0x0F120054,
+};
+
+static const u32 s5k4ec_scene_default[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1492,
+ 0x0F120100,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120001,
+ 0x0F120101,
+ 0x0F120201,
+ 0x0F120102,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120101,
+ 0x0F120201,
+ 0x0F120302,
+ 0x0F120203,
+ 0x0F120102,
+ 0x0F120201,
+ 0x0F120302,
+ 0x0F120203,
+ 0x0F120102,
+ 0x0F120201,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120102,
+ 0x0F120101,
+ 0x0F120202,
+ 0x0F120202,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+
+/* Sharpness 0*/
+ 0x002A0A28,
+ 0x0F126024, /* _ee_iLowSharpPower */
+ 0x002A0ADE,
+ 0x0F126024, /* _ee_iLowSharpPower */
+ 0x002A0B94,
+ 0x0F126024, /* _ee_iLowSharpPower */
+ 0x002A0C4A,
+ 0x0F126024, /* _ee_iLowSharpPower */
+ 0x002A0D00,
+ 0x0F126024, /* _ee_iLowSharpPower */
+
+/* Saturation 0*/
+ 0x002A0234,
+ 0x0F120000, /* REG_TC_UserSaturation */
+ 0x002A06B8,
+ 0x0F12802C,
+ 0x0F120005, /* lt_uMaxLei */
+
+ 0x002A098C,
+ 0x0F12FFFB, /* 7000098C AFIT16_BRIGHTNESS */
+
+ 0x002A0A1E,
+ 0x0F120350, /*_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset init */
+
+ /* GAS Alpha Table */
+ 0x002A08F6,
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__0_ R // 2300K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__3_ B */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__0_ R // 2750K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__3_ B */
+ 0x0F124100, /* TVAR_ash_GASAlpha_2__0_ R // 3300K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__3_ B */
+ 0x0F123F80, /* TVAR_ash_GASAlpha_3__0_ R // 4150K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__3_ B */
+ 0x0F124080, /* TVAR_ash_GASAlpha_4__0_ R // 5250K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__3_ B */
+ 0x0F124100, /* TVAR_ash_GASAlpha_5__0_ R // 6400K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__3_ B */
+ 0x0F124150, /* TVAR_ash_GASAlpha_6__0_ R // 7500K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__3_ B */
+
+ 0x002A0638,
+ 0x0F120001,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
+ 0x0F120A3C,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
+ 0x0F120D05,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
+ 0x0F126810,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
+ 0x0F128214,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
+ 0x0F12C350,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
+ 0x0F12C350,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
+ 0x0F12C350,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
+
+ 0x002A02C2,
+ 0x0F1203E8, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 *//*03E8h:10fps */
+ 0x0F12014A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 *//*014Ah:30fps */
+ 0x002A03B4,
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 *//*0535h:7.5fps */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 *//*029Ah:15fps */
+
+ 0x002A0938,
+ 0x0F120000, /* afit_bUseNB_Afit */
+
+ 0x002A04E6,
+ 0x0F12077F, /* REG_TC_DBG_AutoAlgEnBits */
+
+ 0x002A1484,
+ 0x0F12003C,
+
+ 0x002A0544,
+ 0x0F120111,
+ 0x0F1200EF,
+
+ 0x002A04D0,
+ 0x0F120000, /*REG_SF_USER_IsoType */
+ 0x0F120000, /*REG_SF_USER_IsoVal */
+ 0x0F120001, /*REG_SF_USER_IsoChanged */
+
+ 0x002A06C2,
+ 0x0F120200, /*lt_bUseSecISODgain */
+
+ 0x002A1648,
+ 0x0F129002, /*af_search_usSingleAfFlags */
+
+ 0x002A15E8,
+ 0x0F120018, /*af_pos_usTableLastInd */
+ 0x0F12002A,
+ 0x0F120030,
+ 0x0F120036,
+ 0x0F12003C,
+ 0x0F120042,
+ 0x0F120048,
+ 0x0F12004E,
+ 0x0F120054,
+ 0x0F12005A,
+ 0x0F120060,
+ 0x0F120066,
+ 0x0F12006C,
+ 0x0F120072,
+ 0x0F120078,
+ 0x0F12007E,
+ 0x0F120084,
+ 0x0F12008A,
+ 0x0F120090,
+ 0x0F120096,
+ 0x0F12009C,
+ 0x0F1200A2,
+ 0x0F1200A8,
+ 0x0F1200AE,
+ 0x0F1200B4,
+ 0x0F1200BA,
+};
+
+static const u32 s5k4ec_scene_portrait[] = {
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F124020,
+ 0x002A0ADE,
+ 0x0F124020,
+ 0x002A0B94,
+ 0x0F124020,
+ 0x002A0C4A,
+ 0x0F124020,
+ 0x002A0D00,
+ 0x0F124020,
+};
+
+static const u32 s5k4ec_scene_nightshot[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A06B8,
+ 0x0F12FFFF, /* lt_uMaxLei */
+ 0x0F1200FF, /* lt_usMinExp */
+
+ 0x002A098C,
+ 0x0F12FFF0, /* 7000098C AFIT16_BRIGHTNESS */
+ 0x002A0A1E,
+ 0x0F120A78, /*_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+
+ /* GAS Alpha Table */
+ 0x002A08F6,
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__0_ R // 2300K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_0__3_ B */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__0_ R // 2750K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_1__3_ B */
+ 0x0F124500, /* TVAR_ash_GASAlpha_2__0_ R // 3300K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_2__3_ B */
+ 0x0F124500, /* TVAR_ash_GASAlpha_3__0_ R // 4150K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_3__3_ B */
+ 0x0F124500, /* TVAR_ash_GASAlpha_4__0_ R // 5250K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_4__3_ B */
+ 0x0F124500, /* TVAR_ash_GASAlpha_5__0_ R // 6400K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_5__3_ B */
+ 0x0F124500, /* TVAR_ash_GASAlpha_6__0_ R // 7500K */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__1_ GR */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__2_ GB */
+ 0x0F124000, /* TVAR_ash_GASAlpha_6__3_ B */
+
+ 0x002A0638,
+ 0x0F120001,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
+ 0x0F120A3C,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
+ 0x0F120D05,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
+ 0x0F126810,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
+ 0x0F128214,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
+ 0x0F121A80,
+ 0x0F120006, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
+ 0x0F121A80,
+ 0x0F120006, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
+ 0x0F121A80,
+ 0x0F120006, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
+
+ 0x002A02C2,
+ 0x0F1207D0,
+ 0x0F12014A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 014Ah:30fps */
+
+ 0x002A03B4,
+ 0x0F121388, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 1388h:2fps */
+ 0x0F121388, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 1388h:2fps */
+
+ 0x002A1648, /*af_search_usSingleAfFlags */
+ 0x0F129000,
+
+ 0x002A15E8,
+ 0x0F120006, /* af_pos_usTableLastInd */
+ 0x0F120036,
+ 0x0F12003A,
+ 0x0F120040,
+ 0x0F120048,
+ 0x0F120050,
+ 0x0F120058,
+ 0x0F120060,
+};
+
+static const u32 s5k4ec_scene_backlight[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1492,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120F01,
+ 0x0F12010F,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120F01,
+ 0x0F12010F,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120000
+};
+
+static const u32 s5k4ec_scene_landscape[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1492,
+ 0x0F120101, /* ae_WeightTbl_16 */
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+
+ 0x002A0A28,
+ 0x0F12E082, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0ADE,
+ 0x0F12E082, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0B94,
+ 0x0F12E082, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0C4A,
+ 0x0F12E082, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0D00,
+ 0x0F12E082, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+
+ 0x002A0234,
+ 0x0F120030, /* REG_TC_UserSaturation */
+};
+
+static const u32 s5k4ec_scene_sports[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0544,
+ 0x0F120130, /* lt_uLimitHigh */
+ 0x0F1200D0, /* lt_uLimitLow */
+
+ 0x002A0638,
+ 0x0F120001,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
+ 0x0F120A3C,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
+ 0x0F120D05,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+ 0x002A04D0,
+ 0x0F120003, /* REG_SF_USER_IsoType */
+ 0x0F120200, /* REG_SF_USER_IsoVal */
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+};
+
+static const u32 s5k4ec_scene_party_indoor[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+
+ 0x002A04D0,
+ 0x0F120001, /* REG_SF_USER_IsoType */
+ 0x0F120377, /* REG_SF_USER_IsoVal */
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120180, /* lt_bUseSecISODgain */
+
+ 0x002A0234,
+ 0x0F120030, /*REG_TC_UserSaturation */
+};
+
+static const u32 s5k4ec_scene_beach_snow[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A1484,
+ 0x0F120045, /* TVAR_ae_BrAve */
+
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit */
+
+ 0x002A04D0,
+ 0x0F120001, /* REG_SF_USER_IsoType */
+ 0x0F1200D0, /* REG_SF_USER_IsoVal */
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120150, /* lt_bUseSecISODgain */
+
+ 0x002A0234,
+ 0x0F120030, /* REG_TC_UserSaturation */
+};
+
+static const u32 s5k4ec_scene_sunset[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777, /* REG_TC_DBG_AutoAlgEnBits AWB Off */
+
+ 0x002A04BA,
+ 0x0F1204DA,
+
+ 0x002A04BE,
+ 0x0F120400,
+
+ 0x002A04C2,
+ 0x0F120550,
+
+ 0x002A04C6,
+ 0x0F120001, /* REG_SF_USER_RGBGainChanged */
+};
+
+static const u32 s5k4ec_scene_duskdawn[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777, /* REG_TC_DBG_AutoAlgEnBits AWB Off */
+
+ 0x002A04BA,
+ 0x0F120558,
+
+ 0x002A04BE,
+ 0x0F120400,
+
+ 0x002A04C2,
+ 0x0F120955,
+
+ 0x002A04C6, /* REG_SF_USER_RGBGainChanged */
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_scene_fall_color[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0234,
+ 0x0F120060,
+};
+
+static const u32 s5k4ec_scene_fireworks[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ /* AE_state */
+ 0x002A0544,
+ 0x0F12012C, /* lt_uLimitHigh */
+ 0x0F1200D4, /* lt_uLimitLow */
+
+ 0x002A0638,
+ 0x0F120001,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
+ 0x0F120A3C,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
+ 0x0F120D05,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
+ 0x0F123408,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
+ 0x0F12D020,
+ 0x0F120000, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
+ 0x0F120428,
+ 0x0F120001, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
+ 0x0F121A80,
+ 0x0F120006, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
+ 0x0F121A80,
+ 0x0F120006, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
+ 0x0F121A80,
+ 0x0F120006, /* lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
+
+ 0x002A02C2,
+ 0x0F1203E8, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 09C4h:4fps */
+ 0x0F12014A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 014Ah:30fps */
+
+ 0x002A03B4,
+ 0x0F122710, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 // 2710h:1fps */
+ 0x0F122710, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 // 2710h:1fps */
+
+ 0x002A04D0,
+ 0x0F120001, /* REG_SF_USER_IsoType */
+ 0x0F120100, /* REG_SF_USER_IsoVal */
+ 0x0F120001, /* REG_SF_USER_IsoChanged */
+ 0x002A06C2,
+ 0x0F120180, /* lt_bUseSecISODgain */
+};
+
+static const u32 s5k4ec_scene_text[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0A28,
+ 0x0F12A060, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0ADE,
+ 0x0F12A060, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0B94,
+ 0x0F12A060, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0C4A,
+ 0x0F12A060, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x002A0D00,
+ 0x0F12A060, /* _ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+};
+
+static const u32 s5k4ec_scene_candle_light[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A04E6,
+ 0x0F120777, /* REG_TC_DBG_AutoAlgEnBits AWB Off */
+
+ 0x002004BA,
+ 0x0F1004DA,
+
+ 0x002A04BE,
+ 0x0F120400,
+
+ 0x002A04C2,
+ 0x0F120550,
+
+ 0x002A04C6,
+ 0x0F120001, /* REG_SF_USER_RGBGainChanged */
+};
+
+static const u32 s5k4ec_night_capture[] = {
+ 0x002A0608,
+ 0x0F120001, /* #lt_ExpGain_uSubsamplingmode */
+ 0x0F120001, /* #lt_ExpGain_uNonSubsampling */
+ 0x0F120900, /* #lt_ExpGain_ExpCurveGainMaxStr */
+};
+
+static const u32 s5k4ec_af_return_macro_pos[] = {
+ 0x002A15E8,
+ 0x0F120018,
+ 0x0F12002A,
+ 0x0F120030,
+ 0x0F120036,
+ 0x0F12003C,
+ 0x0F120042,
+ 0x0F120048,
+ 0x0F12004E,
+ 0x0F120054,
+ 0x0F12005A,
+ 0x0F120060,
+ 0x0F120066,
+ 0x0F12006C,
+ 0x0F120072,
+ 0x0F120078,
+ 0x0F12007E,
+ 0x0F120084,
+ 0x0F12008A,
+ 0x0F120090,
+ 0x0F120096,
+ 0x0F12009C,
+ 0x0F1200A2,
+ 0x0F1200A8,
+ 0x0F1200AE,
+ 0x0F1200B4,
+ 0x0F1200BA,
+};
+
+static const u32 s5k4ec_af_normal_mode_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028E,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_af_normal_mode_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028C,
+ 0x0F120004,
+
+};
+
+static const u32 s5k4ec_af_normal_mode_3[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1648,
+ 0x0F129002,
+
+ 0x002A15E8,
+ 0x0F120015,
+ 0x0F120032,
+ 0x0F120038,
+ 0x0F12003E,
+ 0x0F120044,
+ 0x0F12004A,
+ 0x0F120050,
+ 0x0F120056,
+ 0x0F12005C,
+ 0x0F120062,
+ 0x0F120068,
+ 0x0F12006E,
+ 0x0F120074,
+ 0x0F12007A,
+ 0x0F120080,
+ 0x0F120086,
+ 0x0F12008C,
+ 0x0F120092,
+ 0x0F120098,
+ 0x0F12009E,
+ 0x0F1200A4,
+ 0x0F1200AA,
+ 0x0F1200B0,
+};
+
+static const u32 s5k4ec_af_macro_mode_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028E,
+ 0x0F1200D0,
+};
+
+static const u32 s5k4ec_af_macro_mode_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028C,
+ 0x0F120004, /* REG_TC_AF_AfCmd */
+};
+
+static const u32 s5k4ec_af_macro_mode_3[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1648,
+ 0x0F129042,
+
+ 0x002A15E8,
+ 0x0F120017,
+ 0x0F120032,
+ 0x0F120038,
+ 0x0F12003E,
+ 0x0F120044,
+ 0x0F12004A,
+ 0x0F120050,
+ 0x0F120056,
+ 0x0F12005C,
+ 0x0F120062,
+ 0x0F120068,
+ 0x0F12006E,
+ 0x0F120074,
+ 0x0F12007A,
+ 0x0F120080,
+ 0x0F120086,
+ 0x0F12008C,
+ 0x0F120092,
+ 0x0F120098,
+ 0x0F12009E,
+ 0x0F1200A4,
+ 0x0F1200AA,
+ 0x0F1200B0,
+ 0x0F1200C0,
+ 0x0F1200D0,
+
+ 0x002A15DA,
+ 0x0F121700,
+};
+
+static const u32 s5k4ec_af_low_light_mode_on[] = {
+ 0x002A15DA,
+ 0x0F120C00,
+
+ 0x002A15E8,
+ 0x0F12000C,
+ 0x0F12002A,
+ 0x0F120033,
+ 0x0F12003C,
+ 0x0F120045,
+ 0x0F12004E,
+ 0x0F120057,
+ 0x0F120063,
+ 0x0F12006F,
+ 0x0F12007B,
+ 0x0F120087,
+ 0x0F120093,
+ 0x0F1200A2,
+ 0x0F1200B1,
+};
+
+static const u32 s5k4ec_af_low_light_mode_off[] = {
+ 0x002A15DA,
+ 0x0F121800,
+
+ 0x002A15E8,
+ 0x0F120018,
+ 0x0F12002A,
+ 0x0F120030,
+ 0x0F120036,
+ 0x0F12003C,
+ 0x0F120042,
+ 0x0F120048,
+ 0x0F12004E,
+ 0x0F120054,
+ 0x0F12005A,
+ 0x0F120060,
+ 0x0F120066,
+ 0x0F12006C,
+ 0x0F120072,
+ 0x0F120078,
+ 0x0F12007E,
+ 0x0F120084,
+ 0x0F12008A,
+ 0x0F120090,
+ 0x0F120096,
+ 0x0F12009C,
+ 0x0F1200A2,
+ 0x0F1200A8,
+ 0x0F1200AE,
+ 0x0F1200B4,
+ 0x0F1200BA,
+};
+
+static const u32 s5k4ec_single_af_start[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028C,
+ 0x0F120005,
+};
+
+static const u32 s5k4ec_single_af_off_1[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028E,
+ 0x0F120000,
+ 0x002A028C,
+ 0x0F120004,
+};
+
+static const u32 s5k4ec_single_af_off_2[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A028E,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_single_af_off_3[] = {
+
+};
+
+/*==========================================================
+// 08.AF Setting
+//=========================================================*/
+/* AF Lens Position Table Settings */
+static const u32 s5k4ec_continuous_af_off[] = {
+ 0x002A15E8,
+ 0x0F120010, /* af_pos_usTableLastInd */
+
+ /* Peak Threshold */
+ 0x002A164C,
+ 0x0F120003, /* af_search_usMinPeakSamples */
+ 0x002A163E,
+ 0x0F1200C0, /* af_search_usPeakThr */
+ 0x0F120080, /* af_search_usPeakThrLow */
+
+ 0x0F120018, /* af_pos_usTable */
+ 0x0F120020, /* af_pos_usTable */
+ 0x0F120028, /* af_pos_usTable */
+ 0x0F120030, /* af_pos_usTable */
+ 0x0F120038, /* af_pos_usTable */
+ 0x0F120040, /* af_pos_usTable */
+ 0x0F120048, /* af_pos_usTable */
+ 0x0F120050, /* af_pos_usTable */
+ 0x0F120058, /* af_pos_usTable */
+ 0x0F120060, /* af_pos_usTable */
+ 0x0F120068, /* af_pos_usTable */
+ 0x0F120070, /* af_pos_usTable */
+ 0x0F120080, /* af_pos_usTable */
+ 0x0F120090, /* af_pos_usTable */
+ 0x0F1200A0, /* af_pos_usTable */
+ 0x0F1200B0, /* af_pos_usTable */
+ 0x0F1200C0, /* af_pos_usTable */
+
+ /* VCM AF driver with PWM/I2C */
+ 0x002A1722,
+ 0x0F128000, /* afd_usParam[0] I2C power down command */
+ 0x0F120006, /* afd_usParam[1] Position Right Shift */
+ 0x0F123FF0, /* afd_usParam[2] I2C Data Mask */
+ 0x0F1203E8, /* afd_usParam[3] PWM Period */
+ 0x0F120000, /* afd_usParam[4] PWM Divider */
+ 0x0F120020, /* afd_usParam[5] SlowMotion Delay 4. */
+ 0x0F120010, /* afd_usParam[6] SlowMotion Threshold */
+ 0x0F120008, /* afd_usParam[7] Signal Shaping */
+ 0x0F120040, /* afd_usParam[8] Signal Shaping level */
+ 0x0F120080, /* afd_usParam[9] Signal Shaping level */
+ 0x0F1200C0, /* afd_usParam[10] Signal Shaping level */
+ 0x0F1200E0, /* afd_usParam[11] Signal Shaping level */
+
+ 0x002A028C,
+ 0x0F120001, /* REG_TC_AF_AfCmd Abort */
+};
+
+static const u32 s5k4ec_continuous_af_on[] = {
+ 0xFCFCD000,
+
+ /* 4. AF Peak Threshold Setting */
+ 0x002A164C,
+ 0x0F120003, /* #af_search_usMinPeakSamples */
+ 0x002A163E,
+ 0x0F1200F0,
+
+ 0x0F1200D0, /* #af_search_usPeakThrLow, Continuous AF tuning point */
+
+ 0x00287000,
+ 0x002A15E8,
+ 0x0F120018, /* #af_pos_usTableLastInd// table0 ~ table24, 25 Steps */
+ 0x0F120020, /* #af_pos_usTable_0_ // af_pos_usTable */
+ 0x0F120024, /* #af_pos_usTable_1_ */
+ 0x0F120028, /* #af_pos_usTable_2_ */
+ 0x0F12002C, /* #af_pos_usTable_3_ */
+ 0x0F120030, /* #af_pos_usTable_4_ */
+ 0x0F120034, /* #af_pos_usTable_5_ */
+ 0x0F120038, /* #af_pos_usTable_6_ */
+ 0x0F12003C, /* #af_pos_usTable_7_ */
+ 0x0F120040, /* #af_pos_usTable_8_ */
+ 0x0F120044, /* #af_pos_usTable_9_ */
+ 0x0F120048, /* #af_pos_usTable_10_ */
+ 0x0F12004C, /* #af_pos_usTable_11_ */
+ 0x0F120050, /* #af_pos_usTable_12_ */
+ 0x0F120054, /* #af_pos_usTable_13_ */
+ 0x0F120058, /* #af_pos_usTable_14_ */
+ 0x0F12005C, /* #af_pos_usTable_15_ */
+ 0x0F120060, /* #af_pos_usTable_16_ */
+ 0x0F120064, /* #af_pos_usTable_17_ */
+ 0x0F120068, /* #af_pos_usTable_18_ */
+ 0x0F12006C, /* #af_pos_usTable_19_ */
+ 0x0F120070, /* #af_pos_usTable_20_ */
+ 0x0F120074, /* #af_pos_usTable_21_ */
+ 0x0F120078, /* #af_pos_usTable_22_ */
+ 0x0F12007C, /* #af_pos_usTable_23_ */
+ 0x0F120080, /* #af_pos_usTable_24_ */
+
+ /* 7. Continuous AF, Continuous AF tuning point */
+ /* 7-1. Continuous AF, timing */
+ 0x002A16EE,
+ 0x0F120028, /* #af_refocus_usFlframes, 28h = 40frame */
+ 0x002A170E,
+ 0x0F12000A, /* Unit : x4 frame, 0Ah x 4 = 40frame */
+
+ /* 7-2. Continuous AF, sensitivity */
+ 0x002A16EA,
+ 0x0F123030, /* #af_refocus_usFlUpLow, normal case, */
+ /* MSB : upper boundary(Thr_High), LSB : lower boundary(Thr_Low), */
+ 0x0F123030, /* #af_refocus_usFlLUpLow, Low confidence case, */
+ /* MSB : upper boundary(Thr_High), LSB : lower boundary(Thr_Low), */
+
+ /* 7-3. Lens movement for continuous AF */
+ 0x002A15D8,
+ 0x0F128080, /* #af_pos_usMiddlePos MSB : macro,
+ LSB : normal, lens moving direction */
+
+ /* 9. VCM AF driver with PWM/I2C */
+ 0x002A1722,
+ 0x0F128000, /* #afd_usParam[0] I2C power down command */
+ 0x0F120006, /* #afd_usParam[1] Position Right Shift */
+ 0x0F123FF0, /* #afd_usParam[2] I2C Data Mask */
+ 0x0F1203E8, /* #afd_usParam[3] PWM Period */
+ 0x0F120000, /* #afd_usParam[4] PWM Divider */
+ 0x0F120070, /* #afd_usParam[5] SlowMotion Delay
+ reduce lens collision noise. Continuous AF tuning point */
+ 0x0F120004, /* #afd_usParam[6] SlowMotion Threshold,
+ Continuous AF tuning point */
+ 0x0F120048, /* #afd_usParam[7] Signal Shaping,
+ Continuous AF tuning point */
+ 0x0F120040, /* #afd_usParam[8] Signal Shaping level */
+ 0x0F120080, /* #afd_usParam[9] Signal Shaping level */
+ 0x0F1200C0, /* #afd_usParam[10] Signal Shaping level */
+ 0x0F120000, /* #afd_usParam[11] Signal Shaping level */
+
+ 0x002A028E,
+ 0x0F120000,
+
+ 0x002A028C,
+ 0x0F120006, /* REG_TC_AF_AfCmd init, AF initialization */
+};
+
+static const u32 s5k4ec_face_detection_on[] = {
+ 0x002A0294,
+ 0x0F120100,
+ 0x0F1200E3,
+ 0x0F120200,
+ 0x0F120238,
+ 0x0F1201C6,
+ 0x0F120166,
+ 0x0F120074,
+ 0x0F120132,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_face_detection_off[] = {
+ 0x002A0294,
+ 0x0F120100,
+ 0x0F1200E3,
+ 0x0F120200,
+ 0x0F120238,
+ 0x0F1201C6,
+ 0x0F120166,
+ 0x0F120074,
+ 0x0F120132,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_low_cap_on[] = {
+ 0x002A06B8,
+ 0x0F12FFFF,
+ 0x0F1200FF, /* #lt_uMaxLei */
+
+ 0x002A0A1A,
+ 0x0F124A18, /* #Gamma linearity */
+
+ 0x002A0608,
+ 0x0F120001, /* #lt_ExpGain_uSubsamplingmode */
+ 0x0F120001, /* #lt_ExpGain_uNonSubsampling */
+ 0x0F120850, /* #lt_ExpGain_ExpCurveGainMaxStr */
+
+ 0x002A0938,
+ 0x0F120001,
+ 0x0F120012, /* #SARR_uNormBrInDoor_0_ */
+ 0x0F120022, /* #SARR_uNormBrInDoor_1_ */
+ 0x0F120384, /* #SARR_uNormBrInDoor_2_ */
+ 0x0F1207D0, /* #SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* #SARR_uNormBrInDoor_4_ */
+};
+
+static const u32 s5k4ec_low_cap_off[] = {
+ 0x002A06B8,
+ 0x0F12802C,
+ 0x0F120005, /* #lt_uMaxLei */
+
+ 0x002A0A1A,
+ 0x0F123718, /* #Gamma linearity */
+
+ 0x002A0608,
+ 0x0F120001, /* #lt_ExpGain_uSubsamplingmode */
+ 0x0F120001, /* #lt_ExpGain_uNonSubsampling */
+ 0x0F120800, /* #lt_ExpGain_ExpCurveGainMaxStr */
+
+ 0x002A0938,
+ 0x0F120000,
+ 0x0F120014, /* #SARR_uNormBrInDoor_0_ */
+ 0x0F1200D2, /* #SARR_uNormBrInDoor_1_ */
+ 0x0F120384, /* #SARR_uNormBrInDoor_2_ */
+ 0x0F1207D0, /* #SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* #SARR_uNormBrInDoor_4_ */
+};
+
+/* restores crop settings to full resolution */
+static const u32 s5k4ec_reset_crop[] = {
+ 0x002A0250,
+ 0x0F120A00,
+ 0x0F120780,
+ 0x0F120010,
+ 0x0F12000C,
+ 0x0F120A00,
+ 0x0F120780,
+ 0x0F120010,
+ 0x0F12000C,
+ 0x002A0494,
+ 0x0F120A00,
+ 0x0F120780,
+ 0x0F120000,
+ 0x0F120000,
+ 0x0F120A00,
+ 0x0F120780,
+ 0x0F120000,
+ 0x0F120000,
+
+ 0x002A0262,
+ 0x0F120001,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_capture_start[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0242,
+ 0x0F120001,
+ 0x002A024E,
+ 0x0F120001,
+ 0x002A0244,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_preview_return[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0242,
+ 0x0F120000, /* REG_TC_GP_EnableCapture */
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0244,
+ 0x0F120001, /* REG_TC_GP_EnableCaptureChanged */
+};
+
+static const u32 s5k4ec_camcorder[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+
+
+ /* METERING */
+ 0x002A1492, /* Matrix */
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+ 0x0F120101,
+
+ /* SHARPNESS n NOISE */
+ 0x002A0938,
+ 0x0F120001, /* afit_bUseNB_Afit on 1 off 0 */
+ 0x0F120014, /* SARR_uNormBrInDoor_0_ */
+ 0x0F1200D2, /* SARR_uNormBrInDoor_1_ */
+ 0x0F120784, /* SARR_uNormBrInDoor_2_ */
+ 0x0F1210D0, /* SARR_uNormBrInDoor_3_ */
+ 0x0F121388, /* SARR_uNormBrInDoor_4_ */
+
+ 0x002A098C, /* AFIT 0 */
+ 0x0F120024, /* 7000098C AFIT16_BRIGHTNESS */
+ 0x0F120010, /* 7000098E AFIT16_CONTRAST */
+ 0x0F120000, /* 70000990 AFIT16_SATURATION */
+ 0x0F120000, /* 70000992 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000994 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000996 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000998 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 7000099A AFIT16_postdmsc_iHighBright */
+ 0x0F120051, /* 7000099C AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 7000099E AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 700009A0 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 700009A2 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 700009A4 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 700009A6 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 700009A8 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 700009AA AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 700009AC AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 700009AE AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 700009B0 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 700009B2 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F122404, /* 700009B4 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12031B, /* 700009B6 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120103, /* 700009B8 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F121205, /* 700009BA AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F12400D, /* 700009BC AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120080, /* 700009BE AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F122080, /* 700009C0 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F123040, /* 700009C2 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120630, /* 700009C4 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 700009C6 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 700009C8 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 700009CA AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120404, /* 700009CC AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 700009CE AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12245A, /* 700009D0 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121018, /* 700009D2 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 700009D4 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120B00, /* 700009D6 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 700009D8 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120505, /* 700009DA AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 700009DC AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 700009DE AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 700009E0 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F123428, /* 700009E2 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F12041C, /* 700009E4 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 700009E6 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F120800, /* 700009E8 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F121004, /* 700009EA AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 700009EC AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 700009EE AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 700009F0 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 700009F2 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 700009F4 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 700009F6 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120000, /* 700009F8 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 700009FA AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 700009FC AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 700009FE AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000A00 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000A02 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000A04 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000A06 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000A08 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000A0A AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000A0C AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000A0E AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121804, /* 70000A10 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120214, /* 70000A12 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121002, /* 70000A14 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120610, /* 70000A16 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000A18 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F123218, /* 70000A1A AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F1200B0, /* 70000A1C AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120332, /* 70000A1E AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000A20 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000A22 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000A24 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F121B24, /* 70000A26 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000A28 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121D22, /* 70000A2A AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000A2C AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000A2E AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000A30 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000A32 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F122401, /* 70000A34 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12241B, /* 70000A36 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F121E60, /* 70000A38 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF18, /* 70000A3A AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000A3C AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000A3E AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000A40 AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+ 0x0F120000, /* 70000A42 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000A44 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000A46 AFIT16_SATURATION */
+ 0x0F120000, /* 70000A48 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000A4A AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000A4C AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000A4E AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000A50 AFIT16_postdmsc_iHighBright */
+ 0x0F120051, /* 70000A52 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000A54 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000A56 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000A58 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000A5A AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000A5C AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000A5E AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000A60 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000A62 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000A64 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000A66 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000A68 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121B04, /* 70000A6A AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F120312, /* 70000A6C AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000A6E AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120C03, /* 70000A70 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122806, /* 70000A72 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120060, /* 70000A74 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121540, /* 70000A76 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F12201C, /* 70000A78 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000A7A AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000A7C AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000A7E AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000A80 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120404, /* 70000A82 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000A84 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000A86 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000A88 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000A8A AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120B00, /* 70000A8C AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000A8E AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120503, /* 70000A90 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000A92 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000A94 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000A96 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F123C28, /* 70000A98 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120428, /* 70000A9A AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000A9C AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F128000, /* 70000A9E AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F121004, /* 70000AA0 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000AA2 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000AA4 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000AA6 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000AA8 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000AAA AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000AAC AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120000, /* 70000AAE AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000AB0 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000AB2 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000AB4 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000AB6 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000AB8 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000ABA AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000ABC AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000ABE AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000AC0 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000AC2 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000AC4 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121804, /* 70000AC6 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120214, /* 70000AC8 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121002, /* 70000ACA AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120610, /* 70000ACC AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000ACE AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126418, /* 70000AD0 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F1200A0, /* 70000AD2 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120250, /* 70000AD4 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000AD6 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000AD8 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000ADA AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F121B24, /* 70000ADC AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000ADE AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F120C0C, /* 70000AE0 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000AE2 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000AE4 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000AE6 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000AE8 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121501, /* 70000AEA AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12240F, /* 70000AEC AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120C60, /* 70000AEE AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0C, /* 70000AF0 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000AF2 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000AF4 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000AF6 AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+ 0x0F120000, /* 70000AF8 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000AFA AFIT16_CONTRAST */
+ 0x0F120000, /* 70000AFC AFIT16_SATURATION */
+ 0x0F120000, /* 70000AFE AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000B00 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000B02 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000B04 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000B06 AFIT16_postdmsc_iHighBright */
+ 0x0F120043, /* 70000B08 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000B0A AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000B0C AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000B0E AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000B10 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000B12 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000B14 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000B16 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000B18 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000B1A AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000B1C AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000B1E AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121B04, /* 70000B20 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F120312, /* 70000B22 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000B24 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120C03, /* 70000B26 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122806, /* 70000B28 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120060, /* 70000B2A AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121540, /* 70000B2C AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F12201C, /* 70000B2E AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000B30 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000B32 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000B34 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000B36 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120404, /* 70000B38 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000B3A AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000B3C AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000B3E AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000B40 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120E00, /* 70000B42 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000B44 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120503, /* 70000B46 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000B48 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000B4A AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000B4C AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F123C28, /* 70000B4E AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120428, /* 70000B50 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000B52 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F128000, /* 70000B54 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120A04, /* 70000B56 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000B58 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000B5A AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000B5C AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000B5E AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000B60 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000B62 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120000, /* 70000B64 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000B66 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000B68 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000B6A AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000B6C AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000B6E AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000B70 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000B72 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000B74 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000B76 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000B78 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000B7A AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121804, /* 70000B7C AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120214, /* 70000B7E AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121002, /* 70000B80 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120610, /* 70000B82 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000B84 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000B86 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000B88 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000B8A AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000B8C AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000B8E AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000B90 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F12141D, /* 70000B92 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000B94 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F120C0C, /* 70000B96 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000B98 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000B9A AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000B9C AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000B9E AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121501, /* 70000BA0 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F124C0F, /* 70000BA2 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120C88, /* 70000BA4 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0C, /* 70000BA6 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000BA8 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000BAA AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000BAC AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+ 0x0F120000, /* 70000BAE AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000BB0 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000BB2 AFIT16_SATURATION */
+ 0x0F120000, /* 70000BB4 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000BB6 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000BB8 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000BBA AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000BBC AFIT16_postdmsc_iHighBright */
+ 0x0F120032, /* 70000BBE AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000BC0 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000BC2 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000BC4 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000BC6 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000BC8 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000BCA AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000BCC AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000BCE AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000BD0 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000BD2 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000BD4 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121504, /* 70000BD6 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12030F, /* 70000BD8 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000BDA AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120902, /* 70000BDC AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122004, /* 70000BDE AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120050, /* 70000BE0 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121140, /* 70000BE2 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F12201C, /* 70000BE4 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000BE6 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000BE8 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000BEA AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000BEC AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120404, /* 70000BEE AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000BF0 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000BF2 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000BF4 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000BF6 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F121000, /* 70000BF8 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000BFA AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120503, /* 70000BFC AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000BFE AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000C00 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000C02 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F123C28, /* 70000C04 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F12042C, /* 70000C06 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000C08 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F128000, /* 70000C0A AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120904, /* 70000C0C AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000C0E AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000C10 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000C12 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000C14 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000C16 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000C18 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120000, /* 70000C1A AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000C1C AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000C1E AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000C20 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000C22 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000C24 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000C26 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000C28 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000C2A AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000C2C AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000C2E AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000C30 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122804, /* 70000C32 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120228, /* 70000C34 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121402, /* 70000C36 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120618, /* 70000C38 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000C3A AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000C3C AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000C3E AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000C40 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000C42 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000C44 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000C46 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F121117, /* 70000C48 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000C4A AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F120A0A, /* 70000C4C AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000C4E AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000C50 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000C52 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000C54 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121501, /* 70000C56 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F124C0F, /* 70000C58 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120A88, /* 70000C5A AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0A, /* 70000C5C AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000C5E AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000C60 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000C62 AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+ 0x0F120000, /* 70000C64 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000C66 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000C68 AFIT16_SATURATION */
+ 0x0F120000, /* 70000C6A AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000C6C AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000C6E AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000C70 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000C72 AFIT16_postdmsc_iHighBright */
+ 0x0F120032, /* 70000C74 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000C76 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000C78 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000C7A AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000C7C AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000C7E AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000C80 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000C82 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000C84 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000C86 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000C88 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000C8A AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F120F04, /* 70000C8C AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12030C, /* 70000C8E AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000C90 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120602, /* 70000C92 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F121803, /* 70000C94 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120040, /* 70000C96 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F120E20, /* 70000C98 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F122018, /* 70000C9A AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000C9C AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000C9E AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000CA0 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000CA2 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120404, /* 70000CA4 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120200, /* 70000CA6 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000CA8 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000CAA AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000CAC AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F121200, /* 70000CAE AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000CB0 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120502, /* 70000CB2 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000CB4 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000CB6 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000CB8 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F124028, /* 70000CBA AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120430, /* 70000CBC AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000CBE AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F12FF00, /* 70000CC0 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120804, /* 70000CC2 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000CC4 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000CC6 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000CC8 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000CCA AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000CCC AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000CCE AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120000, /* 70000CD0 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000CD2 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000CD4 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000CD6 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000CD8 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000CDA AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000CDC AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000CDE AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000CE0 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000CE2 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000CE4 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000CE6 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122C04, /* 70000CE8 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F12022C, /* 70000CEA AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121402, /* 70000CEC AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120618, /* 70000CEE AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000CF0 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000CF2 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000CF4 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000CF6 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000CF8 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000CFA AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000CFC AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F120C0F, /* 70000CFE AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000D00 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F120808, /* 70000D02 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000D04 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000D06 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000D08 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000D0A AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F120F01, /* 70000D0C AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12240C, /* 70000D0E AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120860, /* 70000D10 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF08, /* 70000D12 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000D14 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000D16 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000D18 AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02AB,
+ 0x0F120006, /* REG_0TC_PCFG_Format 05:
+ yuv (0~255) 06:yuv (16~234) 07: raw 09 : jpeg */
+ 0x002A0266,
+ 0x0F120000, /* #REG_TC_GP_ActivePrevConfig */
+ 0x002A026A,
+ 0x0F120001, /* #REG_TC_GP_PrevOpenAfterChange */
+ 0x002A024E,
+ 0x0F120001, /* #REG_TC_GP_NewConfigSync */
+ 0x002A0268,
+ 0x0F120001, /* #REG_TC_GP_PrevConfigChanged */
+ 0x002A0270,
+ 0x0F120001, /* #REG_TC_GP_CapConfigChanged */
+ 0x002A023E,
+ 0x0F120001, /* #REG_TC_GP_EnablePreview */
+ 0x0F120001, /* #REG_TC_GP_EnablePreviewChanged */
+};
+
+static const u32 s5k4ec_camcorder_disable[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123804, /*[15:8]fadlc_filter_co_b,
+ [7:0]fadlc_filter_co_a*/
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /*senHal_uAddColsBin */
+ 0x0F120060, /*senHal_uAddColsNoBin */
+ 0x0F120A20, /*senHal_uMinColsBin */
+ 0x0F120AB0, /*senHal_uMinColsNoBin */
+
+ /* SLOW AE*/
+ 0x002A1568,
+ 0x0F120010, /* ae_GainIn_0_ */
+ 0x0F120020, /* ae_GainIn_1_ */
+ 0x0F120040, /* ae_GainIn_2_ */
+ 0x0F120080, /* ae_GainIn_3_ */
+ 0x0F120100, /* ae_GainIn_4_ FIX */
+ 0x0F120200, /* ae_GainIn_5_ */
+ 0x0F120400, /* ae_GainIn_6_ */
+ 0x0F120800, /* ae_GainIn_7_ */
+ 0x0F122000, /* ae_GainIn_8_ */
+ 0x0F120010, /* ae_GainOut_0_ */
+ 0x0F120020, /* ae_GainOut_1_ */
+ 0x0F120040, /* ae_GainOut_2_ */
+ 0x0F120080, /* ae_GainOut_3_ */
+ 0x0F120100, /* ae_GainOut_4_ FIX */
+ 0x0F120200, /* ae_GainOut_5_ */
+ 0x0F120400, /* ae_GainOut_6_ */
+ 0x0F120800, /* ae_GainOut_7_ */
+ 0x0F122000, /* ae_GainOut_8_ */
+
+ 0x002A0544,
+ 0x0F120111, /* lt_uLimitHigh */
+ 0x0F1200EF, /* lt_uLimitLow */
+
+ 0x002A0588,
+ 0x0F120002, /* lt_uInitPostToleranceCnt */
+
+ 0x002A0582,
+ 0x0F120000, /* lt_uSlowFilterCoef */
+
+
+ 0x002A47B0,
+ 0x0F120000, /*TNP_Regs_BUse1FrameAE (0: off, 1: on) */
+
+
+ /* SLOW AWB */
+ 0x002A139A,
+ 0x0F120258, /* 0258 awbb_GainsMaxMove */
+
+ /* AWB Convergence Speed */
+ 0x002A1464,
+ 0x0F120008,
+ 0x0F120190,
+ 0x0F1200A0,
+ 0x0F120004,
+
+ /* SHARPNESS n NOISE */
+ 0x002A0938,
+ 0x0F120000, /* on/off AFIT by NB option */
+ 0x0F120014, /*SARR_uNormBrInDoor */
+ 0x0F1200D2, /*SARR_uNormBrInDoor */
+ 0x0F120384, /*SARR_uNormBrInDoor */
+ 0x0F1207D0, /*SARR_uNormBrInDoor */
+ 0x0F121388, /*SARR_uNormBrInDoor */
+
+ 0x002A098C,
+ 0x0F12FFFB, /* 7000098C AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 7000098E AFIT16_CONTRAST */
+ 0x0F120000, /* 70000990 AFIT16_SATURATION */
+ 0x0F120000, /* 70000992 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000994 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000996 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000998 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 7000099A AFIT16_postdmsc_iHighBright */
+ 0x0F12005F, /* 7000099C AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 7000099E AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 700009A0 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 700009A2 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 700009A4 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 700009A6 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 700009A8 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120040, /* 700009AA AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F1200A0, /* 700009AC AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 700009AE AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 700009B0 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 700009B2 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F123604, /* 700009B4 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12032A, /* 700009B6 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120103, /* 700009B8 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F121205, /* 700009BA AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F12400D, /* 700009BC AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120080, /* 700009BE AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F122080, /* 700009C0 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F123840, /* 700009C2 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120638, /* 700009C4 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 700009C6 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 700009C8 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 700009CA AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 700009CC AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120400, /* 700009CE AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12245A, /* 700009D0 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F12102A, /* 700009D2 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 700009D4 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120600, /* 700009D6 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 700009D8 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120505, /* 700009DA AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 700009DC AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 700009DE AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 700009E0 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F122828, /* 700009E2 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F12040F, /* 700009E4 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 700009E6 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F120800, /* 700009E8 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F121804, /* 700009EA AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 700009EC AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 700009EE AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 700009F0 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 700009F2 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 700009F4 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 700009F6 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120004, /* 700009F8 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 700009FA AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 700009FC AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 700009FE AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000A00 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000A02 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000A04 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000A06 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000A08 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000A0A AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000A0C AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000A0E AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121C04, /* 70000A10 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120214, /* 70000A12 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121002, /* 70000A14 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120610, /* 70000A16 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000A18 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F122818, /* 70000A1A AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000A1C AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120350, /* 70000A1E AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000A20 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000A22 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000A24 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F123141, /* 70000A26 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000A28 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F123140, /* 70000A2A AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000A2C AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000A2E AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000A30 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000A32 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F123601, /* 70000A34 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12242A, /* 70000A36 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F123660, /* 70000A38 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF2A, /* 70000A3A AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000A3C AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000A3E AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000A40 AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000A42 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000A44 AFIT16_CONTRAST */
+ 0x0F12FFFB, /* 70000A46 AFIT16_SATURATION */
+ 0x0F120000, /* 70000A48 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000A4A AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000A4C AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000A4E AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000A50 AFIT16_postdmsc_iHighBright */
+ 0x0F120051, /* 70000A52 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000A54 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000A56 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000A58 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000A5A AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000A5C AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000A5E AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000A60 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000A62 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000A64 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000A66 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000A68 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F122404, /* 70000A6A AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12031B, /* 70000A6C AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120103, /* 70000A6E AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F121004, /* 70000A70 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F123A0C, /* 70000A72 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120070, /* 70000A74 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121C80, /* 70000A76 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F123030, /* 70000A78 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120630, /* 70000A7A AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000A7C AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000A7E AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000A80 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000A82 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000A84 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12245A, /* 70000A86 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121018, /* 70000A88 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000A8A AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120B00, /* 70000A8C AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000A8E AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120505, /* 70000A90 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000A92 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000A94 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000A96 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F122928, /* 70000A98 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120415, /* 70000A9A AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000A9C AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F120800, /* 70000A9E AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F121004, /* 70000AA0 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000AA2 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000AA4 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000AA6 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000AA8 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000AAA AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000AAC AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120003, /* 70000AAE AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000AB0 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000AB2 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000AB4 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000AB6 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000AB8 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000ABA AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000ABC AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000ABE AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000AC0 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000AC2 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000AC4 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F121F04, /* 70000AC6 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120218, /* 70000AC8 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121102, /* 70000ACA AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120611, /* 70000ACC AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000ACE AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126418, /* 70000AD0 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000AD2 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120380, /* 70000AD4 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000AD6 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000AD8 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000ADA AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F122832, /* 70000ADC AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000ADE AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F12272C, /* 70000AE0 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000AE2 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000AE4 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000AE6 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000AE8 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F122401, /* 70000AEA AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12241B, /* 70000AEC AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F121E60, /* 70000AEE AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF18, /* 70000AF0 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000AF2 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000AF4 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000AF6 AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000AF8 AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000AFA AFIT16_CONTRAST */
+ 0x0F12FFFB, /* 70000AFC AFIT16_SATURATION */
+ 0x0F120000, /* 70000AFE AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000B00 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000B02 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000B04 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000B06 AFIT16_postdmsc_iHighBright */
+ 0x0F120043, /* 70000B08 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000B0A AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000B0C AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000B0E AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000B10 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000B12 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000B14 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000B16 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000B18 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000B1A AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000B1C AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000B1E AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121B04, /* 70000B20 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F120312, /* 70000B22 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000B24 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120C03, /* 70000B26 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122806, /* 70000B28 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120060, /* 70000B2A AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121580, /* 70000B2C AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F122020, /* 70000B2E AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000B30 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000B32 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000B34 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000B36 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000B38 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000B3A AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000B3C AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000B3E AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000B40 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F120E00, /* 70000B42 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000B44 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120504, /* 70000B46 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000B48 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000B4A AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000B4C AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F122B28, /* 70000B4E AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120417, /* 70000B50 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000B52 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F128000, /* 70000B54 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120A04, /* 70000B56 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000B58 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000B5A AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000B5C AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000B5E AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000B60 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000B62 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120002, /* 70000B64 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000B66 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000B68 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000B6A AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000B6C AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000B6E AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000B70 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120207, /* 70000B72 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000B74 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000B76 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000B78 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000B7A AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122404, /* 70000B7C AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120221, /* 70000B7E AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121202, /* 70000B80 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120613, /* 70000B82 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000B84 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000B86 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000B88 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000B8A AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000B8C AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000B8E AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000B90 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F122630, /* 70000B92 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000B94 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121616, /* 70000B96 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000B98 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000B9A AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000B9C AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000B9E AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121B01, /* 70000BA0 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F122412, /* 70000BA2 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120C60, /* 70000BA4 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0C, /* 70000BA6 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000BA8 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000BAA AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000BAC AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000BAE AFIT16_BRIGHTNESS */
+ 0x0F120000, /* 70000BB0 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000BB2 AFIT16_SATURATION */
+ 0x0F120000, /* 70000BB4 AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000BB6 AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000BB8 AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000BBA AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000BBC AFIT16_postdmsc_iHighBright */
+ 0x0F120032, /* 70000BBE AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000BC0 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000BC2 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000BC4 AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000BC6 AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000BC8 AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000BCA AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000BCC AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000BCE AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000BD0 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000BD2 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000BD4 AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F121504, /* 70000BD6 AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12030F, /* 70000BD8 AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000BDA AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120902, /* 70000BDC AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F122004, /* 70000BDE AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120050, /* 70000BE0 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F121140, /* 70000BE2 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F12201C, /* 70000BE4 AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000BE6 AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000BE8 AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000BEA AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000BEC AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000BEE AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120300, /* 70000BF0 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000BF2 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000BF4 AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000BF6 AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F121000, /* 70000BF8 AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000BFA AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120503, /* 70000BFC AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000BFE AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000C00 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000C02 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F123028, /* 70000C04 AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F12041A, /* 70000C06 AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000C08 AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F12FF00, /* 70000C0A AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120904, /* 70000C0C AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000C0E AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000C10 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000C12 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000C14 AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000C16 AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000C18 AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120002, /* 70000C1A AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000C1C AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000C1E AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000C20 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000C22 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000C24 AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000C26 AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120206, /* 70000C28 AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000C2A AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000C2C AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120305, /* 70000C2E AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120406, /* 70000C30 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122804, /* 70000C32 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F120228, /* 70000C34 AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121402, /* 70000C36 AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120618, /* 70000C38 AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000C3A AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000C3C AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000C3E AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000C40 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000C42 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000C44 AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000C46 AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F12232B, /* 70000C48 AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000C4A AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121414, /* 70000C4C AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000C4E AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000C50 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000C52 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000C54 AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F121501, /* 70000C56 AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12240F, /* 70000C58 AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120A60, /* 70000C5A AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF0A, /* 70000C5C AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000C5E AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000C60 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000C62 AFITB_bnr_nClustLevel_C [0] */
+ 0x0F120000, /* 70000C64 AFIT16_BRIGHTNESS //AFIT 4 */
+ 0x0F120000, /* 70000C66 AFIT16_CONTRAST */
+ 0x0F120000, /* 70000C68 AFIT16_SATURATION */
+ 0x0F120000, /* 70000C6A AFIT16_SHARP_BLUR */
+ 0x0F120000, /* 70000C6C AFIT16_GLAMOUR */
+ 0x0F1200C0, /* 70000C6E AFIT16_bnr_edge_high */
+ 0x0F120064, /* 70000C70 AFIT16_postdmsc_iLowBright */
+ 0x0F120384, /* 70000C72 AFIT16_postdmsc_iHighBright */
+ 0x0F120032, /* 70000C74 AFIT16_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000C76 AFIT16_postdmsc_iHighSat */
+ 0x0F120070, /* 70000C78 AFIT16_postdmsc_iTune */
+ 0x0F120040, /* 70000C7A AFIT16_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000C7C AFIT16_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000C7E AFIT16_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000C80 AFIT16_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000C82 AFIT16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000C84 AFIT16_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000C86 AFIT8_bnr_edge_low
+ [7:0] AFIT8_bnr_repl_thresh */
+ 0x0F120201, /* 70000C88 AFIT8_bnr_repl_force
+ [7:0] AFIT8_bnr_iHotThreshHigh */
+ 0x0F120204, /* 70000C8A AFIT8_bnr_iHotThreshLow
+ [7:0] AFIT8_bnr_iColdThreshHigh */
+ 0x0F120F04, /* 70000C8C AFIT8_bnr_iColdThreshLow
+ [7:0] AFIT8_bnr_DispTH_Low */
+ 0x0F12030C, /* 70000C8E AFIT8_bnr_DispTH_High
+ [7:0] AFIT8_bnr_DISP_Limit_Low */
+ 0x0F120003, /* 70000C90 AFIT8_bnr_DISP_Limit_High
+ [7:0] AFIT8_bnr_iDistSigmaMin */
+ 0x0F120602, /* 70000C92 AFIT8_bnr_iDistSigmaMax
+ [7:0] AFIT8_bnr_iDiffSigmaLow */
+ 0x0F121803, /* 70000C94 AFIT8_bnr_iDiffSigmaHigh
+ [7:0] AFIT8_bnr_iNormalizedSTD_TH */
+ 0x0F120040, /* 70000C96 AFIT8_bnr_iNormalizedSTD_Limit
+ [7:0] AFIT8_bnr_iDirNRTune */
+ 0x0F120E20, /* 70000C98 AFIT8_bnr_iDirMinThres
+ [7:0] AFIT8_bnr_iDirFltDiffThresHigh */
+ 0x0F122018, /* 70000C9A AFIT8_bnr_iDirFltDiffThresLow
+ [7:0] AFIT8_bnr_iDirSmoothPowerHigh */
+ 0x0F120620, /* 70000C9C AFIT8_bnr_iDirSmoothPowerLow
+ [7:0] AFIT8_bnr_iLowMaxSlopeAllowed */
+ 0x0F120306, /* 70000C9E AFIT8_bnr_iHighMaxSlopeAllowed
+ [7:0] AFIT8_bnr_iLowSlopeThresh */
+ 0x0F122003, /* 70000CA0 AFIT8_bnr_iHighSlopeThresh
+ [7:0] AFIT8_bnr_iSlopenessTH */
+ 0x0F12FF01, /* 70000CA2 AFIT8_bnr_iSlopeBlurStrength
+ [7:0] AFIT8_bnr_iSlopenessLimit */
+ 0x0F120000, /* 70000CA4 AFIT8_bnr_AddNoisePower1
+ [7:0] AFIT8_bnr_AddNoisePower2 */
+ 0x0F120200, /* 70000CA6 AFIT8_bnr_iRadialTune
+ [7:0] AFIT8_bnr_iRadialPower */
+ 0x0F12145A, /* 70000CA8 AFIT8_bnr_iRadialLimit
+ [7:0] AFIT8_ee_iFSMagThLow */
+ 0x0F121010, /* 70000CAA AFIT8_ee_iFSMagThHigh
+ [7:0] AFIT8_ee_iFSVarThLow */
+ 0x0F12000B, /* 70000CAC AFIT8_ee_iFSVarThHigh
+ [7:0] AFIT8_ee_iFSThLow */
+ 0x0F121200, /* 70000CAE AFIT8_ee_iFSThHigh
+ [7:0] AFIT8_ee_iFSmagPower */
+ 0x0F125A0F, /* 70000CB0 AFIT8_ee_iFSVarCountTh
+ [7:0] AFIT8_ee_iRadialLimit */
+ 0x0F120502, /* 70000CB2 AFIT8_ee_iRadialPower
+ [7:0] AFIT8_ee_iSmoothEdgeSlope */
+ 0x0F121802, /* 70000CB4 AFIT8_ee_iROADThres
+ [7:0] AFIT8_ee_iROADMaxNR */
+ 0x0F120000, /* 70000CB6 AFIT8_ee_iROADSubMaxNR
+ [7:0] AFIT8_ee_iROADSubThres */
+ 0x0F122006, /* 70000CB8 AFIT8_ee_iROADNeiThres
+ [7:0] AFIT8_ee_iROADNeiMaxNR */
+ 0x0F124028, /* 70000CBA AFIT8_ee_iSmoothEdgeThres
+ [7:0] AFIT8_ee_iMSharpen */
+ 0x0F120430, /* 70000CBC AFIT8_ee_iWSharpen
+ [7:0] AFIT8_ee_iMShThresh */
+ 0x0F120101, /* 70000CBE AFIT8_ee_iWShThresh
+ [7:0] AFIT8_ee_iReduceNegative */
+ 0x0F12FF00, /* 70000CC0 AFIT8_ee_iEmbossCentAdd
+ [7:0] AFIT8_ee_iShDespeckle */
+ 0x0F120804, /* 70000CC2 AFIT8_ee_iReduceEdgeThresh
+ [7:0] AFIT8_dmsc_iEnhThresh */
+ 0x0F124008, /* 70000CC4 AFIT8_dmsc_iDesatThresh
+ [7:0] AFIT8_dmsc_iDemBlurHigh */
+ 0x0F120540, /* 70000CC6 AFIT8_dmsc_iDemBlurLow
+ [7:0] AFIT8_dmsc_iDemBlurRange */
+ 0x0F128006, /* 70000CC8 AFIT8_dmsc_iDecisionThresh
+ [7:0] AFIT8_dmsc_iCentGrad */
+ 0x0F120020, /* 70000CCA AFIT8_dmsc_iMonochrom
+ [7:0] AFIT8_dmsc_iGBDenoiseVal */
+ 0x0F120000, /* 70000CCC AFIT8_dmsc_iGRDenoiseVal
+ [7:0] AFIT8_dmsc_iEdgeDesatThrHigh */
+ 0x0F121800, /* 70000CCE AFIT8_dmsc_iEdgeDesatThrLow
+ [7:0] AFIT8_dmsc_iEdgeDesat */
+ 0x0F120002, /* 70000CD0 AFIT8_dmsc_iNearGrayDesat
+ [7:0] AFIT8_dmsc_iEdgeDesatLimit */
+ 0x0F121E10, /* 70000CD2 AFIT8_postdmsc_iBCoeff
+ [7:0] AFIT8_postdmsc_iGCoeff */
+ 0x0F12000B, /* 70000CD4 AFIT8_postdmsc_iWideMult
+ [7:0] AFIT8_yuvemix_mNegSlopes_0 */
+ 0x0F120607, /* 70000CD6 AFIT8_yuvemix_mNegSlopes_1
+ [7:0] AFIT8_yuvemix_mNegSlopes_2 */
+ 0x0F120005, /* 70000CD8 AFIT8_yuvemix_mNegSlopes_3
+ [7:0] AFIT8_yuvemix_mPosSlopes_0 */
+ 0x0F120607, /* 70000CDA AFIT8_yuvemix_mPosSlopes_1
+ [7:0] AFIT8_yuvemix_mPosSlopes_2 */
+ 0x0F120405, /* 70000CDC AFIT8_yuvemix_mPosSlopes_3
+ [7:0] AFIT8_yuviirnr_iXSupportY */
+ 0x0F120205, /* 70000CDE AFIT8_yuviirnr_iXSupportUV
+ [7:0] AFIT8_yuviirnr_iLowYNorm */
+ 0x0F120304, /* 70000CE0 AFIT8_yuviirnr_iHighYNorm
+ [7:0] AFIT8_yuviirnr_iLowUVNorm */
+ 0x0F120409, /* 70000CE2 AFIT8_yuviirnr_iHighUVNorm
+ [7:0] AFIT8_yuviirnr_iYNormShift */
+ 0x0F120306, /* 70000CE4 AFIT8_yuviirnr_iUVNormShift
+ [7:0] AFIT8_yuviirnr_iVertLength_Y */
+ 0x0F120407, /* 70000CE6 AFIT8_yuviirnr_iVertLength_UV
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_Y */
+ 0x0F122C04, /* 70000CE8 AFIT8_yuviirnr_iDiffThreshH_Y
+ [7:0] AFIT8_yuviirnr_iDiffThreshL_UV */
+ 0x0F12022C, /* 70000CEA AFIT8_yuviirnr_iDiffThreshH_UV
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_Y */
+ 0x0F121402, /* 70000CEC AFIT8_yuviirnr_iMaxThreshH_Y
+ [7:0] AFIT8_yuviirnr_iMaxThreshL_UV */
+ 0x0F120618, /* 70000CEE AFIT8_yuviirnr_iMaxThreshH_UV
+ [7:0] AFIT8_yuviirnr_iYNRStrengthL */
+ 0x0F121A02, /* 70000CF0 AFIT8_yuviirnr_iYNRStrengthH
+ [7:0] AFIT8_yuviirnr_iUVNRStrengthL */
+ 0x0F126E18, /* 70000CF2 AFIT8_yuviirnr_iUVNRStrengthH
+ [7:0] AFIT8_byr_gras_iShadingPower */
+ 0x0F120080, /* 70000CF4 AFIT8_RGBGamma2_iLinearity
+ [7:0] AFIT8_RGBGamma2_iDarkReduce */
+ 0x0F120080, /* 70000CF6 AFIT8_ccm_oscar_iSaturation
+ [7:0] AFIT8_RGB2YUV_iYOffset */
+ 0x0F120180, /* 70000CF8 AFIT8_RGB2YUV_iRGBGain
+ [7:0] AFIT8_bnr_nClustLevel_H */
+ 0x0F120A0A, /* 70000CFA AFIT8_bnr_iClustMulT_H
+ [7:0] AFIT8_bnr_iClustMulT_C */
+ 0x0F120101, /* 70000CFC AFIT8_bnr_iClustThresh_H
+ [7:0] AFIT8_bnr_iClustThresh_C */
+ 0x0F121114, /* 70000CFE AFIT8_bnr_iDenThreshLow
+ [7:0] AFIT8_bnr_iDenThreshHigh */
+ 0x0F126024, /* 70000D00 AFIT8_ee_iLowSharpPower
+ [7:0] AFIT8_ee_iHighSharpPower */
+ 0x0F121212, /* 70000D02 AFIT8_ee_iLowShDenoise
+ [7:0] AFIT8_ee_iHighShDenoise */
+ 0x0F12FFFF, /* 70000D04 AFIT8_ee_iLowSharpClamp
+ [7:0] AFIT8_ee_iHighSharpClamp */
+ 0x0F120808, /* 70000D06 AFIT8_ee_iReduceEdgeMinMult
+ [7:0] AFIT8_ee_iReduceEdgeSlope */
+ 0x0F120A01, /* 70000D08 AFIT8_bnr_nClustLevel_H_Bin
+ [7:0] AFIT8_bnr_iClustMulT_H_Bin */
+ 0x0F12010A, /* 70000D0A AFIT8_bnr_iClustMulT_C_Bin
+ [7:0] AFIT8_bnr_iClustThresh_H_Bin */
+ 0x0F120F01, /* 70000D0C AFIT8_bnr_iClustThresh_C_Bin
+ [7:0] AFIT8_bnr_iDenThreshLow_Bin */
+ 0x0F12240C, /* 70000D0E AFIT8_bnr_iDenThreshHigh_Bin
+ [7:0] AFIT8_ee_iLowSharpPower_Bin */
+ 0x0F120860, /* 70000D10 AFIT8_ee_iHighSharpPower_Bin
+ [7:0] AFIT8_ee_iLowShDenoise_Bin */
+ 0x0F12FF08, /* 70000D12 AFIT8_ee_iHighShDenoise_Bin
+ [7:0] AFIT8_ee_iLowSharpClamp_Bin */
+ 0x0F1208FF, /* 70000D14 AFIT8_ee_iHighSharpClamp_Bin
+ [7:0] AFIT8_ee_iReduceEdgeMinMult_Bin */
+ 0x0F120008, /* 70000D16 AFIT8_ee_iReduceEdgeSlope_Bin [7:0] */
+ 0x0F120001, /* 70000D18 AFITB_bnr_nClustLevel_C [0] bWideWide[1] */
+
+ 0x002A060C,
+ 0x0F120800, /* lt_ExpGain_ExpCurveGainMaxStr */
+ /* FOR HD CAMCORDER */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02A6,
+ 0x0F120280, /* REG_0TC_PCFG_usWidth */
+ 0x0F1201E0, /* REG_0TC_PCFG_usHeight */
+ 0x002A02AB,
+ 0x0F120005, /* REG_0TC_PCFG_Format
+ 05 : yuv (0~255) 06:yuv (16~234) 07: raw 09 : jpeg */
+ 0x002A0266,
+ 0x0F120000, /* #REG_TC_GP_ActivePrevConfig */
+ 0x002A026A,
+ 0x0F120001, /* #REG_TC_GP_PrevOpenAfterChange */
+ 0x002A024E,
+ 0x0F120001, /* #REG_TC_GP_NewConfigSync */
+ 0x002A0268,
+ 0x0F120001, /* #REG_TC_GP_PrevConfigChanged */
+ 0x002A0270,
+ 0x0F120001, /* #REG_TC_GP_CapConfigChanged */
+ 0x002A023E,
+ 0x0F120001, /* #REG_TC_GP_EnablePreview */
+ 0x0F120001, /* #REG_TC_GP_EnablePreviewChanged */
+};
+
+static const u32 s5k4ec_preview_disable_1280_720[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123804, /* [15:8]fadlc_filter_co_b, [7:0]fadlc_filter_co_a */
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+
+ /* SLOW AE*/
+ 0x002A1568,
+ 0x0F120010, /* ae_GainIn_0_ */
+ 0x0F120020, /* ae_GainIn_1_ */
+ 0x0F120040, /* ae_GainIn_2_ */
+ 0x0F120080, /* ae_GainIn_3_ */
+ 0x0F120100, /* ae_GainIn_4_ FIX */
+ 0x0F120200, /* ae_GainIn_5_ */
+ 0x0F120400, /* ae_GainIn_6_ */
+ 0x0F120800, /* ae_GainIn_7_ */
+ 0x0F122000, /* ae_GainIn_8_ */
+ 0x0F120010, /* ae_GainOut_0_ */
+ 0x0F120020, /* ae_GainOut_1_ */
+ 0x0F120040, /* ae_GainOut_2_ */
+ 0x0F120080, /* ae_GainOut_3_ */
+ 0x0F120100, /* ae_GainOut_4_ FIX */
+ 0x0F120200, /* ae_GainOut_5_ */
+ 0x0F120400, /* ae_GainOut_6_ */
+ 0x0F120800, /* ae_GainOut_7_ */
+ 0x0F122000, /* ae_GainOut_8_ */
+
+ 0x002A0544,
+ 0x0F120111, /* lt_uLimitHigh */
+ 0x0F1200EF, /* lt_uLimitLow */
+
+ 0x002A0588,
+ 0x0F120002, /* lt_uInitPostToleranceCnt */
+
+ 0x002A0582,
+ 0x0F120000, /* lt_uSlowFilterCoef */
+
+ 0x002A47B0,
+ 0x0F120000, /* TNP_Regs_BUse1FrameAE (0: off, 1: on) */
+
+ /* SLOW AWB */
+ 0x002A139A,
+ 0x0F120258, /* 0258 awbb_GainsMaxMove */
+
+ /* AWB Convergence Speed */
+ 0x002A1464,
+ 0x0F120008,
+ 0x0F120190,
+ 0x0F1200A0,
+ 0x0F120004,
+
+ /* SHARPNESS n NOISE */
+ 0x002A0938,
+ 0x0F120000, /* on/off AFIT by NB option */
+ 0x0F120014, /* SARR_uNormBrInDoor */
+ 0x0F1200D2, /* SARR_uNormBrInDoor */
+ 0x0F120384, /* SARR_uNormBrInDoor */
+ 0x0F1207D0, /* SARR_uNormBrInDoor */
+ 0x0F121388, /* SARR_uNormBrInDoor */
+
+ 0x002A098C,
+ 0x0F12FFFB, /* 7000098C_BRIGHTNESS AFIT 0 */
+ 0x0F120000, /* 7000098E_CONTRAST */
+ 0x0F120000, /* 70000990_SATURATION */
+ 0x0F120000, /* 70000992_SHARP_BLUR */
+ 0x0F120000, /* 70000994_GLAMOUR */
+ 0x0F1200C0, /* 70000996_bnr_edge_high */
+ 0x0F120064, /* 70000998_postdmsc_iLowBright */
+ 0x0F120384, /* 7000099A_postdmsc_iHighBright */
+ 0x0F12005F, /* 7000099C_postdmsc_iLowSat */
+ 0x0F1201F4, /* 7000099E_postdmsc_iHighSat */
+ 0x0F120070, /* 700009A0_postdmsc_iTune */
+ 0x0F120040, /* 700009A2_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 700009A4_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 700009A6_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 700009A8_yuvemix_mPosRanges_0 */
+ 0x0F120040, /* 700009AA_yuvemix_mPosRanges_1 */
+ 0x0F1200A0, /* 700009AC_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 700009AE_bnr_edge_low */
+ 0x0F120201, /* 700009B0_bnr_repl_force */
+ 0x0F120204, /* 700009B2_bnr_iHotThreshLow */
+ 0x0F123604, /* 700009B4_bnr_iColdThreshLow */
+ 0x0F12032A, /* 700009B6_bnr_DispTH_High */
+ 0x0F120103, /* 700009B8_bnr_DISP_Limit_High */
+ 0x0F121205, /* 700009BA_bnr_iDistSigmaMax */
+ 0x0F12400D, /* 700009BC_bnr_iDiffSigmaHigh */
+ 0x0F120080, /* 700009BE_bnr_iNormalizedSTD_Limit */
+ 0x0F122080, /* 700009C0_bnr_iDirMinThres */
+ 0x0F123840, /* 700009C2_bnr_iDirFltDiffThresLow */
+ 0x0F120638, /* 700009C4_bnr_iDirSmoothPowerLow */
+ 0x0F120306, /* 700009C6_bnr_iHighMaxSlopeAllowed */
+ 0x0F122003, /* 700009C8_bnr_iHighSlopeThresh */
+ 0x0F12FF01, /* 700009CA_bnr_iSlopeBlurStrength */
+ 0x0F120000, /* 700009CC_bnr_AddNoisePower1 */
+ 0x0F120400, /* 700009CE_bnr_iRadialTune */
+ 0x0F12245A, /* 700009D0_bnr_iRadialLimit */
+ 0x0F12102A, /* 700009D2_ee_iFSMagThHigh */
+ 0x0F12000B, /* 700009D4_ee_iFSVarThHigh */
+ 0x0F120600, /* 700009D6_ee_iFSThHigh */
+ 0x0F125A0F, /* 700009D8_ee_iFSVarCountTh */
+ 0x0F120505, /* 700009DA_ee_iRadialPower */
+ 0x0F121802, /* 700009DC_ee_iROADThres */
+ 0x0F120000, /* 700009DE_ee_iROADSubMaxNR */
+ 0x0F122006, /* 700009E0_ee_iROADNeiThres */
+ 0x0F122828, /* 700009E2_ee_iSmoothEdgeThres */
+ 0x0F12040F, /* 700009E4_ee_iWSharpen */
+ 0x0F120101, /* 700009E6_ee_iWShThresh */
+ 0x0F120800, /* 700009E8_ee_iEmbossCentAdd */
+ 0x0F121804, /* 700009EA_ee_iReduceEdgeThresh */
+ 0x0F124008, /* 700009EC_dmsc_iDesatThresh */
+ 0x0F120540, /* 700009EE_dmsc_iDemBlurLow */
+ 0x0F128006, /* 700009F0_dmsc_iDecisionThresh */
+ 0x0F120020, /* 700009F2_dmsc_iMonochrom */
+ 0x0F120000, /* 700009F4_dmsc_iGRDenoiseVal */
+ 0x0F121800, /* 700009F6_dmsc_iEdgeDesatThrLow */
+ 0x0F120004, /* 700009F8_dmsc_iNearGrayDesat */
+ 0x0F121E10, /* 700009FA_postdmsc_iBCoeff */
+ 0x0F12000B, /* 700009FC_postdmsc_iWideMult */
+ 0x0F120607, /* 700009FE_yuvemix_mNegSlopes_1 */
+ 0x0F120005, /* 70000A00_yuvemix_mNegSlopes_3 */
+ 0x0F120607, /* 70000A02_yuvemix_mPosSlopes_1 */
+ 0x0F120405, /* 70000A04_yuvemix_mPosSlopes_3 */
+ 0x0F120205, /* 70000A06_yuviirnr_iXSupportUV */
+ 0x0F120304, /* 70000A08_yuviirnr_iHighYNorm */
+ 0x0F120409, /* 70000A0A_yuviirnr_iHighUVNorm */
+ 0x0F120306, /* 70000A0C_yuviirnr_iUVNormShift */
+ 0x0F120407, /* 70000A0E_yuviirnr_iVertLength_UV */
+ 0x0F121C04, /* 70000A10_yuviirnr_iDiffThreshH_Y */
+ 0x0F120214, /* 70000A12_yuviirnr_iDiffThreshH_UV */
+ 0x0F121002, /* 70000A14_yuviirnr_iMaxThreshH_Y */
+ 0x0F120610, /* 70000A16_yuviirnr_iMaxThreshH_UV */
+ 0x0F121A02, /* 70000A18_yuviirnr_iYNRStrengthH */
+ 0x0F122818, /* 70000A1A_yuviirnr_iUVNRStrengthH */
+ 0x0F120080, /* 70000A1C_RGBGamma2_iLinearity */
+ 0x0F120350, /* 70000A1E_ccm_oscar_iSaturation */
+ 0x0F120180, /* 70000A20_RGB2YUV_iRGBGain */
+ 0x0F120A0A, /* 70000A22_bnr_iClustMulT_H */
+ 0x0F120101, /* 70000A24_bnr_iClustThresh_H */
+ 0x0F123141, /* 70000A26_bnr_iDenThreshLow */
+ 0x0F126024, /* 70000A28_ee_iLowSharpPower */
+ 0x0F123140, /* 70000A2A_ee_iLowShDenoise */
+ 0x0F12FFFF, /* 70000A2C_ee_iLowSharpClamp */
+ 0x0F120808, /* 70000A2E_ee_iReduceEdgeMinMult */
+ 0x0F120A01, /* 70000A30_bnr_nClustLevel_H_Bin */
+ 0x0F12010A, /* 70000A32_bnr_iClustMulT_C_Bin */
+ 0x0F123601, /* 70000A34_bnr_iClustThresh_C_Bin */
+ 0x0F12242A, /* 70000A36_bnr_iDenThreshHigh_Bin */
+ 0x0F123660, /* 70000A38_ee_iHighSharpPower_Bin */
+ 0x0F12FF2A, /* 70000A3A_ee_iHighShDenoise_Bin */
+ 0x0F1208FF, /* 70000A3C_ee_iHighSharpClamp_Bin */
+ 0x0F120008, /* 70000A3E_ee_iReduceEdgeSlope_Bin */
+ 0x0F120001, /* 70000A40_bnr_nClustLevel_C */
+ 0x0F120000, /* 70000A42_BRIGHTNESS AFIT 1 */
+ 0x0F120000, /* 70000A44_CONTRAST */
+ 0x0F12FFFB, /* 70000A46_SATURATION */
+ 0x0F120000, /* 70000A48_SHARP_BLUR */
+ 0x0F120000, /* 70000A4A_GLAMOUR */
+ 0x0F1200C0, /* 70000A4C_bnr_edge_high */
+ 0x0F120064, /* 70000A4E_postdmsc_iLowBright */
+ 0x0F120384, /* 70000A50_postdmsc_iHighBright */
+ 0x0F120051, /* 70000A52_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000A54_postdmsc_iHighSat */
+ 0x0F120070, /* 70000A56_postdmsc_iTune */
+ 0x0F120040, /* 70000A58_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000A5A_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000A5C_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000A5E_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000A60_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000A62_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000A64_bnr_edge_low */
+ 0x0F120201, /* 70000A66_bnr_repl_force */
+ 0x0F120204, /* 70000A68_bnr_iHotThreshLow */
+ 0x0F122404, /* 70000A6A_bnr_iColdThreshLow */
+ 0x0F12031B, /* 70000A6C_bnr_DispTH_High */
+ 0x0F120103, /* 70000A6E_bnr_DISP_Limit_High */
+ 0x0F121004, /* 70000A70_bnr_iDistSigmaMax */
+ 0x0F123A0C, /* 70000A72_bnr_iDiffSigmaHigh */
+ 0x0F120070, /* 70000A74_bnr_iNormalizedSTD_Limit */
+ 0x0F121C80, /* 70000A76_bnr_iDirMinThres */
+ 0x0F123030, /* 70000A78_bnr_iDirFltDiffThresLow */
+ 0x0F120630, /* 70000A7A_bnr_iDirSmoothPowerLow */
+ 0x0F120306, /* 70000A7C_bnr_iHighMaxSlopeAllowed */
+ 0x0F122003, /* 70000A7E_bnr_iHighSlopeThresh */
+ 0x0F12FF01, /* 70000A80_bnr_iSlopeBlurStrength */
+ 0x0F120000, /* 70000A82_bnr_AddNoisePower1 */
+ 0x0F120300, /* 70000A84_bnr_iRadialTune */
+ 0x0F12245A, /* 70000A86_bnr_iRadialLimit */
+ 0x0F121018, /* 70000A88_ee_iFSMagThHigh */
+ 0x0F12000B, /* 70000A8A_ee_iFSVarThHigh */
+ 0x0F120B00, /* 70000A8C_ee_iFSThHigh */
+ 0x0F125A0F, /* 70000A8E_ee_iFSVarCountTh */
+ 0x0F120505, /* 70000A90_ee_iRadialPower */
+ 0x0F121802, /* 70000A92_ee_iROADThres */
+ 0x0F120000, /* 70000A94_ee_iROADSubMaxNR */
+ 0x0F122006, /* 70000A96_ee_iROADNeiThres */
+ 0x0F122928, /* 70000A98_ee_iSmoothEdgeThres */
+ 0x0F120415, /* 70000A9A_ee_iWSharpen */
+ 0x0F120101, /* 70000A9C_ee_iWShThresh */
+ 0x0F120800, /* 70000A9E_ee_iEmbossCentAdd */
+ 0x0F121004, /* 70000AA0_ee_iReduceEdgeThresh */
+ 0x0F124008, /* 70000AA2_dmsc_iDesatThresh */
+ 0x0F120540, /* 70000AA4_dmsc_iDemBlurLow */
+ 0x0F128006, /* 70000AA6_dmsc_iDecisionThresh */
+ 0x0F120020, /* 70000AA8_dmsc_iMonochrom */
+ 0x0F120000, /* 70000AAA_dmsc_iGRDenoiseVal */
+ 0x0F121800, /* 70000AAC_dmsc_iEdgeDesatThrLow */
+ 0x0F120003, /* 70000AAE_dmsc_iNearGrayDesat */
+ 0x0F121E10, /* 70000AB0_postdmsc_iBCoeff */
+ 0x0F12000B, /* 70000AB2_postdmsc_iWideMult */
+ 0x0F120607, /* 70000AB4_yuvemix_mNegSlopes_1 */
+ 0x0F120005, /* 70000AB6_yuvemix_mNegSlopes_3 */
+ 0x0F120607, /* 70000AB8_yuvemix_mPosSlopes_1 */
+ 0x0F120405, /* 70000ABA_yuvemix_mPosSlopes_3 */
+ 0x0F120205, /* 70000ABC_yuviirnr_iXSupportUV */
+ 0x0F120304, /* 70000ABE_yuviirnr_iHighYNorm */
+ 0x0F120409, /* 70000AC0_yuviirnr_iHighUVNorm */
+ 0x0F120306, /* 70000AC2_yuviirnr_iUVNormShift */
+ 0x0F120407, /* 70000AC4_yuviirnr_iVertLength_UV */
+ 0x0F121F04, /* 70000AC6_yuviirnr_iDiffThreshH_Y */
+ 0x0F120218, /* 70000AC8_yuviirnr_iDiffThreshH_UV */
+ 0x0F121102, /* 70000ACA_yuviirnr_iMaxThreshH_Y */
+ 0x0F120611, /* 70000ACC_yuviirnr_iMaxThreshH_UV */
+ 0x0F121A02, /* 70000ACE_yuviirnr_iYNRStrengthH */
+ 0x0F126418, /* 70000AD0_yuviirnr_iUVNRStrengthH */
+ 0x0F120080, /* 70000AD2_RGBGamma2_iLinearity */
+ 0x0F120380, /* 70000AD4_ccm_oscar_iSaturation */
+ 0x0F120180, /* 70000AD6_RGB2YUV_iRGBGain */
+ 0x0F120A0A, /* 70000AD8_bnr_iClustMulT_H */
+ 0x0F120101, /* 70000ADA_bnr_iClustThresh_H */
+ 0x0F122832, /* 70000ADC_bnr_iDenThreshLow */
+ 0x0F126024, /* 70000ADE_ee_iLowSharpPower */
+ 0x0F12272C, /* 70000AE0_ee_iLowShDenoise */
+ 0x0F12FFFF, /* 70000AE2_ee_iLowSharpClamp */
+ 0x0F120808, /* 70000AE4_ee_iReduceEdgeMinMult */
+ 0x0F120A01, /* 70000AE6_bnr_nClustLevel_H_Bin */
+ 0x0F12010A, /* 70000AE8_bnr_iClustMulT_C_Bin */
+ 0x0F122401, /* 70000AEA_bnr_iClustThresh_C_Bin */
+ 0x0F12241B, /* 70000AEC_bnr_iDenThreshHigh_Bin */
+ 0x0F121E60, /* 70000AEE_ee_iHighSharpPower_Bin */
+ 0x0F12FF18, /* 70000AF0_ee_iHighShDenoise_Bin */
+ 0x0F1208FF, /* 70000AF2_ee_iHighSharpClamp_Bin */
+ 0x0F120008, /* 70000AF4_ee_iReduceEdgeSlope_Bin */
+ 0x0F120001, /* 70000AF6_bnr_nClustLevel_C */
+ 0x0F120000, /* 70000AF8_BRIGHTNESS AFIT 2 */
+ 0x0F120000, /* 70000AFA_CONTRAST */
+ 0x0F12FFFB, /* 70000AFC_SATURATION */
+ 0x0F120000, /* 70000AFE_SHARP_BLUR */
+ 0x0F120000, /* 70000B00_GLAMOUR */
+ 0x0F1200C0, /* 70000B02_bnr_edge_high */
+ 0x0F120064, /* 70000B04_postdmsc_iLowBright */
+ 0x0F120384, /* 70000B06_postdmsc_iHighBright */
+ 0x0F120043, /* 70000B08_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000B0A_postdmsc_iHighSat */
+ 0x0F120070, /* 70000B0C_postdmsc_iTune */
+ 0x0F120040, /* 70000B0E_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000B10_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000B12_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000B14_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000B16_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000B18_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000B1A_bnr_edge_low */
+ 0x0F120201, /* 70000B1C_bnr_repl_force */
+ 0x0F120204, /* 70000B1E_bnr_iHotThreshLow */
+ 0x0F121B04, /* 70000B20_bnr_iColdThreshLow */
+ 0x0F120312, /* 70000B22_bnr_DispTH_High */
+ 0x0F120003, /* 70000B24_bnr_DISP_Limit_High */
+ 0x0F120C03, /* 70000B26_bnr_iDistSigmaMax */
+ 0x0F122806, /* 70000B28_bnr_iDiffSigmaHigh */
+ 0x0F120060, /* 70000B2A_bnr_iNormalizedSTD_Limit */
+ 0x0F121580, /* 70000B2C_bnr_iDirMinThres */
+ 0x0F122020, /* 70000B2E_bnr_iDirFltDiffThresLow */
+ 0x0F120620, /* 70000B30_bnr_iDirSmoothPowerLow */
+ 0x0F120306, /* 70000B32_bnr_iHighMaxSlopeAllowed */
+ 0x0F122003, /* 70000B34_bnr_iHighSlopeThresh */
+ 0x0F12FF01, /* 70000B36_bnr_iSlopeBlurStrength */
+ 0x0F120000, /* 70000B38_bnr_AddNoisePower1 */
+ 0x0F120300, /* 70000B3A_bnr_iRadialTune */
+ 0x0F12145A, /* 70000B3C_bnr_iRadialLimit */
+ 0x0F121010, /* 70000B3E_ee_iFSMagThHigh */
+ 0x0F12000B, /* 70000B40_ee_iFSVarThHigh */
+ 0x0F120E00, /* 70000B42_ee_iFSThHigh */
+ 0x0F125A0F, /* 70000B44_ee_iFSVarCountTh */
+ 0x0F120504, /* 70000B46_ee_iRadialPower */
+ 0x0F121802, /* 70000B48_ee_iROADThres */
+ 0x0F120000, /* 70000B4A_ee_iROADSubMaxNR */
+ 0x0F122006, /* 70000B4C_ee_iROADNeiThres */
+ 0x0F122B28, /* 70000B4E_ee_iSmoothEdgeThres */
+ 0x0F120417, /* 70000B50_ee_iWSharpen */
+ 0x0F120101, /* 70000B52_ee_iWShThresh */
+ 0x0F128000, /* 70000B54_ee_iEmbossCentAdd */
+ 0x0F120A04, /* 70000B56_ee_iReduceEdgeThresh */
+ 0x0F124008, /* 70000B58_dmsc_iDesatThresh */
+ 0x0F120540, /* 70000B5A_dmsc_iDemBlurLow */
+ 0x0F128006, /* 70000B5C_dmsc_iDecisionThresh */
+ 0x0F120020, /* 70000B5E_dmsc_iMonochrom */
+ 0x0F120000, /* 70000B60_dmsc_iGRDenoiseVal */
+ 0x0F121800, /* 70000B62_dmsc_iEdgeDesatThrLow */
+ 0x0F120002, /* 70000B64_dmsc_iNearGrayDesat */
+ 0x0F121E10, /* 70000B66_postdmsc_iBCoeff */
+ 0x0F12000B, /* 70000B68_postdmsc_iWideMult */
+ 0x0F120607, /* 70000B6A_yuvemix_mNegSlopes_1 */
+ 0x0F120005, /* 70000B6C_yuvemix_mNegSlopes_3 */
+ 0x0F120607, /* 70000B6E_yuvemix_mPosSlopes_1 */
+ 0x0F120405, /* 70000B70_yuvemix_mPosSlopes_3 */
+ 0x0F120207, /* 70000B72_yuviirnr_iXSupportUV */
+ 0x0F120304, /* 70000B74_yuviirnr_iHighYNorm */
+ 0x0F120409, /* 70000B76_yuviirnr_iHighUVNorm */
+ 0x0F120306, /* 70000B78_yuviirnr_iUVNormShift */
+ 0x0F120407, /* 70000B7A_yuviirnr_iVertLength_UV */
+ 0x0F122404, /* 70000B7C_yuviirnr_iDiffThreshH_Y */
+ 0x0F120221, /* 70000B7E_yuviirnr_iDiffThreshH_UV */
+ 0x0F121202, /* 70000B80_yuviirnr_iMaxThreshH_Y */
+ 0x0F120613, /* 70000B82_yuviirnr_iMaxThreshH_UV */
+ 0x0F121A02, /* 70000B84_yuviirnr_iYNRStrengthH */
+ 0x0F126E18, /* 70000B86_yuviirnr_iUVNRStrengthH */
+ 0x0F120080, /* 70000B88_RGBGamma2_iLinearity */
+ 0x0F120080, /* 70000B8A_ccm_oscar_iSaturation */
+ 0x0F120180, /* 70000B8C_RGB2YUV_iRGBGain */
+ 0x0F120A0A, /* 70000B8E_bnr_iClustMulT_H */
+ 0x0F120101, /* 70000B90_bnr_iClustThresh_H */
+ 0x0F122630, /* 70000B92_bnr_iDenThreshLow */
+ 0x0F126024, /* 70000B94_ee_iLowSharpPower */
+ 0x0F121616, /* 70000B96_ee_iLowShDenoise */
+ 0x0F12FFFF, /* 70000B98_ee_iLowSharpClamp */
+ 0x0F120808, /* 70000B9A_ee_iReduceEdgeMinMult */
+ 0x0F120A01, /* 70000B9C_bnr_nClustLevel_H_Bin */
+ 0x0F12010A, /* 70000B9E_bnr_iClustMulT_C_Bin */
+ 0x0F121B01, /* 70000BA0_bnr_iClustThresh_C_Bin */
+ 0x0F122412, /* 70000BA2_bnr_iDenThreshHigh_Bin */
+ 0x0F120C60, /* 70000BA4_ee_iHighSharpPower_Bin */
+ 0x0F12FF0C, /* 70000BA6_ee_iHighShDenoise_Bin */
+ 0x0F1208FF, /* 70000BA8_ee_iHighSharpClamp_Bin */
+ 0x0F120008, /* 70000BAA_ee_iReduceEdgeSlope_Bin */
+ 0x0F120001, /* 70000BAC_bnr_nClustLevel_C */
+ 0x0F120000, /* 70000BAE_BRIGHTNESS AFIT 3 */
+ 0x0F120000, /* 70000BB0_CONTRAST */
+ 0x0F120000, /* 70000BB2_SATURATION */
+ 0x0F120000, /* 70000BB4_SHARP_BLUR */
+ 0x0F120000, /* 70000BB6_GLAMOUR */
+ 0x0F1200C0, /* 70000BB8_bnr_edge_high */
+ 0x0F120064, /* 70000BBA_postdmsc_iLowBright */
+ 0x0F120384, /* 70000BBC_postdmsc_iHighBright */
+ 0x0F120032, /* 70000BBE_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000BC0_postdmsc_iHighSat */
+ 0x0F120070, /* 70000BC2_postdmsc_iTune */
+ 0x0F120040, /* 70000BC4_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000BC6_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000BC8_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000BCA_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000BCC_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000BCE_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000BD0_bnr_edge_low */
+ 0x0F120201, /* 70000BD2_bnr_repl_force */
+ 0x0F120204, /* 70000BD4_bnr_iHotThreshLow */
+ 0x0F121504, /* 70000BD6_bnr_iColdThreshLow */
+ 0x0F12030F, /* 70000BD8_bnr_DispTH_High */
+ 0x0F120003, /* 70000BDA_bnr_DISP_Limit_High */
+ 0x0F120902, /* 70000BDC_bnr_iDistSigmaMax */
+ 0x0F122004, /* 70000BDE_bnr_iDiffSigmaHigh */
+ 0x0F120050, /* 70000BE0_bnr_iNormalizedSTD_Limit */
+ 0x0F121140, /* 70000BE2_bnr_iDirMinThres */
+ 0x0F12201C, /* 70000BE4_bnr_iDirFltDiffThresLow */
+ 0x0F120620, /* 70000BE6_bnr_iDirSmoothPowerLow */
+ 0x0F120306, /* 70000BE8_bnr_iHighMaxSlopeAllowed */
+ 0x0F122003, /* 70000BEA_bnr_iHighSlopeThresh */
+ 0x0F12FF01, /* 70000BEC_bnr_iSlopeBlurStrength */
+ 0x0F120000, /* 70000BEE_bnr_AddNoisePower1 */
+ 0x0F120300, /* 70000BF0_bnr_iRadialTune */
+ 0x0F12145A, /* 70000BF2_bnr_iRadialLimit */
+ 0x0F121010, /* 70000BF4_ee_iFSMagThHigh */
+ 0x0F12000B, /* 70000BF6_ee_iFSVarThHigh */
+ 0x0F121000, /* 70000BF8_ee_iFSThHigh */
+ 0x0F125A0F, /* 70000BFA_ee_iFSVarCountTh */
+ 0x0F120503, /* 70000BFC_ee_iRadialPower */
+ 0x0F121802, /* 70000BFE_ee_iROADThres */
+ 0x0F120000, /* 70000C00_ee_iROADSubMaxNR */
+ 0x0F122006, /* 70000C02_ee_iROADNeiThres */
+ 0x0F123028, /* 70000C04_ee_iSmoothEdgeThres */
+ 0x0F12041A, /* 70000C06_ee_iWSharpen */
+ 0x0F120101, /* 70000C08_ee_iWShThresh */
+ 0x0F12FF00, /* 70000C0A_ee_iEmbossCentAdd */
+ 0x0F120904, /* 70000C0C_ee_iReduceEdgeThresh */
+ 0x0F124008, /* 70000C0E_dmsc_iDesatThresh */
+ 0x0F120540, /* 70000C10_dmsc_iDemBlurLow */
+ 0x0F128006, /* 70000C12_dmsc_iDecisionThresh */
+ 0x0F120020, /* 70000C14_dmsc_iMonochrom */
+ 0x0F120000, /* 70000C16_dmsc_iGRDenoiseVal */
+ 0x0F121800, /* 70000C18_dmsc_iEdgeDesatThrLow */
+ 0x0F120002, /* 70000C1A_dmsc_iNearGrayDesat */
+ 0x0F121E10, /* 70000C1C_postdmsc_iBCoeff */
+ 0x0F12000B, /* 70000C1E_postdmsc_iWideMult */
+ 0x0F120607, /* 70000C20_yuvemix_mNegSlopes_1 */
+ 0x0F120005, /* 70000C22_yuvemix_mNegSlopes_3 */
+ 0x0F120607, /* 70000C24_yuvemix_mPosSlopes_1 */
+ 0x0F120405, /* 70000C26_yuvemix_mPosSlopes_3 */
+ 0x0F120206, /* 70000C28_yuviirnr_iXSupportUV */
+ 0x0F120304, /* 70000C2A_yuviirnr_iHighYNorm */
+ 0x0F120409, /* 70000C2C_yuviirnr_iHighUVNorm */
+ 0x0F120305, /* 70000C2E_yuviirnr_iUVNormShift */
+ 0x0F120406, /* 70000C30_yuviirnr_iVertLength_UV */
+ 0x0F122804, /* 70000C32_yuviirnr_iDiffThreshH_Y */
+ 0x0F120228, /* 70000C34_yuviirnr_iDiffThreshH_UV */
+ 0x0F121402, /* 70000C36_yuviirnr_iMaxThreshH_Y */
+ 0x0F120618, /* 70000C38_yuviirnr_iMaxThreshH_UV */
+ 0x0F121A02, /* 70000C3A_yuviirnr_iYNRStrengthH */
+ 0x0F126E18, /* 70000C3C_yuviirnr_iUVNRStrengthH */
+ 0x0F120080, /* 70000C3E_RGBGamma2_iLinearity */
+ 0x0F120080, /* 70000C40_ccm_oscar_iSaturation */
+ 0x0F120180, /* 70000C42_RGB2YUV_iRGBGain */
+ 0x0F120A0A, /* 70000C44_bnr_iClustMulT_H */
+ 0x0F120101, /* 70000C46_bnr_iClustThresh_H */
+ 0x0F12232B, /* 70000C48_bnr_iDenThreshLow */
+ 0x0F126024, /* 70000C4A_ee_iLowSharpPower */
+ 0x0F121414, /* 70000C4C_ee_iLowShDenoise */
+ 0x0F12FFFF, /* 70000C4E_ee_iLowSharpClamp */
+ 0x0F120808, /* 70000C50_ee_iReduceEdgeMinMult */
+ 0x0F120A01, /* 70000C52_bnr_nClustLevel_H_Bin */
+ 0x0F12010A, /* 70000C54_bnr_iClustMulT_C_Bin */
+ 0x0F121501, /* 70000C56_bnr_iClustThresh_C_Bin */
+ 0x0F12240F, /* 70000C58_bnr_iDenThreshHigh_Bin */
+ 0x0F120A60, /* 70000C5A_ee_iHighSharpPower_Bin */
+ 0x0F12FF0A, /* 70000C5C_ee_iHighShDenoise_Bin */
+ 0x0F1208FF, /* 70000C5E_ee_iHighSharpClamp_Bin */
+ 0x0F120008, /* 70000C60_ee_iReduceEdgeSlope_Bin */
+ 0x0F120001, /* 70000C62_bnr_nClustLevel_C */
+ 0x0F120000, /* 70000C64_BRIGHTNESS AFIT 4 */
+ 0x0F120000, /* 70000C66_CONTRAST */
+ 0x0F120000, /* 70000C68_SATURATION */
+ 0x0F120000, /* 70000C6A_SHARP_BLUR */
+ 0x0F120000, /* 70000C6C_GLAMOUR */
+ 0x0F1200C0, /* 70000C6E_bnr_edge_high */
+ 0x0F120064, /* 70000C70_postdmsc_iLowBright */
+ 0x0F120384, /* 70000C72_postdmsc_iHighBright */
+ 0x0F120032, /* 70000C74_postdmsc_iLowSat */
+ 0x0F1201F4, /* 70000C76_postdmsc_iHighSat */
+ 0x0F120070, /* 70000C78_postdmsc_iTune */
+ 0x0F120040, /* 70000C7A_yuvemix_mNegRanges_0 */
+ 0x0F1200A0, /* 70000C7C_yuvemix_mNegRanges_1 */
+ 0x0F120100, /* 70000C7E_yuvemix_mNegRanges_2 */
+ 0x0F120010, /* 70000C80_yuvemix_mPosRanges_0 */
+ 0x0F120060, /* 70000C82_yuvemix_mPosRanges_1 */
+ 0x0F120100, /* 70000C84_yuvemix_mPosRanges_2 */
+ 0x0F121430, /* 70000C86_bnr_edge_low */
+ 0x0F120201, /* 70000C88_bnr_repl_force */
+ 0x0F120204, /* 70000C8A_bnr_iHotThreshLow */
+ 0x0F120F04, /* 70000C8C_bnr_iColdThreshLow */
+ 0x0F12030C, /* 70000C8E_bnr_DispTH_High */
+ 0x0F120003, /* 70000C90_bnr_DISP_Limit_High */
+ 0x0F120602, /* 70000C92_bnr_iDistSigmaMax */
+ 0x0F121803, /* 70000C94_bnr_iDiffSigmaHigh */
+ 0x0F120040, /* 70000C96_bnr_iNormalizedSTD_Limit */
+ 0x0F120E20, /* 70000C98_bnr_iDirMinThres */
+ 0x0F122018, /* 70000C9A_bnr_iDirFltDiffThresLow */
+ 0x0F120620, /* 70000C9C_bnr_iDirSmoothPowerLow */
+ 0x0F120306, /* 70000C9E_bnr_iHighMaxSlopeAllowed */
+ 0x0F122003, /* 70000CA0_bnr_iHighSlopeThresh */
+ 0x0F12FF01, /* 70000CA2_bnr_iSlopeBlurStrength */
+ 0x0F120000, /* 70000CA4_bnr_AddNoisePower1 */
+ 0x0F120200, /* 70000CA6_bnr_iRadialTune */
+ 0x0F12145A, /* 70000CA8_bnr_iRadialLimit */
+ 0x0F121010, /* 70000CAA_ee_iFSMagThHigh */
+ 0x0F12000B, /* 70000CAC_ee_iFSVarThHigh */
+ 0x0F121200, /* 70000CAE_ee_iFSThHigh */
+ 0x0F125A0F, /* 70000CB0_ee_iFSVarCountTh */
+ 0x0F120502, /* 70000CB2_ee_iRadialPower */
+ 0x0F121802, /* 70000CB4_ee_iROADThres */
+ 0x0F120000, /* 70000CB6_ee_iROADSubMaxNR */
+ 0x0F122006, /* 70000CB8_ee_iROADNeiThres */
+ 0x0F124028, /* 70000CBA_ee_iSmoothEdgeThres */
+ 0x0F120430, /* 70000CBC_ee_iWSharpen */
+ 0x0F120101, /* 70000CBE_ee_iWShThresh */
+ 0x0F12FF00, /* 70000CC0_ee_iEmbossCentAdd */
+ 0x0F120804, /* 70000CC2_ee_iReduceEdgeThresh */
+ 0x0F124008, /* 70000CC4_dmsc_iDesatThresh */
+ 0x0F120540, /* 70000CC6_dmsc_iDemBlurLow */
+ 0x0F128006, /* 70000CC8_dmsc_iDecisionThresh */
+ 0x0F120020, /* 70000CCA_dmsc_iMonochrom */
+ 0x0F120000, /* 70000CCC_dmsc_iGRDenoiseVal */
+ 0x0F121800, /* 70000CCE_dmsc_iEdgeDesatThrLow */
+ 0x0F120002, /* 70000CD0_dmsc_iNearGrayDesat */
+ 0x0F121E10, /* 70000CD2_postdmsc_iBCoeff */
+ 0x0F12000B, /* 70000CD4_postdmsc_iWideMult */
+ 0x0F120607, /* 70000CD6_yuvemix_mNegSlopes_1 */
+ 0x0F120005, /* 70000CD8_yuvemix_mNegSlopes_3 */
+ 0x0F120607, /* 70000CDA_yuvemix_mPosSlopes_1 */
+ 0x0F120405, /* 70000CDC_yuvemix_mPosSlopes_3 */
+ 0x0F120205, /* 70000CDE_yuviirnr_iXSupportUV */
+ 0x0F120304, /* 70000CE0_yuviirnr_iHighYNorm */
+ 0x0F120409, /* 70000CE2_yuviirnr_iHighUVNorm */
+ 0x0F120306, /* 70000CE4_yuviirnr_iUVNormShift */
+ 0x0F120407, /* 70000CE6_yuviirnr_iVertLength_UV */
+ 0x0F122C04, /* 70000CE8_yuviirnr_iDiffThreshH_Y */
+ 0x0F12022C, /* 70000CEA_yuviirnr_iDiffThreshH_UV */
+ 0x0F121402, /* 70000CEC_yuviirnr_iMaxThreshH_Y */
+ 0x0F120618, /* 70000CEE_yuviirnr_iMaxThreshH_UV */
+ 0x0F121A02, /* 70000CF0_yuviirnr_iYNRStrengthH */
+ 0x0F126E18, /* 70000CF2_yuviirnr_iUVNRStrengthH */
+ 0x0F120080, /* 70000CF4_RGBGamma2_iLinearity */
+ 0x0F120080, /* 70000CF6_ccm_oscar_iSaturation */
+ 0x0F120180, /* 70000CF8_RGB2YUV_iRGBGain */
+ 0x0F120A0A, /* 70000CFA_bnr_iClustMulT_H */
+ 0x0F120101, /* 70000CFC_bnr_iClustThresh_H */
+ 0x0F121114, /* 70000CFE_bnr_iDenThreshLow */
+ 0x0F126024, /* 70000D00_ee_iLowSharpPower */
+ 0x0F121212, /* 70000D02_ee_iLowShDenoise */
+ 0x0F12FFFF, /* 70000D04_ee_iLowSharpClamp */
+ 0x0F120808, /* 70000D06_ee_iReduceEdgeMinMult */
+ 0x0F120A01, /* 70000D08_bnr_nClustLevel_H_Bin */
+ 0x0F12010A, /* 70000D0A_bnr_iClustMulT_C_Bin */
+ 0x0F120F01, /* 70000D0C_bnr_iClustThresh_C_Bin */
+ 0x0F12240C, /* 70000D0E_bnr_iDenThreshHigh_Bin */
+ 0x0F120860, /* 70000D10_ee_iHighSharpPower_Bin */
+ 0x0F12FF08, /* 70000D12_ee_iHighShDenoise_Bin */
+ 0x0F1208FF, /* 70000D14_ee_iHighSharpClamp_Bin */
+ 0x0F120008, /* 70000D16_ee_iReduceEdgeSlope_Bin */
+ 0x0F120001, /* 70000D18_bnr_nClustLevel_C */
+
+ 0x002A060C,
+ 0x0F120800, /* lt_ExpGain_ExpCurveGainMaxStr */
+ /* FOR HD CAMCORDER */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs */
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs */
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02A6,
+ 0x0F120280, /* REG_0TC_PCFG_usWidth */
+ 0x0F1201E0, /* REG_0TC_PCFG_usHeight */
+ 0x002A02AB,
+ 0x0F120005, /* REG_0TC_PCFG_Format
+ 05 : yuv (0~255) 06:yuv (16~234) 07: raw 09 : jpeg */
+ 0x002A0266,
+ 0x0F120000, /* #REG_TC_GP_ActivePrevConfig */
+ 0x002A026A,
+ 0x0F120001, /* #REG_TC_GP_PrevOpenAfterChange */
+ 0x002A024E,
+ 0x0F120001, /* #REG_TC_GP_NewConfigSync */
+ 0x002A0268,
+ 0x0F120001, /* #REG_TC_GP_PrevConfigChanged */
+ 0x002A0270,
+ 0x0F120001, /* #REG_TC_GP_CapConfigChanged */
+ 0x002A023E,
+ 0x0F120001, /* #REG_TC_GP_EnablePreview */
+ 0x0F120001, /* #REG_TC_GP_EnablePreviewChanged */
+};
+
+static const u32 s5k4ec_flash_init[] = {
+ 0x002A0484,
+ 0x0F120002, /* capture flash on */
+
+ 0x002A183A,
+ 0x0F120001, /* one frame AE */
+
+ 0x002A17F6,
+ 0x0F120260, /* AWB R point */
+ 0x0F120210, /* AWB B point */
+
+ 0x002A1840,
+ 0x0F120001, /* Fls AE tune start */
+
+ 0x0F120100, /* fls_afl_FlsAFIn Rin */
+ 0x0F120120,
+ 0x0F120180,
+ 0x0F120200,
+ 0x0F120400,
+ 0x0F120800,
+ 0x0F120A00,
+ 0x0F121000,
+
+ 0x0F120100, /* fls_afl_FlsAFOut Rout */
+ 0x0F1200A0,
+ 0x0F120090,
+ 0x0F120080,
+ 0x0F120070,
+ 0x0F120045,
+ 0x0F120030,
+ 0x0F120010,
+
+ 0x002A1884,
+ 0x0F120100, /* fls_afl_FlsNBOut flash NB default */
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+ 0x0F120100,
+
+ 0x002A4784,
+ 0x0F1200A0, /* TNP_Regs_FlsWeightRIn weight tune start in */
+ 0x0F1200C0,
+ 0x0F1200D0,
+ 0x0F120100,
+ 0x0F120200,
+ 0x0F120300,
+
+ 0x0F120088, /* TNP_Regs_FlsWeightROut weight tune start out */
+ 0x0F1200B0,
+ 0x0F1200C0,
+ 0x0F120100,
+ 0x0F120200,
+ 0x0F120300,
+
+ 0x002A479C,
+
+ 0x0F120120, /* Fls BRIn */
+ 0x0F120150,
+ 0x0F120200,
+
+ 0x0F12003C, /* Fls BROut */
+ 0x0F12003B,
+ 0x0F120026,
+};
+
+static const u32 s5k4ec_pre_flash_start[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A17FC, /* fls_FlashWP_0_Pre_Flash_Start */
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_pre_flash_end[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A1800, /* fls_afl_FlashWP_Weight_0_Pre_Flash_end */
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_flash_start[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A17E8, /* fls_afl_FlashMode:Flash alg start */
+ 0x0F120001,
+ 0x002A180C, /* fls_afl_FlashWP_Weight_4:flash br avg */
+ 0x0F120027,
+};
+
+static const u32 s5k4ec_flash_end[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A17E8, /* fls_afl_FlashMode Flash alg end */
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_fast_ae_on[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0588, /* _afl_FlashMode Flash alg end */
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_fast_ae_off[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0588, /* _afl_FlashMode Flash alg end */
+ 0x0F120002,
+};
+
+static const u32 s5k4ec_luxcheck[] = {
+
+};
+
+static const u32 s5k4ec_50hz_auto[] = {
+/* Step1 : Set 50Hz fixed mode in order to stop previous setting */
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A04E6,
+ 0x0F12075F,
+ 0x002A04D6,
+ 0x0F120001,
+ 0x002A04D8,
+ 0x0F120001,
+
+/* Step2 : Set 50Hz auto mode */
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A0F2A,
+ 0x0F120000, /* AFC_Default BIT[0] 1:60Hz 0:50Hz */
+
+/* Step3 : Restore auto mode */
+ 0xFFFF0064, /* Delay 100ms */
+ 0x002A04E6,
+ 0x0F12077F
+};
+
+static const u32 s5k4ec_50hz_fixed[] = {
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A04E6,
+ 0x0F12075F,
+ 0x002A04D6,
+ 0x0F120001,
+ 0x002A04D8,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_60hz_auto[] = {
+/* Step1 : Set 60Hz fixed mode in order to stop previous setting */
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A04E6,
+ 0x0F12075F,
+ 0x002A04D6,
+ 0x0F120002,
+ 0x002A04D8,
+ 0x0F120001,
+
+/* Step2 : Set 60Hz auto mode */
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A0F2A,
+ 0x0F120001, /* AFC_Default BIT[0] 1:60Hz 0:50Hz */
+
+/* Step3 : Restore auto mode */
+ 0xFFFF0064, /* Delay 100ms */
+ 0x002A04E6,
+ 0x0F12077F
+};
+
+static const u32 s5k4ec_60hz_fixed[] = {
+ 0x002A0F30,
+ 0x0F120001, /* AFC_D_ConvAccelerPower */
+ 0x002A04E6,
+ 0x0F12075F,
+ 0x002A04D6,
+ 0x0F120002,
+ 0x002A04D8,
+ 0x0F120001,
+};
+
+/* Capture : 2576 x 1932 */
+static const u32 s5k4ec_2576_1932_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A10, /* REG_TC_GP_CapReqInputWidth 2576 */
+ 0x0F12078C, /* REG_TC_GP_CapReqInputHeight 1932 */
+ 0x0F120008, /* REG_TC_GP_CapInputWidthOfs (2592-2576)/2 */
+ 0x0F120006, /* REG_TC_GP_CapInputHeightOfs (1944-1932)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A10, /* REG_TC_PZOOM_CapZoomReqInputWidth 2576 */
+ 0x0F12078C, /* REG_TC_PZOOM_CapZoomReqInputHeight 1932 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth 640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight 480 */
+
+ 0x002A0398,
+ 0x0F120A10, /* REG_0TC_CCFG_usWidth 2576 */
+ 0x0F12078C, /* REG_0TC_CCFG_usHeight 1932 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 5M 2560 x 1920 */
+static const u32 s5k4ec_5m_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x00287000,
+ 0x002A0396,
+ 0x0F120000, /* REG_0TC_CCFG_uCaptureMode */
+ 0x0F120A00, /* REG_0TC_CCFG_usWidth */
+ 0x0F120780, /* REG_0TC_CCFG_usHeight */
+ 0x0F120005, /* REG_0TC_CCFG_Format */
+ 0x0F12278D, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120052, /* REG_0TC_CCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture 2560 x 1440 */
+static const u32 s5k4ec_2560_1440_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_GP_CapReqInputHeight //1440 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200FC, /* REG_TC_GP_CapInputHeightOfs //(1944-1440)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_PZOOM_CapZoomReqInputHeight //1440 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A0398,
+ 0x0F120A00, /* REG_0TC_CCFG_usWidth //2560 */
+ 0x0F1205A0, /* REG_0TC_CCFG_usHeight //1440 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : W4MP 2560 x 1536 */
+static const u32 s5k4ec_w4mp_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_GP_CapReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200CC, /* REG_TC_GP_CapInputHeightOfs //(1944-1536)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_PZOOM_CapZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120320, /* REG_TC_THUMB_Thumb_uWidth //800 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x002A0398,
+ 0x0F120A00, /* REG_0TC_CCFG_usWidth //2560 */
+ 0x0F120600, /* REG_0TC_CCFG_usHeight //1536 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 2576 x 1544 */
+static const u32 s5k4ec_2576_1544_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A10, /* REG_TC_GP_CapReqInputWidth 2576 */
+ 0x0F120608, /* REG_TC_GP_CapReqInputHeight 1544 */
+ 0x0F120008, /* REG_TC_GP_CapInputWidthOfs (2592-2576)/2 */
+ 0x0F1200C8, /* REG_TC_GP_CapInputHeightOfs (1944-1544)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A10, /* REG_TC_PZOOM_CapZoomReqInputWidth 2576 */
+ 0x0F120608, /* REG_TC_PZOOM_CapZoomReqInputHeight 1544 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120320, /* REG_TC_THUMB_Thumb_uWidth 800 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight 480 */
+
+ 0x002A0398,
+ 0x0F120A10, /* REG_0TC_CCFG_usWidth //2576 */
+ 0x0F120608, /* REG_0TC_CCFG_usHeight //1544 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 3M 2048 x 1536 */
+static const u32 s5k4ec_3m_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x00287000,
+ 0x002A0398,
+ 0x0F120800, /* REG_0TC_CCFG_usWidth */
+ 0x0F120600, /* REG_0TC_CCFG_usWidth */
+ 0x0F120005, /* REG_0TC_CCFG_Format */
+ 0x0F12278D, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120052, /* REG_0TC_CCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 2048 x 1152 */
+static const u32 s5k4ec_2048_1152_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_GP_CapReqInputHeight //1440 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200FC, /* REG_TC_GP_CapInputHeightOfs //(1944-1440)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_PZOOM_CapZoomReqInputHeight //1440 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A0398,
+ 0x0F120800, /* REG_0TC_CCFG_usWidth //2048 */
+ 0x0F120480, /* REG_0TC_CCFG_usHeight //1152 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 2048 x 1232 */
+static const u32 s5k4ec_2048_1232_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_GP_CapReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200CC, /* REG_TC_GP_CapInputHeightOfs //(1944-1536)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_PZOOM_CapZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120320, /* REG_TC_THUMB_Thumb_uWidth //800 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x002A0398,
+ 0x0F120800, /* REG_0TC_CCFG_usWidth //2048 */
+ 0x0F1204D0, /* REG_0TC_CCFG_usHeight //1232 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 1920 x 1920 */
+static const u32 s5k4ec_1920_1920_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F12078C, /* REG_TC_GP_CapReqInputWidth 1932 */
+ 0x0F12078C, /* REG_TC_GP_CapReqInputHeight 1932 */
+ 0x0F12014A, /* REG_TC_GP_CapInputWidthOfs (2592-1932)/2 */
+ 0x0F120006, /* REG_TC_GP_CapInputHeightOfs (1944-1932)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F12078C, /* REG_TC_PZOOM_CapZoomReqInputWidth 1932 */
+ 0x0F12078C, /* REG_TC_PZOOM_CapZoomReqInputHeight 1932 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uWidth 480 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight 480 */
+
+ 0x002A0398,
+ 0x0F120780, /* REG_0TC_CCFG_usWidth 1920 */
+ 0x0F120780, /* REG_0TC_CCFG_usHeight 1920 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 1928 x 1928 */
+static const u32 s5k4ec_1928_1928_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120788, /* REG_TC_GP_CapReqInputWidth 1928 */
+ 0x0F120788, /* REG_TC_GP_CapReqInputHeight 1928 */
+ 0x0F12014C, /* REG_TC_GP_CapInputWidthOfs (2592-1928)/2 */
+ 0x0F120008, /* REG_TC_GP_CapInputHeightOfs (1944-1928)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120788, /* REG_TC_PZOOM_CapZoomReqInputWidth 1928 */
+ 0x0F120788, /* REG_TC_PZOOM_CapZoomReqInputHeight 1928 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uWidth 480 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight 480 */
+
+ 0x002A0398,
+ 0x0F120788, /* REG_0TC_CCFG_usWidth //1928 */
+ 0x0F120788, /* REG_0TC_CCFG_usHeight //1928 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 2036 x 1526 */
+static const u32 s5k4ec_2036_1526_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A10, /* REG_TC_GP_CapReqInputWidth 2576 */
+ 0x0F12078C, /* REG_TC_GP_CapReqInputHeight 1932 */
+ 0x0F120008, /* REG_TC_GP_CapInputWidthOfs (2592-2576)/2 */
+ 0x0F120006, /* REG_TC_GP_CapInputHeightOfs (1944-1932)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A10, /* REG_TC_PZOOM_CapZoomReqInputWidth 2576 */
+ 0x0F12078C, /* REG_TC_PZOOM_CapZoomReqInputHeight 1932 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth 640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight 480 */
+
+ 0x002A0398,
+ 0x0F1207F4, /* REG_0TC_CCFG_usWidth 2036 */
+ 0x0F1205F6, /* REG_0TC_CCFG_usHeight 1526 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 1632 x 1218 */
+static const u32 s5k4ec_1632_1218_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A10, /* REG_TC_GP_CapReqInputWidth 2576 */
+ 0x0F12078C, /* REG_TC_GP_CapReqInputHeight 1932 */
+ 0x0F120008, /* REG_TC_GP_CapInputWidthOfs (2592-2576)/2 */
+ 0x0F120006, /* REG_TC_GP_CapInputHeightOfs (1944-1932)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A10, /* REG_TC_PZOOM_CapZoomReqInputWidth 2576 */
+ 0x0F12078C, /* REG_TC_PZOOM_CapZoomReqInputHeight 1932 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth 640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight 480 */
+
+ 0x002A0398,
+ 0x0F120660, /* REG_0TC_CCFG_usWidth 1632 */
+ 0x0F1204C2, /* REG_0TC_CCFG_usHeight 1218 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : W1MP 1600 x 960 */
+static const u32 s5k4ec_w1mp_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_GP_CapReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200CC, /* REG_TC_GP_CapInputHeightOfs //(1944-1536)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_PZOOM_CapZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120320, /* REG_TC_THUMB_Thumb_uWidth //800 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x002A0398,
+ 0x0F120640, /* REG_0TC_CCFG_usWidth //1600 */
+ 0x0F1203C0, /* REG_0TC_CCFG_usHeight //960 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : WVGA 800 x 480 */
+static const u32 s5k4ec_wvga_capture[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_GP_CapReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200CC, /* REG_TC_GP_CapInputHeightOfs //(1944-1536)/2 */
+
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_PZOOM_CapZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120320, /* REG_TC_THUMB_Thumb_uWidth //800 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x002A0398,
+ 0x0F120320, /* REG_0TC_CCFG_usWidth //800 */
+ 0x0F1201E0, /* REG_0TC_CCFG_usHeight //480 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 2M 1600 x 1200 */
+static const u32 s5k4ec_2m_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120000, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x00287000,
+ 0x002A0398,
+ 0x0F120640, /* REG_0TC_CCFG_usWidth */
+ 0x0F1204B0, /* REG_0TC_CCFG_usHeight */
+ 0x0F120005, /* REG_0TC_CCFG_Format */
+ 0x0F12278D, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120052, /* REG_0TC_CCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : 1M 1280 x 960 */
+static const u32 s5k4ec_1m_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x00287000,
+ 0x002A0398,
+ 0x0F120500, /* REG_0TC_CCFG_usWidth */
+ 0x0F1203C0, /* REG_0TC_CCFG_usHeight */
+ 0x0F120005, /* REG_0TC_CCFG_Format */
+ 0x0F12278D, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120052, /* REG_0TC_CCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : XGA 1024 x 768 */
+static const u32 s5k4ec_xga_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120280, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1201E0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x00287000,
+ 0x002A0398,
+ 0x0F120400, /* REG_0TC_CCFG_usWidth */
+ 0x0F120300, /* REG_0TC_CCFG_usHeight */
+ 0x0F120005, /* REG_0TC_CCFG_Format */
+ 0x0F12278D, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120052, /* REG_0TC_CCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : VGA 640 x 480 */
+static const u32 s5k4ec_vga_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120000, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120140, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1200F0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x00287000,
+ 0x002A0398,
+ 0x0F120280, /* REG_0TC_CCFG_usWidth */
+ 0x0F1201E0, /* REG_0TC_CCFG_usHeight */
+ 0x0F120005, /* REG_0TC_CCFG_Format */
+ 0x0F12278D, /* REG_0TC_CCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_CCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_CCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_CCFG_uBpp88 */
+ 0x0F120052, /* REG_0TC_CCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_CCFG_OIFMask */
+ 0x0F120810, /* REG_0TC_CCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_CCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_CCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_CCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_CCFG_FrRateQualityType */
+ 0x0F120535, /* REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
+ 0x0F12029A, /* REG_0TC_CCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Capture : QVGA 320 x 240 */
+static const u32 s5k4ec_qvga_capture[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A0258,
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
+ 0x002A0264,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A049C,
+ 0x0F120A00, /* REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_CapZoomReqInputHeightOfs */
+
+ 0x002A047C,
+ 0x0F120001, /* REG_TC_THUMB_Thumb_bActive */
+ 0x0F120140, /* REG_TC_THUMB_Thumb_uWidth //640 */
+ 0x0F1200F0, /* REG_TC_THUMB_Thumb_uHeight //480 */
+
+ 0x002A0398,
+ 0x0F120140, /* #REG_0TC_CCFG_usWidth */
+ 0x0F1200F0, /* #REG_0TC_CCFG_usHeight */
+ 0x0F120005,
+ 0x002A03B2,
+ 0x0F120002,
+ 0x002A03B0,
+ 0x0F120002,
+ 0x002A024E,
+ 0x0F120001,
+ 0x002A0270,
+ 0x0F120001,
+};
+
+/*
+* ///////////////// Preview ///////////////////
+*/
+
+/* Preview : 2560 x 1920 */
+static const u32 s5k4ec_max_preview[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs */
+
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_ZoomInputWidth */
+ 0x0F120780, /* REG_TC_PZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputHeightOfs */
+ 0x0F120A00, /* REG_TC_CZOOM_ZoomInputWidth */
+ 0x0F120780, /* REG_TC_CZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02A6,
+ 0x0F120A00, /* REG_0TC_PCFG_usWidth */
+ 0x0F120780, /* REG_0TC_PCFG_usHeight */
+ 0x0F120005, /* REG_0TC_PCFG_Format */
+ 0x0F12278D, /* REG_0TC_PCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_PCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_PCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_PCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_PCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_PCFG_OIFMask */
+ 0x0F1201E0, /* REG_0TC_PCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_PCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_PCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F120535,
+ 0x0F12028A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Preview : 2048 x 1536 */
+static const u32 s5k4ec_2048_preview[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs */
+
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_ZoomInputWidth */
+ 0x0F120780, /* REG_TC_PZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputHeightOfs */
+ 0x0F120A00, /* REG_TC_CZOOM_ZoomInputWidth */
+ 0x0F120780, /* REG_TC_CZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02A6,
+ 0x0F120800, /* REG_0TC_PCFG_usWidth */
+ 0x0F120600, /* REG_0TC_PCFG_usHeight */
+ 0x0F120005, /* REG_0TC_PCFG_Format */
+ 0x0F12278D, /* REG_0TC_PCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_PCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_PCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_PCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_PCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_PCFG_OIFMask */
+ 0x0F1201E0, /* REG_0TC_PCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_PCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_PCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F120535,
+ 0x0F12028A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Preview : 1600 x 1200 */
+static const u32 s5k4ec_1600_preview[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs */
+
+ 0x0F120A00, /* REG_TC_GP_CapReqInputWidth */
+ 0x0F120780, /* REG_TC_GP_CapReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs */
+ 0x0F12000C, /* REG_TC_GP_CapInputHeightOfs */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_ZoomInputWidth */
+ 0x0F120780, /* REG_TC_PZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputHeightOfs */
+ 0x0F120A00, /* REG_TC_CZOOM_ZoomInputWidth */
+ 0x0F120780, /* REG_TC_CZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02A6,
+ 0x0F120640, /* REG_0TC_PCFG_usWidth */
+ 0x0F1204B0, /* REG_0TC_PCFG_usHeight */
+ 0x0F120005, /* REG_0TC_PCFG_Format */
+ 0x0F12278D, /* REG_0TC_PCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_PCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_PCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_PCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_PCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_PCFG_OIFMask */
+ 0x0F1201E0, /* REG_0TC_PCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_PCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_PCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120002,
+ 0x0F120535,
+ 0x0F12028A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Preview : 720 x 540 */
+static const u32 s5k4ec_720_540_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1202D0, /* REG_0TC_PCFG_usWidth //720 */
+ 0x0F12021C, /* REG_0TC_PCFG_usHeight //540 */
+
+ 0x002A0266,
+ 0x0F120000, /* REG_TC_GP_ActivePrevConfig */
+ 0x002A026A,
+ 0x0F120001, /* REG_TC_GP_PrevOpenAfterChange */
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0268,
+ 0x0F120001, /* REG_TC_GP_PrevConfigChanged */
+};
+
+/* Preview : 704 x 576 */
+static const u32 s5k4ec_704_576_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120928, /* REG_TC_GP_PrevReqInputWidth //2344 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F12007C, /* REG_TC_GP_PrevInputWidthOfs //(2592-2344)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120928, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2344 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1202C0, /* REG_0TC_PCFG_usWidth //704 */
+ 0x0F120240, /* REG_0TC_PCFG_usHeight //576 */
+};
+
+/* Preview : 720 x 480 */
+static const u32 s5k4ec_720_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+ 0x002A02BE,
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F12014A, /* REG_0TC_PCFG_usMaxFrTimeMsecMult10 //014Ah:30fps */
+ 0x0F12014A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F1206A8, /* REG_TC_GP_PrevReqInputHeight //1704 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F120078, /* REG_TC_GP_PrevInputHeightOfs //(1944-1704)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F1206A8, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1704 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1202D0, /* REG_0TC_PCFG_usWidth //720 */
+ 0x0F1201E0, /* REG_0TC_PCFG_usHeight //480 */
+};
+
+/* Preview : 720 x 720 */
+static const u32 s5k4ec_720_720_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120780, /* REG_TC_GP_PrevReqInputWidth //1920 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120150, /* REG_TC_GP_PrevInputWidthOfs //(2592-1920)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1202D0, /* REG_0TC_PCFG_usWidth //720 */
+ 0x0F1202D0, /* REG_0TC_PCFG_usHeight //720 */
+};
+
+/* Preview : WVGA 800 x 480 */
+static const u32 s5k4ec_wvga_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_GP_PrevReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200CC, /* REG_TC_GP_PrevInputHeightOfs //(1944-1536)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120320, /* REG_0TC_PCFG_usWidth //800 */
+ 0x0F1201E0, /* REG_0TC_PCFG_usHeight //480 */
+};
+
+/* Preview : 1920 x 1080 */
+static const u32 s5k4ec_1920_preview[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120200, /* senHal_uAddColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth */
+ 0x0F120438, /* REG_TC_GP_PrevReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs */
+ 0x0F1201A4, /* REG_TC_GP_PrevInputHeightOfs */
+
+ 0x0F120780, /* REG_TC_GP_CapReqInputWidth */
+ 0x0F120438, /* REG_TC_GP_CapReqInputHeight */
+ 0x0F120010, /* REG_TC_GP_CapInputWidthOfs */
+ 0x0F1201A4, /* REG_TC_GP_CapInputHeightOfs */
+
+ 0x002A0494,
+ 0x0F120780, /* REG_TC_PZOOM_ZoomInputWidth */
+ 0x0F120438, /* REG_TC_PZOOM_ZoomInputHeight */
+ 0x0F120130, /* REG_TC_PZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputHeightOfs */
+ 0x0F120780, /* REG_TC_CZOOM_ZoomInputWidth */
+ 0x0F120438, /* REG_TC_CZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A02A6,
+ 0x0F120780, /* REG_0TC_PCFG_usWidth */
+ 0x0F120438, /* REG_0TC_PCFG_usHeight */
+ 0x0F120005, /* REG_0TC_PCFG_Format */
+ 0x0F12278D, /* REG_0TC_PCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_PCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_PCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_PCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_PCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_PCFG_OIFMask */
+ 0x0F1201E0, /* REG_0TC_PCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_PCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_PCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120002, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F120535,
+ 0x0F12028A, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 */
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+/* Preview : W1280 1280 x 720 */
+static const u32 s5k4ec_w1280_preview[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+ 0x002A18AC,
+
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1207DC, /* senHal_uMinColsBin */
+ 0x0F1205C0, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_GP_PrevReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200FC, /* REG_TC_GP_PrevInputHeightOfs/(1944-1536)/2 */
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+ 0x002A02A6,
+ 0x0F120500, /* REG_0TC_PCFG_usWidth //1280 */
+ 0x0F1202D0, /* REG_0TC_PCFG_usHeight //720 */
+};
+
+/* Preview WXGA 1280 x 768 */
+static const u32 s5k4ec_1280_wxga_preview[] = {
+ 0xFCFCD000,
+
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_GP_PrevReqInputHeight //1536 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200CC, /* REG_TC_GP_PrevInputHeightOfs //(1944-1536)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120600, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1536 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120500, /* REG_0TC_PCFG_usWidth //1280 */
+ 0x0F120300, /* REG_0TC_PCFG_usHeight //768 */
+};
+
+/* Preview : 960 x 960 */
+static const u32 s5k4ec_960_preview[] = {
+ 0xFCFCD000,
+
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120780, /* REG_TC_GP_PrevReqInputWidth //1920 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120150, /* REG_TC_GP_PrevInputWidthOfs //(2592-1920)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputWidth //1920 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1203C0, /* REG_0TC_PCFG_usWidth //960 */
+ 0x0F1203C0, /* REG_0TC_PCFG_usHeight //960 */
+};
+
+/* Preview : 960 x 720 */
+static const u32 s5k4ec_960_720_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1203C0, /* REG_0TC_PCFG_usWidth //960 */
+ 0x0F1202D0, /* REG_0TC_PCFG_usHeight //720 */
+};
+
+/* Preview : 960 x 540 */
+static const u32 s5k4ec_960_540_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_GP_PrevReqInputHeight //1440 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F1200FC, /* REG_TC_GP_PrevInputHeightOfs //(1944-1440)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F1205A0, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1440 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1203C0, /* REG_0TC_PCFG_usWidth //960 */
+ 0x0F12021C, /* REG_0TC_PCFG_usHeight //480 */
+};
+
+/* Preview : 640 x 480 */
+static const u32 s5k4ec_640_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120280, /* REG_0TC_PCFG_usWidth //640 */
+ 0x0F1201E0, /* REG_0TC_PCFG_usHeight //480 */
+};
+
+/* Preview : 880 x 720 */
+static const u32 s5k4ec_880_preview[] = {
+ 0xFCFCD000,
+ 0x00287000,
+
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1207DC, /* senHal_uMinColsBin */
+
+ 0x002A0250,
+ 0x0F1206E0, /* REG_TC_GP_PrevReqInputWidth */
+ 0x0F1205A0, /* REG_TC_GP_PrevReqInputHeight */
+ 0x0F120190, /* REG_TC_GP_PrevInputWidthOfs */
+ 0x0F1200F0, /* REG_TC_GP_PrevInputHeightOfs */
+
+ 0x0F1206E0, /* REG_TC_GP_CapReqInputWidth */
+ 0x0F1205A0, /* REG_TC_GP_CapReqInputHeight */
+ 0x0F120190, /* REG_TC_GP_CapInputWidthOfs */
+ 0x0F1200F0, /* REG_TC_GP_CapInputHeightOfs */
+
+ 0x002A0494,
+ 0x0F1206E0, /* REG_TC_PZOOM_ZoomInputWidth */
+ 0x0F1205A0, /* REG_TC_PZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_ZoomInputHeightOfs */
+ 0x0F120A00, /* REG_TC_CZOOM_ZoomInputWidth */
+ 0x0F1205A0, /* REG_TC_CZOOM_ZoomInputHeight */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputWidthOfs */
+ 0x0F120000, /* REG_TC_CZOOM_ZoomInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInCap */
+
+ 0x002A0A1E,
+ 0x0F120028, /* AfitBaseVals_0__73_ 0040 Why?? */
+ 0x002A0AD4,
+ 0x0F12003C, /* AfitBaseVals_1__73_ 0060 Why?? */
+
+ 0x002A02A6,
+ 0x0F120370, /* REG_0TC_PCFG_usWidth 1280 */
+ 0x0F1202D0, /* REG_0TC_PCFG_usHeight 0720 */
+ 0x0F120005, /* REG_0TC_PCFG_Format 0005 */
+ 0x002A024E,
+ 0x0F120001, /* #REG_TC_GP_NewConfigSync */
+
+ 0x002A02A6,
+ 0x0F120370, /* REG_0TC_PCFG_usWidth 1280 */
+ 0x0F1202D0, /* REG_0TC_PCFG_usHeight 0720 */
+ 0x0F120005, /* REG_0TC_PCFG_Format 0005 */
+ 0x0F12278D, /* REG_0TC_PCFG_usMaxOut4KHzRate */
+ 0x0F12278D, /* REG_0TC_PCFG_usMinOut4KHzRate */
+ 0x0F120100, /* REG_0TC_PCFG_OutClkPerPix88 */
+ 0x0F120300, /* REG_0TC_PCFG_uBpp88 */
+ 0x0F120012, /* REG_0TC_PCFG_PVIMask */
+ 0x0F120000, /* REG_0TC_PCFG_OIFMask */
+ 0x0F1201E0, /* REG_0TC_PCFG_usJpegPacketSize */
+ 0x0F120000, /* REG_0TC_PCFG_usJpegTotalPackets */
+ 0x0F120000, /* REG_0TC_PCFG_uClockInd */
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+ 0x0F1203E8,
+ 0x0F12014D, /* REG_0TC_PCFG_usMinFrTimeMsecMult10 */
+ 0x002A02E0,
+ 0x0F120003, /* REG_0TC_PCFG_uPrevMirror */
+ 0x0F120003, /* REG_0TC_PCFG_uCaptureMirror */
+
+ 0x002A024E,
+ 0x0F120001, /* REG_TC_GP_NewConfigSync */
+ 0x002A0270,
+ 0x0F120001, /* REG_TC_GP_CapConfigChanged */
+};
+
+/* Preview : 1280 x 960 */
+static const u32 s5k4ec_1280_preview[] = {
+ 0xFCFCD000,
+
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120500, /* REG_0TC_PCFG_usWidth //1280 */
+ 0x0F1203C0, /* REG_0TC_PCFG_usHeight //960 */
+};
+
+/* Preview : 1024 x 768 */
+static const u32 s5k4ec_1024_preview[] = {
+ 0xFCFCD000,
+
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120400, /* REG_0TC_PCFG_usWidth //1024 */
+ 0x0F120300, /* REG_0TC_PCFG_usHeight //768 */
+};
+
+/* Preview : 320 * 240 */
+static const u32 s5k4ec_320_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+ 0x002A02BE,
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120140, /* REG_0TC_PCFG_usWidth //320 */
+ 0x0F1200F0, /* REG_0TC_PCFG_usHeight //240 */
+};
+
+/* Preview : 352 x 288 */
+static const u32 s5k4ec_352_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120928, /* REG_TC_GP_PrevReqInputWidth //2344 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F12007C, /* REG_TC_GP_PrevInputWidthOfs //(2592-2344)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120928, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2344 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120160, /* REG_0TC_PCFG_usWidth //352 */
+ 0x0F120120, /* REG_0TC_PCFG_usHeight //288 */
+};
+
+/* Preview : QVGA 320 x 240 */
+static const u32 s5k4ec_qvga_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+ 0x002A02BE,
+ 0x0F120000, /* REG_0TC_PCFG_usFrTimeType */
+ 0x0F120001, /* REG_0TC_PCFG_FrRateQualityType */
+
+ 0x002A0250,
+ 0x0F120A00, /* REG_TC_GP_PrevReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F120010, /* REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120A00, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120140, /* REG_0TC_PCFG_usWidth //320 */
+ 0x0F1200F0, /* REG_0TC_PCFG_usHeight //240 */
+};
+
+/* Preview : 176 x 144 */
+static const u32 s5k4ec_176_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F120928, /* REG_TC_GP_PrevReqInputWidth //2344 */
+ 0x0F120780, /* REG_TC_GP_PrevReqInputHeight //1920 */
+ 0x0F12007C, /* REG_TC_GP_PrevInputWidthOfs //(2592-2344)/2 */
+ 0x0F12000C, /* REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F120928, /* REG_TC_PZOOM_PrevZoomReqInputWidth //2344 */
+ 0x0F120780, /* REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F1200B0, /* REG_0TC_PCFG_usWidth //176 */
+ 0x0F120090, /* REG_0TC_PCFG_usHeight //144 */
+};
+
+/* Preview : 144 x 176 */
+static const u32 s5k4ec_144_176_preview[] = {
+ 0xFCFCD000,
+
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F1206C8, /* senHal_uMinColsBin */
+ 0x0F1206C8, /* senHal_uMinColsNoBin */
+
+ 0x002A0250,
+ 0x0F1205A0, /* #REG_TC_GP_PrevReqInputWidth */
+ 0x0F1206E0, /* #REG_TC_GP_PrevReqInputHeight */
+ 0x0F120240, /* #REG_TC_GP_PrevInputWidthOfs */
+ 0x0F12005C, /* #REG_TC_GP_PrevInputHeightOfs */
+
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+
+ 0x002A0494,
+ 0x0F1205A0, /* #REG_TC_PZOOM_PrevZoomReqInputWidth */
+ 0x0F1206E0, /* #REG_TC_PZOOM_PrevZoomReqInputHeight */
+ 0x0F120000, /* #REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* #REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+
+ 0x002A02A6,
+ 0x0F120090, /* REG_0TC_PCFG_usWidth */
+ 0x0F1200B0, /* REG_0TC_PCFG_usHeight */
+};
+
+/* Preview : 1288 x 966 */
+static const u32 s5k4ec_1288_966_preview[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+ 0x002A0250,
+ 0x0F120A10, /* REG_TC_GP_PrevReqInputWidth //2576 */
+ 0x0F12078C, /* REG_TC_GP_PrevReqInputHeight //1932 */
+ 0x0F120008, /* REG_TC_GP_PrevInputWidthOfs //(2592-2576)/2 */
+ 0x0F120006, /* REG_TC_GP_PrevInputHeightOfs/(1944-1932)/2 */
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x002A0494,
+ 0x0F120A10, /* REG_TC_GP_PrevReqInputWidth //2576 */
+ 0x0F12078C, /* REG_TC_GP_PrevReqInputHeight //1932 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+ 0x002A02A6,
+ 0x0F120508, /* REG_0TC_PCFG_usWidth //1288 */
+ 0x0F1203C6, /* REG_0TC_PCFG_usHeight //966 */
+};
+
+/* Preview : 1288 x 772 */
+static const u32 s5k4ec_1288_772_preview[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+ 0x002A0250,
+ 0x0F120A10, /* REG_TC_GP_PrevReqInputWidth //2576 */
+ 0x0F120608, /* REG_TC_GP_PrevReqInputHeight //1544 */
+ 0x0F120008, /* REG_TC_GP_PrevInputWidthOfs //(2592-2576)/2 */
+ 0x0F1200C8, /* REG_TC_GP_PrevInputHeightOfs/(1944-1544/2 */
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x002A0494,
+ 0x0F120A10, /* REG_TC_GP_PrevReqInputWidth //2576 */
+ 0x0F120608, /* REG_TC_GP_PrevReqInputHeight //1544 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+ 0x002A02A6,
+ 0x0F120508, /* REG_0TC_PCFG_usWidth //1288 */
+ 0x0F120304, /* REG_0TC_PCFG_usHeight //772 */
+};
+
+/* Preview : 964 x 964 */
+static const u32 s5k4ec_964_964_preview[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002AE410,
+ 0x0F123E01,
+ 0x00287000,
+ 0x002A18AC,
+ 0x0F120060, /* senHal_uAddColsBin */
+ 0x0F120060, /* senHal_uAddColsNoBin */
+ 0x0F120A20, /* senHal_uMinColsBin */
+ 0x0F120AB0, /* senHal_uMinColsNoBin */
+ 0x002A0250,
+ 0x0F120788, /* REG_TC_GP_PrevReqInputWidth //1928 */
+ 0x0F120788, /* REG_TC_GP_PrevReqInputHeight //1928 */
+ 0x0F12014C, /* REG_TC_GP_PrevInputWidthOfs //(2592-1928)/2 */
+ 0x0F120008, /* REG_TC_GP_PrevInputHeightOfs/(1944-1928)/2 */
+ 0x002A0262,
+ 0x0F120001, /* REG_TC_GP_bUseReqInputInPre */
+ 0x002A0494,
+ 0x0F120788, /* REG_TC_GP_PrevReqInputWidth //1928 */
+ 0x0F120788, /* REG_TC_GP_PrevReqInputHeight //1928 */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
+ 0x0F120000, /* REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
+ 0x002A02A6,
+ 0x0F1203C4, /* REG_0TC_PCFG_usWidth //964 */
+ 0x0F1203C4, /* REG_0TC_PCFG_usHeight //964 */
+};
+
+static const u32 s5k4ec_ae_awb_lock_on[] = {
+ /* AE Lock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C5E,
+ 0x0F120000,
+
+ /* AWB Lock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C66,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_ae_lock_on_awb_lock_off[] = {
+ /* AE Lock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C5E,
+ 0x0F120000,
+
+ /* AWB Unlock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C66,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_ae_lock_off_awb_lock_on[] = {
+ /* AE Unlock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C5E,
+ 0x0F120001,
+
+ /* AWB Lock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C66,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_ae_awb_lock_off[] = {
+ /* AE Unlock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C5E,
+ 0x0F120001,
+
+ /* AWB Unlock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C66,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_ae_lock_on[] = {
+ /* AE Lock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C5E,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_awb_lock_on[] = {
+ /* AWB Lock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C66,
+ 0x0F120000,
+};
+
+static const u32 s5k4ec_ae_lock_off[] = {
+ /* AE Unlock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C5E,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_awb_lock_off[] = {
+ /* AWB Unlock */
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A2C66,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_format_yuv[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02AB,
+ 0x0F120005,
+};
+
+static const u32 s5k4ec_format_yuv_narrow[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02AB,
+ 0x0F120006,
+};
+
+static const u32 s5k4ec_format_mjpeg[] = {
+ 0xFCFCD000,
+ 0x00287000,
+ 0x002A02AB,
+ 0x0F120009,
+};
+
+static const u32 s5k4ec_get_ae_stable_status[] = {
+ 0x002E2C74,
+};
+
+static const u32 s5k4ec_get_light_level[] = {
+ 0x002C7000,
+ 0x002E2C18,
+};
+
+static const u32 s5k4ec_get_frame_duration_reg[] = {
+ 0x002C7000,
+ 0x002E2128,
+};
+
+static const u32 s5k4ec_get_1st_af_search_status[] = {
+ 0x002E2EEE,
+};
+
+static const u32 s5k4ec_get_2nd_af_search_status[] = {
+ 0x002E2207,
+};
+
+static const u32 s5k4ec_get_capture_status[] = {
+ 0x002E0530,
+};
+
+static const u32 s5k4ec_get_esd_status[] = {
+ 0xFCFCD000,
+ 0x002CD000,
+ 0x002E0060,
+};
+
+static const u32 s5k4ec_get_iso_reg[] = {
+ 0x002C7000,
+ 0x002E2BC4,
+};
+
+static const u32 s5k4ec_get_shutterspeed_reg[] = {
+ 0x002C7000,
+ 0x002E2134,
+};
+
+static const u32 s5k4ec_get_exptime_reg[] = {
+ 0x002C7000,
+ 0x002E2BC0,
+};
+
+static const u32 s5k4ec_get_frame_count_reg[] = {
+ 0x002C7000,
+ 0x002E1F6C,
+};
+
+static const u32 s5k4ec_get_preview_status_reg[] = {
+ 0x002C7000,
+ 0x002E0240,
+};
+
+static const u32 s5k4ec_get_pid_reg[] = {
+ 0x002C7000,
+ 0x002E01A4,
+};
+
+static const u32 s5k4ec_get_revision_reg[] = {
+ 0x002C7000,
+ 0x002E01A6,
+};
+
+static const u32 s5k4ec_get_modechange_check_reg[] = {
+ 0x002C7000,
+ 0x002E215F,
+};
+
+static const u32 s5k4ec_set_vendor_id_read_reg[] = {
+ 0xFCFCD000,
+ 0x0028D000,
+ 0x002A0012,
+ 0x0F120001,
+ 0x002A007A,
+ 0x0F120000,
+ 0x002AA000,
+ 0x0F120004,
+ 0x002AA002,
+ 0x0F120006,
+ 0x002AA000,
+ 0x0F120001,
+};
+
+static const u32 s5k4ec_get_vendor_id_read_reg[] = {
+ 0x002CD000,
+ 0x002EA006,
+};
+
+#endif
+
diff --git a/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.c b/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.c
new file mode 100644
index 00000000000..affb4956375
--- /dev/null
+++ b/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.c
@@ -0,0 +1,3726 @@
+/*
+ * Samsung SoC series Sensor driver
+ *
+ *
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/i2c.h>
+#include <linux/slab.h>
+#include <linux/irq.h>
+#include <linux/interrupt.h>
+#include <linux/delay.h>
+#include <linux/version.h>
+#include <linux/gpio.h>
+#include <linux/clk.h>
+#include <linux/regulator/consumer.h>
+#include <linux/videodev2.h>
+#include <linux/videodev2_exynos_camera.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/vmalloc.h>
+#include <linux/platform_device.h>
+#include <linux/workqueue.h>
+#include <media/v4l2-ctrls.h>
+#include <media/v4l2-device.h>
+#include <media/v4l2-subdev.h>
+#include <mach/exynos-fimc-is-sensor.h>
+
+#include "../fimc-is-core.h"
+#include "../fimc-is-device-sensor.h"
+#include "../fimc-is-resourcemgr.h"
+#include "fimc-is-device-4ec.h"
+#include "fimc-is-device-4ec-reg.h"
+
+#define SENSOR_NAME "S5K4ECGA"
+
+#define NORMAL_FRAME_DELAY_MS 100
+#define FLASH_AE_DELAY_MS 200
+#define MAX_SOFTLANDING_DELAY_MS 450
+#define CONST_SOFTLANDING_DELAY_AUTO_MS 120
+#define CONST_SOFTLANDING_DELAY_MACRO_MS 200
+#define POLL_TIME_MS 10
+#define CAPTURE_POLL_TIME_MS 1000
+
+#define FIRST_AF_SEARCH_COUNT 80
+#define SECOND_AF_SEARCH_COUNT 80
+#define AE_STABLE_SEARCH_COUNT 4
+#define LOW_LIGHT_LEVEL 0x13
+
+#define EV_MIN EV_MINUS_4
+#define CONTRAST_MIN CONTRAST_MINUS_2
+#define SATURATION_MIN SATURATION_MINUS_2
+#define SHARPNESS_MIN SHARPNESS_MINUS_2
+#define CID_INDEX(cid, min) ((cid) - (min))
+
+#define IS_LOWLIGHT(x) ((x <= LOW_LIGHT_LEVEL) ? 1 : 0)
+
+#define INIT_COMPLETION(x) ((x).done = 0)
+
+enum s5k4ec_sensor_setfile_index {
+ SETFILE_INDEX_4EC_DEFAULT = 0,
+ SETFILE_INDEX_MAX,
+};
+
+enum s5k4ec_preview_frame_size {
+ S5K4EC_PREVIEW_144_176 = 0, /* 144x176 */
+ S5K4EC_PREVIEW_QCIF, /* 176x144 */
+ S5K4EC_PREVIEW_CIF, /* 352x288 */
+ S5K4EC_PREVIEW_QVGA, /* 320x240 */
+ S5K4EC_PREVIEW_VGA, /* 640x480 */
+ S5K4EC_PREVIEW_704_576, /* 704x576 */
+ S5K4EC_PREVIEW_D1, /* 720x480 */
+ S5K4EC_PREVIEW_720_540, /* 720x540 */
+ S5K4EC_PREVIEW_720_720, /* 720x720 */
+ S5K4EC_PREVIEW_WVGA, /* 800x480 */
+ S5K4EC_PREVIEW_SVGA, /* 800x600 */
+ S5K4EC_PREVIEW_880, /* 880x720 */
+ S5K4EC_PREVIEW_960_540, /* 960x540 */
+ S5K4EC_PREVIEW_960_720, /* 960x720 */
+ S5K4EC_PREVIEW_960, /* 960x960 */
+ S5K4EC_PREVIEW_964_964, /* 964x964 */
+ S5K4EC_PREVIEW_WSVGA, /* 1024x600*/
+ S5K4EC_PREVIEW_1024, /* 1024x768*/
+ S5K4EC_PREVIEW_W1280, /* 1280x720*/
+ S5K4EC_PREVIEW_WXGA, /* 1280x768*/
+ S5K4EC_PREVIEW_1280, /* 1280x960*/
+ S5K4EC_PREVIEW_1288_772, /* 1288x772*/
+ S5K4EC_PREVIEW_1288_966, /* 1288x966*/
+ S5K4EC_PREVIEW_1600, /* 1600x1200*/
+ S5K4EC_PREVIEW_1920, /* 1920x1080*/
+ S5K4EC_PREVIEW_2048, /* 2048x1536*/
+ S5K4EC_PREVIEW_2560, /* 2560x1920*/
+ S5K4EC_PREVIEW_MAX,
+};
+
+enum s5k4ec_capture_frame_size {
+ S5K4EC_CAPTURE_QVGA = 0, /* 640x480 */
+ S5K4EC_CAPTURE_VGA, /* 320x240 */
+ S5K4EC_CAPTURE_WVGA, /* 800x480 */
+ S5K4EC_CAPTURE_SVGA, /* 800x600 */
+ S5K4EC_CAPTURE_WSVGA, /* 1024x600 */
+ S5K4EC_CAPTURE_XGA, /* 1024x768 */
+ S5K4EC_CAPTURE_1MP, /* 1280x960 */
+ S5K4EC_CAPTURE_W1MP, /* 1600x960 */
+ S5K4EC_CAPTURE_2MP, /* UXGA - 1600x1200 */
+ S5K4EC_CAPTURE_1632_1218, /* 1632x1218 */
+ S5K4EC_CAPTURE_1920_1920, /* 1920x1920 */
+ S5K4EC_CAPTURE_1928_1928, /* 1928x1928 */
+ S5K4EC_CAPTURE_2036_1526, /* 2036x1526 */
+ S5K4EC_CAPTURE_2048_1152, /* 2048x1152 */
+ S5K4EC_CAPTURE_2048_1232, /* 2048x1232 */
+ S5K4EC_CAPTURE_W2MP, /* 35mm Academy Offset Standard 1.66 */
+ /* 2048x1232, 2.4MP */
+ S5K4EC_CAPTURE_3MP, /* QXGA - 2048x1536 */
+ S5K4EC_CAPTURE_2560_1440, /* 2560x1440 */
+ S5K4EC_CAPTURE_W4MP, /* WQXGA - 2560x1536 */
+ S5K4EC_CAPTURE_5MP, /* 2560x1920 */
+ S5K4EC_CAPTURE_2576_1544, /* 2576x1544 */
+ S5K4EC_CAPTURE_2576_1932, /* 2576x1932 */
+ S5K4EC_CAPTURE_MAX,
+};
+
+enum s5k4ec_oprmode {
+ S5K4EC_OPRMODE_VIDEO = 0,
+ S5K4EC_OPRMODE_IMAGE = 1,
+ S5K4EC_OPRMODE_MAX,
+};
+
+enum s5k4ec_flicker_mode {
+ S5K4EC_FLICKER_50HZ_AUTO = 0,
+ S5K4EC_FLICKER_50HZ_FIXED,
+ S5K4EC_FLICKER_60HZ_AUTO,
+ S5K4EC_FLICKER_60HZ_FIXED,
+ S5K4EC_FLICKER_MAX,
+};
+
+enum s5k4ec_format {
+ S5K4EC_FORMAT_RGB565 = 0,
+ S5K4EC_FORMAT_RGB888 = 1,
+ S5K4EC_FORMAT_YUV = 5,
+ S5K4EC_FORMAT_YUV_NARROW = 6,
+ S5K4EC_FORMAT_BAYER = 7,
+ S5K4EC_FORMAT_MJPEG = 9,
+ S5K4EC_FORMAT_MAX,
+};
+
+struct s5k4ec_reg_tbl {
+ const u32 *reg[SETFILE_INDEX_MAX];
+ const char *setting_name[SETFILE_INDEX_MAX];
+ int array_size[SETFILE_INDEX_MAX];
+};
+
+static const struct s5k4ec_framesize preview_size_list[] = {
+ { S5K4EC_PREVIEW_144_176, 144, 176 },
+ { S5K4EC_PREVIEW_QCIF, 176, 144 },
+ { S5K4EC_PREVIEW_QVGA, 320, 240 },
+ { S5K4EC_PREVIEW_CIF, 352, 288 },
+ { S5K4EC_PREVIEW_VGA, 640, 480 },
+ { S5K4EC_PREVIEW_704_576, 704, 576 },
+ { S5K4EC_PREVIEW_D1, 720, 480 },
+ { S5K4EC_PREVIEW_720_540, 720, 540 },
+ { S5K4EC_PREVIEW_720_720, 720, 720 },
+ { S5K4EC_PREVIEW_WVGA, 800, 480 },
+ { S5K4EC_PREVIEW_960_540, 960, 540 },
+ { S5K4EC_PREVIEW_960_720, 960, 720 },
+ { S5K4EC_PREVIEW_960, 960, 960 },
+ { S5K4EC_PREVIEW_964_964, 964, 964 },
+ { S5K4EC_PREVIEW_1024, 1024, 768 },
+ { S5K4EC_PREVIEW_W1280, 1280, 720 },
+ { S5K4EC_PREVIEW_WXGA, 1280, 768 },
+ { S5K4EC_PREVIEW_1280, 1280, 960 },
+ { S5K4EC_PREVIEW_1288_772, 1288, 772 },
+ { S5K4EC_PREVIEW_1288_966, 1288, 966 },
+ { S5K4EC_PREVIEW_1920, 1920, 1080 },
+ { S5K4EC_PREVIEW_1600, 1600, 1200 },
+ { S5K4EC_PREVIEW_2048, 2048, 1536 },
+ { S5K4EC_PREVIEW_2560, 2560, 1920 },
+};
+
+static const struct s5k4ec_framesize capture_size_list[] = {
+ { S5K4EC_CAPTURE_VGA, 640, 480 },
+ { S5K4EC_CAPTURE_WVGA, 800, 480 },
+ { S5K4EC_CAPTURE_XGA, 1024, 768 },
+ { S5K4EC_CAPTURE_1MP, 1280, 960 },
+ { S5K4EC_CAPTURE_W1MP, 1600, 960 },
+ { S5K4EC_CAPTURE_2MP, 1600, 1200 },
+ { S5K4EC_CAPTURE_1632_1218, 1632, 1218 },
+ { S5K4EC_CAPTURE_1920_1920, 1920, 1920 },
+ { S5K4EC_CAPTURE_1928_1928, 1928, 1928 },
+ { S5K4EC_CAPTURE_2036_1526, 2036, 1526 },
+ { S5K4EC_CAPTURE_2048_1152, 2048, 1152 },
+ { S5K4EC_CAPTURE_2048_1232, 2048, 1232 },
+ { S5K4EC_CAPTURE_3MP, 2048, 1536 },
+ { S5K4EC_CAPTURE_2560_1440, 2560, 1440 },
+ { S5K4EC_CAPTURE_W4MP, 2560, 1536 },
+ { S5K4EC_CAPTURE_5MP, 2560, 1920 },
+ { S5K4EC_CAPTURE_2576_1544, 2576, 1544 },
+ { S5K4EC_CAPTURE_2576_1932, 2576, 1932 },
+};
+
+#define S5K4EC_REG_TBL(y) \
+ { \
+ .reg = { s5k4ec_##y, }, \
+ .setting_name = { "s5k4ec_"#y, }, \
+ .array_size = { ARRAY_SIZE(s5k4ec_##y), }, \
+ }
+
+struct s5k4ec_regs {
+ struct s5k4ec_reg_tbl ev[CID_INDEX(EV_MAX, EV_MIN)];
+ struct s5k4ec_reg_tbl metering[METERING_MAX];
+ struct s5k4ec_reg_tbl iso[ISO_MAX];
+ struct s5k4ec_reg_tbl effect[IMAGE_EFFECT_MAX];
+ struct s5k4ec_reg_tbl white_balance[WHITE_BALANCE_MAX];
+ struct s5k4ec_reg_tbl preview_size[S5K4EC_PREVIEW_MAX];
+ struct s5k4ec_reg_tbl capture_size[S5K4EC_CAPTURE_MAX];
+ struct s5k4ec_reg_tbl scene_mode[SCENE_MODE_MAX];
+ struct s5k4ec_reg_tbl saturation[SATURATION_MAX];
+ struct s5k4ec_reg_tbl contrast[CONTRAST_MAX];
+ struct s5k4ec_reg_tbl sharpness[SHARPNESS_MAX];
+ struct s5k4ec_reg_tbl anti_banding[S5K4EC_FLICKER_MAX];
+ struct s5k4ec_reg_tbl fps[FRAME_RATE_MAX];
+ struct s5k4ec_reg_tbl preview_return;
+ struct s5k4ec_reg_tbl jpeg_quality_high;
+ struct s5k4ec_reg_tbl jpeg_quality_normal;
+ struct s5k4ec_reg_tbl jpeg_quality_low;
+ struct s5k4ec_reg_tbl flash_start;
+ struct s5k4ec_reg_tbl flash_end;
+ struct s5k4ec_reg_tbl af_assist_flash_start;
+ struct s5k4ec_reg_tbl af_assist_flash_end;
+ struct s5k4ec_reg_tbl af_low_light_mode_on;
+ struct s5k4ec_reg_tbl af_low_light_mode_off;
+ struct s5k4ec_reg_tbl aeawb_lockunlock[AE_AWB_MAX];
+ struct s5k4ec_reg_tbl ae_lockunlock[AE_LOCK_MAX];
+ struct s5k4ec_reg_tbl awb_lockunlock[AWB_LOCK_MAX];
+ struct s5k4ec_reg_tbl format[S5K4EC_FORMAT_MAX];
+ struct s5k4ec_reg_tbl wdr_on;
+ struct s5k4ec_reg_tbl wdr_off;
+ struct s5k4ec_reg_tbl face_detection_on;
+ struct s5k4ec_reg_tbl face_detection_off;
+ struct s5k4ec_reg_tbl capture_start;
+ struct s5k4ec_reg_tbl normal_snapshot;
+ struct s5k4ec_reg_tbl camcorder;
+ struct s5k4ec_reg_tbl camcorder_disable;
+ struct s5k4ec_reg_tbl af_macro_mode_1;
+ struct s5k4ec_reg_tbl af_macro_mode_2;
+ struct s5k4ec_reg_tbl af_macro_mode_3;
+ struct s5k4ec_reg_tbl af_normal_mode_1;
+ struct s5k4ec_reg_tbl af_normal_mode_2;
+ struct s5k4ec_reg_tbl af_normal_mode_3;
+ struct s5k4ec_reg_tbl af_return_macro_position;
+ struct s5k4ec_reg_tbl single_af_start;
+ struct s5k4ec_reg_tbl single_af_off_1;
+ struct s5k4ec_reg_tbl single_af_off_2;
+ struct s5k4ec_reg_tbl continuous_af_on;
+ struct s5k4ec_reg_tbl continuous_af_off;
+ struct s5k4ec_reg_tbl dtp_start;
+ struct s5k4ec_reg_tbl dtp_stop;
+ struct s5k4ec_reg_tbl init_reg_1;
+ struct s5k4ec_reg_tbl init_reg_2;
+ struct s5k4ec_reg_tbl init_reg_3;
+ struct s5k4ec_reg_tbl init_reg_4;
+ struct s5k4ec_reg_tbl flash_init;
+ struct s5k4ec_reg_tbl reset_crop;
+ struct s5k4ec_reg_tbl fast_ae_on;
+ struct s5k4ec_reg_tbl fast_ae_off;
+ struct s5k4ec_reg_tbl get_ae_stable_status;
+ struct s5k4ec_reg_tbl get_light_level;
+ struct s5k4ec_reg_tbl get_frame_duration;
+ struct s5k4ec_reg_tbl get_1st_af_search_status;
+ struct s5k4ec_reg_tbl get_2nd_af_search_status;
+ struct s5k4ec_reg_tbl get_capture_status;
+ struct s5k4ec_reg_tbl get_esd_status;
+ struct s5k4ec_reg_tbl get_iso;
+ struct s5k4ec_reg_tbl get_shutterspeed;
+ struct s5k4ec_reg_tbl get_exptime;
+ struct s5k4ec_reg_tbl get_frame_count;
+ struct s5k4ec_reg_tbl get_preview_status;
+ struct s5k4ec_reg_tbl get_pid;
+ struct s5k4ec_reg_tbl get_revision;
+ struct s5k4ec_reg_tbl get_modechange_check;
+ struct s5k4ec_reg_tbl set_vendor_id_read;
+ struct s5k4ec_reg_tbl get_vendor_id_read;
+};
+
+static const struct s5k4ec_regs regs_set = {
+ .init_reg_1 = S5K4EC_REG_TBL(init_reg1),
+ .init_reg_2 = S5K4EC_REG_TBL(init_reg2),
+ .init_reg_3 = S5K4EC_REG_TBL(init_reg3),
+ .init_reg_4 = S5K4EC_REG_TBL(init_reg4),
+
+ .capture_start = S5K4EC_REG_TBL(capture_start),
+ .normal_snapshot = S5K4EC_REG_TBL(normal_snapshot),
+ .camcorder = S5K4EC_REG_TBL(camcorder),
+ .camcorder_disable = S5K4EC_REG_TBL(camcorder_disable),
+
+ .preview_size = {
+ [S5K4EC_PREVIEW_144_176] = S5K4EC_REG_TBL(144_176_preview),
+ [S5K4EC_PREVIEW_QCIF] = S5K4EC_REG_TBL(176_preview),
+ [S5K4EC_PREVIEW_QVGA] = S5K4EC_REG_TBL(qvga_preview),
+ [S5K4EC_PREVIEW_CIF] = S5K4EC_REG_TBL(352_preview),
+ [S5K4EC_PREVIEW_VGA] = S5K4EC_REG_TBL(640_preview),
+ [S5K4EC_PREVIEW_704_576] = S5K4EC_REG_TBL(704_576_preview),
+ [S5K4EC_PREVIEW_D1] = S5K4EC_REG_TBL(720_preview),
+ [S5K4EC_PREVIEW_720_540] = S5K4EC_REG_TBL(720_540_preview),
+ [S5K4EC_PREVIEW_720_720] = S5K4EC_REG_TBL(720_720_preview),
+ [S5K4EC_PREVIEW_WVGA] = S5K4EC_REG_TBL(wvga_preview),
+ [S5K4EC_PREVIEW_960_540] = S5K4EC_REG_TBL(960_540_preview),
+ [S5K4EC_PREVIEW_960_720] = S5K4EC_REG_TBL(960_720_preview),
+ [S5K4EC_PREVIEW_960] = S5K4EC_REG_TBL(960_preview),
+ [S5K4EC_PREVIEW_964_964] = S5K4EC_REG_TBL(964_964_preview),
+ [S5K4EC_PREVIEW_1024] = S5K4EC_REG_TBL(1024_preview),
+ [S5K4EC_PREVIEW_W1280] = S5K4EC_REG_TBL(w1280_preview),
+ [S5K4EC_PREVIEW_WXGA] = S5K4EC_REG_TBL(1280_wxga_preview),
+ [S5K4EC_PREVIEW_1288_772] = S5K4EC_REG_TBL(1288_772_preview),
+ [S5K4EC_PREVIEW_1288_966] = S5K4EC_REG_TBL(1288_966_preview),
+ [S5K4EC_PREVIEW_1280] = S5K4EC_REG_TBL(1280_preview),
+ [S5K4EC_PREVIEW_1600] = S5K4EC_REG_TBL(1600_preview),
+ [S5K4EC_PREVIEW_1920] = S5K4EC_REG_TBL(1920_preview),
+ [S5K4EC_PREVIEW_2048] = S5K4EC_REG_TBL(2048_preview),
+ [S5K4EC_PREVIEW_2560] = S5K4EC_REG_TBL(max_preview),
+ },
+
+ .capture_size = {
+ [S5K4EC_CAPTURE_VGA] = S5K4EC_REG_TBL(vga_capture),
+ [S5K4EC_CAPTURE_XGA] = S5K4EC_REG_TBL(xga_capture),
+ [S5K4EC_CAPTURE_WVGA] = S5K4EC_REG_TBL(wvga_capture),
+ [S5K4EC_CAPTURE_1MP] = S5K4EC_REG_TBL(1m_capture),
+ [S5K4EC_CAPTURE_W1MP] = S5K4EC_REG_TBL(w1mp_capture),
+ [S5K4EC_CAPTURE_2MP] = S5K4EC_REG_TBL(2m_capture),
+ [S5K4EC_CAPTURE_1632_1218] = S5K4EC_REG_TBL(1632_1218_capture),
+ [S5K4EC_CAPTURE_3MP] = S5K4EC_REG_TBL(3m_capture),
+ [S5K4EC_CAPTURE_1920_1920] = S5K4EC_REG_TBL(1920_1920_capture),
+ [S5K4EC_CAPTURE_1928_1928] = S5K4EC_REG_TBL(1928_1928_capture),
+ [S5K4EC_CAPTURE_2036_1526] = S5K4EC_REG_TBL(2036_1526_capture),
+ [S5K4EC_CAPTURE_2048_1152] = S5K4EC_REG_TBL(2048_1152_capture),
+ [S5K4EC_CAPTURE_2048_1232] = S5K4EC_REG_TBL(2048_1232_capture),
+ [S5K4EC_CAPTURE_W4MP] = S5K4EC_REG_TBL(w4mp_capture),
+ [S5K4EC_CAPTURE_2560_1440] = S5K4EC_REG_TBL(2560_1440_capture),
+ [S5K4EC_CAPTURE_5MP] = S5K4EC_REG_TBL(5m_capture),
+ [S5K4EC_CAPTURE_2576_1544] = S5K4EC_REG_TBL(2576_1544_capture),
+ [S5K4EC_CAPTURE_2576_1932] = S5K4EC_REG_TBL(2576_1932_capture),
+ },
+
+ .reset_crop = S5K4EC_REG_TBL(reset_crop),
+ .get_capture_status =
+ S5K4EC_REG_TBL(get_capture_status),
+ .ev = {
+ [CID_INDEX(EV_MINUS_4, EV_MIN)] = S5K4EC_REG_TBL(ev_minus_4),
+ [CID_INDEX(EV_MINUS_3, EV_MIN)] = S5K4EC_REG_TBL(ev_minus_3),
+ [CID_INDEX(EV_MINUS_2, EV_MIN)] = S5K4EC_REG_TBL(ev_minus_2),
+ [CID_INDEX(EV_MINUS_1, EV_MIN)] = S5K4EC_REG_TBL(ev_minus_1),
+ [CID_INDEX(EV_DEFAULT, EV_MIN)] = S5K4EC_REG_TBL(ev_default),
+ [CID_INDEX(EV_PLUS_1, EV_MIN)] = S5K4EC_REG_TBL(ev_plus_1),
+ [CID_INDEX(EV_PLUS_2, EV_MIN)] = S5K4EC_REG_TBL(ev_plus_2),
+ [CID_INDEX(EV_PLUS_3, EV_MIN)] = S5K4EC_REG_TBL(ev_plus_3),
+ [CID_INDEX(EV_PLUS_4, EV_MIN)] = S5K4EC_REG_TBL(ev_plus_4),
+ },
+ .metering = {
+ [METERING_MATRIX] = S5K4EC_REG_TBL(metering_matrix),
+ [METERING_CENTER] = S5K4EC_REG_TBL(metering_center),
+ [METERING_SPOT] = S5K4EC_REG_TBL(metering_spot),
+ },
+ .iso = {
+ [ISO_AUTO] = S5K4EC_REG_TBL(iso_auto),
+ [ISO_50] = S5K4EC_REG_TBL(iso_100), /* map to 100 */
+ [ISO_100] = S5K4EC_REG_TBL(iso_100),
+ [ISO_200] = S5K4EC_REG_TBL(iso_200),
+ [ISO_400] = S5K4EC_REG_TBL(iso_400),
+ [ISO_800] = S5K4EC_REG_TBL(iso_400), /* map to 400 */
+ [ISO_1600] = S5K4EC_REG_TBL(iso_400), /* map to 400 */
+ [ISO_SPORTS] = S5K4EC_REG_TBL(iso_auto),/* map to auto */
+ [ISO_NIGHT] = S5K4EC_REG_TBL(iso_auto), /* map to auto */
+ [ISO_MOVIE] = S5K4EC_REG_TBL(iso_auto), /* map to auto */
+ },
+ .effect = {
+ [IMAGE_EFFECT_NONE] = S5K4EC_REG_TBL(effect_normal),
+ [IMAGE_EFFECT_BNW] = S5K4EC_REG_TBL(effect_black_white),
+ [IMAGE_EFFECT_SEPIA] = S5K4EC_REG_TBL(effect_sepia),
+ [IMAGE_EFFECT_NEGATIVE] = S5K4EC_REG_TBL(effect_negative),
+ },
+ .white_balance = {
+ [WHITE_BALANCE_AUTO] = S5K4EC_REG_TBL(wb_auto),
+ [WHITE_BALANCE_SUNNY] = S5K4EC_REG_TBL(wb_sunny),
+ [WHITE_BALANCE_CLOUDY] = S5K4EC_REG_TBL(wb_cloudy),
+ [WHITE_BALANCE_TUNGSTEN] = S5K4EC_REG_TBL(wb_tungsten),
+ [WHITE_BALANCE_FLUORESCENT] = S5K4EC_REG_TBL(wb_fluorescent),
+ },
+ .scene_mode = {
+ [SCENE_MODE_NONE] = S5K4EC_REG_TBL(scene_default),
+ [SCENE_MODE_PORTRAIT] = S5K4EC_REG_TBL(scene_portrait),
+ [SCENE_MODE_NIGHTSHOT] = S5K4EC_REG_TBL(scene_nightshot),
+ [SCENE_MODE_BACK_LIGHT] = S5K4EC_REG_TBL(scene_backlight),
+ [SCENE_MODE_LANDSCAPE] = S5K4EC_REG_TBL(scene_landscape),
+ [SCENE_MODE_SPORTS] = S5K4EC_REG_TBL(scene_sports),
+ [SCENE_MODE_PARTY_INDOOR] = S5K4EC_REG_TBL(scene_party_indoor),
+ [SCENE_MODE_BEACH_SNOW] = S5K4EC_REG_TBL(scene_beach_snow),
+ [SCENE_MODE_SUNSET] = S5K4EC_REG_TBL(scene_sunset),
+ [SCENE_MODE_DUSK_DAWN] = S5K4EC_REG_TBL(scene_duskdawn),
+ [SCENE_MODE_FALL_COLOR] = S5K4EC_REG_TBL(scene_fall_color),
+ [SCENE_MODE_FIREWORKS] = S5K4EC_REG_TBL(scene_fireworks),
+ [SCENE_MODE_TEXT] = S5K4EC_REG_TBL(scene_text),
+ [SCENE_MODE_CANDLE_LIGHT] = S5K4EC_REG_TBL(scene_candle_light),
+ },
+ .saturation = {
+ [SATURATION_MINUS_2] = S5K4EC_REG_TBL(saturation_minus_2),
+ [SATURATION_MINUS_1] = S5K4EC_REG_TBL(saturation_minus_1),
+ [SATURATION_DEFAULT] = S5K4EC_REG_TBL(saturation_default),
+ [SATURATION_PLUS_1] = S5K4EC_REG_TBL(saturation_plus_1),
+ [SATURATION_PLUS_2] = S5K4EC_REG_TBL(saturation_plus_2),
+ },
+ .contrast = {
+ [CONTRAST_MINUS_2] = S5K4EC_REG_TBL(contrast_minus_2),
+ [CONTRAST_MINUS_1] = S5K4EC_REG_TBL(contrast_minus_1),
+ [CONTRAST_DEFAULT] = S5K4EC_REG_TBL(contrast_default),
+ [CONTRAST_PLUS_1] = S5K4EC_REG_TBL(contrast_plus_1),
+ [CONTRAST_PLUS_2] = S5K4EC_REG_TBL(contrast_plus_2),
+ },
+ .sharpness = {
+ [SHARPNESS_MINUS_2] = S5K4EC_REG_TBL(sharpness_minus_2),
+ [SHARPNESS_MINUS_1] = S5K4EC_REG_TBL(sharpness_minus_1),
+ [SHARPNESS_DEFAULT] = S5K4EC_REG_TBL(sharpness_default),
+ [SHARPNESS_PLUS_1] = S5K4EC_REG_TBL(sharpness_plus_1),
+ [SHARPNESS_PLUS_2] = S5K4EC_REG_TBL(sharpness_plus_2),
+ },
+ .anti_banding = {
+ [S5K4EC_FLICKER_50HZ_AUTO] = S5K4EC_REG_TBL(50hz_auto),
+ [S5K4EC_FLICKER_50HZ_FIXED] = S5K4EC_REG_TBL(50hz_fixed),
+ [S5K4EC_FLICKER_60HZ_AUTO] = S5K4EC_REG_TBL(60hz_auto),
+ [S5K4EC_FLICKER_60HZ_FIXED] = S5K4EC_REG_TBL(60hz_fixed),
+ },
+ .fps = {
+ [FRAME_RATE_AUTO] = S5K4EC_REG_TBL(fps_auto),
+ [FRAME_RATE_7] = S5K4EC_REG_TBL(fps_7),
+ [10] = S5K4EC_REG_TBL(fps_10),
+ [12] = S5K4EC_REG_TBL(fps_12),
+ [FRAME_RATE_15] = S5K4EC_REG_TBL(fps_15),
+ [FRAME_RATE_20] = S5K4EC_REG_TBL(fps_20),
+ [25] = S5K4EC_REG_TBL(fps_25),
+ [FRAME_RATE_30] = S5K4EC_REG_TBL(fps_30),
+ },
+ .preview_return = S5K4EC_REG_TBL(preview_return),
+ .jpeg_quality_high = S5K4EC_REG_TBL(jpeg_quality_high),
+ .jpeg_quality_normal = S5K4EC_REG_TBL(jpeg_quality_normal),
+ .jpeg_quality_low = S5K4EC_REG_TBL(jpeg_quality_low),
+ .flash_start = S5K4EC_REG_TBL(flash_start),
+ .flash_end = S5K4EC_REG_TBL(flash_end),
+ .af_assist_flash_start = S5K4EC_REG_TBL(pre_flash_start),
+ .af_assist_flash_end = S5K4EC_REG_TBL(pre_flash_end),
+ .af_low_light_mode_on = S5K4EC_REG_TBL(af_low_light_mode_on),
+ .af_low_light_mode_off = S5K4EC_REG_TBL(af_low_light_mode_off),
+ .aeawb_lockunlock = {
+ [AE_UNLOCK_AWB_UNLOCK] = S5K4EC_REG_TBL(ae_awb_lock_off),
+ [AE_LOCK_AWB_UNLOCK] = S5K4EC_REG_TBL(ae_lock_on_awb_lock_off),
+ [AE_UNLOCK_AWB_LOCK] = S5K4EC_REG_TBL(ae_lock_off_awb_lock_on),
+ [AE_LOCK_AWB_LOCK] = S5K4EC_REG_TBL(ae_awb_lock_on),
+ },
+ .ae_lockunlock = {
+ [AE_UNLOCK] = S5K4EC_REG_TBL(ae_lock_off),
+ [AE_LOCK] = S5K4EC_REG_TBL(ae_lock_on),
+ },
+ .awb_lockunlock = {
+ [AWB_UNLOCK] = S5K4EC_REG_TBL(awb_lock_off),
+ [AWB_LOCK] = S5K4EC_REG_TBL(awb_lock_on),
+ },
+ .format = {
+ [S5K4EC_FORMAT_YUV] = S5K4EC_REG_TBL(format_yuv),
+ [S5K4EC_FORMAT_YUV_NARROW] = S5K4EC_REG_TBL(format_yuv_narrow),
+ [S5K4EC_FORMAT_MJPEG] = S5K4EC_REG_TBL(format_mjpeg),
+ },
+ .wdr_on = S5K4EC_REG_TBL(wdr_on),
+ .wdr_off = S5K4EC_REG_TBL(wdr_off),
+ .face_detection_on = S5K4EC_REG_TBL(face_detection_on),
+ .face_detection_off = S5K4EC_REG_TBL(face_detection_off),
+ .af_macro_mode_1 = S5K4EC_REG_TBL(af_macro_mode_1),
+ .af_macro_mode_2 = S5K4EC_REG_TBL(af_macro_mode_2),
+ .af_macro_mode_3 = S5K4EC_REG_TBL(af_macro_mode_3),
+ .af_normal_mode_1 = S5K4EC_REG_TBL(af_normal_mode_1),
+ .af_normal_mode_2 = S5K4EC_REG_TBL(af_normal_mode_2),
+ .af_normal_mode_3 = S5K4EC_REG_TBL(af_normal_mode_3),
+ .af_return_macro_position =
+ S5K4EC_REG_TBL(af_return_macro_pos),
+ .single_af_start = S5K4EC_REG_TBL(single_af_start),
+ .single_af_off_1 = S5K4EC_REG_TBL(single_af_off_1),
+ .single_af_off_2 = S5K4EC_REG_TBL(single_af_off_2),
+ .continuous_af_on = S5K4EC_REG_TBL(continuous_af_on),
+ .continuous_af_off = S5K4EC_REG_TBL(continuous_af_off),
+ .dtp_start = S5K4EC_REG_TBL(dtp_init),
+ .dtp_stop = S5K4EC_REG_TBL(dtp_stop),
+
+ .flash_init = S5K4EC_REG_TBL(flash_init),
+ .reset_crop = S5K4EC_REG_TBL(reset_crop),
+ .fast_ae_on = S5K4EC_REG_TBL(fast_ae_on),
+ .fast_ae_off = S5K4EC_REG_TBL(fast_ae_off),
+ .get_ae_stable_status =
+ S5K4EC_REG_TBL(get_ae_stable_status),
+ .get_light_level = S5K4EC_REG_TBL(get_light_level),
+ .get_frame_duration = S5K4EC_REG_TBL(get_frame_duration_reg),
+ .get_1st_af_search_status =
+ S5K4EC_REG_TBL(get_1st_af_search_status),
+ .get_2nd_af_search_status =
+ S5K4EC_REG_TBL(get_2nd_af_search_status),
+ .get_capture_status =
+ S5K4EC_REG_TBL(get_capture_status),
+ .get_esd_status = S5K4EC_REG_TBL(get_esd_status),
+ .get_iso = S5K4EC_REG_TBL(get_iso_reg),
+ .get_shutterspeed =
+ S5K4EC_REG_TBL(get_shutterspeed_reg),
+ .get_exptime =
+ S5K4EC_REG_TBL(get_exptime_reg),
+ .get_frame_count =
+ S5K4EC_REG_TBL(get_frame_count_reg),
+ .get_preview_status =
+ S5K4EC_REG_TBL(get_preview_status_reg),
+ .get_pid =
+ S5K4EC_REG_TBL(get_pid_reg),
+ .get_revision =
+ S5K4EC_REG_TBL(get_revision_reg),
+ .get_modechange_check =
+ S5K4EC_REG_TBL(get_modechange_check_reg),
+ .set_vendor_id_read =
+ S5K4EC_REG_TBL(set_vendor_id_read_reg),
+ .get_vendor_id_read =
+ S5K4EC_REG_TBL(get_vendor_id_read_reg),
+};
+
+struct s5k4ec_regset {
+ u32 size;
+ u8 *data;
+};
+
+static struct fimc_is_sensor_cfg settle_4ec[] = {
+ FIMC_IS_SENSOR_CFG(640, 480, 30, 7, 0),
+};
+
+static inline struct fimc_is_module_enum *to_module
+ (struct v4l2_subdev *subdev)
+{
+ struct fimc_is_module_enum *module;
+ module = (struct fimc_is_module_enum *)v4l2_get_subdevdata(subdev);
+ return module;
+}
+
+static inline struct s5k4ec_state *to_state
+ (struct v4l2_subdev *subdev)
+{
+ struct fimc_is_module_enum *module;
+ module = (struct fimc_is_module_enum *)v4l2_get_subdevdata(subdev);
+ return (struct s5k4ec_state *)module->private_data;
+}
+
+static inline struct i2c_client *to_client
+ (struct v4l2_subdev *subdev)
+{
+ struct fimc_is_module_enum *module;
+ module = (struct fimc_is_module_enum *)v4l2_get_subdevdata(subdev);
+ return (struct i2c_client *)module->client;
+}
+
+#ifndef CONFIG_LOAD_FILE
+static int sensor_4ec_i2c_write(struct i2c_client *client,
+ u8 *buf, u32 size)
+{
+ int ret = 0;
+ int retry_count = 5;
+ struct i2c_msg msg = {client->addr, 0, size, buf};
+
+ do {
+ ret = i2c_transfer(client->adapter, &msg, 1);
+ if (likely(ret == 1))
+ break;
+ usleep_range(10000, 10001);
+ } while (retry_count-- > 0);
+
+ if (ret != 1) {
+ dev_err(&client->dev, "%s: I2C is not working.\n", __func__);
+ return -EIO;
+ }
+
+ return 0;
+}
+#endif
+
+static int sensor_4ec_i2c_write16(struct i2c_client *client,
+ u16 addr, u16 w_data)
+{
+ int retry_count = 5;
+ unsigned char buf[4];
+ struct i2c_msg msg = {client->addr, 0, 4, buf};
+ int ret = 0;
+
+ buf[0] = addr >> 8;
+ buf[1] = addr;
+ buf[2] = w_data >> 8;
+ buf[3] = w_data & 0xff;
+
+ do {
+ ret = i2c_transfer(client->adapter, &msg, 1);
+ if (likely(ret == 1))
+ break;
+ usleep_range(10000, 10001);
+ } while (retry_count-- > 0);
+
+ if (ret != 1) {
+ dev_err(&client->dev, "%s: I2C is not working.\n", __func__);
+ return -EIO;
+ }
+
+ return 0;
+}
+
+static int sensor_4ec_i2c_read16(struct i2c_client *client,
+ u16 subaddr, u16 *data)
+{
+ int err;
+ unsigned char buf[2];
+ struct i2c_msg msg[2];
+
+ cpu_to_be16s(&subaddr);
+
+ msg[0].addr = client->addr;
+ msg[0].flags = 0;
+ msg[0].len = 2;
+ msg[0].buf = (u8 *)&subaddr;
+
+ msg[1].addr = client->addr;
+ msg[1].flags = I2C_M_RD;
+ msg[1].len = 2;
+ msg[1].buf = buf;
+
+ err = i2c_transfer(client->adapter, msg, 2);
+ if (unlikely(err != 2)) {
+ dev_err(&client->dev,
+ "%s: register read fail\n", __func__);
+ return -EIO;
+ }
+
+ *data = ((buf[0] << 8) | buf[1]);
+
+ return 0;
+}
+
+#ifdef CONFIG_LOAD_FILE
+static char *sensor_4ec_regs_table;
+static int sensor_4ec_regs_table_size;
+
+int sensor_4ec_regs_table_init(void)
+{
+ struct file *filp;
+ char *dp;
+ long size;
+ loff_t pos;
+ int ret;
+ mm_segment_t fs = get_fs();
+
+ cam_info("E\n");
+
+ set_fs(get_ds());
+
+ filp = filp_open(LOAD_FILE_PATH, O_RDONLY, 0);
+
+ if (IS_ERR_OR_NULL(filp)) {
+ cam_err("file open error\n");
+ return PTR_ERR(filp);
+ }
+
+ size = filp->f_path.dentry->d_inode->i_size;
+ cam_dbg("size = %ld\n", size);
+ dp = vmalloc(size);
+ if (unlikely(!dp)) {
+ cam_err("Out of Memory\n");
+ filp_close(filp, current->files);
+ return -ENOMEM;
+ }
+
+ pos = 0;
+ memset(dp, 0, size);
+ ret = vfs_read(filp, (char __user *)dp, size, &pos);
+
+ if (unlikely(ret != size)) {
+ cam_err("Failed to read file ret = %d\n", ret);
+ /*kfree(dp);*/
+ vfree(dp);
+ filp_close(filp, current->files);
+ return -EINVAL;
+ }
+
+ filp_close(filp, current->files);
+
+ set_fs(fs);
+
+ sensor_4ec_regs_table = dp;
+
+ sensor_4ec_regs_table_size = size;
+
+ *((sensor_4ec_regs_table + sensor_4ec_regs_table_size) - 1) = '\0';
+
+ cam_info("X\n");
+ return 0;
+}
+
+static int sensor_4ec_write_regs_from_sd(struct v4l2_subdev *sd,
+ const char *name)
+{
+ char *start = NULL, *end = NULL, *reg = NULL, *temp_start = NULL;
+ u16 addr = 0, value = 0;
+ u16 data = 0;
+ char data_buf[7] = {0, };
+ u32 len = 0;
+ int err = 0;
+ int i;
+ int cnt = 0;
+ struct i2c_client *client = to_client(sd);
+
+ cam_dbg("E, sensor_4ec_regs_table_size - %d\n",
+ sensor_4ec_regs_table_size);
+
+ addr = value = 0;
+
+ *(data_buf + 6) = '\0';
+
+ start = strnstr(sensor_4ec_regs_table, name,
+ sensor_4ec_regs_table_size);
+
+ do {
+ if (*(start + strlen(name)) == '[') {
+ cam_dbg("break to search (%s)\n", name);
+ break;
+ }
+
+ cam_dbg("searching (%s)\n", name);
+ start = start + strlen(name);
+ start = strnstr(start, name, strlen(start));
+ } while (start != NULL);
+
+ if (unlikely(start == NULL)) {
+ cam_err("start is NULL\n");
+ return -ENODATA;
+ }
+
+ end = strnstr(start, "};", sensor_4ec_regs_table_size);
+ if (unlikely(end == NULL)) {
+ cam_err("end is NULL\n");
+ return -ENODATA;
+ }
+
+ while (1) {
+ if (cnt < 1) {
+ len = end - start;
+ temp_start = strnstr(start, "{", len);
+ if (!temp_start || (temp_start > end)) {
+ cam_dbg("write end of %s\n", name);
+ break;
+ }
+ start = temp_start;
+ }
+
+ len = end - start;
+ /* Find Address */
+ reg = strnstr(start, "0x", len);
+ if (!reg || (reg > end)) {
+ cam_dbg("write end of %s\n", name);
+ break;
+ }
+
+ start = (reg + 6);
+
+ /* Write Value to Address */
+ memcpy(data_buf, reg, 6);
+
+ err = kstrtou16(data_buf, 16, &data);
+ if (unlikely(err < 0)) {
+ cam_err("kstrtou16 failed\n");
+ return err;
+ }
+
+ addr = data;
+ len = end - start;
+
+ /* Write Value to Address */
+ memset(data_buf, 0, sizeof(char) * 7);
+ memcpy(data_buf, "0x", 2);
+ for (i = 0; i < 4; i++)
+ data_buf[i+2] = *(reg + 6 + i);
+
+ err = kstrtou16(data_buf, 16, &data);
+ if (unlikely(err < 0)) {
+ cam_err("kstrtou16 failed\n");
+ return err;
+ }
+
+ value = data;
+
+ if (addr == 0xFFFF) {
+ cam_dbg("use delay (%d ms) in I2C Write\n",
+ value);
+ msleep(value);
+ } else {
+ err = sensor_4ec_i2c_write16(client, addr, value);
+ cam_dbg("(%s)addr(0x%x)value(0x%x)\n",
+ name, addr, value);
+ if (unlikely(err < 0)) {
+ cam_err("register set failed\n");
+ return err;
+ }
+ }
+ cnt++;
+ }
+
+ cam_dbg("X\n");
+
+ return err;
+}
+#endif
+
+static int sensor_4ec_apply_set(struct v4l2_subdev *subdev,
+ const struct s5k4ec_reg_tbl *regset)
+{
+ int ret = 0;
+#ifndef CONFIG_LOAD_FILE
+ u16 addr, val;
+ u32 i;
+#endif
+ struct i2c_client *client = to_client(subdev);
+ struct s5k4ec_state *s5k4ec_state = to_state(subdev);
+ u32 set_idx = s5k4ec_state->setfile_index;
+
+ BUG_ON(!client);
+ BUG_ON(!regset);
+ BUG_ON(!s5k4ec_state);
+
+ mutex_lock(&s5k4ec_state->i2c_lock);
+
+ cam_info("E, setting_name : %s\n",
+ regset->setting_name[set_idx]);
+
+#ifdef CONFIG_LOAD_FILE
+ cam_dbg("COFIG_LOAD_FILE feature is enabled\n");
+ ret = sensor_4ec_write_regs_from_sd(subdev,
+ regset->setting_name[set_idx]);
+ if (unlikely(ret < 0)) {
+ cam_err("regs set(%s)apply is fail(%d)\n",
+ regset->setting_name[set_idx], ret);
+ goto p_err;
+ }
+#else
+ for (i = 0; i < regset->array_size[set_idx]; i++) {
+ addr = (regset->reg[set_idx][i] & 0xFFFF0000) >> 16;
+ val = regset->reg[set_idx][i] & 0x0000FFFF;
+ if (addr == 0xFFFF) {
+ cam_info("use delay (%d ms) in I2C Write\n",
+ val);
+ msleep(val);
+ } else {
+ ret = sensor_4ec_i2c_write16(client, addr, val);
+ if (unlikely(ret < 0)) {
+ cam_err("failed to set regs(0x%08lx, %d)(%d)",
+ (uintptr_t)regset->reg[set_idx],
+ regset->array_size[set_idx], ret);
+ goto p_err;
+ }
+ }
+ }
+#endif
+
+p_err:
+ mutex_unlock(&s5k4ec_state->i2c_lock);
+ return ret;
+}
+
+static int sensor_4ec_read_reg(struct v4l2_subdev *subdev,
+ const struct s5k4ec_reg_tbl *regset, u16 *data, u32 count)
+{
+ int ret = 0;
+ u16 addr, val;
+ u32 i;
+ struct i2c_client *client = to_client(subdev);
+ struct s5k4ec_state *s5k4ec_state = to_state(subdev);
+ u32 set_idx = s5k4ec_state->setfile_index;
+
+ BUG_ON(!client);
+ BUG_ON(!s5k4ec_state);
+
+ mutex_lock(&s5k4ec_state->i2c_lock);
+
+ /* Enter read mode */
+ sensor_4ec_i2c_write16(client, 0x002C, 0x7000);
+
+ for (i = 0; i < regset->array_size[set_idx]; i++) {
+ addr = (regset->reg[set_idx][i] & 0xFFFF0000) >> 16;
+ val = regset->reg[set_idx][i] & 0x0000FFFF;
+ ret = sensor_4ec_i2c_write16(client, addr, val);
+ if (unlikely(ret < 0)) {
+ cam_err("failed to set regs(0x%08lx, %d)(%d)",
+ (uintptr_t)regset->reg[set_idx],
+ regset->array_size[set_idx], ret);
+ goto p_err;
+ }
+ }
+
+ for (i = 0; i < count; i++, data++) {
+ ret = sensor_4ec_i2c_read16(client, 0x0F12, data);
+ if (unlikely(ret < 0)) {
+ cam_err("read reg fail(%d)", ret);
+ goto p_err;
+ }
+ }
+
+p_err:
+ /* restore write mode */
+ sensor_4ec_i2c_write16(client, 0x0028, 0x7000);
+ mutex_unlock(&s5k4ec_state->i2c_lock);
+ return ret;
+}
+
+static int sensor_4ec_read_addr(struct v4l2_subdev *subdev,
+ u16 addr, u16 *data, u32 count)
+{
+ int ret = 0;
+ u32 i;
+ struct i2c_client *client = to_client(subdev);
+ struct s5k4ec_state *s5k4ec_state = to_state(subdev);
+
+ BUG_ON(!client);
+ BUG_ON(!s5k4ec_state);
+
+ mutex_lock(&s5k4ec_state->i2c_lock);
+
+ /* Enter read mode */
+ sensor_4ec_i2c_write16(client, 0x002C, 0x7000);
+ sensor_4ec_i2c_write16(client, 0x002e, addr);
+
+ for (i = 0; i < count; i++, data++) {
+ ret = sensor_4ec_i2c_read16(client, 0x0F12, data);
+ if (unlikely(ret < 0)) {
+ cam_err("read reg fail(%d)", ret);
+ goto p_err;
+ }
+ }
+
+p_err:
+ /* restore write mode */
+ sensor_4ec_i2c_write16(client, 0x0028, 0x7000);
+ mutex_unlock(&s5k4ec_state->i2c_lock);
+ return ret;
+}
+
+static int sensor_4ec_s_flash(struct v4l2_subdev *subdev,
+ int value)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ cam_info("%d\n", value);
+
+ s5k4ec_state = to_state(subdev);
+
+ if (s5k4ec_state->flash_mode == value) {
+ cam_warn("already flash mode(%d) is set\n", value);
+ goto p_err;
+ }
+
+ if ((value >= FLASH_MODE_OFF) && (value <= FLASH_MODE_TORCH)) {
+ s5k4ec_state->flash_mode = value;
+ if (s5k4ec_state->flash_mode == FLASH_MODE_TORCH) {
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.flash_start);
+ } else {
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.flash_end);
+ }
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_white_balance(struct v4l2_subdev *subdev,
+ int wb)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", wb);
+
+ switch (wb) {
+ case WHITE_BALANCE_BASE:
+ case WHITE_BALANCE_AUTO:
+ s5k4ec_state->white_balance = WHITE_BALANCE_AUTO;
+ break;
+ case WHITE_BALANCE_SUNNY:
+ s5k4ec_state->white_balance = WHITE_BALANCE_SUNNY;
+ break;
+ case WHITE_BALANCE_CLOUDY:
+ s5k4ec_state->white_balance = WHITE_BALANCE_CLOUDY;
+ break;
+ case WHITE_BALANCE_TUNGSTEN:
+ s5k4ec_state->white_balance = WHITE_BALANCE_TUNGSTEN;
+ break;
+ case WHITE_BALANCE_FLUORESCENT:
+ s5k4ec_state->white_balance = WHITE_BALANCE_FLUORESCENT;
+ break;
+ default:
+ cam_err("%s: Not support.(%d)\n", __func__, wb);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.white_balance[s5k4ec_state->white_balance]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_effect(struct v4l2_subdev *subdev,
+ int effect)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", effect);
+
+ switch (effect) {
+ case IMAGE_EFFECT_BASE:
+ case IMAGE_EFFECT_NONE:
+ s5k4ec_state->effect = IMAGE_EFFECT_NONE;
+ break;
+ case IMAGE_EFFECT_BNW:
+ s5k4ec_state->effect = IMAGE_EFFECT_BNW;
+ break;
+ case IMAGE_EFFECT_SEPIA:
+ s5k4ec_state->effect = IMAGE_EFFECT_SEPIA;
+ break;
+ case IMAGE_EFFECT_NEGATIVE:
+ s5k4ec_state->effect = IMAGE_EFFECT_NEGATIVE;
+ break;
+ default:
+ cam_err("%s: Not support.(%d)\n", __func__, effect);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.effect[s5k4ec_state->effect]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_iso(struct v4l2_subdev *subdev, int iso)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", iso);
+
+ switch (iso) {
+ case ISO_AUTO:
+ s5k4ec_state->iso = ISO_AUTO;
+ break;
+ case ISO_50:
+ s5k4ec_state->iso = ISO_50;
+ break;
+ case ISO_100:
+ s5k4ec_state->iso = ISO_100;
+ break;
+ case ISO_200:
+ s5k4ec_state->iso = ISO_200;
+ break;
+ case ISO_400:
+ s5k4ec_state->iso = ISO_400;
+ break;
+ default:
+ cam_err("%s: Not support.(%d)\n", __func__, iso);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.iso[s5k4ec_state->iso]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_contrast(struct v4l2_subdev *subdev, int contrast)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", contrast);
+
+ if (contrast < CONTRAST_MINUS_2)
+ contrast = CONTRAST_MINUS_2;
+ else if (contrast > CONTRAST_PLUS_2)
+ contrast = CONTRAST_PLUS_2;
+
+ s5k4ec_state->contrast = CID_INDEX(contrast, CONTRAST_MIN);
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.contrast[s5k4ec_state->contrast]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_saturation(struct v4l2_subdev *subdev,
+ int saturation)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", saturation);
+
+ if (saturation < SATURATION_MINUS_2)
+ saturation = SATURATION_MINUS_2;
+ else if (saturation > SATURATION_PLUS_2)
+ saturation = SATURATION_PLUS_2;
+
+ s5k4ec_state->saturation = CID_INDEX(saturation,
+ SATURATION_MIN);
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.saturation[s5k4ec_state->saturation]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_sharpness(struct v4l2_subdev *subdev,
+ int sharpness)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", sharpness);
+
+ if (sharpness < SHARPNESS_MINUS_2)
+ sharpness = SHARPNESS_MINUS_2;
+ else if (sharpness > SHARPNESS_PLUS_2)
+ sharpness = SHARPNESS_PLUS_2;
+
+ s5k4ec_state->sharpness = CID_INDEX(sharpness, SHARPNESS_MIN);
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.sharpness[s5k4ec_state->sharpness]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_brightness(struct v4l2_subdev *subdev,
+ int brightness)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", brightness);
+
+ if (brightness < EV_MINUS_4)
+ brightness = EV_MINUS_4;
+ else if (brightness > EV_PLUS_4)
+ brightness = EV_PLUS_4;
+
+ s5k4ec_state->ev = CID_INDEX(brightness, EV_MIN);
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.ev[s5k4ec_state->ev]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_metering(struct v4l2_subdev *subdev,
+ int metering)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", metering);
+
+ switch (metering) {
+ case METERING_MATRIX:
+ case METERING_CENTER:
+ case METERING_SPOT:
+ s5k4ec_state->metering = metering;
+ break;
+ default:
+ cam_err("%s: Not support.(%d)\n", __func__, metering);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.metering[s5k4ec_state->metering]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static int sensor_4ec_s_scene_mode(struct v4l2_subdev *subdev,
+ int scene_mode)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", scene_mode);
+
+ switch (scene_mode) {
+ case SCENE_MODE_BASE:
+ case SCENE_MODE_NONE:
+ s5k4ec_state->scene_mode = SCENE_MODE_NONE;
+ break;
+ case SCENE_MODE_PORTRAIT:
+ s5k4ec_state->scene_mode = SCENE_MODE_PORTRAIT;
+ break;
+ case SCENE_MODE_NIGHTSHOT:
+ s5k4ec_state->scene_mode = SCENE_MODE_NIGHTSHOT;
+ break;
+ case SCENE_MODE_BACK_LIGHT:
+ s5k4ec_state->scene_mode = SCENE_MODE_BACK_LIGHT;
+ break;
+ case SCENE_MODE_LANDSCAPE:
+ s5k4ec_state->scene_mode = SCENE_MODE_LANDSCAPE;
+ break;
+ case SCENE_MODE_SPORTS:
+ s5k4ec_state->scene_mode = SCENE_MODE_SPORTS;
+ break;
+ case SCENE_MODE_PARTY_INDOOR:
+ s5k4ec_state->scene_mode = SCENE_MODE_PARTY_INDOOR;
+ break;
+ case SCENE_MODE_BEACH_SNOW:
+ s5k4ec_state->scene_mode = SCENE_MODE_BEACH_SNOW;
+ break;
+ case SCENE_MODE_SUNSET:
+ s5k4ec_state->scene_mode = SCENE_MODE_SUNSET;
+ break;
+ case SCENE_MODE_DUSK_DAWN:
+ s5k4ec_state->scene_mode = SCENE_MODE_DUSK_DAWN;
+ break;
+ case SCENE_MODE_FALL_COLOR:
+ s5k4ec_state->scene_mode = SCENE_MODE_FALL_COLOR;
+ break;
+ case SCENE_MODE_FIREWORKS:
+ s5k4ec_state->scene_mode = SCENE_MODE_FIREWORKS;
+ break;
+ case SCENE_MODE_TEXT:
+ s5k4ec_state->scene_mode = SCENE_MODE_TEXT;
+ break;
+ case SCENE_MODE_CANDLE_LIGHT:
+ s5k4ec_state->scene_mode = SCENE_MODE_CANDLE_LIGHT;
+ break;
+ default:
+ cam_err("%s: Not support.(%d)\n", __func__, scene_mode);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.scene_mode[s5k4ec_state->scene_mode]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+
+ return ret;
+}
+
+static bool sensor_4ec_check_focus_mode(struct v4l2_subdev *subdev,
+ s32 focus_mode)
+{
+ bool cancel_af = false;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+
+ cancel_af = (focus_mode & V4L2_FOCUS_MODE_DEFAULT);
+ focus_mode = (focus_mode & ~V4L2_FOCUS_MODE_DEFAULT);
+
+ cam_info("cancel_af(%d) focus_mode(%d)\n", cancel_af, focus_mode);
+
+ if ((s5k4ec_state->focus_mode != focus_mode) || cancel_af)
+ return true;
+ else
+ return false;
+}
+
+static int sensor_4ec_s_focus_mode(struct v4l2_subdev *subdev,
+ s32 focus_mode)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+
+ cam_info("( %d ) E\n", focus_mode);
+
+ mutex_lock(&s5k4ec_state->af_lock);
+
+ if (focus_mode == V4L2_FOCUS_MODE_AUTO) {
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.af_normal_mode_1);
+ msleep(100);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.af_normal_mode_2);
+ msleep(100);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.af_normal_mode_3);
+ msleep(100);
+ } else if (focus_mode == V4L2_FOCUS_MODE_MACRO) {
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.af_macro_mode_1);
+ msleep(100);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.af_macro_mode_2);
+ msleep(100);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.af_macro_mode_3);
+ msleep(100);
+ } else {
+ cam_warn("Not support.(%d)\n", focus_mode);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.continuous_af_on);
+
+p_err:
+ mutex_unlock(&s5k4ec_state->af_lock);
+
+ return ret;
+}
+
+static int sensor_4ec_ae_lock(struct v4l2_subdev *subdev, int ctrl)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", ctrl);
+
+ if (s5k4ec_state->ae_lock == ctrl) {
+ cam_info("same ae_lock mode( %d ). skip to set\n", ctrl);
+ return 0;
+ }
+
+ switch (ctrl) {
+ case AE_UNLOCK:
+ case AE_LOCK:
+ s5k4ec_state->ae_lock = ctrl;
+ break;
+ default:
+ cam_err("%s: Not support.(%d)\n", __func__, ctrl);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.ae_lockunlock[s5k4ec_state->ae_lock]);
+ if (ret) {
+ cam_err("%s: write cmd failed\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_awb_lock(struct v4l2_subdev *subdev, int ctrl)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d ) : E\n", ctrl);
+
+ if (s5k4ec_state->awb_lock == ctrl) {
+ cam_info("same awb_lock mode( %d ). skip to set\n", ctrl);
+ return 0;
+ }
+
+ if (s5k4ec_state->white_balance != WHITE_BALANCE_AUTO) {
+ cam_info("cannot lock/unlock awb on MWB mode\n");
+ return 0;
+ }
+
+ switch (ctrl) {
+ case AWB_UNLOCK:
+ case AWB_LOCK:
+ s5k4ec_state->awb_lock = ctrl;
+ break;
+ default:
+ cam_err("Not support.(%d)\n", ctrl);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.awb_lockunlock[s5k4ec_state->awb_lock]);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_ae_awb_lock(struct v4l2_subdev *subdev,
+ int ae_lock, int awb_lock)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ cam_info("( %d, %d ) : E\n", ae_lock, awb_lock);
+
+ ret = sensor_4ec_ae_lock(subdev, ae_lock);
+ if (ret) {
+ cam_err("ae_lock(%d) failed\n", ae_lock);
+ goto p_err;
+ }
+
+ ret = sensor_4ec_awb_lock(subdev, awb_lock);
+ if (ret) {
+ cam_err("awbe_lock(%d) failed\n", awb_lock);
+ goto p_err;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_read_sensor_version(struct v4l2_subdev *subdev,
+ u16 *sensor_version)
+{
+ int ret = 0;
+ struct i2c_client *client = to_client(subdev);
+ struct s5k4ec_state *s5k4ec_state = to_state(subdev);
+
+ BUG_ON(!client);
+ BUG_ON(!s5k4ec_state);
+
+ cam_info("E\n");
+
+ mutex_lock(&s5k4ec_state->i2c_lock);
+
+ ret = sensor_4ec_i2c_write16(client, 0xFCFC, 0xD000);
+ ret |= sensor_4ec_i2c_write16(client, 0x0028, 0xD000);
+ ret |= sensor_4ec_i2c_write16(client, 0x002A, 0x0012);
+ ret |= sensor_4ec_i2c_write16(client, 0x0F12, 0x0001);
+ ret |= sensor_4ec_i2c_write16(client, 0x002A, 0x007A);
+ ret |= sensor_4ec_i2c_write16(client, 0x0F12, 0x0000);
+ ret |= sensor_4ec_i2c_write16(client, 0x002A, 0xA000);
+ ret |= sensor_4ec_i2c_write16(client, 0x0F12, 0x0004);
+ ret |= sensor_4ec_i2c_write16(client, 0x002A, 0xA002);
+ ret |= sensor_4ec_i2c_write16(client, 0x0F12, 0x000F);
+ ret |= sensor_4ec_i2c_write16(client, 0x002A, 0xA000);
+ ret |= sensor_4ec_i2c_write16(client, 0x0F12, 0x0001);
+
+ usleep_range(200, 201);
+
+ ret |= sensor_4ec_i2c_write16(client, 0x002C, 0xD000);
+ ret |= sensor_4ec_i2c_write16(client, 0x002E, 0xA044);
+ ret |= sensor_4ec_i2c_read16(client, 0x0F12, sensor_version);
+
+ mutex_unlock(&s5k4ec_state->i2c_lock);
+
+ cam_info("X\n");
+ return ret;
+}
+
+static int sensor_4ec_init(struct v4l2_subdev *subdev, u32 val)
+{
+ int ret = 0;
+ struct fimc_is_module_enum *module;
+ struct s5k4ec_state *s5k4ec_state;
+ struct i2c_client *client;
+ u16 pid = 0;
+ u16 revision = 0;
+
+ BUG_ON(!subdev);
+
+ cam_info("start\n");
+
+ module = (struct fimc_is_module_enum *)v4l2_get_subdevdata(subdev);
+ s5k4ec_state = module->private_data;
+ client = module->client;
+
+ if (s5k4ec_state->sensor_version == 0) {
+ ret = sensor_4ec_read_sensor_version(subdev,
+ &s5k4ec_state->sensor_version);
+ if (ret < 0) {
+ cam_err("read_sensor_version failed\n");
+ goto p_err;
+ }
+
+ s5k4ec_state->setfile_index = SETFILE_INDEX_4EC_DEFAULT;
+ }
+
+ cam_info("Sensor Version 0x%04X\n", s5k4ec_state->sensor_version);
+ cam_info("setfile_index %d\n", s5k4ec_state->setfile_index);
+
+#ifdef CONFIG_LOAD_FILE
+ ret = sensor_4ec_regs_table_init();
+ if (ret < 0) {
+ cam_err("[CONFIG_LOAD_FILE] init fail\n");
+ goto p_err;
+ }
+#endif
+
+ /* init member */
+ s5k4ec_state->flash_mode = FLASH_MODE_OFF;
+ s5k4ec_state->flash_status = FLASH_STATUS_OFF;
+ s5k4ec_state->af_status = AF_NONE;
+ s5k4ec_state->af_result = AF_RESULT_NONE;
+ s5k4ec_state->sensor_af_in_low_light_mode = false;
+ s5k4ec_state->preview.width = 0;
+ s5k4ec_state->preview.height = 0;
+
+ ret = sensor_4ec_read_reg(subdev,
+ &regs_set.get_pid, &pid, 1);
+ if (ret < 0) {
+ cam_err("read PID failed\n");
+ goto p_err;
+ }
+
+ cam_info("pid 0x%04X\n", pid);
+
+ ret = sensor_4ec_read_reg(subdev,
+ &regs_set.get_revision, &revision, 1);
+ if (ret < 0) {
+ cam_err("read Version failed\n");
+ goto p_err;
+ }
+
+ cam_info("revision 0x%04X\n", revision);
+
+ msleep(20);
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.init_reg_1);
+ if (ret < 0) {
+ cam_err("init_reg_1 failed\n");
+ goto p_err;
+ }
+
+#ifdef CONFIG_LOAD_FILE
+ ret = sensor_4ec_apply_set(subdev, &regs_set.init_reg_2);
+ if (ret < 0) {
+ cam_err("init_reg_2 failed\n");
+ goto p_err;
+ }
+#else
+ {
+ struct s5k4ec_regset *reg_tbl;
+ struct s5k4ec_regset *regset;
+ struct s5k4ec_regset *end_regset;
+ u8 *regset_data;
+ u8 *dst_ptr;
+ const u32 *end_src_ptr;
+ bool flag_copied;
+ u32 set_idx = s5k4ec_state->setfile_index;
+ int init_reg_2_array_size =
+ regs_set.init_reg_2.array_size[set_idx];
+ int init_reg_2_size = init_reg_2_array_size * sizeof(u32);
+ const u32 *src_ptr = regs_set.init_reg_2.reg[set_idx];
+ u32 src_value;
+ int err;
+
+ cam_info("start reg 2 bursts\n");
+
+ regset_data = vmalloc(init_reg_2_size);
+ if (regset_data == NULL)
+ return -ENOMEM;
+ reg_tbl =
+ vmalloc((u32)sizeof(struct s5k4ec_regset)
+ * init_reg_2_size);
+ if (reg_tbl == NULL) {
+ kfree(regset_data);
+ return -ENOMEM;
+ }
+
+ dst_ptr = regset_data;
+ regset = reg_tbl;
+ end_src_ptr =
+ &regs_set.init_reg_2.reg
+ [set_idx][init_reg_2_array_size];
+
+ src_value = *src_ptr++;
+ while (src_ptr <= end_src_ptr) {
+ /* initial value for a regset */
+ regset->data = dst_ptr;
+ flag_copied = false;
+ *dst_ptr++ = src_value >> 24;
+ *dst_ptr++ = src_value >> 16;
+ *dst_ptr++ = src_value >> 8;
+ *dst_ptr++ = src_value;
+
+ /* check subsequent values for a data flag (starts with
+ 0x0F12) or something else */
+ do {
+ src_value = *src_ptr++;
+ if ((src_value & 0xFFFF0000) != 0x0F120000) {
+ /* src_value is start of next regset */
+ regset->size = dst_ptr - regset->data;
+ regset++;
+ break;
+ }
+ /* copy the 0x0F12 flag if not done already */
+ if (!flag_copied) {
+ *dst_ptr++ = src_value >> 24;
+ *dst_ptr++ = src_value >> 16;
+ flag_copied = true;
+ }
+ /* copy the data part */
+ *dst_ptr++ = src_value >> 8;
+ *dst_ptr++ = src_value;
+ } while (src_ptr < end_src_ptr);
+ }
+ cam_info("finished creating table\n");
+
+ end_regset = regset;
+ cam_info("1st regset = %p, last regset = %p, count = %d\n",
+ reg_tbl,
+ regset, end_regset - reg_tbl);
+ cam_info("regset_data = %p, end = %p, dst_ptr = %p\n",
+ regset_data,
+ regset_data + (init_reg_2_size * sizeof(u32)),
+ dst_ptr);
+
+ regset = reg_tbl;
+ cam_info("start writing init reg 2 bursts\n");
+ do {
+ if (regset->size > 4) {
+ /* write the address packet */
+ err = sensor_4ec_i2c_write(client,
+ regset->data, 4);
+ if (err)
+ break;
+ /* write the data in a burst */
+ err = sensor_4ec_i2c_write(client,
+ regset->data+4,
+ regset->size-4);
+
+ } else
+ err = sensor_4ec_i2c_write(client,
+ regset->data,
+ regset->size);
+ if (err)
+ break;
+ regset++;
+ } while (regset < end_regset);
+
+ cam_info("finished writing init reg 2 bursts\n");
+
+ vfree(regset_data);
+ vfree(reg_tbl);
+
+ if (err) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+ }
+#endif
+
+ s5k4ec_state->mode = S5K4EC_OPRMODE_VIDEO;
+ s5k4ec_state->sensor_mode = SENSOR_CAMERA;
+ s5k4ec_state->contrast = CONTRAST_DEFAULT;
+ s5k4ec_state->effect = IMAGE_EFFECT_NONE;
+ s5k4ec_state->ev = CID_INDEX(EV_DEFAULT, EV_MIN);
+ s5k4ec_state->flash_mode = FLASH_MODE_OFF;
+ s5k4ec_state->focus_mode = V4L2_FOCUS_MODE_AUTO;
+ s5k4ec_state->iso = ISO_AUTO;
+ s5k4ec_state->metering = METERING_CENTER;
+ s5k4ec_state->saturation = SATURATION_DEFAULT;
+ s5k4ec_state->scene_mode = SCENE_MODE_NONE;
+ s5k4ec_state->sharpness = SHARPNESS_DEFAULT;
+ s5k4ec_state->white_balance = WHITE_BALANCE_AUTO;
+ s5k4ec_state->fps = FRAME_RATE_AUTO;
+ s5k4ec_state->ae_lock = AE_UNLOCK;
+ s5k4ec_state->awb_lock = AWB_UNLOCK;
+ s5k4ec_state->user_ae_lock = AE_UNLOCK;
+ s5k4ec_state->user_awb_lock = AWB_UNLOCK;
+ s5k4ec_state->anti_banding = S5K4EC_FLICKER_50HZ_AUTO;
+ s5k4ec_state->light_level = 0;
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.effect[s5k4ec_state->effect]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.ev[s5k4ec_state->ev]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.iso[s5k4ec_state->iso]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.metering[s5k4ec_state->metering]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.scene_mode[s5k4ec_state->scene_mode]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.ae_lockunlock[s5k4ec_state->ae_lock]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.awb_lockunlock[s5k4ec_state->awb_lock]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.white_balance[s5k4ec_state->white_balance]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.fps[s5k4ec_state->fps]);
+ ret |= sensor_4ec_apply_set(subdev,
+ &regs_set.flash_init);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ ret = (schedule_work(&s5k4ec_state->set_focus_mode_work) == 1)
+ ? 0 : -EINVAL;
+ if (ret < 0)
+ cam_err("set focus mode fail.\n");
+
+ flush_work(&s5k4ec_state->set_focus_mode_work);
+
+ cam_info("(%d)\n", val);
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_apply_format(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_framesize const *size;
+ struct s5k4ec_state *s5k4ec_state;
+ u32 i;
+ u16 format = S5K4EC_FORMAT_YUV;
+ u32 pixelformat, width, height;
+
+ BUG_ON(!subdev);
+
+ cam_info("E\n");
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ pixelformat = s5k4ec_state->image.format.pixelformat;
+ width = s5k4ec_state->image.window.width;
+ height = s5k4ec_state->image.window.height;
+
+ if (pixelformat == V4L2_PIX_FMT_YUYV) {
+ format = S5K4EC_FORMAT_YUV;
+ } else if (pixelformat == V4L2_PIX_FMT_MJPEG) {
+ format = S5K4EC_FORMAT_MJPEG;
+ } else {
+ cam_err("invalid pixel format %x\n", pixelformat);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.format[format]);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ if (width == 2560 && height == 1920)
+ s5k4ec_state->mode = S5K4EC_OPRMODE_IMAGE;
+ else
+ s5k4ec_state->mode = S5K4EC_OPRMODE_VIDEO;
+
+ cam_info("camera_mode: %s\n",
+ (s5k4ec_state->mode == S5K4EC_OPRMODE_VIDEO) ?
+ "video mode" : "capture mode");
+
+ size = NULL;
+
+ if (s5k4ec_state->mode == S5K4EC_OPRMODE_IMAGE) {
+ for (i = 0; i < ARRAY_SIZE(capture_size_list); ++i) {
+ if ((capture_size_list[i].width == width) &&
+ (capture_size_list[i].height == height)) {
+ size = &capture_size_list[i];
+ break;
+ }
+ }
+
+ if (!size) {
+ cam_err("the capture size(%d x %d) is not supported",
+ width, height);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.capture_size[size->index]);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+ } else {
+ for (i = 0; i < ARRAY_SIZE(preview_size_list); ++i) {
+ if ((preview_size_list[i].width == width) &&
+ (preview_size_list[i].height == height)) {
+ size = &preview_size_list[i];
+ break;
+ }
+ }
+
+ if (!size) {
+ err("the preview size(%d x %d) is not supported",
+ width, height);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.preview_size[size->index]);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+ s5k4ec_state->preview.width = size->width;
+ s5k4ec_state->preview.height = size->height;
+ }
+
+ cam_info("stream size(%d) %d x %d, format=%x(%d)\n",
+ size->index, size->width, size->height, pixelformat, format);
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_format(struct v4l2_subdev *subdev,
+ struct v4l2_mbus_framefmt *fmt)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+ BUG_ON(!fmt);
+
+ cam_info("E\n");
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ s5k4ec_state->image.window.offs_h = 0;
+ s5k4ec_state->image.window.offs_v = 0;
+ s5k4ec_state->image.window.width = fmt->width;
+ s5k4ec_state->image.window.height = fmt->height;
+ s5k4ec_state->image.window.o_width = fmt->width;
+ s5k4ec_state->image.window.o_height = fmt->height;
+ s5k4ec_state->image.format.pixelformat = fmt->code;
+
+ ret = sensor_4ec_apply_format(subdev);
+ if (ret) {
+ err("%s: failed to apply format\n", __func__);
+ goto p_err;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_stream(struct v4l2_subdev *subdev,
+ int enable)
+{
+ int ret = 0;
+ struct fimc_is_module_enum *module;
+
+ cam_info("%d\n", enable);
+
+ module = (struct fimc_is_module_enum *)v4l2_get_subdevdata(subdev);
+ if (!module) {
+ cam_err("module is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ if (enable) {
+ ret = CALL_MOPS(module, stream_on, subdev);
+ if (ret) {
+ err("stream_on is fail(%d)", ret);
+ goto p_err;
+ }
+ } else {
+ ret = CALL_MOPS(module, stream_off, subdev);
+ if (ret) {
+ err("stream_off is fail(%d)", ret);
+ goto p_err;
+ }
+ }
+
+p_err:
+ return 0;
+}
+
+static int sensor_4ec_s_param(struct v4l2_subdev *subdev,
+ struct v4l2_streamparm *param)
+{
+ int ret = 0;
+ struct fimc_is_module_enum *module;
+ struct v4l2_captureparm *cp;
+ struct v4l2_fract *tpf;
+ u64 framerate;
+
+ BUG_ON(!subdev);
+ BUG_ON(!param);
+
+ cp = &param->parm.capture;
+ tpf = &cp->timeperframe;
+
+ if (!tpf->numerator) {
+ cam_err("numerator is 0");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ framerate = tpf->denominator;
+
+ module = (struct fimc_is_module_enum *)v4l2_get_subdevdata(subdev);
+ if (!module) {
+ cam_err("module is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = CALL_MOPS(module, s_duration, subdev, framerate);
+ if (ret) {
+ cam_err("s_duration is fail(%d)", ret);
+ goto p_err;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_stream_on(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ u16 read_value = 0;
+ u32 poll_time_ms = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ if (s5k4ec_state->mode == S5K4EC_OPRMODE_IMAGE) {
+ /* Do Flash work */
+ cam_dbg("light_level = 0x%08x\n",
+ s5k4ec_state->light_level);
+ s5k4ec_state->flash_fire = false;
+
+ switch (s5k4ec_state->flash_mode) {
+ case FLASH_MODE_AUTO:
+ if (!IS_LOWLIGHT(s5k4ec_state->light_level)) {
+ /* light level bright enough
+ * that we don't need flash
+ */
+ break;
+ }
+ /* fall through to flash start */
+ case FLASH_MODE_ON:
+ ret = sensor_4ec_main_flash_start(subdev);
+ if (ret) {
+ cam_err("main_flash_start failed\n");
+ goto p_err;
+ }
+
+ s5k4ec_state->flash_fire = true;
+ break;
+ default:
+ break;
+ }
+
+ /* Start Capture */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.capture_start);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ msleep(50);
+ poll_time_ms = 50;
+ do {
+ sensor_4ec_read_reg(subdev,
+ &regs_set.get_modechange_check, &read_value, 1);
+ if (read_value == 0x0100)
+ break;
+ msleep(POLL_TIME_MS);
+ poll_time_ms += POLL_TIME_MS;
+ } while (poll_time_ms < CAPTURE_POLL_TIME_MS);
+
+ cam_info("capture done check finished after %d ms\n",
+ poll_time_ms);
+ } else {
+ ret = sensor_4ec_apply_set(subdev, &regs_set.init_reg_3);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* Checking preveiw start (handshaking) */
+ do {
+ sensor_4ec_read_reg(subdev,
+ &regs_set.get_preview_status, &read_value, 1);
+ if (read_value == 0x00)
+ break;
+ cam_dbg("value = %d\n", read_value);
+ msleep(POLL_TIME_MS);
+ poll_time_ms += POLL_TIME_MS;
+ } while (poll_time_ms < CAPTURE_POLL_TIME_MS);
+
+ cam_info("preview on done check finished after %d ms\n",
+ poll_time_ms);
+ }
+
+ cam_info("stream on end\n");
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_stream_off(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ u16 read_value = 0;
+ u32 poll_time_ms = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ flush_work(&s5k4ec_state->set_focus_mode_work);
+ flush_work(&s5k4ec_state->af_work);
+ flush_work(&s5k4ec_state->af_stop_work);
+
+ if (s5k4ec_state->mode == S5K4EC_OPRMODE_IMAGE) {
+ u16 size[2] = {0, };
+
+ if (s5k4ec_state->flash_status == FLASH_STATUS_MAIN_ON) {
+ ret = sensor_4ec_main_flash_stop(subdev);
+ if (ret) {
+ cam_err("main_flash_stop failed\n");
+ goto p_err;
+ }
+ }
+
+ sensor_4ec_read_addr(subdev, 0x1d02, size, 2);
+ cam_info("Captured image width = %d, height = %d\n",
+ size[0], size[1]);
+
+ /* get exif information */
+ ret = sensor_4ec_get_exif(subdev);
+ if (ret) {
+ cam_err("get exif failed\n");
+ goto p_err;
+ }
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.init_reg_4);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* Checking preveiw start (handshaking) */
+ do {
+ sensor_4ec_read_reg(subdev,
+ &regs_set.get_preview_status, &read_value, 1);
+ if (read_value == 0x00)
+ break;
+ cam_dbg("value = %d\n", read_value);
+ msleep(POLL_TIME_MS);
+ poll_time_ms += POLL_TIME_MS;
+ } while (poll_time_ms < CAPTURE_POLL_TIME_MS);
+
+ cam_info("preview off done check finished after %d ms\n",
+ poll_time_ms);
+
+ cam_info("stream off\n");
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_get_exif_exptime(struct v4l2_subdev *subdev,
+ u32 *exp_time)
+{
+ int err = 0;
+ u16 exptime[2] = {0, };
+ u32 val;
+
+ err = sensor_4ec_read_reg(subdev,
+ &regs_set.get_exptime, exptime, 2);
+ if (err) {
+ cam_err("read exptime failed\n");
+ goto out;
+ }
+
+ cam_info("exp_time_den value(LSB) = %08X, (MSB) = %08X\n",
+ exptime[0], exptime[1]);
+
+ val = ((exptime[1] << 16) | (exptime[0] & 0xffff));
+ *exp_time = (val * 1000) / 400;
+
+ cam_info("exp_time_den value = %08X\n", *exp_time);
+
+out:
+ return err;
+}
+
+static int sensor_4ec_get_exif_iso(struct v4l2_subdev *subdev,
+ u16 *iso)
+{
+ int err = 0;
+ u16 gain_value = 0;
+ u16 gain[2] = {0, };
+
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ goto out;
+ }
+
+ err = sensor_4ec_read_reg(subdev, &regs_set.get_iso, gain, 2);
+ if (err) {
+ cam_err("read iso failed\n");
+ goto out;
+ }
+
+ cam_info("a_gain value = %08X, d_gain value = %08X\n",
+ gain[0], gain[1]);
+
+ gain_value = ((gain[0] * gain[1]) / 0x100) / 2;
+ cam_info("iso: gain_value=%08X\n", gain_value);
+
+ switch (s5k4ec_state->iso) {
+ case ISO_AUTO:
+ if (gain_value < 256) { /*0x100*/
+ *iso = 50;
+ } else if (gain_value < 512) { /*0x1ff*/
+ *iso = 100;
+ } else if (gain_value < 896) { /*0x37f*/
+ *iso = 200;
+ } else {
+ *iso = 400;
+ }
+ break;
+ case ISO_50:
+ *iso = 100; /* map to 100 */
+ break;
+ case ISO_100:
+ *iso = 100;
+ break;
+ case ISO_200:
+ *iso = 200;
+ break;
+ case ISO_400:
+ *iso = 400;
+ break;
+ default:
+ cam_err("Not support. id(%d)\n", s5k4ec_state->iso);
+ break;
+ }
+
+ cam_info("ISO=%d\n", *iso);
+out:
+ return err;
+}
+
+static void sensor_4ec_get_exif_flash(struct v4l2_subdev *subdev,
+ u16 *flash)
+{
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+
+ if (s5k4ec_state->flash_fire) {
+ *flash = EXIF_FLASH_FIRED;
+ s5k4ec_state->flash_fire = false;
+ } else {
+ *flash = 0;
+ }
+
+ cam_info("flash(%d)\n", *flash);
+}
+
+static int sensor_4ec_get_exif(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ u32 exp_time = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+
+ /* exposure time */
+ s5k4ec_state->exif.exp_time_num = 1;
+ s5k4ec_state->exif.exp_time_den = 0;
+ ret = sensor_4ec_get_exif_exptime(subdev, &exp_time);
+ if (exp_time)
+ s5k4ec_state->exif.exp_time_den = 1000 * 1000 / exp_time;
+ else
+ cam_err("EXIF: error, exposure time 0. %d\n", ret);
+
+ /* iso */
+ s5k4ec_state->exif.iso = 0;
+ ret |= sensor_4ec_get_exif_iso(subdev, &s5k4ec_state->exif.iso);
+
+ /* flash */
+ sensor_4ec_get_exif_flash(subdev, &s5k4ec_state->exif.flash);
+
+ return ret;
+}
+
+static u32 sensor_4ec_get_light_level(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ u16 light[2] = {0, };
+ u32 light_sum = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_read_reg(subdev,
+ &regs_set.get_light_level, light, 2);
+ if (ret) {
+ cam_err("read cmd failed\n");
+ goto p_err;
+ }
+
+ light_sum = (light[1] << 16) | light[0];
+
+ cam_info("light value = 0x%08x\n", light_sum);
+
+p_err:
+ return light_sum;
+}
+
+static u32 sensor_4ec_get_frame_duration(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ u16 frame_duration = 0;
+ u16 frame_duration_ms = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ ret = sensor_4ec_read_reg(subdev,
+ &regs_set.get_frame_duration, &frame_duration, 1);
+ if (ret) {
+ cam_err("read cmd failed\n");
+ goto p_err;
+ }
+
+ frame_duration_ms = frame_duration / 400;
+
+ cam_info("frame_duration_ms = %d ms\n", frame_duration_ms);
+
+p_err:
+ return frame_duration_ms;
+}
+
+static int sensor_4ec_pre_flash_start(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+ int count;
+ u16 read_value;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ /* AE / AWB Unlock */
+ ret = sensor_4ec_ae_awb_lock(subdev, AE_UNLOCK, AWB_UNLOCK);
+ if (ret) {
+ cam_err("AE/AWB unlock failed\n");
+ goto p_err;
+ }
+
+ /* Fast AE On */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.fast_ae_on);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* Pre Flash Start */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.af_assist_flash_start);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* Pre Flash On */
+ cam_info("Preflash On\n");
+
+ s5k4ec_state->flash_status = FLASH_STATUS_PRE_ON;
+
+ /* delay 400ms (SLSI value) and then poll to see if AE is stable.
+ * once it is stable, lock it and then return to do AF
+ */
+ msleep(400);
+
+ /* enter read mode */
+ for (count = 0; count < AE_STABLE_SEARCH_COUNT; count++) {
+ if (s5k4ec_state->af_status == AF_CANCEL)
+ break;
+ ret = sensor_4ec_read_reg(subdev,
+ &regs_set.get_ae_stable_status, &read_value, 1);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ cam_info("ae stable status = 0x%04x\n", read_value);
+ if (read_value == 0x1)
+ break;
+ msleep(NORMAL_FRAME_DELAY_MS);
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_pre_flash_stop(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ /* Fast AE Off */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.fast_ae_off);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* AE / AWB Unlock */
+ ret = sensor_4ec_ae_lock(subdev, AE_UNLOCK);
+ if (ret) {
+ cam_err("AE unlock failed\n");
+ goto p_err;
+ }
+
+ ret = sensor_4ec_awb_lock(subdev, AWB_UNLOCK);
+ if (ret) {
+ cam_err("AWB unlock failed\n");
+ goto p_err;
+ }
+
+ /* Pre Flash End */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.af_assist_flash_end);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* Pre Flash Off */
+ cam_info("Preflash Off\n");
+
+ s5k4ec_state->flash_status = FLASH_STATUS_OFF;
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_main_flash_start(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ /* Main Flash On */
+ cam_info("Main Flash On\n");
+
+ /* Main Flash Start */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.flash_start);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ s5k4ec_state->flash_status = FLASH_STATUS_MAIN_ON;
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_main_flash_stop(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ /* Main Flash End */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.flash_end);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* Main Flash Off */
+ cam_info("Main Flash Off\n");
+
+ s5k4ec_state->flash_status = FLASH_STATUS_OFF;
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_auto_focus_start(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ return -EINVAL;
+ }
+
+ mutex_lock(&s5k4ec_state->af_lock);
+
+ /* Check low light*/
+ s5k4ec_state->light_level = sensor_4ec_get_light_level(subdev);
+
+ switch (s5k4ec_state->flash_mode) {
+ case FLASH_MODE_AUTO:
+ if (!IS_LOWLIGHT(s5k4ec_state->light_level)) {
+ /* flash not needed */
+ break;
+ }
+ /* fall through to turn on flash for AF assist */
+ case FLASH_MODE_ON:
+ ret = sensor_4ec_pre_flash_start(subdev);
+ if (ret) {
+ cam_err("pre flash start failed\n");
+ goto p_err;
+ }
+
+ if (s5k4ec_state->af_status == AF_CANCEL) {
+ ret = sensor_4ec_pre_flash_stop(subdev);
+ if (ret) {
+ cam_err("pre flash stop failed\n");
+ goto p_err;
+ }
+ mutex_unlock(&s5k4ec_state->af_lock);
+ return 0;
+ }
+ break;
+ case FLASH_MODE_OFF:
+ break;
+ default:
+ cam_info("Unknown Flash mode 0x%x\n",
+ s5k4ec_state->flash_mode);
+ break;
+ }
+
+ /* AE / AWB Lock */
+ ret = sensor_4ec_ae_awb_lock(subdev, AE_LOCK, AWB_LOCK);
+ if (ret) {
+ cam_err("AE/AWB lock failed\n");
+ goto p_err;
+ }
+
+ if (!IS_LOWLIGHT(s5k4ec_state->light_level)) {
+ if (s5k4ec_state->sensor_af_in_low_light_mode) {
+ s5k4ec_state->sensor_af_in_low_light_mode = false;
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.af_low_light_mode_off);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+ }
+ } else {
+ if (!s5k4ec_state->sensor_af_in_low_light_mode) {
+ s5k4ec_state->sensor_af_in_low_light_mode = true;
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.af_low_light_mode_on);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+ }
+ }
+
+ /* Start AF */
+ s5k4ec_state->af_status = AF_START;
+ ret = sensor_4ec_apply_set(subdev, &regs_set.single_af_start);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ INIT_COMPLETION(s5k4ec_state->af_complete);
+
+ cam_info("AF started.\n");
+
+ ret = sensor_4ec_auto_focus_proc(subdev);
+ if (ret)
+ cam_err("auto_focus_proc failed\n");
+
+p_err:
+ mutex_unlock(&s5k4ec_state->af_lock);
+ return ret;
+}
+
+static int sensor_4ec_auto_focus_stop(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ return -EINVAL;
+ }
+
+ if (s5k4ec_state->af_status != AF_START) {
+ /* To do */
+ /* restore focus mode */
+ s5k4ec_state->af_status = AF_NONE;
+ s5k4ec_state->af_result = AF_RESULT_CANCELLED;
+ return 0;
+ }
+
+ /* Stop AF */
+ s5k4ec_state->af_status = AF_CANCEL;
+ s5k4ec_state->af_result = AF_RESULT_CANCELLED;
+
+ /* AE / AWB Unock */
+ ret = sensor_4ec_ae_awb_lock(subdev, AE_UNLOCK, AWB_UNLOCK);
+ if (ret) {
+ cam_err("AE / AWB Unock failed\n");
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.single_af_off_1);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ /* wait until the other thread has completed
+ * aborting the auto focus and restored state
+ */
+ cam_info("wait AF cancel done start\n");
+ wait_for_completion(&s5k4ec_state->af_complete);
+ cam_info("wait AF cancel done finished\n");
+
+ cam_info("AF stop.\n");
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_auto_focus_proc(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+ u16 read_value;
+ int count = 0;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ /* Get 1st AF result*/
+ msleep(NORMAL_FRAME_DELAY_MS * 2);
+
+ for (count = 0; count < FIRST_AF_SEARCH_COUNT; count++) {
+ if (s5k4ec_state->af_status == AF_CANCEL) {
+ cam_info("AF is cancelled while doing\n");
+ s5k4ec_state->af_result = AF_RESULT_FAILED;
+ goto check_flash;
+ }
+ sensor_4ec_read_reg(subdev,
+ &regs_set.get_1st_af_search_status, &read_value, 1);
+ cam_dbg("%s: 1st i2c_read --- read_value == 0x%x\n",
+ __func__, read_value);
+
+ /* check for success and failure cases. 0x1 is
+ * auto focus still in progress. 0x2 is success.
+ * 0x0,0x3,0x4,0x6 are all failures cases
+ * 0x8 is to receive new AF command during AF execution
+ */
+ if ((read_value != 0x01) && (read_value != 0x08))
+ break;
+ msleep(50);
+ }
+
+ if ((count >= FIRST_AF_SEARCH_COUNT) || (read_value != 0x02)) {
+ cam_info("1st scan timed out or failed, read_value=%d\n",
+ read_value);
+
+ /* we need a time to move the lens to default position */
+ msleep(350);
+
+ s5k4ec_state->af_result = AF_RESULT_FAILED;
+ goto check_flash;
+ }
+
+ cam_info("2nd AF search\n");
+
+ /* delay 1 frame time before checking for 2nd AF completion */
+ msleep(NORMAL_FRAME_DELAY_MS);
+
+ for (count = 0; count < SECOND_AF_SEARCH_COUNT; count++) {
+ if (s5k4ec_state->af_status == AF_CANCEL) {
+ cam_info("AF is cancelled while doing\n");
+ s5k4ec_state->af_result = AF_RESULT_FAILED;
+ goto check_flash;
+ }
+ sensor_4ec_read_reg(subdev,
+ &regs_set.get_2nd_af_search_status, &read_value, 1);
+ cam_dbg("%s: 2nd i2c_read --- read_value == 0x%x\n",
+ __func__, read_value);
+
+ /* Check result value. 0x0 means finished. */
+ if (read_value == 0x0)
+ break;
+
+ msleep(50);
+ }
+
+ if (count >= SECOND_AF_SEARCH_COUNT) {
+ cam_info("2nd scan timed out\n");
+ s5k4ec_state->af_result = AF_RESULT_FAILED;
+ goto check_flash;
+ }
+
+ cam_info("AF is success\n");
+ s5k4ec_state->af_result = AF_RESULT_SUCCESS;
+
+check_flash:
+
+ if (s5k4ec_state->flash_status == FLASH_STATUS_PRE_ON) {
+ /* Delay 1 frame time before turning off preflash
+ * to prevent black screen of preview on capturing image.
+ */
+ msleep(NORMAL_FRAME_DELAY_MS);
+ ret = sensor_4ec_pre_flash_stop(subdev);
+ if (ret)
+ cam_err("pre flash stop failed\n");
+ } else {
+ /* AE / AWB Unlock */
+ if (s5k4ec_state->user_ae_lock == AE_UNLOCK) {
+ ret = sensor_4ec_ae_lock(subdev, AE_UNLOCK);
+ if (ret)
+ cam_err("AE unlock failed\n");
+ }
+
+ if (s5k4ec_state->user_awb_lock == AWB_UNLOCK) {
+ ret = sensor_4ec_awb_lock(subdev, AWB_UNLOCK);
+ if (ret)
+ cam_err("AWB unlock failed\n");
+ }
+ }
+
+ cam_info("single AF finished\n");
+
+ s5k4ec_state->af_status = AF_NONE;
+ complete(&s5k4ec_state->af_complete);
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_auto_focus_softlanding(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+ u32 frame_delay, delay = 0;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ return -EINVAL;
+ }
+
+ /* Do soft landing */
+ ret = sensor_4ec_apply_set(subdev, &regs_set.af_normal_mode_1);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.af_normal_mode_2);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ frame_delay = sensor_4ec_get_frame_duration(subdev);
+
+ if (s5k4ec_state->focus_mode == V4L2_FOCUS_MODE_AUTO)
+ delay = CONST_SOFTLANDING_DELAY_AUTO_MS + frame_delay;
+ else if (s5k4ec_state->focus_mode == V4L2_FOCUS_MODE_MACRO)
+ delay = CONST_SOFTLANDING_DELAY_MACRO_MS + frame_delay * 3;
+
+ if (delay > MAX_SOFTLANDING_DELAY_MS)
+ delay = MAX_SOFTLANDING_DELAY_MS;
+
+ cam_info("softlanding delay = %d ms\n", delay);
+
+ /* Delay for moving lens */
+ msleep(delay);
+
+p_err:
+ return ret;
+}
+
+static void sensor_4ec_set_focus_work(struct work_struct *work)
+{
+ struct s5k4ec_state *s5k4ec_state =
+ container_of(work, struct s5k4ec_state,
+ set_focus_mode_work);
+
+ BUG_ON(!s5k4ec_state);
+
+ sensor_4ec_s_focus_mode(s5k4ec_state->subdev,
+ s5k4ec_state->focus_mode);
+}
+
+static void sensor_4ec_af_worker(struct work_struct *work)
+{
+ struct s5k4ec_state *s5k4ec_state =
+ container_of(work, struct s5k4ec_state, af_work);
+
+ BUG_ON(!s5k4ec_state);
+
+ sensor_4ec_auto_focus_start(s5k4ec_state->subdev);
+}
+
+static void sensor_4ec_af_stop_worker(struct work_struct *work)
+{
+ struct s5k4ec_state *s5k4ec_state =
+ container_of(work, struct s5k4ec_state, af_stop_work);
+
+ BUG_ON(!s5k4ec_state);
+
+ sensor_4ec_auto_focus_stop(s5k4ec_state->subdev);
+}
+
+static int sensor_4ec_verify_window(struct v4l2_subdev *subdev)
+{
+ int err = 0;
+ u16 outter_window_width = 0, outter_window_height = 0;
+ u16 inner_window_width = 0, inner_window_height = 0;
+ u16 read_value[2] = {0, };
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+
+ /* Set first widnow x width, y height */
+ err |= sensor_4ec_read_addr(subdev, 0x0298, read_value, 2);
+ outter_window_width = read_value[0];
+ outter_window_height = read_value[1];
+
+ memset(read_value, 0, sizeof(read_value));
+
+ /* Set second widnow x width, y height */
+ err |= sensor_4ec_read_addr(subdev, 0x02A0, read_value, 2);
+ inner_window_width = read_value[0];
+ inner_window_height = read_value[1];
+
+ if ((outter_window_width != FIRST_WINSIZE_X)
+ || (outter_window_height != FIRST_WINSIZE_Y)
+ || (inner_window_width != SCND_WINSIZE_X)
+ || (inner_window_height != SCND_WINSIZE_Y)) {
+ cam_err("invalid window size(0x%X, 0x%X) (0x%X, 0x%X)\n",
+ outter_window_width, outter_window_height,
+ inner_window_width, inner_window_height);
+ } else {
+ s5k4ec_state->focus.window_verified = 1;
+ cam_info("outter(0x%X, 0x%X) inner(0x%X, 0x%X)\n",
+ outter_window_width, outter_window_height,
+ inner_window_width, inner_window_height);
+ }
+
+ return err;
+}
+
+static int sensor_4ec_set_af_window(struct v4l2_subdev *subdev)
+{
+ int ret = 0;
+ struct i2c_client *client = to_client(subdev);
+ struct s5k4ec_state *s5k4ec_state;
+
+ struct s5k4ec_rect inner_window, outter_window;
+ struct s5k4ec_rect first_window, second_window;
+
+ s32 mapped_x = 0, mapped_y = 0;
+ u32 preview_width = 0, preview_height = 0;
+
+ u32 inner_half_width = 0, inner_half_height = 0;
+ u32 outter_half_width = 0, outter_half_height = 0;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+
+ inner_window.x = 0;
+ inner_window.y = 0;
+ inner_window.width = 0;
+ inner_window.height = 0;
+
+ outter_window.x = 0;
+ outter_window.y = 0;
+ outter_window.width = 0;
+ outter_window.height = 0;
+
+ first_window.x = 0;
+ first_window.y = 0;
+ first_window.width = 0;
+ first_window.height = 0;
+
+ second_window.x = 0;
+ second_window.y = 0;
+ second_window.width = 0;
+ second_window.height = 0;
+
+ mapped_x = s5k4ec_state->focus.pos_x;
+ mapped_y = s5k4ec_state->focus.pos_y;
+
+ preview_width = s5k4ec_state->preview.width;
+ preview_height = s5k4ec_state->preview.height;
+ if (unlikely(preview_width <= 0 || preview_height <= 0)) {
+ cam_warn("invalid preview_width(%d) or preview_height(%d)\n",
+ preview_width, preview_height);
+ goto p_err;
+ }
+
+ cam_info("E\n");
+
+ mutex_lock(&s5k4ec_state->af_lock);
+
+ /* Verify 1st, 2nd widnwo size */
+ if (!s5k4ec_state->focus.window_verified)
+ sensor_4ec_verify_window(subdev);
+
+ inner_window.width = SCND_WINSIZE_X * preview_width / 1024;
+ inner_window.height = SCND_WINSIZE_Y * preview_height / 1024;
+ outter_window.width = FIRST_WINSIZE_X * preview_width / 1024;
+ outter_window.height = FIRST_WINSIZE_Y * preview_height / 1024;
+ inner_half_width = inner_window.width / 2;
+ inner_half_height = inner_window.height / 2;
+ outter_half_width = outter_window.width / 2;
+ outter_half_height = outter_window.height / 2;
+
+ /* Get X */
+ if (mapped_x <= inner_half_width) {
+ inner_window.x = outter_window.x = 0;
+ } else if (mapped_x <= outter_half_width) {
+ inner_window.x = mapped_x - inner_half_width;
+ outter_window.x = 0;
+ } else if (mapped_x >= ((preview_width - 1) - inner_half_width)) {
+ inner_window.x = (preview_width - 1) - inner_window.width;
+ outter_window.x = (preview_width - 1) - outter_window.width;
+ } else if (mapped_x >= ((preview_width - 1) - outter_half_width)) {
+ inner_window.x = mapped_x - inner_half_width;
+ outter_window.x = (preview_width - 1) - outter_window.width;
+ } else {
+ inner_window.x = mapped_x - inner_half_width;
+ outter_window.x = mapped_x - outter_half_width;
+ }
+
+ /* Get Y */
+ if (mapped_y <= inner_half_height) {
+ inner_window.y = outter_window.y = 0;
+ } else if (mapped_y <= outter_half_height) {
+ inner_window.y = mapped_y - inner_half_height;
+ outter_window.y = 0;
+ } else if (mapped_y >= ((preview_height - 1) - inner_half_height)) {
+ inner_window.y = (preview_height - 1) - inner_window.height;
+ outter_window.y = (preview_height - 1) - outter_window.height;
+ } else if (mapped_y >= ((preview_height - 1) - outter_half_height)) {
+ inner_window.y = mapped_y - inner_half_height;
+ outter_window.y = (preview_height - 1) - outter_window.height;
+ } else {
+ inner_window.y = mapped_y - inner_half_height;
+ outter_window.y = mapped_y - outter_half_height;
+ }
+
+ cam_info("inner_window top=(%d,%d), bottom=(%d,%d)\n",
+ inner_window.x, inner_window.y,
+ inner_window.x + inner_window.width,
+ inner_window.y + inner_window.height);
+ cam_info("outter window top=(%d,%d), bottom(%d,%d)\n",
+ outter_window.x, outter_window.y,
+ outter_window.x + outter_window.width,
+ outter_window.y + outter_window.height);
+
+ second_window.x = inner_window.x * 1024 / preview_width;
+ second_window.y = inner_window.y * 1024 / preview_height;
+ first_window.x = outter_window.x * 1024 / preview_width;
+ first_window.y = outter_window.y * 1024 / preview_height;
+
+ cam_info("second_window top=(%d,%d)\n",
+ second_window.x, second_window.y);
+ cam_info("first_window top=(%d,%d)\n",
+ first_window.x, first_window.y);
+
+ mutex_lock(&s5k4ec_state->i2c_lock);
+
+ /* restore write mode */
+ sensor_4ec_i2c_write16(client, 0x0028, 0x7000);
+
+ /* Set first widnow x, y */
+ sensor_4ec_i2c_write16(client, 0x002A, 0x0294);
+ sensor_4ec_i2c_write16(client, 0x0F12, (u16)(first_window.x));
+
+ sensor_4ec_i2c_write16(client, 0x002A, 0x0296);
+ sensor_4ec_i2c_write16(client, 0x0F12, (u16)(first_window.y));
+
+ /* Set second widnow x, y */
+ sensor_4ec_i2c_write16(client, 0x002A, 0x029C);
+ sensor_4ec_i2c_write16(client, 0x0F12, (u16)(second_window.x));
+
+ sensor_4ec_i2c_write16(client, 0x002A, 0x029E);
+ sensor_4ec_i2c_write16(client, 0x0F12, (u16)(second_window.y));
+
+ /* Update AF window */
+ sensor_4ec_i2c_write16(client, 0x002A, 0x02A4);
+ sensor_4ec_i2c_write16(client, 0x0F12, 0x0001);
+
+ mutex_unlock(&s5k4ec_state->i2c_lock);
+
+ mutex_unlock(&s5k4ec_state->af_lock);
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_set_touch_af(struct v4l2_subdev *subdev, s32 val)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ if (val) {
+ if (mutex_is_locked(&s5k4ec_state->af_lock)) {
+ cam_warn("AF is still operating!\n");
+ return 0;
+ }
+ ret = sensor_4ec_set_af_window(subdev);
+ } else {
+ cam_info("set_touch_af: invalid value %d\n", val);
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_capture_mode(struct v4l2_subdev *subdev,
+ int value)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ cam_info("%d\n", value);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ if (value)
+ s5k4ec_state->mode = S5K4EC_OPRMODE_IMAGE;
+ else
+ s5k4ec_state->mode = S5K4EC_OPRMODE_VIDEO;
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_sensor_mode(struct v4l2_subdev *subdev,
+ int value)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ cam_info("%d\n", value);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ switch (value) {
+ case SENSOR_CAMERA:
+ cam_info("SENSOR_CAMERA mode\n");
+
+ if (s5k4ec_state->sensor_mode == SENSOR_MOVIE) {
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.camcorder_disable);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+ }
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.preview_return);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ s5k4ec_state->sensor_mode = SENSOR_CAMERA;
+ break;
+ case SENSOR_MOVIE:
+ cam_info("SENSOR_MOVIE mode\n");
+
+ ret = sensor_4ec_apply_set(subdev, &regs_set.camcorder);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+ s5k4ec_state->sensor_mode = SENSOR_MOVIE;
+ break;
+ default:
+ cam_err("invalid mode %d\n", value);
+ ret = -EINVAL;
+ break;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_duration(struct v4l2_subdev *subdev,
+ u64 duration)
+{
+ int ret = 0;
+ u32 framerate;
+ u32 frametime;
+ struct s5k4ec_state *s5k4ec_state;
+ struct i2c_client *client;
+
+ BUG_ON(!subdev);
+
+ cam_info("%lld\n", duration);
+
+ s5k4ec_state = to_state(subdev);
+ client = to_client(subdev);
+
+ framerate = duration;
+ if (framerate > 30) {
+ cam_err("framerate is invalid(%d)", framerate);
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ if (framerate == 0) {
+ cam_info("framerate=0, auto mode\n");
+ ret = sensor_4ec_apply_set(subdev,
+ &regs_set.fps[FRAME_RATE_AUTO]);
+ if (ret)
+ cam_err("write cmd failed\n");
+
+ return ret;
+ }
+
+ frametime = 10000 / (u32)framerate;
+ s5k4ec_state->fps = framerate;
+ cam_info("framerate=%d, frametime=%d\n", framerate, frametime);
+
+ sensor_4ec_i2c_write16(client, 0x0028, 0x7000);
+
+ /* REG_0TC_PCFG_usFrTimeType */
+ sensor_4ec_i2c_write16(client, 0x002A, 0x02BE);
+ sensor_4ec_i2c_write16(client, 0x0F12, 2); /* fixed framerate */
+ sensor_4ec_i2c_write16(client, 0x0F12, 1); /* best framerate */
+ sensor_4ec_i2c_write16(client, 0x0F12, frametime);
+ sensor_4ec_i2c_write16(client, 0x0F12, frametime);
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_power_off(struct v4l2_subdev *subdev,
+ u32 val)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!subdev);
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ flush_work(&s5k4ec_state->set_focus_mode_work);
+ flush_work(&s5k4ec_state->af_work);
+ flush_work(&s5k4ec_state->af_stop_work);
+
+ cam_info("%d\n", val);
+
+ ret = sensor_4ec_auto_focus_softlanding(subdev);
+ if (ret) {
+ cam_err("write cmd failed\n");
+ goto p_err;
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_set_focus_mode(struct v4l2_subdev *subdev,
+ int mode)
+{
+ struct s5k4ec_state *s5k4ec_state = NULL;
+ int busy = 0;
+ int ret = 0;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ busy = work_busy(&s5k4ec_state->set_focus_mode_work);
+ s5k4ec_state->focus_mode = (mode & ~V4L2_FOCUS_MODE_DEFAULT);
+
+ if (busy) {
+ cam_info("set_focus_mode_work is busy(%d)\n", busy);
+ if (!(mode & V4L2_FOCUS_MODE_DEFAULT)) {
+ flush_work(&s5k4ec_state->set_focus_mode_work);
+ ret = (schedule_work(&s5k4ec_state->set_focus_mode_work)
+ == 1) ? 0 : -EINVAL;
+ if (ret < 0)
+ cam_err("set focus mode fail.\n");
+ }
+ } else {
+ ret = (schedule_work(&s5k4ec_state->set_focus_mode_work)
+ == 1) ? 0 : -EINVAL;
+ if (ret < 0)
+ cam_err("set focus mode fail.\n");
+ }
+
+p_err:
+ return ret;
+}
+
+static int sensor_4ec_s_ctrl(struct v4l2_subdev *subdev,
+ struct v4l2_control *ctrl)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state = NULL;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ mutex_lock(&s5k4ec_state->ctrl_lock);
+
+ switch (ctrl->id) {
+ case V4L2_CID_CAMERA_TOUCH_AF_START_STOP:
+ ret = sensor_4ec_set_touch_af(subdev, 1);
+ if (ret < 0)
+ cam_err("sensor_4ec_set_touch_af fail.\n");
+ break;
+ case V4L2_CID_CAMERA_SCENE_MODE:
+ ret = sensor_4ec_s_scene_mode(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_scene_mode fail.\n");
+ break;
+ case V4L2_CID_CAMERA_FOCUS_MODE:
+ if (sensor_4ec_check_focus_mode(subdev, ctrl->value))
+ ret = sensor_4ec_set_focus_mode(subdev, ctrl->value);
+ else
+ cam_info("same focus mode( %d ). skip to set.\n",
+ ctrl->value);
+ break;
+ case V4L2_CID_CAMERA_WHITE_BALANCE:
+ ret = sensor_4ec_s_white_balance(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_white_balance fail.\n");
+ break;
+ case V4L2_CID_CAMERA_EFFECT:
+ ret = sensor_4ec_s_effect(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_effect fail.\n");
+ break;
+ case V4L2_CID_CAMERA_ISO:
+ ret = sensor_4ec_s_iso(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_iso fail.\n");
+ break;
+ case V4L2_CID_CAMERA_CONTRAST:
+ ret = sensor_4ec_s_contrast(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_contrast fail.\n");
+ break;
+ case V4L2_CID_CAMERA_SATURATION:
+ ret = sensor_4ec_s_saturation(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_saturation fail.\n");
+ break;
+ case V4L2_CID_CAMERA_SHARPNESS:
+ ret = sensor_4ec_s_sharpness(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_sharpness fail.\n");
+ break;
+ case V4L2_CID_CAMERA_BRIGHTNESS:
+ ret = sensor_4ec_s_brightness(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_brightness fail.\n");
+ break;
+ case V4L2_CID_CAMERA_METERING:
+ ret = sensor_4ec_s_metering(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("sensor_4ec_s_metering fail.\n");
+ break;
+ case V4L2_CID_CAMERA_POWER_OFF:
+ sensor_4ec_s_power_off(subdev, ctrl->value);
+ break;
+ case V4L2_CID_CAM_SINGLE_AUTO_FOCUS:
+ s5k4ec_state->af_result = AF_RESULT_DOING;
+ ret = (schedule_work(&s5k4ec_state->af_work) == 1) ?
+ 0 : -EINVAL;
+ if (ret < 0)
+ cam_err("Start auto focus fail.\n");
+ break;
+ case V4L2_CID_CAMERA_OBJECT_POSITION_X:
+ s5k4ec_state->focus.pos_x = ctrl->value;
+ break;
+ case V4L2_CID_CAMERA_OBJECT_POSITION_Y:
+ s5k4ec_state->focus.pos_y = ctrl->value;
+ break;
+ case V4L2_CID_CAMERA_AE_LOCK_UNLOCK:
+ s5k4ec_state->user_ae_lock = ctrl->value;
+ ret = sensor_4ec_ae_lock(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("ae_lock_unlock fail.\n");
+ break;
+ case V4L2_CID_CAMERA_AWB_LOCK_UNLOCK:
+ s5k4ec_state->user_awb_lock = ctrl->value;
+ ret = sensor_4ec_awb_lock(subdev, ctrl->value);
+ if (ret < 0)
+ cam_err("awb_lock_unlock fail.\n");
+ break;
+ case V4L2_CID_CAMERA_CAPTURE:
+ ret = sensor_4ec_s_capture_mode(subdev, ctrl->value);
+ if (ret) {
+ cam_err("sensor_4ec_s_capture_mode is fail(%d)", ret);
+ goto p_err;
+ }
+ break;
+ case V4L2_CID_CAMERA_FLASH_MODE:
+ ret = sensor_4ec_s_flash(subdev, ctrl->value);
+ if (ret) {
+ cam_err("sensor_4ec_s_flash is fail(%d)", ret);
+ goto p_err;
+ }
+ break;
+ case V4L2_CID_CAMERA_SENSOR_MODE:
+ ret = sensor_4ec_s_sensor_mode(subdev, ctrl->value);
+ if (ret) {
+ cam_err("sensor_4ec_s_sensor_mode is fail(%d)", ret);
+ goto p_err;
+ }
+ break;
+ default:
+ cam_err("invalid ioctl(0x%08X) is requested", ctrl->id);
+ /* ret = -EINVAL; */
+ break;
+ }
+
+p_err:
+ mutex_unlock(&s5k4ec_state->ctrl_lock);
+
+ return ret;
+}
+
+static int sensor_4ec_g_ctrl(struct v4l2_subdev *subdev,
+ struct v4l2_control *ctrl)
+{
+ int ret = 0;
+ struct s5k4ec_state *s5k4ec_state = NULL;
+
+ s5k4ec_state = to_state(subdev);
+ if (unlikely(!s5k4ec_state)) {
+ cam_err("s5k4ec_state is NULL");
+ ret = -EINVAL;
+ goto p_err;
+ }
+
+ mutex_lock(&s5k4ec_state->ctrl_lock);
+
+ switch (ctrl->id) {
+ case V4L2_CID_EXIF_EXPOSURE_TIME_DEN:
+ ctrl->value = s5k4ec_state->exif.exp_time_den;
+ cam_dbg("V4L2_CID_CAMERA_EXIF_EXPTIME :%d\n", ctrl->value);
+ break;
+ case V4L2_CID_EXIF_EXPOSURE_TIME_NUM:
+ ctrl->value = 1; /* s5k4ec_state->exif.exp_time_num */
+ cam_dbg("V4L2_CID_EXIF_EXPOSURE_TIME_NUM :%d\n", ctrl->value);
+ break;
+ case V4L2_CID_EXIF_SHUTTER_SPEED_NUM:
+ ctrl->value = 1;
+ cam_dbg("V4L2_CID_EXIF_SHUTTER_SPEED_NUM :%d\n", ctrl->value);
+ break;
+ case V4L2_CID_CAMERA_EXIF_FLASH:
+ ctrl->value = s5k4ec_state->exif.flash;
+ cam_dbg("V4L2_CID_CAMERA_EXIF_FLASH :%d\n", ctrl->value);
+ break;
+ case V4L2_CID_CAMERA_EXIF_ISO:
+ ctrl->value = s5k4ec_state->exif.iso;
+ cam_dbg("V4L2_CID_CAMERA_EXIF_ISO :%d\n", ctrl->value);
+ break;
+ case V4L2_CID_CAMERA_EXIF_TV:
+ ctrl->value = 0;
+ break;
+ case V4L2_CID_CAMERA_EXIF_BV:
+ ctrl->value = 0;
+ break;
+ case V4L2_CID_CAMERA_AUTO_FOCUS_DONE:
+ ctrl->value = s5k4ec_state->af_result;
+ cam_dbg("%s: af_result = %d\n", __func__, ctrl->value);
+ break;
+ default:
+ cam_err("invalid ioctl(0x%08X) is requested", ctrl->id);
+ ret = -EINVAL;
+ break;
+ }
+
+p_err:
+ mutex_unlock(&s5k4ec_state->ctrl_lock);
+
+ return ret;
+}
+
+static const struct v4l2_subdev_core_ops core_ops = {
+ .init = sensor_4ec_init,
+ .s_ctrl = sensor_4ec_s_ctrl,
+ .g_ctrl = sensor_4ec_g_ctrl
+};
+
+static const struct v4l2_subdev_video_ops video_ops = {
+ .s_stream = sensor_4ec_s_stream,
+ .s_parm = sensor_4ec_s_param,
+ .s_mbus_fmt = sensor_4ec_s_format
+};
+
+static const struct v4l2_subdev_ops subdev_ops = {
+ .core = &core_ops,
+ .video = &video_ops
+};
+
+struct fimc_is_sensor_ops module_4ec_ops = {
+ .stream_on = sensor_4ec_stream_on,
+ .stream_off = sensor_4ec_stream_off,
+ .s_duration = sensor_4ec_s_duration,
+};
+
+int sensor_4ec_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ int ret = 0;
+ struct fimc_is_core *core;
+ struct v4l2_subdev *subdev_module;
+ struct fimc_is_module_enum *module;
+ struct fimc_is_device_sensor *device;
+ struct s5k4ec_state *s5k4ec_state;
+
+ BUG_ON(!fimc_is_dev);
+
+ core = (struct fimc_is_core *)dev_get_drvdata(fimc_is_dev);
+ if (!core) {
+ err("core device is not yet probed");
+ return -EPROBE_DEFER;
+ }
+
+ device = &core->sensor[SENSOR_S5K4EC_INSTANCE];
+
+ device->pdata->gpio_cfg(device->pdev, SENSOR_SCENARIO_EXTERNAL, 0);
+ ret = sensor_4ec_i2c_write16(client, 0xFCFC, 0xD000);
+ if (ret < 0) {
+ cam_warn("failed to write to sensor(%d)", ret);
+ ret = -ENODEV;
+ goto p_err;
+ }
+
+ subdev_module = devm_kzalloc(&client->dev, sizeof(struct v4l2_subdev),
+ GFP_KERNEL);
+ if (!subdev_module) {
+ err("subdev_module is NULL");
+ ret = -ENOMEM;
+ goto p_err;
+ }
+
+ /* S5K4EC */
+ module = &device->module_enum[atomic_read
+ (&core->resourcemgr.rsccount_module)];
+ atomic_inc(&core->resourcemgr.rsccount_module);
+ module->id = SENSOR_S5K4EC_NAME;
+ module->subdev = subdev_module;
+ module->device = SENSOR_S5K4EC_INSTANCE;
+ module->ops = &module_4ec_ops;
+ module->client = client;
+ module->active_width = 1280;
+ module->active_height = 960;
+ module->pixel_width = module->active_width + 16;
+ module->pixel_height = module->active_height + 10;
+ module->max_framerate = 30;
+ module->position = SENSOR_POSITION_REAR;
+ module->setfile_name = "setfile_4ec.bin";
+ module->cfgs = ARRAY_SIZE(settle_4ec);
+ module->cfg = settle_4ec;
+ module->private_data = devm_kzalloc(&client->dev,
+ sizeof(struct s5k4ec_state), GFP_KERNEL);
+ if (!module->private_data) {
+ err("private_data is NULL");
+ ret = -ENOMEM;
+ goto p_err;
+ }
+ module->ext.mipi_lane_num = 2;
+
+#ifdef SENSOR_S5K4EC_DRIVING
+ v4l2_i2c_subdev_init(subdev_module, client, &subdev_ops);
+#else
+ v4l2_subdev_init(subdev_module, &subdev_ops);
+#endif
+ v4l2_set_subdevdata(subdev_module, module);
+ v4l2_set_subdev_hostdata(subdev_module, device);
+ snprintf(subdev_module->name, V4L2_SUBDEV_NAME_SIZE,
+ "sensor-subdev.%d", module->id);
+
+ s5k4ec_state = module->private_data;
+ s5k4ec_state->subdev = subdev_module;
+ mutex_init(&s5k4ec_state->ctrl_lock);
+ mutex_init(&s5k4ec_state->af_lock);
+ mutex_init(&s5k4ec_state->i2c_lock);
+ init_completion(&s5k4ec_state->af_complete);
+
+ INIT_WORK(&s5k4ec_state->set_focus_mode_work,
+ sensor_4ec_set_focus_work);
+ INIT_WORK(&s5k4ec_state->af_work, sensor_4ec_af_worker);
+ INIT_WORK(&s5k4ec_state->af_stop_work, sensor_4ec_af_stop_worker);
+
+p_err:
+ device->pdata->gpio_cfg(device->pdev, SENSOR_SCENARIO_EXTERNAL, 1);
+ cam_info("(%d)\n", ret);
+ return ret;
+}
+
+static int sensor_4ec_remove(struct i2c_client *client)
+{
+ int ret = 0;
+ struct v4l2_subdev *subdev = i2c_get_clientdata(client);
+
+ v4l2_device_unregister_subdev(subdev);
+
+ return ret;
+}
+
+#ifdef CONFIG_OF
+static const struct of_device_id fimc_is_sensor_4ec_match[] = {
+ {
+ .compatible = "samsung,exynos5-fimc-is-sensor-4ec",
+ },
+ {},
+};
+#endif
+
+static const struct i2c_device_id sensor_4ec_idt[] = {
+ { SENSOR_NAME, 0 },
+};
+
+static struct i2c_driver sensor_4ec_driver = {
+ .driver = {
+ .name = SENSOR_NAME,
+ .owner = THIS_MODULE,
+#ifdef CONFIG_OF
+ .of_match_table = fimc_is_sensor_4ec_match
+#endif
+ },
+ .probe = sensor_4ec_probe,
+ .remove = sensor_4ec_remove,
+ .id_table = sensor_4ec_idt
+};
+
+static int __init sensor_4ec_load(void)
+{
+ cam_info("\n");
+ return i2c_add_driver(&sensor_4ec_driver);
+}
+
+static void __exit sensor_4ec_unload(void)
+{
+ cam_info("\n");
+ i2c_del_driver(&sensor_4ec_driver);
+}
+
+module_init(sensor_4ec_load);
+module_exit(sensor_4ec_unload);
+
+MODULE_AUTHOR("Gilyeon lim");
+MODULE_AUTHOR("Sooman Jeong <sm5.jeong@samsung.com>");
+MODULE_DESCRIPTION("Sensor 4ec driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.h b/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.h
new file mode 100644
index 00000000000..548f36d981e
--- /dev/null
+++ b/drivers/media/platform/exynos/fimc-is-w1/sensor/fimc-is-device-4ec.h
@@ -0,0 +1,213 @@
+/*
+ * Samsung Exynos5 SoC series Sensor driver
+ *
+ *
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef FIMC_IS_DEVICE_4EC_H
+#define FIMC_IS_DEVICE_4EC_H
+
+/* #define CONFIG_LOAD_FILE */
+
+#if defined(CONFIG_LOAD_FILE)
+#include <linux/vmalloc.h>
+#include <linux/fs.h>
+#include <linux/mm.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
+
+#define LOAD_FILE_PATH "/root/fimc-is-device-4ec-reg.h"
+#endif
+
+#define SENSOR_S5K4EC_INSTANCE 0
+#define SENSOR_S5K4EC_NAME SENSOR_NAME_S5K4EC
+#define SENSOR_S5K4EC_DRIVING
+
+#define TAG_NAME "[4EC] "
+#define cam_err(fmt, ...) \
+ pr_err(TAG_NAME "[ERR]%s:%d: " fmt, __func__, __LINE__, \
+ ##__VA_ARGS__)
+#define cam_warn(fmt, ...) \
+ pr_warn(TAG_NAME "%s: " fmt, __func__, \
+ ##__VA_ARGS__)
+#define cam_info(fmt, ...) \
+ pr_info(TAG_NAME "%s: " fmt, __func__, \
+ ##__VA_ARGS__)
+#if defined(CONFIG_CAM_DEBUG)
+#define cam_dbg(fmt, ...) \
+ pr_debug(TAG_NAME fmt, ##__VA_ARGS__)
+#else
+#define cam_dbg(fmt, ...)
+#endif
+
+enum cam_scene_mode {
+ SCENE_MODE_BASE,
+ SCENE_MODE_NONE,
+ SCENE_MODE_PORTRAIT,
+ SCENE_MODE_NIGHTSHOT,
+ SCENE_MODE_BACK_LIGHT,
+ SCENE_MODE_LANDSCAPE,
+ SCENE_MODE_SPORTS,
+ SCENE_MODE_PARTY_INDOOR,
+ SCENE_MODE_BEACH_SNOW,
+ SCENE_MODE_SUNSET,
+ SCENE_MODE_DUSK_DAWN,
+ SCENE_MODE_FALL_COLOR,
+ SCENE_MODE_FIREWORKS,
+ SCENE_MODE_TEXT,
+ SCENE_MODE_CANDLE_LIGHT,
+ SCENE_MODE_LOW_LIGHT,
+ SCENE_MODE_MAX,
+};
+
+#define V4L2_CID_CAMERA_AE_LOCK_UNLOCK (V4L2_CID_PRIVATE_BASE + 144)
+enum v4l2_ae_lockunlock {
+ AE_UNLOCK = 0,
+ AE_LOCK,
+ AE_LOCK_MAX
+};
+
+#define V4L2_CID_CAMERA_AWB_LOCK_UNLOCK (V4L2_CID_PRIVATE_BASE + 145)
+enum v4l2_awb_lockunlock {
+ AWB_UNLOCK = 0,
+ AWB_LOCK,
+ AWB_LOCK_MAX
+};
+
+#define V4L2_FOCUS_MODE_DEFAULT (1 << 8)
+#define V4L2_CID_CAMERA_POWER_OFF (V4L2_CID_PRIVATE_BASE + 330)
+#define V4L2_CID_CAM_SINGLE_AUTO_FOCUS (V4L2_CID_CAMERA_CLASS_BASE + 63)
+#define V4L2_CID_EXIF_SHUTTER_SPEED_NUM (V4L2_CID_CAMERA_CLASS_BASE + 78)
+#define V4L2_CID_EXIF_SHUTTER_SPEED_DEN (V4L2_CID_CAMERA_CLASS_BASE + 79)
+#define V4L2_CID_EXIF_EXPOSURE_TIME_NUM (V4L2_CID_CAMERA_CLASS_BASE + 80)
+#define V4L2_CID_EXIF_EXPOSURE_TIME_DEN (V4L2_CID_CAMERA_CLASS_BASE + 81)
+#define V4L2_CID_CAMERA_AUTO_FOCUS_DONE (V4L2_CID_CAMERA_CLASS_BASE+69)
+
+enum {
+ AUTO_FOCUS_FAILED,
+ AUTO_FOCUS_DONE,
+ AUTO_FOCUS_CANCELLED,
+};
+
+enum af_operation_status {
+ AF_NONE = 0,
+ AF_START,
+ AF_CANCEL,
+};
+
+enum capture_flash_status {
+ FLASH_STATUS_OFF = 0,
+ FLASH_STATUS_PRE_ON,
+ FLASH_STATUS_MAIN_ON,
+};
+
+/* result values returned to HAL */
+enum af_result_status {
+ AF_RESULT_NONE = 0x00,
+ AF_RESULT_FAILED = 0x01,
+ AF_RESULT_SUCCESS = 0x02,
+ AF_RESULT_CANCELLED = 0x04,
+ AF_RESULT_DOING = 0x08
+};
+
+struct sensor4ec_exif {
+ u32 exp_time_num;
+ u32 exp_time_den;
+ u16 iso;
+ u16 flash;
+};
+
+/* EXIF - flash filed */
+#define EXIF_FLASH_OFF (0x00)
+#define EXIF_FLASH_FIRED (0x01)
+#define EXIF_FLASH_MODE_FIRING (0x01 << 3)
+#define EXIF_FLASH_MODE_SUPPRESSION (0x02 << 3)
+#define EXIF_FLASH_MODE_AUTO (0x03 << 3)
+
+/* Sensor AF first,second window size.
+ * we use constant values instead of reading sensor register */
+#define FIRST_WINSIZE_X 512
+#define FIRST_WINSIZE_Y 568
+#define SCND_WINSIZE_X 116 /* 230 -> 116 */
+#define SCND_WINSIZE_Y 306
+
+struct s5k4ec_rect {
+ s32 x;
+ s32 y;
+ u32 width;
+ u32 height;
+};
+
+struct s5k4ec_focus {
+ u32 pos_x;
+ u32 pos_y;
+ u32 touch:1;
+ u32 reset_done:1;
+ u32 window_verified:1; /* touch window verified */
+};
+
+struct s5k4ec_framesize {
+ u32 index;
+ u32 width;
+ u32 height;
+};
+
+struct s5k4ec_state {
+ struct v4l2_subdev *subdev;
+ struct fimc_is_image image;
+ struct mutex ctrl_lock;
+ struct mutex af_lock;
+ struct mutex i2c_lock;
+ struct completion af_complete;
+
+ u16 sensor_version;
+ u32 setfile_index;
+ u32 mode;
+ u32 contrast;
+ u32 effect;
+ u32 ev;
+ u32 flash_mode;
+ u32 focus_mode;
+ u32 iso;
+ u32 metering;
+ u32 saturation;
+ u32 scene_mode;
+ u32 sharpness;
+ u32 white_balance;
+ u32 anti_banding;
+ u32 fps;
+ bool ae_lock;
+ bool awb_lock;
+ bool user_ae_lock;
+ bool user_awb_lock;
+ bool sensor_af_in_low_light_mode;
+ bool flash_fire;
+ u32 sensor_mode;
+ u32 light_level;
+
+ enum af_operation_status af_status;
+ enum capture_flash_status flash_status;
+ u32 af_result;
+ struct work_struct set_focus_mode_work;
+ struct work_struct af_work;
+ struct work_struct af_stop_work;
+ struct sensor4ec_exif exif;
+ struct s5k4ec_focus focus;
+ struct s5k4ec_framesize preview;
+};
+
+static int sensor_4ec_pre_flash_start(struct v4l2_subdev *subdev);
+static int sensor_4ec_pre_flash_stop(struct v4l2_subdev *subdev);
+static int sensor_4ec_main_flash_start(struct v4l2_subdev *subdev);
+static int sensor_4ec_main_flash_stop(struct v4l2_subdev *subdev);
+static int sensor_4ec_auto_focus_proc(struct v4l2_subdev *subdev);
+static int sensor_4ec_get_exif(struct v4l2_subdev *subdev);
+int sensor_4ec_probe(struct i2c_client *client,
+ const struct i2c_device_id *id);
+
+#endif