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