linux/drivers/gpu/drm/exynos/exynos_drm_rotator.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2012 Samsung Electronics Co.Ltd
 * Authors:
 *	YoungJun Cho <[email protected]>
 *	Eunchul Kim <[email protected]>
 */

#include <linux/clk.h>
#include <linux/component.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/sizes.h>

#include <drm/drm_fourcc.h>
#include <drm/exynos_drm.h>

#include "exynos_drm_drv.h"
#include "exynos_drm_ipp.h"
#include "regs-rotator.h"

/*
 * Rotator supports image crop/rotator and input/output DMA operations.
 * input DMA reads image data from the memory.
 * output DMA writes image data to memory.
 */

#define ROTATOR_AUTOSUSPEND_DELAY

#define rot_read(offset)
#define rot_write(cfg, offset)

enum rot_irq_status {};

struct rot_variant {};

/*
 * A structure of rotator context.
 * @ippdrv: prepare initialization using ippdrv.
 * @regs: memory mapped io registers.
 * @clock: rotator gate clock.
 * @limit_tbl: limitation of rotator.
 * @irq: irq number.
 */
struct rot_context {};

static void rotator_reg_set_irq(struct rot_context *rot, bool enable)
{}

static enum rot_irq_status rotator_reg_get_irq_status(struct rot_context *rot)
{}

static irqreturn_t rotator_irq_handler(int irq, void *arg)
{}

static void rotator_src_set_fmt(struct rot_context *rot, u32 fmt)
{}

static void rotator_src_set_buf(struct rot_context *rot,
				struct exynos_drm_ipp_buffer *buf)
{}

static void rotator_dst_set_transf(struct rot_context *rot,
				   unsigned int rotation)
{}

static void rotator_dst_set_buf(struct rot_context *rot,
				struct exynos_drm_ipp_buffer *buf)
{}

static void rotator_start(struct rot_context *rot)
{}

static int rotator_commit(struct exynos_drm_ipp *ipp,
			  struct exynos_drm_ipp_task *task)
{}

static const struct exynos_drm_ipp_funcs ipp_funcs =;

static int rotator_bind(struct device *dev, struct device *master, void *data)
{}

static void rotator_unbind(struct device *dev, struct device *master,
			void *data)
{}

static const struct component_ops rotator_component_ops =;

static int rotator_probe(struct platform_device *pdev)
{}

static void rotator_remove(struct platform_device *pdev)
{}

static int rotator_runtime_suspend(struct device *dev)
{}

static int rotator_runtime_resume(struct device *dev)
{}

static const struct drm_exynos_ipp_limit rotator_s5pv210_rbg888_limits[] =;

static const struct drm_exynos_ipp_limit rotator_4210_rbg888_limits[] =;

static const struct drm_exynos_ipp_limit rotator_4412_rbg888_limits[] =;

static const struct drm_exynos_ipp_limit rotator_5250_rbg888_limits[] =;

static const struct drm_exynos_ipp_limit rotator_s5pv210_yuv_limits[] =;

static const struct drm_exynos_ipp_limit rotator_4210_yuv_limits[] =;

static const struct drm_exynos_ipp_limit rotator_4412_yuv_limits[] =;

static const struct exynos_drm_ipp_formats rotator_s5pv210_formats[] =;

static const struct exynos_drm_ipp_formats rotator_4210_formats[] =;

static const struct exynos_drm_ipp_formats rotator_4412_formats[] =;

static const struct exynos_drm_ipp_formats rotator_5250_formats[] =;

static const struct rot_variant rotator_s5pv210_data =;

static const struct rot_variant rotator_4210_data =;

static const struct rot_variant rotator_4412_data =;

static const struct rot_variant rotator_5250_data =;

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

static DEFINE_RUNTIME_DEV_PM_OPS(rotator_pm_ops, rotator_runtime_suspend,
				 rotator_runtime_resume, NULL);

struct platform_driver rotator_driver =;