xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-sunxi/display2.h (revision d2e1ee686ab16c022d1a3049a35b4ce89a25d34e)
156009451SJernej Skrabec /*
256009451SJernej Skrabec  * Sunxi platform display controller register and constant defines
356009451SJernej Skrabec  *
456009451SJernej Skrabec  * (C) Copyright 2017 Jernej Skrabec <jernej.skrabec@siol.net>
556009451SJernej Skrabec  *
656009451SJernej Skrabec  * Based on out of tree Linux DRM driver defines:
756009451SJernej Skrabec  * Copyright (C) 2016 Jean-Francois Moine <moinejf@free.fr>
856009451SJernej Skrabec  * Copyright (c) 2016 Allwinnertech Co., Ltd.
956009451SJernej Skrabec *
1056009451SJernej Skrabec  * SPDX-License-Identifier:	GPL-2.0+
1156009451SJernej Skrabec  */
1256009451SJernej Skrabec 
1356009451SJernej Skrabec #ifndef _SUNXI_DISPLAY2_H
1456009451SJernej Skrabec #define _SUNXI_DISPLAY2_H
1556009451SJernej Skrabec 
1656009451SJernej Skrabec /* internal clock settings */
1756009451SJernej Skrabec struct de_clk {
1856009451SJernej Skrabec 	u32 gate_cfg;
1956009451SJernej Skrabec 	u32 bus_cfg;
2056009451SJernej Skrabec 	u32 rst_cfg;
2156009451SJernej Skrabec 	u32 div_cfg;
2256009451SJernej Skrabec 	u32 sel_cfg;
2356009451SJernej Skrabec };
2456009451SJernej Skrabec 
2556009451SJernej Skrabec /* global control */
2656009451SJernej Skrabec struct de_glb {
2756009451SJernej Skrabec 	u32 ctl;
2856009451SJernej Skrabec 	u32 status;
2956009451SJernej Skrabec 	u32 dbuff;
3056009451SJernej Skrabec 	u32 size;
3156009451SJernej Skrabec };
3256009451SJernej Skrabec 
3356009451SJernej Skrabec /* alpha blending */
3456009451SJernej Skrabec struct de_bld {
3556009451SJernej Skrabec 	u32 fcolor_ctl;
3656009451SJernej Skrabec 	struct {
3756009451SJernej Skrabec 		u32 fcolor;
3856009451SJernej Skrabec 		u32 insize;
3956009451SJernej Skrabec 		u32 offset;
4056009451SJernej Skrabec 		u32 dum;
4156009451SJernej Skrabec 	} attr[4];
4256009451SJernej Skrabec 	u32 dum0[15];
4356009451SJernej Skrabec 	u32 route;
4456009451SJernej Skrabec 	u32 premultiply;
4556009451SJernej Skrabec 	u32 bkcolor;
4656009451SJernej Skrabec 	u32 output_size;
4756009451SJernej Skrabec 	u32 bld_mode[4];
4856009451SJernej Skrabec 	u32 dum1[4];
4956009451SJernej Skrabec 	u32 ck_ctl;
5056009451SJernej Skrabec 	u32 ck_cfg;
5156009451SJernej Skrabec 	u32 dum2[2];
5256009451SJernej Skrabec 	u32 ck_max[4];
5356009451SJernej Skrabec 	u32 dum3[4];
5456009451SJernej Skrabec 	u32 ck_min[4];
5556009451SJernej Skrabec 	u32 dum4[3];
5656009451SJernej Skrabec 	u32 out_ctl;
5756009451SJernej Skrabec };
5856009451SJernej Skrabec 
5956009451SJernej Skrabec /* VI channel */
6056009451SJernej Skrabec struct de_vi {
6156009451SJernej Skrabec 	struct {
6256009451SJernej Skrabec 		u32 attr;
6356009451SJernej Skrabec 		u32 size;
6456009451SJernej Skrabec 		u32 coord;
6556009451SJernej Skrabec 		u32 pitch[3];
6656009451SJernej Skrabec 		u32 top_laddr[3];
6756009451SJernej Skrabec 		u32 bot_laddr[3];
6856009451SJernej Skrabec 	} cfg[4];
6956009451SJernej Skrabec 	u32 fcolor[4];
7056009451SJernej Skrabec 	u32 top_haddr[3];
7156009451SJernej Skrabec 	u32 bot_haddr[3];
7256009451SJernej Skrabec 	u32 ovl_size[2];
7356009451SJernej Skrabec 	u32 hori[2];
7456009451SJernej Skrabec 	u32 vert[2];
7556009451SJernej Skrabec };
7656009451SJernej Skrabec 
7756009451SJernej Skrabec struct de_ui {
7856009451SJernej Skrabec 	struct {
7956009451SJernej Skrabec 		u32 attr;
8056009451SJernej Skrabec 		u32 size;
8156009451SJernej Skrabec 		u32 coord;
8256009451SJernej Skrabec 		u32 pitch;
8356009451SJernej Skrabec 		u32 top_laddr;
8456009451SJernej Skrabec 		u32 bot_laddr;
8556009451SJernej Skrabec 		u32 fcolor;
8656009451SJernej Skrabec 		u32 dum;
8756009451SJernej Skrabec 	} cfg[4];
8856009451SJernej Skrabec 	u32 top_haddr;
8956009451SJernej Skrabec 	u32 bot_haddr;
9056009451SJernej Skrabec 	u32 ovl_size;
9156009451SJernej Skrabec };
9256009451SJernej Skrabec 
93*b98efa1dSJernej Skrabec struct de_csc {
94*b98efa1dSJernej Skrabec 	u32 csc_ctl;
95*b98efa1dSJernej Skrabec 	u8 res[0xc];
96*b98efa1dSJernej Skrabec 	u32 coef11;
97*b98efa1dSJernej Skrabec 	u32 coef12;
98*b98efa1dSJernej Skrabec 	u32 coef13;
99*b98efa1dSJernej Skrabec 	u32 coef14;
100*b98efa1dSJernej Skrabec 	u32 coef21;
101*b98efa1dSJernej Skrabec 	u32 coef22;
102*b98efa1dSJernej Skrabec 	u32 coef23;
103*b98efa1dSJernej Skrabec 	u32 coef24;
104*b98efa1dSJernej Skrabec 	u32 coef31;
105*b98efa1dSJernej Skrabec 	u32 coef32;
106*b98efa1dSJernej Skrabec 	u32 coef33;
107*b98efa1dSJernej Skrabec 	u32 coef34;
108*b98efa1dSJernej Skrabec };
109*b98efa1dSJernej Skrabec 
11056009451SJernej Skrabec /*
11156009451SJernej Skrabec  * DE register constants.
11256009451SJernej Skrabec  */
11356009451SJernej Skrabec #define SUNXI_DE2_MUX0_BASE			(SUNXI_DE2_BASE + 0x100000)
11456009451SJernej Skrabec #define SUNXI_DE2_MUX1_BASE			(SUNXI_DE2_BASE + 0x200000)
11556009451SJernej Skrabec 
11656009451SJernej Skrabec #define SUNXI_DE2_MUX_GLB_REGS			0x00000
11756009451SJernej Skrabec #define SUNXI_DE2_MUX_BLD_REGS			0x01000
11856009451SJernej Skrabec #define SUNXI_DE2_MUX_CHAN_REGS			0x02000
11956009451SJernej Skrabec #define SUNXI_DE2_MUX_CHAN_SZ			0x1000
12056009451SJernej Skrabec #define SUNXI_DE2_MUX_VSU_REGS			0x20000
12156009451SJernej Skrabec #define SUNXI_DE2_MUX_GSU1_REGS			0x30000
12256009451SJernej Skrabec #define SUNXI_DE2_MUX_GSU2_REGS			0x40000
12356009451SJernej Skrabec #define SUNXI_DE2_MUX_GSU3_REGS			0x50000
12456009451SJernej Skrabec #define SUNXI_DE2_MUX_FCE_REGS			0xa0000
12556009451SJernej Skrabec #define SUNXI_DE2_MUX_BWS_REGS			0xa2000
12656009451SJernej Skrabec #define SUNXI_DE2_MUX_LTI_REGS			0xa4000
12756009451SJernej Skrabec #define SUNXI_DE2_MUX_PEAK_REGS			0xa6000
12856009451SJernej Skrabec #define SUNXI_DE2_MUX_ASE_REGS			0xa8000
12956009451SJernej Skrabec #define SUNXI_DE2_MUX_FCC_REGS			0xaa000
13056009451SJernej Skrabec #define SUNXI_DE2_MUX_DCSC_REGS			0xb0000
13156009451SJernej Skrabec 
13256009451SJernej Skrabec #define SUNXI_DE2_FORMAT_XRGB_8888		4
13356009451SJernej Skrabec #define SUNXI_DE2_FORMAT_RGB_565		10
13456009451SJernej Skrabec 
13556009451SJernej Skrabec #define SUNXI_DE2_MUX_GLB_CTL_EN		(1 << 0)
13656009451SJernej Skrabec #define SUNXI_DE2_UI_CFG_ATTR_EN		(1 << 0)
13756009451SJernej Skrabec #define SUNXI_DE2_UI_CFG_ATTR_FMT(f)		((f & 0xf) << 8)
13856009451SJernej Skrabec 
13956009451SJernej Skrabec #define SUNXI_DE2_WH(w, h)			(((h - 1) << 16) | (w - 1))
14056009451SJernej Skrabec 
14156009451SJernej Skrabec #endif /* _SUNXI_DISPLAY2_H */
142