[COMMON] media: fimc-is2: sensor: Add 2P6 sensor driver(code sync)
authorHyeonmyeong Choi <hyeon.choi@samsung.com>
Sat, 27 May 2017 07:34:31 +0000 (16:34 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:22:50 +0000 (20:22 +0300)
PR JIRA ID : CPR-38

Change-Id: I3a997ba62116432181f24038ec9061b594965258
Signed-off-by: Hyeonmyeong Choi <hyeon.choi@samsung.com>
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/Kconfig
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/Makefile
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setA.h
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setB.h [new file with mode: 0644]
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.c
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.h
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c

index 27dc15771c8b117a5783fd2c0a4e74f9678116e8..32f26ddd68889fa5d9406e578d9546fa98694f36 100644 (file)
@@ -51,6 +51,15 @@ config CAMERA_CIS_2P2_OBJ
                default n
                help
                  Use to build 2P2 camera sensor.
+
+config CAMERA_CIS_2P6_OBJ
+               bool "Use 2P6 camera cis"
+       depends on USE_DIRECT_IS_CONTROL
+       depends on CAMERA_CIS_SELECT
+               default n
+               help
+                 Use to build 2P6 camera sensor.
+
 config CAMERA_CIS_2P8_OBJ
                bool "Use 2P8 camera cis"
        depends on USE_DIRECT_IS_CONTROL
index af7396b7ad01b987c5bed3637ffd5237b1c7e4ba..c1dab9db4239c70e3d5c69b12209060485672e38 100644 (file)
@@ -5,6 +5,7 @@ obj-$(CONFIG_CAMERA_CIS_4H5YC_OBJ) += fimc-is-cis-4h5yc.o
 obj-$(CONFIG_CAMERA_CIS_4H5_OBJ) += fimc-is-cis-4h5.o
 obj-$(CONFIG_CAMERA_CIS_6B2_OBJ) += fimc-is-cis-6b2.o
 obj-$(CONFIG_CAMERA_CIS_2P2_OBJ) += fimc-is-cis-2p2.o
+obj-$(CONFIG_CAMERA_CIS_2P6_OBJ) += fimc-is-cis-2p6.o
 obj-$(CONFIG_CAMERA_CIS_2P8_OBJ) += fimc-is-cis-2p8.o
 obj-$(CONFIG_CAMERA_CIS_3P3_OBJ) += fimc-is-cis-3p3.o
 obj-$(CONFIG_CAMERA_CIS_3L2_OBJ) += fimc-is-cis-3l2.o
index 385833a882e59e518a658dba8e3f1bb4deec0b71..4d34ebddd7a40b3f7d04301ab32345d5c5c6776f 100644 (file)
  * published by the Free Software Foundation.
  */
 
-#ifndef FIMC_IS_CIS_3P8_SET_A_H
-#define FIMC_IS_CIS_3P8_SET_A_H
+#ifndef FIMC_IS_CIS_2P6_SET_A_H
+#define FIMC_IS_CIS_2P6_SET_A_H
 
 #include "fimc-is-cis.h"
-#include "fimc-is-cis-3p8.h"
+#include "fimc-is-cis-2p6.h"
 
-/* Use "setfile_A" as Non-PDAF setting */
-/* Reference : S5K3P8SN_EVT1.0_Ver_0.8_20160909.xlsx */
-
-const u32 sensor_3p8_setfile_A_Global[] = {
-       /* this commented data is set to cis_init
-        * it is for reset -> 3ms delay
-        * 0xFCFC, 0x4000, 0x2,
-        * 0x6010, 0x0001, 0x2,
-        */
-       0xFCFC, 0x4000, 0x02,
-       0x6214, 0x7971, 0x02,
-       0x6218, 0x7150, 0x02,
-
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x3074, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0449, 0x02,
-       0x6F12, 0x0348, 0x02,
-       0x6F12, 0x0860, 0x02,
-       0x6F12, 0xCA8D, 0x02,
-       0x6F12, 0x101A, 0x02,
-       0x6F12, 0x8880, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x52B8, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x31B8, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x1E80, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x70B5, 0x02,
-       0x6F12, 0x0646, 0x02,
-       0x6F12, 0x2C48, 0x02,
-       0x6F12, 0x0022, 0x02,
-       0x6F12, 0x0168, 0x02,
-       0x6F12, 0x0C0C, 0x02,
-       0x6F12, 0x8DB2, 0x02,
-       0x6F12, 0x2946, 0x02,
-       0x6F12, 0x2046, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x61F8, 0x02,
-       0x6F12, 0x3046, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x63F8, 0x02,
-       0x6F12, 0x2748, 0x02,
-       0x6F12, 0x284A, 0x02,
-       0x6F12, 0x0188, 0x02,
-       0x6F12, 0x1180, 0x02,
-       0x6F12, 0x911C, 0x02,
-       0x6F12, 0x4088, 0x02,
-       0x6F12, 0x0880, 0x02,
-       0x6F12, 0x2946, 0x02,
-       0x6F12, 0x2046, 0x02,
-       0x6F12, 0xBDE8, 0x02,
-       0x6F12, 0x7040, 0x02,
-       0x6F12, 0x0122, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x50B8, 0x02,
-       0x6F12, 0x2DE9, 0x02,
-       0x6F12, 0xF041, 0x02,
-       0x6F12, 0x8046, 0x02,
-       0x6F12, 0x1E48, 0x02,
-       0x6F12, 0x1446, 0x02,
-       0x6F12, 0x0F46, 0x02,
-       0x6F12, 0x4068, 0x02,
-       0x6F12, 0x0022, 0x02,
-       0x6F12, 0x85B2, 0x02,
-       0x6F12, 0x060C, 0x02,
-       0x6F12, 0x2946, 0x02,
-       0x6F12, 0x3046, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x42F8, 0x02,
-       0x6F12, 0x1B48, 0x02,
-       0x6F12, 0x408C, 0x02,
-       0x6F12, 0x70B1, 0x02,
-       0x6F12, 0x94F8, 0x02,
-       0x6F12, 0x6B00, 0x02,
-       0x6F12, 0x4021, 0x02,
-       0x6F12, 0xB1FB, 0x02,
-       0x6F12, 0xF0F0, 0x02,
-       0x6F12, 0x1849, 0x02,
-       0x6F12, 0x194A, 0x02,
-       0x6F12, 0x098B, 0x02,
-       0x6F12, 0x5288, 0x02,
-       0x6F12, 0x891A, 0x02,
-       0x6F12, 0x0901, 0x02,
-       0x6F12, 0x91FB, 0x02,
-       0x6F12, 0xF0F0, 0x02,
-       0x6F12, 0x84B2, 0x02,
-       0x6F12, 0x05E0, 0x02,
-       0x6F12, 0x2246, 0x02,
-       0x6F12, 0x3946, 0x02,
-       0x6F12, 0x4046, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x35F8, 0x02,
-       0x6F12, 0x0446, 0x02,
-       0x6F12, 0x0122, 0x02,
-       0x6F12, 0x2946, 0x02,
-       0x6F12, 0x3046, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x25F8, 0x02,
-       0x6F12, 0x2046, 0x02,
-       0x6F12, 0xBDE8, 0x02,
-       0x6F12, 0xF081, 0x02,
-       0x6F12, 0x10B5, 0x02,
-       0x6F12, 0x0022, 0x02,
-       0x6F12, 0xAFF2, 0x02,
-       0x6F12, 0x9B01, 0x02,
-       0x6F12, 0x0C48, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x2AF8, 0x02,
-       0x6F12, 0x054C, 0x02,
-       0x6F12, 0x0022, 0x02,
-       0x6F12, 0xAFF2, 0x02,
-       0x6F12, 0x6F01, 0x02,
-       0x6F12, 0x2060, 0x02,
-       0x6F12, 0x0948, 0x02,
-       0x6F12, 0x00F0, 0x02,
-       0x6F12, 0x22F8, 0x02,
-       0x6F12, 0x6060, 0x02,
-       0x6F12, 0x10BD, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x31B0, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x4A00, 0x02,
-       0x6F12, 0x4000, 0x02,
-       0x6F12, 0x950C, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x2F10, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x1B10, 0x02,
-       0x6F12, 0x2000, 0x02,
-       0x6F12, 0x2F40, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x15E9, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x9ECD, 0x02,
-       0x6F12, 0x40F2, 0x02,
-       0x6F12, 0xA37C, 0x02,
-       0x6F12, 0xC0F2, 0x02,
-       0x6F12, 0x000C, 0x02,
-       0x6F12, 0x6047, 0x02,
-       0x6F12, 0x41F2, 0x02,
-       0x6F12, 0xE95C, 0x02,
-       0x6F12, 0xC0F2, 0x02,
-       0x6F12, 0x000C, 0x02,
-       0x6F12, 0x6047, 0x02,
-       0x6F12, 0x49F6, 0x02,
-       0x6F12, 0xCD6C, 0x02,
-       0x6F12, 0xC0F2, 0x02,
-       0x6F12, 0x000C, 0x02,
-       0x6F12, 0x6047, 0x02,
-       0x6F12, 0x4DF6, 0x02,
-       0x6F12, 0x1B0C, 0x02,
-       0x6F12, 0xC0F2, 0x02,
-       0x6F12, 0x000C, 0x02,
-       0x6F12, 0x6047, 0x02,
-       0x6F12, 0x3108, 0x02,
-       0x6F12, 0x021C, 0x02,
-       0x6F12, 0x0000, 0x02,
-       0x6F12, 0x0005, 0x02,
-       0x602A, 0x4A00, 0x02,
-       0x6F12, 0x0088, 0x02,
-       0x6F12, 0x0D70, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
-       0x602A, 0x164C, 0x02,
-       0x6F12, 0x5555, 0x02,
-       0x602A, 0x164E, 0x02,
-       0x6F12, 0x5500, 0x02,
-       0x602A, 0x166C, 0x02,
-       0x6F12, 0x4040, 0x02,
-       0x602A, 0x166E, 0x02,
-       0x6F12, 0x4040, 0x02,
-       0xFCFC, 0x4000, 0x02,
-       0xF496, 0x0048, 0x02,
-       0xF470, 0x0008, 0x02,
-       0xF43A, 0x0015, 0x02,
-       0xF484, 0x0006, 0x02,
-       0xF442, 0x44C6, 0x02,
-       0xF408, 0xFFF7, 0x02,
-       0xF494, 0x0010, 0x02,
-       0xF4D4, 0x0038, 0x02,
-       0xF4D6, 0x0039, 0x02,
-       0xF4D8, 0x0034, 0x02,
-       0xF4DA, 0x0035, 0x02,
-       0xF4DC, 0x0038, 0x02,
-       0xF4DE, 0x0039, 0x02,
-       0xF47C, 0x001F, 0x02,
-       0xF62E, 0x00C5, 0x02,
-       0xF630, 0x00CD, 0x02,
-       0xF632, 0x00DD, 0x02,
-       0xF634, 0x00E5, 0x02,
-       0xF636, 0x00F5, 0x02,
-       0xF638, 0x00FD, 0x02,
-       0xF63A, 0x010D, 0x02,
-       0xF63C, 0x0115, 0x02,
-       0xF63E, 0x0125, 0x02,
-       0xF640, 0x012D, 0x02,
-       0x3070, 0x0000, 0x02,
-       0x31C0, 0x00C8, 0x02,
-       0x31A4, 0x0102, 0x02,
+const u32 sensor_2p6_setfile_A_Global[] = {
+/*TODO*/
 };
 
 /* 4:3 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_4624x3466_30fps[] = {
+const u32 sensor_2p6_setfile_A_4624x3468_30fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0000, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0021, 0x02,
+       0x3198, 0x0007, 0x02,
+       0x319A, 0x0100, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0008, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
        0x0344, 0x0010, 0x02,
+       0x0346, 0x000A, 0x02,
        0x0348, 0x121F, 0x02,
-       0x0346, 0x0010, 0x02,
-       0x034A, 0x0D9F, 0x02,
+       0x034A, 0x0D95, 0x02,
        0x034C, 0x1210, 0x02,
-       0x034E, 0x0D8A, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x0E3B, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
+       0x034E, 0x0D8C, 0x02,
        0x0900, 0x0011, 0x02,
        0x0380, 0x0001, 0x02,
        0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
        0x0386, 0x0001, 0x02,
        0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
-       0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x0130, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x0404, 0x0000, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0100, 0x02,
+       0x3AC4, 0x0100, 0x02,
+       0x3E04, 0x0100, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
 
 /* 16:9 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_4624x2602_30fps[] = {
+const u32 sensor_2p6_setfile_A_4624x2624_30fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0000, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0021, 0x02,
+       0x3198, 0x0007, 0x02,
+       0x319A, 0x0100, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0008, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
        0x0344, 0x0010, 0x02,
+       0x0346, 0x01B0, 0x02,
        0x0348, 0x121F, 0x02,
-       0x0346, 0x01C0, 0x02,
        0x034A, 0x0BEF, 0x02,
        0x034C, 0x1210, 0x02,
-       0x034E, 0x0A2A, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x0E3B, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
+       0x034E, 0x0A40, 0x02,
        0x0900, 0x0011, 0x02,
        0x0380, 0x0001, 0x02,
        0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
        0x0386, 0x0001, 0x02,
        0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
-       0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x0130, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
-};
-
-/* 4:3 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_2312x1732_60fps[] = {
-       0xFCFC, 0x4000, 0x02,
-       0x6214, 0x7971, 0x02,
-       0x6218, 0x7150, 0x02,
+       0x0404, 0x0000, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
        0x0136, 0x1A00, 0x02,
        0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
        0x3004, 0x0003, 0x02,
-       0x0344, 0x0010, 0x02,
-       0x0348, 0x121F, 0x02,
-       0x0346, 0x0010, 0x02,
-       0x034A, 0x0D9F, 0x02,
-       0x034C, 0x0908, 0x02,
-       0x034E, 0x06C4, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x071E, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0122, 0x02,
-       0x0380, 0x0001, 0x02,
-       0x0382, 0x0003, 0x02,
-       0x0384, 0x0001, 0x02,
-       0x0386, 0x0003, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
-       0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0100, 0x02,
+       0x3AC4, 0x0100, 0x02,
+       0x3E04, 0x0100, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
 
-#if defined(USE_SMART_BINNING_FRONT)
 /* 4:3 16x10 margin, EXTCLK 26Mhz */
-/* smart binning 2 mode setting */
-const u32 sensor_3p8_setfile_A_2312x1732_30fps[] = {
+const u32 sensor_2p6_setfile_A_2312x1734_30fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0031, 0x02,
+       0x3198, 0x0066, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0004, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
        0x0344, 0x0010, 0x02,
+       0x0346, 0x000A, 0x02,
        0x0348, 0x121F, 0x02,
-       0x0346, 0x0010, 0x02,
-       0x034A, 0x0D9F, 0x02,
+       0x034A, 0x0D95, 0x02,
        0x034C, 0x0908, 0x02,
-       0x034E, 0x06C4, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x0E3B, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0011, 0x02,
+       0x034E, 0x06C6, 0x02,
+       0x0900, 0x0112, 0x02,
        0x0380, 0x0001, 0x02,
        0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
-       0x0386, 0x0001, 0x02,
-       0x0400, 0x0002, 0x02,
+       0x0386, 0x0003, 0x02,
+       0x0400, 0x0001, 0x02,
        0x0404, 0x0020, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
-       0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0xA060, 0x02,
-};
-#else  /*original binning*/
-/* 4:3 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_2312x1732_30fps[] = {
-       0xFCFC, 0x4000, 0x02,
-       0x6214, 0x7971, 0x02,
-       0x6218, 0x7150, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
        0x0136, 0x1A00, 0x02,
        0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
        0x3004, 0x0003, 0x02,
-       0x0344, 0x0010, 0x02,
-       0x0348, 0x121F, 0x02,
-       0x0346, 0x0010, 0x02,
-       0x034A, 0x0D9F, 0x02,
-       0x034C, 0x0908, 0x02,
-       0x034E, 0x06C4, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x0E3B, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0122, 0x02,
-       0x0380, 0x0001, 0x02,
-       0x0382, 0x0003, 0x02,
-       0x0384, 0x0001, 0x02,
-       0x0386, 0x0003, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
        0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
-#endif
 
 /* 4:3 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_2312x1732_15fps[] = {
+const u32 sensor_2p6_setfile_A_2312x1734_15fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0031, 0x02,
+       0x3198, 0x0066, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0004, 0x02,
+       0x0340, 0x1C34, 0x02,
+       0x0342, 0x1428, 0x02,
        0x0344, 0x0010, 0x02,
+       0x0346, 0x000A, 0x02,
        0x0348, 0x121F, 0x02,
-       0x0346, 0x0010, 0x02,
-       0x034A, 0x0D97, 0x02,
+       0x034A, 0x0D95, 0x02,
        0x034C, 0x0908, 0x02,
-       0x034E, 0x06C4, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x1C76, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0122, 0x02,
+       0x034E, 0x06C6, 0x02,
+       0x0900, 0x0112, 0x02,
        0x0380, 0x0001, 0x02,
-       0x0382, 0x0003, 0x02,
+       0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
        0x0386, 0x0003, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
-       0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
-};
-
-/* 16:9 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_2312x1300_60fps[] = {
-       0xFCFC, 0x4000, 0x02,
-       0x6214, 0x7971, 0x02,
-       0x6218, 0x7150, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0020, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
        0x0136, 0x1A00, 0x02,
        0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x1C2A, 0x02,
+       0x021E, 0x1C2A, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
        0x3004, 0x0003, 0x02,
-       0x0344, 0x0010, 0x02,
-       0x0348, 0x121F, 0x02,
-       0x0346, 0x01C0, 0x02,
-       0x034A, 0x0BEF, 0x02,
-       0x034C, 0x0908, 0x02,
-       0x034E, 0x0514, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x071E, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0122, 0x02,
-       0x0380, 0x0001, 0x02,
-       0x0382, 0x0003, 0x02,
-       0x0384, 0x0001, 0x02,
-       0x0386, 0x0003, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
        0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
 
-#if defined(USE_SMART_BINNING_FRONT)
 /* 16:9 16x10 margin, EXTCLK 26Mhz */
-/* smart binning 2 mode setting */
-const u32 sensor_3p8_setfile_A_2312x1300_30fps[] = {
+const u32 sensor_2p6_setfile_A_2312x1312_30fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0031, 0x02,
+       0x3198, 0x0066, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0004, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
        0x0344, 0x0010, 0x02,
+       0x0346, 0x01B0, 0x02,
        0x0348, 0x121F, 0x02,
-       0x0346, 0x01C0, 0x02,
        0x034A, 0x0BEF, 0x02,
        0x034C, 0x0908, 0x02,
-       0x034E, 0x0514, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x0E3B, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0011, 0x02,
+       0x034E, 0x0520, 0x02,
+       0x0900, 0x0112, 0x02,
        0x0380, 0x0001, 0x02,
        0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
-       0x0386, 0x0001, 0x02,
-       0x0400, 0x0002, 0x02,
+       0x0386, 0x0003, 0x02,
+       0x0400, 0x0001, 0x02,
        0x0404, 0x0020, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
-       0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0xA060, 0x02,
-};
-#else /*original binning*/
-/* 16:9 16x10 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_2312x1300_30fps[] = {
-       0xFCFC, 0x4000, 0x02,
-       0x6214, 0x7971, 0x02,
-       0x6218, 0x7150, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
        0x0136, 0x1A00, 0x02,
        0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
        0x3004, 0x0003, 0x02,
-       0x0344, 0x0010, 0x02,
-       0x0348, 0x121F, 0x02,
-       0x0346, 0x01C0, 0x02,
-       0x034A, 0x0BEF, 0x02,
-       0x034C, 0x0908, 0x02,
-       0x034E, 0x0514, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x0E3B, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0122, 0x02,
-       0x0380, 0x0001, 0x02,
-       0x0382, 0x0003, 0x02,
-       0x0384, 0x0001, 0x02,
-       0x0386, 0x0003, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
        0x0216, 0x0000, 0x02,
-       0x3000, 0x0001, 0x02,
-       0x1006, 0x0002, 0x02,
-       0xF440, 0x002F, 0x02,
-       0x3664, 0x0019, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x00A0, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
-#endif
 
 /* 4:3 4x4 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_1152x864_120fps[] = {
+const u32 sensor_2p6_setfile_A_1156x864_120fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
-       0x0344, 0x0018, 0x02,
-       0x0348, 0x1217, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0001, 0x02,
+       0x3198, 0x00CC, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0000, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0100, 0x02,
+       0x0B0E, 0x0100, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0000, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0002, 0x02,
+       0x0340, 0x0398, 0x02,
+       0x0342, 0x1438, 0x02,
+       0x0344, 0x0010, 0x02,
        0x0346, 0x0010, 0x02,
+       0x0348, 0x121F, 0x02,
        0x034A, 0x0D8F, 0x02,
-       0x034C, 0x0480, 0x02,
+       0x034C, 0x0484, 0x02,
        0x034E, 0x0360, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x038F, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0144, 0x02,
+       0x0900, 0x0114, 0x02,
        0x0380, 0x0001, 0x02,
-       0x0382, 0x0007, 0x02,
+       0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
        0x0386, 0x0007, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0040, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0063, 0x02,
+       0x1130, 0x4411, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x038E, 0x02,
+       0x021E, 0x038E, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
        0x0216, 0x0000, 0x02,
-       0x3000, 0x0000, 0x02,
-       0x1006, 0x0003, 0x02,
-       0xF440, 0x00AF, 0x02,
-       0x3664, 0x0011, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x0007, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
 
 /* 16:9 4x4 margin, EXTCLK 26Mhz */
-const u32 sensor_3p8_setfile_A_1152x648_120fps[] = {
+const u32 sensor_2p6_setfile_A_1156x656_120fps[] = {
        0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
        0x6214, 0x7971, 0x02,
        0x6218, 0x7150, 0x02,
-       0x0136, 0x1A00, 0x02,
-       0x0300, 0x0003, 0x02,
-       0x0304, 0x0007, 0x02,
-       0x0306, 0x0071, 0x02,
-       0x030E, 0x0070, 0x02,
-       0x3004, 0x0003, 0x02,
-       0x0344, 0x0018, 0x02,
-       0x0348, 0x1217, 0x02,
-       0x0346, 0x01C8, 0x02,
-       0x034A, 0x0BE7, 0x02,
-       0x034C, 0x0480, 0x02,
-       0x034E, 0x0288, 0x02,
-       0x0342, 0x1400, 0x02,
-       0x0340, 0x038F, 0x02,
-       0x0202, 0x0200, 0x02,
-       0x0200, 0x0618, 0x02,
-       0x021E, 0x0300, 0x02,
-       0x021C, 0x0000, 0x02,
-       0x0900, 0x0144, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0001, 0x02,
+       0x3198, 0x00CC, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0000, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0100, 0x02,
+       0x0B0E, 0x0100, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0000, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0002, 0x02,
+       0x0340, 0x0398, 0x02,
+       0x0342, 0x1438, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x01B0, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0BEF, 0x02,
+       0x034C, 0x0484, 0x02,
+       0x034E, 0x0290, 0x02,
+       0x0900, 0x0114, 0x02,
        0x0380, 0x0001, 0x02,
-       0x0382, 0x0007, 0x02,
+       0x0382, 0x0001, 0x02,
        0x0384, 0x0001, 0x02,
        0x0386, 0x0007, 0x02,
-       0x0400, 0x0000, 0x02,
-       0x0404, 0x0010, 0x02,
-       0x3604, 0x0002, 0x02,
-       0x3606, 0x0103, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0040, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0063, 0x02,
+       0x1130, 0x4411, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x038E, 0x02,
+       0x021E, 0x038E, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
        0x0216, 0x0000, 0x02,
-       0x3000, 0x0000, 0x02,
-       0x1006, 0x0003, 0x02,
-       0xF440, 0x00AF, 0x02,
-       0x3664, 0x0011, 0x02,
-       0x3058, 0x0000, 0x02,
-       0x317A, 0x0007, 0x02,
-       0x6028, 0x2000, 0x02,
-       0x602A, 0x162C, 0x02,
-       0x6F12, 0x8080, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_4624x3466_30fps = {
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4624x3468_30fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
-       0x03, /* vt_pix_clk_div (0x0300) */
-       0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
 
-       0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x0E3B, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4624x2624_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_4624x2602_30fps = {
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2312x1734_30fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
-       0x03, /* vt_pix_clk_div (0x0300) */
-       0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
 
-       0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x0E3B, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2312x1734_15fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x1C34, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2312x1312_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_1156x864_120fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       572000000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_1156x656_120fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       572000000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_2312x1732_60fps = {
+#else
+const struct sensor_pll_info sensor_2p6_pllinfo_A_4624x3468_30fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x071E, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_2312x1732_30fps = {
+const struct sensor_pll_info sensor_2p6_pllinfo_A_4624x2624_30fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x0E3B, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_2312x1732_15fps = {
+const struct sensor_pll_info sensor_2p6_pllinfo_A_2312x1734_30fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x1C76, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_2312x1300_60fps = {
+const struct sensor_pll_info sensor_2p6_pllinfo_A_2312x1734_15fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x071E, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x1C34, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_2312x1300_30fps = {
+const struct sensor_pll_info sensor_2p6_pllinfo_A_2312x1312_30fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x0E3B, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_1152x864_120fps = {
+const struct sensor_pll_info sensor_2p6_pllinfo_A_1156x864_120fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x63, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x038F, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
 
-const struct sensor_pll_info sensor_3p8_pllinfo_A_1152x648_120fps = {
+const struct sensor_pll_info sensor_2p6_pllinfo_A_1156x656_120fps = {
        EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
        0x03, /* vt_pix_clk_div (0x0300) */
        0x01, /* vt_sys_clk_div (0x0302) */
-       0x07, /* pre_pll_clk_div(0x0304) */
-       0x71, /* pll_multiplier (0x0306) */
-       0x08, /* op_pix_clk_div (0x0308) */
-       0x01, /* op_sys_clk_div (0x030A) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x63, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
 
        0x04, /* secnd_pre_pll_clk_div(0x030C) */
-       0x70, /* secnd_pll_multiplier   (0x030E) */
-       0x038F, /* frame_length_lines   (0x0340) */
-       0x1400, /* line_length_pck              (0x0342) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
 };
+#endif
 
-
-static const u32 *sensor_3p8_setfiles_A[] = {
+static const u32 *sensor_2p6_setfiles_A[] = {
        /* 16x12 margin */
-       sensor_3p8_setfile_A_4624x3466_30fps,
-       sensor_3p8_setfile_A_4624x2602_30fps,
-       sensor_3p8_setfile_A_2312x1732_60fps,
-       sensor_3p8_setfile_A_2312x1732_30fps,
-       sensor_3p8_setfile_A_2312x1732_15fps,
-       sensor_3p8_setfile_A_2312x1300_60fps,
-       sensor_3p8_setfile_A_2312x1300_30fps,
-       sensor_3p8_setfile_A_1152x864_120fps,
-       sensor_3p8_setfile_A_1152x648_120fps,
+       sensor_2p6_setfile_A_4624x3468_30fps,
+       sensor_2p6_setfile_A_4624x2624_30fps,
+       sensor_2p6_setfile_A_2312x1734_30fps,
+       sensor_2p6_setfile_A_2312x1734_15fps,
+       sensor_2p6_setfile_A_2312x1312_30fps,
+       sensor_2p6_setfile_A_1156x864_120fps,
+       sensor_2p6_setfile_A_1156x656_120fps,
 };
 
-static const u32 sensor_3p8_setfile_A_sizes[] = {
+static const u32 sensor_2p6_setfile_A_sizes[] = {
        /* 16x12 margin */
-       sizeof(sensor_3p8_setfile_A_4624x3466_30fps) / sizeof(sensor_3p8_setfile_A_4624x3466_30fps[0]),
-       sizeof(sensor_3p8_setfile_A_4624x2602_30fps) / sizeof(sensor_3p8_setfile_A_4624x2602_30fps[0]),
-       sizeof(sensor_3p8_setfile_A_2312x1732_60fps) / sizeof(sensor_3p8_setfile_A_2312x1732_60fps[0]),
-       sizeof(sensor_3p8_setfile_A_2312x1732_30fps) / sizeof(sensor_3p8_setfile_A_2312x1732_30fps[0]),
-       sizeof(sensor_3p8_setfile_A_2312x1732_15fps) / sizeof(sensor_3p8_setfile_A_2312x1732_15fps[0]),
-       sizeof(sensor_3p8_setfile_A_2312x1300_60fps) / sizeof(sensor_3p8_setfile_A_2312x1300_60fps[0]),
-       sizeof(sensor_3p8_setfile_A_2312x1300_30fps) / sizeof(sensor_3p8_setfile_A_2312x1300_30fps[0]),
-       sizeof(sensor_3p8_setfile_A_1152x864_120fps) / sizeof(sensor_3p8_setfile_A_1152x864_120fps[0]),
-       sizeof(sensor_3p8_setfile_A_1152x648_120fps) / sizeof(sensor_3p8_setfile_A_1152x648_120fps[0]),
+       sizeof(sensor_2p6_setfile_A_4624x3468_30fps) / sizeof(sensor_2p6_setfile_A_4624x3468_30fps[0]),
+       sizeof(sensor_2p6_setfile_A_4624x2624_30fps) / sizeof(sensor_2p6_setfile_A_4624x2624_30fps[0]),
+       sizeof(sensor_2p6_setfile_A_2312x1734_30fps) / sizeof(sensor_2p6_setfile_A_2312x1734_30fps[0]),
+       sizeof(sensor_2p6_setfile_A_2312x1734_15fps) / sizeof(sensor_2p6_setfile_A_2312x1734_15fps[0]),
+       sizeof(sensor_2p6_setfile_A_2312x1312_30fps) / sizeof(sensor_2p6_setfile_A_2312x1312_30fps[0]),
+       sizeof(sensor_2p6_setfile_A_1156x864_120fps) / sizeof(sensor_2p6_setfile_A_1156x864_120fps[0]),
+       sizeof(sensor_2p6_setfile_A_1156x656_120fps) / sizeof(sensor_2p6_setfile_A_1156x656_120fps[0]),
 };
 
-static const struct sensor_pll_info *sensor_3p8_pllinfos_A[] = {
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+static const struct sensor_pll_info_compact *sensor_2p6_pllinfos_A[] = {
+#else
+static const struct sensor_pll_info *sensor_2p6_pllinfos_A[] = {
+#endif
        /* 16x12 margin */
-       &sensor_3p8_pllinfo_A_4624x3466_30fps,
-       &sensor_3p8_pllinfo_A_4624x2602_30fps,
-       &sensor_3p8_pllinfo_A_2312x1732_60fps,
-       &sensor_3p8_pllinfo_A_2312x1732_30fps,
-       &sensor_3p8_pllinfo_A_2312x1732_15fps,
-       &sensor_3p8_pllinfo_A_2312x1300_60fps,
-       &sensor_3p8_pllinfo_A_2312x1300_30fps,
-       &sensor_3p8_pllinfo_A_1152x864_120fps,
-       &sensor_3p8_pllinfo_A_1152x648_120fps,
+       &sensor_2p6_pllinfo_A_4624x3468_30fps,
+       &sensor_2p6_pllinfo_A_4624x2624_30fps,
+       &sensor_2p6_pllinfo_A_2312x1734_30fps,
+       &sensor_2p6_pllinfo_A_2312x1734_15fps,
+       &sensor_2p6_pllinfo_A_2312x1312_30fps,
+       &sensor_2p6_pllinfo_A_1156x864_120fps,
+       &sensor_2p6_pllinfo_A_1156x656_120fps,
 };
 
 #endif
diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setB.h b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setB.h
new file mode 100644 (file)
index 0000000..dbda7ff
--- /dev/null
@@ -0,0 +1,958 @@
+/*
+ * 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_CIS_2P6_SET_B_H
+#define FIMC_IS_CIS_2P6_SET_B_H
+
+#include "fimc-is-cis.h"
+#include "fimc-is-cis-2p6.h"
+
+const u32 sensor_2p6_setfile_B_Global[] = {
+/*TODO*/
+};
+
+/* 4:3 16x10 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_4624x3468_30fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0000, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0021, 0x02,
+       0x3198, 0x0007, 0x02,
+       0x319A, 0x0100, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0008, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x000A, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0D95, 0x02,
+       0x034C, 0x1210, 0x02,
+       0x034E, 0x0D8C, 0x02,
+       0x0900, 0x0011, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0001, 0x02,
+       0x0400, 0x0000, 0x02,
+       0x0404, 0x0000, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0100, 0x02,
+       0x3AC4, 0x0100, 0x02,
+       0x3E04, 0x0100, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+/* 16:9 16x10 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_4624x2624_30fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0000, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0021, 0x02,
+       0x3198, 0x0007, 0x02,
+       0x319A, 0x0100, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0008, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x01B0, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0BEF, 0x02,
+       0x034C, 0x1210, 0x02,
+       0x034E, 0x0A40, 0x02,
+       0x0900, 0x0011, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0001, 0x02,
+       0x0400, 0x0000, 0x02,
+       0x0404, 0x0000, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0100, 0x02,
+       0x3AC4, 0x0100, 0x02,
+       0x3E04, 0x0100, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+/* 4:3 16x10 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_2312x1734_30fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0031, 0x02,
+       0x3198, 0x0066, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0004, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x000A, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0D95, 0x02,
+       0x034C, 0x0908, 0x02,
+       0x034E, 0x06C6, 0x02,
+       0x0900, 0x0112, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0003, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0020, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0000, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+/* 4:3 16x10 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_2312x1734_15fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0031, 0x02,
+       0x3198, 0x0066, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0004, 0x02,
+       0x0340, 0x1C34, 0x02,
+       0x0342, 0x1428, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x000A, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0D95, 0x02,
+       0x034C, 0x0908, 0x02,
+       0x034E, 0x06C6, 0x02,
+       0x0900, 0x0112, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0003, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0020, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x1C2A, 0x02,
+       0x021E, 0x1C2A, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0000, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+/* 16:9 16x10 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_2312x1312_30fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0031, 0x02,
+       0x3198, 0x0066, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0100, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x0B0E, 0x0000, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0100, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0004, 0x02,
+       0x0340, 0x0E1A, 0x02,
+       0x0342, 0x1428, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x01B0, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0BEF, 0x02,
+       0x034C, 0x0908, 0x02,
+       0x034E, 0x0520, 0x02,
+       0x0900, 0x0112, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0003, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0020, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0061, 0x02,
+       0x1130, 0x440E, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x0E10, 0x02,
+       0x021E, 0x0E10, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0000, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+/* 4:3 4x4 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_1156x864_120fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0001, 0x02,
+       0x3198, 0x00CC, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0000, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0100, 0x02,
+       0x0B0E, 0x0100, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0000, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0002, 0x02,
+       0x0340, 0x0398, 0x02,
+       0x0342, 0x1438, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x0010, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0D8F, 0x02,
+       0x034C, 0x0484, 0x02,
+       0x034E, 0x0360, 0x02,
+       0x0900, 0x0114, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0007, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0040, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0063, 0x02,
+       0x1130, 0x4411, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x038E, 0x02,
+       0x021E, 0x038E, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0000, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+/* 16:9 4x4 margin, EXTCLK 26Mhz */
+const u32 sensor_2p6_setfile_B_1156x656_120fps[] = {
+       0xFCFC, 0x4000, 0x02,
+       0x6028, 0x2000, 0x02,
+
+       0x6214, 0x7971, 0x02,
+       0x6218, 0x7150, 0x02,
+       0xF43A, 0x000C, 0x02,
+       0xF470, 0x000D, 0x02,
+       0x602A, 0x1C50, 0x02,
+       0x6F12, 0x15FF, 0x02,
+       0x3092, 0x0000, 0x02,
+       0x3088, 0x0101, 0x02,
+       0x602A, 0x13CE, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x6F12, 0x0004, 0x02,
+       0x602A, 0x196C, 0x02,
+       0x6F12, 0x8010, 0x02,
+       0x31D2, 0x0220, 0x02,
+       0x602A, 0x195E, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x3816, 0x0140, 0x02,
+       0x3818, 0x0140, 0x02,
+       0x3854, 0x0008, 0x02,
+       0x3856, 0x0008, 0x02,
+       0x3858, 0x0008, 0x02,
+       0x385A, 0x0008, 0x02,
+       0x30CE, 0x0040, 0x02,
+       0xF440, 0x002F, 0x02,
+       0x37F6, 0x0001, 0x02,
+       0x3198, 0x00CC, 0x02,
+       0x319A, 0x0000, 0x02,
+       0x319C, 0x0130, 0x02,
+       0x3056, 0x0000, 0x02,
+       0x602A, 0x1266, 0x02,
+       0x6F12, 0x0001, 0x02,
+       0x6F12, 0x0000, 0x02,
+       0x602A, 0x1BB0, 0x02,
+       0x6F12, 0x0100, 0x02,
+       0x0B0E, 0x0100, 0x02,
+       0x30D4, 0x0001, 0x02,
+       0x30D8, 0x0000, 0x02,
+       0xB138, 0x0000, 0x02,
+       0x31B0, 0x0002, 0x02,
+       0x0340, 0x0398, 0x02,
+       0x0342, 0x1438, 0x02,
+       0x0344, 0x0010, 0x02,
+       0x0346, 0x01B0, 0x02,
+       0x0348, 0x121F, 0x02,
+       0x034A, 0x0BEF, 0x02,
+       0x034C, 0x0484, 0x02,
+       0x034E, 0x0290, 0x02,
+       0x0900, 0x0114, 0x02,
+       0x0380, 0x0001, 0x02,
+       0x0382, 0x0001, 0x02,
+       0x0384, 0x0001, 0x02,
+       0x0386, 0x0007, 0x02,
+       0x0400, 0x0001, 0x02,
+       0x0404, 0x0040, 0x02,
+       0x0408, 0x0000, 0x02,
+       0x040A, 0x0000, 0x02,
+       0x0136, 0x1A00, 0x02,
+       0x0300, 0x0003, 0x02,
+       0x0302, 0x0001, 0x02,
+       0x0304, 0x0006, 0x02,
+       0x0306, 0x0063, 0x02,
+       0x1130, 0x4411, 0x02,
+       0x030C, 0x0004, 0x02,
+       0x030E, 0x006F, 0x02,
+       0x300A, 0x0000, 0x02,
+       0x0200, 0x0200, 0x02,
+       0x0202, 0x038E, 0x02,
+       0x021E, 0x038E, 0x02,
+       0x0204, 0x0080, 0x02,
+       0x37C0, 0x0002, 0x02,
+       0x37C2, 0x0103, 0x02,
+       0x3004, 0x0003, 0x02,
+       0x0114, 0x0300, 0x02,
+       0x304C, 0x0000, 0x02,
+       0x0216, 0x0000, 0x02,
+       0x3AC4, 0x0000, 0x02,
+       0x3E04, 0x0000, 0x02,
+       0x3B02, 0xFFCD, 0x02,
+       0x3B34, 0x0033, 0x02,
+       0x3AD0, 0x0099, 0x02,
+       0x3B0C, 0xFFE2, 0x02,
+       0x3B3E, 0x0028, 0x02,
+       0x3ADA, 0x0099, 0x02,
+       0x3B16, 0xFFCD, 0x02,
+       0x3B48, 0x0033, 0x02,
+       0x3AE4, 0x0099, 0x02,
+       0x3B20, 0x0014, 0x02,
+       0x3B52, 0x0066, 0x02,
+       0x3AEE, 0x0099, 0x02,
+       0x3E18, 0x1014, 0x02,
+       0x3E22, 0x1014, 0x02,
+       0x6214, 0x7970, 0x02,
+};
+
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4624x3468_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4624x2624_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2312x1734_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2312x1734_15fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x1C34, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2312x1312_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       560440000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_1156x864_120fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       572000000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_1156x656_120fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       1443 * 1000 * 1000, /* mipi_datarate */
+       572000000,  /* pclk  = VT pix CLK * 4(this value is different by cis) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+#else
+const struct sensor_pll_info sensor_2p6_pllinfo_B_4624x3468_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info sensor_2p6_pllinfo_B_4624x2624_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info sensor_2p6_pllinfo_B_2312x1734_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info sensor_2p6_pllinfo_B_2312x1734_15fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x1C34, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info sensor_2p6_pllinfo_B_2312x1312_30fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x61, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0E1A, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info sensor_2p6_pllinfo_B_1156x864_120fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x63, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+
+const struct sensor_pll_info sensor_2p6_pllinfo_B_1156x656_120fps = {
+       EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
+       0x03, /* vt_pix_clk_div (0x0300) */
+       0x01, /* vt_sys_clk_div (0x0302) */
+       0x06, /* pre_pll_clk_div(0x0304) */
+       0x63, /* pll_multiplier (0x0306) */
+/*TODO*/       0x08, /* op_pix_clk_div (0x0308) */
+/*TODO*/       0x01, /* op_sys_clk_div (0x030A) */
+
+       0x04, /* secnd_pre_pll_clk_div(0x030C) */
+       0x6F, /* secnd_pll_multiplier   (0x030E) */
+       0x0398, /* frame_length_lines   (0x0340) */
+       0x1428, /* line_length_pck              (0x0342) */
+};
+#endif
+
+static const u32 *sensor_2p6_setfiles_B[] = {
+       /* 16x12 margin */
+       sensor_2p6_setfile_B_4624x3468_30fps,
+       sensor_2p6_setfile_B_4624x2624_30fps,
+       sensor_2p6_setfile_B_2312x1734_30fps,
+       sensor_2p6_setfile_B_2312x1734_15fps,
+       sensor_2p6_setfile_B_2312x1312_30fps,
+       sensor_2p6_setfile_B_1156x864_120fps,
+       sensor_2p6_setfile_B_1156x656_120fps,
+};
+
+static const u32 sensor_2p6_setfile_B_sizes[] = {
+       /* 16x12 margin */
+       sizeof(sensor_2p6_setfile_B_4624x3468_30fps) / sizeof(sensor_2p6_setfile_B_4624x3468_30fps[0]),
+       sizeof(sensor_2p6_setfile_B_4624x2624_30fps) / sizeof(sensor_2p6_setfile_B_4624x2624_30fps[0]),
+       sizeof(sensor_2p6_setfile_B_2312x1734_30fps) / sizeof(sensor_2p6_setfile_B_2312x1734_30fps[0]),
+       sizeof(sensor_2p6_setfile_B_2312x1734_15fps) / sizeof(sensor_2p6_setfile_B_2312x1734_15fps[0]),
+       sizeof(sensor_2p6_setfile_B_2312x1312_30fps) / sizeof(sensor_2p6_setfile_B_2312x1312_30fps[0]),
+       sizeof(sensor_2p6_setfile_B_1156x864_120fps) / sizeof(sensor_2p6_setfile_B_1156x864_120fps[0]),
+       sizeof(sensor_2p6_setfile_B_1156x656_120fps) / sizeof(sensor_2p6_setfile_B_1156x656_120fps[0]),
+};
+
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+static const struct sensor_pll_info_compact *sensor_2p6_pllinfos_B[] = {
+#else
+static const struct sensor_pll_info *sensor_2p6_pllinfos_B[] = {
+#endif
+       /* 16x12 margin */
+       &sensor_2p6_pllinfo_B_4624x3468_30fps,
+       &sensor_2p6_pllinfo_B_4624x2624_30fps,
+       &sensor_2p6_pllinfo_B_2312x1734_30fps,
+       &sensor_2p6_pllinfo_B_2312x1734_15fps,
+       &sensor_2p6_pllinfo_B_2312x1312_30fps,
+       &sensor_2p6_pllinfo_B_1156x864_120fps,
+       &sensor_2p6_pllinfo_B_1156x656_120fps,
+};
+
+#endif
index 55d3a3edaf7ccf75df7d5cea26e7b2f9207dc6bb..e5b7f0c4171c18a86d0d0fe1c0ca022f941dfb4b 100644 (file)
 #include "fimc-is-device-sensor-peri.h"
 #include "fimc-is-resourcemgr.h"
 #include "fimc-is-dt.h"
-#include "fimc-is-cis-3p8.h"
-#include "fimc-is-cis-3p8-setA.h"
-#include "fimc-is-cis-3p8-setB.h"
+#include "fimc-is-cis-2p6.h"
+#include "fimc-is-cis-2p6-setA.h"
+#include "fimc-is-cis-2p6-setB.h"
 
 #include "fimc-is-helper-i2c.h"
 
-#define SENSOR_NAME "S5K3P8"
-/* #define DEBUG_3P8_PLL */
+#define SENSOR_NAME "S5K2P6"
+/* #define DEBUG_2P6_PLL */
 
 static const struct v4l2_subdev_ops subdev_ops;
 
-static const u32 *sensor_3p8_global;
-static u32 sensor_3p8_global_size;
-static const u32 **sensor_3p8_setfiles;
-static const u32 *sensor_3p8_setfile_sizes;
-static u32 sensor_3p8_max_setfile_num;
-static const struct sensor_pll_info **sensor_3p8_pllinfos;
+static const u32 *sensor_2p6_global;
+static u32 sensor_2p6_global_size;
+static const u32 **sensor_2p6_setfiles;
+static const u32 *sensor_2p6_setfile_sizes;
+static u32 sensor_2p6_max_setfile_num;
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+static const struct sensor_pll_info_compact **sensor_2p6_pllinfos;
+#else
+static const struct sensor_pll_info **sensor_2p6_pllinfos;
+#endif
 
 /* variables of pdaf setting */
-static const u32 *sensor_3p8_pdaf_global;
-static u32 sensor_3p8_pdaf_global_size;
-static const u32 **sensor_3p8_pdaf_setfiles;
-static const u32 *sensor_3p8_pdaf_setfile_sizes;
-static u32 sensor_3p8_pdaf_max_setfile_num;
-static const struct sensor_pll_info **sensor_3p8_pdaf_pllinfos;
-
-static void sensor_3p8_cis_data_calculation(const struct sensor_pll_info *pll_info, cis_shared_data *cis_data)
+static const u32 *sensor_2p6_pdaf_global;
+static u32 sensor_2p6_pdaf_global_size;
+static const u32 **sensor_2p6_pdaf_setfiles;
+static const u32 *sensor_2p6_pdaf_setfile_sizes;
+static u32 sensor_2p6_pdaf_max_setfile_num;
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+static const struct sensor_pll_info_compact **sensor_2p6_pdaf_pllinfos;
+#else
+static const struct sensor_pll_info **sensor_2p6_pdaf_pllinfos;
+#endif
+
+#ifdef S5K2P6_USE_COMPACT_PLL_INFO
+static void sensor_2p6_cis_data_calculation(const struct sensor_pll_info_compact *pll_info_compact, cis_shared_data *cis_data)
+{
+       u32 vt_pix_clk_hz = 0;
+       u32 frame_rate = 0, max_fps = 0, frame_valid_us = 0;
+
+       BUG_ON(!pll_info_compact);
+
+       /* 1. get pclk value from pll info */
+       vt_pix_clk_hz = pll_info_compact->pclk;
+
+       dbg_sensor(1, "ext_clock(%d), mipi_datarate(%d), pclk(%d)\n",
+                       pll_info_compact->ext_clk, pll_info_compact->mipi_datarate, pll_info_compact->pclk);
+
+       /* 2. the time of processing one frame calculation (us) */
+       cis_data->min_frame_us_time = (pll_info_compact->frame_length_lines * pll_info_compact->line_length_pck
+                                       / (vt_pix_clk_hz / (1000 * 1000)));
+       cis_data->cur_frame_us_time = cis_data->min_frame_us_time;
+
+       /* 3. FPS calculation */
+       frame_rate = vt_pix_clk_hz / (pll_info_compact->frame_length_lines * pll_info_compact->line_length_pck);
+       dbg_sensor(1, "frame_rate (%d) = vt_pix_clk_hz(%d) / "
+               KERN_CONT "(pll_info_compact->frame_length_lines(%d) * pll_info_compact->line_length_pck(%d))\n",
+               frame_rate, vt_pix_clk_hz, pll_info_compact->frame_length_lines, pll_info_compact->line_length_pck);
+
+       /* calculate max fps */
+       max_fps = (vt_pix_clk_hz * 10) / (pll_info_compact->frame_length_lines * pll_info_compact->line_length_pck);
+       max_fps = (max_fps % 10 >= 5 ? frame_rate + 1 : frame_rate);
+
+       cis_data->pclk = vt_pix_clk_hz;
+       cis_data->max_fps = max_fps;
+       cis_data->frame_length_lines = pll_info_compact->frame_length_lines;
+       cis_data->line_length_pck = pll_info_compact->line_length_pck;
+       cis_data->line_readOut_time = sensor_cis_do_div64((u64)cis_data->line_length_pck * (u64)(1000 * 1000 * 1000), cis_data->pclk);
+       cis_data->rolling_shutter_skew = (cis_data->cur_height - 1) * cis_data->line_readOut_time;
+       cis_data->stream_on = false;
+
+       /* Frame valid time calcuration */
+       frame_valid_us = sensor_cis_do_div64((u64)cis_data->cur_height * (u64)cis_data->line_length_pck * (u64)(1000 * 1000), cis_data->pclk);
+       cis_data->frame_valid_us_time = (int)frame_valid_us;
+
+       dbg_sensor(1, "%s\n", __func__);
+       dbg_sensor(1, "Sensor size(%d x %d) setting: SUCCESS!\n",
+                                       cis_data->cur_width, cis_data->cur_height);
+       dbg_sensor(1, "Frame Valid(us): %d\n", frame_valid_us);
+       dbg_sensor(1, "rolling_shutter_skew: %lld\n", cis_data->rolling_shutter_skew);
+
+       dbg_sensor(1, "Fps: %d, max fps(%d)\n", frame_rate, cis_data->max_fps);
+       dbg_sensor(1, "min_frame_time(%d us)\n", cis_data->min_frame_us_time);
+       dbg_sensor(1, "Pixel rate(Mbps): %d\n", cis_data->pclk / 1000000);
+
+       /* Frame period calculation */
+       cis_data->frame_time = (cis_data->line_readOut_time * cis_data->cur_height / 1000);
+       cis_data->rolling_shutter_skew = (cis_data->cur_height - 1) * cis_data->line_readOut_time;
+
+       dbg_sensor(1, "[%s] frame_time(%d), rolling_shutter_skew(%lld)\n", __func__,
+               cis_data->frame_time, cis_data->rolling_shutter_skew);
+
+       /* Constant values */
+       cis_data->min_fine_integration_time = SENSOR_2P6_FINE_INTEGRATION_TIME_MIN;
+       cis_data->max_fine_integration_time = SENSOR_2P6_FINE_INTEGRATION_TIME_MAX;
+       cis_data->min_coarse_integration_time = SENSOR_2P6_COARSE_INTEGRATION_TIME_MIN;
+}
+#else
+static void sensor_2p6_cis_data_calculation(const struct sensor_pll_info *pll_info, cis_shared_data *cis_data)
 {
        u32 pll_voc_a = 0, vt_pix_clk_hz = 0;
        u32 frame_rate = 0, max_fps = 0, frame_valid_us = 0;
@@ -135,13 +207,14 @@ static void sensor_3p8_cis_data_calculation(const struct sensor_pll_info *pll_in
                cis_data->frame_time, cis_data->rolling_shutter_skew);
 
        /* Constant values */
-       cis_data->min_fine_integration_time = SENSOR_3P8_FINE_INTEGRATION_TIME_MIN;
-       cis_data->max_fine_integration_time = SENSOR_3P8_FINE_INTEGRATION_TIME_MAX;
-       cis_data->min_coarse_integration_time = SENSOR_3P8_COARSE_INTEGRATION_TIME_MIN;
-       cis_data->max_margin_coarse_integration_time = SENSOR_3P8_COARSE_INTEGRATION_TIME_MAX_MARGIN;
+       cis_data->min_fine_integration_time = SENSOR_2P6_FINE_INTEGRATION_TIME_MIN;
+       cis_data->max_fine_integration_time = SENSOR_2P6_FINE_INTEGRATION_TIME_MAX;
+       cis_data->min_coarse_integration_time = SENSOR_2P6_COARSE_INTEGRATION_TIME_MIN;
+       cis_data->max_margin_coarse_integration_time = SENSOR_2P6_COARSE_INTEGRATION_TIME_MAX_MARGIN;
 }
+#endif
 
-static int sensor_3p8_wait_stream_off_status(cis_shared_data *cis_data)
+static int sensor_2p6_wait_stream_off_status(cis_shared_data *cis_data)
 {
        int ret = 0;
        u32 timeout = 0;
@@ -167,7 +240,7 @@ static int sensor_3p8_wait_stream_off_status(cis_shared_data *cis_data)
 }
 
 /* CIS OPS */
-int sensor_3p8_cis_init(struct v4l2_subdev *subdev)
+int sensor_2p6_cis_init(struct v4l2_subdev *subdev)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -191,17 +264,17 @@ int sensor_3p8_cis_init(struct v4l2_subdev *subdev)
 
        ret = sensor_cis_check_rev(cis);
        if (ret < 0) {
-               warn("sensor_3p8_check_rev is fail when cis init");
+               warn("sensor_2p6_check_rev is fail when cis init");
                cis->rev_flag = true;
                ret = 0;
        }
 
-       cis->cis_data->cur_width = SENSOR_3P8_MAX_WIDTH;
-       cis->cis_data->cur_height = SENSOR_3P8_MAX_HEIGHT;
+       cis->cis_data->cur_width = SENSOR_2P6_MAX_WIDTH;
+       cis->cis_data->cur_height = SENSOR_2P6_MAX_HEIGHT;
        cis->cis_data->low_expo_start = 33000;
        cis->need_mode_change = false;
 
-       sensor_3p8_cis_data_calculation(sensor_3p8_pllinfos[setfile_index], cis->cis_data);
+       sensor_2p6_cis_data_calculation(sensor_2p6_pllinfos[setfile_index], cis->cis_data);
 
        setinfo.return_value = 0;
        CALL_CISOPS(cis, cis_get_min_exposure_time, subdev, &setinfo.return_value);
@@ -231,7 +304,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_log_status(struct v4l2_subdev *subdev)
+int sensor_2p6_cis_log_status(struct v4l2_subdev *subdev)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -266,9 +339,9 @@ int sensor_3p8_cis_log_status(struct v4l2_subdev *subdev)
        if (unlikely(!ret)) printk("[SEN:DUMP] mode_select(%x)\n", data8);
 
        if (cis->use_pdaf == true) {
-               sensor_cis_dump_registers(subdev, sensor_3p8_pdaf_setfiles[0], sensor_3p8_pdaf_setfile_sizes[0]);
+               sensor_cis_dump_registers(subdev, sensor_2p6_pdaf_setfiles[0], sensor_2p6_pdaf_setfile_sizes[0]);
        } else {
-               sensor_cis_dump_registers(subdev, sensor_3p8_setfiles[0], sensor_3p8_setfile_sizes[0]);
+               sensor_cis_dump_registers(subdev, sensor_2p6_setfiles[0], sensor_2p6_setfile_sizes[0]);
        }
 
        pr_err("[SEN:DUMP] *******************************\n");
@@ -278,7 +351,7 @@ p_err:
 }
 
 #if USE_GROUP_PARAM_HOLD
-static int sensor_3p8_cis_group_param_hold_func(struct v4l2_subdev *subdev, unsigned int hold)
+static int sensor_2p6_cis_group_param_hold_func(struct v4l2_subdev *subdev, unsigned int hold)
 {
        int ret = 0;
        struct fimc_is_cis *cis = NULL;
@@ -313,7 +386,7 @@ p_err:
        return ret;
 }
 #else
-static inline int sensor_3p8_cis_group_param_hold_func(struct v4l2_subdev *subdev, unsigned int hold)
+static inline int sensor_2p6_cis_group_param_hold_func(struct v4l2_subdev *subdev, unsigned int hold)
 { return 0; }
 #endif
 
@@ -324,7 +397,7 @@ static inline int sensor_3p8_cis_group_param_hold_func(struct v4l2_subdev *subde
  *             positive - setted by request
  *             negative - ERROR value
  */
-int sensor_3p8_cis_group_param_hold(struct v4l2_subdev *subdev, bool hold)
+int sensor_2p6_cis_group_param_hold(struct v4l2_subdev *subdev, bool hold)
 {
        int ret = 0;
        struct fimc_is_cis *cis = NULL;
@@ -336,7 +409,7 @@ int sensor_3p8_cis_group_param_hold(struct v4l2_subdev *subdev, bool hold)
        BUG_ON(!cis);
        BUG_ON(!cis->cis_data);
 
-       ret = sensor_3p8_cis_group_param_hold_func(subdev, hold);
+       ret = sensor_2p6_cis_group_param_hold_func(subdev, hold);
        if (ret < 0)
                goto p_err;
 
@@ -344,7 +417,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_set_global_setting(struct v4l2_subdev *subdev)
+int sensor_2p6_cis_set_global_setting(struct v4l2_subdev *subdev)
 {
        int ret = 0;
        struct fimc_is_cis *cis = NULL;
@@ -362,13 +435,13 @@ int sensor_3p8_cis_set_global_setting(struct v4l2_subdev *subdev)
 
        /* setfile global setting is at camera entrance */
        if (cis->use_pdaf == true) {
-               ret = sensor_cis_set_registers(subdev, sensor_3p8_pdaf_global, sensor_3p8_pdaf_global_size);
+               ret = sensor_cis_set_registers(subdev, sensor_2p6_pdaf_global, sensor_2p6_pdaf_global_size);
        } else {
-               ret = sensor_cis_set_registers(subdev, sensor_3p8_global, sensor_3p8_global_size);
+               ret = sensor_cis_set_registers(subdev, sensor_2p6_global, sensor_2p6_global_size);
        }
 
        if (ret < 0) {
-               err("sensor_3p8_set_registers fail!!");
+               err("sensor_2p6_set_registers fail!!");
                goto p_err;
        }
 
@@ -378,7 +451,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_mode_change(struct v4l2_subdev *subdev, u32 mode)
+int sensor_2p6_cis_mode_change(struct v4l2_subdev *subdev, u32 mode)
 {
        int ret = 0;
        u32 max_setfile_num = 0;
@@ -391,9 +464,9 @@ int sensor_3p8_cis_mode_change(struct v4l2_subdev *subdev, u32 mode)
        BUG_ON(!cis->cis_data);
 
        if (cis->use_pdaf == true) {
-               max_setfile_num = sensor_3p8_pdaf_max_setfile_num;
+               max_setfile_num = sensor_2p6_pdaf_max_setfile_num;
        } else {
-               max_setfile_num = sensor_3p8_max_setfile_num;
+               max_setfile_num = sensor_2p6_max_setfile_num;
        }
 
        if (mode > max_setfile_num) {
@@ -407,33 +480,33 @@ int sensor_3p8_cis_mode_change(struct v4l2_subdev *subdev, u32 mode)
                cis->rev_flag = false;
                ret = sensor_cis_check_rev(cis);
                if (ret < 0) {
-                       err("sensor_3p8_check_rev is fail");
+                       err("sensor_2p6_check_rev is fail");
                        goto p_err;
                }
        }
 
        if (cis->use_pdaf == true) {
-               sensor_3p8_cis_data_calculation(sensor_3p8_pdaf_pllinfos[mode], cis->cis_data);
-               ret = sensor_cis_set_registers(subdev, sensor_3p8_pdaf_setfiles[mode], sensor_3p8_pdaf_setfile_sizes[mode]);
+               sensor_2p6_cis_data_calculation(sensor_2p6_pdaf_pllinfos[mode], cis->cis_data);
+               ret = sensor_cis_set_registers(subdev, sensor_2p6_pdaf_setfiles[mode], sensor_2p6_pdaf_setfile_sizes[mode]);
        } else {
-               sensor_3p8_cis_data_calculation(sensor_3p8_pllinfos[mode], cis->cis_data);
-               ret = sensor_cis_set_registers(subdev, sensor_3p8_setfiles[mode], sensor_3p8_setfile_sizes[mode]);
+               sensor_2p6_cis_data_calculation(sensor_2p6_pllinfos[mode], cis->cis_data);
+               ret = sensor_cis_set_registers(subdev, sensor_2p6_setfiles[mode], sensor_2p6_setfile_sizes[mode]);
        }
 
        if (ret < 0) {
-               err("sensor_3p8_set_registers fail!!");
+               err("sensor_2p6_set_registers fail!!");
                goto p_err;
        }
 
        if (cis->use_pdaf == true) {
-#if defined(S5K3P8_PDAF_DISABLE)
+#if defined(S5K2P6_PDAF_DISABLE)
                /* TEMP : PDAF disable */
                ret = fimc_is_sensor_write16(cis->client, 0xFCFC, 0x4000);
                ret = fimc_is_sensor_write8(cis->client, 0x3059, 0x00);
-               info("[%s] S5K3P8_PDAF_DISABLE\n", __func__);
+               info("[%s] S5K2P6_PDAF_DISABLE\n", __func__);
 #endif
 
-#if defined(S5K3P8_TAIL_DISABLE)
+#if defined(S5K2P6_TAIL_DISABLE)
                /* TEMP : Tail mode disable */
                ret = fimc_is_sensor_write16(cis->client, 0x6028, 0x2000);
                ret = fimc_is_sensor_write16(cis->client, 0x602A, 0x19E0);
@@ -441,14 +514,14 @@ int sensor_3p8_cis_mode_change(struct v4l2_subdev *subdev, u32 mode)
 
                ret = fimc_is_sensor_write16(cis->client, 0xFCFC, 0x4000);
                ret = fimc_is_sensor_write16(cis->client, 0x30E2, 0x0000);
-               info("[%s] S5K3P8_TAIL_DISABLE\n", __func__);
+               info("[%s] S5K2P6_TAIL_DISABLE\n", __func__);
 #endif
 
-#if defined(S5K3P8_BPC_DISABLE)
+#if defined(S5K2P6_BPC_DISABLE)
                /* TEMP : BPC disable */
                ret = fimc_is_sensor_write16(cis->client, 0xFCFC, 0x4000);
                ret = fimc_is_sensor_write8(cis->client, 0x0B0E, 0x00);
-               info("[%s] S5K3P8_BPC_DISABLE\n", __func__);
+               info("[%s] S5K2P6_BPC_DISABLE\n", __func__);
 #endif
        }
 
@@ -459,7 +532,7 @@ p_err:
 }
 
 /* TODO: Sensor set size sequence(sensor done, sensor stop, 3AA done in FW case */
-int sensor_3p8_cis_set_size(struct v4l2_subdev *subdev, cis_shared_data *cis_data)
+int sensor_2p6_cis_set_size(struct v4l2_subdev *subdev, cis_shared_data *cis_data)
 {
        int ret = 0;
        bool binning = false;
@@ -496,7 +569,7 @@ int sensor_3p8_cis_set_size(struct v4l2_subdev *subdev, cis_shared_data *cis_dat
        }
 
        /* Wait actual stream off */
-       ret = sensor_3p8_wait_stream_off_status(cis_data);
+       ret = sensor_2p6_wait_stream_off_status(cis_data);
        if (ret) {
                err("Must stream off\n");
                ret = -EINVAL;
@@ -505,15 +578,15 @@ int sensor_3p8_cis_set_size(struct v4l2_subdev *subdev, cis_shared_data *cis_dat
 
        binning = cis_data->binning;
        if (binning) {
-               ratio_w = (SENSOR_3P8_MAX_WIDTH / cis_data->cur_width);
-               ratio_h = (SENSOR_3P8_MAX_HEIGHT / cis_data->cur_height);
+               ratio_w = (SENSOR_2P6_MAX_WIDTH / cis_data->cur_width);
+               ratio_h = (SENSOR_2P6_MAX_HEIGHT / cis_data->cur_height);
        } else {
                ratio_w = 1;
                ratio_h = 1;
        }
 
-       if (((cis_data->cur_width * ratio_w) > SENSOR_3P8_MAX_WIDTH) ||
-               ((cis_data->cur_height * ratio_h) > SENSOR_3P8_MAX_HEIGHT)) {
+       if (((cis_data->cur_width * ratio_w) > SENSOR_2P6_MAX_WIDTH) ||
+               ((cis_data->cur_height * ratio_h) > SENSOR_2P6_MAX_HEIGHT)) {
                err("Config max sensor size over~!!\n");
                ret = -EINVAL;
                goto p_err;
@@ -525,8 +598,8 @@ int sensor_3p8_cis_set_size(struct v4l2_subdev *subdev, cis_shared_data *cis_dat
                 goto p_err;
 
        /* 2. pixel address region setting */
-       start_x = ((SENSOR_3P8_MAX_WIDTH - cis_data->cur_width * ratio_w) / 2) & (~0x1);
-       start_y = ((SENSOR_3P8_MAX_HEIGHT - cis_data->cur_height * ratio_h) / 2) & (~0x1);
+       start_x = ((SENSOR_2P6_MAX_WIDTH - cis_data->cur_width * ratio_w) / 2) & (~0x1);
+       start_y = ((SENSOR_2P6_MAX_HEIGHT - cis_data->cur_height * ratio_h) / 2) & (~0x1);
        end_x = start_x + (cis_data->cur_width * ratio_w - 1);
        end_y = start_y + (cis_data->cur_height * ratio_h - 1);
 
@@ -615,7 +688,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_stream_on(struct v4l2_subdev *subdev)
+int sensor_2p6_cis_stream_on(struct v4l2_subdev *subdev)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -645,11 +718,11 @@ int sensor_3p8_cis_stream_on(struct v4l2_subdev *subdev)
 
        dbg_sensor(1, "[MOD:D:%d] %s\n", cis->id, __func__);
 
-       ret = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+       ret = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
        if (ret < 0)
-               err("[%s] sensor_3p8_cis_group_param_hold_func fail\n", __func__);
+               err("[%s] sensor_2p6_cis_group_param_hold_func fail\n", __func__);
 
-#ifdef DEBUG_3P8_PLL
+#ifdef DEBUG_2P6_PLL
        {
        u16 pll;
        ret = fimc_is_sensor_read16(client, 0x0300, &pll);
@@ -695,7 +768,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_stream_off(struct v4l2_subdev *subdev)
+int sensor_2p6_cis_stream_off(struct v4l2_subdev *subdev)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -725,9 +798,9 @@ int sensor_3p8_cis_stream_off(struct v4l2_subdev *subdev)
 
        dbg_sensor(1, "[MOD:D:%d] %s\n", cis->id, __func__);
 
-       ret = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+       ret = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
        if (ret < 0)
-               err("[%s] sensor_3p8_cis_group_param_hold_func fail\n", __func__);
+               err("[%s] sensor_2p6_cis_group_param_hold_func fail\n", __func__);
 
        /* Sensor stream off */
        ret = fimc_is_sensor_write16(client, 0x6028, 0x4000);
@@ -748,7 +821,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_set_exposure_time(struct v4l2_subdev *subdev, struct ae_param *target_exposure)
+int sensor_2p6_cis_set_exposure_time(struct v4l2_subdev *subdev, struct ae_param *target_exposure)
 {
        int ret = 0;
        int hold = 0;
@@ -825,7 +898,7 @@ int sensor_3p8_cis_set_exposure_time(struct v4l2_subdev *subdev, struct ae_param
                short_coarse_int = cis_data->min_coarse_integration_time;
        }
 
-       hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x01);
+       hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x01);
        if (hold < 0) {
                ret = hold;
                goto p_err;
@@ -836,12 +909,14 @@ int sensor_3p8_cis_set_exposure_time(struct v4l2_subdev *subdev, struct ae_param
        if (ret < 0)
                goto p_err;
 
+#ifdef S5K2P6_USE_WDR
        /* Long exposure */
        if (cis_data->companion_data.enable_wdr == true) {
                ret = fimc_is_sensor_write16(client, 0x021E, long_coarse_int);
                if (ret < 0)
                        goto p_err;
        }
+#endif
 
        dbg_sensor(1, "[MOD:D:%d] %s, vsync_cnt(%d), vt_pic_clk_freq_mhz (%d),"
                KERN_CONT "line_length_pck(%d), min_fine_int (%d)\n", cis->id, __func__,
@@ -857,7 +932,7 @@ int sensor_3p8_cis_set_exposure_time(struct v4l2_subdev *subdev, struct ae_param
 
 p_err:
        if (hold > 0) {
-               hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+               hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
                if (hold < 0)
                        ret = hold;
        }
@@ -865,7 +940,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_min_exposure_time(struct v4l2_subdev *subdev, u32 *min_expo)
+int sensor_2p6_cis_get_min_exposure_time(struct v4l2_subdev *subdev, u32 *min_expo)
 {
        int ret = 0;
        struct fimc_is_cis *cis = NULL;
@@ -914,7 +989,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_max_exposure_time(struct v4l2_subdev *subdev, u32 *max_expo)
+int sensor_2p6_cis_get_max_exposure_time(struct v4l2_subdev *subdev, u32 *max_expo)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -976,7 +1051,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_adjust_frame_duration(struct v4l2_subdev *subdev,
+int sensor_2p6_cis_adjust_frame_duration(struct v4l2_subdev *subdev,
                                                u32 input_exposure_time,
                                                u32 *target_duration)
 {
@@ -1026,7 +1101,7 @@ int sensor_3p8_cis_adjust_frame_duration(struct v4l2_subdev *subdev,
        return ret;
 }
 
-int sensor_3p8_cis_set_frame_duration(struct v4l2_subdev *subdev, u32 frame_duration)
+int sensor_2p6_cis_set_frame_duration(struct v4l2_subdev *subdev, u32 frame_duration)
 {
        int ret = 0;
        int hold = 0;
@@ -1073,7 +1148,7 @@ int sensor_3p8_cis_set_frame_duration(struct v4l2_subdev *subdev, u32 frame_dura
                KERN_CONT "(line_length_pck%#x), frame_length_lines(%#x)\n",
                cis->id, __func__, vt_pic_clk_freq_mhz, frame_duration, line_length_pck, frame_length_lines);
 
-       hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x01);
+       hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x01);
        if (hold < 0) {
                ret = hold;
                goto p_err;
@@ -1094,7 +1169,7 @@ int sensor_3p8_cis_set_frame_duration(struct v4l2_subdev *subdev, u32 frame_dura
 
 p_err:
        if (hold > 0) {
-               hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+               hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
                if (hold < 0)
                        ret = hold;
        }
@@ -1102,7 +1177,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_set_frame_rate(struct v4l2_subdev *subdev, u32 min_fps)
+int sensor_2p6_cis_set_frame_rate(struct v4l2_subdev *subdev, u32 min_fps)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -1141,7 +1216,7 @@ int sensor_3p8_cis_set_frame_rate(struct v4l2_subdev *subdev, u32 min_fps)
        dbg_sensor(1, "[MOD:D:%d] %s, set FPS(%d), frame duration(%d)\n",
                        cis->id, __func__, min_fps, frame_duration);
 
-       ret = sensor_3p8_cis_set_frame_duration(subdev, frame_duration);
+       ret = sensor_2p6_cis_set_frame_duration(subdev, frame_duration);
        if (ret < 0) {
                err("[MOD:D:%d] %s, set frame duration is fail(%d)\n",
                        cis->id, __func__, ret);
@@ -1160,7 +1235,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_adjust_analog_gain(struct v4l2_subdev *subdev, u32 input_again, u32 *target_permile)
+int sensor_2p6_cis_adjust_analog_gain(struct v4l2_subdev *subdev, u32 input_again, u32 *target_permile)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -1206,7 +1281,7 @@ int sensor_3p8_cis_adjust_analog_gain(struct v4l2_subdev *subdev, u32 input_agai
        return ret;
 }
 
-int sensor_3p8_cis_set_analog_gain(struct v4l2_subdev *subdev, struct ae_param *again)
+int sensor_2p6_cis_set_analog_gain(struct v4l2_subdev *subdev, struct ae_param *again)
 {
        int ret = 0;
        int hold = 0;
@@ -1247,7 +1322,7 @@ int sensor_3p8_cis_set_analog_gain(struct v4l2_subdev *subdev, struct ae_param *
        dbg_sensor(1, "[MOD:D:%d] %s(vsync cnt = %d), input_again = %d us, analog_gain(%#x)\n",
                cis->id, __func__, cis->cis_data->sen_vsync_count, again->val, analog_gain);
 
-       hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x01);
+       hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x01);
        if (hold < 0) {
                ret = hold;
                goto p_err;
@@ -1264,7 +1339,7 @@ int sensor_3p8_cis_set_analog_gain(struct v4l2_subdev *subdev, struct ae_param *
 
 p_err:
        if (hold > 0) {
-               hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+               hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
                if (hold < 0)
                        ret = hold;
        }
@@ -1272,7 +1347,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_analog_gain(struct v4l2_subdev *subdev, u32 *again)
+int sensor_2p6_cis_get_analog_gain(struct v4l2_subdev *subdev, u32 *again)
 {
        int ret = 0;
        int hold = 0;
@@ -1300,7 +1375,7 @@ int sensor_3p8_cis_get_analog_gain(struct v4l2_subdev *subdev, u32 *again)
                goto p_err;
        }
 
-       hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x01);
+       hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x01);
        if (hold < 0) {
                ret = hold;
                goto p_err;
@@ -1322,7 +1397,7 @@ int sensor_3p8_cis_get_analog_gain(struct v4l2_subdev *subdev, u32 *again)
 
 p_err:
        if (hold > 0) {
-               hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+               hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
                if (hold < 0)
                        ret = hold;
        }
@@ -1330,7 +1405,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_min_analog_gain(struct v4l2_subdev *subdev, u32 *min_again)
+int sensor_2p6_cis_get_min_analog_gain(struct v4l2_subdev *subdev, u32 *min_again)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -1383,7 +1458,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_max_analog_gain(struct v4l2_subdev *subdev, u32 *max_again)
+int sensor_2p6_cis_get_max_analog_gain(struct v4l2_subdev *subdev, u32 *max_again)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -1436,7 +1511,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param *dgain)
+int sensor_2p6_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param *dgain)
 {
        int ret = 0;
        int hold = 0;
@@ -1490,7 +1565,7 @@ int sensor_3p8_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param
        dbg_sensor(1, "[MOD:D:%d] %s(vsync cnt = %d), input_dgain = %d/%d us, long_gain(%#x), short_gain(%#x)\n",
                        cis->id, __func__, cis->cis_data->sen_vsync_count, dgain->long_val, dgain->short_val, long_gain, short_gain);
 
-       hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x01);
+       hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x01);
        if (hold < 0) {
                ret = hold;
                goto p_err;
@@ -1502,6 +1577,7 @@ int sensor_3p8_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param
        if (ret < 0)
                goto p_err;
 
+#ifdef S5K2P6_USE_WDR
        /* Long digital gain */
        if (cis_data->companion_data.enable_wdr == true) {
                dgains[0] = dgains[1] = dgains[2] = dgains[3] = long_gain;
@@ -1509,6 +1585,7 @@ int sensor_3p8_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param
                if (ret < 0)
                        goto p_err;
        }
+#endif
 
 #ifdef DEBUG_SENSOR_TIME
        do_gettimeofday(&end);
@@ -1517,7 +1594,7 @@ int sensor_3p8_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param
 
 p_err:
        if (hold > 0) {
-               hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+               hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
                if (hold < 0)
                        ret = hold;
        }
@@ -1525,7 +1602,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_digital_gain(struct v4l2_subdev *subdev, u32 *dgain)
+int sensor_2p6_cis_get_digital_gain(struct v4l2_subdev *subdev, u32 *dgain)
 {
        int ret = 0;
        int hold = 0;
@@ -1553,7 +1630,7 @@ int sensor_3p8_cis_get_digital_gain(struct v4l2_subdev *subdev, u32 *dgain)
                goto p_err;
        }
 
-       hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x01);
+       hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x01);
        if (hold < 0) {
                ret = hold;
                goto p_err;
@@ -1575,7 +1652,7 @@ int sensor_3p8_cis_get_digital_gain(struct v4l2_subdev *subdev, u32 *dgain)
 
 p_err:
        if (hold > 0) {
-               hold = sensor_3p8_cis_group_param_hold_func(subdev, 0x00);
+               hold = sensor_2p6_cis_group_param_hold_func(subdev, 0x00);
                if (hold < 0)
                        ret = hold;
        }
@@ -1583,7 +1660,7 @@ p_err:
        return ret;
 }
 
-int sensor_3p8_cis_get_min_digital_gain(struct v4l2_subdev *subdev, u32 *min_dgain)
+int sensor_2p6_cis_get_min_digital_gain(struct v4l2_subdev *subdev, u32 *min_dgain)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -1604,7 +1681,7 @@ int sensor_3p8_cis_get_min_digital_gain(struct v4l2_subdev *subdev, u32 *min_dga
 
        cis_data = cis->cis_data;
 
-       /* 3P8 cannot read min/max digital gain */
+       /* 2P6 cannot read min/max digital gain */
        cis_data->min_digital_gain[0] = 0x0100;
 
        cis_data->min_digital_gain[1] = 1000;
@@ -1622,7 +1699,7 @@ int sensor_3p8_cis_get_min_digital_gain(struct v4l2_subdev *subdev, u32 *min_dga
        return ret;
 }
 
-int sensor_3p8_cis_get_max_digital_gain(struct v4l2_subdev *subdev, u32 *max_dgain)
+int sensor_2p6_cis_get_max_digital_gain(struct v4l2_subdev *subdev, u32 *max_dgain)
 {
        int ret = 0;
        struct fimc_is_cis *cis;
@@ -1643,7 +1720,7 @@ int sensor_3p8_cis_get_max_digital_gain(struct v4l2_subdev *subdev, u32 *max_dga
 
        cis_data = cis->cis_data;
 
-       /* 3P8 cannot read min/max digital gain */
+       /* 2P6 cannot read min/max digital gain */
        cis_data->max_digital_gain[0] = 0x1000;
 
        cis_data->max_digital_gain[1] = 16000;
@@ -1662,35 +1739,35 @@ int sensor_3p8_cis_get_max_digital_gain(struct v4l2_subdev *subdev, u32 *max_dga
 }
 
 static struct fimc_is_cis_ops cis_ops = {
-       .cis_init = sensor_3p8_cis_init,
-       .cis_log_status = sensor_3p8_cis_log_status,
-       .cis_group_param_hold = sensor_3p8_cis_group_param_hold,
-       .cis_set_global_setting = sensor_3p8_cis_set_global_setting,
-       .cis_mode_change = sensor_3p8_cis_mode_change,
-       .cis_set_size = sensor_3p8_cis_set_size,
-       .cis_stream_on = sensor_3p8_cis_stream_on,
-       .cis_stream_off = sensor_3p8_cis_stream_off,
-       .cis_set_exposure_time = sensor_3p8_cis_set_exposure_time,
-       .cis_get_min_exposure_time = sensor_3p8_cis_get_min_exposure_time,
-       .cis_get_max_exposure_time = sensor_3p8_cis_get_max_exposure_time,
-       .cis_adjust_frame_duration = sensor_3p8_cis_adjust_frame_duration,
-       .cis_set_frame_duration = sensor_3p8_cis_set_frame_duration,
-       .cis_set_frame_rate = sensor_3p8_cis_set_frame_rate,
-       .cis_adjust_analog_gain = sensor_3p8_cis_adjust_analog_gain,
-       .cis_set_analog_gain = sensor_3p8_cis_set_analog_gain,
-       .cis_get_analog_gain = sensor_3p8_cis_get_analog_gain,
-       .cis_get_min_analog_gain = sensor_3p8_cis_get_min_analog_gain,
-       .cis_get_max_analog_gain = sensor_3p8_cis_get_max_analog_gain,
-       .cis_set_digital_gain = sensor_3p8_cis_set_digital_gain,
-       .cis_get_digital_gain = sensor_3p8_cis_get_digital_gain,
-       .cis_get_min_digital_gain = sensor_3p8_cis_get_min_digital_gain,
-       .cis_get_max_digital_gain = sensor_3p8_cis_get_max_digital_gain,
+       .cis_init = sensor_2p6_cis_init,
+       .cis_log_status = sensor_2p6_cis_log_status,
+       .cis_group_param_hold = sensor_2p6_cis_group_param_hold,
+       .cis_set_global_setting = sensor_2p6_cis_set_global_setting,
+       .cis_mode_change = sensor_2p6_cis_mode_change,
+       .cis_set_size = sensor_2p6_cis_set_size,
+       .cis_stream_on = sensor_2p6_cis_stream_on,
+       .cis_stream_off = sensor_2p6_cis_stream_off,
+       .cis_set_exposure_time = sensor_2p6_cis_set_exposure_time,
+       .cis_get_min_exposure_time = sensor_2p6_cis_get_min_exposure_time,
+       .cis_get_max_exposure_time = sensor_2p6_cis_get_max_exposure_time,
+       .cis_adjust_frame_duration = sensor_2p6_cis_adjust_frame_duration,
+       .cis_set_frame_duration = sensor_2p6_cis_set_frame_duration,
+       .cis_set_frame_rate = sensor_2p6_cis_set_frame_rate,
+       .cis_adjust_analog_gain = sensor_2p6_cis_adjust_analog_gain,
+       .cis_set_analog_gain = sensor_2p6_cis_set_analog_gain,
+       .cis_get_analog_gain = sensor_2p6_cis_get_analog_gain,
+       .cis_get_min_analog_gain = sensor_2p6_cis_get_min_analog_gain,
+       .cis_get_max_analog_gain = sensor_2p6_cis_get_max_analog_gain,
+       .cis_set_digital_gain = sensor_2p6_cis_set_digital_gain,
+       .cis_get_digital_gain = sensor_2p6_cis_get_digital_gain,
+       .cis_get_min_digital_gain = sensor_2p6_cis_get_min_digital_gain,
+       .cis_get_max_digital_gain = sensor_2p6_cis_get_max_digital_gain,
        .cis_compensate_gain_for_extremely_br = sensor_cis_compensate_gain_for_extremely_br,
        .cis_wait_streamoff = sensor_cis_wait_streamoff,
        .cis_wait_streamon = sensor_cis_wait_streamon,
 };
 
-int cis_3p8_probe(struct i2c_client *client,
+int cis_2p6_probe(struct i2c_client *client,
        const struct i2c_device_id *id)
 {
        int ret = 0;
@@ -1732,7 +1809,7 @@ int cis_3p8_probe(struct i2c_client *client,
 
        device = &core->sensor[sensor_id];
 
-       sensor_peri = find_peri_by_cis_id(device, SENSOR_NAME_S5K3P8);
+       sensor_peri = find_peri_by_cis_id(device, SENSOR_NAME_S5K2P6);
        if (!sensor_peri) {
                probe_info("sensor peri is net yet probed");
                return -EPROBE_DEFER;
@@ -1753,7 +1830,7 @@ int cis_3p8_probe(struct i2c_client *client,
        }
        sensor_peri->subdev_cis = subdev_cis;
 
-       cis->id = SENSOR_NAME_S5K3P8;
+       cis->id = SENSOR_NAME_S5K2P6;
        cis->subdev = subdev_cis;
        cis->device = 0;
        cis->client = client;
@@ -1800,28 +1877,28 @@ int cis_3p8_probe(struct i2c_client *client,
        if (strcmp(setfile, "default") == 0 ||
                        strcmp(setfile, "setA") == 0) {
                probe_info("%s : setfile_A for Non-PDAF\n", __func__);
-               sensor_3p8_global = sensor_3p8_setfile_A_Global;
-               sensor_3p8_global_size = sizeof(sensor_3p8_setfile_A_Global) / sizeof(sensor_3p8_setfile_A_Global[0]);
-               sensor_3p8_setfiles = sensor_3p8_setfiles_A;
-               sensor_3p8_setfile_sizes = sensor_3p8_setfile_A_sizes;
-               sensor_3p8_max_setfile_num = sizeof(sensor_3p8_setfiles_A) / sizeof(sensor_3p8_setfiles_A[0]);
-               sensor_3p8_pllinfos = sensor_3p8_pllinfos_A;
+               sensor_2p6_global = sensor_2p6_setfile_A_Global;
+               sensor_2p6_global_size = sizeof(sensor_2p6_setfile_A_Global) / sizeof(sensor_2p6_setfile_A_Global[0]);
+               sensor_2p6_setfiles = sensor_2p6_setfiles_A;
+               sensor_2p6_setfile_sizes = sensor_2p6_setfile_A_sizes;
+               sensor_2p6_max_setfile_num = sizeof(sensor_2p6_setfiles_A) / sizeof(sensor_2p6_setfiles_A[0]);
+               sensor_2p6_pllinfos = sensor_2p6_pllinfos_A;
        } else if (strcmp(setfile, "setB") == 0) {
                probe_info("%s setfile_B for PDAF\n", __func__);
-               sensor_3p8_pdaf_global = sensor_3p8_setfile_B_Global;
-               sensor_3p8_pdaf_global_size = sizeof(sensor_3p8_setfile_B_Global) / sizeof(sensor_3p8_setfile_B_Global[0]);
-               sensor_3p8_pdaf_setfiles = sensor_3p8_setfiles_B;
-               sensor_3p8_pdaf_setfile_sizes = sensor_3p8_setfile_B_sizes;
-               sensor_3p8_pdaf_max_setfile_num = sizeof(sensor_3p8_setfiles_B) / sizeof(sensor_3p8_setfiles_B[0]);
-               sensor_3p8_pdaf_pllinfos = sensor_3p8_pllinfos_B;
+               sensor_2p6_pdaf_global = sensor_2p6_setfile_B_Global;
+               sensor_2p6_pdaf_global_size = sizeof(sensor_2p6_setfile_B_Global) / sizeof(sensor_2p6_setfile_B_Global[0]);
+               sensor_2p6_pdaf_setfiles = sensor_2p6_setfiles_B;
+               sensor_2p6_pdaf_setfile_sizes = sensor_2p6_setfile_B_sizes;
+               sensor_2p6_pdaf_max_setfile_num = sizeof(sensor_2p6_setfiles_B) / sizeof(sensor_2p6_setfiles_B[0]);
+               sensor_2p6_pdaf_pllinfos = sensor_2p6_pllinfos_B;
        } else {
                err("%s setfile index out of bound, take default (setfile_A)", __func__);
-               sensor_3p8_global = sensor_3p8_setfile_A_Global;
-               sensor_3p8_global_size = sizeof(sensor_3p8_setfile_A_Global) / sizeof(sensor_3p8_setfile_A_Global[0]);
-               sensor_3p8_setfiles = sensor_3p8_setfiles_A;
-               sensor_3p8_setfile_sizes = sensor_3p8_setfile_A_sizes;
-               sensor_3p8_max_setfile_num = sizeof(sensor_3p8_setfiles_A) / sizeof(sensor_3p8_setfiles_A[0]);
-               sensor_3p8_pllinfos = sensor_3p8_pllinfos_A;
+               sensor_2p6_global = sensor_2p6_setfile_A_Global;
+               sensor_2p6_global_size = sizeof(sensor_2p6_setfile_A_Global) / sizeof(sensor_2p6_setfile_A_Global[0]);
+               sensor_2p6_setfiles = sensor_2p6_setfiles_A;
+               sensor_2p6_setfile_sizes = sensor_2p6_setfile_A_sizes;
+               sensor_2p6_max_setfile_num = sizeof(sensor_2p6_setfiles_A) / sizeof(sensor_2p6_setfiles_A[0]);
+               sensor_2p6_pllinfos = sensor_2p6_pllinfos_A;
        }
 
        v4l2_i2c_subdev_init(subdev_cis, client, &subdev_ops);
@@ -1835,33 +1912,33 @@ p_err:
        return ret;
 }
 
-static int cis_3p8_remove(struct i2c_client *client)
+static int cis_2p6_remove(struct i2c_client *client)
 {
        int ret = 0;
        return ret;
 }
 
-static const struct of_device_id exynos_fimc_is_cis_3p8_match[] = {
+static const struct of_device_id exynos_fimc_is_cis_2p6_match[] = {
        {
-               .compatible = "samsung,exynos5-fimc-is-cis-3p8",
+               .compatible = "samsung,exynos5-fimc-is-cis-2p6",
        },
        {},
 };
-MODULE_DEVICE_TABLE(of, exynos_fimc_is_cis_3p8_match);
+MODULE_DEVICE_TABLE(of, exynos_fimc_is_cis_2p6_match);
 
-static const struct i2c_device_id cis_3p8_idt[] = {
+static const struct i2c_device_id cis_2p6_idt[] = {
        { SENSOR_NAME, 0 },
        {},
 };
 
-static struct i2c_driver cis_3p8_driver = {
+static struct i2c_driver cis_2p6_driver = {
        .driver = {
                .name   = SENSOR_NAME,
                .owner  = THIS_MODULE,
-               .of_match_table = exynos_fimc_is_cis_3p8_match
+               .of_match_table = exynos_fimc_is_cis_2p6_match
        },
-       .probe  = cis_3p8_probe,
-       .remove = cis_3p8_remove,
-       .id_table = cis_3p8_idt
+       .probe  = cis_2p6_probe,
+       .remove = cis_2p6_remove,
+       .id_table = cis_2p6_idt
 };
-module_i2c_driver(cis_3p8_driver);
+module_i2c_driver(cis_2p6_driver);
index ea97c7d7a8ed318b0d5ab00217eea05322c07b4f..b6b658c66ae12a8c0fea46fe93d366a409c7ed48 100644 (file)
@@ -9,23 +9,25 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef FIMC_IS_CIS_3P8_H
-#define FIMC_IS_CIS_3P8_H
+#ifndef FIMC_IS_CIS_2P6_H
+#define FIMC_IS_CIS_2P6_H
 
 #include "fimc-is-cis.h"
 
 #define EXT_CLK_Mhz (26)
 
-#define SENSOR_3P8_MAX_WIDTH           (4608 + 16)
-#define SENSOR_3P8_MAX_HEIGHT          (3456 + 10)
+#define SENSOR_2P6_MAX_WIDTH           (4608 + 16)
+#define SENSOR_2P6_MAX_HEIGHT          (3456 + 12)
 
 /* TODO: Check below values are valid */
-#define SENSOR_3P8_FINE_INTEGRATION_TIME_MIN                0x0618
-#define SENSOR_3P8_FINE_INTEGRATION_TIME_MAX                0x0618
-#define SENSOR_3P8_COARSE_INTEGRATION_TIME_MIN              0x07
-#define SENSOR_3P8_COARSE_INTEGRATION_TIME_MAX_MARGIN       0x08
+#define SENSOR_2P6_FINE_INTEGRATION_TIME_MIN                0x0618
+#define SENSOR_2P6_FINE_INTEGRATION_TIME_MAX                0x0618
+#define SENSOR_2P6_COARSE_INTEGRATION_TIME_MIN              0x07
+#define SENSOR_2P6_COARSE_INTEGRATION_TIME_MAX_MARGIN       0x08
 
 #define USE_GROUP_PARAM_HOLD   (0)
 
+#define S5K2P6_USE_COMPACT_PLL_INFO
+
 #endif
 
index e638000e085da6afd74007d6b26e7cb8ee781129..20619e761a14b4034589538bf85a7992bca02f3f 100644 (file)
@@ -56,15 +56,15 @@ static struct fimc_is_sensor_cfg config_module_2p6[] = {
        /* 4624x2624@30fps */
        FIMC_IS_SENSOR_CFG_EXT(4624, 2624, 30, 32, 1, CSI_DATA_LANES_4, 0, SET_VC(VC_TAIL_MODE_PDAF, 144, 640), 0, 0),
        /* 2312x1734@30fps */
-       FIMC_IS_SENSOR_CFG(2312, 1734, 30, 32, 3, CSI_DATA_LANES_4),
+       FIMC_IS_SENSOR_CFG(2312, 1734, 30, 32, 2, CSI_DATA_LANES_4),
        /* 2312x1734@15fps */
-       FIMC_IS_SENSOR_CFG(2312, 1734, 15, 32, 4, CSI_DATA_LANES_4),
+       FIMC_IS_SENSOR_CFG(2312, 1734, 15, 32, 3, CSI_DATA_LANES_4),
        /* 2312x1312@30fps */
-       FIMC_IS_SENSOR_CFG(2312, 1312, 30, 32, 6, CSI_DATA_LANES_4),
+       FIMC_IS_SENSOR_CFG(2312, 1312, 30, 32, 4, CSI_DATA_LANES_4),
        /* 1156x864@120fps */
-       FIMC_IS_SENSOR_CFG(1156, 864, 120, 32, 7, CSI_DATA_LANES_4),
+       FIMC_IS_SENSOR_CFG(1156, 864, 120, 32, 5, CSI_DATA_LANES_4),
        /* 1156x656@120fps */
-       FIMC_IS_SENSOR_CFG(1156, 656, 120, 32, 8, CSI_DATA_LANES_4),
+       FIMC_IS_SENSOR_CFG(1156, 656, 120, 32, 6, CSI_DATA_LANES_4),
 };
 
 static struct fimc_is_vci vci_module_2p6[] = {
@@ -92,12 +92,17 @@ static const struct v4l2_subdev_core_ops core_ops = {
 
 static const struct v4l2_subdev_video_ops video_ops = {
        .s_stream = sensor_module_s_stream,
-       .s_mbus_fmt = sensor_module_s_format,
+       .s_parm = sensor_module_s_param
+};
+
+static const struct v4l2_subdev_pad_ops pad_ops = {
+       .set_fmt = sensor_module_s_format
 };
 
 static const struct v4l2_subdev_ops subdev_ops = {
        .core = &core_ops,
        .video = &video_ops,
+       .pad = &pad_ops
 };
 
 static int sensor_module_2p6_power_setpin_with_af(struct platform_device *pdev,
@@ -652,7 +657,6 @@ int sensor_module_2p6_probe(struct platform_device *pdev)
 
        ext = &module->ext;
        ext->mipi_lane_num = module->lanes;
-       ext->I2CSclk = 0;
 
        ext->sensor_con.product_name = module->sensor_id;
        ext->sensor_con.peri_type = SE_I2C;