diff options
author | Wei Chen <wechen@nvidia.com> | 2012-11-07 17:21:44 -0800 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-11-14 14:36:04 -0800 |
commit | 2a95e01fd608003b266528cfb8570f27981a5328 (patch) | |
tree | 355a23d735fde5a688bc22e892837c01a054b106 /drivers/media/video/tegra | |
parent | 6acbbe37ca8ddcbeac4c2a78356452bc44ca3a1f (diff) |
media: video: tegra: add 120fps mode to imx091
Add a 120fps mode to imx091 to enable slow
motion recording.
Bug 1154849
Change-Id: I3468cf463df823b49aa435a08dc90589c80963cf
Signed-off-by: Wei Chen <wechen@nvidia.com>
Reviewed-on: http://git-master/r/161445
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Frank Chen <frankc@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Jon Mayo <jmayo@nvidia.com>
Diffstat (limited to 'drivers/media/video/tegra')
-rw-r--r-- | drivers/media/video/tegra/imx091.c | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/drivers/media/video/tegra/imx091.c b/drivers/media/video/tegra/imx091.c index 304ade92723a..ebebc57c4b21 100644 --- a/drivers/media/video/tegra/imx091.c +++ b/drivers/media/video/tegra/imx091.c @@ -600,6 +600,112 @@ static struct imx091_reg imx091_1052X778_i2c[] = { {IMX091_TABLE_END, 0x00} }; +static struct imx091_reg imx091_524X390_i2c[] = { + /* Reset */ + {0x0103, 0x01}, + {IMX091_TABLE_WAIT_MS, IMX091_WAIT_MS}, + + /* global settings */ + {0x3087, 0x53}, + {0x309D, 0x94}, + {0x30A1, 0x08}, + {0x30C7, 0x00}, + {0x3115, 0x0E}, + {0x3118, 0x42}, + {0x311D, 0x34}, + {0x3121, 0x0D}, + {0x3212, 0xF2}, + {0x3213, 0x0F}, + {0x3215, 0x0F}, + {0x3217, 0x0B}, + {0x3219, 0x0B}, + {0x321B, 0x0D}, + {0x321D, 0x0D}, + + /* black level setting */ + {0x3032, 0x40}, + + /* PLL */ + {0x0305, 0x02}, + {0x0307, 0x2F}, + {0x30A4, 0x02}, + {0x303C, 0x4B}, + + /* Mode Settings */ + {0x0112, 0x0A}, + {0x0113, 0x0A}, + {0x0340, 0x01}, + {0x0341, 0x96}, + {0x0342, 0x12}, + {0x0343, 0x0C}, + {0x0344, 0x00}, + {0x0345, 0x10}, + {0x0346, 0x00}, + {0x0347, 0x30}, + {0x0348, 0x10}, + {0x0349, 0x6F}, + {0x034A, 0x0C}, + {0x034B, 0x5F}, + {0x034C, 0x02}, + {0x034D, 0x0C}, + {0x034E, 0x01}, + {0x034F, 0x86}, + {0x0381, 0x09}, + {0x0383, 0x07}, + {0x0385, 0x09}, + {0x0387, 0x07}, + {0x3033, 0x00}, + {0x303D, 0x10}, + {0x303E, 0xD0}, + {0x3040, 0x08}, + {0x3041, 0x97}, + {0x3048, 0x01}, + {0x304C, 0x7F}, + {0x304D, 0x04}, + {0x3064, 0x12}, + {0x309B, 0x28}, + {0x309E, 0x00}, + {0x30D5, 0x09}, + {0x30D6, 0x00}, + {0x30D7, 0x00}, + {0x30D8, 0x00}, + {0x30D9, 0x00}, + {0x30DE, 0x08}, + {0x3102, 0x10}, + {0x3103, 0x44}, + {0x3104, 0x40}, + {0x3105, 0x00}, + {0x3106, 0x0D}, + {0x3107, 0x01}, + {0x310A, 0x0A}, + {0x315C, 0x99}, + {0x315D, 0x98}, + {0x316E, 0x9A}, + {0x316F, 0x99}, + {0x3301, 0x03}, + {0x3304, 0x03}, + {0x3305, 0x02}, + {0x3306, 0x09}, + {0x3307, 0x06}, + {0x3308, 0x1E}, + {0x3309, 0x05}, + {0x330A, 0x05}, + {0x330B, 0x04}, + {0x330C, 0x07}, + {0x330D, 0x06}, + {0x330E, 0x01}, + {0x3318, 0x44}, + {0x3322, 0x0E}, + {0x3342, 0x00}, + {0x3348, 0xE0}, + + {0x0202, 0x00}, + {0x0203, 0x00}, + {0x0205, 0x00}, + + {IMX091_TABLE_END, 0x00} +}; + /* Each resolution requires the below data table setup and the corresponding * I2C data table. * If more NVC data is needed for the NVC driver, be sure and modify the @@ -785,12 +891,55 @@ static struct imx091_mode_data imx091_1052x778 = { .p_mode_i2c = imx091_1052X778_i2c, }; +static struct imx091_mode_data imx091_524x390 = { + .sensor_mode = { + .res_x = 524, + .res_y = 374, + .active_start_x = 0, + .active_stary_y = 0, + .peak_frame_rate = 120000, /* / _INT2FLOAT_DIVISOR */ + .pixel_aspect_ratio = 1000, /* / _INT2FLOAT_DIVISOR */ + .pll_multiplier = 5000, /* / _INT2FLOAT_DIVISOR */ + .crop_mode = NVC_IMAGER_CROPMODE_PARTIAL, + }, + .sensor_dnvc = { + .api_version = NVC_IMAGER_API_DYNAMIC_VER, + .region_start_x = 0, + .region_start_y = 0, + .x_scale = 1, + .y_scale = 1, + .bracket_caps = 1, + .flush_count = 2, + .init_intra_frame_skip = 0, + .ss_intra_frame_skip = 2, + .ss_frame_number = 3, + .coarse_time = 0x0191, + .max_coarse_diff = 5, + .min_exposure_course = 2, + .max_exposure_course = 0xFFFC, + .diff_integration_time = 110, /* / _INT2FLOAT_DIVISOR */ + .line_length = 0x120C, + .frame_length = 0x0196, + .min_frame_length = 0x0196, + .max_frame_length = 0xFFFF, + .min_gain = 1, /* / _INT2FLOAT_DIVISOR */ + .max_gain = 16000, /* / _INT2FLOAT_DIVISOR */ + .inherent_gain = 1000, /* / _INT2FLOAT_DIVISOR */ + .inherent_gain_bin_en = 1000, /* / _INT2FLOAT_DIVISOR */ + .support_bin_control = 0, + .support_fast_mode = 0, + .pll_mult = 0x20, + .pll_div = 0x2, + }, + .p_mode_i2c = imx091_524X390_i2c, +}; static struct imx091_mode_data *imx091_mode_table[] = { &imx091_4208x3120, &imx091_1948x1096, &imx091_1308x736, &imx091_1052x778, + &imx091_524x390, }; |