linux/drivers/media/platform/sunxi/sun8i-di/sun8i-di.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Allwinner sun8i deinterlacer with scaler driver
 *
 * Copyright (C) 2019 Jernej Skrabec <[email protected]>
 *
 * Based on vim2m driver.
 */

#include <linux/clk.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>

#include <media/v4l2-device.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-mem2mem.h>

#include "sun8i-di.h"

#define FLAG_SIZE

static u32 deinterlace_formats[] =;

static inline u32 deinterlace_read(struct deinterlace_dev *dev, u32 reg)
{}

static inline void deinterlace_write(struct deinterlace_dev *dev,
				     u32 reg, u32 value)
{}

static inline void deinterlace_set_bits(struct deinterlace_dev *dev,
					u32 reg, u32 bits)
{}

static inline void deinterlace_clr_set_bits(struct deinterlace_dev *dev,
					    u32 reg, u32 clr, u32 set)
{}

static void deinterlace_device_run(void *priv)
{}

static int deinterlace_job_ready(void *priv)
{}

static void deinterlace_job_abort(void *priv)
{}

static irqreturn_t deinterlace_irq(int irq, void *data)
{}

static void deinterlace_init(struct deinterlace_dev *dev)
{}

static inline struct deinterlace_ctx *deinterlace_file2ctx(struct file *file)
{}

static bool deinterlace_check_format(u32 pixelformat)
{}

static void deinterlace_prepare_format(struct v4l2_pix_format *pix_fmt)
{}

static int deinterlace_querycap(struct file *file, void *priv,
				struct v4l2_capability *cap)
{}

static int deinterlace_enum_fmt(struct file *file, void *priv,
				struct v4l2_fmtdesc *f)
{}

static int deinterlace_enum_framesizes(struct file *file, void *priv,
				       struct v4l2_frmsizeenum *fsize)
{}

static int deinterlace_g_fmt_vid_cap(struct file *file, void *priv,
				     struct v4l2_format *f)
{}

static int deinterlace_g_fmt_vid_out(struct file *file, void *priv,
				     struct v4l2_format *f)
{}

static int deinterlace_try_fmt_vid_cap(struct file *file, void *priv,
				       struct v4l2_format *f)
{}

static int deinterlace_try_fmt_vid_out(struct file *file, void *priv,
				       struct v4l2_format *f)
{}

static int deinterlace_s_fmt_vid_cap(struct file *file, void *priv,
				     struct v4l2_format *f)
{}

static int deinterlace_s_fmt_vid_out(struct file *file, void *priv,
				     struct v4l2_format *f)
{}

static const struct v4l2_ioctl_ops deinterlace_ioctl_ops =;

static int deinterlace_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers,
				   unsigned int *nplanes, unsigned int sizes[],
				   struct device *alloc_devs[])
{}

static int deinterlace_buf_prepare(struct vb2_buffer *vb)
{}

static void deinterlace_buf_queue(struct vb2_buffer *vb)
{}

static void deinterlace_queue_cleanup(struct vb2_queue *vq, u32 state)
{}

static int deinterlace_start_streaming(struct vb2_queue *vq, unsigned int count)
{}

static void deinterlace_stop_streaming(struct vb2_queue *vq)
{}

static const struct vb2_ops deinterlace_qops =;

static int deinterlace_queue_init(void *priv, struct vb2_queue *src_vq,
				  struct vb2_queue *dst_vq)
{}

static int deinterlace_open(struct file *file)
{}

static int deinterlace_release(struct file *file)
{}

static const struct v4l2_file_operations deinterlace_fops =;

static const struct video_device deinterlace_video_device =;

static const struct v4l2_m2m_ops deinterlace_m2m_ops =;

static int deinterlace_probe(struct platform_device *pdev)
{}

static void deinterlace_remove(struct platform_device *pdev)
{}

static int deinterlace_runtime_resume(struct device *device)
{}

static int deinterlace_runtime_suspend(struct device *device)
{}

static const struct of_device_id deinterlace_dt_match[] =;
MODULE_DEVICE_TABLE(of, deinterlace_dt_match);

static const struct dev_pm_ops deinterlace_pm_ops =;

static struct platform_driver deinterlace_driver =;
module_platform_driver();

MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_DESCRIPTION();