summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorSandor Yu <R01008@freescale.com>2015-01-30 17:25:40 +0800
committerNitin Garg <nitin.garg@freescale.com>2015-04-14 14:02:09 -0500
commitca9fef6754ea87c1faa0f8ce7dc75320fb4f3de5 (patch)
tree4b21e1629f116472cdb640045e0a3711e7a93af8 /drivers/media
parent486197d85c18c53213dece58c7af6b5df272e800 (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.c14
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;
}