18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/* drivers/gpu/drm/exynos/regs-scaler.h
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Copyright (c) 2017 Samsung Electronics Co., Ltd.
58c2ecf20Sopenharmony_ci *		http://www.samsung.com/
68c2ecf20Sopenharmony_ci * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com>
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Register definition file for Samsung scaler driver
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#ifndef EXYNOS_REGS_SCALER_H
128c2ecf20Sopenharmony_ci#define EXYNOS_REGS_SCALER_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci/* Register part */
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci/* Global setting */
178c2ecf20Sopenharmony_ci#define SCALER_STATUS			0x0	/* no shadow */
188c2ecf20Sopenharmony_ci#define SCALER_CFG			0x4
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci/* Interrupt */
218c2ecf20Sopenharmony_ci#define SCALER_INT_EN			0x8	/* no shadow */
228c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS		0xc	/* no shadow */
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci/* SRC */
258c2ecf20Sopenharmony_ci#define SCALER_SRC_CFG			0x10
268c2ecf20Sopenharmony_ci#define SCALER_SRC_Y_BASE		0x14
278c2ecf20Sopenharmony_ci#define SCALER_SRC_CB_BASE		0x18
288c2ecf20Sopenharmony_ci#define SCALER_SRC_CR_BASE		0x294
298c2ecf20Sopenharmony_ci#define SCALER_SRC_SPAN			0x1c
308c2ecf20Sopenharmony_ci#define SCALER_SRC_Y_POS		0x20
318c2ecf20Sopenharmony_ci#define SCALER_SRC_WH			0x24
328c2ecf20Sopenharmony_ci#define SCALER_SRC_C_POS		0x28
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci/* DST */
358c2ecf20Sopenharmony_ci#define SCALER_DST_CFG			0x30
368c2ecf20Sopenharmony_ci#define SCALER_DST_Y_BASE		0x34
378c2ecf20Sopenharmony_ci#define SCALER_DST_CB_BASE		0x38
388c2ecf20Sopenharmony_ci#define SCALER_DST_CR_BASE		0x298
398c2ecf20Sopenharmony_ci#define SCALER_DST_SPAN			0x3c
408c2ecf20Sopenharmony_ci#define SCALER_DST_WH			0x40
418c2ecf20Sopenharmony_ci#define SCALER_DST_POS			0x44
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci/* Ratio */
448c2ecf20Sopenharmony_ci#define SCALER_H_RATIO			0x50
458c2ecf20Sopenharmony_ci#define SCALER_V_RATIO			0x54
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci/* Rotation */
488c2ecf20Sopenharmony_ci#define SCALER_ROT_CFG			0x58
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci/* Coefficient */
518c2ecf20Sopenharmony_ci/*
528c2ecf20Sopenharmony_ci * YHCOEF_{x}{A|B|C|D}			CHCOEF_{x}{A|B|C|D}
538c2ecf20Sopenharmony_ci *
548c2ecf20Sopenharmony_ci *	A	B	C	D	A	B	C	D
558c2ecf20Sopenharmony_ci * 0	60	64	68	6c	140	144	148	14c
568c2ecf20Sopenharmony_ci * 1	70	74	78	7c	150	154	158	15c
578c2ecf20Sopenharmony_ci * 2	80	84	88	8c	160	164	168	16c
588c2ecf20Sopenharmony_ci * 3	90	94	98	9c	170	174	178	17c
598c2ecf20Sopenharmony_ci * 4	a0	a4	a8	ac	180	184	188	18c
608c2ecf20Sopenharmony_ci * 5	b0	b4	b8	bc	190	194	198	19c
618c2ecf20Sopenharmony_ci * 6	c0	c4	c8	cc	1a0	1a4	1a8	1ac
628c2ecf20Sopenharmony_ci * 7	d0	d4	d8	dc	1b0	1b4	1b8	1bc
638c2ecf20Sopenharmony_ci * 8	e0	e4	e8	ec	1c0	1c4	1c8	1cc
648c2ecf20Sopenharmony_ci *
658c2ecf20Sopenharmony_ci *
668c2ecf20Sopenharmony_ci * YVCOEF_{x}{A|B}			CVCOEF_{x}{A|B}
678c2ecf20Sopenharmony_ci *
688c2ecf20Sopenharmony_ci *	A	B			A	B
698c2ecf20Sopenharmony_ci * 0	f0	f4			1d0	1d4
708c2ecf20Sopenharmony_ci * 1	f8	fc			1d8	1dc
718c2ecf20Sopenharmony_ci * 2	100	104			1e0	1e4
728c2ecf20Sopenharmony_ci * 3	108	10c			1e8	1ec
738c2ecf20Sopenharmony_ci * 4	110	114			1f0	1f4
748c2ecf20Sopenharmony_ci * 5	118	11c			1f8	1fc
758c2ecf20Sopenharmony_ci * 6	120	124			200	204
768c2ecf20Sopenharmony_ci * 7	128	12c			208	20c
778c2ecf20Sopenharmony_ci * 8	130	134			210	214
788c2ecf20Sopenharmony_ci */
798c2ecf20Sopenharmony_ci#define _SCALER_HCOEF_DELTA(r, c)	((r) * 0x10 + (c) * 0x4)
808c2ecf20Sopenharmony_ci#define _SCALER_VCOEF_DELTA(r, c)	((r) * 0x8 + (c) * 0x4)
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci#define SCALER_YHCOEF(r, c)		(0x60 + _SCALER_HCOEF_DELTA((r), (c)))
838c2ecf20Sopenharmony_ci#define SCALER_YVCOEF(r, c)		(0xf0 + _SCALER_VCOEF_DELTA((r), (c)))
848c2ecf20Sopenharmony_ci#define SCALER_CHCOEF(r, c)		(0x140 + _SCALER_HCOEF_DELTA((r), (c)))
858c2ecf20Sopenharmony_ci#define SCALER_CVCOEF(r, c)		(0x1d0 + _SCALER_VCOEF_DELTA((r), (c)))
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci/* Color Space Conversion */
898c2ecf20Sopenharmony_ci#define SCALER_CSC_COEF(x, y)		(0x220 + (y) * 0xc + (x) * 0x4)
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci/* Dithering */
928c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG			0x250
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci/* Version Number */
958c2ecf20Sopenharmony_ci#define SCALER_VER			0x260	/* no shadow */
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci/* Cycle count and Timeout */
988c2ecf20Sopenharmony_ci#define SCALER_CYCLE_COUNT		0x278	/* no shadow */
998c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL		0x2c0	/* no shadow */
1008c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CNT		0x2c4	/* no shadow */
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci/* Blending */
1038c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR		0x280
1048c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA		0x284
1058c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR		0x288
1068c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA		0x28c
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci/* Color Fill */
1098c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR		0x290
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci/* Multiple Command Queue */
1128c2ecf20Sopenharmony_ci#define SCALER_ADDR_Q_CONFIG		0x2a0	/* no shadow */
1138c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS	0x2a4	/* no shadow */
1148c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q		0x2a8	/* no shadow */
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ci/* CRC */
1178c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR00_10		0x2b0	/* no shadow */
1188c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR20_30		0x2b4	/* no shadow */
1198c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR01_11		0x2b8	/* no shadow */
1208c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR21_31		0x2bc	/* no shadow */
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci/* Shadow Registers */
1238c2ecf20Sopenharmony_ci#define SCALER_SHADOW_OFFSET		0x1000
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ci/* Bit definition part */
1278c2ecf20Sopenharmony_ci#define SCALER_MASK(hi_b, lo_b)		((1 << ((hi_b) - (lo_b) + 1)) - 1)
1288c2ecf20Sopenharmony_ci#define SCALER_GET(reg, hi_b, lo_b)	\
1298c2ecf20Sopenharmony_ci	(((reg) >> (lo_b)) & SCALER_MASK(hi_b, lo_b))
1308c2ecf20Sopenharmony_ci#define SCALER_SET(val, hi_b, lo_b) \
1318c2ecf20Sopenharmony_ci	(((val) & SCALER_MASK(hi_b, lo_b)) << lo_b)
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci/* SCALER_STATUS */
1348c2ecf20Sopenharmony_ci#define SCALER_STATUS_SCALER_RUNNING		(1 << 1)
1358c2ecf20Sopenharmony_ci#define SCALER_STATUS_SCALER_READY_CLK_DOWN	(1 << 0)
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ci/* SCALER_CFG */
1388c2ecf20Sopenharmony_ci#define SCALER_CFG_FILL_EN			(1 << 24)
1398c2ecf20Sopenharmony_ci#define SCALER_CFG_BLEND_COLOR_DIVIDE_ALPHA_EN	(1 << 17)
1408c2ecf20Sopenharmony_ci#define SCALER_CFG_BLEND_EN			(1 << 16)
1418c2ecf20Sopenharmony_ci#define SCALER_CFG_CSC_Y_OFFSET_SRC_EN		(1 << 10)
1428c2ecf20Sopenharmony_ci#define SCALER_CFG_CSC_Y_OFFSET_DST_EN		(1 << 9)
1438c2ecf20Sopenharmony_ci#define SCALER_CFG_16_BURST_MODE		(1 << 8)
1448c2ecf20Sopenharmony_ci#define SCALER_CFG_SOFT_RESET			(1 << 1)
1458c2ecf20Sopenharmony_ci#define SCALER_CFG_START_CMD			(1 << 0)
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci/* SCALER_INT_EN */
1488c2ecf20Sopenharmony_ci#define SCALER_INT_EN_TIMEOUT			(1 << 31)
1498c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_BLEND		(1 << 24)
1508c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_RATIO		(1 << 23)
1518c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_HEIGHT	(1 << 22)
1528c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_WIDTH		(1 << 21)
1538c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_V_POS		(1 << 20)
1548c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_H_POS		(1 << 19)
1558c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_C_SPAN	(1 << 18)
1568c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_Y_SPAN	(1 << 17)
1578c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_CR_BASE	(1 << 16)
1588c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_CB_BASE	(1 << 15)
1598c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_Y_BASE	(1 << 14)
1608c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_COLOR		(1 << 13)
1618c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_HEIGHT	(1 << 12)
1628c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_WIDTH		(1 << 11)
1638c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_CV_POS	(1 << 10)
1648c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_CH_POS	(1 << 9)
1658c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_YV_POS	(1 << 8)
1668c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_YH_POS	(1 << 7)
1678c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_DST_SPAN		(1 << 6)
1688c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_Y_SPAN	(1 << 5)
1698c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_CR_BASE	(1 << 4)
1708c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_CB_BASE	(1 << 3)
1718c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_Y_BASE	(1 << 2)
1728c2ecf20Sopenharmony_ci#define SCALER_INT_EN_ILLEGAL_SRC_COLOR		(1 << 1)
1738c2ecf20Sopenharmony_ci#define SCALER_INT_EN_FRAME_END			(1 << 0)
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci/* SCALER_INT_STATUS */
1768c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_TIMEOUT		(1 << 31)
1778c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_BLEND		(1 << 24)
1788c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_RATIO		(1 << 23)
1798c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_HEIGHT	(1 << 22)
1808c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_WIDTH	(1 << 21)
1818c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_V_POS	(1 << 20)
1828c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_H_POS	(1 << 19)
1838c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_C_SPAN	(1 << 18)
1848c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_Y_SPAN	(1 << 17)
1858c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_CR_BASE	(1 << 16)
1868c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_CB_BASE	(1 << 15)
1878c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_Y_BASE	(1 << 14)
1888c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_COLOR	(1 << 13)
1898c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_HEIGHT	(1 << 12)
1908c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_WIDTH	(1 << 11)
1918c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_CV_POS	(1 << 10)
1928c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_CH_POS	(1 << 9)
1938c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_YV_POS	(1 << 8)
1948c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_YH_POS	(1 << 7)
1958c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_DST_SPAN	(1 << 6)
1968c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_Y_SPAN	(1 << 5)
1978c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_CR_BASE	(1 << 4)
1988c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_CB_BASE	(1 << 3)
1998c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_Y_BASE	(1 << 2)
2008c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_ILLEGAL_SRC_COLOR	(1 << 1)
2018c2ecf20Sopenharmony_ci#define SCALER_INT_STATUS_FRAME_END		(1 << 0)
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_ci/* SCALER_SRC_CFG */
2048c2ecf20Sopenharmony_ci#define SCALER_SRC_CFG_TILE_EN			(1 << 10)
2058c2ecf20Sopenharmony_ci#define SCALER_SRC_CFG_GET_BYTE_SWAP(r)		SCALER_GET(r, 6, 5)
2068c2ecf20Sopenharmony_ci#define SCALER_SRC_CFG_SET_BYTE_SWAP(v)		SCALER_SET(v, 6, 5)
2078c2ecf20Sopenharmony_ci#define SCALER_SRC_CFG_GET_COLOR_FORMAT(r)	SCALER_GET(r, 4, 0)
2088c2ecf20Sopenharmony_ci#define SCALER_SRC_CFG_SET_COLOR_FORMAT(v)	SCALER_SET(v, 4, 0)
2098c2ecf20Sopenharmony_ci#define SCALER_YUV420_2P_UV			0
2108c2ecf20Sopenharmony_ci#define SCALER_YUV422_2P_UV			2
2118c2ecf20Sopenharmony_ci#define SCALER_YUV444_2P_UV			3
2128c2ecf20Sopenharmony_ci#define SCALER_RGB_565				4
2138c2ecf20Sopenharmony_ci#define SCALER_ARGB1555				5
2148c2ecf20Sopenharmony_ci#define SCALER_ARGB8888				6
2158c2ecf20Sopenharmony_ci#define SCALER_ARGB8888_PRE			7
2168c2ecf20Sopenharmony_ci#define SCALER_YUV422_1P_YVYU			9
2178c2ecf20Sopenharmony_ci#define SCALER_YUV422_1P_YUYV			10
2188c2ecf20Sopenharmony_ci#define SCALER_YUV422_1P_UYVY			11
2198c2ecf20Sopenharmony_ci#define SCALER_ARGB4444				12
2208c2ecf20Sopenharmony_ci#define SCALER_L8A8				13
2218c2ecf20Sopenharmony_ci#define SCALER_RGBA8888				14
2228c2ecf20Sopenharmony_ci#define SCALER_L8				15
2238c2ecf20Sopenharmony_ci#define SCALER_YUV420_2P_VU			16
2248c2ecf20Sopenharmony_ci#define SCALER_YUV422_2P_VU			18
2258c2ecf20Sopenharmony_ci#define SCALER_YUV444_2P_VU			19
2268c2ecf20Sopenharmony_ci#define SCALER_YUV420_3P			20
2278c2ecf20Sopenharmony_ci#define SCALER_YUV422_3P			22
2288c2ecf20Sopenharmony_ci#define SCALER_YUV444_3P			23
2298c2ecf20Sopenharmony_ci
2308c2ecf20Sopenharmony_ci/* SCALER_SRC_SPAN */
2318c2ecf20Sopenharmony_ci#define SCALER_SRC_SPAN_GET_C_SPAN(r)		SCALER_GET(r, 29, 16)
2328c2ecf20Sopenharmony_ci#define SCALER_SRC_SPAN_SET_C_SPAN(v)		SCALER_SET(v, 29, 16)
2338c2ecf20Sopenharmony_ci#define SCALER_SRC_SPAN_GET_Y_SPAN(r)		SCALER_GET(r, 13, 0)
2348c2ecf20Sopenharmony_ci#define SCALER_SRC_SPAN_SET_Y_SPAN(v)		SCALER_SET(v, 13, 0)
2358c2ecf20Sopenharmony_ci
2368c2ecf20Sopenharmony_ci/* SCALER_SRC_Y_POS */
2378c2ecf20Sopenharmony_ci#define SCALER_SRC_Y_POS_GET_YH_POS(r)		SCALER_GET(r, 31, 16)
2388c2ecf20Sopenharmony_ci#define SCALER_SRC_Y_POS_SET_YH_POS(v)		SCALER_SET(v, 31, 16)
2398c2ecf20Sopenharmony_ci#define SCALER_SRC_Y_POS_GET_YV_POS(r)		SCALER_GET(r, 15, 0)
2408c2ecf20Sopenharmony_ci#define SCALER_SRC_Y_POS_SET_YV_POS(v)		SCALER_SET(v, 15, 0)
2418c2ecf20Sopenharmony_ci
2428c2ecf20Sopenharmony_ci/* SCALER_SRC_WH */
2438c2ecf20Sopenharmony_ci#define SCALER_SRC_WH_GET_WIDTH(r)		SCALER_GET(r, 29, 16)
2448c2ecf20Sopenharmony_ci#define SCALER_SRC_WH_SET_WIDTH(v)		SCALER_SET(v, 29, 16)
2458c2ecf20Sopenharmony_ci#define SCALER_SRC_WH_GET_HEIGHT(r)		SCALER_GET(r, 13, 0)
2468c2ecf20Sopenharmony_ci#define SCALER_SRC_WH_SET_HEIGHT(v)		SCALER_SET(v, 13, 0)
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ci/* SCALER_SRC_C_POS */
2498c2ecf20Sopenharmony_ci#define SCALER_SRC_C_POS_GET_CH_POS(r)		SCALER_GET(r, 31, 16)
2508c2ecf20Sopenharmony_ci#define SCALER_SRC_C_POS_SET_CH_POS(v)		SCALER_SET(v, 31, 16)
2518c2ecf20Sopenharmony_ci#define SCALER_SRC_C_POS_GET_CV_POS(r)		SCALER_GET(r, 15, 0)
2528c2ecf20Sopenharmony_ci#define SCALER_SRC_C_POS_SET_CV_POS(v)		SCALER_SET(v, 15, 0)
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci/* SCALER_DST_CFG */
2558c2ecf20Sopenharmony_ci#define SCALER_DST_CFG_GET_BYTE_SWAP(r)		SCALER_GET(r, 6, 5)
2568c2ecf20Sopenharmony_ci#define SCALER_DST_CFG_SET_BYTE_SWAP(v)		SCALER_SET(v, 6, 5)
2578c2ecf20Sopenharmony_ci#define SCALER_DST_CFG_GET_COLOR_FORMAT(r)	SCALER_GET(r, 4, 0)
2588c2ecf20Sopenharmony_ci#define SCALER_DST_CFG_SET_COLOR_FORMAT(v)	SCALER_SET(v, 4, 0)
2598c2ecf20Sopenharmony_ci
2608c2ecf20Sopenharmony_ci/* SCALER_DST_SPAN */
2618c2ecf20Sopenharmony_ci#define SCALER_DST_SPAN_GET_C_SPAN(r)		SCALER_GET(r, 29, 16)
2628c2ecf20Sopenharmony_ci#define SCALER_DST_SPAN_SET_C_SPAN(v)		SCALER_SET(v, 29, 16)
2638c2ecf20Sopenharmony_ci#define SCALER_DST_SPAN_GET_Y_SPAN(r)		SCALER_GET(r, 13, 0)
2648c2ecf20Sopenharmony_ci#define SCALER_DST_SPAN_SET_Y_SPAN(v)		SCALER_SET(v, 13, 0)
2658c2ecf20Sopenharmony_ci
2668c2ecf20Sopenharmony_ci/* SCALER_DST_WH */
2678c2ecf20Sopenharmony_ci#define SCALER_DST_WH_GET_WIDTH(r)		SCALER_GET(r, 29, 16)
2688c2ecf20Sopenharmony_ci#define SCALER_DST_WH_SET_WIDTH(v)		SCALER_SET(v, 29, 16)
2698c2ecf20Sopenharmony_ci#define SCALER_DST_WH_GET_HEIGHT(r)		SCALER_GET(r, 13, 0)
2708c2ecf20Sopenharmony_ci#define SCALER_DST_WH_SET_HEIGHT(v)		SCALER_SET(v, 13, 0)
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci/* SCALER_DST_POS */
2738c2ecf20Sopenharmony_ci#define SCALER_DST_POS_GET_H_POS(r)		SCALER_GET(r, 29, 16)
2748c2ecf20Sopenharmony_ci#define SCALER_DST_POS_SET_H_POS(v)		SCALER_SET(v, 29, 16)
2758c2ecf20Sopenharmony_ci#define SCALER_DST_POS_GET_V_POS(r)		SCALER_GET(r, 13, 0)
2768c2ecf20Sopenharmony_ci#define SCALER_DST_POS_SET_V_POS(v)		SCALER_SET(v, 13, 0)
2778c2ecf20Sopenharmony_ci
2788c2ecf20Sopenharmony_ci/* SCALER_H_RATIO */
2798c2ecf20Sopenharmony_ci#define SCALER_H_RATIO_GET(r)			SCALER_GET(r, 18, 0)
2808c2ecf20Sopenharmony_ci#define SCALER_H_RATIO_SET(v)			SCALER_SET(v, 18, 0)
2818c2ecf20Sopenharmony_ci
2828c2ecf20Sopenharmony_ci/* SCALER_V_RATIO */
2838c2ecf20Sopenharmony_ci#define SCALER_V_RATIO_GET(r)			SCALER_GET(r, 18, 0)
2848c2ecf20Sopenharmony_ci#define SCALER_V_RATIO_SET(v)			SCALER_SET(v, 18, 0)
2858c2ecf20Sopenharmony_ci
2868c2ecf20Sopenharmony_ci/* SCALER_ROT_CFG */
2878c2ecf20Sopenharmony_ci#define SCALER_ROT_CFG_FLIP_X_EN		(1 << 3)
2888c2ecf20Sopenharmony_ci#define SCALER_ROT_CFG_FLIP_Y_EN		(1 << 2)
2898c2ecf20Sopenharmony_ci#define SCALER_ROT_CFG_GET_ROTMODE(r)		SCALER_GET(r, 1, 0)
2908c2ecf20Sopenharmony_ci#define SCALER_ROT_CFG_SET_ROTMODE(v)		SCALER_SET(v, 1, 0)
2918c2ecf20Sopenharmony_ci#define SCALER_ROT_MODE_90			1
2928c2ecf20Sopenharmony_ci#define SCALER_ROT_MODE_180			2
2938c2ecf20Sopenharmony_ci#define SCALER_ROT_MODE_270			3
2948c2ecf20Sopenharmony_ci
2958c2ecf20Sopenharmony_ci/* SCALER_HCOEF, SCALER_VCOEF */
2968c2ecf20Sopenharmony_ci#define SCALER_COEF_SHIFT(i)			(16 * (1 - (i) % 2))
2978c2ecf20Sopenharmony_ci#define SCALER_COEF_GET(r, i)			\
2988c2ecf20Sopenharmony_ci				(((r) >> SCALER_COEF_SHIFT(i)) & 0x1ff)
2998c2ecf20Sopenharmony_ci#define SCALER_COEF_SET(v, i)			\
3008c2ecf20Sopenharmony_ci				(((v) & 0x1ff) << SCALER_COEF_SHIFT(i))
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ci/* SCALER_CSC_COEFxy */
3038c2ecf20Sopenharmony_ci#define SCALER_CSC_COEF_GET(r)			SCALER_GET(r, 11, 0)
3048c2ecf20Sopenharmony_ci#define SCALER_CSC_COEF_SET(v)			SCALER_SET(v, 11, 0)
3058c2ecf20Sopenharmony_ci
3068c2ecf20Sopenharmony_ci/* SCALER_DITH_CFG */
3078c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG_GET_R_TYPE(r)		SCALER_GET(r, 8, 6)
3088c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG_SET_R_TYPE(v)		SCALER_SET(v, 8, 6)
3098c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG_GET_G_TYPE(r)		SCALER_GET(r, 5, 3)
3108c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG_SET_G_TYPE(v)		SCALER_SET(v, 5, 3)
3118c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG_GET_B_TYPE(r)		SCALER_GET(r, 2, 0)
3128c2ecf20Sopenharmony_ci#define SCALER_DITH_CFG_SET_B_TYPE(v)		SCALER_SET(v, 2, 0)
3138c2ecf20Sopenharmony_ci
3148c2ecf20Sopenharmony_ci/* SCALER_TIMEOUT_CTRL */
3158c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL_GET_TIMER_VALUE(r)	SCALER_GET(r, 31, 16)
3168c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL_SET_TIMER_VALUE(v)	SCALER_SET(v, 31, 16)
3178c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL_GET_TIMER_DIV(r)	SCALER_GET(r, 7, 4)
3188c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL_SET_TIMER_DIV(v)	SCALER_SET(v, 7, 4)
3198c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL_TIMER_ENABLE	(1 << 0)
3208c2ecf20Sopenharmony_ci
3218c2ecf20Sopenharmony_ci/* SCALER_TIMEOUT_CNT */
3228c2ecf20Sopenharmony_ci#define SCALER_TIMEOUT_CTRL_GET_TIMER_COUNT(r)	SCALER_GET(r, 31, 16)
3238c2ecf20Sopenharmony_ci
3248c2ecf20Sopenharmony_ci/* SCALER_SRC_BLEND_COLOR */
3258c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_SEL_INV		(1 << 31)
3268c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_GET_SEL(r)	SCALER_GET(r, 30, 29)
3278c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_SET_SEL(v)	SCALER_SET(v, 30, 29)
3288c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_OP_SEL_INV	(1 << 28)
3298c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_GET_OP_SEL(r)	SCALER_GET(r, 27, 24)
3308c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_SET_OP_SEL(v)	SCALER_SET(v, 27, 24)
3318c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_GET_COLOR0(r)	SCALER_GET(r, 23, 16)
3328c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_SET_COLOR0(v)	SCALER_SET(v, 23, 16)
3338c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_GET_COLOR1(r)	SCALER_GET(r, 15, 8)
3348c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_SET_COLOR1(v)	SCALER_SET(v, 15, 8)
3358c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_GET_COLOR2(r)	SCALER_GET(r, 7, 0)
3368c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_COLOR_SET_COLOR2(v)	SCALER_SET(v, 7, 0)
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_ci/* SCALER_SRC_BLEND_ALPHA */
3398c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_SEL_INV		(1 << 31)
3408c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_GET_SEL(r)	SCALER_GET(r, 30, 29)
3418c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_SET_SEL(v)	SCALER_SET(v, 30, 29)
3428c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_OP_SEL_INV	(1 << 28)
3438c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_GET_OP_SEL(r)	SCALER_GET(r, 27, 24)
3448c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_SET_OP_SEL(v)	SCALER_SET(v, 27, 24)
3458c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_GET_ALPHA(r)	SCALER_GET(r, 7, 0)
3468c2ecf20Sopenharmony_ci#define SCALER_SRC_BLEND_ALPHA_SET_ALPHA(v)	SCALER_SET(v, 7, 0)
3478c2ecf20Sopenharmony_ci
3488c2ecf20Sopenharmony_ci/* SCALER_DST_BLEND_COLOR */
3498c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_SEL_INV		(1 << 31)
3508c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_GET_SEL(r)	SCALER_GET(r, 30, 29)
3518c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_SET_SEL(v)	SCALER_SET(v, 30, 29)
3528c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_OP_SEL_INV	(1 << 28)
3538c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_GET_OP_SEL(r)	SCALER_GET(r, 27, 24)
3548c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_SET_OP_SEL(v)	SCALER_SET(v, 27, 24)
3558c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_GET_COLOR0(r)	SCALER_GET(r, 23, 16)
3568c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_SET_COLOR0(v)	SCALER_SET(v, 23, 16)
3578c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_GET_COLOR1(r)	SCALER_GET(r, 15, 8)
3588c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_SET_COLOR1(v)	SCALER_SET(v, 15, 8)
3598c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_GET_COLOR2(r)	SCALER_GET(r, 7, 0)
3608c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_COLOR_SET_COLOR2(v)	SCALER_SET(v, 7, 0)
3618c2ecf20Sopenharmony_ci
3628c2ecf20Sopenharmony_ci/* SCALER_DST_BLEND_ALPHA */
3638c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_SEL_INV		(1 << 31)
3648c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_GET_SEL(r)	SCALER_GET(r, 30, 29)
3658c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_SET_SEL(v)	SCALER_SET(v, 30, 29)
3668c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_OP_SEL_INV	(1 << 28)
3678c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_GET_OP_SEL(r)	SCALER_GET(r, 27, 24)
3688c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_SET_OP_SEL(v)	SCALER_SET(v, 27, 24)
3698c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_GET_ALPHA(r)	SCALER_GET(r, 7, 0)
3708c2ecf20Sopenharmony_ci#define SCALER_DST_BLEND_ALPHA_SET_ALPHA(v)	SCALER_SET(v, 7, 0)
3718c2ecf20Sopenharmony_ci
3728c2ecf20Sopenharmony_ci/* SCALER_FILL_COLOR */
3738c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_GET_ALPHA(r)		SCALER_GET(r, 31, 24)
3748c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_SET_ALPHA(v)		SCALER_SET(v, 31, 24)
3758c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_GET_FILL_COLOR0(r)	SCALER_GET(r, 23, 16)
3768c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_SET_FILL_COLOR0(v)	SCALER_SET(v, 23, 16)
3778c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_GET_FILL_COLOR1(r)	SCALER_GET(r, 15, 8)
3788c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_SET_FILL_COLOR1(v)	SCALER_SET(v, 15, 8)
3798c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_GET_FILL_COLOR2(r)	SCALER_GET(r, 7, 0)
3808c2ecf20Sopenharmony_ci#define SCALER_FILL_COLOR_SET_FILL_COLOR2(v)	SCALER_SET(v, 7, 0)
3818c2ecf20Sopenharmony_ci
3828c2ecf20Sopenharmony_ci/* SCALER_ADDR_Q_CONFIG */
3838c2ecf20Sopenharmony_ci#define SCALER_ADDR_Q_CONFIG_RST		(1 << 0)
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_ci/* SCALER_SRC_ADDR_Q_STATUS */
3868c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_Y_FULL		(1 << 23)
3878c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_Y_EMPTY	(1 << 22)
3888c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_GET_Y_WR_IDX(r)	SCALER_GET(r, 21, 16)
3898c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_CB_FULL	(1 << 15)
3908c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_CB_EMPTY	(1 << 14)
3918c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_GET_CB_WR_IDX(r)	SCALER_GET(r, 13, 8)
3928c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_CR_FULL	(1 << 7)
3938c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_CR_EMPTY	(1 << 6)
3948c2ecf20Sopenharmony_ci#define SCALER_SRC_ADDR_Q_STATUS_GET_CR_WR_IDX(r)	SCALER_GET(r, 5, 0)
3958c2ecf20Sopenharmony_ci
3968c2ecf20Sopenharmony_ci/* SCALER_DST_ADDR_Q_STATUS */
3978c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_Y_FULL		(1 << 23)
3988c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_Y_EMPTY	(1 << 22)
3998c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_GET_Y_WR_IDX(r)	SCALER_GET(r, 21, 16)
4008c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_CB_FULL	(1 << 15)
4018c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_CB_EMPTY	(1 << 14)
4028c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_GET_CB_WR_IDX(r)	SCALER_GET(r, 13, 8)
4038c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_CR_FULL	(1 << 7)
4048c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_CR_EMPTY	(1 << 6)
4058c2ecf20Sopenharmony_ci#define SCALER_DST_ADDR_Q_STATUS_GET_CR_WR_IDX(r)	SCALER_GET(r, 5, 0)
4068c2ecf20Sopenharmony_ci
4078c2ecf20Sopenharmony_ci/* SCALER_CRC_COLOR00_10 */
4088c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR00_10_GET_00(r)		SCALER_GET(r, 31, 16)
4098c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR00_10_GET_10(r)		SCALER_GET(r, 15, 0)
4108c2ecf20Sopenharmony_ci
4118c2ecf20Sopenharmony_ci/* SCALER_CRC_COLOR20_30 */
4128c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR20_30_GET_20(r)		SCALER_GET(r, 31, 16)
4138c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR20_30_GET_30(r)		SCALER_GET(r, 15, 0)
4148c2ecf20Sopenharmony_ci
4158c2ecf20Sopenharmony_ci/* SCALER_CRC_COLOR01_11 */
4168c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR01_11_GET_01(r)		SCALER_GET(r, 31, 16)
4178c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR01_11_GET_11(r)		SCALER_GET(r, 15, 0)
4188c2ecf20Sopenharmony_ci
4198c2ecf20Sopenharmony_ci/* SCALER_CRC_COLOR21_31 */
4208c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR21_31_GET_21(r)		SCALER_GET(r, 31, 16)
4218c2ecf20Sopenharmony_ci#define SCALER_CRC_COLOR21_31_GET_31(r)		SCALER_GET(r, 15, 0)
4228c2ecf20Sopenharmony_ci
4238c2ecf20Sopenharmony_ci#endif /* EXYNOS_REGS_SCALER_H */
424