/** @file Copyright (c) 2011-2018, ARM Ltd. All rights reserved.
Copyright (c) 2022 Rockchip Electronics Co. Ltd. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef LCD_GRAPHICS_OUTPUT_DXE_H_ #define LCD_GRAPHICS_OUTPUT_DXE_H_ #include #include #include #include #include #include #include #include /** The enumeration maps the PL111 LcdBpp values used in the LCD Control Register **/ typedef enum { LcdBitsPerPixel_1 = 0, LcdBitsPerPixel_2, LcdBitsPerPixel_4, LcdBitsPerPixel_8, LcdBitsPerPixel_16_555, LcdBitsPerPixel_24, LcdBitsPerPixel_16_565, LcdBitsPerPixel_12_444, LcdBitsPerPixel_Max } LCD_BPP; // // Device structures // typedef struct { VENDOR_DEVICE_PATH Guid; EFI_DEVICE_PATH_PROTOCOL End; } LCD_GRAPHICS_DEVICE_PATH; typedef struct { UINT32 Signature; EFI_HANDLE Handle; EFI_GRAPHICS_OUTPUT_MODE_INFORMATION ModeInfo; EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE Mode; EFI_GRAPHICS_OUTPUT_PROTOCOL Gop; LCD_GRAPHICS_DEVICE_PATH DevicePath; EFI_EVENT ExitBootServicesEvent; } LCD_INSTANCE; #define LCD_INSTANCE_SIGNATURE SIGNATURE_32('l', 'c', 'd', '0') #define LCD_INSTANCE_FROM_GOP_THIS(a) CR (a, LCD_INSTANCE, Gop, LCD_INSTANCE_SIGNATURE) // // Function Prototypes // VOID LcdGraphicsExitBootServicesEvent ( IN EFI_EVENT Event, IN VOID *Context ); EFI_STATUS EFIAPI LcdGraphicsQueryMode ( IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, IN UINT32 ModeNumber, OUT UINTN *SizeOfInfo, OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info ); EFI_STATUS EFIAPI LcdGraphicsSetMode ( IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, IN UINT32 ModeNumber ); EFI_STATUS EFIAPI LcdGraphicsBlt ( IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, IN UINTN SourceX, IN UINTN SourceY, IN UINTN DestinationX, IN UINTN DestinationY, IN UINTN Width, IN UINTN Height, IN UINTN Delta OPTIONAL ); EFI_STATUS EFIAPI LcdGraphicsGetBpp ( IN UINT32 ModeNumber, OUT LCD_BPP* Bpp ); UINTN GetBytesPerPixel ( IN LCD_BPP Bpp ); EFI_STATUS EFIAPI GraphicsOutputDxeInitialize ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); EFI_STATUS InitializeDisplay ( IN LCD_INSTANCE* Instance ); #endif /* LCD_GRAPHICS_OUTPUT_DXE_H_ */