~ubuntu-branches/debian/stretch/grub2/stretch

« back to all changes in this revision

Viewing changes to include/grub/vga.h

Tags: upstream-1.98+20100705
ImportĀ upstreamĀ versionĀ 1.98+20100705

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  GRUB  --  GRand Unified Bootloader
 
3
 *  Copyright (C) 2010  Free Software Foundation, Inc.
 
4
 *
 
5
 *  GRUB is free software: you can redistribute it and/or modify
 
6
 *  it under the terms of the GNU General Public License as published by
 
7
 *  the Free Software Foundation, either version 3 of the License, or
 
8
 *  (at your option) any later version.
 
9
 *
 
10
 *  GRUB is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 
17
 */
 
18
 
 
19
#ifndef GRUB_VGA_HEADER
 
20
#define GRUB_VGA_HEADER 1
 
21
 
 
22
enum
 
23
  {
 
24
    GRUB_VGA_IO_ARX = 0x3c0,
 
25
    GRUB_VGA_IO_SR_INDEX = 0x3c4,
 
26
    GRUB_VGA_IO_SR_DATA = 0x3c5,
 
27
    GRUB_VGA_IO_PIXEL_MASK = 0x3c6,
 
28
    GRUB_VGA_IO_PALLETTE_READ_INDEX = 0x3c7,
 
29
    GRUB_VGA_IO_PALLETTE_WRITE_INDEX = 0x3c8,
 
30
    GRUB_VGA_IO_PALLETTE_DATA = 0x3c9,
 
31
    GRUB_VGA_IO_GR_INDEX = 0x3ce,
 
32
    GRUB_VGA_IO_GR_DATA = 0x3cf,
 
33
    GRUB_VGA_IO_CR_INDEX = 0x3d4,
 
34
    GRUB_VGA_IO_CR_DATA = 0x3d5,
 
35
    GRUB_VGA_IO_INPUT_STATUS1_REGISTER = 0x3da
 
36
  };
 
37
 
 
38
#define GRUB_VGA_IO_INPUT_STATUS1_VERTR_BIT 0x08
 
39
 
 
40
enum
 
41
  {
 
42
    GRUB_VGA_CR_WIDTH = 0x01,
 
43
    GRUB_VGA_CR_OVERFLOW = 0x07,
 
44
    GRUB_VGA_CR_CELL_HEIGHT = 0x09,
 
45
    GRUB_VGA_CR_CURSOR_START = 0x0a,
 
46
    GRUB_VGA_CR_CURSOR_END = 0x0b,
 
47
    GRUB_VGA_CR_START_ADDR_HIGH_REGISTER = 0x0c,
 
48
    GRUB_VGA_CR_START_ADDR_LOW_REGISTER = 0x0d,
 
49
    GRUB_VGA_CR_CURSOR_ADDR_HIGH = 0x0e,
 
50
    GRUB_VGA_CR_CURSOR_ADDR_LOW = 0x0f,
 
51
    GRUB_VGA_CR_VSYNC_END = 0x11,
 
52
    GRUB_VGA_CR_HEIGHT = 0x12,
 
53
    GRUB_VGA_CR_PITCH = 0x13,
 
54
    GRUB_VGA_CR_MODE = 0x17,
 
55
    GRUB_VGA_CR_LINE_COMPARE = 0x18,
 
56
  };
 
57
 
 
58
#define GRUB_VGA_CR_WIDTH_DIVISOR 8
 
59
#define GRUB_VGA_CR_OVERFLOW_HEIGHT1_SHIFT 7
 
60
#define GRUB_VGA_CR_OVERFLOW_HEIGHT1_MASK 0x02
 
61
#define GRUB_VGA_CR_OVERFLOW_HEIGHT2_SHIFT 3
 
62
#define GRUB_VGA_CR_OVERFLOW_HEIGHT2_MASK 0xc0
 
63
#define GRUB_VGA_CR_OVERFLOW_LINE_COMPARE_SHIFT 4
 
64
#define GRUB_VGA_CR_OVERFLOW_LINE_COMPARE_MASK 0x10
 
65
 
 
66
#define GRUB_VGA_CR_CELL_HEIGHT_LINE_COMPARE_MASK 0x40
 
67
#define GRUB_VGA_CR_CELL_HEIGHT_LINE_COMPARE_SHIFT 3
 
68
 
 
69
enum
 
70
  {
 
71
    GRUB_VGA_CR_CURSOR_START_DISABLE = (1 << 5)
 
72
  };
 
73
 
 
74
#define GRUB_VGA_CR_PITCH_DIVISOR 8
 
75
 
 
76
enum
 
77
  {
 
78
    GRUB_VGA_CR_MODE_NO_CGA = 0x01,
 
79
    GRUB_VGA_CR_MODE_NO_HERCULES = 0x02,
 
80
    GRUB_VGA_CR_MODE_BYTE_MODE = 0x40,
 
81
    GRUB_VGA_CR_MODE_TIMING_ENABLE = 0x80
 
82
  };
 
83
 
 
84
enum
 
85
  {
 
86
    GRUB_VGA_SR_CLOCKING_MODE = 1,
 
87
    GRUB_VGA_SR_MAP_MASK_REGISTER = 2,
 
88
    GRUB_VGA_SR_MEMORY_MODE = 4,
 
89
  };
 
90
 
 
91
enum
 
92
  {
 
93
    GRUB_VGA_SR_CLOCKING_MODE_8_DOT_CLOCK = 1
 
94
  };
 
95
 
 
96
enum
 
97
  {
 
98
    GRUB_VGA_SR_MEMORY_MODE_NORMAL = 0,
 
99
    GRUB_VGA_SR_MEMORY_MODE_CHAIN4 = 8
 
100
  };
 
101
 
 
102
enum
 
103
  {
 
104
    GRUB_VGA_GR_DATA_ROTATE = 3,
 
105
    GRUB_VGA_GR_READ_MAP_REGISTER = 4,
 
106
    GRUB_VGA_GR_MODE = 5,
 
107
    GRUB_VGA_GR_GR6 = 6,
 
108
    GRUB_VGA_GR_BITMASK = 8,
 
109
    GRUB_VGA_GR_MAX
 
110
  };
 
111
 
 
112
enum
 
113
  {
 
114
    GRUB_VGA_TEXT_TEXT_PLANE = 0,
 
115
    GRUB_VGA_TEXT_ATTR_PLANE = 1,
 
116
    GRUB_VGA_TEXT_FONT_PLANE = 2
 
117
  };
 
118
 
 
119
enum
 
120
  {
 
121
    GRUB_VGA_GR_GR6_GRAPHICS_MODE = 1,
 
122
    GRUB_VGA_GR_GR6_MMAP_CGA = (3 << 2)
 
123
  };
 
124
 
 
125
enum
 
126
  {
 
127
    GRUB_VGA_GR_MODE_READ_MODE1 = 0x08,
 
128
    GRUB_VGA_GR_MODE_ODD_EVEN = 0x10,
 
129
    GRUB_VGA_GR_MODE_256_COLOR = 0x40
 
130
  };
 
131
 
 
132
static inline void
 
133
grub_vga_gr_write (grub_uint8_t val, grub_uint8_t addr)
 
134
{
 
135
  grub_outb (addr, GRUB_VGA_IO_GR_INDEX);
 
136
  grub_outb (val, GRUB_VGA_IO_GR_DATA);
 
137
}
 
138
 
 
139
static inline grub_uint8_t
 
140
grub_vga_gr_read (grub_uint8_t addr)
 
141
{
 
142
  grub_outb (addr, GRUB_VGA_IO_GR_INDEX);
 
143
  return grub_inb (GRUB_VGA_IO_GR_DATA);
 
144
}
 
145
 
 
146
static inline void
 
147
grub_vga_cr_write (grub_uint8_t val, grub_uint8_t addr)
 
148
{
 
149
  grub_outb (addr, GRUB_VGA_IO_CR_INDEX);
 
150
  grub_outb (val, GRUB_VGA_IO_CR_DATA);
 
151
}
 
152
 
 
153
static inline grub_uint8_t
 
154
grub_vga_cr_read (grub_uint8_t addr)
 
155
{
 
156
  grub_outb (addr, GRUB_VGA_IO_CR_INDEX);
 
157
  return grub_inb (GRUB_VGA_IO_CR_DATA);
 
158
}
 
159
 
 
160
static inline void
 
161
grub_vga_sr_write (grub_uint8_t val, grub_uint8_t addr)
 
162
{
 
163
  grub_outb (addr, GRUB_VGA_IO_SR_INDEX);
 
164
  grub_outb (val, GRUB_VGA_IO_SR_DATA);
 
165
}
 
166
 
 
167
static inline grub_uint8_t
 
168
grub_vga_sr_read (grub_uint8_t addr)
 
169
{
 
170
  grub_outb (addr, GRUB_VGA_IO_SR_INDEX);
 
171
  return grub_inb (GRUB_VGA_IO_SR_DATA);
 
172
}
 
173
 
 
174
static inline void
 
175
grub_vga_palette_read (grub_uint8_t addr, grub_uint8_t *r, grub_uint8_t *g,
 
176
                       grub_uint8_t *b)
 
177
{
 
178
  grub_outb (addr, GRUB_VGA_IO_PALLETTE_READ_INDEX);
 
179
  *r = grub_inb (GRUB_VGA_IO_PALLETTE_DATA);
 
180
  *g = grub_inb (GRUB_VGA_IO_PALLETTE_DATA);
 
181
  *b = grub_inb (GRUB_VGA_IO_PALLETTE_DATA);
 
182
}
 
183
 
 
184
static inline void
 
185
grub_vga_palette_write (grub_uint8_t addr, grub_uint8_t r, grub_uint8_t g,
 
186
                        grub_uint8_t b)
 
187
{
 
188
  grub_outb (addr, GRUB_VGA_IO_PALLETTE_WRITE_INDEX);
 
189
  grub_outb (r, GRUB_VGA_IO_PALLETTE_DATA);
 
190
  grub_outb (g, GRUB_VGA_IO_PALLETTE_DATA);
 
191
  grub_outb (b, GRUB_VGA_IO_PALLETTE_DATA);
 
192
}
 
193
 
 
194
 
 
195
#endif