media: atomisp: Split subdev and video-node registration into 2 steps
Split subdev and video-node registration into 2 steps, this is a preparation step for moving video-node registration to the end of probe() so that the loading() mutex can be removed. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
0d945e4d0a
commit
3b423e1bed
@ -1281,8 +1281,14 @@ void atomisp_subdev_unregister_entities(struct atomisp_sub_device *asd)
|
||||
atomisp_video_unregister(&asd->video_out_video_capture);
|
||||
}
|
||||
|
||||
int atomisp_subdev_register_entities(struct atomisp_sub_device *asd,
|
||||
struct v4l2_device *vdev)
|
||||
int atomisp_subdev_register_subdev(struct atomisp_sub_device *asd,
|
||||
struct v4l2_device *vdev)
|
||||
{
|
||||
return v4l2_device_register_subdev(vdev, &asd->subdev);
|
||||
}
|
||||
|
||||
int atomisp_subdev_register_video_nodes(struct atomisp_sub_device *asd,
|
||||
struct v4l2_device *vdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -1291,12 +1297,6 @@ int atomisp_subdev_register_entities(struct atomisp_sub_device *asd,
|
||||
* Should any of those use V4L2_CAP_META_CAPTURE? Probably yes.
|
||||
*/
|
||||
|
||||
/* Register the subdev and video node. */
|
||||
|
||||
ret = v4l2_device_register_subdev(vdev, &asd->subdev);
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
|
||||
asd->video_out_preview.vdev.v4l2_dev = vdev;
|
||||
asd->video_out_preview.vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
|
||||
ret = video_register_device(&asd->video_out_preview.vdev,
|
||||
|
@ -417,8 +417,10 @@ int atomisp_update_run_mode(struct atomisp_sub_device *asd);
|
||||
void atomisp_subdev_cleanup_pending_events(struct atomisp_sub_device *asd);
|
||||
|
||||
void atomisp_subdev_unregister_entities(struct atomisp_sub_device *asd);
|
||||
int atomisp_subdev_register_entities(struct atomisp_sub_device *asd,
|
||||
struct v4l2_device *vdev);
|
||||
int atomisp_subdev_register_subdev(struct atomisp_sub_device *asd,
|
||||
struct v4l2_device *vdev);
|
||||
int atomisp_subdev_register_video_nodes(struct atomisp_sub_device *asd,
|
||||
struct v4l2_device *vdev);
|
||||
int atomisp_subdev_init(struct atomisp_device *isp);
|
||||
void atomisp_subdev_cleanup(struct atomisp_device *isp);
|
||||
int atomisp_create_pads_links(struct atomisp_device *isp);
|
||||
|
@ -1193,7 +1193,9 @@ static int atomisp_register_entities(struct atomisp_device *isp)
|
||||
for (i = 0; i < isp->num_of_streams; i++) {
|
||||
struct atomisp_sub_device *asd = &isp->asd[i];
|
||||
|
||||
ret = atomisp_subdev_register_entities(asd, &isp->v4l2_dev);
|
||||
ret = atomisp_subdev_register_subdev(asd, &isp->v4l2_dev);
|
||||
if (ret == 0)
|
||||
ret = atomisp_subdev_register_video_nodes(asd, &isp->v4l2_dev);
|
||||
if (ret < 0) {
|
||||
dev_err(isp->dev,
|
||||
"atomisp_subdev_register_entities fail\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user