Serenity Operating System
1/*
2 * Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/Types.h>
10
11namespace Kernel {
12
13static constexpr size_t vmware_svga_version_2_id = (0x900000UL << 8 | (2));
14
15enum class VMWareDisplayRegistersOffset {
16 ID = 0,
17 ENABLE = 1,
18 WIDTH = 2,
19 HEIGHT = 3,
20 MAX_WIDTH = 4,
21 MAX_HEIGHT = 5,
22 DEPTH = 6,
23 BITS_PER_PIXEL = 7, /* Current bpp in the guest */
24 PSEUDOCOLOR = 8,
25 RED_MASK = 9,
26 GREEN_MASK = 10,
27 BLUE_MASK = 11,
28 BYTES_PER_LINE = 12,
29 FB_OFFSET = 14,
30 VRAM_SIZE = 15,
31 FB_SIZE = 16,
32
33 CAPABILITIES = 17,
34 MEM_SIZE = 19,
35 CONFIG_DONE = 20, /* Set when memory area configured */
36 SYNC = 21, /* See "FIFO Synchronization Registers" */
37 BUSY = 22, /* See "FIFO Synchronization Registers" */
38 SCRATCH_SIZE = 29, /* Number of scratch registers */
39 MEM_REGS = 30, /* Number of FIFO registers */
40 PITCHLOCK = 32, /* Fixed pitch for all modes */
41 IRQMASK = 33, /* Interrupt mask */
42
43 GMR_ID = 41,
44 GMR_DESCRIPTOR = 42,
45 GMR_MAX_IDS = 43,
46 GMR_MAX_DESCRIPTOR_LENGTH = 44,
47
48 TRACES = 45, /* Enable trace-based updates even when FIFO is on */
49 GMRS_MAX_PAGES = 46, /* Maximum number of 4KB pages for all GMRs */
50 MEMORY_SIZE = 47, /* Total dedicated device memory excluding FIFO */
51};
52
53struct [[gnu::packed]] VMWareDisplayFIFORegisters {
54 u32 start;
55 u32 size;
56 u32 next_command;
57 u32 stop;
58 u32 commands[];
59};
60
61}