#include <linux/spinlock.h>
#include <linux/types.h>
-#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-event.h>
#include <media/v4l2-fwnode.h>
struct vb2_queue q; /* The videobuf2 queue */
struct list_head ready_q; /* List of queued buffers */
spinlock_t q_lock; /* Protect ready_q */
-
- struct v4l2_ctrl_handler ctrl_hdlr; /* Controls inherited from subdevs */
};
#define to_capture_priv(v) container_of(v, struct capture_priv, vdev)
return &priv->vdev;
}
-static void imx7_media_capture_device_remove(struct imx_media_video_dev *vdev)
-{
- struct capture_priv *priv = to_capture_priv(vdev);
-
- v4l2_ctrl_handler_free(&priv->ctrl_hdlr);
-}
-
/* -----------------------------------------------------------------------------
* V4L2 Subdev Operations
*/
ret = imx7_media_capture_device_register(csi->vdev,
MEDIA_LNK_FL_IMMUTABLE);
if (ret)
- goto err_remove;
+ return ret;
ret = v4l2_device_register_subdev_nodes(&csi->imxmd->v4l2_dev);
if (ret)
err_unreg:
imx7_media_capture_device_unregister(csi->vdev);
-err_remove:
- imx7_media_capture_device_remove(csi->vdev);
return ret;
}
struct imx7_csi *csi = v4l2_get_subdevdata(sd);
imx7_media_capture_device_unregister(csi->vdev);
- imx7_media_capture_device_remove(csi->vdev);
}
static const struct v4l2_subdev_video_ops imx7_csi_video_ops = {