Search
SailfishOS Open Build Service
>
Projects
>
home:dcthang:branches:nemo:devel:hw:ti:omap3:n900
>
kernel-adaptation-n900
> linux-2.6-Revert-et8ek8-Call-configure_interface-when-configur.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File linux-2.6-Revert-et8ek8-Call-configure_interface-when-configur.patch of Package kernel-adaptation-n900
From c5f732371e4ab003bb0e92609c577d933a7e147a Mon Sep 17 00:00:00 2001 From: Teemu Tuominen <tux@t3.fi> Date: Wed, 21 Sep 2011 09:58:16 +0300 Subject: [PATCH] Revert "et8ek8: Call configure_interface when configuring the format" This reverts commit a66a458a568455357b561a1534ce8ea1a700965c. --- drivers/media/video/et8ek8.c | 58 +++++++++++++++++------------------------ 1 files changed, 24 insertions(+), 34 deletions(-) diff --git a/drivers/media/video/et8ek8.c b/drivers/media/video/et8ek8.c index 9448bcc..1a55895 100644 --- a/drivers/media/video/et8ek8.c +++ b/drivers/media/video/et8ek8.c @@ -517,6 +517,11 @@ static int et8ek8_configure(struct et8ek8_sensor *sensor) if (rval) goto fail; + rval = sensor->platform_data->configure_interface( + subdev, &sensor->current_reglist->mode); + if (rval) + goto fail; + /* Controls set while the power to the sensor is turned off are saved * but not applied to the hardware. Now that we're about to start * streaming apply all the current values to the hardware. @@ -532,33 +537,14 @@ fail: return rval; } -static int et8ek8_stream_on(struct et8ek8_sensor *sensor) -{ - struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); - - return smia_i2c_write_reg(client, SMIA_REG_8BIT, 0x1252, 0xb0); -} - -static int et8ek8_stream_off(struct et8ek8_sensor *sensor) -{ - struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); - - return smia_i2c_write_reg(client, SMIA_REG_8BIT, 0x1252, 0x30); -} - static int et8ek8_s_stream(struct v4l2_subdev *subdev, int streaming) { - struct et8ek8_sensor *sensor = to_et8ek8_sensor(subdev); - int ret; - - if (!streaming) - return et8ek8_stream_off(sensor); - - ret = et8ek8_configure(sensor); - if (ret < 0) - return ret; + struct i2c_client *client = v4l2_get_subdevdata(subdev); - return et8ek8_stream_on(sensor); + if (streaming) + return smia_i2c_write_reg(client, SMIA_REG_8BIT, 0x1252, 0xB0); + else + return smia_i2c_write_reg(client, SMIA_REG_8BIT, 0x1252, 0x30); } /* -------------------------------------------------------------------------- @@ -703,8 +689,7 @@ static int et8ek8_set_pad_format(struct v4l2_subdev *subdev, struct et8ek8_sensor *sensor = to_et8ek8_sensor(subdev); struct v4l2_mbus_framefmt *format; struct smia_reglist *reglist; - int ret; - + format = __et8ek8_get_pad_format(sensor, fh, fmt->pad, fmt->which); if (format == NULL) return -EINVAL; @@ -716,11 +701,6 @@ static int et8ek8_set_pad_format(struct v4l2_subdev *subdev, if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) { sensor->current_reglist = reglist; - ret = sensor->platform_data->configure_interface(subdev, - &sensor->current_reglist->mode); - if (ret < 0) - return ret; - et8ek8_update_controls(sensor); } @@ -913,14 +893,14 @@ static int et8ek8_dev_init(struct v4l2_subdev *subdev) name); goto out_release; } - rval = et8ek8_stream_on(sensor); /* Needed to be able to read EEPROM */ + rval = et8ek8_s_stream(subdev, 1); /* Needed to be able to read EEPROM */ if (rval) goto out_release; rval = et8ek8_g_priv_mem(subdev); if (rval) dev_warn(&client->dev, "can not read OTP (EEPROM) memory from sensor\n"); - rval = et8ek8_stream_off(sensor); + rval = et8ek8_s_stream(subdev, 0); if (rval) goto out_release; @@ -997,7 +977,17 @@ et8ek8_registered(struct v4l2_subdev *subdev) static int __et8ek8_set_power(struct et8ek8_sensor *sensor, int on) { - return on ? et8ek8_power_on(sensor) : et8ek8_power_off(sensor); + int ret; + + ret = on ? et8ek8_power_on(sensor) : et8ek8_power_off(sensor); + if (ret < 0) + return ret; + + if (!on) + return 0; + + /* Restore the sensor settings */ + return et8ek8_configure(sensor); } static int et8ek8_set_power(struct v4l2_subdev *subdev, int on) -- 1.7.3.4