brintos

brintos / linux-shallow public Read only

0
0
Text · 2.1 KiB · 3ee5cce Raw
90 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright (c) 2011-2018 Magewell Electronics Co., Ltd. (Nanjing)4 * Author: Yong Deng <yong.deng@magewell.com>5 * Copyright 2021-2022 Bootlin6 * Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>7 */8 9#ifndef _SUN6I_CAPTURE_H_10#define _SUN6I_CAPTURE_H_11 12#include <media/v4l2-device.h>13 14#define SUN6I_CSI_CAPTURE_NAME	"sun6i-csi-capture"15 16#define SUN6I_CSI_CAPTURE_WIDTH_MIN	3217#define SUN6I_CSI_CAPTURE_WIDTH_MAX	480018#define SUN6I_CSI_CAPTURE_HEIGHT_MIN	3219#define SUN6I_CSI_CAPTURE_HEIGHT_MAX	480020 21struct sun6i_csi_device;22 23struct sun6i_csi_capture_format {24	u32	pixelformat;25	u8	output_format_field;26	u8	output_format_frame;27	bool	input_yuv_seq_invert;28	bool	input_format_raw;29	u32	hsize_len_factor;30};31 32struct sun6i_csi_capture_format_match {33	u32	pixelformat;34	u32	mbus_code;35};36 37#undef current38struct sun6i_csi_capture_state {39	struct list_head		queue;40	spinlock_t			lock; /* Queue and buffers lock. */41 42	struct sun6i_csi_buffer		*pending;43	struct sun6i_csi_buffer		*current;44	struct sun6i_csi_buffer		*complete;45 46	unsigned int			sequence;47	bool				streaming;48	bool				setup;49};50 51struct sun6i_csi_capture {52	struct sun6i_csi_capture_state	state;53 54	struct video_device		video_dev;55	struct vb2_queue		queue;56	struct mutex			lock; /* Queue lock. */57	struct media_pad		pad;58 59	struct v4l2_format		format;60};61 62/* Helpers */63 64void sun6i_csi_capture_dimensions(struct sun6i_csi_device *csi_dev,65				  unsigned int *width, unsigned int *height);66void sun6i_csi_capture_format(struct sun6i_csi_device *csi_dev,67			      u32 *pixelformat, u32 *field);68 69/* Format */70 71const72struct sun6i_csi_capture_format *sun6i_csi_capture_format_find(u32 pixelformat);73 74/* Capture */75 76void sun6i_csi_capture_configure(struct sun6i_csi_device *csi_dev);77void sun6i_csi_capture_state_update(struct sun6i_csi_device *csi_dev);78 79/* State */80 81void sun6i_csi_capture_sync(struct sun6i_csi_device *csi_dev);82void sun6i_csi_capture_frame_done(struct sun6i_csi_device *csi_dev);83 84/* Capture */85 86int sun6i_csi_capture_setup(struct sun6i_csi_device *csi_dev);87void sun6i_csi_capture_cleanup(struct sun6i_csi_device *csi_dev);88 89#endif90