LcdGraphicsOutputDxe.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /** @file
  2. Copyright (c) 2011, ARM Ltd. All rights reserved.<BR>
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. **/
  5. #ifndef __OMAP3_DSS_GRAPHICS__
  6. #define __OMAP3_DSS_GRAPHICS__
  7. #include <Library/UefiBootServicesTableLib.h>
  8. #include <Library/UefiLib.h>
  9. #include <Library/DebugLib.h>
  10. #include <Library/MemoryAllocationLib.h>
  11. #include <Library/IoLib.h>
  12. #include <Protocol/DevicePathToText.h>
  13. #include <Protocol/EmbeddedExternalDevice.h>
  14. #include <Protocol/Cpu.h>
  15. #include <Guid/GlobalVariable.h>
  16. #include <Omap3530/Omap3530.h>
  17. #include <TPS65950.h>
  18. typedef struct {
  19. VENDOR_DEVICE_PATH Guid;
  20. EFI_DEVICE_PATH_PROTOCOL End;
  21. } LCD_GRAPHICS_DEVICE_PATH;
  22. typedef struct {
  23. UINTN Signature;
  24. EFI_HANDLE Handle;
  25. EFI_GRAPHICS_OUTPUT_MODE_INFORMATION ModeInfo;
  26. EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE Mode;
  27. EFI_GRAPHICS_OUTPUT_PROTOCOL Gop;
  28. LCD_GRAPHICS_DEVICE_PATH DevicePath;
  29. // EFI_EVENT ExitBootServicesEvent;
  30. } LCD_INSTANCE;
  31. #define LCD_INSTANCE_SIGNATURE SIGNATURE_32('l', 'c', 'd', '0')
  32. #define LCD_INSTANCE_FROM_GOP_THIS(a) CR (a, LCD_INSTANCE, Gop, LCD_INSTANCE_SIGNATURE)
  33. typedef struct {
  34. UINTN Mode;
  35. UINTN HorizontalResolution;
  36. UINTN VerticalResolution;
  37. UINT32 DssDivisor;
  38. UINT32 DispcDivisor;
  39. UINT32 HSync;
  40. UINT32 HFrontPorch;
  41. UINT32 HBackPorch;
  42. UINT32 VSync;
  43. UINT32 VFrontPorch;
  44. UINT32 VBackPorch;
  45. } LCD_MODE;
  46. EFI_STATUS
  47. InitializeDisplay (
  48. IN LCD_INSTANCE* Instance
  49. );
  50. EFI_STATUS
  51. EFIAPI
  52. LcdGraphicsQueryMode (
  53. IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
  54. IN UINT32 ModeNumber,
  55. OUT UINTN *SizeOfInfo,
  56. OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
  57. );
  58. EFI_STATUS
  59. EFIAPI
  60. LcdGraphicsSetMode (
  61. IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
  62. IN UINT32 ModeNumber
  63. );
  64. EFI_STATUS
  65. EFIAPI
  66. LcdGraphicsBlt (
  67. IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
  68. IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
  69. IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
  70. IN UINTN SourceX,
  71. IN UINTN SourceY,
  72. IN UINTN DestinationX,
  73. IN UINTN DestinationY,
  74. IN UINTN Width,
  75. IN UINTN Height,
  76. IN UINTN Delta OPTIONAL // Number of BYTES in a row of the BltBuffer
  77. );
  78. // HW registers
  79. #define CM_FCLKEN_DSS 0x48004E00
  80. #define CM_ICLKEN_DSS 0x48004E10
  81. #define DSS_CONTROL 0x48050040
  82. #define DSS_SYSCONFIG 0x48050010
  83. #define DSS_SYSSTATUS 0x48050014
  84. #define DISPC_CONTROL 0x48050440
  85. #define DISPC_CONFIG 0x48050444
  86. #define DISPC_SIZE_LCD 0x4805047C
  87. #define DISPC_TIMING_H 0x48050464
  88. #define DISPC_TIMING_V 0x48050468
  89. #define CM_CLKSEL_DSS 0x48004E40
  90. #define DISPC_DIVISOR 0x48050470
  91. #define DISPC_POL_FREQ 0x4805046C
  92. #define DISPC_GFX_TABLE_BA 0x480504B8
  93. #define DISPC_GFX_BA0 0x48050480
  94. #define DISPC_GFX_BA1 0x48050484
  95. #define DISPC_GFX_POS 0x48050488
  96. #define DISPC_GFX_SIZE 0x4805048C
  97. #define DISPC_GFX_ATTR 0x480504A0
  98. #define DISPC_GFX_PRELD 0x4805062C
  99. #define DISPC_DEFAULT_COLOR_0 0x4805044C
  100. //#define DISPC_IRQSTATUS
  101. // Bits
  102. #define EN_TV 0x4
  103. #define EN_DSS2 0x2
  104. #define EN_DSS1 0x1
  105. #define EN_DSS 0x1
  106. #define DSS_SOFTRESET 0x2
  107. #define DSS_RESETDONE 0x1
  108. #define BYPASS_MODE (BIT15 | BIT16)
  109. #define LCDENABLE BIT0
  110. #define ACTIVEMATRIX BIT3
  111. #define GOLCD BIT5
  112. #define DATALINES24 (BIT8 | BIT9)
  113. #define LCDENABLESIGNAL BIT28
  114. #define GFXENABLE BIT0
  115. #define RGB16 (0x6 << 1)
  116. #define BURSTSIZE16 (0x2 << 6)
  117. #define CLEARLOADMODE ~(BIT2 | BIT1)
  118. #define LOAD_FRAME_ONLY BIT2
  119. #endif