diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2013-09-02 16:33:02 +0200 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-03-20 17:35:15 +0900 |
commit | fa44ad9676988104f8c755f0bf977d8e86ad8410 (patch) | |
tree | ed3e9937d377ccf24950771598ccde79ce97397c /drivers/media | |
parent | 35b9cfc83c402eb7f7245ee547e88fd0a4a6e9ef (diff) | |
download | linux-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.c | 37 |
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: |