diff options
author | kyoungho.yun <kyoungho.yun@samsung.com> | 2010-11-14 15:47:23 -0800 |
---|---|---|
committer | Arve Hjønnevåg <arve@android.com> | 2011-11-17 17:52:36 -0800 |
commit | 9b37b3d58ad50d38458814aeadd9a2a9432877b4 (patch) | |
tree | 51c6a97c25bf5e3f05dd15e536a65c80234f646f /drivers/media/video | |
parent | ae7d2dca7a495928b51acf93e094060743741437 (diff) | |
download | kernel_samsung_crespo-9b37b3d58ad50d38458814aeadd9a2a9432877b4.zip kernel_samsung_crespo-9b37b3d58ad50d38458814aeadd9a2a9432877b4.tar.gz kernel_samsung_crespo-9b37b3d58ad50d38458814aeadd9a2a9432877b4.tar.bz2 |
S5PC11X: CAMERA: change EXIF information in back camera
1. When exposure time is very short, shutter speed value
in EXIF has abnormal values.
So, to calculate exactly, the value from sensor multipled by 1000,
before devided by 400.
Also, shutter speed value divided by 1000 in HAL
to maintain result value.
2. Techwin request to change ISO calculation denominator
for calculate more exactly.
Change-Id: Ifb2deb8d225f204912e9e97e4e22d1ee22c35069
Signed-off-by: kyoungho.yun <kyoungho.yun@samsung.com>
Diffstat (limited to 'drivers/media/video')
-rwxr-xr-x | drivers/media/video/s5k4ecgx.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/video/s5k4ecgx.c b/drivers/media/video/s5k4ecgx.c index a185834..b036716 100755 --- a/drivers/media/video/s5k4ecgx.c +++ b/drivers/media/video/s5k4ecgx.c @@ -1987,7 +1987,7 @@ static int s5k4ecgx_get_iso(struct v4l2_subdev *sd, struct v4l2_control *ctrl) /* restore write mode */ s5k4ecgx_i2c_write_twobyte(client, 0x0028, 0x7000); - read_value = read_value1 * read_value2 / 0x100 / 2; + read_value = read_value1 * read_value2 / 384; if (read_value > 0x400) ctrl->value = ISO_400; @@ -2011,16 +2011,20 @@ static int s5k4ecgx_get_shutterspeed(struct v4l2_subdev *sd, struct i2c_client *client = v4l2_get_subdevdata(sd); struct s5k4ecgx_state *state = container_of(sd, struct s5k4ecgx_state, sd); - u16 read_value = 0; + u16 read_value_1; + u16 read_value_2; + u32 read_value; err = s5k4ecgx_set_from_table(sd, "get shutterspeed", &state->regs->get_shutterspeed, 1, 0); - err |= s5k4ecgx_i2c_read_twobyte(client, 0x0F12, &read_value); + err |= s5k4ecgx_i2c_read_twobyte(client, 0x0F12, &read_value_1); + err |= s5k4ecgx_i2c_read_twobyte(client, 0x0F12, &read_value_2); + read_value = (read_value_2 << 16) | (read_value_1 & 0xffff); /* restore write mode */ s5k4ecgx_i2c_write_twobyte(client, 0x0028, 0x7000); - ctrl->value = read_value / 400; + ctrl->value = read_value * 1000 / 400; dev_dbg(&client->dev, "%s: get shutterspeed == %d\n", __func__, ctrl->value); |