1/*
2 * Copyright 2005-2009, Axel D��rfler, axeld@pinc-software.de.
3 * Copyright 2021, Adrien Destugues, pulkomandy@pulkomandy.tk
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef VESA_PRIVATE_H
7#define VESA_PRIVATE_H
8
9
10#include <Drivers.h>
11#include <Accelerant.h>
12#include <PCI.h>
13
14#include <drivers/bios.h>
15
16
17#define DEVICE_NAME				"vesa"
18#define VESA_ACCELERANT_NAME	"vesa.accelerant"
19
20
21struct vesa_get_supported_modes;
22struct vesa_mode;
23
24struct vesa_info {
25	uint32			cookie_magic;
26	int32			open_count;
27	int32			id;
28	pci_info*		pci;
29	struct vesa_shared_info* shared_info;
30	area_id			shared_area;
31	vesa_mode*		modes;
32	uint32			vbe_dpms_capabilities;
33	uint8			vbe_capabilities;
34	uint8			bits_per_gun;
35
36	addr_t			frame_buffer;
37	addr_t			physical_frame_buffer;
38	size_t			physical_frame_buffer_size;
39	bool			complete_frame_buffer_mapped;
40};
41
42extern status_t vesa_init(vesa_info& info);
43extern void vesa_uninit(vesa_info& info);
44extern status_t vesa_set_display_mode(vesa_info& info, uint32 mode);
45extern status_t vesa_set_custom_display_mode(vesa_info& info, display_mode& mode);
46extern status_t vesa_get_dpms_mode(vesa_info& info, uint32& mode);
47extern status_t vesa_set_dpms_mode(vesa_info& info, uint32 mode);
48extern status_t vesa_set_indexed_colors(vesa_info& info, uint8 first, uint8* colors, uint16 count);
49
50extern void vesa_identify_bios(bios_state* state, vesa_shared_info* sharedInfo);
51
52status_t vbe_call_prepare(bios_state** state);
53status_t vbe_get_mode_info(bios_state* state, uint16 mode, struct vbe_mode_info* modeInfo);
54uint32 get_color_space_for_depth(uint32 depth);
55status_t vbe_set_mode(bios_state* state, uint16 mode);
56status_t vbe_set_bits_per_gun(bios_state* state, vesa_info& info, uint8 bits);
57status_t remap_frame_buffer(vesa_info& info, addr_t physicalBase, uint32 width,
58	uint32 height, int8 depth, uint32 bytesPerRow, bool initializing);
59void vbe_call_finish(bios_state* state);
60
61#endif	/* VESA_PRIVATE_H */
62