File Index
Files and directories
Sign in
FILE

stf-video.h

File preview with syntax highlighting.

linux-6.19.14/drivers/staging/media/starfive/camss/stf-video.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * stf_video.h
  4 *
  5 * StarFive Camera Subsystem - V4L2 device node
  6 *
  7 * Copyright (C) 2021-2023 StarFive Technology Co., Ltd.
  8 */
  9
 10#ifndef STF_VIDEO_H
 11#define STF_VIDEO_H
 12
 13#include <linux/list.h>
 14#include <linux/mutex.h>
 15#include <linux/videodev2.h>
 16#include <media/v4l2-dev.h>
 17#include <media/v4l2-fh.h>
 18#include <media/v4l2-ioctl.h>
 19#include <media/videobuf2-v4l2.h>
 20
 21#define STFCAMSS_FRAME_MIN_WIDTH		64
 22#define STFCAMSS_FRAME_MAX_WIDTH		1920
 23#define STFCAMSS_FRAME_MIN_HEIGHT		64
 24#define STFCAMSS_FRAME_MAX_HEIGHT		1080
 25#define STFCAMSS_FRAME_WIDTH_ALIGN_8		8
 26#define STFCAMSS_FRAME_WIDTH_ALIGN_128		128
 27#define STFCAMSS_MIN_BUFFERS			2
 28
 29#define STFCAMSS_MAX_ENTITY_NAME_LEN		27
 30
 31enum stf_v_line_id {
 32	STF_V_LINE_WR = 0,
 33	STF_V_LINE_ISP,
 34	STF_V_LINE_MAX,
 35};
 36
 37enum stf_capture_type {
 38	STF_CAPTURE_RAW = 0,
 39	STF_CAPTURE_YUV,
 40	STF_CAPTURE_NUM,
 41};
 42
 43struct stfcamss_buffer {
 44	struct vb2_v4l2_buffer vb;
 45	dma_addr_t addr[2];
 46	struct list_head queue;
 47};
 48
 49struct fract {
 50	u8 numerator;
 51	u8 denominator;
 52};
 53
 54/*
 55 * struct stfcamss_format_info - ISP media bus format information
 56 * @code: V4L2 media bus format code
 57 * @pixelformat: V4L2 pixel format FCC identifier
 58 * @planes: Number of planes
 59 * @vsub: Vertical subsampling (for each plane)
 60 * @bpp: Bits per pixel when stored in memory (for each plane)
 61 */
 62struct stfcamss_format_info {
 63	u32 code;
 64	u32 pixelformat;
 65	u8 planes;
 66	u8 vsub[3];
 67	u8 bpp;
 68};
 69
 70struct stfcamss_video {
 71	struct stfcamss *stfcamss;
 72	struct vb2_queue vb2_q;
 73	struct video_device vdev;
 74	struct media_pad pad;
 75	struct v4l2_format active_fmt;
 76	enum v4l2_buf_type type;
 77	const struct stfcamss_video_ops *ops;
 78	struct mutex lock;	 /* serialize device access */
 79	struct mutex q_lock;	 /* protects the queue */
 80	unsigned int bpl_alignment;
 81	const struct stfcamss_format_info *formats;
 82	unsigned int nformats;
 83	struct v4l2_subdev *source_subdev;
 84};
 85
 86struct stfcamss_video_ops {
 87	int (*queue_buffer)(struct stfcamss_video *video,
 88			    struct stfcamss_buffer *buf);
 89	int (*flush_buffers)(struct stfcamss_video *video,
 90			     enum vb2_buffer_state state);
 91	void (*start_streaming)(struct stfcamss_video *video);
 92	void (*stop_streaming)(struct stfcamss_video *video);
 93};
 94
 95int stf_video_register(struct stfcamss_video *video,
 96		       struct v4l2_device *v4l2_dev, const char *name);
 97
 98void stf_video_unregister(struct stfcamss_video *video);
 99
100#endif /* STF_VIDEO_H */
~/ Read-only file preview.