162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2011 - 2012 Samsung Electronics Co., Ltd.
462306a36Sopenharmony_ci *		http://www.samsung.com
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Register definition file for Samsung G-Scaler driver
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef REGS_GSC_H_
1062306a36Sopenharmony_ci#define REGS_GSC_H_
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/* G-Scaler enable */
1362306a36Sopenharmony_ci#define GSC_ENABLE			0x00
1462306a36Sopenharmony_ci#define GSC_ENABLE_OP_STATUS		(1 << 2)
1562306a36Sopenharmony_ci#define GSC_ENABLE_SFR_UPDATE		(1 << 1)
1662306a36Sopenharmony_ci#define GSC_ENABLE_ON			(1 << 0)
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* G-Scaler S/W reset */
1962306a36Sopenharmony_ci#define GSC_SW_RESET			0x04
2062306a36Sopenharmony_ci#define GSC_SW_RESET_SRESET		(1 << 0)
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/* G-Scaler IRQ */
2362306a36Sopenharmony_ci#define GSC_IRQ				0x08
2462306a36Sopenharmony_ci#define GSC_IRQ_STATUS_OR_IRQ		(1 << 17)
2562306a36Sopenharmony_ci#define GSC_IRQ_STATUS_FRM_DONE_IRQ	(1 << 16)
2662306a36Sopenharmony_ci#define GSC_IRQ_FRMDONE_MASK		(1 << 1)
2762306a36Sopenharmony_ci#define GSC_IRQ_ENABLE			(1 << 0)
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci/* G-Scaler input control */
3062306a36Sopenharmony_ci#define GSC_IN_CON			0x10
3162306a36Sopenharmony_ci#define GSC_IN_ROT_MASK			(7 << 16)
3262306a36Sopenharmony_ci#define GSC_IN_ROT_270			(7 << 16)
3362306a36Sopenharmony_ci#define GSC_IN_ROT_90_YFLIP		(6 << 16)
3462306a36Sopenharmony_ci#define GSC_IN_ROT_90_XFLIP		(5 << 16)
3562306a36Sopenharmony_ci#define GSC_IN_ROT_90			(4 << 16)
3662306a36Sopenharmony_ci#define GSC_IN_ROT_180			(3 << 16)
3762306a36Sopenharmony_ci#define GSC_IN_ROT_YFLIP		(2 << 16)
3862306a36Sopenharmony_ci#define GSC_IN_ROT_XFLIP		(1 << 16)
3962306a36Sopenharmony_ci#define GSC_IN_RGB_TYPE_MASK		(3 << 14)
4062306a36Sopenharmony_ci#define GSC_IN_RGB_HD_NARROW		(3 << 14)
4162306a36Sopenharmony_ci#define GSC_IN_RGB_HD_WIDE		(2 << 14)
4262306a36Sopenharmony_ci#define GSC_IN_RGB_SD_NARROW		(1 << 14)
4362306a36Sopenharmony_ci#define GSC_IN_RGB_SD_WIDE		(0 << 14)
4462306a36Sopenharmony_ci#define GSC_IN_YUV422_1P_ORDER_MASK	(1 << 13)
4562306a36Sopenharmony_ci#define GSC_IN_YUV422_1P_ORDER_LSB_Y	(0 << 13)
4662306a36Sopenharmony_ci#define GSC_IN_YUV422_1P_OEDER_LSB_C	(1 << 13)
4762306a36Sopenharmony_ci#define GSC_IN_CHROMA_ORDER_MASK	(1 << 12)
4862306a36Sopenharmony_ci#define GSC_IN_CHROMA_ORDER_CBCR	(0 << 12)
4962306a36Sopenharmony_ci#define GSC_IN_CHROMA_ORDER_CRCB	(1 << 12)
5062306a36Sopenharmony_ci#define GSC_IN_FORMAT_MASK		(7 << 8)
5162306a36Sopenharmony_ci#define GSC_IN_XRGB8888			(0 << 8)
5262306a36Sopenharmony_ci#define GSC_IN_RGB565			(1 << 8)
5362306a36Sopenharmony_ci#define GSC_IN_YUV420_2P		(2 << 8)
5462306a36Sopenharmony_ci#define GSC_IN_YUV420_3P		(3 << 8)
5562306a36Sopenharmony_ci#define GSC_IN_YUV422_1P		(4 << 8)
5662306a36Sopenharmony_ci#define GSC_IN_YUV422_2P		(5 << 8)
5762306a36Sopenharmony_ci#define GSC_IN_YUV422_3P		(6 << 8)
5862306a36Sopenharmony_ci#define GSC_IN_TILE_TYPE_MASK		(1 << 4)
5962306a36Sopenharmony_ci#define GSC_IN_TILE_C_16x8		(0 << 4)
6062306a36Sopenharmony_ci#define GSC_IN_TILE_MODE		(1 << 3)
6162306a36Sopenharmony_ci#define GSC_IN_LOCAL_SEL_MASK		(3 << 1)
6262306a36Sopenharmony_ci#define GSC_IN_PATH_MASK		(1 << 0)
6362306a36Sopenharmony_ci#define GSC_IN_PATH_MEMORY		(0 << 0)
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci/* G-Scaler source image size */
6662306a36Sopenharmony_ci#define GSC_SRCIMG_SIZE			0x14
6762306a36Sopenharmony_ci#define GSC_SRCIMG_HEIGHT(x)		((x) << 16)
6862306a36Sopenharmony_ci#define GSC_SRCIMG_WIDTH(x)		((x) << 0)
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci/* G-Scaler source image offset */
7162306a36Sopenharmony_ci#define GSC_SRCIMG_OFFSET		0x18
7262306a36Sopenharmony_ci#define GSC_SRCIMG_OFFSET_Y(x)		((x) << 16)
7362306a36Sopenharmony_ci#define GSC_SRCIMG_OFFSET_X(x)		((x) << 0)
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci/* G-Scaler cropped source image size */
7662306a36Sopenharmony_ci#define GSC_CROPPED_SIZE		0x1c
7762306a36Sopenharmony_ci#define GSC_CROPPED_HEIGHT(x)		((x) << 16)
7862306a36Sopenharmony_ci#define GSC_CROPPED_WIDTH(x)		((x) << 0)
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci/* G-Scaler output control */
8162306a36Sopenharmony_ci#define GSC_OUT_CON			0x20
8262306a36Sopenharmony_ci#define GSC_OUT_GLOBAL_ALPHA_MASK	(0xff << 24)
8362306a36Sopenharmony_ci#define GSC_OUT_GLOBAL_ALPHA(x)		((x) << 24)
8462306a36Sopenharmony_ci#define GSC_OUT_RGB_TYPE_MASK		(3 << 10)
8562306a36Sopenharmony_ci#define GSC_OUT_RGB_HD_WIDE		(3 << 10)
8662306a36Sopenharmony_ci#define GSC_OUT_RGB_HD_NARROW		(2 << 10)
8762306a36Sopenharmony_ci#define GSC_OUT_RGB_SD_WIDE		(1 << 10)
8862306a36Sopenharmony_ci#define GSC_OUT_RGB_SD_NARROW		(0 << 10)
8962306a36Sopenharmony_ci#define GSC_OUT_YUV422_1P_ORDER_MASK	(1 << 9)
9062306a36Sopenharmony_ci#define GSC_OUT_YUV422_1P_ORDER_LSB_Y	(0 << 9)
9162306a36Sopenharmony_ci#define GSC_OUT_YUV422_1P_OEDER_LSB_C	(1 << 9)
9262306a36Sopenharmony_ci#define GSC_OUT_CHROMA_ORDER_MASK	(1 << 8)
9362306a36Sopenharmony_ci#define GSC_OUT_CHROMA_ORDER_CBCR	(0 << 8)
9462306a36Sopenharmony_ci#define GSC_OUT_CHROMA_ORDER_CRCB	(1 << 8)
9562306a36Sopenharmony_ci#define GSC_OUT_FORMAT_MASK		(7 << 4)
9662306a36Sopenharmony_ci#define GSC_OUT_XRGB8888		(0 << 4)
9762306a36Sopenharmony_ci#define GSC_OUT_RGB565			(1 << 4)
9862306a36Sopenharmony_ci#define GSC_OUT_YUV420_2P		(2 << 4)
9962306a36Sopenharmony_ci#define GSC_OUT_YUV420_3P		(3 << 4)
10062306a36Sopenharmony_ci#define GSC_OUT_YUV422_1P		(4 << 4)
10162306a36Sopenharmony_ci#define GSC_OUT_YUV422_2P		(5 << 4)
10262306a36Sopenharmony_ci#define GSC_OUT_YUV444			(7 << 4)
10362306a36Sopenharmony_ci#define GSC_OUT_TILE_TYPE_MASK		(1 << 2)
10462306a36Sopenharmony_ci#define GSC_OUT_TILE_C_16x8		(0 << 2)
10562306a36Sopenharmony_ci#define GSC_OUT_TILE_MODE		(1 << 1)
10662306a36Sopenharmony_ci#define GSC_OUT_PATH_MASK		(1 << 0)
10762306a36Sopenharmony_ci#define GSC_OUT_PATH_LOCAL		(1 << 0)
10862306a36Sopenharmony_ci#define GSC_OUT_PATH_MEMORY		(0 << 0)
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci/* G-Scaler scaled destination image size */
11162306a36Sopenharmony_ci#define GSC_SCALED_SIZE			0x24
11262306a36Sopenharmony_ci#define GSC_SCALED_HEIGHT(x)		((x) << 16)
11362306a36Sopenharmony_ci#define GSC_SCALED_WIDTH(x)		((x) << 0)
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci/* G-Scaler pre scale ratio */
11662306a36Sopenharmony_ci#define GSC_PRE_SCALE_RATIO		0x28
11762306a36Sopenharmony_ci#define GSC_PRESC_SHFACTOR(x)		((x) << 28)
11862306a36Sopenharmony_ci#define GSC_PRESC_V_RATIO(x)		((x) << 16)
11962306a36Sopenharmony_ci#define GSC_PRESC_H_RATIO(x)		((x) << 0)
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci/* G-Scaler main scale horizontal ratio */
12262306a36Sopenharmony_ci#define GSC_MAIN_H_RATIO		0x2c
12362306a36Sopenharmony_ci#define GSC_MAIN_H_RATIO_VALUE(x)	((x) << 0)
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci/* G-Scaler main scale vertical ratio */
12662306a36Sopenharmony_ci#define GSC_MAIN_V_RATIO		0x30
12762306a36Sopenharmony_ci#define GSC_MAIN_V_RATIO_VALUE(x)	((x) << 0)
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci/* G-Scaler destination image size */
13062306a36Sopenharmony_ci#define GSC_DSTIMG_SIZE			0x40
13162306a36Sopenharmony_ci#define GSC_DSTIMG_HEIGHT(x)		((x) << 16)
13262306a36Sopenharmony_ci#define GSC_DSTIMG_WIDTH(x)		((x) << 0)
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci/* G-Scaler destination image offset */
13562306a36Sopenharmony_ci#define GSC_DSTIMG_OFFSET		0x44
13662306a36Sopenharmony_ci#define GSC_DSTIMG_OFFSET_Y(x)		((x) << 16)
13762306a36Sopenharmony_ci#define GSC_DSTIMG_OFFSET_X(x)		((x) << 0)
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci/* G-Scaler input y address mask */
14062306a36Sopenharmony_ci#define GSC_IN_BASE_ADDR_Y_MASK		0x4c
14162306a36Sopenharmony_ci/* G-Scaler input y base address */
14262306a36Sopenharmony_ci#define GSC_IN_BASE_ADDR_Y(n)		(0x50 + (n) * 0x4)
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci/* G-Scaler input cb address mask */
14562306a36Sopenharmony_ci#define GSC_IN_BASE_ADDR_CB_MASK	0x7c
14662306a36Sopenharmony_ci/* G-Scaler input cb base address */
14762306a36Sopenharmony_ci#define GSC_IN_BASE_ADDR_CB(n)		(0x80 + (n) * 0x4)
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci/* G-Scaler input cr address mask */
15062306a36Sopenharmony_ci#define GSC_IN_BASE_ADDR_CR_MASK	0xac
15162306a36Sopenharmony_ci/* G-Scaler input cr base address */
15262306a36Sopenharmony_ci#define GSC_IN_BASE_ADDR_CR(n)		(0xb0 + (n) * 0x4)
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci/* G-Scaler output y address mask */
15562306a36Sopenharmony_ci#define GSC_OUT_BASE_ADDR_Y_MASK	0x10c
15662306a36Sopenharmony_ci/* G-Scaler output y base address */
15762306a36Sopenharmony_ci#define GSC_OUT_BASE_ADDR_Y(n)		(0x110 + (n) * 0x4)
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci/* G-Scaler output cb address mask */
16062306a36Sopenharmony_ci#define GSC_OUT_BASE_ADDR_CB_MASK	0x15c
16162306a36Sopenharmony_ci/* G-Scaler output cb base address */
16262306a36Sopenharmony_ci#define GSC_OUT_BASE_ADDR_CB(n)		(0x160 + (n) * 0x4)
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ci/* G-Scaler output cr address mask */
16562306a36Sopenharmony_ci#define GSC_OUT_BASE_ADDR_CR_MASK	0x1ac
16662306a36Sopenharmony_ci/* G-Scaler output cr base address */
16762306a36Sopenharmony_ci#define GSC_OUT_BASE_ADDR_CR(n)		(0x1b0 + (n) * 0x4)
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci#endif /* REGS_GSC_H_ */
170