tx3912videoreg.h revision 1.6 1 1.6 martin /* $NetBSD: tx3912videoreg.h,v 1.6 2008/04/28 20:23:21 martin Exp $ */
2 1.1 uch
3 1.3 uch /*-
4 1.5 uch * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
5 1.5 uch * All rights reserved.
6 1.5 uch *
7 1.5 uch * This code is derived from software contributed to The NetBSD Foundation
8 1.5 uch * by UCHIYAMA Yasushi.
9 1.1 uch *
10 1.1 uch * Redistribution and use in source and binary forms, with or without
11 1.1 uch * modification, are permitted provided that the following conditions
12 1.1 uch * are met:
13 1.1 uch * 1. Redistributions of source code must retain the above copyright
14 1.1 uch * notice, this list of conditions and the following disclaimer.
15 1.3 uch * 2. Redistributions in binary form must reproduce the above copyright
16 1.3 uch * notice, this list of conditions and the following disclaimer in the
17 1.3 uch * documentation and/or other materials provided with the distribution.
18 1.1 uch *
19 1.5 uch * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 1.5 uch * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 1.5 uch * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 1.5 uch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 1.5 uch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 1.5 uch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 1.5 uch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 1.5 uch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 1.5 uch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 1.5 uch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 1.5 uch * POSSIBILITY OF SUCH DAMAGE.
30 1.1 uch */
31 1.1 uch /*
32 1.1 uch * TOSHIBA TMPR3912/05, Philips PR31700 Video module register
33 1.1 uch */
34 1.3 uch #define TX3912_VIDEOCTRL1_REG 0x28
35 1.3 uch #define TX3912_VIDEOCTRL2_REG 0x2c
36 1.3 uch #define TX3912_VIDEOCTRL3_REG 0x30
37 1.3 uch #define TX3912_VIDEOCTRL4_REG 0x34
38 1.3 uch #define TX3912_VIDEOCTRL5_REG 0x38
39 1.3 uch #define TX3912_VIDEOCTRL6_REG 0x3c
40 1.3 uch #define TX3912_VIDEOCTRL7_REG 0x40
41 1.3 uch #define TX3912_VIDEOCTRL8_REG 0x44
42 1.3 uch #define TX3912_VIDEOCTRL9_REG 0x48
43 1.3 uch #define TX3912_VIDEOCTRL10_REG 0x4c
44 1.3 uch #define TX3912_VIDEOCTRL11_REG 0x50
45 1.3 uch #define TX3912_VIDEOCTRL12_REG 0x54
46 1.3 uch #define TX3912_VIDEOCTRL13_REG 0x58
47 1.3 uch #define TX3912_VIDEOCTRL14_REG 0x5c
48 1.3 uch
49 1.3 uch #define TX3912_FRAMEBUFFER_ALIGNMENT 16
50 1.3 uch #define TX3912_FRAMEBUFFER_BOUNDARY 0x100000
51 1.3 uch #define TX3912_FRAMEBUFFER_MAX (2048 * 1024 * 8)
52 1.1 uch
53 1.1 uch /*
54 1.1 uch * Video Control 1 Register
55 1.1 uch */
56 1.1 uch /* R */
57 1.1 uch #define TX3912_VIDEOCTRL1_LINECNT_SHIFT 22
58 1.1 uch #define TX3912_VIDEOCTRL1_LINECNT_MASK 0x3ff
59 1.3 uch #define TX3912_VIDEOCTRL1_LINECNT(cr) \
60 1.3 uch (((cr) >> TX3912_VIDEOCTRL1_LINECNT_SHIFT) & \
61 1.1 uch TX3912_VIDEOCTRL1_LINECNT_MASK)
62 1.1 uch /* R/W */
63 1.1 uch #define TX3912_VIDEOCTRL1_LOADDLY 0x00200000
64 1.1 uch /* R/W */
65 1.1 uch /*
66 1.1 uch * CP Rate = 36.864MHz / (BAUDVAL * 2 + 2)
67 1.1 uch */
68 1.1 uch #define TX3912_VIDEOCTRL1_BAUDVAL_SHIFT 16
69 1.1 uch #define TX3912_VIDEOCTRL1_BAUDVAL_MASK 0x1f
70 1.3 uch #define TX3912_VIDEOCTRL1_BAUDVAL(cr) \
71 1.3 uch (((cr) >> TX3912_VIDEOCTRL1_BAUDVAL_SHIFT) & \
72 1.1 uch TX3912_VIDEOCTRL1_BAUDVAL_MASK)
73 1.3 uch #define TX3912_VIDEOCTRL1_BAUDVAL_SET(cr, val) \
74 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL1_BAUDVAL_SHIFT) & \
75 1.1 uch (TX3912_VIDEOCTRL1_BAUDVAL_MASK << TX3912_VIDEOCTRL1_BAUDVAL_SHIFT)))
76 1.1 uch
77 1.1 uch /* R/W */
78 1.1 uch #define TX3912_VIDEOCTRL1_VIDDONEVAL_SHIFT 9
79 1.1 uch #define TX3912_VIDEOCTRL1_VIDDONEVAL_MASK 0x7f
80 1.3 uch #define TX3912_VIDEOCTRL1_VIDDONEVAL(cr) \
81 1.3 uch (((cr) >> TX3912_VIDEOCTRL1_VIDDONEVAL_SHIFT) & \
82 1.1 uch TX3912_VIDEOCTRL1_VIDDONEVAL_MASK)
83 1.3 uch #define TX3912_VIDEOCTRL1_VIDDONEVAL_SET(cr, val) \
84 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL1_VIDDONEVAL_SHIFT) & \
85 1.1 uch (TX3912_VIDEOCTRL1_VIDDONEVAL_MASK << TX3912_VIDEOCTRL1_VIDDONEVAL_SHIFT)))
86 1.1 uch /* R/W */
87 1.1 uch #define TX3912_VIDEOCTRL1_ENFREEZEFRAME 0x00000100
88 1.1 uch /* R/W */
89 1.1 uch #define TX3912_VIDEOCTRL1_BITSEL_SHIFT 6
90 1.1 uch #define TX3912_VIDEOCTRL1_BITSEL_MASK 0x3
91 1.3 uch #define TX3912_VIDEOCTRL1_BITSEL(cr) \
92 1.3 uch (((cr) >> TX3912_VIDEOCTRL1_BITSEL_SHIFT) & \
93 1.1 uch TX3912_VIDEOCTRL1_BITSEL_MASK)
94 1.3 uch #define TX3912_VIDEOCTRL1_BITSEL_CLR(cr) \
95 1.3 uch ((cr) &= ~(TX3912_VIDEOCTRL1_BITSEL_MASK << \
96 1.2 uch TX3912_VIDEOCTRL1_BITSEL_SHIFT))
97 1.3 uch #define TX3912_VIDEOCTRL1_BITSEL_SET(cr, val) \
98 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL1_BITSEL_SHIFT) & \
99 1.1 uch (TX3912_VIDEOCTRL1_BITSEL_MASK << TX3912_VIDEOCTRL1_BITSEL_SHIFT)))
100 1.1 uch #define TX3912_VIDEOCTRL1_BITSEL_8BITCOLOR 0x3
101 1.1 uch #define TX3912_VIDEOCTRL1_BITSEL_4BITGREYSCALE 0x2
102 1.1 uch #define TX3912_VIDEOCTRL1_BITSEL_2BITGREYSCALE 0x1
103 1.1 uch #define TX3912_VIDEOCTRL1_BITSEL_MONOCHROME 0x0
104 1.1 uch /* R/W */
105 1.1 uch #define TX3912_VIDEOCTRL1_DISPSPLIT 0x00000020
106 1.1 uch #define TX3912_VIDEOCTRL1_DISP8 0x00000010
107 1.1 uch #define TX3912_VIDEOCTRL1_DFMODE 0x00000008
108 1.1 uch #define TX3912_VIDEOCTRL1_INVVID 0x00000004
109 1.1 uch #define TX3912_VIDEOCTRL1_DISPON 0x00000002
110 1.1 uch #define TX3912_VIDEOCTRL1_ENVID 0x00000001
111 1.1 uch
112 1.1 uch /*
113 1.1 uch * Video Control 2 Register
114 1.1 uch */
115 1.1 uch /* W */
116 1.1 uch #define TX3912_VIDEOCTRL2_VIDRATE_SHIFT 22
117 1.1 uch #define TX3912_VIDEOCTRL2_VIDRATE_MASK 0x3ff
118 1.3 uch #define TX3912_VIDEOCTRL2_VIDRATE(cr) \
119 1.3 uch (((cr) >> TX3912_VIDEOCTRL2_VIDRATE_SHIFT) & \
120 1.1 uch TX3912_VIDEOCTRL2_VIDRATE_MASK)
121 1.3 uch #define TX3912_VIDEOCTRL2_VIDRATE_SET(cr, val) \
122 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL2_VIDRATE_SHIFT) & \
123 1.1 uch (TX3912_VIDEOCTRL2_VIDRATE_MASK << TX3912_VIDEOCTRL2_VIDRATE_SHIFT)))
124 1.1 uch
125 1.1 uch /* W */
126 1.1 uch /*
127 1.1 uch * HORZVAL = (HorzSize4 - 1) for 4bit split or non-split LCD
128 1.1 uch * HORZVAL = (HorzSize8 - 1) for 8bit non-split LCD
129 1.1 uch */
130 1.1 uch #define TX3912_VIDEOCTRL2_HORZVAL_SHIFT 12
131 1.1 uch #define TX3912_VIDEOCTRL2_HORZVAL_MASK 0x1ff
132 1.3 uch #define TX3912_VIDEOCTRL2_HORZVAL(cr) \
133 1.3 uch (((cr) >> TX3912_VIDEOCTRL2_HORZVAL_SHIFT) & \
134 1.1 uch TX3912_VIDEOCTRL2_HORZVAL_MASK)
135 1.3 uch #define TX3912_VIDEOCTRL2_HORZVAL_SET(cr, val) \
136 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL2_HORZVAL_SHIFT) & \
137 1.1 uch (TX3912_VIDEOCTRL2_HORZVAL_MASK << TX3912_VIDEOCTRL2_HORZVAL_SHIFT)))
138 1.1 uch
139 1.1 uch /* W */
140 1.1 uch /*
141 1.1 uch * LINEVAL = (# of Lines - 1) for a non-split LCD
142 1.1 uch * LINEVAL = (# of Lins2 - 1) for a split LCD
143 1.1 uch */
144 1.1 uch #define TX3912_VIDEOCTRL2_LINEVAL_SHIFT 0
145 1.1 uch #define TX3912_VIDEOCTRL2_LINEVAL_MASK 0x3ff
146 1.3 uch #define TX3912_VIDEOCTRL2_LINEVAL(cr) \
147 1.3 uch (((cr) >> TX3912_VIDEOCTRL2_LINEVAL_SHIFT) & \
148 1.1 uch TX3912_VIDEOCTRL2_LINEVAL_MASK)
149 1.3 uch #define TX3912_VIDEOCTRL2_LINEVAL_SET(cr, val) \
150 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL2_LINEVAL_SHIFT) & \
151 1.1 uch (TX3912_VIDEOCTRL2_LINEVAL_MASK << TX3912_VIDEOCTRL2_LINEVAL_SHIFT)))
152 1.1 uch
153 1.1 uch /*
154 1.1 uch * Video Control 3 Register
155 1.1 uch */
156 1.1 uch /* W */
157 1.1 uch #define TX3912_VIDEOCTRL3_VIDBANK_SHIFT 20
158 1.1 uch #define TX3912_VIDEOCTRL3_VIDBANK_MASK 0xfff
159 1.3 uch #define TX3912_VIDEOCTRL3_VIDBANK(cr) \
160 1.3 uch (((cr) >> TX3912_VIDEOCTRL3_VIDBANK_SHIFT) & \
161 1.1 uch TX3912_VIDEOCTRL3_VIDBANK_MASK)
162 1.3 uch #define TX3912_VIDEOCTRL3_VIDBANK_SET(cr, val) \
163 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL3_VIDBANK_SHIFT) & \
164 1.1 uch (TX3912_VIDEOCTRL3_VIDBANK_MASK << TX3912_VIDEOCTRL3_VIDBANK_SHIFT)))
165 1.1 uch
166 1.1 uch /* W */
167 1.1 uch #define TX3912_VIDEOCTRL3_VIDBASEHI_SHIFT 4
168 1.1 uch #define TX3912_VIDEOCTRL3_VIDBASEHI_MASK 0xffff
169 1.3 uch #define TX3912_VIDEOCTRL3_VIDBASEHI(cr) \
170 1.3 uch (((cr) >> TX3912_VIDEOCTRL3_VIDBASEHI_SHIFT) & \
171 1.1 uch TX3912_VIDEOCTRL3_VIDBASEHI_MASK)
172 1.3 uch #define TX3912_VIDEOCTRL3_VIDBASEHI_SET(cr, val) \
173 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL3_VIDBASEHI_SHIFT) & \
174 1.1 uch (TX3912_VIDEOCTRL3_VIDBASEHI_MASK << TX3912_VIDEOCTRL3_VIDBASEHI_SHIFT)))
175 1.1 uch
176 1.1 uch
177 1.1 uch /*
178 1.1 uch * Video Control 4 Register
179 1.1 uch */
180 1.1 uch /* W */
181 1.1 uch /*
182 1.1 uch * DF Rate = LineRate / (DFVAL + 1)
183 1.1 uch */
184 1.1 uch #define TX3912_VIDEOCTRL4_DFVAL_SHIFT 24
185 1.1 uch #define TX3912_VIDEOCTRL4_DFVAL_MASK 0xff
186 1.3 uch #define TX3912_VIDEOCTRL4_DFVAL(cr) \
187 1.3 uch (((cr) >> TX3912_VIDEOCTRL4_DFVAL_SHIFT) & \
188 1.1 uch TX3912_VIDEOCTRL4_DFVAL_MASK)
189 1.3 uch #define TX3912_VIDEOCTRL4_DFVAL_SET(cr, val) \
190 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL4_DFVAL_SHIFT) & \
191 1.1 uch (TX3912_VIDEOCTRL4_DFVAL_MASK << TX3912_VIDEOCTRL4_DFVAL_SHIFT)))
192 1.1 uch
193 1.1 uch #define TX3912_VIDEOCTRL4_FRAMEMASKVAL_SHIFT 20
194 1.1 uch #define TX3912_VIDEOCTRL4_FRAMEMASKVAL_MASK 0xf
195 1.3 uch #define TX3912_VIDEOCTRL4_FRAMEMASKVAL(cr) \
196 1.3 uch (((cr) >> TX3912_VIDEOCTRL4_FRAMEMASKVAL_SHIFT) & \
197 1.1 uch TX3912_VIDEOCTRL4_FRAMEMASKVAL_MASK)
198 1.3 uch #define TX3912_VIDEOCTRL4_FRAMEMASKVAL_SET(cr, val) \
199 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL4_FRAMEMASKVAL_SHIFT) & \
200 1.1 uch (TX3912_VIDEOCTRL4_FRAMEMASKVAL_MASK << TX3912_VIDEOCTRL4_FRAMEMASKVAL_SHIFT)))
201 1.1 uch
202 1.1 uch #define TX3912_VIDEOCTRL4_VIDBASELO_SHIFT 4
203 1.1 uch #define TX3912_VIDEOCTRL4_VIDBASELO_MASK 0xffff
204 1.3 uch #define TX3912_VIDEOCTRL4_VIDBASELO(cr) \
205 1.3 uch (((cr) >> TX3912_VIDEOCTRL4_VIDBASELO_SHIFT) & \
206 1.1 uch TX3912_VIDEOCTRL4_VIDBASELO_MASK)
207 1.3 uch #define TX3912_VIDEOCTRL4_VIDBASELO_SET(cr, val) \
208 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL4_VIDBASELO_SHIFT) & \
209 1.1 uch (TX3912_VIDEOCTRL4_VIDBASELO_MASK << TX3912_VIDEOCTRL4_VIDBASELO_SHIFT)))
210 1.1 uch
211 1.1 uch /*
212 1.1 uch * Video Control 5 Register
213 1.1 uch */
214 1.1 uch /* W */
215 1.1 uch /*
216 1.1 uch * TX3912_VIDEOCTRL5_REDSEL (31:0)
217 1.1 uch */
218 1.1 uch
219 1.1 uch /*
220 1.1 uch * Video Control 6 Register
221 1.1 uch */
222 1.1 uch /* W */
223 1.1 uch /*
224 1.1 uch * TX3912_VIDEOCTRL6_GREENSEL (31:0)
225 1.1 uch */
226 1.1 uch
227 1.1 uch /*
228 1.1 uch * Video Control 7 Register
229 1.1 uch */
230 1.1 uch /* W */
231 1.1 uch /*
232 1.1 uch * TX3912_VIDEOCTRL6_BLUESEL (31:0)
233 1.1 uch */
234 1.1 uch
235 1.1 uch /*
236 1.1 uch * Video Control 8 Register
237 1.1 uch */
238 1.1 uch /* W */
239 1.1 uch /*
240 1.1 uch * 2_3 means `2 out of 3'
241 1.1 uch */
242 1.1 uch #define TX3912_VIDEOCTRL8_PAT2_3_SHIFT 0
243 1.1 uch #define TX3912_VIDEOCTRL8_PAT2_3_MASK 0xfff
244 1.3 uch #define TX3912_VIDEOCTRL8_PAT2_3(cr) \
245 1.3 uch (((cr) >> TX3912_VIDEOCTRL8_PAT2_3_SHIFT) & \
246 1.1 uch TX3912_VIDEOCTRL8_PAT2_3_MASK)
247 1.3 uch #define TX3912_VIDEOCTRL8_PAT2_3_SET(cr, val) \
248 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL8_PAT2_3_SHIFT) & \
249 1.1 uch (TX3912_VIDEOCTRL8_PAT2_3_MASK << TX3912_VIDEOCTRL8_PAT2_3_SHIFT)))
250 1.1 uch
251 1.1 uch /*
252 1.1 uch * Video Control 9 Register
253 1.1 uch */
254 1.1 uch /* W */
255 1.1 uch #define TX3912_VIDEOCTRL9_PAT3_4_SHIFT 16
256 1.1 uch #define TX3912_VIDEOCTRL9_PAT3_4_MASK 0xffff
257 1.3 uch #define TX3912_VIDEOCTRL9_PAT3_4(cr) \
258 1.3 uch (((cr) >> TX3912_VIDEOCTRL9_PAT3_4_SHIFT) & \
259 1.1 uch TX3912_VIDEOCTRL9_PAT3_4_MASK)
260 1.3 uch #define TX3912_VIDEOCTRL9_PAT3_4_SET(cr, val) \
261 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL9_PAT3_4_SHIFT) & \
262 1.1 uch (TX3912_VIDEOCTRL9_PAT3_4_MASK << TX3912_VIDEOCTRL9_PAT3_4_SHIFT)))
263 1.1 uch /* W */
264 1.1 uch #define TX3912_VIDEOCTRL9_PAT2_4_SHIFT 0
265 1.1 uch #define TX3912_VIDEOCTRL9_PAT2_4_MASK 0xffff
266 1.3 uch #define TX3912_VIDEOCTRL9_PAT2_4(cr) \
267 1.3 uch (((cr) >> TX3912_VIDEOCTRL9_PAT2_4_SHIFT) & \
268 1.1 uch TX3912_VIDEOCTRL9_PAT2_4_MASK)
269 1.3 uch #define TX3912_VIDEOCTRL9_PAT2_4_SET(cr, val) \
270 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL9_PAT2_4_SHIFT) & \
271 1.1 uch (TX3912_VIDEOCTRL9_PAT2_4_MASK << TX3912_VIDEOCTRL9_PAT2_4_SHIFT)))
272 1.1 uch
273 1.1 uch /*
274 1.1 uch * Video Control 10 Register
275 1.1 uch */
276 1.1 uch /* W */
277 1.1 uch #define TX3912_VIDEOCTRL10_PAT4_5_SHIFT 0
278 1.1 uch #define TX3912_VIDEOCTRL10_PAT4_5_MASK 0xfffff
279 1.3 uch #define TX3912_VIDEOCTRL10_PAT4_5(cr) \
280 1.3 uch (((cr) >> TX3912_VIDEOCTRL10_PAT4_5_SHIFT) & \
281 1.1 uch TX3912_VIDEOCTRL10_PAT4_5_MASK)
282 1.3 uch #define TX3912_VIDEOCTRL10_PAT4_5_SET(cr, val) \
283 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL10_PAT4_5_SHIFT) & \
284 1.1 uch (TX3912_VIDEOCTRL10_PAT4_5_MASK << TX3912_VIDEOCTRL10_PAT4_5_SHIFT)))
285 1.1 uch
286 1.1 uch /*
287 1.1 uch * Video Control 11 Register
288 1.1 uch */
289 1.1 uch /* W */
290 1.1 uch #define TX3912_VIDEOCTRL11_PAT3_5_SHIFT 0
291 1.1 uch #define TX3912_VIDEOCTRL11_PAT3_5_MASK 0xfffff
292 1.3 uch #define TX3912_VIDEOCTRL11_PAT3_5(cr) \
293 1.3 uch (((cr) >> TX3912_VIDEOCTRL11_PAT3_5_SHIFT) & \
294 1.1 uch TX3912_VIDEOCTRL11_PAT3_5_MASK)
295 1.3 uch #define TX3912_VIDEOCTRL11_PAT3_5_SET(cr, val) \
296 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL11_PAT3_5_SHIFT) & \
297 1.1 uch (TX3912_VIDEOCTRL11_PAT3_5_MASK << TX3912_VIDEOCTRL11_PAT3_5_SHIFT)))
298 1.1 uch
299 1.1 uch /*
300 1.1 uch * Video Control 12 Register
301 1.1 uch */
302 1.1 uch /* W */
303 1.1 uch #define TX3912_VIDEOCTRL12_PAT6_7_SHIFT 0
304 1.1 uch #define TX3912_VIDEOCTRL12_PAT6_7_MASK 0xfffffff
305 1.3 uch #define TX3912_VIDEOCTRL12_PAT6_7(cr) \
306 1.3 uch (((cr) >> TX3912_VIDEOCTRL12_PAT6_7_SHIFT) & \
307 1.1 uch TX3912_VIDEOCTRL12_PAT6_7_MASK)
308 1.3 uch #define TX3912_VIDEOCTRL12_PAT6_7_SET(cr, val) \
309 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL12_PAT6_7_SHIFT) & \
310 1.1 uch (TX3912_VIDEOCTRL12_PAT6_7_MASK << TX3912_VIDEOCTRL12_PAT6_7_SHIFT)))
311 1.1 uch
312 1.1 uch /*
313 1.1 uch * Video Control 13 Register
314 1.1 uch */
315 1.1 uch /* W */
316 1.1 uch #define TX3912_VIDEOCTRL13_PAT5_7_SHIFT 0
317 1.1 uch #define TX3912_VIDEOCTRL13_PAT5_7_MASK 0xfffffff
318 1.3 uch #define TX3912_VIDEOCTRL13_PAT5_7(cr) \
319 1.3 uch (((cr) >> TX3912_VIDEOCTRL13_PAT5_7_SHIFT) & \
320 1.1 uch TX3912_VIDEOCTRL13_PAT5_7_MASK)
321 1.3 uch #define TX3912_VIDEOCTRL13_PAT5_7_SET(cr, val) \
322 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL13_PAT5_7_SHIFT) & \
323 1.1 uch (TX3912_VIDEOCTRL13_PAT5_7_MASK << TX3912_VIDEOCTRL13_PAT5_7_SHIFT)))
324 1.1 uch
325 1.1 uch /*
326 1.1 uch * Video Control 14 Register
327 1.1 uch */
328 1.1 uch /* W */
329 1.1 uch #define TX3912_VIDEOCTRL14_PAT4_7_SHIFT 0
330 1.1 uch #define TX3912_VIDEOCTRL14_PAT4_7_MASK 0xfffffff
331 1.3 uch #define TX3912_VIDEOCTRL14_PAT4_7(cr) \
332 1.3 uch (((cr) >> TX3912_VIDEOCTRL14_PAT4_7_SHIFT) & \
333 1.1 uch TX3912_VIDEOCTRL14_PAT4_7_MASK)
334 1.3 uch #define TX3912_VIDEOCTRL14_PAT4_7_SET(cr, val) \
335 1.3 uch ((cr) | (((val) << TX3912_VIDEOCTRL14_PAT4_7_SHIFT) & \
336 1.1 uch (TX3912_VIDEOCTRL14_PAT4_7_MASK << TX3912_VIDEOCTRL14_PAT4_7_SHIFT)))
337 1.1 uch
338 1.3 uch /*
339 1.3 uch * Default dither pattern
340 1.3 uch */
341 1.3 uch #define P0000 0x0
342 1.3 uch #define P0001 0x1
343 1.3 uch #define P0010 0x2
344 1.3 uch #define P0011 0x3
345 1.3 uch #define P0100 0x4
346 1.3 uch #define P0101 0x5
347 1.3 uch #define P0110 0x6
348 1.3 uch #define P0111 0x7
349 1.3 uch #define P1000 0x8
350 1.3 uch #define P1001 0x9
351 1.3 uch #define P1010 0xa
352 1.3 uch #define P1011 0xb
353 1.3 uch #define P1100 0xc
354 1.3 uch #define P1101 0xd
355 1.3 uch #define P1110 0xe
356 1.3 uch #define P1111 0xf
357 1.3 uch
358 1.3 uch #define DITHER_PATTERN(p0, p1, p2, p3, p4, p5, p6) \
359 1.3 uch (((p0) << 24) | ((p1) << 20) | ((p2) << 16) | ((p3) << 12) | \
360 1.3 uch ((p4) << 8) | ((p5) << 4) || (p6))
361 1.3 uch
362 1.3 uch #define TX3912_VIDEOCTRL8_PAT2_3_DEFAULT \
363 1.3 uch DITHER_PATTERN(0, 0, 0, 0, P0111, P1101, P1010)
364 1.3 uch #define TX3912_VIDEOCTRL9_PAT3_4_DEFAULT \
365 1.3 uch DITHER_PATTERN(0, 0, 0, P0111, P1101, P1011, P1110)
366 1.3 uch #define TX3912_VIDEOCTRL9_PAT2_4_DEFAULT \
367 1.3 uch DITHER_PATTERN(0, 0, 0, P1010, P0101, P1010, P0101)
368 1.3 uch #define TX3912_VIDEOCTRL10_PAT4_5_DEFAULT \
369 1.4 uch DITHER_PATTERN(0, 0, P0111, P1101, P1111, P1011, P1110)
370 1.3 uch #define TX3912_VIDEOCTRL11_PAT3_5_DEFAULT \
371 1.3 uch DITHER_PATTERN(0, 0, P0111, P1010, P0101, P1010, P1101)
372 1.3 uch #define TX3912_VIDEOCTRL12_PAT6_7_DEFAULT \
373 1.3 uch DITHER_PATTERN(P1111, P1011, P1111, P1101, P1111, P1110, P0111)
374 1.3 uch #define TX3912_VIDEOCTRL13_PAT5_7_DEFAULT \
375 1.3 uch DITHER_PATTERN(P0111, P1011, P0101, P1010, P1101, P1110, P1111)
376 1.3 uch #define TX3912_VIDEOCTRL14_PAT4_7_DEFAULT \
377 1.4 uch DITHER_PATTERN(P1011, P1001, P1101, P1100, P0110, P0110, P0011)
378 1.3 uch
379 1.4 uch /* dither duty cycle : pre-dithered data nible mapping */
380 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_1 15
381 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_6_7 14
382 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_4_5 13
383 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_3_4 12
384 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_5_7 11
385 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_2_3 10
386 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_3_5 9
387 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_4_7 8
388 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_2_4 7
389 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_3_7 6
390 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_2_5 5
391 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_1_3 4
392 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_2_7 3
393 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_1_5 2
394 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_1_7 1
395 1.3 uch #define TX3912_VIDEO_DITHER_DUTYCYCLE_0 0
396