/* SPDX-License-Identifier: GPL-2.0+ */ /* * Sunxi platform display controller register and constant defines * * (C) Copyright 2017 Jernej Skrabec * * Based on out of tree Linux DRM driver defines: * Copyright (C) 2016 Jean-Francois Moine * Copyright (c) 2016 Allwinnertech Co., Ltd. */ #ifndef _SUNXI_DISPLAY2_H #define _SUNXI_DISPLAY2_H /* internal clock settings */ struct de_clk { u32 gate_cfg; u32 bus_cfg; u32 rst_cfg; u32 div_cfg; u32 sel_cfg; }; /* global control */ struct de_glb { u32 ctl; u32 status; u32 dbuff; u32 size; }; /* alpha blending */ struct de_bld { u32 fcolor_ctl; struct { u32 fcolor; u32 insize; u32 offset; u32 dum; } attr[4]; u32 dum0[15]; u32 route; u32 premultiply; u32 bkcolor; u32 output_size; u32 bld_mode[4]; u32 dum1[4]; u32 ck_ctl; u32 ck_cfg; u32 dum2[2]; u32 ck_max[4]; u32 dum3[4]; u32 ck_min[4]; u32 dum4[3]; u32 out_ctl; }; /* VI channel */ struct de_vi { struct { u32 attr; u32 size; u32 coord; u32 pitch[3]; u32 top_laddr[3]; u32 bot_laddr[3]; } cfg[4]; u32 fcolor[4]; u32 top_haddr[3]; u32 bot_haddr[3]; u32 ovl_size[2]; u32 hori[2]; u32 vert[2]; }; struct de_ui { struct { u32 attr; u32 size; u32 coord; u32 pitch; u32 top_laddr; u32 bot_laddr; u32 fcolor; u32 dum; } cfg[4]; u32 top_haddr; u32 bot_haddr; u32 ovl_size; }; struct de_csc { u32 csc_ctl; u8 res[0xc]; u32 coef11; u32 coef12; u32 coef13; u32 coef14; u32 coef21; u32 coef22; u32 coef23; u32 coef24; u32 coef31; u32 coef32; u32 coef33; u32 coef34; }; /* * DE register constants. */ #define SUNXI_DE2_MUX0_BASE (SUNXI_DE2_BASE + 0x100000) #define SUNXI_DE2_MUX1_BASE (SUNXI_DE2_BASE + 0x200000) #define SUNXI_DE2_MUX_GLB_REGS 0x00000 #define SUNXI_DE2_MUX_BLD_REGS 0x01000 #define SUNXI_DE2_MUX_CHAN_REGS 0x02000 #define SUNXI_DE2_MUX_CHAN_SZ 0x1000 #define SUNXI_DE2_MUX_VSU_REGS 0x20000 #define SUNXI_DE2_MUX_GSU1_REGS 0x30000 #define SUNXI_DE2_MUX_GSU2_REGS 0x40000 #define SUNXI_DE2_MUX_GSU3_REGS 0x50000 #define SUNXI_DE2_MUX_FCE_REGS 0xa0000 #define SUNXI_DE2_MUX_BWS_REGS 0xa2000 #define SUNXI_DE2_MUX_LTI_REGS 0xa4000 #define SUNXI_DE2_MUX_PEAK_REGS 0xa6000 #define SUNXI_DE2_MUX_ASE_REGS 0xa8000 #define SUNXI_DE2_MUX_FCC_REGS 0xaa000 #define SUNXI_DE2_MUX_DCSC_REGS 0xb0000 #define SUNXI_DE2_FORMAT_XRGB_8888 4 #define SUNXI_DE2_FORMAT_RGB_565 10 #define SUNXI_DE2_MUX_GLB_CTL_EN (1 << 0) #define SUNXI_DE2_UI_CFG_ATTR_EN (1 << 0) #define SUNXI_DE2_UI_CFG_ATTR_FMT(f) ((f & 0xf) << 8) #define SUNXI_DE2_WH(w, h) (((h - 1) << 16) | (w - 1)) #endif /* _SUNXI_DISPLAY2_H */