commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=9526f8d48a6a15d17b9daa70e09e748213e1941b branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
Signed-off-by: Scott Jiang <[email protected]> --- drivers/media/video/mt9m114.c | 45 +++++++++++++++++++++-------------------- 1 files changed, 23 insertions(+), 22 deletions(-) diff --git a/drivers/media/video/mt9m114.c b/drivers/media/video/mt9m114.c index 9035743..d51c15a 100644 --- a/drivers/media/video/mt9m114.c +++ b/drivers/media/video/mt9m114.c @@ -309,6 +309,7 @@ static const struct mt9m114_reg mt9m114_init[] = { { MT9M114_LOGICAL_ADDRESS_ACCESS, 0x0000, 2 }, { MT9M114_CAM_PORT_OUTPUT_CONTROL, 0x8040, 2 }, + { MT9M114_CAM_SENSOR_CONTROL_READ_MODE, 0x0330, 2 }, { MT9M114_PAD_SLEW, 0x0777, 2 }, }; @@ -326,7 +327,6 @@ static const struct mt9m114_reg mt9m114_regs_qvga[] = { { MT9M114_CAM_SENSOR_CFG_FINE_CORRECTION, 0x00E0, 2 }, { MT9M114_CAM_SENSOR_CFG_CPIPE_LAST_ROW, 0x01E3, 2 }, { MT9M114_CAM_SENSOR_CFG_REG_0_DATA, 0x0020, 2 }, - { MT9M114_CAM_SENSOR_CONTROL_READ_MODE, 0x0330, 2 }, { MT9M114_CAM_CROP_WINDOW_XOFFSET, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_YOFFSET, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_WIDTH, 0x0280, 2 }, @@ -359,7 +359,6 @@ static const struct mt9m114_reg mt9m114_regs_vga[] = { { MT9M114_CAM_SENSOR_CFG_FINE_CORRECTION, 0x00E0, 2 }, { MT9M114_CAM_SENSOR_CFG_CPIPE_LAST_ROW, 0x01E3, 2 }, { MT9M114_CAM_SENSOR_CFG_REG_0_DATA, 0x0020, 2 }, - { MT9M114_CAM_SENSOR_CONTROL_READ_MODE, 0x0330, 2 }, { MT9M114_CAM_CROP_WINDOW_XOFFSET, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_YOFFSET, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_WIDTH, 0x0280, 2 }, @@ -392,7 +391,6 @@ static const struct mt9m114_reg mt9m114_regs_wvga[] = { { MT9M114_CAM_SENSOR_CFG_FINE_CORRECTION, 0x0060, 2 }, { MT9M114_CAM_SENSOR_CFG_CPIPE_LAST_ROW, 0x01E3, 2 }, { MT9M114_CAM_SENSOR_CFG_REG_0_DATA, 0x0020, 2 }, - { MT9M114_CAM_SENSOR_CONTROL_READ_MODE, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_XOFFSET, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_YOFFSET, 0x0000, 2 }, { MT9M114_CAM_CROP_WINDOW_WIDTH, 0x0320, 2 }, @@ -682,31 +680,39 @@ static int mt9m114_set_state(struct i2c_client *client, u8 next_state) return -EFAULT; } -#if 0 static int mt9m114_s_ctrl(struct v4l2_ctrl *ctrl) { struct v4l2_subdev *sd = to_sd(ctrl); + struct i2c_client *client = v4l2_get_subdevdata(sd); switch (ctrl->id) { - case V4L2_CID_CONTRAST: - mt9m114_write(sd, VS6624_CONTRAST0, ctrl->val); - break; - case V4L2_CID_SATURATION: - mt9m114_write(sd, VS6624_SATURATION0, ctrl->val); - break; case V4L2_CID_HFLIP: - mt9m114_write(sd, VS6624_HMIRROR0, ctrl->val); + { + u16 read_mode; + mt9m114_read16(client, + MT9M114_CAM_SENSOR_CONTROL_READ_MODE, &read_mode); + read_mode = (read_mode & 0xfffe) | ctrl->val; + mt9m114_write16(client, + MT9M114_CAM_SENSOR_CONTROL_READ_MODE, read_mode); break; + } case V4L2_CID_VFLIP: - mt9m114_write(sd, VS6624_VFLIP0, ctrl->val); + { + u16 read_mode; + mt9m114_read16(client, + MT9M114_CAM_SENSOR_CONTROL_READ_MODE, &read_mode); + read_mode = (read_mode & 0xfffd) | (ctrl->val << 1); + mt9m114_write16(client, + MT9M114_CAM_SENSOR_CONTROL_READ_MODE, read_mode); break; + } default: return -EINVAL; } return 0; } -#endif + static int mt9m114_enum_mbus_fmt(struct v4l2_subdev *sd, unsigned index, enum v4l2_mbus_pixelcode *code) { @@ -863,11 +869,10 @@ static int mt9m114_g_chip_ident(struct v4l2_subdev *sd, V4L2_IDENT_MT9M114, rev); } -/* static const struct v4l2_ctrl_ops mt9m114_ctrl_ops = { .s_ctrl = mt9m114_s_ctrl, }; -*/ + static const struct v4l2_subdev_core_ops mt9m114_core_ops = { .g_chip_ident = mt9m114_g_chip_ident, }; @@ -960,13 +965,9 @@ static int __devinit mt9m114_probe(struct i2c_client *client, v4l_info(client, "chip found @ 0x%02x (%s)\n", client->addr << 1, client->adapter->name); -#if 0 + hdl = &sensor->hdl; - v4l2_ctrl_handler_init(hdl, 4); - v4l2_ctrl_new_std(hdl, &mt9m114_ctrl_ops, - V4L2_CID_CONTRAST, 0, 0xFF, 1, 0x87); - v4l2_ctrl_new_std(hdl, &mt9m114_ctrl_ops, - V4L2_CID_SATURATION, 0, 0xFF, 1, 0x78); + v4l2_ctrl_handler_init(hdl, 2); v4l2_ctrl_new_std(hdl, &mt9m114_ctrl_ops, V4L2_CID_HFLIP, 0, 1, 1, 0); v4l2_ctrl_new_std(hdl, &mt9m114_ctrl_ops, @@ -987,7 +988,7 @@ static int __devinit mt9m114_probe(struct i2c_client *client, v4l2_ctrl_handler_free(hdl); kfree(sensor); } -#endif + return ret; }
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
