diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch new file mode 100644 index 00000000..7f5261fb --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0063-mt9t112-Correct-register-settings-for-mt9t111-sensor.patch @@ -0,0 +1,109 @@ +From fa6380a53783b185189c372dd5e9d17f46c5c4d7 Mon Sep 17 00:00:00 2001 +From: Sergio Aguirre <saaguirre@ti.com> +Date: Fri, 16 Jul 2010 07:52:06 -0500 +Subject: [PATCH 63/75] mt9t112: Correct register settings for mt9t111 sensor + +This now matches with Aptina's recommended values. + +Signed-off-by: Sergio Aguirre <saaguirre@ti.com> +--- + drivers/media/video/mt9t112.c | 46 ++++++++++++++++++++++++++++------------ + 1 files changed, 32 insertions(+), 14 deletions(-) + +diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c +index 44234e4..ac295dd 100644 +--- a/drivers/media/video/mt9t112.c ++++ b/drivers/media/video/mt9t112.c +@@ -44,6 +44,9 @@ + #define MAX_WIDTH 2048 + #define MAX_HEIGHT 1536 + ++#define MAX_WIDTH_PREV 1024 ++#define MAX_HEIGHT_PREV 768 ++ + #define VGA_WIDTH 640 + #define VGA_HEIGHT 480 + +@@ -392,24 +395,39 @@ static int mt9t112_set_a_frame_size(const struct i2c_client *client, + u16 height) + { + int ret; +- u16 wstart = (MAX_WIDTH - width) / 2; +- u16 hstart = (MAX_HEIGHT - height) / 2; ++ u16 wstart, hstart, wend, hend; ++ u16 max_width = MAX_WIDTH_PREV, max_height = MAX_HEIGHT_PREV; ++ ++ if ((width > max_width) || (height > max_height)) { ++ /* Capture case */ ++ max_width = MAX_WIDTH; ++ max_height = MAX_HEIGHT; ++ hstart = 4; ++ wstart = 4; ++ hend = 1547; ++ wend = 2059; ++ } else { ++ hstart = 0; ++ wstart = 0; ++ hend = 1549; ++ wend = 2061; ++ } + + /* (Context A) Image Width/Height */ + mt9t112_mcu_write(ret, client, VAR(26, 0), width); + mt9t112_mcu_write(ret, client, VAR(26, 2), height); + + /* (Context A) Output Width/Height */ +- mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + width); +- mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + height); ++ mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + max_width); ++ mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + max_height); + + /* (Context A) Start Row/Column */ +- mt9t112_mcu_write(ret, client, VAR(18, 2), 4 + hstart); +- mt9t112_mcu_write(ret, client, VAR(18, 4), 4 + wstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 2), hstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 4), wstart); + + /* (Context A) End Row/Column */ +- mt9t112_mcu_write(ret, client, VAR(18, 6), 11 + height + hstart); +- mt9t112_mcu_write(ret, client, VAR(18, 8), 11 + width + wstart); ++ mt9t112_mcu_write(ret, client, VAR(18, 6), hend); ++ mt9t112_mcu_write(ret, client, VAR(18, 8), wend); + + mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); + +@@ -547,25 +565,25 @@ static int mt9t112_init_setting(const struct i2c_client *client) + mt9t112_mcu_mask_set(ret, client, VAR(26, 160), 0x0040, 0x0000); + + /* Read Mode (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 12), 0x0024); ++ mt9t112_mcu_write(ret, client, VAR(18, 12), 0x046C); + + /* Fine Correction (A) */ + mt9t112_mcu_write(ret, client, VAR(18, 15), 0x00CC); + + /* Fine IT Min (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 17), 0x01f1); ++ mt9t112_mcu_write(ret, client, VAR(18, 17), 0x0381); + + /* Fine IT Max Margin (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 19), 0x00fF); ++ mt9t112_mcu_write(ret, client, VAR(18, 19), 0x024F); + + /* Base Frame Lines (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 29), 0x032D); ++ mt9t112_mcu_write(ret, client, VAR(18, 29), 0x0378); + + /* Min Line Length (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 31), 0x073a); ++ mt9t112_mcu_write(ret, client, VAR(18, 31), 0x05D0); + + /* Line Length (A) */ +- mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07d0); ++ mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07AC); + + /* Adaptive Output Clock (B) */ + mt9t112_mcu_mask_set(ret, client, VAR(27, 160), 0x0040, 0x0000); +-- +1.6.6.1 + |