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

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
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -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)
	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);