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

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2017 Samsung Electronics Co.Ltd
 * Author:
 *	Andrzej Pietrasiewicz <[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 <drm/drm_blend.h>
#include <drm/drm_fourcc.h>
#include <drm/exynos_drm.h>

#include "exynos_drm_drv.h"
#include "exynos_drm_fb.h"
#include "exynos_drm_ipp.h"
#include "regs-scaler.h"

#define scaler_read(offset)
#define scaler_write(cfg, offset)
#define SCALER_MAX_CLK
#define SCALER_AUTOSUSPEND_DELAY
#define SCALER_RESET_WAIT_RETRIES

struct scaler_data {};

struct scaler_context {};

struct scaler_format {};

static const struct scaler_format scaler_formats[] =;

static const struct scaler_format *scaler_get_format(u32 drm_fmt)
{}

static inline int scaler_reset(struct scaler_context *scaler)
{}

static inline void scaler_enable_int(struct scaler_context *scaler)
{}

static inline void scaler_set_src_fmt(struct scaler_context *scaler,
	u32 src_fmt, u32 tile)
{}

static inline void scaler_set_src_base(struct scaler_context *scaler,
	struct exynos_drm_ipp_buffer *src_buf)
{}

static inline void scaler_set_src_span(struct scaler_context *scaler,
	struct exynos_drm_ipp_buffer *src_buf)
{}

static inline void scaler_set_src_luma_chroma_pos(struct scaler_context *scaler,
			struct drm_exynos_ipp_task_rect *src_pos,
			const struct scaler_format *fmt)
{}

static inline void scaler_set_src_wh(struct scaler_context *scaler,
	struct drm_exynos_ipp_task_rect *src_pos)
{}

static inline void scaler_set_dst_fmt(struct scaler_context *scaler,
	u32 dst_fmt)
{}

static inline void scaler_set_dst_base(struct scaler_context *scaler,
	struct exynos_drm_ipp_buffer *dst_buf)
{}

static inline void scaler_set_dst_span(struct scaler_context *scaler,
	struct exynos_drm_ipp_buffer *dst_buf)
{}

static inline void scaler_set_dst_luma_pos(struct scaler_context *scaler,
	struct drm_exynos_ipp_task_rect *dst_pos)
{}

static inline void scaler_set_dst_wh(struct scaler_context *scaler,
	struct drm_exynos_ipp_task_rect *dst_pos)
{}

static inline void scaler_set_hv_ratio(struct scaler_context *scaler,
	unsigned int rotation,
	struct drm_exynos_ipp_task_rect *src_pos,
	struct drm_exynos_ipp_task_rect *dst_pos)
{}

static inline void scaler_set_rotation(struct scaler_context *scaler,
	unsigned int rotation)
{}

static inline void scaler_set_csc(struct scaler_context *scaler,
	const struct drm_format_info *fmt)
{}

static inline void scaler_set_timer(struct scaler_context *scaler,
	unsigned int timer, unsigned int divider)
{}

static inline void scaler_start_hw(struct scaler_context *scaler)
{}

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

static struct exynos_drm_ipp_funcs ipp_funcs =;

static inline void scaler_disable_int(struct scaler_context *scaler)
{}

static inline u32 scaler_get_int_status(struct scaler_context *scaler)
{}

static inline int scaler_task_done(u32 val)
{}

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

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

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

static const struct component_ops scaler_component_ops =;

static int scaler_probe(struct platform_device *pdev)
{}

static void scaler_remove(struct platform_device *pdev)
{}

static int clk_disable_unprepare_wrapper(struct clk *clk)
{}

static int scaler_clk_ctrl(struct scaler_context *scaler, bool enable)
{}

static int scaler_runtime_suspend(struct device *dev)
{}

static int scaler_runtime_resume(struct device *dev)
{}

static DEFINE_RUNTIME_DEV_PM_OPS(scaler_pm_ops, scaler_runtime_suspend,
				 scaler_runtime_resume, NULL);

static const struct drm_exynos_ipp_limit scaler_5420_two_pixel_hv_limits[] =;

static const struct drm_exynos_ipp_limit scaler_5420_two_pixel_h_limits[] =;

static const struct drm_exynos_ipp_limit scaler_5420_one_pixel_limits[] =;

static const struct drm_exynos_ipp_limit scaler_5420_tile_limits[] =;

#define IPP_SRCDST_TILE_FORMAT(f, l)

static const struct exynos_drm_ipp_formats exynos5420_formats[] =;

static const struct scaler_data exynos5420_data =;

static const struct scaler_data exynos5433_data =;

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

struct platform_driver scaler_driver =;