summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Library
AgeCommit message (Collapse)AuthorFilesLines
2026-06-03ArmPlatformPkg: Remove redundant section name in inf fileQihang Gao1-2/+0
[Pcd] appears twice in PL011SerialPortLib.inf, remove the redundant one to make the file more concise. Signed-off-by: Qihang Gao <gaoqihang@loongson.cn>
2026-05-06Revert "ArmPlatformPkg,EmbeddedPkg,MdeModulePkg: Move RealTimeClockLib ..."Ard Biesheuvel1-1/+0
This reverts commit 57230fff6b39a665485be1bd43ec608d412ba6fb. RealTimeClockLib is not a generic library class that is intended to be used widely to get access to the RTC when the associated runtime services are not available in the calling context. The purpose of RealTimeClockLib is to abstract the underlying hardware access from the generic RealTimeClockRuntimeDxe driver, which backs the runtime services. This means it does not belong in a different package; it belongs in the same package as the driver. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2026-02-24ArmPlatformPkg: Replace include guards with #pragma onceMichael Kubacki5-20/+5
Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2026-02-13ArmPlatformPkg/PL011UartLib : Fix incorrect control bit validationkavipriyankp1-6/+4
REF: [e092122] (PR #12085) The current logic in ArmPlatformPkg/PL011UartLib performs control-bit checks intended to align with the UEFI specification. However, it incorrectly validates control bits that cannot be set through SetControl(), resulting in failures in the SetControl() SCT test. According to the UEFI specification, the valid control bits that can be set are: EFI_SERIAL_REQUEST_TO_SEND EFI_SERIAL_DATA_TERMINAL_READY EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE This patch updates mAllowedControlBits so that only these valid control bits are accepted during validation. Cc: Sachin Ganesh <sachinganesh@ami.com> Signed-off-by: Kavipriyan K P <kavipriyankp@ami.com>
2026-02-06ArmPlatformPkg/PL011UartLib : Fix SetControl() SCT conformanceSamer El-Haj-Mahmoud1-4/+20
REF: pftf/RPi4#87 The PL011UartLib SetControl() is failing the SCT test for SerialIoBBTestConformance (00605CBC-3965-4B61-A254-2B2B723172EA), which is trying to set bits that are not supported per UEFI spec. Add proper argument check for valid bits, and confirm that test passes. Cc: Leif Lindholm <leif.lindholm@oss.qualcomm.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>
2025-12-11ArmPlatformPkg/PL011SerialPortLib: Add hardware flow control supportXin Xie2-0/+11
This change introduces hardware flow control capabilities for the PL011 serial port Library. Signed-off-by: Xin Xie <xinpin@google.com>
2025-10-02ArmPlatformPkg: rename LcdHwLibNull and LcdPlatformLibNullLeif Lindholm4-4/+4
By edk2 convention, a NULL library should be called *LibNull. These libraries did not follow this convention, so rename them. Signed-off-by: Leif Lindholm <leif.lindholm@oss.qualcomm.com>
2025-09-26ArmPlatformPkg: Remove ARM32 Support from ArmPlatformLibNullOliver Smith-Denny2-15/+0
edk2 is dropping support for the ARM32 architecture. This commit removes ARM32 files from ArmPlatformLibNull. Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-09-08ArmPlatformPkg,EmbeddedPkg,MdeModulePkg: Move RealTimeClockLib headerINDIA\sachinganesh1-0/+1
RealTimeClockLib is an architectural implementation that is not restricted to the embedded segment or any platform in particular. So the header has been moved to MdeModulePkg. And the package has been added to the relevant INF files. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
2025-07-22ArmPlatformPkg/PL011UartLib: Prevent data loss in conversion.Pranav V V1-1/+1
Add an explicit (UINT32) cast to the assignment. Signed-off-by: Pranav V V <pranav.v.v@intel.com>
2025-07-22ArmPlatformPkg/PL011SerialPortLib: Support dynamic PCD type.Pranav V V2-5/+5
Convert UART configuration PCDs from FixedPcd to dynamic Pcd to enable runtime modification of serial port parameters. Changes made: - Replace FixedPcdGet64/FixedPcdGet8 calls with PcdGet64/PcdGet8 for: * PcdUartDefaultBaudRate * PcdUartDefaultParity * PcdUartDefaultDataBits * PcdUartDefaultStopBits - Update INF file to declare these PCDs under [Pcd]. Signed-off-by: Pranav V V <pranav.v.v@intel.com>
2025-05-30ArmPlatformPkg: PL011SerialPort Empty Rx buffer during init.Chris Fernald1-9/+21
When calling to initialize the PL011 Uart, Rx buffer is not cleared. In a 16550 uart device, during initialization, the 16550's Fifo control registers would be used to clear the Rx buffer, but no such register exists on PL011. Modify the PL011 SerialPortInitialize function to clear anything that was in the Rx buffer after initialization is completed. This will prevent any stale data from being interpreted as valid data. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2024-10-30ArmPlatformPkg: CodeQL Fixes.kuqin121-1/+1
Makes changes to comply with alerts raised by CodeQL. The issues here fall into the following category: 1. comparison-with-wider-type Signed-off-by: Eeshan Londhe <eeshanlondhe@microsoft.com>
2024-09-12MdePkg: Move AsmMacroIoLib*.h from ArmPkgOliver Smith-Denny2-2/+2
AsmMacroIoLib.h and AsmMacroIoLibV8.h are used by the CompilerIntrinsicsLib, which is moving to MdePkg. These functions provide standard definitions for ARM/AARCH64 assembly code, respectively, and so are moved to the arch directories in MdePkg to avoid MdePkg having a dependency on ArmPkg. Now that the files are in Arm/ and AArch64/ directories, the filenames are changed to AsmMacroLib.h as we can distinguish the architecture from the path. AsmMacroIoLib.inc is unused and so is removed. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-08-30ArmPlatformPkg/ArmPlatformLib: Drop unused MPCore routinesArd Biesheuvel3-68/+0
Some of the boilerplate in ArmPlatformLib is only relevant when entering UEFI on multiple cores, and this is no longer supported. So retire the associated helper routines. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-08-30ArmPlatformPkg: Retire ArmPlatformStackLibArd Biesheuvel3-230/+0
ArmPlatformStackLib is no longer used so it can be retired. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2024-08-01ArmPlatformPkg: Fix some spelling mistakes found by cspellRebecca Cran2-4/+4
When cspell is installed (via `npm install cspell`), CI checks for spelling mistakes. There are currently a very large number of them: some are genuine mistakes while others are words or acryonyms that cspell doesn't know. Fix a few of the misspellings in ArmPlatformPkg. Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
2024-07-23ArmPlatformPkg: PL031RealTimeClockLib: Set MMIO Memory XPOliver Smith-Denny1-2/+2
PL031RealTimeClockLib will clear EFI_MEMORY_XP if a platform has set it for MMIO memory when it does not include that bit in its SetMemoryAttributes call. This region is not intended to be executed from and as such the lib should explicitly set EFI_MEMORY_XP to this region. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-07-21ArmPlatformPkg: Update LcdHwNullLib to prevent initBret Barkelew1-1/+1
Library previously returned EFI_SUCCESS which causes the platform to continue initializing LCD HW. Should return EFI_NOT_FOUND. Resolves TCBZ3351. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-02-10ArmPlatformPkg: Align PL031 library function headers with return valuesSuqiang Ren1-4/+18
RealTimeClockLib is used to back the runtime services time functions, so align the description of the function return values with the defined values for these services as described in UEFI Spec 2.10. REF: UEFI spec 2.10 section 8 Services ? Runtime Services Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Signed-off-by: Suqiang Ren <suqiangx.ren@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
2023-10-24ArmPlatformPkg/PL031RealTimeClockLib: remove needless instance init stepsLaszlo Ersek1-13/+0
RealTimeClockLib instances are consumed by edk2's EmbeddedPkg/RealTimeClockRuntimeDxe driver. In its entry point function InitializeRealTimeClock(), the driver: (1) calls LibRtcInitialize(), (2) sets the GetTime(), SetTime(), GetWakeupTime() and SetWakeupTime() runtime services to its own similarly-named functions -- where those functions wrap the corresponding RealTimeClockLib APIs, (3) installs EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL with a NULL protocol interface. Steps (2) and (3) conform to PI v1.8 sections II-9.7.2.4 through II-9.7.2.7. However, this means that LibRtcInitialize() (of any RealTimeClockLib instance) should not itself (a) set the GetTime(), SetTime(), GetWakeupTime() and SetWakeupTime() runtime services, nor (b) install EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL. The runtime service pointers will be overwritten in step (2) anyway, and step (3) will uselessly install a second (NULL-interface) EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL instance in the protocol database. (The protocol only serves to notify the DXE Foundation about said runtime services being available.) Clean up ArmPlatformPkg/PL031RealTimeClockLib accordingly (it only has code that's redundant for step (3); it does not try to set "gRT" fields). (Note that the lib instance INF file already does not list gEfiRealTimeClockArchProtocolGuid.) Tested with ArmVirtQemu. Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4565 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20231020121748.44862-1-lersek@redhat.com> Acked-by: Ard Biesheuvel <ardb@kernel.org> [lersek@redhat.com: shorten patch subject line]
2023-10-18ArmPlatformPkg/PL031RealTimeClockLib: hide LibRtcVirtualNotifyEventLaszlo Ersek1-2/+3
The RealTimeClockLib class header in edk2 mistakenly declares a function called LibRtcVirtualNotifyEvent(). No component ever calls this function crossing module boundaries; all RealTimeClockLib instances in edk2 and edk2-platforms are supposed to register (and do register) their SetVirtualAddressMap() notification functions. Rename LibRtcVirtualNotifyEvent() to VirtualNotifyEvent(), and make it static, in preparation for removing the LibRtcVirtualNotifyEvent() declaration from the lib class header later. Build- and boot-tested with ArmVirtQemu. Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4564 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20231012091057.108728-3-lersek@redhat.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
2022-11-06ArmPlatformPkg: Retire NorFlashDxe driverArd Biesheuvel2-52/+0
The NorFlashDxe driver in ArmPlatformPkg was shared between development platforms built by ARM Ltd, and virtual platforms that were once modeled after Versatile Express, but have very little in common with actual bare metal implementations. Both sides have migrated to a domain specific version of the driver, so we can retire the old one. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com> Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
2022-09-05ArmPlatformPkg: Remove duplicated wordsPierre Gondois1-1/+1
In an effort to clean the documentation of the above package, remove duplicated words. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Sami Mujawar <sami.muajwar@arm.com> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
2022-05-13ArmPlatformPkg: Remove RVCT supportRebecca Cran4-182/+0
RVCT is obsolete and no longer used. Remove support for it. Signed-off-by: Rebecca Cran <quic_rcran@quicinc.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
2022-01-30ArmPkg: Replace CoreId and ClusterId with Mpidr in ARM_CORE_INFO structRebecca Cran1-4/+4
Remove the ClusterId and CoreId fields in the ARM_CORE_INFO structure in favor of a new Mpidr field. Update code in ArmPlatformPkg/PrePeiCore/MainMPCore and ArmPlatformPkg/PrePi/MainMPCore.c to use the new field and call new macros GET_MPIDR_AFF0 and GET_MPIDR_AFF1 instead. Signed-off-by: Rebecca Cran <rebecca@nuviainc.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
2021-12-07ArmPlatformPkg: Apply uncrustify changesMichael Kubacki16-634/+664
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>
2021-12-07ArmPlatformPkg: Change use of EFI_D_* to DEBUG_*Michael D Kinney1-1/+1
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3739 Update all use of EFI_D_* defines in DEBUG() macros to DEBUG_* defines. Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
2021-04-15ArmPlatformPkg: Fix Ecc error 8001Pierre Gondois6-30/+30
This patch fixes the following Ecc reported error: File header doesn't exist File header comment missing the ""Copyright"" Even though a copyright is present in the header file, the leading '*' char prevents the Ecc tool from detecting it. According to the edk2 coding specifcation, section 5.2.3 "File Heading", there should not be leading '*' char. Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2020-12-21ArmPlatformPkg/PL031RealTimeClockLib: cast EfiTimeToEpoch() val. to UINT32Laszlo Ersek1-1/+1
In preparation for changing EfiTimeToEpoch()'s return type to UINTN, cast EfiTimeToEpoch()'s retval to UINT32 explicitly, in LibSetTime(). Currently, this is a no-op, and even after widening the retval, it will make no difference, as LibSetTime() explicitly restricts Time->Year under 2106, given that "the PL031 is a 32-bit counter counting seconds". The patch is made for preventing compiler warnings. Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20201221113657.6779-2-lersek@redhat.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
2020-12-09ArmPlatformPkg: Fix Ecc error 10016 in LcdPlatformNullLibPierre Gondois1-1/+2
This patch fixes the following Ecc reported error: Module file has FILE_GUID collision with other module file The two .inf files with clashing GUID are: edk2\ArmPlatformPkg\PrePeiCore\PrePeiCoreMPCore.inf edk2\ArmPlatformPkg\Library\LcdPlatformNullLib\LcdPlatformNullLib.inf The PrePeiCoreMPCore module has been imported in 2011 and the LcdPlatformNullLib module has been created in 2017. The PrePeiCoreMPCore has the precedence. Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
2020-12-09ArmPlatformPkg: Fix Ecc error 5007 in PL031RealTimeClockLibPierre Gondois1-2/+2
This patch fixes the following Ecc reported error: There should be no initialization of a variable as part of its declaration Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
2020-12-09ArmPlatformPkg: Fix Ecc error 3002 in PL011UartLibPierre Gondois1-6/+6
This patch fixes the following Ecc reported error: Non-Boolean comparisons should use a compare operator (==, !=, >, < >=, <=) Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
2020-07-02ArmPlatformPkg/PL011UartLib: Check PID2 if FiFoDepth is zeroIrene Park2-3/+8
PL011UartLib determines its FIFO depth based on the PID2 value but the register PID2 is not mandatory as per the SBSA spec. This change won't check PID2 if PcdUartDefaultReceiveFifoDepth is set to a value > 0. Signed-off-by: Irene Park <ipark@nvidia.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
2019-09-13ArmPlatformPkg: Add missing header files in INF filePete Batard3-0/+3
The header files are used but missing in INF, which causes warning message when building them. Signed-off-by: Pete Batard <pete@akeo.ie> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2019-07-23ArmPlatformPkg: list module-internal header files in INF [Sources]Laszlo Ersek1-0/+1
The BaseTools build feature introduced for TianoCore#1804 / in commit 1fa6699e6cd4 ("BaseTools: Add a checking for Sources section in INF file", 2019-06-10) logs some (non-fatal) warnings about unlisted internal header files. List those files explicitly. Note: header files are added in lexicographical order only if the underlying INF file already keeps the [Sources] and [LibraryClasses] sections in lexicographical order. Otherwise, header files are added in rough "logical" order. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Leif Lindholm <leif.lindholm@linaro.org> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2019-07-10ArmPlatformPkg: Actually disable PL031 interruptsAlexander Graf1-2/+2
The PL031 interrupt mask register (IMSC) is not very clearly documented in the PL031 specification. However, bit 0 (RTCIMSC) indicates whether interrupts are enabled, not disabled. So before this commit, we were actually *enabling* interrupts for the RTC. This patch changes the logic to instead disable interrupts when they are not disabled already. Signed-off-by: Alexander Graf <graf@amazon.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2019-07-04ArmPlatformPkg: Fix various typosAntoine Cœur1-1/+1
Fix various typos in ArmPlatformPkg. Signed-off-by: Coeur <coeur@gmx.fr> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2019-06-17ArmPlatformPkg: use UINT32 epoch second counterLeif Lindholm1-1/+2
The comments describes the device as being 32-bit: "the maximum time span is just over 136 years" then uses a UINTN to hold the value. Change to UINT32 so we don't get different behaviour for different architectures. Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>
2019-04-09ArmPlatformPkg: Replace BSD License with BSD+Patent LicenseMichael D Kinney37-258/+37
https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-12-20ArmPlatformPkg/PL011SerialPortLib: use untyped PCD for register baseArd Biesheuvel2-8/+10
Use an untyped PCD reference for PcdSerialRegisterBase, so that the library gets built without hardcoded values, permitting modules to override the default serial port. This allows SerialDxe to use a different serial port from the one used for DEBUG output (which often gets occluded due to the console driver clearing the screen). Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-06-15ArmPlatformPkg: Include PL011UartClock LibUdit Kumar2-2/+4
This patch gets PL011 baud rate clock from pl011 uart clock lib instead of Pcd. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Udit Kumar <udit.kumar@nxp.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2018-06-13ArmPlatformPkg: PL011 Dynamic clock freq SupportUdit Kumar2-0/+59
Some platform support dynamic clocking, which is controlled by some jumper setting or hardware registers. Result of that is that PCD PL011UartClkInHz would need to be updated for frequency change. This patch implements support for dynamic frequency for PL011 uart. This patch implements default lib, which is using Pcd. Platform which needs dynamic clocking needs implement PL011UartClockLib Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Udit Kumar <udit.kumar@nxp.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2018-04-23ArmPlatformPkg: New DP500/DP550/DP650 GOP driverGirish Pathak3-0/+695
This change adds support for the ARM Mali DP500/DP500/DP650 display processors using the GOP protocol. It has been tested on FVP base models + DP550 support. This change adds platform independant LcdHwLib library. A corresponding platform specific library will be submitted to edk-platforms/Platform/ARM/VExpressPkg. This change does not modify functionality provided by PL111 or HDLCD. This LcdHwLib implementation should be suitable for those platforms that implement ARM Mali DP500/DP550/DP650 replacing PL111/HDLCD. Only graphics layer of the ARM Mali DP is configured for rendering the RGB/BGR format frame buffer to satisfy the UEFI GOP requirements Other layers e.g. video layers are not configured. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-04-23ArmPlatformPkg: PCD to swap red/blue format for HDLCDGirish Pathak2-2/+13
This change adds a new PCD PcdArmHdlcdSwapBlueRedSelect to swap values for HDLCD RED_SELECT and BLUE_SELECT registers on platforms where blue and red hardware lines are swapped. If set to TRUE in the platform dsc, HDLCD library will swap the values while setting RED_SELECT and BLUE_SELECT registers. The default value of the PCD is FALSE. NOTE: The motive for this is that a discrepancy in the Red/Blue lines exists between some VersatileExpress platforms. Rather than have divergent code, this build switch allows a simple, pragmatic solution. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-04-23ArmPlatformPkg: Add PCD to select pixel formatGirish Pathak2-37/+32
Current HDLCD and PL111 platform libraries do not support display modes with PixelBlueGreenRedReserved8BitPerColor format, i.e. because of historical confusion, they do not support the UEFI default PixelBlueGreenRedReserved8BitPerColor format In LcdPlatformLib for PL111, LcdPlatformQueryMode returns the pixel format as PixelRedGreenBlueReserved8BitPerColor which is wrong, because that does not match the display controller's pixel format which is set to BGR in PL111Lcd LcdHwLib. Also it is not possible to configure pixel format as RGB/BGR for the display modes for a platform at build time. This change adds PcdGopPixelFormat to configure pixel format as PixelRedGreenBlueReserved8BitPerColor or PixelBlueGreenRedReserved8BitPerColor or PixelBitMask. With this change, pixel format can be selected in the platform specific .dsc file for all supported display modes. Support for PixelBitMask is not implemented in PL111 or HDLCD LcdHwLib libraries, hence HDLCD and PL111 platform libraries will return error EFI_UNSUPPORTED if PcdGopPixelFormat is set to PixelBitMask. Indeed, it is not clear what selecting PixelBitMask might mean, but the option is allowed as it might suit a custom platform. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-04-23ArmPlatformPkg: Redefine LcdPlatformGetTimings functionGirish Pathak3-54/+49
The LcdPlatformGetTimings interface function takes similar sets of multiple parameters for horizontal and vertical timings which can be aggregated in a common data type. This change defines a structure SCAN_TIMINGS for this which can be used to describe both horizontal and vertical scan timings, and accordingly redefines the LcdPlatformGetTiming interface, greatly reducing the amount of data passed about. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-04-23ArmPlatformPkg: Implement LcdIdentify function for HDLCD GOPGirish Pathak2-1/+9
LcdIdentify function does not currently check presence of HDLCD controller. Implement this functionality by reading HDLCD_REG_VERSION and checking against the PRODUCT_ID field to detect presence of HDLCD controller. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-04-23ArmPlatformPkg: PL111Lcd: Combine two writes to LCDControlGirish Pathak1-5/+1
Currenty bit LcdPwr of the LCDControl register is enabled immediately after setting other bits of the LCDControl register. This two write sequence is unnecessary. This change removes this extra write by setting LcdPwr bit along with other bits of the LcdControl register. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-04-23ArmPlatformPkg: PL111Lcd: Replace magic number with macroGirish Pathak1-2/+1
Minor code change, replaces magic number with macro in LCD disable. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Girish Pathak <girish.pathak@arm.com> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>