1bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* drivers/gpu/drm/exynos/regs-rotator.h
2bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim *
3bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim *		http://www.samsung.com/
5bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim *
6bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim * Register definition file for Samsung Rotator Interface (Rotator) driver
7bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim *
8bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim * This program is free software; you can redistribute it and/or modify
9bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim * it under the terms of the GNU General Public License version 2 as
10bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim * published by the Free Software Foundation.
11bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim*/
12bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
13bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#ifndef EXYNOS_REGS_ROTATOR_H
14bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define EXYNOS_REGS_ROTATOR_H
15bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
16bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Configuration */
17bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONFIG			0x00
18bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONFIG_IRQ			(3 << 8)
19bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
20bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Image Control */
21bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL			0x10
22bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_PATTERN_WRITE	(1 << 16)
23bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_FMT_YCBCR420_2P	(1 << 8)
24bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_FMT_RGB888		(6 << 8)
25bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_FMT_MASK		(7 << 8)
26bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_FLIP_VERTICAL	(2 << 6)
27bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_FLIP_HORIZONTAL	(3 << 6)
28bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_FLIP_MASK		(3 << 6)
29bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_ROT_90		(1 << 4)
30bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_ROT_180		(2 << 4)
31bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_ROT_270		(3 << 4)
32bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_ROT_MASK		(3 << 4)
33bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CONTROL_START		(1 << 0)
34bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
35bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Status */
36bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_STATUS			0x20
37bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_STATUS_IRQ_PENDING(x)	(1 << (x))
38bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_STATUS_IRQ(x)		(((x) >> 8) & 0x3)
39bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_STATUS_IRQ_VAL_COMPLETE	1
40bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_STATUS_IRQ_VAL_ILLEGAL	2
41bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
42bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Buffer Address */
43bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SRC_BUF_ADDR(n)		(0x30 + ((n) << 2))
44bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_DST_BUF_ADDR(n)		(0x50 + ((n) << 2))
45bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
46bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Buffer Size */
47bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SRC_BUF_SIZE		0x3c
48bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_DST_BUF_SIZE		0x5c
49bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SET_BUF_SIZE_H(x)		((x) << 16)
50bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SET_BUF_SIZE_W(x)		((x) << 0)
51bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_GET_BUF_SIZE_H(x)		((x) >> 16)
52bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_GET_BUF_SIZE_W(x)		((x) & 0xffff)
53bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
54bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Crop Position */
55bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SRC_CROP_POS		0x40
56bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_DST_CROP_POS		0x60
57bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CROP_POS_Y(x)		((x) << 16)
58bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_CROP_POS_X(x)		((x) << 0)
59bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
60bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Source Crop Size */
61bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SRC_CROP_SIZE		0x44
62bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SRC_CROP_SIZE_H(x)		((x) << 16)
63bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_SRC_CROP_SIZE_W(x)		((x) << 0)
64bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
65bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Round to nearest aligned value */
66bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_ALIGN(x, align, mask)	(((x) + (1 << ((align) - 1))) & (mask))
67bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Minimum limit value */
68bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_MIN(min, mask)		(((min) + ~(mask)) & (mask))
69bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim/* Maximum limit value */
70bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#define ROT_MAX(max, mask)		((max) & (mask))
71bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
72bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim#endif /* EXYNOS_REGS_ROTATOR_H */
73bea8a429d91a1fd9a88c87df28062c632a1081f9Eunchul Kim
74