17d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin/** @file
27d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
37d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  Copyright (c) 2011, ARM Ltd. All rights reserved.<BR>
47d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  This program and the accompanying materials
57d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  are licensed and made available under the terms and conditions of the BSD License
67d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  which accompanies this distribution.  The full text of the license may be found at
77d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  http://opensource.org/licenses/bsd-license.php
87d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
97d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
107d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
117d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
127d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin**/
137d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
147d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#ifndef __ARM_VE_GRAPHICS_DXE_H__
157d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#define __ARM_VE_GRAPHICS_DXE_H__
167d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
177d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
187d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#include <Base.h>
193723a71a33d88307d96bca4facdce7d0120d922foliviermartin
203723a71a33d88307d96bca4facdce7d0120d922foliviermartin#include <Library/DebugLib.h>
213723a71a33d88307d96bca4facdce7d0120d922foliviermartin#include <Library/LcdPlatformLib.h>
223723a71a33d88307d96bca4facdce7d0120d922foliviermartin#include <Library/PcdLib.h>
237d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#include <Library/UefiLib.h>
243723a71a33d88307d96bca4facdce7d0120d922foliviermartin
257d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#include <Protocol/DevicePath.h>
267d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
277d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
287d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin//
297d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin// Device structures
307d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin//
317d0f2f23d2e47341dc78096644ef57db0542b076oliviermartintypedef struct {
327d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  VENDOR_DEVICE_PATH            Guid;
337d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_DEVICE_PATH_PROTOCOL      End;
347d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin} LCD_GRAPHICS_DEVICE_PATH;
357d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
367d0f2f23d2e47341dc78096644ef57db0542b076oliviermartintypedef struct {
374d83284aeecb8c2e6e5fe16bfd2cc75346709625oliviermartin  UINT32                                Signature;
387d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_HANDLE                            Handle;
397d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  ModeInfo;
407d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE     Mode;
417d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_GRAPHICS_OUTPUT_PROTOCOL          Gop;
427d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  LCD_GRAPHICS_DEVICE_PATH              DevicePath;
437d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_EVENT                             ExitBootServicesEvent;
447d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin} LCD_INSTANCE;
457d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
467d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#define LCD_INSTANCE_SIGNATURE  SIGNATURE_32('l', 'c', 'd', '0')
477d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
487d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#define LCD_INSTANCE_FROM_GOP_THIS(a)     CR (a, LCD_INSTANCE, Gop, LCD_INSTANCE_SIGNATURE)
497d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
507d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin//
517d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin// Function Prototypes
527d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin//
537d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
547d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinVOID
557d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdGraphicsExitBootServicesEvent (
567d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin    IN EFI_EVENT  Event,
577d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin    IN VOID       *Context
587d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
597d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
607d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
617d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFIAPI
627d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdGraphicsQueryMode (
637d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,
647d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN  UINT32                                ModeNumber,
657d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  OUT UINTN                                 *SizeOfInfo,
667d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info
677d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
687d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
697d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
707d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFIAPI
717d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdGraphicsSetMode (
727d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN EFI_GRAPHICS_OUTPUT_PROTOCOL  *This,
737d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINT32                        ModeNumber
747d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
757d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
767d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
777d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFIAPI
787d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdGraphicsBlt (
797d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN EFI_GRAPHICS_OUTPUT_PROTOCOL       *This,
807d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL  *BltBuffer,     OPTIONAL
817d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION  BltOperation,
827d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              SourceX,
837d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              SourceY,
847d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              DestinationX,
857d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              DestinationY,
867d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              Width,
877d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              Height,
887d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINTN                              Delta           OPTIONAL
897d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
907d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
917d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinUINTN
927d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinGetBytesPerPixel (
937d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN  LCD_BPP       Bpp
947d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  );
957d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
967d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
977d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFIAPI
987d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinGraphicsOutputDxeInitialize (
997d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN EFI_HANDLE         ImageHandle,
1007d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN EFI_SYSTEM_TABLE   *SystemTable
1017d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
1027d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
1037d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
1047d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinInitializeDisplay (
1057d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN LCD_INSTANCE* Instance
1067d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
1077d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
1087d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
1099dc94d9891ec4d6f946f85f25be4ccf551e2a7edArd BiesheuvelLcdIdentify (
1107d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  VOID
1117d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
1127d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
1137d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
1147d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdInitialize (
1157d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  EFI_PHYSICAL_ADDRESS  VramBaseAddress
1167d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
1177d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
1187d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinEFI_STATUS
1197d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdSetMode (
1207d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  IN UINT32  ModeNumber
1217d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
1227d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
1237d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinVOID
1247d0f2f23d2e47341dc78096644ef57db0542b076oliviermartinLcdShutdown (
1257d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin  VOID
1267d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin);
1277d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin
1287d0f2f23d2e47341dc78096644ef57db0542b076oliviermartin#endif /* __ARM_VE_GRAPHICS_DXE_H__ */
129