aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/sr130pc20.c
diff options
context:
space:
mode:
authorsbrissen <sbrissen@hotmail.com>2014-02-07 22:32:21 -0500
committersbrissen <sbrissen@hotmail.com>2014-02-12 08:01:24 -0500
commitb1c5069196635586f0cc98cf3eca277c08b282f6 (patch)
treef9f71953d4a975efcd268a332788e1103941f98a /drivers/media/video/sr130pc20.c
parent219edf3a61a7f71809d837033735d2bfa7f0d6da (diff)
downloadkernel_samsung_smdk4412-b1c5069196635586f0cc98cf3eca277c08b282f6.zip
kernel_samsung_smdk4412-b1c5069196635586f0cc98cf3eca277c08b282f6.tar.gz
kernel_samsung_smdk4412-b1c5069196635586f0cc98cf3eca277c08b282f6.tar.bz2
smdk4412: update fimc_capture and sr130pc20 cam driver
-updates are from i605 4.3 kernel source -updates + small hack fixes front cam on kona Change-Id: If8348be6dbef50bb322a60d554d177e046eec429
Diffstat (limited to 'drivers/media/video/sr130pc20.c')
-rw-r--r--drivers/media/video/sr130pc20.c45
1 files changed, 20 insertions, 25 deletions
diff --git a/drivers/media/video/sr130pc20.c b/drivers/media/video/sr130pc20.c
index ab2b8d5..8dbc83f 100644
--- a/drivers/media/video/sr130pc20.c
+++ b/drivers/media/video/sr130pc20.c
@@ -32,6 +32,9 @@
#define sr130pc20_writew(sd, addr, data) i2c_write_nop()
#define sr130pc20_writel(sd, addr, data) i2c_write_nop()
+int fimc_is;
+EXPORT(fimc_is);
+
static int dbg_level;
static const struct sr130pc20_fps sr130pc20_framerates[] = {
@@ -1284,10 +1287,11 @@ static int sr130pc20_s_mbus_fmt(struct v4l2_subdev *sd,
__func__, fmt->code, fmt->colorspace, fmt->width, fmt->height);
v4l2_fill_pix_format(&state->req_fmt, fmt);
- if (fmt->field < IS_MODE_CAPTURE_STILL)
- state->format_mode = V4L2_PIX_FMT_MODE_PREVIEW;
- else
+ if ((IS_MODE_CAPTURE_STILL == fmt->field)
+ && (SENSOR_CAMERA == state->sensor_mode))
state->format_mode = V4L2_PIX_FMT_MODE_CAPTURE;
+ else
+ state->format_mode = V4L2_PIX_FMT_MODE_PREVIEW;
if (state->format_mode != V4L2_PIX_FMT_MODE_CAPTURE) {
previous_index = state->preview.frmsize ?
@@ -1407,10 +1411,14 @@ static int sr130pc20_s_parm(struct v4l2_subdev *sd,
cam_dbg("s_parm state->fps=%d, state->req_fps=%d\n",
state->fps, state->req_fps);
- if ((state->req_fps < 0) || (state->req_fps > 30)) {
- cam_err("%s: error, invalid frame rate %d. we'll set to 30\n",
+ if (state->req_fps < 0) {
+ cam_err("%s: error, invalid frame rate %d. we'll set to 0\n",
__func__, state->req_fps);
state->req_fps = 0;
+ } else if (state->req_fps > 25) {
+ cam_err("%s: error, invalid frame rate %d. we'll set to 25\n",
+ __func__, state->req_fps);
+ state->req_fps = 25;
}
return sr130pc20_set_frame_rate(sd, state->req_fps);
@@ -1626,7 +1634,10 @@ static int sr130pc20_s_stream(struct v4l2_subdev *sd, int enable)
cam_info("stream mode = %d\n", enable);
- BUG_ON(!state->initialized);
+ if (unlikely(!state->initialized)) {
+ WARN(1, "s_stream, not initialized\n");
+ return -EPERM;
+ }
switch (enable) {
case STREAM_MODE_CAM_OFF:
@@ -1635,23 +1646,12 @@ static int sr130pc20_s_stream(struct v4l2_subdev *sd, int enable)
break;
case STREAM_MODE_CAM_ON:
- switch (state->sensor_mode) {
- case SENSOR_CAMERA:
if (state->format_mode == V4L2_PIX_FMT_MODE_CAPTURE)
err = sr130pc20_start_capture(sd);
else
err = sr130pc20_start_preview(sd);
break;
- case SENSOR_MOVIE:
- err = sr130pc20_start_preview(sd);
- break;
-
- default:
- break;
- }
- break;
-
case STREAM_MODE_MOVIE_OFF:
cam_info("movie off");
state->recording = 0;
@@ -1674,14 +1674,6 @@ static int sr130pc20_s_stream(struct v4l2_subdev *sd, int enable)
static inline int sr130pc20_check_i2c(struct v4l2_subdev *sd, u16 data)
{
- int err;
- u32 val = 0;
-
- err = sr130pc20_readw(sd, 0x0000, &val);
- if (unlikely(err))
- return err;
-
- cam_dbg("version: 0x%04X is 0x6017?\n", val);
return 0;
}
@@ -1727,6 +1719,7 @@ static int sr130pc20_init(struct v4l2_subdev *sd, u32 val)
CHECK_ERR_MSG(err, "failed to initialize camera device\n");
sr130pc20_init_parameter(sd);
state->initialized = 1;
+ fimc_is = 1;
return 0;
}
@@ -1775,6 +1768,7 @@ static int sr130pc20_s_config(struct v4l2_subdev *sd,
state->format_mode = V4L2_PIX_FMT_MODE_PREVIEW;
state->fps = 0;
state->req_fps = -1;
+ state->write_fps = 0;
/* Initialize the independant HW module like flash here */
state->flash.mode = FLASH_MODE_OFF;
@@ -1880,6 +1874,7 @@ static int sr130pc20_remove(struct i2c_client *client)
v4l2_device_unregister_subdev(sd);
mutex_destroy(&state->ctrl_lock);
kfree(state);
+ fimc_is = 0;
printk(KERN_DEBUG "%s %s: driver removed!!\n",
dev_driver_string(&client->dev), dev_name(&client->dev));