linux/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Samsung S5P Multi Format Codec v 5.1
 *
 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
 * Kamil Debski, <[email protected]>
 */

#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/videodev2.h>
#include <media/v4l2-event.h>
#include <linux/workqueue.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_reserved_mem.h>
#include <media/videobuf2-v4l2.h>
#include "s5p_mfc_common.h"
#include "s5p_mfc_ctrl.h"
#include "s5p_mfc_debug.h"
#include "s5p_mfc_dec.h"
#include "s5p_mfc_enc.h"
#include "s5p_mfc_intr.h"
#include "s5p_mfc_iommu.h"
#include "s5p_mfc_opr.h"
#include "s5p_mfc_cmd.h"
#include "s5p_mfc_pm.h"

#define S5P_MFC_DEC_NAME
#define S5P_MFC_ENC_NAME

int mfc_debug_level;
module_param_named(debug, mfc_debug_level, int, 0644);
MODULE_PARM_DESC();

static char *mfc_mem_size;
module_param_named(mem, mfc_mem_size, charp, 0644);
MODULE_PARM_DESC();

/* Helper functions for interrupt processing */

/* Remove from hw execution round robin */
void clear_work_bit(struct s5p_mfc_ctx *ctx)
{}

/* Add to hw execution round robin */
void set_work_bit(struct s5p_mfc_ctx *ctx)
{}

/* Remove from hw execution round robin */
void clear_work_bit_irqsave(struct s5p_mfc_ctx *ctx)
{}

/* Add to hw execution round robin */
void set_work_bit_irqsave(struct s5p_mfc_ctx *ctx)
{}

int s5p_mfc_get_new_ctx(struct s5p_mfc_dev *dev)
{}

/* Wake up context wait_queue */
static void wake_up_ctx(struct s5p_mfc_ctx *ctx, unsigned int reason,
			unsigned int err)
{}

/* Wake up device wait_queue */
static void wake_up_dev(struct s5p_mfc_dev *dev, unsigned int reason,
			unsigned int err)
{}

void s5p_mfc_cleanup_queue(struct list_head *lh, struct vb2_queue *vq)
{}

static void s5p_mfc_watchdog(struct timer_list *t)
{}

static void s5p_mfc_watchdog_worker(struct work_struct *work)
{}

static void s5p_mfc_handle_frame_all_extracted(struct s5p_mfc_ctx *ctx)
{}

static void s5p_mfc_handle_frame_copy_time(struct s5p_mfc_ctx *ctx)
{}

static void s5p_mfc_handle_frame_new(struct s5p_mfc_ctx *ctx, unsigned int err)
{}

/* Handle frame decoding interrupt */
static void s5p_mfc_handle_frame(struct s5p_mfc_ctx *ctx,
					unsigned int reason, unsigned int err)
{}

/* Error handling for interrupt */
static void s5p_mfc_handle_error(struct s5p_mfc_dev *dev,
		struct s5p_mfc_ctx *ctx, unsigned int reason, unsigned int err)
{}

/* Header parsing interrupt handling */
static void s5p_mfc_handle_seq_done(struct s5p_mfc_ctx *ctx,
				 unsigned int reason, unsigned int err)
{}

/* Header parsing interrupt handling */
static void s5p_mfc_handle_init_buffers(struct s5p_mfc_ctx *ctx,
				 unsigned int reason, unsigned int err)
{}

static void s5p_mfc_handle_stream_complete(struct s5p_mfc_ctx *ctx)
{}

/* Interrupt processing */
static irqreturn_t s5p_mfc_irq(int irq, void *priv)
{}

/* Open an MFC node */
static int s5p_mfc_open(struct file *file)
{}

/* Release MFC context */
static int s5p_mfc_release(struct file *file)
{}

/* Poll */
static __poll_t s5p_mfc_poll(struct file *file,
				 struct poll_table_struct *wait)
{}

/* Mmap */
static int s5p_mfc_mmap(struct file *file, struct vm_area_struct *vma)
{}

/* v4l2 ops */
static const struct v4l2_file_operations s5p_mfc_fops =;

/* DMA memory related helper functions */
static void s5p_mfc_memdev_release(struct device *dev)
{}

static struct device *s5p_mfc_alloc_memdev(struct device *dev,
					   const char *name, unsigned int idx)
{}

static int s5p_mfc_configure_2port_memory(struct s5p_mfc_dev *mfc_dev)
{}

static void s5p_mfc_unconfigure_2port_memory(struct s5p_mfc_dev *mfc_dev)
{}

static int s5p_mfc_configure_common_memory(struct s5p_mfc_dev *mfc_dev)
{}

static void s5p_mfc_unconfigure_common_memory(struct s5p_mfc_dev *mfc_dev)
{}

static int s5p_mfc_configure_dma_memory(struct s5p_mfc_dev *mfc_dev)
{}

static void s5p_mfc_unconfigure_dma_memory(struct s5p_mfc_dev *mfc_dev)
{}

/* MFC probe function */
static int s5p_mfc_probe(struct platform_device *pdev)
{}

/* Remove the driver */
static void s5p_mfc_remove(struct platform_device *pdev)
{}

#ifdef CONFIG_PM_SLEEP

static int s5p_mfc_suspend(struct device *dev)
{}

static int s5p_mfc_resume(struct device *dev)
{}
#endif

/* Power management */
static const struct dev_pm_ops s5p_mfc_pm_ops =;

static const struct s5p_mfc_buf_size_v5 mfc_buf_size_v5 =;

static const struct s5p_mfc_buf_size buf_size_v5 =;

static const struct s5p_mfc_variant mfc_drvdata_v5 =;

static const struct s5p_mfc_buf_size_v6 mfc_buf_size_v6 =;

static const struct s5p_mfc_buf_size buf_size_v6 =;

static const struct s5p_mfc_variant mfc_drvdata_v6 =;

static const struct s5p_mfc_buf_size_v6 mfc_buf_size_v7 =;

static const struct s5p_mfc_buf_size buf_size_v7 =;

static const struct s5p_mfc_variant mfc_drvdata_v7 =;

static const struct s5p_mfc_variant mfc_drvdata_v7_3250 =;

static const struct s5p_mfc_buf_size_v6 mfc_buf_size_v8 =;

static const struct s5p_mfc_buf_size buf_size_v8 =;

static const struct s5p_mfc_variant mfc_drvdata_v8 =;

static const struct s5p_mfc_variant mfc_drvdata_v8_5433 =;

static const struct s5p_mfc_buf_size_v6 mfc_buf_size_v10 =;

static const struct s5p_mfc_buf_size buf_size_v10 =;

static const struct s5p_mfc_variant mfc_drvdata_v10 =;

static struct s5p_mfc_buf_size_v6 mfc_buf_size_v12 =;

static struct s5p_mfc_buf_size buf_size_v12 =;

static struct s5p_mfc_variant mfc_drvdata_v12 =;

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

static struct platform_driver s5p_mfc_driver =;

module_platform_driver();

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