2 * Copyright (c) 2016 Jared McNeill <jmcneill@invisible.ca>
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
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.
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
30 * Ingenic JZ4780 LCD Controller
33 #ifndef __JZ4780_LCD_H__
34 #define __JZ4780_LCD_H__
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)
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
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 */
193 struct lcd_frame_descriptor {
204 #endif /* !__JZ4780_LCD_H__ */