#include <linux/align.h>
#include <linux/bits.h>
#include <linux/bug.h>
#include <linux/completion.h>
#include <linux/container_of.h>
#include <linux/device.h>
#include <linux/list.h>
#include <linux/math64.h>
#include <linux/minmax.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/pm_runtime.h>
#include <linux/spinlock.h>
#include <linux/string.h>
#include <media/media-entity.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-fh.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-subdev.h>
#include <media/videobuf2-v4l2.h>
#include "ipu6.h"
#include "ipu6-bus.h"
#include "ipu6-cpd.h"
#include "ipu6-fw-isys.h"
#include "ipu6-isys.h"
#include "ipu6-isys-csi2.h"
#include "ipu6-isys-queue.h"
#include "ipu6-isys-video.h"
#include "ipu6-platform-regs.h"
const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = …;
static int video_open(struct file *file)
{ … }
const struct ipu6_isys_pixelformat *
ipu6_isys_get_isys_format(u32 pixelformat, u32 type)
{ … }
static int ipu6_isys_vidioc_querycap(struct file *file, void *fh,
struct v4l2_capability *cap)
{ … }
static int ipu6_isys_vidioc_enum_fmt(struct file *file, void *fh,
struct v4l2_fmtdesc *f)
{ … }
static int ipu6_isys_vidioc_enum_framesizes(struct file *file, void *fh,
struct v4l2_frmsizeenum *fsize)
{ … }
static int ipu6_isys_vidioc_g_fmt_vid_cap(struct file *file, void *fh,
struct v4l2_format *f)
{ … }
static int ipu6_isys_vidioc_g_fmt_meta_cap(struct file *file, void *fh,
struct v4l2_format *f)
{ … }
static void ipu6_isys_try_fmt_cap(struct ipu6_isys_video *av, u32 type,
u32 *format, u32 *width, u32 *height,
u32 *bytesperline, u32 *sizeimage)
{ … }
static void __ipu6_isys_vidioc_try_fmt_vid_cap(struct ipu6_isys_video *av,
struct v4l2_format *f)
{ … }
static int ipu6_isys_vidioc_try_fmt_vid_cap(struct file *file, void *fh,
struct v4l2_format *f)
{ … }
static int __ipu6_isys_vidioc_try_fmt_meta_cap(struct ipu6_isys_video *av,
struct v4l2_format *f)
{ … }
static int ipu6_isys_vidioc_try_fmt_meta_cap(struct file *file, void *fh,
struct v4l2_format *f)
{ … }
static int ipu6_isys_vidioc_s_fmt_vid_cap(struct file *file, void *fh,
struct v4l2_format *f)
{ … }
static int ipu6_isys_vidioc_s_fmt_meta_cap(struct file *file, void *fh,
struct v4l2_format *f)
{ … }
static int ipu6_isys_vidioc_reqbufs(struct file *file, void *priv,
struct v4l2_requestbuffers *p)
{ … }
static int ipu6_isys_vidioc_create_bufs(struct file *file, void *priv,
struct v4l2_create_buffers *p)
{ … }
static int link_validate(struct media_link *link)
{ … }
static void get_stream_opened(struct ipu6_isys_video *av)
{ … }
static void put_stream_opened(struct ipu6_isys_video *av)
{ … }
static int ipu6_isys_fw_pin_cfg(struct ipu6_isys_video *av,
struct ipu6_fw_isys_stream_cfg_data_abi *cfg)
{ … }
static int start_stream_firmware(struct ipu6_isys_video *av,
struct ipu6_isys_buffer_list *bl)
{ … }
static void stop_streaming_firmware(struct ipu6_isys_video *av)
{ … }
static void close_streaming_firmware(struct ipu6_isys_video *av)
{ … }
int ipu6_isys_video_prepare_stream(struct ipu6_isys_video *av,
struct media_entity *source_entity,
int nr_queues)
{ … }
void ipu6_isys_configure_stream_watermark(struct ipu6_isys_video *av,
bool state)
{ … }
static void calculate_stream_datarate(struct ipu6_isys_video *av)
{ … }
void ipu6_isys_update_stream_watermark(struct ipu6_isys_video *av, bool state)
{ … }
void ipu6_isys_put_stream(struct ipu6_isys_stream *stream)
{ … }
static struct ipu6_isys_stream *
ipu6_isys_get_stream(struct ipu6_isys_video *av, struct ipu6_isys_subdev *asd)
{ … }
struct ipu6_isys_stream *
ipu6_isys_query_stream_by_handle(struct ipu6_isys *isys, u8 stream_handle)
{ … }
struct ipu6_isys_stream *
ipu6_isys_query_stream_by_source(struct ipu6_isys *isys, int source, u8 vc)
{ … }
static u64 get_stream_mask_by_pipeline(struct ipu6_isys_video *__av)
{ … }
int ipu6_isys_video_set_streaming(struct ipu6_isys_video *av, int state,
struct ipu6_isys_buffer_list *bl)
{ … }
static const struct v4l2_ioctl_ops ipu6_v4l2_ioctl_ops = …;
static const struct media_entity_operations entity_ops = …;
static const struct v4l2_file_operations isys_fops = …;
int ipu6_isys_fw_open(struct ipu6_isys *isys)
{ … }
void ipu6_isys_fw_close(struct ipu6_isys *isys)
{ … }
int ipu6_isys_setup_video(struct ipu6_isys_video *av,
struct media_entity **source_entity, int *nr_queues)
{ … }
int ipu6_isys_video_init(struct ipu6_isys_video *av)
{ … }
void ipu6_isys_video_cleanup(struct ipu6_isys_video *av)
{ … }
u32 ipu6_isys_get_format(struct ipu6_isys_video *av)
{ … }
u32 ipu6_isys_get_data_size(struct ipu6_isys_video *av)
{ … }
u32 ipu6_isys_get_bytes_per_line(struct ipu6_isys_video *av)
{ … }
u32 ipu6_isys_get_frame_width(struct ipu6_isys_video *av)
{ … }
u32 ipu6_isys_get_frame_height(struct ipu6_isys_video *av)
{ … }