summaryrefslogtreecommitdiff
path: root/drivers/media/video/tegra
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/tegra')
-rw-r--r--drivers/media/video/tegra/imx091.c92
1 files changed, 47 insertions, 45 deletions
diff --git a/drivers/media/video/tegra/imx091.c b/drivers/media/video/tegra/imx091.c
index 47a3eca9a877..59de6d972fac 100644
--- a/drivers/media/video/tegra/imx091.c
+++ b/drivers/media/video/tegra/imx091.c
@@ -1,7 +1,7 @@
/*
* imx091.c - imx091 sensor driver
*
-* Copyright (c) 2012 NVIDIA Corporation. All Rights Reserved.
+* Copyright (c) 2012-2013 NVIDIA Corporation. All Rights Reserved.
*
* This file is licensed under the terms of the GNU General Public License
* version 2. This program is licensed "as is" without any warranty of any
@@ -503,8 +503,8 @@ static struct imx091_reg imx091_1308x736_i2c[] = {
{IMX091_TABLE_END, 0x00}
};
-static struct imx091_reg imx091_1052X778_i2c[] = {
- /* Reset */
+static struct imx091_reg imx091_2104x1560_i2c[] = {
+ /* Software reset */
{0x0103, 0x01},
{IMX091_TABLE_WAIT_MS, IMX091_WAIT_MS},
@@ -530,61 +530,62 @@ static struct imx091_reg imx091_1052X778_i2c[] = {
/* PLL */
{0x0305, 0x02},
- {0x0307, 0x20},
+ {0x0307, 0x2F},
{0x30A4, 0x02},
{0x303C, 0x4B},
/* Mode Settings */
{0x0112, 0x0A},
{0x0113, 0x0A},
- {0x0340, 0x08},
- {0x0341, 0xA6},
- {0x0342, 0x09},
- {0x0343, 0x06},
+ {0x0340, 0x06},
+ {0x0341, 0x58},
+ {0x0342, 0x12},
+ {0x0343, 0x0C},
{0x0344, 0x00},
{0x0345, 0x08},
{0x0346, 0x00},
- {0x0347, 0x34},
+ {0x0347, 0x30},
{0x0348, 0x10},
{0x0349, 0x77},
+
{0x034A, 0x0C},
- {0x034B, 0x5B},
- {0x034C, 0x04},
- {0x034D, 0x1C},
- {0x034E, 0x03},
- {0x034F, 0x0A},
+ {0x034B, 0x5F},
+ {0x034C, 0x08},
+ {0x034D, 0x38},
+ {0x034E, 0x06},
+ {0x034F, 0x18},
{0x0381, 0x01},
{0x0383, 0x03},
- {0x0385, 0x05},
+ {0x0385, 0x01},
{0x0387, 0x03},
- {0x3033, 0x84},
+ {0x3033, 0x00},
{0x303D, 0x10},
{0x303E, 0xD0},
{0x3040, 0x08},
{0x3041, 0x97},
{0x3048, 0x01},
- {0x304C, 0x3F},
- {0x304D, 0x02},
+ {0x304C, 0x7F},
+ {0x304D, 0x04},
{0x3064, 0x12},
- {0x309B, 0x48},
- {0x309E, 0x04},
- {0x30D5, 0x04},
- {0x30D6, 0x85},
- {0x30D7, 0x2A},
+ {0x309B, 0x28},
+ {0x309E, 0x00},
+ {0x30D5, 0x09},
+ {0x30D6, 0x01},
+ {0x30D7, 0x01},
{0x30D8, 0x64},
{0x30D9, 0x89},
- {0x30DE, 0x00},
- {0x3102, 0x09},
- {0x3103, 0x23},
- {0x3104, 0x24},
+ {0x30DE, 0x02},
+ {0x3102, 0x10},
+ {0x3103, 0x44},
+ {0x3104, 0x40},
{0x3105, 0x00},
- {0x3106, 0x8B},
- {0x3107, 0x00},
+ {0x3106, 0x0D},
+ {0x3107, 0x01},
{0x310A, 0x0A},
- {0x315C, 0x4A},
- {0x315D, 0x49},
- {0x316E, 0x4B},
- {0x316F, 0x4A},
+ {0x315C, 0x99},
+ {0x315D, 0x98},
+ {0x316E, 0x9A},
+ {0x316F, 0x99},
{0x3301, 0x03},
{0x3304, 0x05},
{0x3305, 0x04},
@@ -597,7 +598,7 @@ static struct imx091_reg imx091_1052X778_i2c[] = {
{0x330C, 0x08},
{0x330D, 0x05},
{0x330E, 0x03},
- {0x3318, 0x75},
+ {0x3318, 0x73},
{0x3322, 0x02},
{0x3342, 0x0F},
{0x3348, 0xE0},
@@ -606,6 +607,7 @@ static struct imx091_reg imx091_1052X778_i2c[] = {
{0x0203, 0x00},
{0x0205, 0x00},
+ {IMX091_TABLE_WAIT_MS, IMX091_WAIT_MS},
{IMX091_TABLE_END, 0x00}
};
@@ -857,15 +859,15 @@ static struct imx091_mode_data imx091_1308x736 = {
.p_mode_i2c = imx091_1308x736_i2c,
};
-static struct imx091_mode_data imx091_1052x778 = {
+static struct imx091_mode_data imx091_2104x1560 = {
.sensor_mode = {
- .res_x = 1024,
- .res_y = 768,
+ .res_x = 2048,
+ .res_y = 1536,
.active_start_x = 0,
.active_stary_y = 0,
.peak_frame_rate = 30000, /* / _INT2FLOAT_DIVISOR */
.pixel_aspect_ratio = 1000, /* / _INT2FLOAT_DIVISOR */
- .pll_multiplier = 5000, /* / _INT2FLOAT_DIVISOR */
+ .pll_multiplier = 6000, /* / _INT2FLOAT_DIVISOR */
.crop_mode = NVC_IMAGER_CROPMODE_NONE,
},
.sensor_dnvc = {
@@ -879,14 +881,14 @@ static struct imx091_mode_data imx091_1052x778 = {
.init_intra_frame_skip = 0,
.ss_intra_frame_skip = 2,
.ss_frame_number = 3,
- .coarse_time = 0x08A1,
+ .coarse_time = 0x0653,
.max_coarse_diff = 5,
.min_exposure_course = 2,
.max_exposure_course = 0xFFFC,
.diff_integration_time = 110, /* / _INT2FLOAT_DIVISOR */
- .line_length = 0x0906,
- .frame_length = 0x08A6,
- .min_frame_length = 0x08A6,
+ .line_length = 0x120C,
+ .frame_length = 0x0658,
+ .min_frame_length = 0x0658,
.max_frame_length = 0xFFFF,
.min_gain = 1, /* / _INT2FLOAT_DIVISOR */
.max_gain = 16000, /* / _INT2FLOAT_DIVISOR */
@@ -894,10 +896,10 @@ static struct imx091_mode_data imx091_1052x778 = {
.inherent_gain_bin_en = 1000, /* / _INT2FLOAT_DIVISOR */
.support_bin_control = 0,
.support_fast_mode = 0,
- .pll_mult = 0x20,
+ .pll_mult = 0x2F,
.pll_div = 0x2,
},
- .p_mode_i2c = imx091_1052X778_i2c,
+ .p_mode_i2c = imx091_2104x1560_i2c,
};
static struct imx091_mode_data imx091_524x390 = {
@@ -947,7 +949,7 @@ static struct imx091_mode_data *imx091_mode_table[] = {
&imx091_4208x3120,
&imx091_1948x1096,
&imx091_1308x736,
- &imx091_1052x778,
+ &imx091_2104x1560,
&imx091_524x390,
};