openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

652 lines
25 KiB

static struct msm_camera_i2c_reg_array init_array_imx298[] = {
{0x101,0x0,0}, // IMAGE_ORIENT
{0x601,0x0,0}, // test pattern
//{0xb02,0,0}, // green correction?
// external clock setting
{0x136,0x18,0}, {0x137,0x0,0}, // EXCK_FREQ = Extclk_frequency_mhz
// global setting?
{0x30f4,0x1,0},
{0x30f5,0x7a,0},
{0x30f6,0x0,0},
{0x30f7,0xec,0},
{0x30fc,0x1,0},
{0x3101,0x1,0},
{0x5b2f,0x8,0},
{0x5d32,0x5,0},
{0x5d7c,0x0,0},
{0x5d7d,0x0,0},
{0x5db9,0x1,0},
{0x5e43,0x0,0},
{0x6300,0x0,0},
{0x6301,0xea,0},
{0x6302,0x0,0},
{0x6303,0xb4,0},
{0x6564,0x0,0},
{0x6565,0xb6,0},
{0x6566,0x0,0},
{0x6567,0xe6,0},
{0x6714,0x1,0},
{0x6758,0xb,0},
{0x6910,0x4,0},
{0x6916,0x1,0},
{0x6918,0x4,0},
{0x691e,0x1,0},
{0x6931,0x1,0},
{0x6937,0x2,0},
{0x693b,0x2,0},
{0x6d00,0x4a,0},
{0x6d01,0x41,0},
{0x6d02,0x23,0},
{0x6d05,0x4c,0},
{0x6d06,0x10,0},
{0x6d08,0x30,0},
{0x6d09,0x38,0},
{0x6d0a,0x2c,0},
{0x6d0b,0x2d,0},
{0x6d0c,0x34,0},
{0x6d0d,0x42,0},
{0x6d19,0x1c,0},
{0x6d1a,0x71,0},
{0x6d1b,0xc6,0},
{0x6d1c,0x94,0},
{0x6d24,0xe4,0},
{0x6d30,0xa,0},
{0x6d31,0x1,0},
{0x6d33,0xb,0},
{0x6d34,0x5,0},
{0x6d35,0x0,0},
{0x83c2,0x3,0},
{0x83c3,0x8,0},
{0x83c4,0x48,0},
{0x83c7,0x8,0},
{0x83cb,0x0,0},
{0xb101,0xff,0},
{0xb103,0xff,0},
{0xb105,0xff,0},
{0xb107,0xff,0},
{0xb109,0xff,0},
{0xb10b,0xff,0},
{0xb10d,0xff,0},
{0xb10f,0xff,0},
{0xb111,0xff,0},
{0xb163,0x3c,0},
{0xc2a0,0x8,0},
{0xc2a3,0x3,0},
{0xc2a5,0x8,0},
{0xc2a6,0x48,0},
{0xc2a9,0x0,0},
{0xf800,0x5e,0},
{0xf801,0x5e,0},
{0xf802,0xcd,0},
{0xf803,0x20,0},
{0xf804,0x55,0},
{0xf805,0xd4,0},
{0xf806,0x1f,0},
{0xf808,0xf8,0},
{0xf809,0x3a,0},
{0xf80a,0xf1,0},
{0xf80b,0x7e,0},
{0xf80c,0x55,0},
{0xf80d,0x38,0},
{0xf80e,0xe3,0},
{0xf810,0x74,0},
{0xf811,0x41,0},
{0xf812,0xbf,0},
{0xf844,0x40,0},
{0xf845,0xba,0},
{0xf846,0x70,0},
{0xf847,0x47,0},
{0xf848,0xc0,0},
{0xf849,0xba,0},
{0xf84a,0x70,0},
{0xf84b,0x47,0},
{0xf84c,0x82,0},
{0xf84d,0xf6,0},
{0xf84e,0x32,0},
{0xf84f,0xfd,0},
{0xf851,0xf0,0},
{0xf852,0x2,0},
{0xf853,0xf8,0},
{0xf854,0x81,0},
{0xf855,0xf6,0},
{0xf856,0xc0,0},
{0xf857,0xff,0},
{0xf858,0x10,0},
{0xf859,0xb5,0},
{0xf85a,0xd,0},
{0xf85b,0x48,0},
{0xf85c,0x40,0},
{0xf85d,0x7a,0},
{0xf85e,0x1,0},
{0xf85f,0x28,0},
{0xf860,0x15,0},
{0xf861,0xd1,0},
{0xf862,0xc,0},
{0xf863,0x49,0},
{0xf864,0xc,0},
{0xf865,0x46,0},
{0xf866,0x40,0},
{0xf867,0x3c,0},
{0xf868,0x48,0},
{0xf869,0x8a,0},
{0xf86a,0x62,0},
{0xf86b,0x8a,0},
{0xf86c,0x80,0},
{0xf86d,0x1a,0},
{0xf86e,0x8a,0},
{0xf86f,0x89,0},
{0xf871,0xb2,0},
{0xf872,0x10,0},
{0xf873,0x18,0},
{0xf874,0xa,0},
{0xf875,0x46,0},
{0xf876,0x20,0},
{0xf877,0x32,0},
{0xf878,0x12,0},
{0xf879,0x88,0},
{0xf87a,0x90,0},
{0xf87b,0x42,0},
{0xf87d,0xda,0},
{0xf87e,0x10,0},
{0xf87f,0x46,0},
{0xf880,0x80,0},
{0xf881,0xb2,0},
{0xf882,0x88,0},
{0xf883,0x81,0},
{0xf884,0x84,0},
{0xf885,0xf6,0},
{0xf886,0xd2,0},
{0xf887,0xf9,0},
{0xf888,0xe0,0},
{0xf889,0x67,0},
{0xf88a,0x85,0},
{0xf88b,0xf6,0},
{0xf88c,0xa1,0},
{0xf88d,0xfc,0},
{0xf88e,0x10,0},
{0xf88f,0xbd,0},
{0xf891,0x18,0},
{0xf892,0x21,0},
{0xf893,0x24,0},
{0xf895,0x18,0},
{0xf896,0x19,0},
{0xf897,0xb4,0},
{0x4e29,0x1,0},
// PDAF stuff
{0x3166,0x1,0}, //AREA_EN_0
{0x3167,0x1,0},
{0x3168,0x1,0},
{0x3169,0x1,0},
{0x316a,0x1,0},
{0x316b,0x1,0},
{0x316c,0x1,0},
{0x316d,0x1,0},
{0x3158,0x2,0},
{0x3159,0x2,0},
{0x315a,0x2,0},
{0x315b,0x3,0},
{0x3013,0x7,0}, //RMSC_NR_MODE
{0x3035,0x1,0},
{0x3051,0x0,0},
{0x3056,0x2,0},
{0x3057,0x1,0},
{0x3060,0x0,0},
{0x8435,0x0,0},
{0x8455,0x0,0},
{0x847c,0x0,0},
{0x84fb,0x1,0},
{0x9619,0xa0,0},
{0x961b,0xa0,0},
{0x961d,0xa0,0},
{0x961f,0x20,0},
{0x9621,0x20,0},
{0x9623,0x20,0},
{0x9625,0xa0,0},
{0x9627,0xa0,0},
{0x9629,0xa0,0},
{0x962b,0x20,0},
{0x962d,0x20,0},
{0x962f,0x20,0},
{0x9901,0x35,0},
{0x9903,0x23,0},
{0x9905,0x23,0},
{0x9906,0x0,0},
{0x9907,0x31,0},
{0x9908,0x0,0},
{0x9909,0x1b,0},
{0x990a,0x0,0},
{0x990b,0x15,0},
{0x990d,0x3f,0},
{0x990f,0x3f,0},
{0x9911,0x3f,0},
{0x9913,0x64,0},
{0x9915,0x64,0},
{0x9917,0x64,0},
{0x9919,0x50,0},
{0x991b,0x60,0},
{0x991d,0x65,0},
{0x991f,0x1,0},
{0x9921,0x1,0},
{0x9923,0x1,0},
{0x9925,0x23,0},
{0x9927,0x23,0},
{0x9929,0x23,0},
{0x992b,0x2f,0},
{0x992d,0x1a,0},
{0x992f,0x14,0},
{0x9931,0x3f,0},
{0x9933,0x3f,0},
{0x9935,0x3f,0},
{0x9937,0x6b,0},
{0x9939,0x7c,0},
{0x993b,0x81,0},
{0x9943,0xf,0},
{0x9945,0xf,0},
{0x9947,0xf,0},
{0x9949,0xf,0},
{0x994b,0xf,0},
{0x994d,0xf,0},
{0x994f,0x42,0},
{0x9951,0xf,0},
{0x9953,0xb,0},
{0x9955,0x5a,0},
{0x9957,0x13,0},
{0x9959,0xc,0},
{0x995a,0x0,0},
{0x995b,0x0,0},
{0x995c,0x0,0},
{0x996b,0x0,0},
{0x996d,0x10,0},
{0x996f,0x10,0},
{0x9971,0xc8,0},
{0x9973,0x32,0},
{0x9975,0x4,0},
{0x9976,0xa,0},
{0x9977,0xa,0},
{0x9978,0xa,0},
{0x99a4,0x2f,0},
{0x99a5,0x2f,0},
{0x99a6,0x2f,0},
{0x99a7,0xa,0},
{0x99a8,0xa,0},
{0x99a9,0xa,0},
{0x99aa,0x2f,0},
{0x99ab,0x2f,0},
{0x99ac,0x2f,0},
{0x99ad,0x0,0},
{0x99ae,0x0,0},
{0x99af,0x0,0},
{0x99b0,0x40,0},
{0x99b1,0x40,0},
{0x99b2,0x40,0},
{0x99b3,0x30,0},
{0x99b4,0x30,0},
{0x99b5,0x30,0},
{0x99bb,0xa,0},
{0x99bd,0xa,0},
{0x99bf,0xa,0},
{0x99c0,0x9,0},
{0x99c1,0x9,0},
{0x99c2,0x9,0},
{0x99c6,0x3c,0},
{0x99c7,0x3c,0},
{0x99c8,0x3c,0},
{0x99c9,0xff,0},
{0x99ca,0xff,0},
{0x99cb,0xff,0},
{0x9b01,0x35,0},
{0x9b03,0x14,0},
{0x9b05,0x14,0},
{0x9b07,0x31,0},
{0x9b09,0x1b,0},
{0x9b0b,0x15,0},
{0x9b0d,0x1e,0},
{0x9b0f,0x1e,0},
{0x9b11,0x1e,0},
{0x9b13,0x64,0},
{0x9b15,0x64,0},
{0x9b17,0x64,0},
{0x9b19,0x50,0},
{0x9b1b,0x60,0},
{0x9b1d,0x65,0},
{0x9b1f,0x1,0},
{0x9b21,0x1,0},
{0x9b23,0x1,0},
{0x9b25,0x14,0},
{0x9b27,0x14,0},
{0x9b29,0x14,0},
{0x9b2b,0x2f,0},
{0x9b2d,0x1a,0},
{0x9b2f,0x14,0},
{0x9b31,0x1e,0},
{0x9b33,0x1e,0},
{0x9b35,0x1e,0},
{0x9b37,0x6b,0},
{0x9b39,0x7c,0},
{0x9b3b,0x81,0},
{0x9b43,0xf,0},
{0x9b45,0xf,0},
{0x9b47,0xf,0},
{0x9b49,0xf,0},
{0x9b4b,0xf,0},
{0x9b4d,0xf,0},
{0x9b4f,0x2d,0},
{0x9b51,0xb,0},
{0x9b53,0x8,0},
{0x9b55,0x40,0},
{0x9b57,0xd,0},
{0x9b59,0x8,0},
{0x9b5a,0x0,0},
{0x9b5b,0x0,0},
{0x9b5c,0x0,0},
{0x9b6b,0x0,0},
{0x9b6d,0x10,0},
{0x9b6f,0x10,0},
{0x9b71,0xc8,0},
{0x9b73,0x32,0},
{0x9b75,0x4,0},
{0x9bb0,0x40,0},
{0x9bb1,0x40,0},
{0x9bb2,0x40,0},
{0x9bb3,0x30,0},
{0x9bb4,0x30,0},
{0x9bb5,0x30,0},
{0x9bbb,0xa,0},
{0x9bbd,0xa,0},
{0x9bbf,0xa,0},
{0x9bc0,0x9,0},
{0x9bc1,0x9,0},
{0x9bc2,0x9,0},
{0x9bc6,0x18,0},
{0x9bc7,0x18,0},
{0x9bc8,0x18,0},
{0x9bc9,0xff,0},
{0x9bca,0xff,0},
{0x9bcb,0xff,0},
{0xb2b2,0x1,0},
};
static struct msm_camera_i2c_reg_array mode_setting_array_imx298[] = {
// i2c settings for mode 3
// {
// .x_output = 2328,
// .y_output = 1748,
// .line_length_pclk = 5536,
// .frame_length_lines = 1802,
// .vt_pixel_clk = 299300000,
// .op_pixel_clk = 299300000,
// .binning_factor = 2,
// .min_fps = 15.000000,
// .max_fps = 30.020000,
// .mode = 1,
// .offset_x = 0,
// .offset_y = 0,
// .scale_factor = 1.000000,
// .is_pdaf_supported = 1,
// }
// mode settings
// hdr settings
{0x0114, 0x03, 0}, // CSI_LANE_MODE = 4-lane
/*{0x0220, 0x00, 0}, // HDR_MODE = disable
{0x0221, 0x11, 0}, // HDR_RESO_REDU_H/V = Full Pixel
{0x0222, 0x10, 0}, // EXPO_RATIO = 16*/
{0x0220, 0x01, 0}, // HDR_MODE = enable with combined gain and 16x ratio
{0x0221, 0x22, 0}, // HDR_RESO_REDU_H/V = 2 binning
{0x0222, 0x10, 0}, // EXPO_RATIO = 16
{0x0340, 0x07, 0}, {0x0341, 0x0a, 0}, // FRM_LENGTH = frame_length_lines = 1802
{0x0342, 0x15, 0}, {0x0343, 0xa0, 0}, // LINE_LENGTH = line_length_pclk = 5536
{0x0344, 0x00, 0}, {0x0345, 0x00, 0}, // x_addr_start
{0x0346, 0x00, 0}, {0x0347, 0x00, 0}, // y_addr_start
{0x0348, 0x12, 0}, {0x0349, 0x2f, 0}, // x_addr_end
{0x034a, 0x0d, 0}, {0x034b, 0xa7, 0}, // y_addr_end
{0x0381, 0x01, 0}, // x_even_inc
{0x0383, 0x01, 0}, // x_odd_inc
{0x0385, 0x01, 0}, // y_even_inc
{0x0387, 0x01, 0}, // y_odd_inc
{0x0900, 0x01, 0}, // BINNING_MODE = enable
{0x0901, 0x22, 0}, // BINING_TYPE_H/V = 2binning
{0x0902, 0x00, 0}, // binning_weighting = average
{0x0b06, 1, 0}, // SING_DEF_CORR_EN
{0x0b0a, 1, 0}, // combined defect correct
{0x3010, 0x66, 0}, // HDR_OUTPUT_CTRL = ATR + HDR compose + DPC1D + DCP2D
{0x3011, 0x01, 0}, // HDR_OUTPUT_CTRL2 = PD enable
{0x30c0, 0x11, 0}, // RED_GAIN_CB?
{0x300d, 0x00, 0}, // FORCE_FDSUM = disable
{0x30fd, 0x00, 0},
{0x8493, 0x00, 0},
{0x8863, 0x00, 0},
{0x90d7, 0x19, 0},
// set black level
{0x3090, 1, 0},
{0x3092, 0, 0},
{0x3093, 0x38, 0},
// output size settings
{0x0112, 0x0a, 0}, {0x0113, 0x0a, 0}, // CS_DT_FMT_H = 0x0a0a (RAW10 output)
{0x034c, 0x09, 0}, {0x034d, 0x18, 0}, // X_OUT_SIZE = 2328 (1164*2)
{0x034e, 0x06, 0}, {0x034f, 0xd4, 0}, // Y_OUT_SIZE = 1748 (874*2)
{0x0401, 0x00, 0}, // SCALING_MODE
{0x0404, 0x00, 0}, {0x0405, 0x10, 0}, // SCALE_M
{0x0408, 0x00, 0}, {0x0409, 0x00, 0}, // DCROP_XOFS
{0x040a, 0x00, 0}, {0x040b, 0x00, 0}, // DCROP_YOFS
{0x040c, 0x09, 0}, {0x040d, 0x18, 0}, // DCROP_WIDTH
{0x040e, 0x06, 0}, {0x040f, 0xd4, 0}, // DCROP_HIGT
// clock settings
// 299300000
/*
{0x0301, 0x05, 0}, // VT_PIX_CLK_DIV
{0x0303, 0x02, 0}, // VT_SYS_CLK_DIV
{0x0305, 0x04, 0}, // PRE_PLL_CLK_DIV
{0x0306, 0x00, 0}, {0x0307, 0x7d, 0}, // PLL_MULTIPLIER . mode 1: 0xf6
{0x0309, 0x0a, 0}, // OP_PIX_CLK_DIV
{0x030b, 0x01, 0}, // OP_SYS_CLK_DIV
{0x030d, 0x0f, 0}, // PREPLLCK_OP_DIV
{0x030e, 0x03, 0}, {0x030f, 0x41, 0}, // PLL_OP_MPY
{0x0310, 0x00, 0}, // PLL_MULT_DRIV
*/
// 600000000
{0x0301, 0x05, 0},
{0x0303, 0x02, 0},
{0x0305, 0x04, 0},
{0x0306, 0x00, 0},
{0x0307, 0xfa, 0},
{0x0309, 0x0a, 0},
{0x030b, 0x01, 0},
{0x030d, 0x0f, 0},
{0x030e, 0x03, 0}, {0x030f, 0x41, 0},
{0x0310, 0x00, 0},
// data rate settings
/*{0x0820, 0x0b, 0}, // requested_link_bit_rate_mbps = 3000
{0x0821, 0xb8, 0},
{0x0822, 0x00, 0},
{0x0823, 0x00, 0},*/
{0x0820, 0x17, 0}, // requested_link_bit_rate_mbps = 6000
{0x0821, 0x70, 0},
{0x0822, 0x00, 0},
{0x0823, 0x00, 0},
//integration time settings
{0x0202, 0x07, 0}, {0x0203, 0x00, 0}, // INTEG_TIME = 1792
{0x0224, 0x01, 0}, {0x0225, 0xf4, 0}, // ST_COARSE_INTEG_TIME = 506
// gain settings
{0x0204, 0x00, 0}, {0x0205, 0x00, 0}, // ANA_GAIN_GLOBAL = 512 / (512 - X)
{0x0216, 0x00, 0}, {0x0217, 0x00, 0}, // ST_ANA_GAIN_GLOBAL[8]
{0x020e, 0x01, 0}, {0x020f, 0x00, 0}, // DIG_GAIN_GR
{0x0210, 0x01, 0}, {0x0211, 0x00, 0}, // DIG_GAIN_R
{0x0212, 0x01, 0}, {0x0213, 0x00, 0}, // DIG_GAIN_B
{0x0214, 0x01, 0}, {0x0215, 0x00, 0}, // DIG_GAIN_GB
// HDR white balance settings (ABS_GAIN)
{0xb8e, 0x01, 0}, {0xb8f, 0x00, 0}, // GR
{0xb90, 0x02, 0}, {0xb91, 0x2b, 0}, // R
{0xb92, 0x01, 0}, {0xb93, 0xd4, 0}, // B
{0xb94, 0x01, 0}, {0xb95, 0x00, 0}, // GB
// phase detection settings
{0x3058, 0x00, 0}, // NML_NR_EN
{0x3103, 0x01, 0}, // NML_PD_CAL_ENABLE = enable
{0x3108, 0x00, 0}, {0x3109, 0x2c, 0}, //PD_AREA_X_OFFSET
{0x310a, 0x00, 0}, {0x310b, 0x24, 0}, //PD_AREA_Y_OFFSET
{0x310c, 0x01, 0}, {0x310d, 0xa4, 0}, //PD_AREA_WIDTH
{0x310e, 0x01, 0}, {0x310f, 0xa4, 0}, //PD_AREA_HEIGHT
// whole size is 0x918 x 0x6d4
{0x3110, 0x03, 0}, // PD_AREA_0 = 0x375-0x4d1, 0x258-0x3b6
{0x3111, 0x75, 0},
{0x3112, 0x02, 0},
{0x3113, 0x58, 0},
{0x3114, 0x04, 0},
{0x3115, 0xd1, 0},
{0x3116, 0x03, 0},
{0x3117, 0xb6, 0},
{0x3118, 0x04, 0}, // PD_AREA_1 = 0x446-0x5a2, 0x258-0x3b6
{0x3119, 0x46, 0},
{0x311a, 0x02, 0},
{0x311b, 0x58, 0},
{0x311c, 0x05, 0},
{0x311d, 0xa2, 0},
{0x311e, 0x03, 0},
{0x311f, 0xb6, 0},
{0x3120, 0x03, 0}, // PD_AREA_2 = 0x375-0x4d1, 0x32a-0x488
{0x3121, 0x75, 0},
{0x3122, 0x03, 0},
{0x3123, 0x2a, 0},
{0x3124, 0x04, 0},
{0x3125, 0xd1, 0},
{0x3126, 0x04, 0},
{0x3127, 0x88, 0},
{0x3128, 0x04, 0}, // PD_AREA_3 = 0x446-0x5a2, 0x32a-0x488
{0x3129, 0x46, 0},
{0x312a, 0x03, 0},
{0x312b, 0x2a, 0},
{0x312c, 0x05, 0},
{0x312d, 0xa2, 0},
{0x312e, 0x04, 0},
{0x312f, 0x88, 0},
{0x3130, 0x03, 0}, // PD_AREA_4 = 0x375-0x5a2, 0x258-0x488
{0x3131, 0x75, 0},
{0x3132, 0x02, 0},
{0x3133, 0x58, 0},
{0x3134, 0x05, 0},
{0x3135, 0xa2, 0},
{0x3136, 0x04, 0},
{0x3137, 0x88, 0},
{0x3138, 0x02, 0}, // PD_AREA_5 = 0x2ba-0x65d, 0x210-0x4d0
{0x3139, 0xba, 0},
{0x313a, 0x02, 0},
{0x313b, 0x10, 0},
{0x313c, 0x06, 0},
{0x313d, 0x5d, 0},
{0x313e, 0x04, 0},
{0x313f, 0xd0, 0},
{0x3140, 0x00, 0}, // PD_AREA_6 = 0xa1-0x876, 0x6b-0x676
{0x3141, 0xa1, 0},
{0x3142, 0x00, 0},
{0x3143, 0x6b, 0},
{0x3144, 0x08, 0},
{0x3145, 0x76, 0},
{0x3146, 0x06, 0},
{0x3147, 0x76, 0},
{0x3148, 0x00, 0}, // PD_AREA_7 = 0xa1-0x876, 0x5e-0x34c
{0x3149, 0xa1, 0},
{0x314a, 0x00, 0},
{0x314b, 0x5e, 0},
{0x314c, 0x08, 0},
{0x314d, 0x76, 0},
{0x314e, 0x03, 0},
{0x314f, 0x4c, 0},
{0x3165, 0x02, 0}, // AREA_EN_0 = free area
};
// static struct msm_camera_i2c_reg_array reg_array3[] = {
// // REG_HOLD ON
// {0x104,0x1,0},
// // from regression
// {0x3002,0x0,0},
// // FRM_LENGTH, 1802 vs 3554
// // {0x340,0x7,0}, {0x341,0xa,0}, // camera start {0x340,0xd,0}, {0x341,0xe2,0},
// // INTEG_TIME aka coarse_int_time_addr aka shutter speed
// {0x202,0x03,0}, {0x203,0xda,0},
// // global_gain_addr
// {0x204,0x0,0}, {0x205,0x0,0},
// //??
// {0x20e,0x1,0}, {0x20f,0x0,0},
// {0x210,0x1,0}, {0x211,0x0,0},
// {0x212,0x1,0}, {0x213,0x0,0},
// {0x214,0x1,0}, {0x215,0x0,0},
// // REG_HOLD: mode setting
// {0x104,0x0,0},
// };
// start, remove standby mode
static struct msm_camera_i2c_reg_array start_reg_array[] = {{0x100,0x1,0}};
// stop, enable standby mode
static struct msm_camera_i2c_reg_array stop_reg_array[] = {{0x100,0x0,0}};
/*
// still mode settings:
{0x847f, 0x0c0c,}, //_M_EQCTL
{0x8436, 0xfd7f,}, //_M_Kgxdr
{0x8440, 0xf07f,}, //_M_X_LMT
{0x8443, 0xb41e,}, //_M_X_TGT
{0x841b, 0x4001,}, //_M_Kgx10
{0x84b6, 0xfd7f,}, //_M_Kgydr
{0x84c0, 0xf07f,}, //_M_Y_LMT
{0x84c3, 0xb41e,}, //_M_Y_TGT
{0x849b, 0x4001,}, //_M_Kgy10
{0x8438, 0x2d0f,}, //_M_Kgx11
{0x84b8, 0x2d0f,}, //_M_Kgy11
{0x8447, 0x002b,}, //_M_KgxTG
{0x84c7, 0x002b,}, //_M_KgyTG
{0x847f, 0x0d0d,}, //_M_EQCTL
*/
static struct msm_camera_i2c_reg_array init_array_ov8865[] = {
// round 1
//{0x103,0x1,0}, // software reset
{0x100,0x0,0}, // standby on
{0x3638,0xff,0},
{0x302,0x1e,0}, {0x303,0x0,0}, {0x304,0x3,0}, {0x30d,0x1e,0}, {0x30e,0x0,0}, {0x30f,0x9,0}, {0x312,0x1,0}, {0x31e,0xc,0}, // PLL control
{0x3015,0x1,0}, {0x3018,0x72,0}, {0x3020,0x93,0}, {0x3022,0x1,0},
{0x3031,0xa,0}, // 10-bit mode
{0x3106,0x1,0}, {0x3305,0xf1,0}, {0x3308,0x0,0}, {0x3309,0x28,0}, {0x330a,0x0,0}, {0x330b,0x20,0}, {0x330c,0x0,0}, {0x330d,0x0,0}, {0x330e,0x0,0}, {0x330f,0x40,0}, {0x3307,0x4,0}, {0x3604,0x4,0}, {0x3602,0x30,0}, {0x3605,0x0,0}, {0x3607,0x20,0}, {0x3608,0x11,0}, {0x3609,0x68,0}, {0x360a,0x40,0}, {0x360c,0xdd,0}, {0x360e,0xc,0}, {0x3610,0x7,0}, {0x3612,0x86,0}, {0x3613,0x58,0}, {0x3614,0x28,0}, {0x3617,0x40,0}, {0x3618,0x5a,0}, {0x3619,0x9b,0}, {0x361c,0x0,0}, {0x361d,0x60,0}, {0x3631,0x60,0}, {0x3633,0x10,0}, {0x3634,0x10,0}, {0x3635,0x10,0}, {0x3636,0x10,0}, {0x3641,0x55,0}, {0x3646,0x86,0}, {0x3647,0x27,0}, {0x364a,0x1b,0}, {0x3500,0x0,0}, {0x3501,0x4c,0}, {0x3502,0x0,0}, {0x3503,0x0,0}, {0x3508,0x2,0},
{0x3509,0x0,0}, // AEC GAIN
{0x3700,0x24,0}, {0x3701,0xc,0}, {0x3702,0x28,0}, {0x3703,0x19,0}, {0x3704,0x14,0}, {0x3705,0x0,0}, {0x3706,0x38,0}, {0x3707,0x4,0}, {0x3708,0x24,0}, {0x3709,0x40,0}, {0x370a,0x0,0}, {0x370b,0xb8,0}, {0x370c,0x4,0}, {0x3718,0x12,0}, {0x3719,0x31,0}, {0x3712,0x42,0}, {0x3714,0x12,0}, {0x371e,0x19,0}, {0x371f,0x40,0}, {0x3720,0x5,0}, {0x3721,0x5,0}, {0x3724,0x2,0}, {0x3725,0x2,0}, {0x3726,0x6,0}, {0x3728,0x5,0}, {0x3729,0x2,0}, {0x372a,0x3,0}, {0x372b,0x53,0}, {0x372c,0xa3,0}, {0x372d,0x53,0}, {0x372e,0x6,0}, {0x372f,0x10,0}, {0x3730,0x1,0}, {0x3731,0x6,0}, {0x3732,0x14,0}, {0x3733,0x10,0}, {0x3734,0x40,0}, {0x3736,0x20,0}, {0x373a,0x2,0}, {0x373b,0xc,0}, {0x373c,0xa,0}, {0x373e,0x3,0}, {0x3755,0x40,0}, {0x3758,0x0,0}, {0x3759,0x4c,0}, {0x375a,0x6,0}, {0x375b,0x13,0}, {0x375c,0x40,0}, {0x375d,0x2,0}, {0x375e,0x0,0}, {0x375f,0x14,0}, {0x3767,0x1c,0}, {0x3768,0x4,0}, {0x3769,0x20,0}, {0x376c,0xc0,0}, {0x376d,0xc0,0}, {0x376a,0x8,0}, {0x3761,0x0,0}, {0x3762,0x0,0}, {0x3763,0x0,0}, {0x3766,0xff,0}, {0x376b,0x42,0}, {0x3772,0x23,0}, {0x3773,0x2,0}, {0x3774,0x16,0}, {0x3775,0x12,0}, {0x3776,0x8,0}, {0x37a0,0x44,0}, {0x37a1,0x3d,0}, {0x37a2,0x3d,0}, {0x37a3,0x1,0}, {0x37a4,0x0,0}, {0x37a5,0x8,0}, {0x37a6,0x0,0}, {0x37a7,0x44,0}, {0x37a8,0x58,0}, {0x37a9,0x58,0}, {0x3760,0x0,0}, {0x376f,0x1,0}, {0x37aa,0x44,0}, {0x37ab,0x2e,0}, {0x37ac,0x2e,0}, {0x37ad,0x33,0}, {0x37ae,0xd,0}, {0x37af,0xd,0}, {0x37b0,0x0,0}, {0x37b1,0x0,0}, {0x37b2,0x0,0}, {0x37b3,0x42,0}, {0x37b4,0x42,0}, {0x37b5,0x33,0}, {0x37b6,0x0,0}, {0x37b7,0x0,0}, {0x37b8,0x0,0}, {0x37b9,0xff,0}, {0x3800,0x0,0}, {0x3801,0xc,0}, {0x3802,0x0,0}, {0x3803,0xc,0},
{0x3804,0xc,0}, {0x3805,0xd3,0}, // 3283
{0x3806,0x9,0}, {0x3807,0xa3,0}, // 2467
{0x3808,0x6,0}, {0x3809,0x60,0}, // 0x660 = 1632 (width)
{0x380a,0x4,0}, {0x380b,0xc8,0}, // 0x4c8 = 1224 (height)
{0x380c,0x6,0}, {0x380d,0x42,0}, // line_length_pck
{0x380e,0x5,0}, {0x380f,0xda,0}, // frame_length_lines
{0x3810,0x0,0}, {0x3811,0x4,0}, {0x3813,0x4,0},
{0x3814,0x3,0}, {0x3815,0x1,0}, // H-binning
{0x3820,0x6,0}, // format1
{0x3821,0x40,0}, // format2
{0x382a,0x3,0}, {0x382b,0x1,0}, // V-binning
{0x382d,0x7f,0}, {0x3830,0x8,0}, {0x3836,0x2,0}, {0x3837,0x18,0},
{0x3841,0xff,0},
{0x3846,0x88,0}, {0x3d85,0x6,0}, {0x3d8c,0x75,0}, {0x3d8d,0xef,0}, {0x3f08,0xb,0}, {0x4000,0xf1,0}, {0x4001,0x14,0}, {0x4005,0x10,0}, {0x4006,0x1,0}, {0x4007,0x1,0}, {0x400b,0xc,0}, {0x400d,0x10,0}, {0x401b,0x0,0}, {0x401d,0x0,0}, {0x4020,0x0,0}, {0x4021,0x0,0}, {0x4022,0x4,0}, {0x4023,0x1f,0}, {0x4024,0x6,0}, {0x4025,0x20,0}, {0x4026,0x6,0}, {0x4027,0x4f,0}, {0x4028,0x0,0}, {0x4029,0x2,0}, {0x402a,0x4,0}, {0x402b,0x4,0}, {0x402c,0x2,0}, {0x402d,0x2,0}, {0x402e,0x8,0}, {0x402f,0x2,0}, {0x401f,0x0,0}, {0x4034,0x3f,0}, {0x4300,0xff,0}, {0x4301,0x0,0}, {0x4302,0xf,0}, {0x4500,0x40,0}, {0x4503,0x10,0}, {0x4601,0x74,0}, {0x481f,0x32,0}, {0x4837,0x15,0}, {0x4850,0x10,0}, {0x4851,0x32,0}, {0x4b00,0x2a,0}, {0x4b0d,0x0,0}, {0x4d00,0x4,0}, {0x4d01,0x18,0}, {0x4d02,0xc3,0}, {0x4d03,0xff,0}, {0x4d04,0xff,0}, {0x4d05,0xff,0}, {0x5000,0x96,0}, {0x5001,0x1,0}, {0x5002,0x8,0}, {0x5901,0x0,0},
{0x5e00,0x0,0},
//{0x5e00,0x80,0},
{0x5e01,0x41,0}, {0x5b00,0x2,0}, {0x5b01,0xd0,0}, {0x5b02,0x3,0}, {0x5b03,0xff,0}, {0x5b05,0x6c,0}, {0x5780,0xfc,0}, {0x5781,0xdf,0}, {0x5782,0x3f,0}, {0x5783,0x8,0}, {0x5784,0xc,0}, {0x5786,0x20,0}, {0x5787,0x40,0}, {0x5788,0x8,0}, {0x5789,0x8,0}, {0x578a,0x2,0}, {0x578b,0x1,0}, {0x578c,0x1,0}, {0x578d,0xc,0}, {0x578e,0x2,0}, {0x578f,0x1,0}, {0x5790,0x1,0}, {0x5800,0x1d,0}, {0x5801,0xe,0}, {0x5802,0xc,0}, {0x5803,0xc,0}, {0x5804,0xf,0}, {0x5805,0x22,0}, {0x5806,0xa,0}, {0x5807,0x6,0}, {0x5808,0x5,0}, {0x5809,0x5,0}, {0x580a,0x7,0}, {0x580b,0xa,0}, {0x580c,0x6,0}, {0x580d,0x2,0}, {0x580e,0x0,0}, {0x580f,0x0,0}, {0x5810,0x3,0}, {0x5811,0x7,0}, {0x5812,0x6,0}, {0x5813,0x2,0}, {0x5814,0x0,0}, {0x5815,0x0,0}, {0x5816,0x3,0}, {0x5817,0x7,0}, {0x5818,0x9,0}, {0x5819,0x6,0}, {0x581a,0x4,0}, {0x581b,0x4,0}, {0x581c,0x6,0}, {0x581d,0xa,0}, {0x581e,0x19,0}, {0x581f,0xd,0}, {0x5820,0xb,0}, {0x5821,0xb,0}, {0x5822,0xe,0}, {0x5823,0x22,0}, {0x5824,0x23,0}, {0x5825,0x28,0}, {0x5826,0x29,0}, {0x5827,0x27,0}, {0x5828,0x13,0}, {0x5829,0x26,0}, {0x582a,0x33,0}, {0x582b,0x32,0}, {0x582c,0x33,0}, {0x582d,0x16,0}, {0x582e,0x14,0}, {0x582f,0x30,0}, {0x5830,0x31,0}, {0x5831,0x30,0}, {0x5832,0x15,0}, {0x5833,0x26,0}, {0x5834,0x23,0}, {0x5835,0x21,0}, {0x5836,0x23,0}, {0x5837,0x5,0}, {0x5838,0x36,0}, {0x5839,0x27,0}, {0x583a,0x28,0}, {0x583b,0x26,0}, {0x583c,0x24,0}, {0x583d,0xdf,0},
//{0x100,0x1,0},
// round 2 (color calibration)
{0x7010,0x0,0}, {0x7011,0x0,0}, {0x7012,0x0,0}, {0x7013,0x0,0}, {0x7014,0x0,0}, {0x7015,0x0,0}, {0x7016,0x0,0}, {0x7017,0x0,0}, {0x7018,0x0,0}, {0x7019,0x0,0}, {0x701a,0x0,0}, {0x701b,0x0,0}, {0x701c,0x0,0}, {0x701d,0x0,0}, {0x701e,0x0,0}, {0x701f,0x0,0}, {0x7020,0x0,0}, {0x7021,0x0,0}, {0x7022,0x0,0}, {0x7023,0x0,0}, {0x7024,0x0,0}, {0x7025,0x0,0}, {0x7026,0x0,0}, {0x7027,0x0,0}, {0x7028,0x0,0}, {0x7029,0x0,0}, {0x702a,0x0,0}, {0x702b,0x0,0}, {0x702c,0x0,0}, {0x702d,0x0,0}, {0x702e,0x0,0}, {0x702f,0x0,0}, {0x7030,0x0,0}, {0x7031,0x0,0}, {0x7032,0x0,0}, {0x7033,0x0,0}, {0x7034,0x0,0}, {0x7035,0x0,0}, {0x7036,0x0,0}, {0x7037,0x0,0}, {0x7038,0x0,0}, {0x7039,0x0,0}, {0x703a,0x0,0}, {0x703b,0x0,0}, {0x703c,0x0,0}, {0x703d,0x0,0}, {0x703e,0x0,0}, {0x703f,0x0,0}, {0x7040,0x0,0}, {0x7041,0x0,0}, {0x7042,0x0,0}, {0x7043,0x0,0}, {0x7044,0x0,0}, {0x7045,0x0,0}, {0x7046,0x0,0}, {0x7047,0x0,0}, {0x7048,0x0,0}, {0x7049,0x0,0}, {0x704a,0x0,0}, {0x704b,0x0,0}, {0x704c,0x0,0}, {0x704d,0x0,0}, {0x704e,0x0,0}, {0x704f,0x0,0}, {0x7050,0x0,0}, {0x7051,0x0,0}, {0x7052,0x0,0}, {0x7053,0x0,0}, {0x7054,0x0,0}, {0x7055,0x0,0}, {0x7056,0x0,0}, {0x7057,0x0,0}, {0x7058,0x0,0}, {0x7059,0x0,0}, {0x705a,0x0,0}, {0x705b,0x0,0}, {0x705c,0x0,0}, {0x705d,0x0,0}, {0x705e,0x0,0}, {0x705f,0x0,0}, {0x7060,0x0,0}, {0x7061,0x0,0}, {0x7062,0x0,0}, {0x7063,0x0,0}, {0x7064,0x0,0}, {0x7065,0x0,0}, {0x7066,0x0,0}, {0x7067,0x0,0}, {0x7068,0x0,0}, {0x7069,0x0,0}, {0x706a,0x0,0}, {0x706b,0x0,0}, {0x706c,0x0,0}, {0x706d,0x0,0}, {0x706e,0x0,0}, {0x706f,0x0,0}, {0x7070,0x0,0}, {0x7071,0x0,0}, {0x7072,0x0,0}, {0x7073,0x0,0}, {0x7074,0x0,0}, {0x7075,0x0,0}, {0x7076,0x0,0}, {0x7077,0x0,0}, {0x7078,0x0,0}, {0x7079,0x0,0}, {0x707a,0x0,0}, {0x707b,0x0,0}, {0x707c,0x0,0}, {0x707d,0x0,0}, {0x707e,0x0,0}, {0x707f,0x0,0}, {0x7080,0x0,0}, {0x7081,0x0,0}, {0x7082,0x0,0}, {0x7083,0x0,0}, {0x7084,0x0,0}, {0x7085,0x0,0}, {0x7086,0x0,0}, {0x7087,0x0,0}, {0x7088,0x0,0}, {0x7089,0x0,0}, {0x708a,0x0,0}, {0x708b,0x0,0}, {0x708c,0x0,0}, {0x708d,0x0,0}, {0x708e,0x0,0}, {0x708f,0x0,0}, {0x7090,0x0,0}, {0x7091,0x0,0}, {0x7092,0x0,0}, {0x7093,0x0,0}, {0x7094,0x0,0}, {0x7095,0x0,0}, {0x7096,0x0,0}, {0x7097,0x0,0}, {0x7098,0x0,0}, {0x7099,0x0,0}, {0x709a,0x0,0}, {0x709b,0x0,0}, {0x709c,0x0,0}, {0x709d,0x0,0}, {0x709e,0x0,0}, {0x709f,0x0,0}, {0x70a0,0x0,0}, {0x70a1,0x0,0}, {0x70a2,0x0,0}, {0x70a3,0x0,0}, {0x70a4,0x0,0}, {0x70a5,0x0,0}, {0x70a6,0x0,0}, {0x70a7,0x0,0}, {0x70a8,0x0,0}, {0x70a9,0x0,0}, {0x70aa,0x0,0}, {0x70ab,0x0,0}, {0x70ac,0x0,0}, {0x70ad,0x0,0}, {0x70ae,0x0,0}, {0x70af,0x0,0}, {0x70b0,0x0,0}, {0x70b1,0x0,0}, {0x70b2,0x0,0}, {0x70b3,0x0,0}, {0x70b4,0x0,0}, {0x70b5,0x0,0}, {0x70b6,0x0,0}, {0x70b7,0x0,0}, {0x70b8,0x0,0}, {0x70b9,0x0,0}, {0x70ba,0x0,0}, {0x70bb,0x0,0}, {0x70bc,0x0,0}, {0x70bd,0x0,0}, {0x70be,0x0,0}, {0x70bf,0x0,0}, {0x70c0,0x0,0}, {0x70c1,0x0,0}, {0x70c2,0x0,0}, {0x70c3,0x0,0}, {0x70c4,0x0,0}, {0x70c5,0x0,0}, {0x70c6,0x0,0}, {0x70c7,0x0,0}, {0x70c8,0x0,0}, {0x70c9,0x0,0}, {0x70ca,0x0,0}, {0x70cb,0x0,0}, {0x70cc,0x0,0}, {0x70cd,0x0,0}, {0x70ce,0x0,0}, {0x70cf,0x0,0}, {0x70d0,0x0,0}, {0x70d1,0x0,0}, {0x70d2,0x0,0}, {0x70d3,0x0,0}, {0x70d4,0x0,0}, {0x70d5,0x0,0}, {0x70d6,0x0,0}, {0x70d7,0x0,0}, {0x70d8,0x0,0}, {0x70d9,0x0,0}, {0x70da,0x0,0}, {0x70db,0x0,0}, {0x70dc,0x0,0}, {0x70dd,0x0,0}, {0x70de,0x0,0}, {0x70df,0x0,0}, {0x70e0,0x0,0}, {0x70e1,0x0,0}, {0x70e2,0x0,0}, {0x70e3,0x0,0}, {0x70e4,0x0,0}, {0x70e5,0x0,0}, {0x70e6,0x0,0}, {0x70e7,0x0,0}, {0x70e8,0x0,0}, {0x70e9,0x0,0}, {0x70ea,0x0,0}, {0x70eb,0x0,0}, {0x70ec,0x0,0}, {0x70ed,0x0,0}, {0x70ee,0x0,0}, {0x70ef,0x0,0}, {0x70f0,0x0,0}, {0x70f1,0x0,0}, {0x70f2,0x0,0}, {0x70f3,0x0,0}, {0x70f4,0x0,0}, {0x70f5,0x0,0}, {0x70f6,0x0,0}, {0x70f7,0x0,0}, {0x70f8,0x0,0}, {0x70f9,0x0,0}, {0x70fa,0x0,0}, {0x70fb,0x0,0}, {0x70fc,0x0,0}, {0x70fd,0x0,0}, {0x70fe,0x0,0}, {0x70ff,0x0,0}, {0x7100,0x0,0}, {0x7101,0x0,0}, {0x7102,0x0,0}, {0x7103,0x0,0}, {0x7104,0x0,0}, {0x7105,0x0,0}, {0x7106,0x0,0}, {0x7107,0x0,0}, {0x7108,0x0,0}, {0x7109,0x0,0}, {0x710a,0x0,0}, {0x710b,0x0,0}, {0x710c,0x0,0}, {0x710d,0x0,0}, {0x710e,0x0,0}, {0x710f,0x0,0},
};