Commit 6adceb70 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

media: rkisp1: stats: Simplify (un)registration

Simplify error handling at registration time as media_entity_cleanup()
can be called on an uninitialized entity, and make
rkisp1_stats_unregister() safe to be called on an unregistered stats
node to prepare for simplification of error handling at probe time.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarRicardo Ribalda <ribalda@chromium.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 8ba4862e
...@@ -463,21 +463,21 @@ int rkisp1_stats_register(struct rkisp1_device *rkisp1) ...@@ -463,21 +463,21 @@ int rkisp1_stats_register(struct rkisp1_device *rkisp1)
node->pad.flags = MEDIA_PAD_FL_SINK; node->pad.flags = MEDIA_PAD_FL_SINK;
ret = media_entity_pads_init(&vdev->entity, 1, &node->pad); ret = media_entity_pads_init(&vdev->entity, 1, &node->pad);
if (ret) if (ret)
goto err_mutex_destroy; goto error;
ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1); ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
if (ret) { if (ret) {
dev_err(&vdev->dev, dev_err(&vdev->dev,
"failed to register %s, ret=%d\n", vdev->name, ret); "failed to register %s, ret=%d\n", vdev->name, ret);
goto err_cleanup_media_entity; goto error;
} }
return 0; return 0;
err_cleanup_media_entity: error:
media_entity_cleanup(&vdev->entity); media_entity_cleanup(&vdev->entity);
err_mutex_destroy:
mutex_destroy(&node->vlock); mutex_destroy(&node->vlock);
stats->rkisp1 = NULL;
return ret; return ret;
} }
...@@ -487,6 +487,9 @@ void rkisp1_stats_unregister(struct rkisp1_device *rkisp1) ...@@ -487,6 +487,9 @@ void rkisp1_stats_unregister(struct rkisp1_device *rkisp1)
struct rkisp1_vdev_node *node = &stats->vnode; struct rkisp1_vdev_node *node = &stats->vnode;
struct video_device *vdev = &node->vdev; struct video_device *vdev = &node->vdev;
if (!stats->rkisp1)
return;
vb2_video_unregister_device(vdev); vb2_video_unregister_device(vdev);
media_entity_cleanup(&vdev->entity); media_entity_cleanup(&vdev->entity);
mutex_destroy(&node->vlock); mutex_destroy(&node->vlock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment