2 * controlfb_hw.h: Constants of all sorts for controlfb
4 * Copyright (C) 1998 Daniel Jacobowitz <dan@debian.org>
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
11 * Based on an awful lot of code, including:
13 * control.c: Console support for PowerMac "control" display adaptor.
14 * Copyright (C) 1996 Paul Mackerras.
16 * The so far unpublished platinumfb.c
17 * Copyright (C) 1998 Jon Howell
21 * Structure of the registers for the RADACAL colormap device.
24 unsigned char addr
; /* index for both cmap and misc registers */
26 unsigned char crsr
; /* cursor palette */
28 unsigned char dat
; /* RADACAL misc register data */
30 unsigned char lut
; /* cmap data */
35 * Structure of the registers for the "control" display adaptor.
37 #define PAD(x) char x[12]
39 struct preg
{ /* padded register */
45 struct preg vcount
; /* vertical counter */
46 /* Vertical parameters are in units of 1/2 scan line */
47 struct preg vswin
; /* between vsblank and vssync */
48 struct preg vsblank
; /* vert start blank */
49 struct preg veblank
; /* vert end blank (display start) */
50 struct preg vewin
; /* between vesync and veblank */
51 struct preg vesync
; /* vert end sync */
52 struct preg vssync
; /* vert start sync */
53 struct preg vperiod
; /* vert period */
54 struct preg piped
; /* pipe delay hardware cursor */
55 /* Horizontal params are in units of 2 pixels */
56 struct preg hperiod
; /* horiz period - 2 */
57 struct preg hsblank
; /* horiz start blank */
58 struct preg heblank
; /* horiz end blank */
59 struct preg hesync
; /* horiz end sync */
60 struct preg hssync
; /* horiz start sync */
61 struct preg heq
; /* half horiz sync len */
62 struct preg hlfln
; /* half horiz period */
63 struct preg hserr
; /* horiz period - horiz sync len */
65 struct preg ctrl
; /* display control */
66 struct preg start_addr
; /* start address: 5 lsbs zero */
67 struct preg pitch
; /* addrs diff between scan lines */
68 struct preg mon_sense
; /* monitor sense bits */
69 struct preg vram_attr
; /* enable vram banks */
71 struct preg rfrcnt
; /* refresh count */
72 struct preg intr_ena
; /* interrupt enable */
73 struct preg intr_stat
; /* interrupt status */
77 struct control_regints
{
78 /* Vertical parameters are in units of 1/2 scan line */
79 unsigned vswin
; /* between vsblank and vssync */
80 unsigned vsblank
; /* vert start blank */
81 unsigned veblank
; /* vert end blank (display start) */
82 unsigned vewin
; /* between vesync and veblank */
83 unsigned vesync
; /* vert end sync */
84 unsigned vssync
; /* vert start sync */
85 unsigned vperiod
; /* vert period */
86 unsigned piped
; /* pipe delay hardware cursor */
87 /* Horizontal params are in units of 2 pixels */
88 /* Except, apparently, for hres > 1024 (or == 1280?) */
89 unsigned hperiod
; /* horiz period - 2 */
90 unsigned hsblank
; /* horiz start blank */
91 unsigned heblank
; /* horiz end blank */
92 unsigned hesync
; /* horiz end sync */
93 unsigned hssync
; /* horiz start sync */
94 unsigned heq
; /* half horiz sync len */
95 unsigned hlfln
; /* half horiz period */
96 unsigned hserr
; /* horiz period - horiz sync len */
101 * 3.9064MHz * 2**clock_params[2] * clock_params[1] / clock_params[0].
103 struct control_regvals
{
104 unsigned regs
[16]; /* for vswin .. hserr */
106 unsigned char radacal_ctrl
;
107 unsigned char clock_params
[3];
110 #define CTRLFB_OFF 16 /* position of pixel 0 in frame buffer */
114 * Best cmode supported by control
117 int m
[2]; /* 0: 2MB vram, 1: 4MB vram */
121 * Video modes supported by macmodes.c
123 static struct max_cmodes control_mac_modes
[] = {
124 {{-1,-1}}, /* 512x384, 60Hz interlaced (NTSC) */
125 {{-1,-1}}, /* 512x384, 60Hz */
126 {{-1,-1}}, /* 640x480, 50Hz interlaced (PAL) */
127 {{-1,-1}}, /* 640x480, 60Hz interlaced (NTSC) */
128 {{ 2, 2}}, /* 640x480, 60Hz (VGA) */
129 {{ 2, 2}}, /* 640x480, 67Hz */
130 {{-1,-1}}, /* 640x870, 75Hz (portrait) */
131 {{-1,-1}}, /* 768x576, 50Hz (PAL full frame) */
132 {{ 2, 2}}, /* 800x600, 56Hz */
133 {{ 2, 2}}, /* 800x600, 60Hz */
134 {{ 2, 2}}, /* 800x600, 72Hz */
135 {{ 2, 2}}, /* 800x600, 75Hz */
136 {{ 1, 2}}, /* 832x624, 75Hz */
137 {{ 1, 2}}, /* 1024x768, 60Hz */
138 {{ 1, 2}}, /* 1024x768, 70Hz (or 72Hz?) */
139 {{ 1, 2}}, /* 1024x768, 75Hz (VESA) */
140 {{ 1, 2}}, /* 1024x768, 75Hz */
141 {{ 1, 2}}, /* 1152x870, 75Hz */
142 {{ 0, 1}}, /* 1280x960, 75Hz */
143 {{ 0, 1}}, /* 1280x1024, 75Hz */