162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Samsung S5P G2D - 2D Graphics Accelerator Driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (c) 2011 Samsung Electronics Co., Ltd.
662306a36Sopenharmony_ci * Kamil Debski, <k.debski@samsung.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/* General Registers */
1062306a36Sopenharmony_ci#define SOFT_RESET_REG		0x0000	/* Software reset reg */
1162306a36Sopenharmony_ci#define INTEN_REG		0x0004	/* Interrupt Enable reg */
1262306a36Sopenharmony_ci#define INTC_PEND_REG		0x000C	/* Interrupt Control Pending reg */
1362306a36Sopenharmony_ci#define FIFO_STAT_REG		0x0010	/* Command FIFO Status reg */
1462306a36Sopenharmony_ci#define AXI_ID_MODE_REG		0x0014	/* AXI Read ID Mode reg */
1562306a36Sopenharmony_ci#define CACHECTL_REG		0x0018	/* Cache & Buffer clear reg */
1662306a36Sopenharmony_ci#define AXI_MODE_REG		0x001C	/* AXI Mode reg */
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* Command Registers */
1962306a36Sopenharmony_ci#define BITBLT_START_REG	0x0100	/* BitBLT Start reg */
2062306a36Sopenharmony_ci#define BITBLT_COMMAND_REG	0x0104	/* Command reg for BitBLT */
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/* Parameter Setting Registers (Rotate & Direction) */
2362306a36Sopenharmony_ci#define ROTATE_REG		0x0200	/* Rotation reg */
2462306a36Sopenharmony_ci#define SRC_MSK_DIRECT_REG	0x0204	/* Src and Mask Direction reg */
2562306a36Sopenharmony_ci#define DST_PAT_DIRECT_REG	0x0208	/* Dest and Pattern Direction reg */
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci/* Parameter Setting Registers (Src) */
2862306a36Sopenharmony_ci#define SRC_SELECT_REG		0x0300	/* Src Image Selection reg */
2962306a36Sopenharmony_ci#define SRC_BASE_ADDR_REG	0x0304	/* Src Image Base Address reg */
3062306a36Sopenharmony_ci#define SRC_STRIDE_REG		0x0308	/* Src Stride reg */
3162306a36Sopenharmony_ci#define SRC_COLOR_MODE_REG	0x030C	/* Src Image Color Mode reg */
3262306a36Sopenharmony_ci#define SRC_LEFT_TOP_REG	0x0310	/* Src Left Top Coordinate reg */
3362306a36Sopenharmony_ci#define SRC_RIGHT_BOTTOM_REG	0x0314	/* Src Right Bottom Coordinate reg */
3462306a36Sopenharmony_ci#define SRC_SCALE_CTRL_REG	0x0328	/* Src Scaling type select */
3562306a36Sopenharmony_ci#define SRC_XSCALE_REG		0x032c	/* Src X Scaling ratio */
3662306a36Sopenharmony_ci#define SRC_YSCALE_REG		0x0330	/* Src Y Scaling ratio */
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci/* Parameter Setting Registers (Dest) */
3962306a36Sopenharmony_ci#define DST_SELECT_REG		0x0400	/* Dest Image Selection reg */
4062306a36Sopenharmony_ci#define DST_BASE_ADDR_REG	0x0404	/* Dest Image Base Address reg */
4162306a36Sopenharmony_ci#define DST_STRIDE_REG		0x0408	/* Dest Stride reg */
4262306a36Sopenharmony_ci#define DST_COLOR_MODE_REG	0x040C	/* Dest Image Color Mode reg */
4362306a36Sopenharmony_ci#define DST_LEFT_TOP_REG	0x0410	/* Dest Left Top Coordinate reg */
4462306a36Sopenharmony_ci#define DST_RIGHT_BOTTOM_REG	0x0414	/* Dest Right Bottom Coordinate reg */
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci/* Parameter Setting Registers (Pattern) */
4762306a36Sopenharmony_ci#define PAT_BASE_ADDR_REG	0x0500	/* Pattern Image Base Address reg */
4862306a36Sopenharmony_ci#define PAT_SIZE_REG		0x0504	/* Pattern Image Size reg */
4962306a36Sopenharmony_ci#define PAT_COLOR_MODE_REG	0x0508	/* Pattern Image Color Mode reg */
5062306a36Sopenharmony_ci#define PAT_OFFSET_REG		0x050C	/* Pattern Left Top Coordinate reg */
5162306a36Sopenharmony_ci#define PAT_STRIDE_REG		0x0510	/* Pattern Stride reg */
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci/* Parameter Setting Registers (Mask) */
5462306a36Sopenharmony_ci#define MASK_BASE_ADDR_REG	0x0520	/* Mask Base Address reg */
5562306a36Sopenharmony_ci#define MASK_STRIDE_REG		0x0524	/* Mask Stride reg */
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci/* Parameter Setting Registers (Clipping Window) */
5862306a36Sopenharmony_ci#define CW_LT_REG		0x0600	/* LeftTop coordinates of Clip Window */
5962306a36Sopenharmony_ci#define CW_RB_REG		0x0604	/* RightBottom coordinates of Clip
6062306a36Sopenharmony_ci								Window */
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci/* Parameter Setting Registers (ROP & Alpha Setting) */
6362306a36Sopenharmony_ci#define THIRD_OPERAND_REG	0x0610	/* Third Operand Selection reg */
6462306a36Sopenharmony_ci#define ROP4_REG		0x0614	/* Raster Operation reg */
6562306a36Sopenharmony_ci#define ALPHA_REG		0x0618	/* Alpha value, Fading offset value */
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci/* Parameter Setting Registers (Color) */
6862306a36Sopenharmony_ci#define FG_COLOR_REG		0x0700	/* Foreground Color reg */
6962306a36Sopenharmony_ci#define BG_COLOR_REG		0x0704	/* Background Color reg */
7062306a36Sopenharmony_ci#define BS_COLOR_REG		0x0708	/* Blue Screen Color reg */
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci/* Parameter Setting Registers (Color Key) */
7362306a36Sopenharmony_ci#define SRC_COLORKEY_CTRL_REG	0x0710	/* Src Colorkey control reg */
7462306a36Sopenharmony_ci#define SRC_COLORKEY_DR_MIN_REG	0x0714	/* Src Colorkey Decision Reference
7562306a36Sopenharmony_ci								Min reg */
7662306a36Sopenharmony_ci#define SRC_COLORKEY_DR_MAX_REG	0x0718	/* Src Colorkey Decision Reference
7762306a36Sopenharmony_ci								Max reg */
7862306a36Sopenharmony_ci#define DST_COLORKEY_CTRL_REG	0x071C	/* Dest Colorkey control reg */
7962306a36Sopenharmony_ci#define DST_COLORKEY_DR_MIN_REG	0x0720	/* Dest Colorkey Decision Reference
8062306a36Sopenharmony_ci								Min reg */
8162306a36Sopenharmony_ci#define DST_COLORKEY_DR_MAX_REG	0x0724	/* Dest Colorkey Decision Reference
8262306a36Sopenharmony_ci								Max reg */
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci/* Color mode values */
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci#define ORDER_XRGB		0
8762306a36Sopenharmony_ci#define ORDER_RGBX		1
8862306a36Sopenharmony_ci#define ORDER_XBGR		2
8962306a36Sopenharmony_ci#define ORDER_BGRX		3
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci#define MODE_XRGB_8888		0
9262306a36Sopenharmony_ci#define MODE_ARGB_8888		1
9362306a36Sopenharmony_ci#define MODE_RGB_565		2
9462306a36Sopenharmony_ci#define MODE_XRGB_1555		3
9562306a36Sopenharmony_ci#define MODE_ARGB_1555		4
9662306a36Sopenharmony_ci#define MODE_XRGB_4444		5
9762306a36Sopenharmony_ci#define MODE_ARGB_4444		6
9862306a36Sopenharmony_ci#define MODE_PACKED_RGB_888	7
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci#define COLOR_MODE(o, m)	(((o) << 4) | (m))
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci/* ROP4 operation values */
10362306a36Sopenharmony_ci#define ROP4_COPY		0xCCCC
10462306a36Sopenharmony_ci#define ROP4_INVERT		0x3333
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci/* Hardware limits */
10762306a36Sopenharmony_ci#define MAX_WIDTH		8000
10862306a36Sopenharmony_ci#define MAX_HEIGHT		8000
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci#define G2D_TIMEOUT		500
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci#define DEFAULT_WIDTH		100
11362306a36Sopenharmony_ci#define DEFAULT_HEIGHT		100
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci#define DEFAULT_SCALE_MODE	(2 << 0)
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci/* Command mode register values */
11862306a36Sopenharmony_ci#define CMD_V3_ENABLE_STRETCH	(1 << 4)
119