From e4ed7258bbf5a31adc22f57b9d11de12d1d6f00c Mon Sep 17 00:00:00 2001 From: Eunyoung Lee Date: Thu, 5 Jul 2018 18:47:03 +0900 Subject: [PATCH] [COMMON] fimc-is2: updated 2P6 sensor files (code sync) PR JIRA ID : CPR-38 Change-Id: I5473c467a4c04d69e65ccc5d9f850185e1b901e9 Signed-off-by: Eunyoung Lee --- .../cis/fimc-is-cis-2p6-setA.h | 791 ++++++------------ .../cis/fimc-is-cis-2p6-setB.h | 791 ++++++------------ .../module_framework/cis/fimc-is-cis-2p6.c | 168 +++- .../module_framework/cis/fimc-is-cis-2p6.h | 18 +- .../modules/fimc-is-device-module-2p6.c | 69 +- 5 files changed, 695 insertions(+), 1142 deletions(-) diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setA.h b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setA.h index 66350f46a08b..3eaf6380438a 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setA.h +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6-setA.h @@ -15,12 +15,10 @@ #include "fimc-is-cis.h" #include "fimc-is-cis-2p6.h" -const u32 sensor_2p6_setfile_A_Global[] = { -/*TODO*/ -}; +/* This setfile A is PDAF setting */ +/* Reference : S5K2P6SX_EVT0_Ver_0.12_20171026.xlsx */ -/* 4:3 16x10 margin, EXTCLK 26Mhz */ -const u32 sensor_2p6_setfile_A_4608x3456_30fps[] = { +const u32 sensor_2p6_setfile_A_Global[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, 0x0100, 0x0000, 0x02, @@ -52,705 +50,366 @@ const u32 sensor_2p6_setfile_A_4608x3456_30fps[] = { 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, + 0x30D6, 0x002B, 0x02, 0xB138, 0x0000, 0x02, - 0x31B0, 0x0008, 0x02, - 0x0340, 0x0E1A, 0x02, - 0x0342, 0x1428, 0x02, 0x0344, 0x0018, 0x02, - 0x0346, 0x0010, 0x02, 0x0348, 0x1217, 0x02, - 0x034A, 0x0D8F, 0x02, - 0x034C, 0x1200, 0x02, - 0x034E, 0x0D80, 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, + 0x3B02, 0x000F, 0x02, + 0x3B34, 0x0000, 0x02, + 0x3AD0, 0x0066, 0x02, + 0x3B0C, 0x0000, 0x02, + 0x3B3E, 0x001E, 0x02, + 0x3ADA, 0x0085, 0x02, + 0x3B16, 0x000F, 0x02, + 0x3B48, 0x0046, 0x02, + 0x3AE4, 0x00AD, 0x02, + 0x3B20, 0xFFE2, 0x02, + 0x3B52, 0x0000, 0x02, + 0x3AEE, 0x0085, 0x02, + 0x3E0E, 0x0FEF, 0x02, + 0x3E18, 0x1010, 0x02, + 0x3E22, 0x1018, 0x02, 0x6214, 0x7970, 0x02, }; -/* 16:9 16x10 margin, EXTCLK 26Mhz */ -const u32 sensor_2p6_setfile_A_4608x2592_30fps[] = { +/* 1. 4608 x 3456 / No-Bin, 4:3, 30fps / Support PDAF Tail, EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_A_4608x3456_30fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x30CE, 0x0000, 0x02, + 0x37F6, 0x0021, 0x02, + 0x3198, 0x0007, 0x02, + 0x319A, 0x0100, 0x02, + 0x3056, 0x0100, 0x02, + 0x602A, 0x1BB0, 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, + 0x0B0E, 0x0100, 0x02, + 0x30D8, 0x0100, 0x02, + 0x31B0, 0x0008, 0x02, + 0x0340, 0x0E1A, 0x02, + 0x0342, 0x1428, 0x02, + 0x0346, 0x0010, 0x02, + 0x034A, 0x0D8F, 0x02, + 0x034C, 0x1200, 0x02, + 0x034E, 0x0D80, 0x02, + 0x0900, 0x0011, 0x02, + 0x0386, 0x0001, 0x02, + 0x0400, 0x0000, 0x02, + 0x0404, 0x0000, 0x02, + 0x0306, 0x0061, 0x02, + 0x1130, 0x440E, 0x02, + 0x030E, 0x006F, 0x02, + 0x0202, 0x0E10, 0x02, + 0x021E, 0x0E10, 0x02, + 0x0216, 0x0000, 0x02, + 0x6214, 0x7970, 0x02, +}; + +/* 2. 4608 x 2624 / No-Bin, 16:9, 30fps / Support PDAF Tail , EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_A_4608x2624_30fps[] = { + 0xFCFC, 0x4000, 0x02, + 0x6028, 0x2000, 0x02, + 0x6214, 0x7971, 0x02, + 0x6218, 0x7150, 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, + 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, + 0x0B0E, 0x0100, 0x02, + 0x30D8, 0x0100, 0x02, + 0x31B0, 0x0008, 0x02, + 0x0340, 0x0E1A, 0x02, + 0x0342, 0x1428, 0x02, + 0x0346, 0x01B0, 0x02, + 0x034A, 0x0BEF, 0x02, + 0x034C, 0x1200, 0x02, + 0x034E, 0x0A40, 0x02, + 0x0900, 0x0011, 0x02, + 0x0386, 0x0001, 0x02, + 0x0400, 0x0000, 0x02, + 0x0404, 0x0000, 0x02, + 0x0306, 0x0061, 0x02, + 0x1130, 0x440E, 0x02, + 0x030E, 0x006F, 0x02, + 0x0202, 0x0E10, 0x02, + 0x021E, 0x0E10, 0x02, + 0x0216, 0x0000, 0x02, + 0x6214, 0x7970, 0x02, +}; + +/* 3. 4608 x 2240 / No-Bin, 18.5:9, 30fps / Support PDAF Tail , EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_A_4608x2240_30fps[] = { + 0xFCFC, 0x4000, 0x02, + 0x6028, 0x2000, 0x02, + 0x6214, 0x7971, 0x02, + 0x6218, 0x7150, 0x02, + 0x30CE, 0x0000, 0x02, + 0x37F6, 0x0021, 0x02, + 0x3198, 0x0007, 0x02, + 0x319A, 0x0100, 0x02, + 0x3056, 0x0100, 0x02, 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, - 0x0B0E, 0x0000, 0x02, - 0x30D4, 0x0001, 0x02, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0008, 0x02, 0x0340, 0x0E1A, 0x02, 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, - 0x0346, 0x01C0, 0x02, - 0x0348, 0x1217, 0x02, - 0x034A, 0x0BDF, 0x02, + 0x0346, 0x0270, 0x02, + 0x034A, 0x0B2F, 0x02, 0x034C, 0x1200, 0x02, - 0x034E, 0x0A20, 0x02, + 0x034E, 0x08C0, 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, + 0x0216, 0x0000, 0x02, 0x6214, 0x7970, 0x02, }; -/* 4:3 16x10 margin, EXTCLK 26Mhz */ +/* 4. 2304 x 1728 / 2-Bin, 4:3, 30fps / Support PDAF Tail, EXTCLK 26Mhz */ const u32 sensor_2p6_setfile_A_2304x1728_30fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0004, 0x02, 0x0340, 0x0E1A, 0x02, 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, 0x0346, 0x0010, 0x02, - 0x0348, 0x1217, 0x02, 0x034A, 0x0D8f, 0x02, 0x034C, 0x0900, 0x02, 0x034E, 0x06C0, 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, + 0x030E, 0x0068, 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 */ +/* 5. 2304 x 1728 / 2-Bin, 4:3, 15fps / Support PDAF Tail, EXTCLK 26Mhz */ const u32 sensor_2p6_setfile_A_2304x1728_15fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0004, 0x02, 0x0340, 0x1C34, 0x02, 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, 0x0346, 0x0010, 0x02, - 0x0348, 0x1217, 0x02, 0x034A, 0x0D8f, 0x02, 0x034C, 0x0900, 0x02, 0x034E, 0x06C0, 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, + 0x030E, 0x0068, 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_A_2304x1296_30fps[] = { +/* 6. 2304 x 1312 / 2-Bin, 16:9, 30fps / Support Tail Mode, EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_A_2304x1312_30fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, + 0x0B0E, 0x0100, 0x02, + 0x30D8, 0x0100, 0x02, + 0x31B0, 0x0004, 0x02, + 0x0340, 0x0AAA, 0x02, + 0x0342, 0x1AA8, 0x02, + 0x0346, 0x01B0, 0x02, + 0x034A, 0x0BEF, 0x02, + 0x034C, 0x0900, 0x02, + 0x034E, 0x0520, 0x02, + 0x0900, 0x0112, 0x02, + 0x0386, 0x0003, 0x02, + 0x0400, 0x0001, 0x02, + 0x0404, 0x0020, 0x02, + 0x0306, 0x0061, 0x02, + 0x1130, 0x440E, 0x02, + 0x030E, 0x0068, 0x02, + 0x0202, 0x0E10, 0x02, + 0x021E, 0x0E10, 0x02, + 0x0216, 0x0000, 0x02, + 0x6214, 0x7970, 0x02, +}; + +/* 7. 2304 x 1120 / 2-Bin, 18.5:9, 30fps / Support PDAF Tail , EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_A_2304x1120_30fps[] = { + 0xFCFC, 0x4000, 0x02, + 0x6028, 0x2000, 0x02, + 0x6214, 0x7971, 0x02, + 0x6218, 0x7150, 0x02, + 0x30CE, 0x0040, 0x02, + 0x37F6, 0x0031, 0x02, + 0x3198, 0x0066, 0x02, + 0x319A, 0x0000, 0x02, + 0x3056, 0x0100, 0x02, 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, - 0x0B0E, 0x0000, 0x02, - 0x30D4, 0x0001, 0x02, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0004, 0x02, - 0x0340, 0x0E1A, 0x02, - 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, - 0x0346, 0x01C0, 0x02, - 0x0348, 0x1217, 0x02, - 0x034A, 0x0BDF, 0x02, + 0x0340, 0x0937, 0x02, + 0x0342, 0x1ED8, 0x02, + 0x0346, 0x0270, 0x02, + 0x034A, 0x0B2F, 0x02, 0x034C, 0x0900, 0x02, - 0x034E, 0x0510, 0x02, + 0x034E, 0x0460, 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, + 0x030E, 0x0068, 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 */ +/* 8. 1152 x 864 / 4-Bin, 4:3, 120fps, EXTCLK 26Mhz */ const u32 sensor_2p6_setfile_A_1152x864_120fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, 0x1217, 0x02, 0x034A, 0x0D8F, 0x02, 0x034C, 0x0480, 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, + 0x030E, 0x0068, 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_A_1152x648_120fps[] = { +/* 9. 1152 x 656 / 4-Bin, 16:9, 120fps, EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_A_1152x656_120fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, 0x0018, 0x02, - 0x0346, 0x01C0, 0x02, - 0x0348, 0x1217, 0x02, - 0x034A, 0x0BDF, 0x02, + 0x0346, 0x01B0, 0x02, + 0x034A, 0x0BEF, 0x02, 0x034C, 0x0480, 0x02, - 0x034E, 0x0288, 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, + 0x030E, 0x0068, 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, }; @@ -763,7 +422,7 @@ const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4608x3456_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4608x2592_30fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4608x2624_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) */ @@ -771,7 +430,7 @@ const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4608x2592_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2304x1728_30fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_4608x2240_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) */ @@ -779,47 +438,62 @@ const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2304x1728_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; +const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2304x1728_30fps = { + EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ + 1352 * 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_2304x1728_15fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 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_2304x1296_30fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2304x1312_30fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 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) */ + 0x0AAA, /* frame_length_lines (0x0340) */ + 0x1AA8, /* line_length_pck (0x0342) */ +}; + +const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_2304x1120_30fps = { + EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ + 1352 * 1000 * 1000, /* mipi_datarate */ + 560440000, /* pclk = VT pix CLK * 4(this value is different by cis) */ + 0x0937, /* frame_length_lines (0x0340) */ + 0x1ED8, /* line_length_pck (0x0342) */ }; const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_1152x864_120fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 1000 * 1000, /* mipi_datarate */ 572000000, /* pclk = VT pix CLK * 4(this value is different by cis) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_1152x648_120fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_A_1152x656_120fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 1000 * 1000, /* mipi_datarate */ 572000000, /* pclk = VT pix CLK * 4(this value is different by cis) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; - #else -const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x3468_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x3456_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ 0x6F, /* secnd_pll_multiplier (0x030E) */ @@ -827,14 +501,14 @@ const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x3468_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x2592_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x2624_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ 0x6F, /* secnd_pll_multiplier (0x030E) */ @@ -842,18 +516,33 @@ const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x2592_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_A_2304x1728_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_A_4608x2240_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ 0x6F, /* secnd_pll_multiplier (0x030E) */ - 0x1C34, /* frame_length_lines (0x0340) */ + 0x0E1A, /* frame_length_lines (0x0340) */ + 0x1428, /* line_length_pck (0x0342) */ +}; + +const struct sensor_pll_info sensor_2p6_pllinfo_A_2304x1728_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ + + 0x04, /* secnd_pre_pll_clk_div(0x030C) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ + 0x0E1A, /* frame_length_lines (0x0340) */ 0x1428, /* line_length_pck (0x0342) */ }; @@ -863,28 +552,43 @@ const struct sensor_pll_info sensor_2p6_pllinfo_A_2304x1728_15fps = { 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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ - 0x6F, /* secnd_pll_multiplier (0x030E) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ 0x1C34, /* frame_length_lines (0x0340) */ 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_A_2304x1296_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_A_2304x1312_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 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) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ + 0x0AAA, /* frame_length_lines (0x0340) */ + 0x1AA8, /* line_length_pck (0x0342) */ +}; + +const struct sensor_pll_info sensor_2p6_pllinfo_A_2304x1120_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ + + 0x04, /* secnd_pre_pll_clk_div(0x030C) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ + 0x0937, /* frame_length_lines (0x0340) */ + 0x1ED8, /* line_length_pck (0x0342) */ }; const struct sensor_pll_info sensor_2p6_pllinfo_A_1152x864_120fps = { @@ -893,26 +597,26 @@ const struct sensor_pll_info sensor_2p6_pllinfo_A_1152x864_120fps = { 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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ - 0x6F, /* secnd_pll_multiplier (0x030E) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_A_1152x648_120fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_A_1152x656_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ - 0x6F, /* secnd_pll_multiplier (0x030E) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; @@ -921,38 +625,45 @@ const struct sensor_pll_info sensor_2p6_pllinfo_A_1152x648_120fps = { static const u32 *sensor_2p6_setfiles_A[] = { /* 16x12 margin */ sensor_2p6_setfile_A_4608x3456_30fps, - sensor_2p6_setfile_A_4608x2592_30fps, + sensor_2p6_setfile_A_4608x2624_30fps, + sensor_2p6_setfile_A_4608x2240_30fps, sensor_2p6_setfile_A_2304x1728_30fps, sensor_2p6_setfile_A_2304x1728_15fps, - sensor_2p6_setfile_A_2304x1296_30fps, + sensor_2p6_setfile_A_2304x1312_30fps, + sensor_2p6_setfile_A_2304x1120_30fps, sensor_2p6_setfile_A_1152x864_120fps, - sensor_2p6_setfile_A_1152x648_120fps, + sensor_2p6_setfile_A_1152x656_120fps, }; static const u32 sensor_2p6_setfile_A_sizes[] = { /* 16x12 margin */ sizeof(sensor_2p6_setfile_A_4608x3456_30fps) / sizeof(sensor_2p6_setfile_A_4608x3456_30fps[0]), - sizeof(sensor_2p6_setfile_A_4608x2592_30fps) / sizeof(sensor_2p6_setfile_A_4608x2592_30fps[0]), + sizeof(sensor_2p6_setfile_A_4608x2624_30fps) / sizeof(sensor_2p6_setfile_A_4608x2624_30fps[0]), + sizeof(sensor_2p6_setfile_A_4608x2240_30fps) / sizeof(sensor_2p6_setfile_A_4608x2240_30fps[0]), sizeof(sensor_2p6_setfile_A_2304x1728_30fps) / sizeof(sensor_2p6_setfile_A_2304x1728_30fps[0]), sizeof(sensor_2p6_setfile_A_2304x1728_15fps) / sizeof(sensor_2p6_setfile_A_2304x1728_15fps[0]), - sizeof(sensor_2p6_setfile_A_2304x1296_30fps) / sizeof(sensor_2p6_setfile_A_2304x1296_30fps[0]), + sizeof(sensor_2p6_setfile_A_2304x1312_30fps) / sizeof(sensor_2p6_setfile_A_2304x1312_30fps[0]), + sizeof(sensor_2p6_setfile_A_2304x1120_30fps) / sizeof(sensor_2p6_setfile_A_2304x1120_30fps[0]), sizeof(sensor_2p6_setfile_A_1152x864_120fps) / sizeof(sensor_2p6_setfile_A_1152x864_120fps[0]), - sizeof(sensor_2p6_setfile_A_1152x648_120fps) / sizeof(sensor_2p6_setfile_A_1152x648_120fps[0]), + sizeof(sensor_2p6_setfile_A_1152x656_120fps) / sizeof(sensor_2p6_setfile_A_1152x656_120fps[0]), }; #ifdef S5K2P6_USE_COMPACT_PLL_INFO -static const struct sensor_pll_info_compact *sensor_2p6_pllinfos_A[] = { +static const struct sensor_pll_info_compact *sensor_2p6_pllinfos_A[] = #else -static const struct sensor_pll_info *sensor_2p6_pllinfos_A[] = { +static const struct sensor_pll_info *sensor_2p6_pllinfos_A[] = #endif +{ /* 16x12 margin */ &sensor_2p6_pllinfo_A_4608x3456_30fps, - &sensor_2p6_pllinfo_A_4608x2592_30fps, + &sensor_2p6_pllinfo_A_4608x2624_30fps, + &sensor_2p6_pllinfo_A_4608x2240_30fps, &sensor_2p6_pllinfo_A_2304x1728_30fps, &sensor_2p6_pllinfo_A_2304x1728_15fps, - &sensor_2p6_pllinfo_A_2304x1296_30fps, + &sensor_2p6_pllinfo_A_2304x1312_30fps, + &sensor_2p6_pllinfo_A_2304x1120_30fps, &sensor_2p6_pllinfo_A_1152x864_120fps, - &sensor_2p6_pllinfo_A_1152x648_120fps, + &sensor_2p6_pllinfo_A_1152x656_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 index 99b7061ce667..3529ca57f685 100644 --- 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 @@ -15,12 +15,10 @@ #include "fimc-is-cis.h" #include "fimc-is-cis-2p6.h" -const u32 sensor_2p6_setfile_B_Global[] = { -/*TODO*/ -}; +/* This setfile B is PDAF setting */ +/* Reference : S5K2P6SX_EVT0_Ver_0.12_20171026.xlsx */ -/* 4:3 16x10 margin, EXTCLK 26Mhz */ -const u32 sensor_2p6_setfile_B_4608x3456_30fps[] = { +const u32 sensor_2p6_setfile_B_Global[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, 0x0100, 0x0000, 0x02, @@ -52,705 +50,366 @@ const u32 sensor_2p6_setfile_B_4608x3456_30fps[] = { 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, + 0x30D6, 0x002B, 0x02, 0xB138, 0x0000, 0x02, - 0x31B0, 0x0008, 0x02, - 0x0340, 0x0E1A, 0x02, - 0x0342, 0x1428, 0x02, 0x0344, 0x0018, 0x02, - 0x0346, 0x0010, 0x02, 0x0348, 0x1217, 0x02, - 0x034A, 0x0D8F, 0x02, - 0x034C, 0x1200, 0x02, - 0x034E, 0x0D80, 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, + 0x3B02, 0x000F, 0x02, + 0x3B34, 0x0000, 0x02, + 0x3AD0, 0x0066, 0x02, + 0x3B0C, 0x0000, 0x02, + 0x3B3E, 0x001E, 0x02, + 0x3ADA, 0x0085, 0x02, + 0x3B16, 0x000F, 0x02, + 0x3B48, 0x0046, 0x02, + 0x3AE4, 0x00AD, 0x02, + 0x3B20, 0xFFE2, 0x02, + 0x3B52, 0x0000, 0x02, + 0x3AEE, 0x0085, 0x02, + 0x3E0E, 0x0FEF, 0x02, + 0x3E18, 0x1010, 0x02, + 0x3E22, 0x1018, 0x02, 0x6214, 0x7970, 0x02, }; -/* 16:9 16x10 margin, EXTCLK 26Mhz */ -const u32 sensor_2p6_setfile_B_4608x2592_30fps[] = { +/* 1. 4608 x 3456 / No-Bin, 4:3, 30fps / Support PDAF Tail, EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_B_4608x3456_30fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x30CE, 0x0000, 0x02, + 0x37F6, 0x0021, 0x02, + 0x3198, 0x0007, 0x02, + 0x319A, 0x0100, 0x02, + 0x3056, 0x0100, 0x02, + 0x602A, 0x1BB0, 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, + 0x0B0E, 0x0100, 0x02, + 0x30D8, 0x0100, 0x02, + 0x31B0, 0x0008, 0x02, + 0x0340, 0x0E1A, 0x02, + 0x0342, 0x1428, 0x02, + 0x0346, 0x0010, 0x02, + 0x034A, 0x0D8F, 0x02, + 0x034C, 0x1200, 0x02, + 0x034E, 0x0D80, 0x02, + 0x0900, 0x0011, 0x02, + 0x0386, 0x0001, 0x02, + 0x0400, 0x0000, 0x02, + 0x0404, 0x0000, 0x02, + 0x0306, 0x0061, 0x02, + 0x1130, 0x440E, 0x02, + 0x030E, 0x006F, 0x02, + 0x0202, 0x0E10, 0x02, + 0x021E, 0x0E10, 0x02, + 0x0216, 0x0000, 0x02, + 0x6214, 0x7970, 0x02, +}; + +/* 2. 4608 x 2624 / No-Bin, 16:9, 30fps / Support PDAF Tail , EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_B_4608x2624_30fps[] = { + 0xFCFC, 0x4000, 0x02, + 0x6028, 0x2000, 0x02, + 0x6214, 0x7971, 0x02, + 0x6218, 0x7150, 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, + 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, + 0x0B0E, 0x0100, 0x02, + 0x30D8, 0x0100, 0x02, + 0x31B0, 0x0008, 0x02, + 0x0340, 0x0E1A, 0x02, + 0x0342, 0x1428, 0x02, + 0x0346, 0x01B0, 0x02, + 0x034A, 0x0BEF, 0x02, + 0x034C, 0x1200, 0x02, + 0x034E, 0x0A40, 0x02, + 0x0900, 0x0011, 0x02, + 0x0386, 0x0001, 0x02, + 0x0400, 0x0000, 0x02, + 0x0404, 0x0000, 0x02, + 0x0306, 0x0061, 0x02, + 0x1130, 0x440E, 0x02, + 0x030E, 0x006F, 0x02, + 0x0202, 0x0E10, 0x02, + 0x021E, 0x0E10, 0x02, + 0x0216, 0x0000, 0x02, + 0x6214, 0x7970, 0x02, +}; + +/* 3. 4608 x 2240 / No-Bin, 18.5:9, 30fps / Support PDAF Tail , EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_B_4608x2240_30fps[] = { + 0xFCFC, 0x4000, 0x02, + 0x6028, 0x2000, 0x02, + 0x6214, 0x7971, 0x02, + 0x6218, 0x7150, 0x02, + 0x30CE, 0x0000, 0x02, + 0x37F6, 0x0021, 0x02, + 0x3198, 0x0007, 0x02, + 0x319A, 0x0100, 0x02, + 0x3056, 0x0100, 0x02, 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, - 0x0B0E, 0x0000, 0x02, - 0x30D4, 0x0001, 0x02, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0008, 0x02, 0x0340, 0x0E1A, 0x02, 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, - 0x0346, 0x01C0, 0x02, - 0x0348, 0x1217, 0x02, - 0x034A, 0x0BDF, 0x02, + 0x0346, 0x0270, 0x02, + 0x034A, 0x0B2F, 0x02, 0x034C, 0x1200, 0x02, - 0x034E, 0x0A20, 0x02, + 0x034E, 0x08C0, 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, + 0x0216, 0x0000, 0x02, 0x6214, 0x7970, 0x02, }; -/* 4:3 16x10 margin, EXTCLK 26Mhz */ +/* 4. 2304 x 1728 / 2-Bin, 4:3, 30fps / Support PDAF Tail, EXTCLK 26Mhz */ const u32 sensor_2p6_setfile_B_2304x1728_30fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0004, 0x02, 0x0340, 0x0E1A, 0x02, 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, 0x0346, 0x0010, 0x02, - 0x0348, 0x1217, 0x02, 0x034A, 0x0D8f, 0x02, 0x034C, 0x0900, 0x02, 0x034E, 0x06C0, 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, + 0x030E, 0x0068, 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 */ +/* 5. 2304 x 1728 / 2-Bin, 4:3, 15fps / Support PDAF Tail, EXTCLK 26Mhz */ const u32 sensor_2p6_setfile_B_2304x1728_15fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0004, 0x02, 0x0340, 0x1C34, 0x02, 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, 0x0346, 0x0010, 0x02, - 0x0348, 0x1217, 0x02, 0x034A, 0x0D8f, 0x02, 0x034C, 0x0900, 0x02, 0x034E, 0x06C0, 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, + 0x030E, 0x0068, 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_2304x1296_30fps[] = { +/* 6. 2304 x 1312 / 2-Bin, 16:9, 30fps / Support Tail Mode, EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_B_2304x1312_30fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, + 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, + 0x0B0E, 0x0100, 0x02, + 0x30D8, 0x0100, 0x02, + 0x31B0, 0x0004, 0x02, + 0x0340, 0x0AAA, 0x02, + 0x0342, 0x1AA8, 0x02, + 0x0346, 0x01B0, 0x02, + 0x034A, 0x0BEF, 0x02, + 0x034C, 0x0900, 0x02, + 0x034E, 0x0520, 0x02, + 0x0900, 0x0112, 0x02, + 0x0386, 0x0003, 0x02, + 0x0400, 0x0001, 0x02, + 0x0404, 0x0020, 0x02, + 0x0306, 0x0061, 0x02, + 0x1130, 0x440E, 0x02, + 0x030E, 0x0068, 0x02, + 0x0202, 0x0E10, 0x02, + 0x021E, 0x0E10, 0x02, + 0x0216, 0x0000, 0x02, + 0x6214, 0x7970, 0x02, +}; + +/* 7. 2304 x 1120 / 2-Bin, 18.5:9, 30fps / Support PDAF Tail , EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_B_2304x1120_30fps[] = { + 0xFCFC, 0x4000, 0x02, + 0x6028, 0x2000, 0x02, + 0x6214, 0x7971, 0x02, + 0x6218, 0x7150, 0x02, + 0x30CE, 0x0040, 0x02, + 0x37F6, 0x0031, 0x02, + 0x3198, 0x0066, 0x02, + 0x319A, 0x0000, 0x02, + 0x3056, 0x0100, 0x02, 0x602A, 0x1BB0, 0x02, 0x6F12, 0x0000, 0x02, - 0x0B0E, 0x0000, 0x02, - 0x30D4, 0x0001, 0x02, + 0x0B0E, 0x0100, 0x02, 0x30D8, 0x0100, 0x02, - 0xB138, 0x0000, 0x02, 0x31B0, 0x0004, 0x02, - 0x0340, 0x0E1A, 0x02, - 0x0342, 0x1428, 0x02, - 0x0344, 0x0018, 0x02, - 0x0346, 0x01C0, 0x02, - 0x0348, 0x1217, 0x02, - 0x034A, 0x0BDF, 0x02, + 0x0340, 0x0937, 0x02, + 0x0342, 0x1ED8, 0x02, + 0x0346, 0x0270, 0x02, + 0x034A, 0x0B2F, 0x02, 0x034C, 0x0900, 0x02, - 0x034E, 0x0510, 0x02, + 0x034E, 0x0460, 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, + 0x030E, 0x0068, 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 */ +/* 8. 1152 x 864 / 4-Bin, 4:3, 120fps, EXTCLK 26Mhz */ const u32 sensor_2p6_setfile_B_1152x864_120fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, 0x1217, 0x02, 0x034A, 0x0D8F, 0x02, 0x034C, 0x0480, 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, + 0x030E, 0x0068, 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_1152x648_120fps[] = { +/* 9. 1152 x 656 / 4-Bin, 16:9, 120fps, EXTCLK 26Mhz */ +const u32 sensor_2p6_setfile_B_1152x656_120fps[] = { 0xFCFC, 0x4000, 0x02, 0x6028, 0x2000, 0x02, - 0x0100, 0x0000, 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, 0x0018, 0x02, - 0x0346, 0x01C0, 0x02, - 0x0348, 0x1217, 0x02, - 0x034A, 0x0BDF, 0x02, + 0x0346, 0x01B0, 0x02, + 0x034A, 0x0BEF, 0x02, 0x034C, 0x0480, 0x02, - 0x034E, 0x0288, 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, + 0x030E, 0x0068, 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, }; @@ -763,7 +422,7 @@ const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4608x3456_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4608x2592_30fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4608x2624_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) */ @@ -771,7 +430,7 @@ const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4608x2592_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2304x1728_30fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_4608x2240_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) */ @@ -779,47 +438,62 @@ const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2304x1728_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; +const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2304x1728_30fps = { + EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ + 1352 * 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_2304x1728_15fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 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_2304x1296_30fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2304x1312_30fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 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) */ + 0x0AAA, /* frame_length_lines (0x0340) */ + 0x1AA8, /* line_length_pck (0x0342) */ +}; + +const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_2304x1120_30fps = { + EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ + 1352 * 1000 * 1000, /* mipi_datarate */ + 560440000, /* pclk = VT pix CLK * 4(this value is different by cis) */ + 0x0937, /* frame_length_lines (0x0340) */ + 0x1ED8, /* line_length_pck (0x0342) */ }; const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_1152x864_120fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 1000 * 1000, /* mipi_datarate */ 572000000, /* pclk = VT pix CLK * 4(this value is different by cis) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_1152x648_120fps = { +const struct sensor_pll_info_compact sensor_2p6_pllinfo_B_1152x656_120fps = { EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */ - 1443 * 1000 * 1000, /* mipi_datarate */ + 1352 * 1000 * 1000, /* mipi_datarate */ 572000000, /* pclk = VT pix CLK * 4(this value is different by cis) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; - #else -const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x3468_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x3456_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ 0x6F, /* secnd_pll_multiplier (0x030E) */ @@ -827,14 +501,14 @@ const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x3468_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x2592_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x2624_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ 0x6F, /* secnd_pll_multiplier (0x030E) */ @@ -842,18 +516,33 @@ const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x2592_30fps = { 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_B_2304x1728_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_B_4608x2240_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ 0x6F, /* secnd_pll_multiplier (0x030E) */ - 0x1C34, /* frame_length_lines (0x0340) */ + 0x0E1A, /* frame_length_lines (0x0340) */ + 0x1428, /* line_length_pck (0x0342) */ +}; + +const struct sensor_pll_info sensor_2p6_pllinfo_B_2304x1728_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ + + 0x04, /* secnd_pre_pll_clk_div(0x030C) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ + 0x0E1A, /* frame_length_lines (0x0340) */ 0x1428, /* line_length_pck (0x0342) */ }; @@ -863,28 +552,43 @@ const struct sensor_pll_info sensor_2p6_pllinfo_B_2304x1728_15fps = { 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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ - 0x6F, /* secnd_pll_multiplier (0x030E) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ 0x1C34, /* frame_length_lines (0x0340) */ 0x1428, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_B_2304x1296_30fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_B_2304x1312_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 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) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ + 0x0AAA, /* frame_length_lines (0x0340) */ + 0x1AA8, /* line_length_pck (0x0342) */ +}; + +const struct sensor_pll_info sensor_2p6_pllinfo_B_2304x1120_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ + + 0x04, /* secnd_pre_pll_clk_div(0x030C) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ + 0x0937, /* frame_length_lines (0x0340) */ + 0x1ED8, /* line_length_pck (0x0342) */ }; const struct sensor_pll_info sensor_2p6_pllinfo_B_1152x864_120fps = { @@ -893,26 +597,26 @@ const struct sensor_pll_info sensor_2p6_pllinfo_B_1152x864_120fps = { 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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ - 0x6F, /* secnd_pll_multiplier (0x030E) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; -const struct sensor_pll_info sensor_2p6_pllinfo_B_1152x648_120fps = { +const struct sensor_pll_info sensor_2p6_pllinfo_B_1152x656_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) */ + 0x08, /* op_pix_clk_div (0x0308) */ + 0x01, /* op_sys_clk_div (0x030A) */ 0x04, /* secnd_pre_pll_clk_div(0x030C) */ - 0x6F, /* secnd_pll_multiplier (0x030E) */ + 0x68, /* secnd_pll_multiplier (0x030E) */ 0x0398, /* frame_length_lines (0x0340) */ 0x1438, /* line_length_pck (0x0342) */ }; @@ -921,38 +625,45 @@ const struct sensor_pll_info sensor_2p6_pllinfo_B_1152x648_120fps = { static const u32 *sensor_2p6_setfiles_B[] = { /* 16x12 margin */ sensor_2p6_setfile_B_4608x3456_30fps, - sensor_2p6_setfile_B_4608x2592_30fps, + sensor_2p6_setfile_B_4608x2624_30fps, + sensor_2p6_setfile_B_4608x2240_30fps, sensor_2p6_setfile_B_2304x1728_30fps, sensor_2p6_setfile_B_2304x1728_15fps, - sensor_2p6_setfile_B_2304x1296_30fps, + sensor_2p6_setfile_B_2304x1312_30fps, + sensor_2p6_setfile_B_2304x1120_30fps, sensor_2p6_setfile_B_1152x864_120fps, - sensor_2p6_setfile_B_1152x648_120fps, + sensor_2p6_setfile_B_1152x656_120fps, }; static const u32 sensor_2p6_setfile_B_sizes[] = { /* 16x12 margin */ sizeof(sensor_2p6_setfile_B_4608x3456_30fps) / sizeof(sensor_2p6_setfile_B_4608x3456_30fps[0]), - sizeof(sensor_2p6_setfile_B_4608x2592_30fps) / sizeof(sensor_2p6_setfile_B_4608x2592_30fps[0]), + sizeof(sensor_2p6_setfile_B_4608x2624_30fps) / sizeof(sensor_2p6_setfile_B_4608x2624_30fps[0]), + sizeof(sensor_2p6_setfile_B_4608x2240_30fps) / sizeof(sensor_2p6_setfile_B_4608x2240_30fps[0]), sizeof(sensor_2p6_setfile_B_2304x1728_30fps) / sizeof(sensor_2p6_setfile_B_2304x1728_30fps[0]), sizeof(sensor_2p6_setfile_B_2304x1728_15fps) / sizeof(sensor_2p6_setfile_B_2304x1728_15fps[0]), - sizeof(sensor_2p6_setfile_B_2304x1296_30fps) / sizeof(sensor_2p6_setfile_B_2304x1296_30fps[0]), + sizeof(sensor_2p6_setfile_B_2304x1312_30fps) / sizeof(sensor_2p6_setfile_B_2304x1312_30fps[0]), + sizeof(sensor_2p6_setfile_B_2304x1120_30fps) / sizeof(sensor_2p6_setfile_B_2304x1120_30fps[0]), sizeof(sensor_2p6_setfile_B_1152x864_120fps) / sizeof(sensor_2p6_setfile_B_1152x864_120fps[0]), - sizeof(sensor_2p6_setfile_B_1152x648_120fps) / sizeof(sensor_2p6_setfile_B_1152x648_120fps[0]), + sizeof(sensor_2p6_setfile_B_1152x656_120fps) / sizeof(sensor_2p6_setfile_B_1152x656_120fps[0]), }; #ifdef S5K2P6_USE_COMPACT_PLL_INFO -static const struct sensor_pll_info_compact *sensor_2p6_pllinfos_B[] = { +static const struct sensor_pll_info_compact *sensor_2p6_pllinfos_B[] = #else -static const struct sensor_pll_info *sensor_2p6_pllinfos_B[] = { +static const struct sensor_pll_info *sensor_2p6_pllinfos_B[] = #endif +{ /* 16x12 margin */ &sensor_2p6_pllinfo_B_4608x3456_30fps, - &sensor_2p6_pllinfo_B_4608x2592_30fps, + &sensor_2p6_pllinfo_B_4608x2624_30fps, + &sensor_2p6_pllinfo_B_4608x2240_30fps, &sensor_2p6_pllinfo_B_2304x1728_30fps, &sensor_2p6_pllinfo_B_2304x1728_15fps, - &sensor_2p6_pllinfo_B_2304x1296_30fps, + &sensor_2p6_pllinfo_B_2304x1312_30fps, + &sensor_2p6_pllinfo_B_2304x1120_30fps, &sensor_2p6_pllinfo_B_1152x864_120fps, - &sensor_2p6_pllinfo_B_1152x648_120fps, + &sensor_2p6_pllinfo_B_1152x656_120fps, }; #endif diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.c b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.c index af1ba82ca446..d46d7ccedc9a 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.c +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.c @@ -274,7 +274,11 @@ int sensor_2p6_cis_init(struct v4l2_subdev *subdev) cis->cis_data->low_expo_start = 33000; cis->need_mode_change = false; - sensor_2p6_cis_data_calculation(sensor_2p6_pllinfos[setfile_index], cis->cis_data); + if (cis->use_pdaf == true) { + sensor_2p6_cis_data_calculation(sensor_2p6_pdaf_pllinfos[setfile_index], cis->cis_data); + } else { + 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); @@ -427,8 +431,27 @@ int sensor_2p6_cis_set_global_setting(struct v4l2_subdev *subdev) cis = (struct fimc_is_cis *)v4l2_get_subdevdata(subdev); BUG_ON(!cis); + /* ARM start */ + ret = fimc_is_sensor_write16(cis->client, 0xFCFC, 0x4000); + ret = fimc_is_sensor_write16(cis->client, 0x6010, 0x0001); + /* 3ms delay to operate sensor FW */ + usleep_range(3000, 3000); + + /* setfile global setting is at camera entrance */ + if (cis->use_pdaf == true) { + ret = sensor_cis_set_registers(subdev, sensor_2p6_pdaf_global, sensor_2p6_pdaf_global_size); + } else { + ret = sensor_cis_set_registers(subdev, sensor_2p6_global, sensor_2p6_global_size); + } + + if (ret < 0) { + err("sensor_2p6_set_registers fail!!"); + goto p_err; + } + dbg_sensor(1, "[%s] global setting done\n", __func__); +p_err: return ret; } @@ -466,6 +489,28 @@ int sensor_2p6_cis_mode_change(struct v4l2_subdev *subdev, u32 mode) } } + /* In case of fastAE or high speed fps, forced to set pdaf off */ + if (cis->use_pdaf == true) { + if (mode <= SENSOR_2P6_MODE_2304X1120_30) { + cis->cis_data->companion_data.paf_stat_enable = true; + } else { + cis->cis_data->companion_data.paf_stat_enable = false; + } + dbg_sensor(1, "[%s] mode(%d) paf_stat_enable(%d) \n", + __func__, mode, cis->cis_data->companion_data.paf_stat_enable); + } + +#if defined(USE_SENSOR_WDR) + /* In case of fastAE or high speed fps, forced to set wdr off */ + if (mode <= SENSOR_2P6_MODE_4608X2240_30) { + cis->cis_data->companion_data.wdr_enable = true; + } else { + cis->cis_data->companion_data.wdr_enable = false; + } + dbg_sensor(1, "[%s] mode(%d) wdr_enable(%d) \n", + __func__, mode, cis->cis_data->companion_data.wdr_enable); +#endif + if (cis->use_pdaf == true) { 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]); @@ -480,31 +525,60 @@ int sensor_2p6_cis_mode_change(struct v4l2_subdev *subdev, u32 mode) } if (cis->use_pdaf == true) { -#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] S5K2P6_PDAF_DISABLE\n", __func__); +#if defined(S5K2P6_BPC_DISABLE) + /* BPC disable */ + ret = fimc_is_sensor_write16(cis->client, 0x6028, 0x4000); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } + ret = fimc_is_sensor_write16(cis->client, 0x0B0E, 0x0000); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } + info("[%s] S5K2P6_BPC_DISABLE\n", __func__); #endif -#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); - ret = fimc_is_sensor_write16(cis->client, 0x6F12, 0x0001); + /* pdaf tail mode off */ + if (cis->cis_data->companion_data.paf_stat_enable == false) { + info("[%s]: Set pdaf tail mode off (paf_stat_enable %d)\n", + __func__, cis->cis_data->companion_data.paf_stat_enable); + + ret = fimc_is_sensor_write16(cis->client, 0x6028, 0x2000); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } + ret = fimc_is_sensor_write16(cis->client, 0x602A, 0x1BB0); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } + ret = fimc_is_sensor_write16(cis->client, 0x6F12, 0x0100); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } + } + } - ret = fimc_is_sensor_write16(cis->client, 0xFCFC, 0x4000); - ret = fimc_is_sensor_write16(cis->client, 0x30E2, 0x0000); - info("[%s] S5K2P6_TAIL_DISABLE\n", __func__); -#endif +#if defined(USE_SENSOR_WDR) + if (cis->cis_data->companion_data.wdr_enable == false) { + info("[%s] S5K2P6_WDR_DISABLE\n", __func__); + ret = fimc_is_sensor_write16(cis->client, 0x6028, 0x4000); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } -#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] S5K2P6_BPC_DISABLE\n", __func__); -#endif + ret = fimc_is_sensor_write16(cis->client, 0x0216, 0x0000); + if (ret < 0) { + err("2p6 sensor write fail !!!"); + goto p_err; + } } +#endif dbg_sensor(1, "[%s] mode changed(%d)\n", __func__, mode); @@ -730,10 +804,34 @@ int sensor_2p6_cis_stream_on(struct v4l2_subdev *subdev) } #endif - /* Sensor stream on */ ret = fimc_is_sensor_write16(client, 0x6028, 0x4000); if (ret < 0) err("i2c transfer fail addr(%x), val(%x), ret = %d\n", 0x6028, 0x4000, ret); + +#if defined(USE_SENSOR_WDR) + /* WDR */ + if (fimc_is_vender_wdr_mode_on(cis_data)) { + /* wdr on */ + ret = fimc_is_sensor_write16(client, 0x0216, 0x0100); + if (ret < 0) + err("i2c transfer fail addr(%x), val(%x), ret = %d\n", 0x0216, 0x0100, ret); + /* Apply seperating long and short dgain */ + ret = fimc_is_sensor_write16(client, 0x31FA, 0x0001); + if (ret < 0) + err("i2c transfer fail addr(%x), val(%x), ret = %d\n", 0x31FA, 0x0001, ret); + } else { + /* wdr off */ + ret = fimc_is_sensor_write16(client, 0x0216, 0x0000); + if (ret < 0) + err("i2c transfer fail addr(%x), val(%x), ret = %d\n", 0x0216, 0x0000, ret); + /* Apply common value long and short dgain */ + ret = fimc_is_sensor_write16(client, 0x31FA, 0x0000); + if (ret < 0) + err("i2c transfer fail addr(%x), val(%x), ret = %d\n", 0x31FA, 0x0000, ret); + } +#endif + + /* Sensor stream on */ ret = fimc_is_sensor_write16(client, 0x0100, 0x0100); if (ret < 0) err("i2c transfer fail addr(%x), val(%x), ret = %d\n", 0x0100, 0x0100, ret); @@ -890,10 +988,14 @@ int sensor_2p6_cis_set_exposure_time(struct v4l2_subdev *subdev, struct ae_param if (ret < 0) goto p_err; +#if defined(USE_SENSOR_WDR) /* Long exposure */ - ret = fimc_is_sensor_write16(client, 0x021E, long_coarse_int); - if (ret < 0) - goto p_err; + if (fimc_is_vender_wdr_mode_on(cis_data)) { + 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__, @@ -1548,17 +1650,19 @@ int sensor_2p6_cis_set_digital_gain(struct v4l2_subdev *subdev, struct ae_param goto p_err; } - dgains[0] = dgains[1] = dgains[2] = dgains[3] = short_gain; /* Short digital gain */ - ret = fimc_is_sensor_write16_array(client, 0x020E, dgains, 4); + dgains[0] = dgains[1] = dgains[2] = dgains[3] = short_gain; + ret = fimc_is_sensor_write16(client, 0x020E, short_gain); if (ret < 0) goto p_err; /* Long digital gain */ - dgains[0] = dgains[1] = dgains[2] = dgains[3] = long_gain; - ret = fimc_is_sensor_write16_array(client, 0x3062, dgains, 4); - if (ret < 0) - goto p_err; + if (fimc_is_vender_wdr_mode_on(cis_data)) { + dgains[0] = dgains[1] = dgains[2] = dgains[3] = long_gain; + ret = fimc_is_sensor_write16(client, 0x0C82, long_gain); + if (ret < 0) + goto p_err; + } #ifdef DEBUG_SENSOR_TIME do_gettimeofday(&end); @@ -1784,7 +1888,7 @@ int cis_2p6_probe(struct i2c_client *client, sensor_peri = find_peri_by_cis_id(device, SENSOR_NAME_S5K2P6); if (!sensor_peri) { - probe_info("sensor peri is net yet probed"); + probe_info("sensor peri is not yet probed"); return -EPROBE_DEFER; } diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.h b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.h index b6b658c66ae1..d9eba4cbe600 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.h +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p6.h @@ -16,8 +16,8 @@ #define EXT_CLK_Mhz (26) -#define SENSOR_2P6_MAX_WIDTH (4608 + 16) -#define SENSOR_2P6_MAX_HEIGHT (3456 + 12) +#define SENSOR_2P6_MAX_WIDTH (4608 + 0) +#define SENSOR_2P6_MAX_HEIGHT (3456 + 0) /* TODO: Check below values are valid */ #define SENSOR_2P6_FINE_INTEGRATION_TIME_MIN 0x0618 @@ -29,5 +29,19 @@ #define S5K2P6_USE_COMPACT_PLL_INFO +typedef enum +{ + SENSOR_2P6_MODE_4608X3456_30 = 0, + SENSOR_2P6_MODE_4608X2624_30 = 1, + SENSOR_2P6_MODE_4608X2240_30 = 2, + SENSOR_2P6_MODE_2304X1728_30 = 3, + SENSOR_2P6_MODE_2304X1728_15 = 4, + SENSOR_2P6_MODE_2304X1312_30 = 5, + SENSOR_2P6_MODE_2304X1120_30 = 6, + SENSOR_2P6_MODE_1152X864_120 = 7, + SENSOR_2P6_MODE_1152X656_120 = 8, + SENSOR_2P6_MODE_END +}SENSOR_2P6_MODE_ENUM; + #endif diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c index 16eb9d891c70..d079a834e4f1 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/modules/fimc-is-device-module-2p6.c @@ -52,38 +52,42 @@ enum sensor_module_2p6_position { static struct fimc_is_sensor_cfg config_module_2p6[] = { /* 4608x3456@30fps */ - FIMC_IS_SENSOR_CFG_EXT(4608, 3456, 30, 32, 0, CSI_DATA_LANES_4, 1443, SET_VC(VC_TAIL_MODE_PDAF, 1152, 864), 0, 0), - /* 4608x2592@30fps */ - FIMC_IS_SENSOR_CFG_EXT(4608, 2592, 30, 32, 1, CSI_DATA_LANES_4, 1443, SET_VC(VC_TAIL_MODE_PDAF, 1152, 656), 0, 0), + FIMC_IS_SENSOR_CFG_EXT(4608, 3456, 30, 32, 0, CSI_DATA_LANES_4, 1443, SET_VC(VC_TAIL_MODE_PDAF, 288, 1728), 0, 0), + /* 4608x2624@30fps */ + FIMC_IS_SENSOR_CFG_EXT(4608, 2624, 30, 32, 1, CSI_DATA_LANES_4, 1443, SET_VC(VC_TAIL_MODE_PDAF, 288, 1312), 0, 0), + /* 4608x2240@30fps */ + FIMC_IS_SENSOR_CFG_EXT(4608, 2240, 30, 32, 2, CSI_DATA_LANES_4, 1443, SET_VC(VC_TAIL_MODE_PDAF, 288, 1120), 0, 0), /* 2304x1728@30fps */ - FIMC_IS_SENSOR_CFG_EXT(2304, 1728, 30, 32, 2, CSI_DATA_LANES_4, 1443, 0, 0, 0), + FIMC_IS_SENSOR_CFG_EXT(2304, 1728, 30, 32, 3, CSI_DATA_LANES_4, 1352, SET_VC(VC_TAIL_MODE_PDAF, 288, 1728), 0, 0), /* 2304x1728@15fps */ - FIMC_IS_SENSOR_CFG_EXT(2304, 1728, 15, 32, 3, CSI_DATA_LANES_4, 1443, 0, 0, 0), - /* 2304x1296@30fps */ - FIMC_IS_SENSOR_CFG_EXT(2304, 1296, 30, 32, 4, CSI_DATA_LANES_4, 1443, 0, 0, 0), + FIMC_IS_SENSOR_CFG_EXT(2304, 1728, 15, 32, 4, CSI_DATA_LANES_4, 1352, SET_VC(VC_TAIL_MODE_PDAF, 288, 1728), 0, 0), + /* 2304x1312@30fps */ + FIMC_IS_SENSOR_CFG_EXT(2304, 1312, 30, 32, 5, CSI_DATA_LANES_4, 1352, SET_VC(VC_TAIL_MODE_PDAF, 288, 1312), 0, 0), + /* 2304x1120@30fps */ + FIMC_IS_SENSOR_CFG_EXT(2304, 1120, 30, 32, 6, CSI_DATA_LANES_4, 1352, SET_VC(VC_TAIL_MODE_PDAF, 288, 1120), 0, 0), /* 1152x864@120fps */ - FIMC_IS_SENSOR_CFG_EXT(1152, 864, 120, 32, 5, CSI_DATA_LANES_4, 1443, 0, 0, 0), - /* 1152x648@120fps */ - FIMC_IS_SENSOR_CFG_EXT(1152, 648, 120, 32, 6, CSI_DATA_LANES_4, 1443, 0, 0, 0), + FIMC_IS_SENSOR_CFG_EXT(1152, 864, 120, 32, 7, CSI_DATA_LANES_4, 1352, 0, 0, 0), + /* 1152x656@120fps */ + FIMC_IS_SENSOR_CFG_EXT(1152, 656, 120, 32, 8, CSI_DATA_LANES_4, 1352, 0, 0, 0), }; static struct fimc_is_vci vci_module_2p6[] = { { .pixelformat = V4L2_PIX_FMT_SBGGR10, .config = {{0, HW_FORMAT_RAW10, VCI_DMA_NORMAL}, - {1, HW_FORMAT_USER, VCI_DMA_INTERNAL}, + {1, HW_FORMAT_RAW10, VCI_DMA_INTERNAL}, {2, 0, VCI_DMA_NORMAL}, {3, 0, VCI_DMA_NORMAL}} }, { .pixelformat = V4L2_PIX_FMT_SBGGR12, .config = {{0, HW_FORMAT_RAW10, VCI_DMA_NORMAL}, - {1, HW_FORMAT_USER, VCI_DMA_INTERNAL}, + {1, HW_FORMAT_RAW10, VCI_DMA_INTERNAL}, {2, 0, VCI_DMA_NORMAL}, {3, 0, VCI_DMA_NORMAL}} }, { .pixelformat = V4L2_PIX_FMT_SBGGR16, .config = {{0, HW_FORMAT_RAW10, VCI_DMA_NORMAL}, - {1, HW_FORMAT_USER, VCI_DMA_INTERNAL}, + {1, HW_FORMAT_RAW10, VCI_DMA_INTERNAL}, {2, 0, VCI_DMA_NORMAL}, {3, 0, VCI_DMA_NORMAL}} } @@ -273,19 +277,19 @@ static int sensor_module_2p6_power_setpin_with_af(struct device *dev, #endif SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_reset, "pdaf sen_rst high", PIN_OUTPUT, 1, 500); - SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "pin", PIN_FUNCTION, 2, 0); + SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_ON, gpio_none, "pin", PIN_FUNCTION, 2, 3000); /* BACK CAEMRA - POWER OFF */ + SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin_none", PIN_NONE, 1, 500); + SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 1, 0); + SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_reset, "pdaf sen_rst", PIN_OUTPUT, 0, 2000); + if (gpio_is_valid(gpio_cam_af_en)) { SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_cam_af_en, "pdaf gpio_cam_af_en", PIN_OUTPUT, 0, 200); } else { SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "VDD_CAM_AF_2P8", PIN_REGULATOR, 0, 200); } - SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 1, 0); - SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_none, "pin_none", PIN_NONE, 1, 500); - SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_reset, "pdaf sen_rst", PIN_OUTPUT, 0, 200); - #if defined (CONFIG_OIS_USE) if (gpio_is_valid(gpio_ois_reset)) { /* OIS_RESET */ SET_PIN(pdata, SENSOR_SCENARIO_NORMAL, GPIO_SCENARIO_OFF, gpio_ois_reset, "pdaf gpio_ois_reset", PIN_OUTPUT, 0, 0); @@ -348,6 +352,8 @@ static int sensor_module_2p6_power_setpin_with_af(struct device *dev, #endif /* READ_ROM - POWER OFF */ + SET_PIN(pdata, SENSOR_SCENARIO_READ_ROM, GPIO_SCENARIO_OFF, gpio_none, "pin_none", PIN_NONE, 1, 500); + #if defined(USE_AF_PWR_READ_EEPROM) if (gpio_is_valid(gpio_cam_af_en)) { SET_PIN(pdata, SENSOR_SCENARIO_READ_ROM, GPIO_SCENARIO_OFF, gpio_cam_af_en, "pdaf gpio_cam_af_en", PIN_OUTPUT, 0, 10); @@ -424,6 +430,7 @@ static int sensor_module_2p6_power_setpin_with_af(struct device *dev, } #endif +#if defined(CONFIG_CAMERA_JACKPOT)|| defined(CONFIG_CAMERA_JACKPOT_JPN) /* VISION - POWER ON */ SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_ON, gpio_reset, "pdaf sen_rst low", PIN_OUTPUT, 0, 0); @@ -454,19 +461,19 @@ static int sensor_module_2p6_power_setpin_with_af(struct device *dev, } SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_ON, gpio_reset, "pdaf sen_rst high", PIN_OUTPUT, 1, 500); - SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_ON, gpio_none, "pin", PIN_FUNCTION, 2, 0); + SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_ON, gpio_none, "pin", PIN_FUNCTION, 2, 3000); /* VISION - POWER OFF */ + SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_none, "pin_none", PIN_NONE, 1, 500); + SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 1, 0); + SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_reset, "pdaf sen_rst", PIN_OUTPUT, 0, 2000); + if (gpio_is_valid(gpio_cam_af_en)) { SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_cam_af_en, "pdaf gpio_cam_af_en", PIN_OUTPUT, 0, 200); } else { SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_none, "VDD_CAM_AF_2P8", PIN_REGULATOR, 0, 200); } - SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_none, "pin", PIN_FUNCTION, 1, 0); - SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_none, "pin_none", PIN_NONE, 1, 500); - SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_reset, "pdaf sen_rst", PIN_OUTPUT, 0, 200); - if (gpio_is_valid(gpio_cam_io_en)) { SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_cam_io_en, "pdaf gpio_cam_io_en", PIN_OUTPUT, 0, 100); } else { @@ -486,7 +493,7 @@ static int sensor_module_2p6_power_setpin_with_af(struct device *dev, SET_PIN(pdata, SENSOR_SCENARIO_VISION, GPIO_SCENARIO_OFF, gpio_none, "VDDA_2.8V_CAM", PIN_REGULATOR, 0, 100); #endif } - +#endif dev_info(dev, "%s X v4\n", __func__); @@ -691,8 +698,8 @@ int sensor_module_2p6_probe(struct platform_device *pdev) module->subdev = subdev_module; module->device = pdata->id; module->client = NULL; - module->active_width = 4608 + 16; - module->active_height = 3456 + 12; + module->active_width = 4608 + 0; + module->active_height = 3456 + 0; module->margin_left = 0; module->margin_right = 0; module->margin_top = 0; @@ -707,7 +714,11 @@ int sensor_module_2p6_probe(struct platform_device *pdev) module->vcis = ARRAY_SIZE(vci_module_2p6); module->vci = vci_module_2p6; module->sensor_maker = "SLSI"; - module->sensor_name = "S5K2P6"; + if (use_pdaf == true) { + module->sensor_name = "S5K2P6SX"; /* pdaf sensor */ + } else { + module->sensor_name = "S5K2P6"; /* default */ + } if (pdata->position == SENSOR_MODULE_2P6_REAR) { module->setfile_name = "setfile_2p6.bin"; } else if (pdata->position == SENSOR_MODULE_2P6_FRONT) { @@ -716,8 +727,10 @@ int sensor_module_2p6_probe(struct platform_device *pdev) module->cfgs = ARRAY_SIZE(config_module_2p6); module->cfg = config_module_2p6; module->ops = NULL; - for (ch = 1; ch < CSI_VIRTUAL_CH_MAX; ch++) + for (ch = 1; ch < CSI_VIRTUAL_CH_MAX; ch++) { module->internal_vc[ch] = pdata->internal_vc[ch]; + module->vc_buffer_offset[ch] = pdata->vc_buffer_offset[ch]; + } /* Sensor peri */ module->private_data = kzalloc(sizeof(struct fimc_is_device_sensor_peri), GFP_KERNEL); if (!module->private_data) { -- 2.20.1