1 /** @file 2 The VGA Mini Port Protocol used to set the text display mode of a VGA controller. 3 4 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials are licensed and made available under 6 the terms and conditions of the BSD License that accompanies this distribution. 7 The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php. 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef __VGA_MINI_PORT_H_ 16 #define __VGA_MINI_PORT_H_ 17 18 /// 19 /// Global ID for the EFI_VGA_MINI_PORT_PROTOCOL. 20 /// 21 #define EFI_VGA_MINI_PORT_PROTOCOL_GUID \ 22 { \ 23 0xc7735a2f, 0x88f5, 0x4882, {0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 } \ 24 } 25 26 /// 27 /// Forward declaration for the EFI_VGA_MINI_PORT_PROTOCOL. 28 /// 29 typedef struct _EFI_VGA_MINI_PORT_PROTOCOL EFI_VGA_MINI_PORT_PROTOCOL; 30 31 /** 32 Sets the text display mode of a VGA controller. 33 34 Sets the text display mode of the VGA controller to the mode specified by 35 ModeNumber. A ModeNumber of 0 is a request for an 80x25 text mode. A 36 ModeNumber of 1 is a request for an 80x50 text mode. If ModeNumber is greater 37 than MaxModeNumber, then EFI_UNSUPPORTED is returned. If the VGA controller 38 is not functioning properly, then EFI_DEVICE_ERROR is returned. If the VGA 39 controller is sucessfully set to the mode number specified by ModeNumber, then 40 EFI_SUCCESS is returned. 41 42 @param[in] This A pointer to the EFI_VGA_MINI_PORT_PROTOCOL instance. 43 @param[in] ModeNumber The requested mode number. 0 for 80x25. 1 for 80x5. 44 45 @retval EFI_SUCCESS The mode number was set. 46 @retval EFI_UNSUPPORTED The mode number specified by ModeNumber is not supported. 47 @retval EFI_DEVICE_ERROR The device is not functioning properly. 48 49 **/ 50 typedef 51 EFI_STATUS 52 (EFIAPI *EFI_VGA_MINI_PORT_SET_MODE)( 53 IN EFI_VGA_MINI_PORT_PROTOCOL *This, 54 IN UINTN ModeNumber 55 ); 56 57 struct _EFI_VGA_MINI_PORT_PROTOCOL { 58 EFI_VGA_MINI_PORT_SET_MODE SetMode; 59 /// 60 /// MMIO base address of the VGA text mode framebuffer. Typically set to 0xB8000. 61 /// 62 UINT64 VgaMemoryOffset; 63 /// 64 /// I/O Port address for the VGA CRTC address register. Typically set to 0x3D4. 65 /// 66 UINT64 CrtcAddressRegisterOffset; 67 /// 68 /// I/O Port address for the VGA CRTC data register. Typically set to 0x3D5. 69 /// 70 UINT64 CrtcDataRegisterOffset; 71 /// 72 /// PCI Controller MMIO BAR index of the VGA text mode frame buffer. Typically 73 /// set to EFI_PCI_IO_PASS_THROUGH_BAR 74 /// 75 UINT8 VgaMemoryBar; 76 /// 77 /// PCI Controller I/O BAR index of the VGA CRTC address register. Typically 78 /// set to EFI_PCI_IO_PASS_THROUGH_BAR 79 /// 80 UINT8 CrtcAddressRegisterBar; 81 /// 82 /// PCI Controller I/O BAR index of the VGA CRTC data register. Typically set 83 /// to EFI_PCI_IO_PASS_THROUGH_BAR 84 /// 85 UINT8 CrtcDataRegisterBar; 86 /// 87 /// The maximum number of text modes that this VGA controller supports. 88 /// 89 UINT8 MaxMode; 90 }; 91 92 extern EFI_GUID gEfiVgaMiniPortProtocolGuid; 93 94 #endif 95