1 /*
2  * PROJECT:         ReactOS Boot Loader
3  * LICENSE:         BSD - See COPYING.ARM in the top level directory
4  * FILE:            win32ss/drivers/miniport/vmx_svga/vmx_regs.h
5  * PURPOSE:         VMWARE SVGA-II Card Registers and Definitions
6  * PROGRAMMERS:     ReactOS Portable Systems Group
7  */
8 
9 //
10 // IT'S OVER 9000 THOUSAND!!!!!!!!!!
11 //
12 #define SVGA_MAGIC                  0x900000
13 
14 //
15 // Known VMWARE SVGA Versions
16 //
17 #define SVGA_VERSION_2              2
18 #define SVGA_VERSION_1              1
19 #define SVGA_VERSION_0              0
20 
21 //
22 // Known VMWARE SVGA IDs
23 //
24 #define SVGA_MAKE_ID(x)             (SVGA_MAGIC << 8 | (x))
25 #define SVGA_ID_2                   SVGA_MAKE_ID(SVGA_VERSION_2)
26 #define SVGA_ID_1                   SVGA_MAKE_ID(SVGA_VERSION_1)
27 #define SVGA_ID_0                   SVGA_MAKE_ID(SVGA_VERSION_0)
28 #define SVGA_ID_INVALID             0xFFFFFFFF
29 
30 //
31 // Card Capabilities
32 //
33 #define SVGA_CAP_NONE               0x00000000
34 #define SVGA_CAP_RECT_FILL	        0x00000001
35 #define SVGA_CAP_RECT_COPY	        0x00000002
36 #define SVGA_CAP_RECT_PAT_FILL      0x00000004
37 #define SVGA_CAP_LEGACY_OFFSCREEN   0x00000008
38 #define SVGA_CAP_RASTER_OP	        0x00000010
39 #define SVGA_CAP_CURSOR		        0x00000020
40 #define SVGA_CAP_CURSOR_BYPASS	    0x00000040
41 #define SVGA_CAP_CURSOR_BYPASS_2    0x00000080
42 #define SVGA_CAP_8BIT_EMULATION     0x00000100
43 #define SVGA_CAP_ALPHA_CURSOR       0x00000200
44 #define SVGA_CAP_GLYPH              0x00000400
45 #define SVGA_CAP_GLYPH_CLIPPING     0x00000800
46 #define SVGA_CAP_OFFSCREEN_1        0x00001000
47 #define SVGA_CAP_ALPHA_BLEND        0x00002000
48 #define SVGA_CAP_3D                 0x00004000
49 #define SVGA_CAP_EXTENDED_FIFO      0x00008000
50 #define SVGA_CAP_MULTIMON           0x00010000
51 #define SVGA_CAP_PITCHLOCK          0x00020000
52 #define SVGA_CAP_IRQMASK            0x00040000
53 #define SVGA_CAP_DISPLAY_TOPOLOGY   0x00080000
54 
55 //
56 // Port Offsets and Base in PCI Space
57 //
58 #define SVGA_LEGACY_BASE_PORT	    0x4560
59 #define SVGA_INDEX_PORT		        0x0
60 #define SVGA_VALUE_PORT		        0x1
61 #define SVGA_BIOS_PORT		        0x2
62 #define SVGA_NUM_PORTS		        0x3
63 #define SVGA_IRQSTATUS_PORT     	0x8
64 
65 //
66 // Invalid display ID
67 //
68 #define SVGA_INVALID_DISPLAY_ID     0xFFFFFFFF
69 
70 //
71 // Global Maximums
72 //
73 #define SVGA_MAX_BITS_PER_PIXEL	    32
74 #define SVGA_MAX_DEPTH              24
75 #define SVGA_MAX_DISPLAYS           10
76 #define SVGA_MAX_PSEUDOCOLOR_DEPTH	8
77 #define SVGA_MAX_PSEUDOCOLORS		(1 << SVGA_MAX_PSEUDOCOLOR_DEPTH)
78 #define SVGA_NUM_PALETTE_REGS       (3 * SVGA_MAX_PSEUDOCOLORS)
79 #define SVGA_FB_MAX_SIZE                                                    \
80    ((((SVGA_MAX_WIDTH * SVGA_MAX_HEIGHT *                                   \
81        SVGA_MAX_BITS_PER_PIXEL / 8) >> PAGE_SHIFT) + 1) << PAGE_SHIFT)
82 
83 //
84 // Card Registers
85 //
86 typedef enum _VMX_SVGA_REGISTERS
87 {
88     SVGA_REG_ID,
89     SVGA_REG_ENABLE,
90     SVGA_REG_WIDTH,
91     SVGA_REG_HEIGHT,
92     SVGA_REG_MAX_WIDTH,
93     SVGA_REG_MAX_HEIGHT,
94     SVGA_REG_DEPTH,
95     SVGA_REG_BITS_PER_PIXEL,
96     SVGA_REG_PSEUDOCOLOR,
97     SVGA_REG_RED_MASK,
98     SVGA_REG_GREEN_MASK,
99     SVGA_REG_BLUE_MASK,
100     SVGA_REG_BYTES_PER_LINE,
101     SVGA_REG_FB_START,
102     SVGA_REG_FB_OFFSET,
103     SVGA_REG_VRAM_SIZE,
104     SVGA_REG_FB_SIZE,
105     SVGA_REG_CAPABILITIES,
106     SVGA_REG_MEM_START,
107     SVGA_REG_MEM_SIZE,
108     SVGA_REG_CONFIG_DONE,
109     SVGA_REG_SYNC,
110     SVGA_REG_BUSY,
111     SVGA_REG_GUEST_ID,
112     SVGA_REG_CURSOR_ID,
113     SVGA_REG_CURSOR_X,
114     SVGA_REG_CURSOR_Y,
115     SVGA_REG_CURSOR_ON,
116     SVGA_REG_HOST_BITS_PER_PIXEL,
117     SVGA_REG_SCRATCH_SIZE,
118     SVGA_REG_MEM_REGS,
119     SVGA_REG_NUM_DISPLAYS,
120     SVGA_REG_PITCHLOCK,
121     SVGA_REG_IRQMASK,
122     SVGA_REG_NUM_GUEST_DISPLAYS,
123     SVGA_REG_DISPLAY_ID,
124     SVGA_REG_DISPLAY_IS_PRIMARY,
125     SVGA_REG_DISPLAY_POSITION_X,
126     SVGA_REG_DISPLAY_POSITION_Y,
127     SVGA_REG_DISPLAY_WIDTH,
128     SVGA_REG_DISPLAY_HEIGHT,
129     SVGA_REG_TOP,
130 } VMX_SVGA_REGISTERS;
131