|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* Copyright (c) 1992 NeXT Computer, Inc. All rights reserved. ! 26: * ! 27: * vgapriv.h - Private definitions used by vga ps driver implementation. ! 28: * ! 29: * ! 30: * HISTORY ! 31: * 28 Sep 92 Gary Crum ! 32: * Created. ! 33: */ ! 34: ! 35: // TO DO: Color palette setting will be moved into kernel driver ! 36: // and change along with Mike Paquette's work. ! 37: ! 38: // These values were computed given a gamma of 1.5. ! 39: // For most CRT displays, gamma should be 2.2, but this driver is ! 40: // used for flat panel LCD displays, so this 1.5 setting is a compromise. ! 41: #define WHITE_PALETTE_VALUE 63 ! 42: #define LIGHT_GRAY_PALETTE_VALUE 48 ! 43: #define DARK_GRAY_PALETTE_VALUE 30 ! 44: #define BLACK_PALETTE_VALUE 0 ! 45: ! 46: #define INB(addr) { inb(addr); } ! 47: #define INDB(addr,data) { data=inb(addr); } ! 48: #define OUTB(addr,data) { outb(addr,data); } ! 49: ! 50: #define zvga_reg_out(reg,indx,data) \ ! 51: { \ ! 52: OUTB(WRIT_##reg##_ADDR, indx) \ ! 53: OUTB(WRIT_##reg##_DATA, data) \ ! 54: } ! 55: ! 56: #define zvga_reg__in(reg,indx,data) \ ! 57: { \ ! 58: OUTB(WRIT_##reg##_ADDR, indx) \ ! 59: INDB(READ_##reg##_DATA, data) \ ! 60: } ! 61: ! 62: ! 63: /* ! 64: *********************************************************************************************** ! 65: ** VGA :- General registers ** ! 66: *********************************************************************************************** ! 67: */ ! 68: #define WRIT_MONO_GEN_MISC_OP 0x03C2 ! 69: #define WRIT_COLR_GEN_MISC_OP 0x03C2 ! 70: #define WRIT_EIDR_GEN_MISC_OP 0x03C2 ! 71: ! 72: #define READ_MONO_GEN_MISC_OP 0x03CC ! 73: #define READ_COLR_GEN_MISC_OP 0x03CC ! 74: #define READ_EIDR_GEN_MISC_OP 0x03CC ! 75: ! 76: #define READ_MONO_GEN_IN_ST_0 0x03C2 ! 77: #define READ_COLR_GEN_IN_ST_0 0x03C2 ! 78: #define READ_EIDR_GEN_IN_ST_0 0x03C2 ! 79: ! 80: #define READ_MONO_GEN_IN_ST_1 0x03BA ! 81: #define READ_COLR_GEN_IN_ST_1 0x03DA ! 82: ! 83: #define WRIT_MONO_GEN_FEAT_CT 0x03BA ! 84: #define WRIT_COLR_GEN_FEAT_CT 0x03DA ! 85: ! 86: #define READ_MONO_GEN_FEAT_CT 0x03CA ! 87: #define READ_COLR_GEN_FEAT_CT 0x03CA ! 88: ! 89: /* ! 90: ** Index mask - not necessary here ! 91: */ ! 92: #define MONO_GEN_MSK 0x00 ! 93: #define COLR_GEN_MSK 0x00 ! 94: #define EIDR_GEN_MSK 0x00 ! 95: ! 96: /* ! 97: ** List of index registers ! 98: */ ! 99: ! 100: /* ! 101: ** Bitfields for misc op reg. ! 102: */ ! 103: #define GEN_AT_VSP 0x80 ! 104: #define GEN_AT_HSP 0x40 ! 105: #define GEN_AT__PB 0x00 ! 106: #define GEN_AT_DVD 0x10 ! 107: #define GEN_AT__CS 0x0C ! 108: #define GEN_AT__ER 0x02 ! 109: #define GEN_AT_IOA 0x01 ! 110: ! 111: /* ! 112: ** Bitfields for feature control reg. ! 113: */ ! 114: #define GEN_AT_VSS 0x08 ! 115: ! 116: /* ! 117: ** Bitfields for Input Status #0 register ! 118: */ ! 119: #define GEN_AT__SS 0x10 ! 120: ! 121: /* ! 122: ** Bitfields for Input Status #1 register ! 123: */ ! 124: #define GEN_AT__VR 0x08 ! 125: #define GEN_AT__DE 0x01 ! 126: ! 127: /* ! 128: *********************************************************************************************** ! 129: ** VGA :- Sequencer registers ** ! 130: *********************************************************************************************** ! 131: */ ! 132: #define READ_MONO_SEQ_ADDR 0x03C4 ! 133: #define READ_COLR_SEQ_ADDR 0x03C4 ! 134: #define READ_EIDR_SEQ_ADDR 0x03C4 ! 135: ! 136: #define WRIT_MONO_SEQ_ADDR 0x03C4 ! 137: #define WRIT_COLR_SEQ_ADDR 0x03C4 ! 138: #define WRIT_EIDR_SEQ_ADDR 0x03C4 ! 139: ! 140: #define READ_MONO_SEQ_DATA 0x03C5 ! 141: #define READ_COLR_SEQ_DATA 0x03C5 ! 142: #define READ_EIDR_SEQ_DATA 0x03C5 ! 143: ! 144: #define WRIT_MONO_SEQ_DATA 0x03C5 ! 145: #define WRIT_COLR_SEQ_DATA 0x03C5 ! 146: #define WRIT_EIDR_SEQ_DATA 0x03C5 ! 147: ! 148: /* ! 149: ** Index mask ! 150: */ ! 151: #define MONO_SEQ_MSK 0x07 ! 152: #define COLR_SEQ_MSK 0x07 ! 153: #define EIDR_SEQ_MSK 0x07 ! 154: ! 155: /* ! 156: ** List of index registers ! 157: */ ! 158: #define SEQ_AT_RST 0x00 ! 159: #define SEQ_AT_CLO 0x01 ! 160: #define SEQ_AT_MPK 0x02 ! 161: #define SEQ_AT_CRS 0x03 ! 162: #define SEQ_AT_MMD 0x04 ! 163: ! 164: /* ! 165: ** Bitfield - Sequencer registers - Reset ! 166: */ ! 167: #define SEQ_AT__SR 0x02 ! 168: #define SEQ_AT__AR 0x00 ! 169: ! 170: /* ! 171: ** Bitfields - Sequencer registers - Clocking Mode Register ! 172: */ ! 173: #define SEQ_AT__SO 0x20 ! 174: #define SEQ_AT__S4 0x10 ! 175: #define SEQ_AT__DC 0x08 ! 176: #define SEQ_AT__SL 0x04 ! 177: #define SEQ_AT__89 0x01 ! 178: ! 179: /* ! 180: ** Bitfields - Sequencer registers - Map Mask Register ! 181: */ ! 182: #define SEQ_AT_EM3 0x08 ! 183: #define SEQ_AT_EM2 0x04 ! 184: #define SEQ_AT_EM1 0x02 ! 185: #define SEQ_AT_EM0 0x01 ! 186: ! 187: /* ! 188: ** Bitfields - Sequencer registers - Character Map Select Registers ! 189: */ ! 190: #define SEQ_AT_SAH 0x20 ! 191: #define SEQ_AT_SBH 0x10 ! 192: #define SEQ_AT__SA 0x0C ! 193: #define SEQ_AT__SB 0x03 ! 194: ! 195: /* ! 196: ** Bitfields - Sequencer registers - Memory Mode Register ! 197: */ ! 198: #define SEQ_AT__C4 0x08 ! 199: #define SEQ_AT__OE 0x04 ! 200: #define SEQ_AT__EM 0x02 ! 201: ! 202: /* ! 203: *********************************************************************************************** ! 204: ** VGA :- CRT Controller Registers ** ! 205: *********************************************************************************************** ! 206: */ ! 207: #define WRIT_MONO_CRT_ADDR 0x03B4 ! 208: #define READ_MONO_CRT_ADDR 0x03B4 ! 209: ! 210: #define WRIT_MONO_CRT_DATA 0x03B5 ! 211: #define READ_MONO_CRT_DATA 0x03D5 ! 212: ! 213: #define WRIT_COLR_CRT_ADDR 0x03D4 ! 214: #define READ_COLR_CRT_ADDR 0x03D4 ! 215: ! 216: #define WRIT_COLR_CRT_DATA 0x03D5 ! 217: #define READ_COLR_CRT_DATA 0x03D5 ! 218: ! 219: /* ! 220: ** Index mask ! 221: */ ! 222: #define MONO_CRT_MSK 0x3F ! 223: #define COLR_CRT_MSK 0x3F ! 224: ! 225: /* ! 226: ** List of index registers ! 227: */ ! 228: #define CRT_AT_HORZ_TOT 0x00 ! 229: #define CRT_AT_HORZ_DND 0x01 ! 230: #define CRT_AT_HORZ_BST 0x02 ! 231: #define CRT_AT_HORZ_BND 0x03 ! 232: #define CRT_AT_HORZ_RST 0x04 ! 233: #define CRT_AT_HORZ_RND 0x05 ! 234: #define CRT_AT_VERT_TOT 0x06 ! 235: #define CRT_AT_OVERFLOW 0x07 ! 236: #define CRT_AT_PRE_ROWS 0x08 ! 237: #define CRT_AT_MAX_SCAN 0x09 ! 238: #define CRT_AT_CURSR_ST 0x0A ! 239: #define CRT_AT_CURSR_ND 0x0B ! 240: #define CRT_AT_ST_ADRHI 0x0C ! 241: #define CRT_AT_ST_ADRLO 0x0D ! 242: #define CRT_AT_CR_LOCHI 0x0E ! 243: #define CRT_AT_CR_LOCLO 0x0F ! 244: #define CRT_AT_VRT_RTST 0x10 ! 245: #define CRT_AT_VRT_RTLO 0x11 ! 246: #define CRT_AT_VRT_DSND 0x12 ! 247: #define CRT_AT___OFFSET 0x13 ! 248: #define CRT_AT_UNDR_LOC 0x14 ! 249: #define CRT_AT_VBLNK_ST 0x15 ! 250: #define CRT_AT_VBLNK_ND 0x16 ! 251: #define CRT_AT_MOD_CTRL 0x17 ! 252: #define CRT_AT_LINE_CMP 0x18 ! 253: ! 254: /* ! 255: ** Bitfields - CRT Controller registers - Horizontal total Register ! 256: */ ! 257: #define CRT_AT__HT 0xFF ! 258: ! 259: /* ! 260: ** Bitfields - CRT Controller registers - Horizontal Display End Register ! 261: */ ! 262: #define CRT_AT_HDE 0xFF ! 263: ! 264: /* ! 265: ** Bitfields - CRT Controller registers - Start Horizontal Blanking register ! 266: */ ! 267: #define CRT_AT_SHB 0xFF ! 268: ! 269: /* ! 270: ** Bitfields - CRT Controller registers - End Horizontal Blanking Register ! 271: */ ! 272: #define CRT_AT__CR 0x80 ! 273: #define CRT_AT_DES 0x60 ! 274: #define CRT_AT_EHB 0x1F ! 275: ! 276: /* ! 277: ** Bitfields - CRT Controller registers - Start Horizontal Retrace Register ! 278: */ ! 279: #define CRT_AT_SHR 0xFF ! 280: ! 281: /* ! 282: ** Bitfields - CRT Controller registers - End Horizontal Retrace Register ! 283: */ ! 284: #define CRT_AT_EHB_6 0x80 ! 285: #define EGA_AT_CRT 0x80 ! 286: #define CRT_AT_HRD 0x60 ! 287: #define CRT_AT_EHR 0x1F ! 288: ! 289: /* ! 290: ** Bitfields - CRT Controller registers - Vertical Total Register ! 291: */ ! 292: #define CRT_AT_VT 0xFF ! 293: ! 294: /* ! 295: ** Bitfields - CRT Controller registers - Overflow Register ! 296: */ ! 297: #define CRT_AT_VRS_9 0x80 ! 298: #define CRT_AT_VDE_9 0x40 ! 299: #define EGA_AT_CRT_8 0x20 ! 300: #define CRT_AT_VT1_8 0x20 ! 301: #define CRT_AT__LC_8 0x10 ! 302: #define CRT_AT_VBS_8 0x08 ! 303: #define CRT_AT_VRS_8 0x04 ! 304: #define CRT_AT_VDE_8 0x02 ! 305: #define CRT_AT__VT_8 0x01 ! 306: ! 307: /* ! 308: ** Bitfields - CRT Controller registers - Preset Row Scan Register ! 309: */ ! 310: #define CRT_AT__BP 0x60 ! 311: #define CRT_AT_PRS 0x1F ! 312: ! 313: /* ! 314: ** Bitfields - CRT Controller registers - Maximum Scan Line Register ! 315: */ ! 316: #define CRT_AT_2T4 0x80 ! 317: #define CRT_AT__LC 0x40 ! 318: #define CRT_AT_VBS_9 0x20 ! 319: #define CRT_AT_MSL 0x1F ! 320: ! 321: /* ! 322: ** Bitfields - CRT Controller registers - Cursor Start Register ! 323: */ ! 324: #define CRT_AT_COO 0x20 ! 325: #define CRT_AT__CS 0x1F ! 326: ! 327: /* ! 328: ** Bitfields - CRT Controller registers - Cursor End Register ! 329: */ ! 330: #define CRT_AT_CSK 0x60 ! 331: #define CRT_AT__CE 0x1F ! 332: ! 333: /* ! 334: ** Bitfields - CRT Controller registers - Start Address High Register ! 335: */ ! 336: #define CRT_AT_SAH 0xFF ! 337: ! 338: /* ! 339: ** Bitfields - CRT Controller registers - Start Address Low Register ! 340: */ ! 341: #define CRT_AT_SAL 0xFF ! 342: ! 343: /* ! 344: ** Bitfields - CRT Controller registers - Cursor Location High Register ! 345: */ ! 346: #define CRT_AT_CLH 0xFF ! 347: ! 348: /* ! 349: ** Bitfields - CRT Controller registers - Cursor Location Low Register ! 350: */ ! 351: #define CRT_AT_CLL 0xFF ! 352: ! 353: /* ! 354: ** Bitfields - CRT Controller registers - Vertical Retrace Start Register ! 355: */ ! 356: #define CRT_AT_VRS 0xFF ! 357: ! 358: /* ! 359: ** Bitfields - CRT Controller registers - Vertical Retrace End Register ! 360: */ ! 361: #define CRT_AT__PR 0x80 ! 362: #define CRT_AT__BW 0x40 ! 363: #define CRT_AT_DVI 0x20 ! 364: #define CRT_AT_CVI 0x10 ! 365: #define CRT_AT_EVR 0x0F ! 366: ! 367: /* ! 368: ** Bitfields - CRT Controller registers - Light Pen High Register ! 369: */ ! 370: #define CRT_AT_LPH 0xFF ! 371: ! 372: /* ! 373: ** Bitfields - CRT Controller registers - Light Pen Low Register ! 374: */ ! 375: #define CRT_AT_LPL 0xFF ! 376: ! 377: /* ! 378: ** Bitfields - CRT Controller registers - Vertical Display End Register ! 379: */ ! 380: #define CRT_AT_VDE 0xFF ! 381: ! 382: /* ! 383: ** Bitfields - CRT Controller registers - Offset Register ! 384: */ ! 385: #define CRT_AT_OFF 0xFF ! 386: ! 387: /* ! 388: ** Bitfields - CRT Controller registers - Underline Location Register ! 389: */ ! 390: #define CRT_AT__DW 0x40 ! 391: #define CRT_AT_CB4 0x20 ! 392: #define CRT_AT__UL 0x1F ! 393: ! 394: /* ! 395: ** Bitfields - CRT Controller registers - Start vertical Blank register ! 396: */ ! 397: #define CRT_AT_VBS 0xFF ! 398: ! 399: /* ! 400: ** Bitfields - CRT Controller registers - End Vertical Blank register ! 401: */ ! 402: #define CRT_AT_VBE_H 0x60 ! 403: #define CRT_AT_VBE_L 0x1F ! 404: ! 405: /* ! 406: ** Bitfields - CRT Controller registers - Mode Control Register ! 407: */ ! 408: #define CRT_AT__HR 0x80 ! 409: #define CRT_AT__WB 0x40 ! 410: #define CRT_AT__AW 0x20 ! 411: #define CRT_AT__OC 0x10 ! 412: #define CRT_AT_CBT 0x08 ! 413: #define CRT_AT_HRS 0x04 ! 414: #define CRT_AT_SRS 0x02 ! 415: #define CRT_AT_CMS 0x01 ! 416: ! 417: /* ! 418: ** Bitfields - CRT Controller registers - Line Compare Register ! 419: */ ! 420: #define CRT_AT_LNC 0xFF ! 421: ! 422: /* ! 423: *********************************************************************************************** ! 424: ** VGA :- GCR Controller Registers ** ! 425: *********************************************************************************************** ! 426: */ ! 427: #define READ_MONO_GCR_ADDR 0x03CE ! 428: #define READ_COLR_GCR_ADDR 0x03CE ! 429: #define READ_EIDR_GCR_ADDR 0x03CE ! 430: ! 431: #define WRIT_MONO_GCR_ADDR 0x03CE ! 432: #define WRIT_COLR_GCR_ADDR 0x03CE ! 433: #define WRIT_EIDR_GCR_ADDR 0x03CE ! 434: ! 435: #define READ_MONO_GCR_DATA 0x03CF ! 436: #define READ_COLR_GCR_DATA 0x03CF ! 437: #define READ_EIDR_GCR_DATA 0x03CF ! 438: ! 439: #define WRIT_MONO_GCR_DATA 0x03CF ! 440: #define WRIT_COLR_GCR_DATA 0x03CF ! 441: #define WRIT_EIDR_GCR_DATA 0x03CF ! 442: ! 443: /* ! 444: ** Index mask ! 445: */ ! 446: #define MONO_GCR_MSK 0x0F ! 447: #define COLR_GCR_MSK 0x0F ! 448: #define EIDR_GCR_MSK 0x0F ! 449: ! 450: /* ! 451: ** List of index registers ! 452: */ ! 453: #define GCR_AT_SET_RESET 0x00 ! 454: #define GCR_AT_ENA_S_RST 0x01 ! 455: #define GCR_AT_COLR_COMP 0x02 ! 456: #define GCR_AT_DATA_ROTR 0x03 ! 457: #define GCR_AT_READ_MAPS 0x04 ! 458: #define GCR_AT_GCR__MODE 0x05 ! 459: #define GCR_AT_GCR__MISC 0x06 ! 460: #define GCR_AT_CLR_NOCAR 0x07 ! 461: #define GCR_AT_BIT__MASK 0x08 ! 462: ! 463: /* ! 464: ** Bitfields - Graphics Controller Registers - Graphics#1 Position Register ! 465: */ ! 466: #define GCR_AT_GP1 0x03 ! 467: ! 468: /* ! 469: ** Bitfields - Graphics Controller Registers - Graphics#2 Position Register ! 470: */ ! 471: #define GCR_AT_GP2 0x03 ! 472: ! 473: /* ! 474: ** Bitfields - Graphics Controller Registers - Set/Reset Register ! 475: */ ! 476: #define GCR_AT_S_R 0x0F ! 477: ! 478: /* ! 479: ** Bitfields - Graphics Controller Registers - Enable Set/Reset Register ! 480: */ ! 481: #define GCR_AT_ESR 0x0F ! 482: ! 483: /* ! 484: ** Bitfields - Graphics Controller Registers - Color Compare Register ! 485: */ ! 486: #define GCR_AT__CC 0x0F ! 487: ! 488: /* ! 489: ** Bitfields - Graphics Controller Registers - Data Rotate register ! 490: */ ! 491: #define GCR_AT__FS 0x30 ! 492: #define GCR_AT__RC 0x0F ! 493: ! 494: /* ! 495: ** Bitfields - Graphics Controller Registers - Read Map Select Register ! 496: */ ! 497: #define GCR_AT_RMS 0x03 ! 498: ! 499: /* ! 500: ** Bitfields - Graphics Controller Registers - Mode Register ! 501: */ ! 502: #define GCR_AT__SR 0x60 ! 503: #define GCR_AT__OE 0x10 ! 504: #define GCR_AT__RM 0x08 ! 505: #define GCR_AT__TC 0x04 ! 506: #define GCR_AT__WM 0x03 ! 507: ! 508: /* ! 509: ** Bitfields - Graphics Controller Registers - Miscellaneous register ! 510: */ ! 511: #define GCR_AT__MM 0x0C ! 512: #define GCR_AT_COE 0x02 ! 513: #define GCR_AT__GA 0x01 ! 514: ! 515: /* ! 516: ** Bitfields - Graphics Controller Registers - Color Dont Care register ! 517: */ ! 518: #define GCR_AT_CDC 0x0F ! 519: ! 520: /* ! 521: ** Bitfields - Graphics Controller Registers - Bit Mask ! 522: */ ! 523: #define GCR_AT__BM 0xFF ! 524: ! 525: /* ! 526: *********************************************************************************************** ! 527: ** VGA :- ACR Controller Registers ** ! 528: *********************************************************************************************** ! 529: */ ! 530: ! 531: #define WRIT_TOGL_ACR_ADDR 0x03C0 ! 532: #define READ_TOGL_ACR_ADDR 0x03C0 ! 533: ! 534: #define WRIT_TOGL_ACR_DATA 0x03C0 ! 535: #define READ_TOGL_ACR_DATA 0x03C1 ! 536: ! 537: /* ! 538: ** Index mask ! 539: */ ! 540: #define ACR_MSK 0x1F ! 541: ! 542: /* ! 543: ** List of index registers ! 544: */ ! 545: #define ACR_AT_PALETTE_0 0x00 ! 546: #define ACR_AT_PALETTE_1 0x01 ! 547: #define ACR_AT_PALETTE_2 0x02 ! 548: #define ACR_AT_PALETTE_3 0x03 ! 549: #define ACR_AT_PALETTE_4 0x04 ! 550: #define ACR_AT_PALETTE_5 0x05 ! 551: #define ACR_AT_PALETTE_6 0x06 ! 552: #define ACR_AT_PALETTE_7 0x07 ! 553: #define ACR_AT_PALETTE_8 0x08 ! 554: #define ACR_AT_PALETTE_9 0x09 ! 555: #define ACR_AT_PALETTE_A 0x0A ! 556: #define ACR_AT_PALETTE_B 0x0B ! 557: #define ACR_AT_PALETTE_C 0x0C ! 558: #define ACR_AT_PALETTE_D 0x0D ! 559: #define ACR_AT_PALETTE_E 0x0E ! 560: #define ACR_AT_PALETTE_F 0x0F ! 561: #define ACR_AT_MODE_CNTL 0x10 ! 562: #define ACR_AT_OVERSCN_C 0x11 ! 563: #define ACR_AT_CLR_PL_EN 0x12 ! 564: #define ACR_AT_HORZ_PXPN 0x13 ! 565: #define ACR_AT_COLOR_SEL 0x14 ! 566: ! 567: /* ! 568: ** Bitfields - Attribute Controller registers - pallette registers ! 569: */ ! 570: #define ACR_AT__SR 0x20 ! 571: #define ACR_AT__SG 0x10 ! 572: #define ACR_AT__SB 0x08 ! 573: #define ACR_AT_REG 0x04 ! 574: #define ACR_AT_GRN 0x02 ! 575: #define ACR_AT_BLU 0x01 ! 576: ! 577: /* ! 578: ** Bitfields - Attribute Controller registers - Mode Control register ! 579: */ ! 580: #define ACR_AT_IPS 0x80 ! 581: #define ACR_AT_PCS 0x40 ! 582: #define ACR_AT_PPC 0x20 ! 583: #define ACR_AT__BI 0x08 ! 584: #define ACR_AT_ELG 0x04 ! 585: #define ACR_AT__DT 0x02 ! 586: #define ACR_AT__GA 0x01 ! 587: ! 588: /* ! 589: ** Bitfields - Attribute Controller registers - Overscan Color Register ! 590: */ ! 591: ! 592: #define ACR_AT_OSR 0x20 ! 593: #define ACR_AT_OSG 0x10 ! 594: #define ACR_AT_OSB 0x08 ! 595: #define ACR_AT_ORD 0x04 ! 596: #define ACR_AT_OGR 0x02 ! 597: #define ACR_AT_OBL 0x01 ! 598: /* ! 599: ** Bitfields - Attribute Controller registers - Color Plane Enable Register ! 600: */ ! 601: ! 602: #define ACR_AT_VSM 0x30 ! 603: #define ACR_AT_CPE 0x0F ! 604: /* ! 605: ** Bitfields - Attribute Controller registers - Horizontal Pixel Panning Reg ! 606: */ ! 607: #define ACR_AT_HPP 0x0F ! 608: ! 609: /* ! 610: ** Bitfields - Attribute Controller registers - Color Select Register ! 611: */ ! 612: #define ACR_AT_C67 0x0C ! 613: #define ACR_AT_C45 0x03 ! 614: ! 615: /* ! 616: *********************************************************************************************** ! 617: ** VGA :- PEL Controller Registers ** ! 618: *********************************************************************************************** ! 619: */ ! 620: #define WRIT_MONO_PEL_AWMR 0x03C8 ! 621: #define WRIT_COLR_PEL_AWMR 0x03C8 ! 622: #define READ_MONO_PEL_AWMR 0x03C8 ! 623: #define READ_COLR_PEL_AWMR 0x03C8 ! 624: ! 625: #define WRIT_MONO_PEL_ARMR 0x03C7 ! 626: #define WRIT_COLR_PEL_ARMR 0x03C7 ! 627: ! 628: #define WRIT_MONO_PEL_DATA 0x03C9 ! 629: #define WRIT_COLR_PEL_DATA 0x03C9 ! 630: #define READ_MONO_PEL_DATA 0x03C9 ! 631: #define READ_COLR_PEL_DATA 0x03C9 ! 632: ! 633: #define READ_MONO_PEL_DACS 0x03C7 ! 634: #define READ_COLR_PEL_DACS 0x03C7 ! 635: ! 636: #define WRIT_MONO_PEL_MASK 0x03C6 ! 637: #define WRIT_COLR_PEL_MASK 0x03C6 ! 638: #define READ_MONO_PEL_MASK 0x03C6 ! 639: #define READ_COLR_PEL_MASK 0x03C6 ! 640: ! 641: /* ! 642: *********************************************************************************************** ! 643: ** VGA :- External Palette RAM ! 644: *********************************************************************************************** ! 645: */ ! 646: #define READ_MONO_PEL_MASK 0x03C6 ! 647: #define READ_COLR_PEL_MASK 0x03C6 ! 648: #define READ_EIDR_PEL_MASK 0x03C6 ! 649: ! 650: #define WRIT_MONO_PEL_MASK 0x03C6 ! 651: #define WRIT_COLR_PEL_MASK 0x03C6 ! 652: #define WRIT_EIDR_PEL_MASK 0x03C6 ! 653: ! 654: #define READ_MONO_PEL_WADR 0x03C8 ! 655: #define READ_COLR_PEL_WADR 0x03C8 ! 656: #define READ_EIDR_PEL_WADR 0x03C8 ! 657: ! 658: #define WRIT_MONO_PEL_WADR 0x03C8 ! 659: #define WRIT_COLR_PEL_WADR 0x03C8 ! 660: #define WRIT_EIDR_PEL_WADR 0x03C8 ! 661: ! 662: #define READ_MONO_PEL_DATA 0x03C9 ! 663: #define READ_COLR_PEL_DATA 0x03C9 ! 664: #define READ_EIDR_PEL_DATA 0x03C9 ! 665: ! 666: #define WRIT_MONO_PEL_DATA 0x03C9 ! 667: #define WRIT_COLR_PEL_DATA 0x03C9 ! 668: #define WRIT_EIDR_PEL_DATA 0x03C9 ! 669: ! 670: #define WRIT_MONO_PEL_RADR 0x03C7 ! 671: #define WRIT_COLR_PEL_RADR 0x03C7 ! 672: #define WRIT_EIDR_PEL_RADR 0x03C7 ! 673: ! 674: #define WRIT_MONO_PEL_DACS 0x03C7 ! 675: #define WRIT_COLR_PEL_DACS 0x03C7 ! 676: #define WRIT_EIDR_PEL_DACS 0x03C7 ! 677: ! 678: /* ! 679: *********************************************************************************************** ! 680: ** VGA :- MODES ** ! 681: *********************************************************************************************** ! 682: */ ! 683: #define MAX_GEN_INDEX 0x01 ! 684: #define MAX_SEQ_INDEX SEQ_AT_MMD ! 685: #define MAX_CRT_INDEX CRT_LINE_CMP ! 686: #define MAX_GCR_INDEX GCR_BIT__MASK ! 687: #define MAX_ACR_INDEX ACR_COLOUR_SEL ! 688: ! 689: /* ! 690: ** There now follows a symbolic list of modes, these will be used as indeces into tables of ! 691: ** initial values to be put into the various registers for a given mode. ! 692: */ ! 693: ! 694: #define MODE_VGA_AT_00 0x00 ! 695: #define MODE_VGA_AT_01 0x01 ! 696: #define MODE_VGA_AT_02 0x02 ! 697: #define MODE_VGA_AT_03 0x03 ! 698: #define MODE_VGA_AT_04 0x04 ! 699: #define MODE_VGA_AT_05 0x05 ! 700: #define MODE_VGA_AT_06 0x06 ! 701: #define MODE_VGA_AT_07 0x07 ! 702: #define MODE_VGA_AT_00_X 0x08 ! 703: #define MODE_VGA_AT_01_X 0x09 ! 704: #define MODE_VGA_AT_02_X 0x0A ! 705: #define MODE_VGA_AT_03_X 0x0B ! 706: #define MODE_VGA_AT_07_X 0x0C ! 707: #define MODE_VGA_AT_0D 0x0D ! 708: #define MODE_VGA_AT_0E 0x0E ! 709: #define MODE_VGA_AT_0F 0x0F ! 710: #define MODE_VGA_AT_10 0x10 ! 711: #define MODE_VGA_AT_11 0x11 ! 712: #define MODE_VGA_AT_12 0x12 ! 713: #define MODE_VGA_AT_13 0x13 ! 714: ! 715: #define MIN_VGA_AT_MODE MODE_VGA_AT_00 ! 716: #define MAX_VGA_AT_MODE MODE_VGA_AT_13 ! 717: #define NUM_VGA_AT_MODE MAX_VGA_AT_MODE-MIN_VGA_AT_MODE ! 718: ! 719: #define IS_REG_MODE(a) ((a) <= MAX_VGA_AT_MODE) ! 720: ! 721: struct mode_params { ! 722: char *m_str; ! 723: int p_type; ! 724: int p_bpp; ! 725: int p_start; ! 726: int p_pages; ! 727: int p_alfa_w; ! 728: int p_alfa_h; ! 729: int p_char_w; ! 730: int p_char_h; ! 731: int p_disp_w; ! 732: int p_disp_h; ! 733: int p_font; ! 734: }; ! 735: ! 736: /* ! 737: ** Defines for the type of a particular mode ie - is it alphanummeric(A) or graphical(G), ! 738: ** color(C) or mono(M), ! 739: */ ! 740: ! 741: #define MODE_A_M 0x00 ! 742: #define MODE_A_C 0x01 ! 743: #define MODE_G_M 0x10 ! 744: #define MODE_G_C 0x11 ! 745: ! 746: /* ! 747: *********************************************************************************************** ! 748: ** VGA :- FONTS ** ! 749: *********************************************************************************************** ! 750: */ ! 751: ! 752: #define FONT_09_BY_16 0x00 ! 753: #define FONT_09_BY_15 0x01 ! 754: #define FONT_09_BY_14 0x02 ! 755: #define FONT_09_BY_13 0x03 ! 756: #define FONT_08_BY_16 0x04 ! 757: #define FONT_08_BY_15 0x05 ! 758: #define FONT_08_BY_14 0x06 ! 759: #define FONT_08_BY_08 0x07 ! 760: ! 761: ! 762: #define VGA_AT_MAX_PLANES 0x04 ! 763: ! 764: ! 765: // Start of defines from prototype vga_ts_defs.h file. ! 766: ! 767: /* ! 768: *********************************************************************************************** ! 769: ** VGA :- General registers ** ! 770: *********************************************************************************************** ! 771: */ ! 772: #define WRIT_MONO_MODE_CT 0x03B8 ! 773: #define WRIT_COLR_MODE_CT 0x03D8 ! 774: #define WRIT_EIDR_MODE_CT 0x03D8 ! 775: ! 776: #define WRIT_MONO_GEN_VID_EN 0x46E8 ! 777: #define WRIT_COLR_GEN_VID_EN 0x46E8 ! 778: #define WRIT_EIDR_GEN_VID_EN 0x46E8 ! 779: ! 780: #define READ_MONO_GEN_VID_EN 0x03C3 ! 781: #define READ_COLR_GEN_VID_EN 0x03C3 ! 782: #define READ_EIDR_GEN_VID_EN 0x03C3 ! 783: ! 784: #define WRIT_MONO_ALT_VID_EN 0x46E8 ! 785: #define WRIT_COLR_ALT_VID_EN 0x46E8 ! 786: #define WRIT_EIDR_ALT_VID_EN 0x46E8 ! 787: ! 788: #define READ_MONO_ALT_VID_EN 0x46E8 ! 789: #define READ_COLR_ALT_VID_EN 0x46E8 ! 790: #define READ_EIDR_ALT_VID_EN 0x46E8 ! 791: ! 792: /* ! 793: ** Bitfields for Hercules compatibility register ! 794: */ ! 795: #define GEN_TS_HER 0xFD ! 796: #define GEN_TS_ESP 0x02 ! 797: ! 798: /* ! 799: ** Bitfields for Video Subsystem Register ! 800: */ ! 801: #define GEN_TS_WRI 0x01 ! 802: #define GEN_TS_REA 0x08 ! 803: #define GEN_TS_VSR 0xF6 ! 804: ! 805: /* ! 806: *********************************************************************************************** ! 807: ** VGA :- 6845 Compatibility registers ** ! 808: *********************************************************************************************** ! 809: */ ! 810: #define WRIT_MONO_6845_CTL_REG 0x03B4 ! 811: #define WRIT_COLR_6845_CTL_REG 0x03D4 ! 812: #define READ_MONO_6845_CTL_REG 0x03B4 ! 813: #define READ_COLR_6845_CTL_REG 0x03D4 ! 814: ! 815: #define WRIT_MONO_6845_DTA_REG 0x03B5 ! 816: #define WRIT_COLR_6845_DTA_REG 0x03D5 ! 817: #define READ_MONO_6845_DTA_REG 0x03B5 ! 818: #define READ_COLR_6845_DTA_REG 0x03D5 ! 819: ! 820: #define WRIT_MONO_6845_DMC_REG 0x03B8 ! 821: #define WRIT_COLR_6845_DMC_REG 0x03D8 ! 822: #define READ_MONO_6845_DMC_REG 0x03B8 ! 823: #define READ_COLR_6845_DMC_REG 0x03D8 ! 824: ! 825: #define WRIT_6845_DCC_REG 0x03D9 ! 826: ! 827: #define WRIT_MONO_6845_DSC_REG 0x03BA ! 828: #define WRIT_COLR_6845_DSC_REG 0x03DA ! 829: #define READ_MONO_6845_DSC_REG 0x03BA ! 830: #define READ_COLR_6845_DSC_REG 0x03DA ! 831: ! 832: #define WRIT_6845_ATT_REG 0x03DE ! 833: #define WRIT_HERCULES_REG 0x03BF ! 834: ! 835: /* ! 836: *********************************************************************************************** ! 837: ** VGA :- Sequencer registers ** ! 838: *********************************************************************************************** ! 839: */ ! 840: ! 841: /* ! 842: ** New Registers ! 843: */ ! 844: ! 845: /* ! 846: ** List of index registers ! 847: */ ! 848: #define SEQ_TS_TSS 0x06 ! 849: #define SEQ_TS_TAM 0x07 ! 850: ! 851: /* ! 852: ** Bitfields - Sequencer Registers - TS state control Tseng Labs ! 853: */ ! 854: #define SEQ_TS_TSS 0x06 ! 855: ! 856: /* ! 857: ** Bitfields - Sequencer Registers - TS Auxiliary mode Tseng Labs ! 858: */ ! 859: #define SEQ_TS_VGM 0x80 ! 860: #define SEQ_TS_MC2 0x40 ! 861: #define SEQ_TS_RO2 0x20 ! 862: #define SEQ_TS_RO1 0x08 ! 863: #define SEQ_TS_SC2 0x02 ! 864: #define SEQ_TS_MC4 0x01 ! 865: #define SEQ_TS_MSK 0x14 ! 866: ! 867: /* ! 868: *********************************************************************************************** ! 869: ** VGA :- CRT Controller Registers ** ! 870: *********************************************************************************************** ! 871: */ ! 872: ! 873: /* ! 874: ** New Registers ! 875: */ ! 876: ! 877: /* ! 878: ** List of index registers ! 879: */ ! 880: #define CRT_TS_RAS 0x32 ! 881: #define CRT_TS_ESA 0x33 ! 882: #define CRT_TS_CTL 0x34 ! 883: #define CRT_TS_OVH 0x35 ! 884: #define CRT_TS_VS1 0x36 ! 885: #define CRT_TS_VS2 0x37 ! 886: ! 887: /* ! 888: ** Bitfields - CRT Controller registers - RAS/CAS Configuration Reggister Tseng Labs ! 889: */ ! 890: #define CRT_TS_SCM 0x80 ! 891: #define CRT_TS_RAL 0x40 ! 892: #define CRT_TS_RCD 0x20 ! 893: #define CRT_TS_RSP 0x18 ! 894: #define CRT_TS_CSP 0x04 ! 895: #define CRT_TS_CSW 0x03 ! 896: ! 897: /* ! 898: ** Bitfields - CRT Controller registers - Extended Start Register Tseng Labs ! 899: */ ! 900: #define CRT_TS_CSA 0x0C ! 901: #define CRT_TS_LSA 0x03 ! 902: ! 903: /* ! 904: ** Bitfields - CRT Controller registers - 6845 Compatibility Control Register Tseng Labs ! 905: */ ! 906: #define CRT_TS_CMP 0x80 ! 907: #define CRT_TS_EBA 0x40 ! 908: #define CRT_TS_EXL 0x20 ! 909: #define CRT_TS_EXR 0x10 ! 910: #define CRT_TS_EVS 0x08 ! 911: #define CRT_TS_TRI 0x04 ! 912: #define CRT_TS_MCK 0x02 ! 913: #define CRT_TS_EMK 0x01 ! 914: ! 915: /* ! 916: ** Bitfields - CRT Controller registers - Overflow High Tseng Labs ! 917: */ ! 918: #define CRT_TS_VIM 0x80 ! 919: #define CRT_TS_ARW 0x40 ! 920: #define CRT_TS_ESR 0x20 ! 921: #define CRT_TS_LCA 0x10 ! 922: #define CRT_TS_VSA 0x08 ! 923: #define CRT_TS_VDA 0x04 ! 924: #define CRT_TS_VTA 0x02 ! 925: #define CRT_TS_VBA 0x01 ! 926: ! 927: /* ! 928: ** Bitfields - CRT Controller registers - Video System Configuration 1 Tseng Labs ! 929: */ ! 930: #define CRT_TS_RWF 0x80 ! 931: #define CRT_TS_DMF 0x40 ! 932: #define CRT_TS_AMD 0x20 ! 933: #define CRT_TS_SGL 0x10 ! 934: #define CRT_TS_FWF 0x08 ! 935: #define CRT_TS_REF 0x07 ! 936: ! 937: /* ! 938: ** Bitfields - CRT Controller registers - Video System Configuration 2 Tseng Labs ! 939: */ ! 940: #define CRT_TS_DRM 0x80 ! 941: #define CRT_TS_TST 0x40 ! 942: #define CRT_TS_PTC 0x20 ! 943: #define CRT_TS_RM8 0x10 ! 944: #define CRT_TS_DMD 0x0C ! 945: #define CRT_TS_DBW 0x03 ! 946: ! 947: /* ! 948: *********************************************************************************************** ! 949: ** VGA :- GCR Controller Registers ** ! 950: *********************************************************************************************** ! 951: */ ! 952: ! 953: /* ! 954: ** New Registers ! 955: */ ! 956: #define READ_MONO_GCR_SEGS 0x03CD ! 957: #define READ_COLR_GCR_SEGS 0x03CD ! 958: #define READ_EIDR_GCR_SEGS 0x03CD ! 959: ! 960: #define WRIT_MONO_GCR_SEGS 0x03CD ! 961: #define WRIT_COLR_GCR_SEGS 0x03CD ! 962: #define WRIT_EIDR_GCR_SEGS 0x03CD ! 963: ! 964: /* ! 965: ** List of index registers ! 966: */ ! 967: ! 968: /* ! 969: ** Bitfields - GCR Controller registers - Segment Select Register Tseng Labs ! 970: */ ! 971: #define GCR_TS_GRD 0xF0 ! 972: #define GCR_TS_GWR 0x0F ! 973: ! 974: /* ! 975: *********************************************************************************************** ! 976: ** VGA :- ACR Controller Registers ** ! 977: *********************************************************************************************** ! 978: */ ! 979: ! 980: /* ! 981: ** New Registers ! 982: */ ! 983: ! 984: /* ! 985: ** List of index registers ! 986: */ ! 987: #define ACR_TS_MSC 0x16 ! 988: ! 989: /* ! 990: ** Bitfields - Attribute Controller Registers - Miscellaneous Tseng Labs ! 991: */ ! 992: #define ACR_TS_BYP 0x80 ! 993: #define ACR_TS_2BC 0x40 ! 994: #define ACR_TS_SHR 0x30 ! 995: #define ACR_TS_RES 0x0F ! 996: ! 997: /* ! 998: *********************************************************************************************** ! 999: ** VGA :- MODES ** ! 1000: *********************************************************************************************** ! 1001: */ ! 1002: #define MAX_TS_GEN_INDEX 0x01 ! 1003: #define MAX_TS_SEQ_INDEX SEQ_TS_TAM ! 1004: #define MAX_TS_CRT_INDEX CRT_TS_VS2 ! 1005: #define MAX_TS_GCR_INDEX GCR_AT_BIT__MASK ! 1006: #define MAX_TS_ACR_INDEX ACR_TS_MISC ! 1007: ! 1008: /* ! 1009: ** There now follows a symbolic list of modes, these will be used as indeces into tables of ! 1010: ** initial values to be put into the various registers for a given mode. ! 1011: */ ! 1012: ! 1013: #define MODE_VGA_TS_18 (MAX_VGA_AT_MODE + 0x01) ! 1014: #define MODE_VGA_TS_19 (MAX_VGA_AT_MODE + 0x02) ! 1015: #define MODE_VGA_TS_1A (MAX_VGA_AT_MODE + 0x03) ! 1016: #define MODE_VGA_TS_22 (MAX_VGA_AT_MODE + 0x04) ! 1017: #define MODE_VGA_TS_23 (MAX_VGA_AT_MODE + 0x05) ! 1018: #define MODE_VGA_TS_24 (MAX_VGA_AT_MODE + 0x06) ! 1019: #define MODE_VGA_TS_25 (MAX_VGA_AT_MODE + 0x07) ! 1020: #define MODE_VGA_TS_26 (MAX_VGA_AT_MODE + 0x08) ! 1021: #define MODE_VGA_TS_29 (MAX_VGA_AT_MODE + 0x09) ! 1022: #define MODE_VGA_TS_2A (MAX_VGA_AT_MODE + 0x0A) ! 1023: #define MODE_VGA_TS_2D (MAX_VGA_AT_MODE + 0x0B) ! 1024: #define MODE_VGA_TS_2E (MAX_VGA_AT_MODE + 0x0C) ! 1025: #define MODE_VGA_TS_30 (MAX_VGA_AT_MODE + 0x0D) ! 1026: #define MODE_VGA_TS_37i (MAX_VGA_AT_MODE + 0x0E) ! 1027: #define MODE_VGA_TS_37n (MAX_VGA_AT_MODE + 0x0F) ! 1028: #define MODE_VGA_TS_2F (MAX_VGA_AT_MODE + 0x10) ! 1029: #define MODE_VGA_TS_38i (MAX_VGA_AT_MODE + 0x11) ! 1030: #define MODE_VGA_TS_38n (MAX_VGA_AT_MODE + 0x12) ! 1031: ! 1032: #define MAX_VGA_TS_MODE MODE_VGA_TS_38n ! 1033: #define MIN_VGA_TS_MODE MODE_VGA_TS_18 ! 1034: #define NUM_VGA_TS_MODE (MAX_VGA_TS_MODE-MIN_VGA_TS_MODE) ! 1035: ! 1036: /* ! 1037: *********************************************************************************************** ! 1038: ** Tseng Labs Specific ** ! 1039: *********************************************************************************************** ! 1040: */ ! 1041: ! 1042: #define CHIP_IS_ET3000 0x10 ! 1043: #define CHIP_IS_ET4000 0x11 ! 1044: ! 1045: #define VGA_TS_MAX_SIZE 0x10000 ! 1046: ! 1047: ! 1048: extern void vga_read_bpp4planar_to_bpp2packed32(unsigned short *fb, unsigned int *dst); ! 1049: extern void vga_write_bpp2packed32_to_bpp4planar(unsigned int *dst, unsigned short *fb); ! 1050: ! 1051: // Global variables ! 1052: // TODO: Eliminate the need for these. ! 1053: extern unsigned int vgapriv_bpl; ! 1054: extern unsigned int vgapriv_vgamode; ! 1055: extern unsigned int *vgapriv_vgaAddr; ! 1056: extern unsigned int *vgapriv_vgaVirtAddr; ! 1057: extern int colr_mode; ! 1058: ! 1059: ! 1060: // Alternate VGA routines ! 1061: ! 1062: // Modes that we are interested in... ! 1063: // WG_foo are Wingine modes ! 1064: // VGA_foo are standard VGA modes. ! 1065: ! 1066: #define WG_MODE_40 0 // 640x480, 555 Non-interlaced, 50MHz dot clock ! 1067: #define WG_MODE_42 1 // 800x600, 555 Non-interlaced, 75MHz dot clock ! 1068: #define WG_MODE_50 2 // 640x480, 888 Non-interlaced, 75MHz dot clock ! 1069: #define WG_MODE_51 3 // 1Kx768, 555 Non-interlaced, 75MHz dot clock ! 1070: #define VGA_MODE_3 4 // 80x25 Alphanumeric mode ! 1071: #define VGA_MODE_12 5 // 640x480x4 VGA mode ! 1072: #define N_MODES 6 // Total number of modes ! 1073: ! 1074: /* ! 1075: * VGASetStdRegs() sets the standard VGA registers based on the supplied mode. ! 1076: * The modes are chosen from the above list. New modes can be added by adding ! 1077: * to the tables in vga_modes.c. This routine is usually only a subset of what ! 1078: * needs to be done for enhanced modes. ! 1079: */ ! 1080: extern int VGASetStdRegs(int mode); ! 1081: ! 1082: extern void fill_64K_plane(short colr); ! 1083: extern void save_colr_data(); ! 1084: extern void save_font_data(); ! 1085: extern void set_linr_mono(char max); ! 1086: extern void get_addr_range(short **segment_st, short **segment_nd); ! 1087: extern void select_write_segment(char num); ! 1088: extern void select_read_segment(char num); ! 1089:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.