1/*- 2 * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 21 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $FreeBSD$ 27 */ 28 29/* 30 * Ingenic JZ4780 LCD Controller 31 */ 32 33#ifndef __JZ4780_LCD_H__ 34#define __JZ4780_LCD_H__ 35 36#define LCDCFG 0x0000 37#define LCDCFG_LCDPIN (1 << 31) 38#define LCDCFG_TVEPEH (1 << 30) 39#define LCDCFG_NEWDES (1 << 28) 40#define LCDCFG_PALBP (1 << 27) 41#define LCDCFG_TVEN (1 << 26) 42#define LCDCFG_RECOVER (1 << 25) 43#define LCDCFG_PSM (1 << 23) 44#define LCDCFG_CLSM (1 << 22) 45#define LCDCFG_SPLM (1 << 21) 46#define LCDCFG_REVM (1 << 20) 47#define LCDCFG_HSYNM (1 << 19) 48#define LCDCFG_VSYNM (1 << 18) 49#define LCDCFG_INVDAT (1 << 17) 50#define LCDCFG_SYNDIR (1 << 16) 51#define LCDCFG_PSP (1 << 15) 52#define LCDCFG_CLSP (1 << 14) 53#define LCDCFG_SPLP (1 << 13) 54#define LCDCFG_REVP (1 << 12) 55#define LCDCFG_HSP (1 << 11) 56#define LCDCFG_PCP (1 << 10) 57#define LCDCFG_DEP (1 << 9) 58#define LCDCFG_VSP (1 << 8) 59#define LCDCFG_18_16 (1 << 7) 60#define LCDCFG_24 (1 << 6) 61#define LCDCFG_MODE (0xf << 0) 62#define LCDCTRL 0x0030 63#define LCDCTRL_PINMD (1 << 31) 64#define LCDCTRL_BST (0x7 << 28) 65#define LCDCTRL_BST_4 (0 << 28) 66#define LCDCTRL_BST_8 (1 << 28) 67#define LCDCTRL_BST_16 (2 << 28) 68#define LCDCTRL_BST_32 (3 << 28) 69#define LCDCTRL_BST_64 (4 << 28) 70#define LCDCTRL_OUTRGB (1 << 27) 71#define LCDCTRL_OFUP (1 << 26) 72#define LCDCTRL_DACTE (1 << 14) 73#define LCDCTRL_EOFM (1 << 13) 74#define LCDCTRL_SOFM (1 << 12) 75#define LCDCTRL_OFUM (1 << 11) 76#define LCDCTRL_IFUM0 (1 << 10) 77#define LCDCTRL_IFUM1 (1 << 9) 78#define LCDCTRL_LDDM (1 << 8) 79#define LCDCTRL_QDM (1 << 7) 80#define LCDCTRL_BEDN (1 << 6) 81#define LCDCTRL_PEDN (1 << 5) 82#define LCDCTRL_DIS (1 << 4) 83#define LCDCTRL_ENA (1 << 3) 84#define LCDCTRL_BPP0 (0x7 << 0) 85#define LCDCTRL_BPP0_1 (0 << 0) 86#define LCDCTRL_BPP0_2 (1 << 0) 87#define LCDCTRL_BPP0_4 (2 << 0) 88#define LCDCTRL_BPP0_8 (3 << 0) 89#define LCDCTRL_BPP0_15_16 (4 << 0) 90#define LCDCTRL_BPP0_18_24 (5 << 0) 91#define LCDCTRL_BPP0_24_COMP (6 << 0) 92#define LCDCTRL_BPP0_30 (7 << 0) 93#define LCDCTR 94#define LCDSTATE 0x0034 95#define LCDSTATE_QD (1 << 7) 96#define LCDSTATE_EOF (1 << 5) 97#define LCDSTATE_SOF (1 << 4) 98#define LCDSTATE_OUT (1 << 3) 99#define LCDSTATE_IFU0 (1 << 2) 100#define LCDSTATE_IFU1 (1 << 1) 101#define LCDSTATE_LDD (1 << 0) 102#define LCDOSDC 0x0100 103#define LCDOSDCTRL 0x0104 104#define LCDOSDS 0x0108 105#define LCDBGC0 0x010c 106#define LCDBGC1 0x02c4 107#define LCDKEY0 0x0110 108#define LCDKEY1 0x0114 109#define LCDALPHA 0x0118 110#define LCDIPUR 0x011c 111#define LCDRGBC 0x0090 112#define LCDRGBC_RGBDM (1 << 15) 113#define LCDRGBC_DMM (1 << 14) 114#define LCDRGBC_422 (1 << 8) 115#define LCDRGBC_RGBFMT (1 << 7) 116#define LCDRGBC_ODDRGB (0x7 << 4) 117#define LCDRGBC_EVENRGB (0x7 << 0) 118#define LCDVAT 0x000c 119#define LCDVAT_HT_SHIFT 16 120#define LCDVAT_VT_SHIFT 0 121#define LCDDAH 0x0010 122#define LCDDAH_HDS_SHIFT 16 123#define LCDDAH_HDE_SHIFT 0 124#define LCDDAV 0x0014 125#define LCDDAV_VDS_SHIFT 16 126#define LCDDAV_VDE_SHIFT 0 127#define LCDXYP0 0x0120 128#define LCDXYP1 0x0124 129#define LCDSIZE0 0x0128 130#define LCDSIZE1 0x012c 131#define LCDVSYNC 0x0004 132#define LCDHSYNC 0x0008 133#define LCDPS 0x0018 134#define LCDCLS 0x001c 135#define LCDSPL 0x0020 136#define LCDREV 0x0024 137#define LCDIID 0x0038 138#define LCDDA0 0x0040 139#define LCDSA0 0x0044 140#define LCDFID0 0x0048 141#define LCDCMD0 0x004c 142#define LCDCMD_SOFINT (1 << 31) 143#define LCDCMD_EOFINT (1 << 30) 144#define LCDCMD_CMD (1 << 29) 145#define LCDCMD_COMPE (1 << 27) 146#define LCDCMD_FRM_EN (1 << 26) 147#define LCDCMD_FIELD_SEL (1 << 25) 148#define LCDCMD_16X16BLOCK (1 << 24) 149#define LCDCMD_LEN (0xffffff << 0) 150#define LCDOFFS0 0x0060 151#define LCDPW0 0x0064 152#define LCDCNUM0 0x0068 153#define LCDPOS0 LCDCNUM0 154#define LCDPOS_ALPHAMD1 (1 << 31) 155#define LCDPOS_RGB01 (1 << 30) 156#define LCDPOS_BPP01 (0x7 << 27) 157#define LCDPOS_BPP01_15_16 (4 << 27) 158#define LCDPOS_BPP01_18_24 (5 << 27) 159#define LCDPOS_BPP01_24_COMP (6 << 27) 160#define LCDPOS_BPP01_30 (7 << 27) 161#define LCDPOS_PREMULTI01 (1 << 26) 162#define LCDPOS_COEF_SLE01 (0x3 << 24) 163#define LCDPOS_COEF_BLE01_1 (1 << 24) 164#define LCDPOS_YPOS01 (0xfff << 12) 165#define LCDPOS_XPOS01 (0xfff << 0) 166#define LCDDESSIZE0 0x006c 167#define LCDDESSIZE_ALPHA (0xff << 24) 168#define LCDDESSIZE_HEIGHT (0xfff << 12) 169#define LCDDESSIZE_HEIGHT_SHIFT 12 170#define LCDDESSIZE_WIDTH (0xfff << 0) 171#define LCDDESSIZE_WIDTH_SHIFT 0 172#define LCDDA1 0x0050 173#define LCDSA1 0x0054 174#define LCDFID1 0x0058 175#define LCDCMD1 0x005c 176#define LCDOFFS1 0x0070 177#define LCDPW1 0x0074 178#define LCDCNUM1 0x0078 179#define LCDPOS1 LCDCNUM1 180#define LCDDESSIZE1 0x007c 181#define LCDPCFG 0x02c0 182#define LCDDUALCTRL 0x02c8 183#define LCDENH_CFG 0x0400 184#define LCDENH_CSCCFG 0x0404 185#define LCDENH_LUMACFG 0x0408 186#define LCDENH_CHROCFG0 0x040c 187#define LCDENH_CHROCFG1 0x0410 188#define LCDENH_DITHERCFG 0x0414 189#define LCDENH_STATUS 0x0418 190#define LCDENH_GAMMA 0x0800 /* base */ 191#define LCDENH_VEE 0x1000 /* base */ 192 193struct lcd_frame_descriptor { 194 uint32_t next; 195 uint32_t physaddr; 196 uint32_t id; 197 uint32_t cmd; 198 uint32_t offs; 199 uint32_t pw; 200 uint32_t cnum_pos; 201 uint32_t dessize; 202} __packed; 203 204#endif /* !__JZ4780_LCD_H__ */ 205