REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the ArmPlatformPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Andrew Fish <afish@apple.com>
		
			
				
	
	
		
			172 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   This file contains the platform independent parts of PL111Lcd
 | |
| 
 | |
|   Copyright (c) 2011-2018, ARM Ltd. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/IoLib.h>
 | |
| #include <Library/LcdHwLib.h>
 | |
| #include <Library/LcdPlatformLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| 
 | |
| #include "PL111Lcd.h"
 | |
| 
 | |
| /** Check for presence of PL111.
 | |
| 
 | |
|   @retval EFI_SUCCESS          Returns success if platform implements a
 | |
|                                PL111 controller.
 | |
| 
 | |
|   @retval EFI_NOT_FOUND        PL111 display controller not found the plaform.
 | |
| **/
 | |
| EFI_STATUS
 | |
| LcdIdentify (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   DEBUG ((
 | |
|     DEBUG_WARN,
 | |
|     "Probing ID registers at 0x%lx for a PL111\n",
 | |
|     PL111_REG_CLCD_PERIPH_ID_0
 | |
|     ));
 | |
| 
 | |
|   // Check if this is a PL111
 | |
|   if ((MmioRead8 (PL111_REG_CLCD_PERIPH_ID_0) == PL111_CLCD_PERIPH_ID_0) &&
 | |
|       (MmioRead8 (PL111_REG_CLCD_PERIPH_ID_1) == PL111_CLCD_PERIPH_ID_1) &&
 | |
|       ((MmioRead8 (PL111_REG_CLCD_PERIPH_ID_2) & 0xf) == PL111_CLCD_PERIPH_ID_2) &&
 | |
|       (MmioRead8 (PL111_REG_CLCD_PERIPH_ID_3) == PL111_CLCD_PERIPH_ID_3) &&
 | |
|       (MmioRead8 (PL111_REG_CLCD_P_CELL_ID_0) == PL111_CLCD_P_CELL_ID_0) &&
 | |
|       (MmioRead8 (PL111_REG_CLCD_P_CELL_ID_1) == PL111_CLCD_P_CELL_ID_1) &&
 | |
|       (MmioRead8 (PL111_REG_CLCD_P_CELL_ID_2) == PL111_CLCD_P_CELL_ID_2) &&
 | |
|       (MmioRead8 (PL111_REG_CLCD_P_CELL_ID_3) == PL111_CLCD_P_CELL_ID_3))
 | |
|   {
 | |
|     return EFI_SUCCESS;
 | |
|   }
 | |
| 
 | |
|   return EFI_NOT_FOUND;
 | |
| }
 | |
| 
 | |
| /** Initialize display.
 | |
| 
 | |
|   @param[in]  VramBaseAddress    Address of the framebuffer.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Initialization of display successful.
 | |
| **/
 | |
| EFI_STATUS
 | |
| LcdInitialize (
 | |
|   IN EFI_PHYSICAL_ADDRESS  VramBaseAddress
 | |
|   )
 | |
| {
 | |
|   // Define start of the VRAM. This never changes for any graphics mode
 | |
|   MmioWrite32 (PL111_REG_LCD_UP_BASE, (UINT32)VramBaseAddress);
 | |
|   MmioWrite32 (PL111_REG_LCD_LP_BASE, 0); // We are not using a double buffer
 | |
| 
 | |
|   // Disable all interrupts from the PL111
 | |
|   MmioWrite32 (PL111_REG_LCD_IMSC, 0);
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 | |
| 
 | |
| /** Set requested mode of the display.
 | |
| 
 | |
|   @param[in] ModeNumbe           Display mode number.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Display mode set successfuly.
 | |
|   @retval !(EFI_SUCCESS)         Other errors.
 | |
| **/
 | |
| EFI_STATUS
 | |
| LcdSetMode (
 | |
|   IN UINT32  ModeNumber
 | |
|   )
 | |
| {
 | |
|   EFI_STATUS    Status;
 | |
|   SCAN_TIMINGS  *Horizontal;
 | |
|   SCAN_TIMINGS  *Vertical;
 | |
|   UINT32        LcdControl;
 | |
|   LCD_BPP       LcdBpp;
 | |
| 
 | |
|   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  ModeInfo;
 | |
| 
 | |
|   // Set the video mode timings and other relevant information
 | |
|   Status = LcdPlatformGetTimings (
 | |
|              ModeNumber,
 | |
|              &Horizontal,
 | |
|              &Vertical
 | |
|              );
 | |
|   if (EFI_ERROR (Status)) {
 | |
|     ASSERT_EFI_ERROR (Status);
 | |
|     return Status;
 | |
|   }
 | |
| 
 | |
|   ASSERT (Horizontal != NULL);
 | |
|   ASSERT (Vertical != NULL);
 | |
| 
 | |
|   Status = LcdPlatformGetBpp (ModeNumber, &LcdBpp);
 | |
|   if (EFI_ERROR (Status)) {
 | |
|     ASSERT_EFI_ERROR (Status);
 | |
|     return Status;
 | |
|   }
 | |
| 
 | |
|   // Get the pixel format information
 | |
|   Status = LcdPlatformQueryMode (ModeNumber, &ModeInfo);
 | |
|   if (EFI_ERROR (Status)) {
 | |
|     ASSERT_EFI_ERROR (Status);
 | |
|     return Status;
 | |
|   }
 | |
| 
 | |
|   // Disable the CLCD_LcdEn bit
 | |
|   MmioAnd32 (PL111_REG_LCD_CONTROL, ~PL111_CTRL_LCD_EN);
 | |
| 
 | |
|   // Set Timings
 | |
|   MmioWrite32 (
 | |
|     PL111_REG_LCD_TIMING_0,
 | |
|     HOR_AXIS_PANEL (
 | |
|       Horizontal->BackPorch,
 | |
|       Horizontal->FrontPorch,
 | |
|       Horizontal->Sync,
 | |
|       Horizontal->Resolution
 | |
|       )
 | |
|     );
 | |
| 
 | |
|   MmioWrite32 (
 | |
|     PL111_REG_LCD_TIMING_1,
 | |
|     VER_AXIS_PANEL (
 | |
|       Vertical->BackPorch,
 | |
|       Vertical->FrontPorch,
 | |
|       Vertical->Sync,
 | |
|       Vertical->Resolution
 | |
|       )
 | |
|     );
 | |
| 
 | |
|   MmioWrite32 (
 | |
|     PL111_REG_LCD_TIMING_2,
 | |
|     CLK_SIG_POLARITY (Horizontal->Resolution)
 | |
|     );
 | |
| 
 | |
|   MmioWrite32 (PL111_REG_LCD_TIMING_3, 0);
 | |
| 
 | |
|   // PL111_REG_LCD_CONTROL
 | |
|   LcdControl = PL111_CTRL_LCD_EN | PL111_CTRL_LCD_BPP (LcdBpp) |
 | |
|                PL111_CTRL_LCD_TFT | PL111_CTRL_LCD_PWR;
 | |
|   if (ModeInfo.PixelFormat == PixelBlueGreenRedReserved8BitPerColor) {
 | |
|     LcdControl |= PL111_CTRL_BGR;
 | |
|   }
 | |
| 
 | |
|   MmioWrite32 (PL111_REG_LCD_CONTROL, LcdControl);
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 | |
| 
 | |
| /** De-initializes the display.
 | |
| */
 | |
| VOID
 | |
| LcdShutdown (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   // Disable the controller
 | |
|   MmioAnd32 (PL111_REG_LCD_CONTROL, ~PL111_CTRL_LCD_EN);
 | |
| }
 |