blob: c9709bfdbfd60e46cd40db6efe504990550462ed [file] [log] [blame]
/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "ov5647.h"
struct ov5647_i2c_reg_conf ov5647_prev_settings[] = {
/*1280*960 Reference Setting 24M MCLK 2lane 280Mbps/lane 30fps
for back to preview*/
{0x3035, 0x21},
{0x3036, 0x37},
{0x3821, 0x07},
{0x3820, 0x41},
{0x3612, 0x09},
{0x3618, 0x00},
{0x380c, 0x07},
{0x380d, 0x68},
{0x380e, 0x03},
{0x380f, 0xd8},
{0x3814, 0x31},
{0x3815, 0x31},
{0x3709, 0x52},
{0x3808, 0x05},
{0x3809, 0x00},
{0x380a, 0x03},
{0x380b, 0xc0},
{0x3800, 0x00},
{0x3801, 0x18},
{0x3802, 0x00},
{0x3803, 0x0e},
{0x3804, 0x0a},
{0x3805, 0x27},
{0x3806, 0x07},
{0x3807, 0x95},
{0x4004, 0x02},
};
struct ov5647_i2c_reg_conf ov5647_snap_settings[] = {
/*2608*1952 Reference Setting 24M MCLK 2lane 280Mbps/lane 30fps*/
{0x3035, 0x21},
{0x3036, 0x4f},
{0x3821, 0x06},
{0x3820, 0x00},
{0x3612, 0x0b},
{0x3618, 0x04},
{0x380c, 0x0a},
{0x380d, 0x8c},
{0x380e, 0x07},
{0x380f, 0xb0},
{0x3814, 0x11},
{0x3815, 0x11},
{0x3709, 0x12},
{0x3808, 0x0a},
{0x3809, 0x30},
{0x380a, 0x07},
{0x380b, 0xa0},
{0x3800, 0x00},
{0x3801, 0x04},
{0x3802, 0x00},
{0x3803, 0x00},
{0x3804, 0x0a},
{0x3805, 0x3b},
{0x3806, 0x07},
{0x3807, 0xa3},
{0x4004, 0x04},
};
struct ov5647_i2c_reg_conf ov5647_recommend_settings[] = {
{0x3035, 0x11},
{0x303c, 0x11},
{0x370c, 0x03},
{0x5000, 0x06},
{0x5003, 0x08},
{0x5a00, 0x08},
{0x3000, 0xff},
{0x3001, 0xff},
{0x3002, 0xff},
{0x301d, 0xf0},
{0x3a18, 0x00},
{0x3a19, 0xf8},
{0x3c01, 0x80},
{0x3b07, 0x0c},
{0x3708, 0x64},
{0x3630, 0x2e},
{0x3632, 0xe2},
{0x3633, 0x23},
{0x3634, 0x44},
{0x3620, 0x64},
{0x3621, 0xe0},
{0x3600, 0x37},
{0x3704, 0xa0},
{0x3703, 0x5a},
{0x3715, 0x78},
{0x3717, 0x01},
{0x3731, 0x02},
{0x370b, 0x60},
{0x3705, 0x1a},
{0x3f05, 0x02},
{0x3f06, 0x10},
{0x3f01, 0x0a},
{0x3a08, 0x01},
{0x3a0f, 0x58},
{0x3a10, 0x50},
{0x3a1b, 0x58},
{0x3a1e, 0x50},
{0x3a11, 0x60},
{0x3a1f, 0x28},
{0x4001, 0x02},
{0x4000, 0x09},
{0x3000, 0x00},
{0x3001, 0x00},
{0x3002, 0x00},
{0x3017, 0xe0},
{0x301c, 0xfc},
{0x3636, 0x06},
{0x3016, 0x08},
{0x3827, 0xec},
{0x3018, 0x44},
{0x3035, 0x21},
{0x3106, 0xf5},
{0x3034, 0x18},
{0x301c, 0xf8},
/*lens setting*/
{0x5000, 0x86},
{0x5800, 0x11},
{0x5801, 0x0c},
{0x5802, 0x0a},
{0x5803, 0x0b},
{0x5804, 0x0d},
{0x5805, 0x13},
{0x5806, 0x09},
{0x5807, 0x05},
{0x5808, 0x03},
{0x5809, 0x03},
{0x580a, 0x06},
{0x580b, 0x08},
{0x580c, 0x05},
{0x580d, 0x01},
{0x580e, 0x00},
{0x580f, 0x00},
{0x5810, 0x02},
{0x5811, 0x06},
{0x5812, 0x05},
{0x5813, 0x01},
{0x5814, 0x00},
{0x5815, 0x00},
{0x5816, 0x02},
{0x5817, 0x06},
{0x5818, 0x09},
{0x5819, 0x05},
{0x581a, 0x04},
{0x581b, 0x04},
{0x581c, 0x06},
{0x581d, 0x09},
{0x581e, 0x11},
{0x581f, 0x0c},
{0x5820, 0x0b},
{0x5821, 0x0b},
{0x5822, 0x0d},
{0x5823, 0x13},
{0x5824, 0x22},
{0x5825, 0x26},
{0x5826, 0x26},
{0x5827, 0x24},
{0x5828, 0x24},
{0x5829, 0x24},
{0x582a, 0x22},
{0x582b, 0x20},
{0x582c, 0x22},
{0x582d, 0x26},
{0x582e, 0x22},
{0x582f, 0x22},
{0x5830, 0x42},
{0x5831, 0x22},
{0x5832, 0x02},
{0x5833, 0x24},
{0x5834, 0x22},
{0x5835, 0x22},
{0x5836, 0x22},
{0x5837, 0x26},
{0x5838, 0x42},
{0x5839, 0x26},
{0x583a, 0x06},
{0x583b, 0x26},
{0x583c, 0x24},
{0x583d, 0xce},
/* manual AWB,manual AE,close Lenc,open WBC*/
{0x3503, 0x03}, /*manual AE*/
{0x3501, 0x10},
{0x3502, 0x80},
{0x350a, 0x00},
{0x350b, 0x7f},
{0x5001, 0x01}, /*manual AWB*/
{0x5180, 0x08},
{0x5186, 0x04},
{0x5187, 0x00},
{0x5188, 0x04},
{0x5189, 0x00},
{0x518a, 0x04},
{0x518b, 0x00},
{0x5000, 0x06}, /*No lenc,WBC on*/
};
struct ov5647_reg ov5647_regs = {
.rec_settings = &ov5647_recommend_settings[0],
.rec_size = ARRAY_SIZE(ov5647_recommend_settings),
.reg_prev = &ov5647_prev_settings[0],
.reg_prev_size = ARRAY_SIZE(ov5647_prev_settings),
.reg_snap = &ov5647_snap_settings[0],
.reg_snap_size = ARRAY_SIZE(ov5647_snap_settings),
};