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