diff options
author | Sandor Yu <R01008@freescale.com> | 2015-01-30 17:25:40 +0800 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2015-04-14 14:02:09 -0500 |
commit | ca9fef6754ea87c1faa0f8ce7dc75320fb4f3de5 (patch) | |
tree | 4b21e1629f116472cdb640045e0a3711e7a93af8 /drivers/media | |
parent | 486197d85c18c53213dece58c7af6b5df272e800 (diff) |
MLK-10182: cam :Module can't load/unload twice without camera connected
If no camera connected, ov5640 driver loading failed,
but the driver have register subdev by v4l2_async_register_subdev.
v4l2_async_unregister_subdev function in remove function
and not been called when module unloading.
Same subdev can not register twice, v4l2 async driver will print
error message in the second module loading.
Move v4l2_async_register_subdev function after ov5640 is succeed
found to fix the issue.
Signed-off-by: Sandor Yu <R01008@freescale.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/platform/mxc/subdev/ov5640.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/media/platform/mxc/subdev/ov5640.c b/drivers/media/platform/mxc/subdev/ov5640.c index b4247e563a90..34f3440a54b4 100644 --- a/drivers/media/platform/mxc/subdev/ov5640.c +++ b/drivers/media/platform/mxc/subdev/ov5640.c @@ -1828,13 +1828,6 @@ static int ov5640_probe(struct i2c_client *client, return retval; } - v4l2_i2c_subdev_init(&ov5640_data.subdev, client, &ov5640_subdev_ops); - - retval = v4l2_async_register_subdev(&ov5640_data.subdev); - if (retval < 0) - dev_err(&client->dev, - "%s--Async register faialed, ret=%d\n", __func__, retval); - clk_prepare_enable(ov5640_data.sensor_clk); ov5640_data.io_init = ov5640_reset; @@ -1879,6 +1872,13 @@ static int ov5640_probe(struct i2c_client *client, clk_disable(ov5640_data.sensor_clk); + v4l2_i2c_subdev_init(&ov5640_data.subdev, client, &ov5640_subdev_ops); + + retval = v4l2_async_register_subdev(&ov5640_data.subdev); + if (retval < 0) + dev_err(&client->dev, + "%s--Async register failed, ret=%d\n", __func__, retval); + pr_info("camera ov5640, is found\n"); return retval; } |