162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/* drivers/gpu/drm/exynos/regs-rotator.h
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright (c) 2012 Samsung Electronics Co., Ltd.
562306a36Sopenharmony_ci *		http://www.samsung.com/
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Register definition file for Samsung Rotator Interface (Rotator) driver
862306a36Sopenharmony_ci*/
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef EXYNOS_REGS_ROTATOR_H
1162306a36Sopenharmony_ci#define EXYNOS_REGS_ROTATOR_H
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/* Configuration */
1462306a36Sopenharmony_ci#define ROT_CONFIG			0x00
1562306a36Sopenharmony_ci#define ROT_CONFIG_IRQ			(3 << 8)
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/* Image Control */
1862306a36Sopenharmony_ci#define ROT_CONTROL			0x10
1962306a36Sopenharmony_ci#define ROT_CONTROL_PATTERN_WRITE	(1 << 16)
2062306a36Sopenharmony_ci#define ROT_CONTROL_FMT_YCBCR420_2P	(1 << 8)
2162306a36Sopenharmony_ci#define ROT_CONTROL_FMT_RGB888		(6 << 8)
2262306a36Sopenharmony_ci#define ROT_CONTROL_FMT_MASK		(7 << 8)
2362306a36Sopenharmony_ci#define ROT_CONTROL_FLIP_VERTICAL	(2 << 6)
2462306a36Sopenharmony_ci#define ROT_CONTROL_FLIP_HORIZONTAL	(3 << 6)
2562306a36Sopenharmony_ci#define ROT_CONTROL_FLIP_MASK		(3 << 6)
2662306a36Sopenharmony_ci#define ROT_CONTROL_ROT_90		(1 << 4)
2762306a36Sopenharmony_ci#define ROT_CONTROL_ROT_180		(2 << 4)
2862306a36Sopenharmony_ci#define ROT_CONTROL_ROT_270		(3 << 4)
2962306a36Sopenharmony_ci#define ROT_CONTROL_ROT_MASK		(3 << 4)
3062306a36Sopenharmony_ci#define ROT_CONTROL_START		(1 << 0)
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci/* Status */
3362306a36Sopenharmony_ci#define ROT_STATUS			0x20
3462306a36Sopenharmony_ci#define ROT_STATUS_IRQ_PENDING(x)	(1 << (x))
3562306a36Sopenharmony_ci#define ROT_STATUS_IRQ(x)		(((x) >> 8) & 0x3)
3662306a36Sopenharmony_ci#define ROT_STATUS_IRQ_VAL_COMPLETE	1
3762306a36Sopenharmony_ci#define ROT_STATUS_IRQ_VAL_ILLEGAL	2
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci/* Buffer Address */
4062306a36Sopenharmony_ci#define ROT_SRC_BUF_ADDR(n)		(0x30 + ((n) << 2))
4162306a36Sopenharmony_ci#define ROT_DST_BUF_ADDR(n)		(0x50 + ((n) << 2))
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci/* Buffer Size */
4462306a36Sopenharmony_ci#define ROT_SRC_BUF_SIZE		0x3c
4562306a36Sopenharmony_ci#define ROT_DST_BUF_SIZE		0x5c
4662306a36Sopenharmony_ci#define ROT_SET_BUF_SIZE_H(x)		((x) << 16)
4762306a36Sopenharmony_ci#define ROT_SET_BUF_SIZE_W(x)		((x) << 0)
4862306a36Sopenharmony_ci#define ROT_GET_BUF_SIZE_H(x)		((x) >> 16)
4962306a36Sopenharmony_ci#define ROT_GET_BUF_SIZE_W(x)		((x) & 0xffff)
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci/* Crop Position */
5262306a36Sopenharmony_ci#define ROT_SRC_CROP_POS		0x40
5362306a36Sopenharmony_ci#define ROT_DST_CROP_POS		0x60
5462306a36Sopenharmony_ci#define ROT_CROP_POS_Y(x)		((x) << 16)
5562306a36Sopenharmony_ci#define ROT_CROP_POS_X(x)		((x) << 0)
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci/* Source Crop Size */
5862306a36Sopenharmony_ci#define ROT_SRC_CROP_SIZE		0x44
5962306a36Sopenharmony_ci#define ROT_SRC_CROP_SIZE_H(x)		((x) << 16)
6062306a36Sopenharmony_ci#define ROT_SRC_CROP_SIZE_W(x)		((x) << 0)
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci/* Round to nearest aligned value */
6362306a36Sopenharmony_ci#define ROT_ALIGN(x, align, mask)	(((x) + (1 << ((align) - 1))) & (mask))
6462306a36Sopenharmony_ci/* Minimum limit value */
6562306a36Sopenharmony_ci#define ROT_MIN(min, mask)		(((min) + ~(mask)) & (mask))
6662306a36Sopenharmony_ci/* Maximum limit value */
6762306a36Sopenharmony_ci#define ROT_MAX(max, mask)		((max) & (mask))
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci#endif /* EXYNOS_REGS_ROTATOR_H */
7062306a36Sopenharmony_ci
71