Ejemplo n.º 1
0
int atomisp_subdev_register_entities(struct atomisp_sub_device *isp_subdev,
                                     struct v4l2_device *vdev)
{
    int ret;

    /* Register the subdev and video node. */
    ret = v4l2_device_register_subdev(vdev, &isp_subdev->subdev);
    if (ret < 0)
        goto error;

    ret = atomisp_video_register(&isp_subdev->video_out_mo, vdev);
    if (ret < 0)
        goto error;

    ret = atomisp_video_register(&isp_subdev->video_out_vf, vdev);
    if (ret < 0)
        goto error;

    ret = atomisp_video_register(&isp_subdev->video_in, vdev);
    if (ret < 0)
        goto error;

    return 0;

error:
    atomisp_subdev_unregister_entities(isp_subdev);
    return ret;
}
int atomisp_subdev_register_entities(struct atomisp_sub_device *asd,
	struct v4l2_device *vdev)
{
	int ret;

	/* Register the subdev and video node. */
	ret = v4l2_device_register_subdev(vdev, &asd->subdev);
	if (ret < 0)
		goto error;

	ret = atomisp_video_register(&asd->video_out_capture, vdev);
	if (ret < 0)
		goto error;

	ret = atomisp_video_register(&asd->video_out_vf, vdev);
	if (ret < 0)
		goto error;

	ret = atomisp_video_register(&asd->video_out_preview, vdev);
	if (ret < 0)
		goto error;

	/*
	 * file input only supported on subdev0
	 * so do not create video node for subdevs other then subdev0
	 */
	if (asd->index)
		return 0;
	ret = atomisp_video_register(&asd->video_in, vdev);
	if (ret < 0)
		goto error;

	return 0;

error:
	atomisp_subdev_unregister_entities(asd);
	return ret;
}