Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:41

0001 /**
0002  * @file
0003  *
0004  * @ingroup RTEMSBSPsI386
0005  *
0006  * @brief Headers specific for framebuffer drivers utilizing VESA VBE.
0007  */
0008 
0009 /*
0010  * Copyright (C) 2014  Jan Doležal (dolezj21@fel.cvut.cz)
0011  *                     CTU in Prague.
0012  *
0013  *  The license and distribution terms for this file may be
0014  *  found in the file LICENSE in this distribution or at
0015  *  http://www.rtems.org/license/LICENSE.
0016  */
0017 
0018 #include <bsp/vbe3.h>
0019 #include <edid.h>
0020 
0021 #ifndef _FB_VESA_H
0022 #define _FB_VESA_H
0023 
0024 #ifndef ASM /* ASM */
0025 
0026 #include <stdint.h>
0027 
0028 #ifdef __cplusplus
0029 extern "C" {
0030 #endif /* __cplusplus */
0031 
0032 
0033 /* ----- Prototypes ----- */
0034 
0035 /**
0036  * @brief Returns information about graphic's controller in the \p info_block
0037  * structure.
0038  *
0039  * @param[out] info_block pointer to the struct to be filled with
0040  *                  controller information
0041  * @param[in] queried_VBE_Version if >0x200 then video bios is asked to fill in
0042  *                          parameters which appeared with second version
0043  *                          of VBE.
0044  * @retval  ax register content as defined in VBE RETURN STATUS paragraph
0045  * @retval  -1 error calling graphical bios
0046  */
0047 uint32_t VBE_controller_information (
0048     VBE_vbe_info_block *info_block,
0049     uint16_t queried_VBE_Version
0050 );
0051 
0052 /**
0053  * @brief Fills structure \p info_block with informations about selected mode in
0054  * \p mode_number variable.
0055  *
0056  * @param[out] info_block pointer to the struct to be filled with
0057  *                        mode information
0058  * @param[in] mode_number detailes of this mode to be filled
0059  * @retval  ax register content as defined in VBE RETURN STATUS paragraph
0060  * @retval  -1 error calling graphical bios
0061  */
0062 uint32_t VBE_mode_information (
0063     VBE_mode_info_block *info_block,
0064     uint16_t mode_number
0065 );
0066 
0067 /**
0068  * @brief Sets graphics mode selected. If mode has refreshRateCtrl bit set, than
0069  * the \p info_block must be filled accordingly.
0070  *
0071  * @param[in] mode_number number of mode to be set
0072  * @param[in] info_block pointer to struct containing refresh rate control info
0073  * @retval  ax register content as defined in VBE RETURN STATUS paragraph
0074  * @retval  -1 error calling graphical bios
0075  */
0076 uint32_t VBE_set_mode (
0077     uint16_t mode_number,
0078     VBE_CRTC_info_block *info_block
0079 );
0080 
0081 /**
0082  * @brief Get currently set mode number.
0083  *
0084  * @param[out] mode_number variable to be filled with current mode number
0085  * @retval  ax register content as defined in VBE RETURN STATUS paragraph
0086  * @retval  -1 error calling graphical bios
0087  */
0088 uint32_t VBE_current_mode (
0089     uint16_t *mode_number
0090 );
0091 
0092 /**
0093  * @brief Gets information about display data channel implemented in the
0094  * graphic's controller.
0095  *
0096  * @param[in] controller_unit_number
0097  * @param[out] seconds_to_transfer_EDID_block approximate time to transfer one
0098  *                                      EDID block rounded up to seconds
0099  * @param[out] DDC_level_supported contains DDC version supported and
0100  *                          screen blanking state during transfer
0101  * @retval  ax register content as defined in VBE RETURN STATUS paragraph
0102  * @retval  -1 error calling graphical bios
0103  */
0104 uint32_t VBE_report_DDC_capabilities (
0105     uint16_t controller_unit_number,
0106     uint8_t *seconds_to_transfer_EDID_block,
0107     uint8_t *DDC_level_supported
0108 );
0109 
0110 /**
0111  * @brief Reads selected EDID block from display attached to controller's
0112  * interface.
0113  *
0114  * @param[in] controller_unit_number
0115  * @param[in] EDID_block_number block no. to be read from the display
0116  * @param[out] buffer place to store block fetched from the display
0117  * @retval  ax register content as defined in VBE RETURN STATUS paragraph
0118  * @retval  -1 error calling graphical bios
0119  */
0120 uint32_t VBE_read_EDID (
0121     uint16_t controller_unit_number,
0122     uint16_t EDID_block_number,
0123     EDID_edid1 *buffer
0124 );
0125 
0126 #ifdef __cplusplus
0127 }
0128 #endif /* __cplusplus */
0129 
0130 #endif /* ASM */
0131 
0132 #endif /* _FB_VESA_H */