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