#include <Library/IoLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
\r
-#include <Drivers/PL111Lcd.h>\r
-\r
#include "LcdGraphicsOutputDxe.h"\r
+#include "PL111Lcd.h"\r
\r
/**********************************************************************\r
*\r
*\r
**********************************************************************/\r
\r
+EFI_STATUS\r
+LcdIdentify (\r
+ VOID\r
+ )\r
+{\r
+ DEBUG ((EFI_D_WARN, "Probing ID registers at 0x%lx for a PL111\n",\r
+ PL111_REG_CLCD_PERIPH_ID_0));\r
+\r
+ // Check if this is a PL111\r
+ if (MmioRead8 (PL111_REG_CLCD_PERIPH_ID_0) == PL111_CLCD_PERIPH_ID_0 &&\r
+ MmioRead8 (PL111_REG_CLCD_PERIPH_ID_1) == PL111_CLCD_PERIPH_ID_1 &&\r
+ (MmioRead8 (PL111_REG_CLCD_PERIPH_ID_2) & 0xf) == PL111_CLCD_PERIPH_ID_2 &&\r
+ MmioRead8 (PL111_REG_CLCD_PERIPH_ID_3) == PL111_CLCD_PERIPH_ID_3 &&\r
+ MmioRead8 (PL111_REG_CLCD_P_CELL_ID_0) == PL111_CLCD_P_CELL_ID_0 &&\r
+ MmioRead8 (PL111_REG_CLCD_P_CELL_ID_1) == PL111_CLCD_P_CELL_ID_1 &&\r
+ MmioRead8 (PL111_REG_CLCD_P_CELL_ID_2) == PL111_CLCD_P_CELL_ID_2 &&\r
+ MmioRead8 (PL111_REG_CLCD_P_CELL_ID_3) == PL111_CLCD_P_CELL_ID_3) {\r
+ return EFI_SUCCESS;\r
+ }\r
+ return EFI_NOT_FOUND;\r
+}\r
+\r
EFI_STATUS\r
LcdInitialize (\r
IN EFI_PHYSICAL_ADDRESS VramBaseAddress\r
VOID\r
)\r
{\r
- // Nothing to do in terms of hardware.\r
- // We could switch off the monitor display if required\r
-\r
- //TODO: ImplementMe\r
+ // Disable the controller\r
+ MmioAnd32 (PL111_REG_LCD_CONTROL, ~PL111_CTRL_LCD_EN);\r
}\r