summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorSylwester Nawrocki <s.nawrocki@samsung.com>2013-09-02 16:33:02 +0200
committerChanho Park <chanho61.park@samsung.com>2014-03-20 17:35:15 +0900
commitfa44ad9676988104f8c755f0bf977d8e86ad8410 (patch)
treeed3e9937d377ccf24950771598ccde79ce97397c /drivers/media
parent35b9cfc83c402eb7f7245ee547e88fd0a4a6e9ef (diff)
downloadlinux-3.10-fa44ad9676988104f8c755f0bf977d8e86ad8410.tar.gz
linux-3.10-fa44ad9676988104f8c755f0bf977d8e86ad8410.tar.bz2
linux-3.10-fa44ad9676988104f8c755f0bf977d8e86ad8410.zip
Revert "m5mols: device initialization moved to V4L2 registered callback"
This reverts commit 30e7664276434227e448742b49738b47d03b6090. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/i2c/m5mols/m5mols_core.c37
1 files changed, 12 insertions, 25 deletions
diff --git a/drivers/media/i2c/m5mols/m5mols_core.c b/drivers/media/i2c/m5mols/m5mols_core.c
index f720a4177d4..a364781c412 100644
--- a/drivers/media/i2c/m5mols/m5mols_core.c
+++ b/drivers/media/i2c/m5mols/m5mols_core.c
@@ -927,31 +927,7 @@ static int m5mols_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
return 0;
}
-static int m5mols_registered(struct v4l2_subdev *sd)
-{
- struct m5mols_info *info = to_m5mols(sd);
- int ret;
-
- mutex_lock(&info->lock);
-
- ret = m5mols_sensor_power(info, true);
- if (!ret)
- ret = m5mols_fw_start(sd);
- if (!ret)
- ret = m5mols_init_controls(sd);
-
- m5mols_sensor_power(info, false);
-
- mutex_unlock(&info->lock);
-
- v4l2_dbg(1, m5mols_debug, sd, "%s: Booting %s (%d)\n",
- __func__, ret ? "failed" : "succeded", ret);
-
- return ret;
-}
-
static const struct v4l2_subdev_internal_ops m5mols_subdev_internal_ops = {
- .registered = m5mols_registered,
.open = m5mols_open,
};
@@ -1039,8 +1015,19 @@ static int m5mols_probe(struct i2c_client *client,
info->ffmt[0] = m5mols_default_ffmt[0];
info->ffmt[1] = m5mols_default_ffmt[1];
- return 0;
+ ret = m5mols_sensor_power(info, true);
+ if (ret)
+ goto out_irq;
+ ret = m5mols_fw_start(sd);
+ if (!ret)
+ ret = m5mols_init_controls(sd);
+
+ ret = m5mols_sensor_power(info, false);
+ if (!ret)
+ return 0;
+out_irq:
+ free_irq(client->irq, sd);
out_me:
media_entity_cleanup(&sd->entity);
out_reg: