summaryrefslogtreecommitdiffstats
path: root/bsps/i386/pc386/include/bsp/fb_vesa.h
blob: d8bfd1bcb4daa0e3443930f531cb28ee486bf10e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/**
 * @file fb_vesa.h
 *
 * @ingroup i386_pc386
 *
 * @brief Headers specific for framebuffer drivers utilizing VESA VBE.
 */

/*
 * Copyright (C) 2014  Jan Doležal (dolezj21@fel.cvut.cz)
 *                     CTU in Prague.
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.rtems.org/license/LICENSE.
 */

#include <bsp/vbe3.h>
#include <edid.h>

#ifndef _FB_VESA_H
#define _FB_VESA_H

#ifndef ASM /* ASM */

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


/* ----- Prototypes ----- */

/**
 * @brief Returns information about graphic's controller in the \p info_block
 * structure.
 *
 * @param[out] info_block pointer to the struct to be filled with
 *                  controller information
 * @param[in] queried_VBE_Version if >0x200 then video bios is asked to fill in
 *                          parameters which appeared with second version
 *                          of VBE.
 * @retval  ax register content as defined in VBE RETURN STATUS paragraph
 * @retval  -1 error calling graphical bios
 */
uint32_t VBE_controller_information (
    VBE_vbe_info_block *info_block,
    uint16_t queried_VBE_Version
);

/**
 * @brief Fills structure \p info_block with informations about selected mode in
 * \p mode_number variable.
 *
 * @param[out] info_block pointer to the struct to be filled with
 *                        mode information
 * @param[in] mode_number detailes of this mode to be filled
 * @retval  ax register content as defined in VBE RETURN STATUS paragraph
 * @retval  -1 error calling graphical bios
 */
uint32_t VBE_mode_information (
    VBE_mode_info_block *info_block,
    uint16_t mode_number
);

/**
 * @brief Sets graphics mode selected. If mode has refreshRateCtrl bit set, than
 * the \p info_block must be filled accordingly.
 *
 * @param[in] mode_number number of mode to be set
 * @param[in] info_block pointer to struct containing refresh rate control info
 * @retval  ax register content as defined in VBE RETURN STATUS paragraph
 * @retval  -1 error calling graphical bios
 */
uint32_t VBE_set_mode (
    uint16_t mode_number,
    VBE_CRTC_info_block *info_block
);

/**
 * @brief Get currently set mode number.
 *
 * @param[out] mode_number variable to be filled with current mode number
 * @retval  ax register content as defined in VBE RETURN STATUS paragraph
 * @retval  -1 error calling graphical bios
 */
uint32_t VBE_current_mode (
    uint16_t *mode_number
);

/**
 * @brief Gets information about display data channel implemented in the
 * graphic's controller.
 *
 * @param[in] controller_unit_number
 * @param[out] seconds_to_transfer_EDID_block approximate time to transfer one
 *                                      EDID block rounded up to seconds
 * @param[out] DDC_level_supported contains DDC version supported and
 *                          screen blanking state during transfer
 * @retval  ax register content as defined in VBE RETURN STATUS paragraph
 * @retval  -1 error calling graphical bios
 */
uint32_t VBE_report_DDC_capabilities (
    uint16_t controller_unit_number,
    uint8_t *seconds_to_transfer_EDID_block,
    uint8_t *DDC_level_supported
);

/**
 * @brief Reads selected EDID block from display attached to controller's
 * interface.
 *
 * @param[in] controller_unit_number
 * @param[in] EDID_block_number block no. to be read from the display
 * @param[out] buffer place to store block fetched from the display
 * @retval  ax register content as defined in VBE RETURN STATUS paragraph
 * @retval  -1 error calling graphical bios
 */
uint32_t VBE_read_EDID (
    uint16_t controller_unit_number,
    uint16_t EDID_block_number,
    EDID_edid1 *buffer
);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* ASM */

#endif /* _FB_VESA_H */