#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(…) …;
void clear_work_bit(struct s5p_mfc_ctx *ctx)
{ … }
void set_work_bit(struct s5p_mfc_ctx *ctx)
{ … }
void clear_work_bit_irqsave(struct s5p_mfc_ctx *ctx)
{ … }
void set_work_bit_irqsave(struct s5p_mfc_ctx *ctx)
{ … }
int s5p_mfc_get_new_ctx(struct s5p_mfc_dev *dev)
{ … }
static void wake_up_ctx(struct s5p_mfc_ctx *ctx, unsigned int reason,
unsigned int err)
{ … }
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)
{ … }
static void s5p_mfc_handle_frame(struct s5p_mfc_ctx *ctx,
unsigned int reason, unsigned int err)
{ … }
static void s5p_mfc_handle_error(struct s5p_mfc_dev *dev,
struct s5p_mfc_ctx *ctx, unsigned int reason, unsigned int err)
{ … }
static void s5p_mfc_handle_seq_done(struct s5p_mfc_ctx *ctx,
unsigned int reason, unsigned int err)
{ … }
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)
{ … }
static irqreturn_t s5p_mfc_irq(int irq, void *priv)
{ … }
static int s5p_mfc_open(struct file *file)
{ … }
static int s5p_mfc_release(struct file *file)
{ … }
static __poll_t s5p_mfc_poll(struct file *file,
struct poll_table_struct *wait)
{ … }
static int s5p_mfc_mmap(struct file *file, struct vm_area_struct *vma)
{ … }
static const struct v4l2_file_operations s5p_mfc_fops = …;
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)
{ … }
static int s5p_mfc_probe(struct platform_device *pdev)
{ … }
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
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(…) …;