/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright 2021-2022 Bootlin * Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com> */ #ifndef _SUN6I_ISP_PARAMS_H_ #define _SUN6I_ISP_PARAMS_H_ #include <media/v4l2-device.h> #define SUN6I_ISP_PARAMS_NAME "sun6i-isp-params" struct sun6i_isp_device; struct sun6i_isp_params_state { struct list_head queue; /* Queue and buffers lock. */ spinlock_t lock; struct sun6i_isp_buffer *pending; bool configured; bool streaming; }; struct sun6i_isp_params { struct sun6i_isp_params_state state; struct video_device video_dev; struct vb2_queue queue; struct mutex lock; /* Queue lock. */ struct media_pad pad; struct v4l2_format format; }; /* Params */ void sun6i_isp_params_configure(struct sun6i_isp_device *isp_dev); /* State */ void sun6i_isp_params_state_update(struct sun6i_isp_device *isp_dev, bool *update); void sun6i_isp_params_state_complete(struct sun6i_isp_device *isp_dev); /* Params */ int sun6i_isp_params_setup(struct sun6i_isp_device *isp_dev); void sun6i_isp_params_cleanup(struct sun6i_isp_device *isp_dev); #endif